mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 05:42:06 +08:00
首页-新统计1
This commit is contained in:
+112
-5
@@ -153,6 +153,14 @@ public class OrderController {
|
|||||||
List<OrderBodyRespVO> orderBodyMap = orderService.getOrderBody(orderId);
|
List<OrderBodyRespVO> orderBodyMap = orderService.getOrderBody(orderId);
|
||||||
return success(orderBodyMap);
|
return success(orderBodyMap);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/get-roomToString")
|
||||||
|
@Operation(summary = "生产单详情-房间和柜体id(toString)")
|
||||||
|
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
|
||||||
|
public CommonResult<String> getRoomToString(@RequestParam("orderId") Long orderId) {
|
||||||
|
String orderBodyMap = orderService.getOrderBodyToString(orderId);
|
||||||
|
return success(orderBodyMap);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/get-room-and-body")
|
@GetMapping("/get-room-and-body")
|
||||||
@Operation(summary = "获取柜体和房间信息")
|
@Operation(summary = "获取柜体和房间信息")
|
||||||
@@ -191,7 +199,29 @@ public class OrderController {
|
|||||||
List<OrderPlatesDetailReqVO> moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName);
|
List<OrderPlatesDetailReqVO> moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName);
|
||||||
return success(moduleDOList);
|
return success(moduleDOList);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/get-platesDetailsPage")
|
||||||
|
@Operation(summary = "生产单详情-板材详细信息(分页)")
|
||||||
|
@Parameters({
|
||||||
|
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
|
||||||
|
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
|
||||||
|
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
|
||||||
|
@Parameter(name = "groupId", description = "加工组编号", example = "1024"),
|
||||||
|
@Parameter(name = "groupName", description = "加工组名称", example = "弧形"),
|
||||||
|
@Parameter(name = "pageNo", description = "第几页", example = "1"),
|
||||||
|
@Parameter(name = "pageSize", description = "条数", example = "10")
|
||||||
|
|
||||||
|
})
|
||||||
|
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
|
||||||
|
public CommonResult<PageResult<OrderPlatesDetailReqVO>> platesDetails(@RequestParam("orderId") Long orderId,
|
||||||
|
@RequestParam(value = "roomId", required = false) Long roomId,
|
||||||
|
@RequestParam(value = "bodyId", required = false) Long bodyId,
|
||||||
|
@RequestParam(value = "groupId", required = false) Long groupId,
|
||||||
|
@RequestParam(value = "groupName", required = false) String groupName,
|
||||||
|
@RequestParam(value = "pageNo") Integer pageNo,
|
||||||
|
@RequestParam(value = "pageSize") Integer pageSize) {
|
||||||
|
PageResult<OrderPlatesDetailReqVO> moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName, pageNo, pageSize);
|
||||||
|
return success(moduleDOList);
|
||||||
|
}
|
||||||
@GetMapping("/get-partsDetails")
|
@GetMapping("/get-partsDetails")
|
||||||
@Operation(summary = "生产单详情-配件详细信息")
|
@Operation(summary = "生产单详情-配件详细信息")
|
||||||
@Parameters({
|
@Parameters({
|
||||||
@@ -208,7 +238,26 @@ public class OrderController {
|
|||||||
List<OrderPartsRespVO> moduleDOList = orderService.getPartsDetail(orderId, roomId, bodyId, name);
|
List<OrderPartsRespVO> moduleDOList = orderService.getPartsDetail(orderId, roomId, bodyId, name);
|
||||||
return success(moduleDOList);
|
return success(moduleDOList);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/get-partsDetailsPage")
|
||||||
|
@Operation(summary = "生产单详情-配件详细信息(分页)")
|
||||||
|
@Parameters({
|
||||||
|
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
|
||||||
|
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
|
||||||
|
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
|
||||||
|
@Parameter(name = "name", description = "配件名称", example = "1024"),
|
||||||
|
@Parameter(name = "pageNo", description = "第几页", example = "1"),
|
||||||
|
@Parameter(name = "pageSize", description = "条数", example = "10")
|
||||||
|
})
|
||||||
|
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
|
||||||
|
public CommonResult<PageResult<OrderPartsRespVO>> partsDetails(@RequestParam("orderId") Long orderId,
|
||||||
|
@RequestParam(value = "roomId", required = false) Long roomId,
|
||||||
|
@RequestParam(value = "bodyId", required = false) Long bodyId,
|
||||||
|
@RequestParam(value = "name", required = false) String name,
|
||||||
|
@RequestParam(value = "pageNo") Integer pageNo,
|
||||||
|
@RequestParam(value = "pageSize") Integer pageSize) {
|
||||||
|
PageResult<OrderPartsRespVO> moduleDOList = orderService.getPartsDetail(orderId, roomId, bodyId, name, pageNo, pageSize);
|
||||||
|
return success(moduleDOList);
|
||||||
|
}
|
||||||
// 柜体数据获取,需要加上柜体的属性
|
// 柜体数据获取,需要加上柜体的属性
|
||||||
@GetMapping("/get-body")
|
@GetMapping("/get-body")
|
||||||
@Operation(summary = "生产单柜体数据获取")
|
@Operation(summary = "生产单柜体数据获取")
|
||||||
@@ -366,6 +415,8 @@ public class OrderController {
|
|||||||
return success(orderService.getApiOrderList(orderList));
|
return success(orderService.getApiOrderList(orderList));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 统计
|
||||||
// 生产单状态分组统计返回
|
// 生产单状态分组统计返回
|
||||||
@GetMapping("/getOrderStatusCount")
|
@GetMapping("/getOrderStatusCount")
|
||||||
@Operation(summary = "生产单状态分组统计返回")
|
@Operation(summary = "生产单状态分组统计返回")
|
||||||
@@ -383,12 +434,68 @@ public class OrderController {
|
|||||||
return success(orderService.getOrderPlateAnalysisCount());
|
return success(orderService.getOrderPlateAnalysisCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生产单超期告警
|
// 生产单超期/到期告警 (工作台)
|
||||||
@GetMapping("/getOrderWarn")
|
@GetMapping("/getOrderWarn")
|
||||||
@Operation(summary = "生产单警告")
|
@Operation(summary = "生产单警告")
|
||||||
@Parameter(name = "startTerm", description = "时间段选择", required = false, example = "1,3,7")
|
|
||||||
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
public CommonResult<Map<String,List<OrderOverdueRespVO>>> getOrderOverdue(@RequestParam(value = "startTerm", required = false) Integer startTerm) {
|
public CommonResult<Map<String,List<OrderOverdueRespVO>>> getOrderOverdue() {
|
||||||
return success(orderService.getOrderWarn(startTerm));
|
return success(orderService.getOrderWarn());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产单总数
|
||||||
|
@GetMapping("/orderCount")
|
||||||
|
@Operation(summary = "生产单总数")
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getOrderCount() {
|
||||||
|
return success(orderService.orderCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 今日新增生产单总数
|
||||||
|
@GetMapping("/orderCountToday")
|
||||||
|
@Operation(summary = "今日新增生产单总数")
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getOrderCountToday() {
|
||||||
|
return success(orderService.orderCountToday());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 今日生产单完成总数
|
||||||
|
@GetMapping("/orderCountTodayFinish")
|
||||||
|
@Operation(summary = "今日生产单完成总数")
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getOrderCountTodayFinish() {
|
||||||
|
return success(orderService.orderCountTodayFinish());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产中生产单总数
|
||||||
|
@GetMapping("/orderCountProduce")
|
||||||
|
@Operation(summary = "生产中生产单总数")
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getOrderCountProduce() {
|
||||||
|
return success(orderService.orderCountProduce());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产中生产平方数
|
||||||
|
@GetMapping("/orderSquareProduce")
|
||||||
|
@Operation(summary = "生产中生产平方数")
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getOrderSquareProduce() {
|
||||||
|
return success(orderService.orderSquareProduce());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 小板数量
|
||||||
|
@GetMapping("/getPlateCount")
|
||||||
|
@Operation(summary = "小板数量")
|
||||||
|
@Parameters({
|
||||||
|
@Parameter(name = "startTime", description = "开始时间", required = false),
|
||||||
|
@Parameter(name = "endTime", description = "结束时间", required = false),
|
||||||
|
@Parameter(name = "goodsId", description = "材料id", required = true),
|
||||||
|
@Parameter(name = "organId", description = "组织id", required = false, example = "1")
|
||||||
|
})
|
||||||
|
@PreAuthorize("@ss.hasPermission('productManager:List')")
|
||||||
|
public CommonResult<Integer> getPlateCount(@RequestParam(value = "startTime", required = false) String startTime,
|
||||||
|
@RequestParam(value = "endTime", required = false) String endTime,
|
||||||
|
@RequestParam(value = "goodsId", required = false) Set<String> goodsId,
|
||||||
|
@RequestParam("orderId") Long organId) {
|
||||||
|
return success(orderService.plateCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
package com.cf.imes.module.executor.controller.admin.order.vo.order;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
@Schema(description = "分析页 - 小板数量")
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class OrderPlateCountVO {
|
||||||
|
@Schema(description = "订单id")
|
||||||
|
private Long orderId;
|
||||||
|
}
|
||||||
+1
-1
@@ -61,7 +61,7 @@ public class OrderPlatesDetailReqVO {
|
|||||||
private Boolean isSculpt;
|
private Boolean isSculpt;
|
||||||
|
|
||||||
@Schema(description = "是否排孔", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "是否排孔", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private Boolean isHole;
|
private Boolean isRowHole;
|
||||||
|
|
||||||
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
|
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
|
||||||
@ExcelProperty("备注")
|
@ExcelProperty("备注")
|
||||||
|
|||||||
+5
-1
@@ -1,5 +1,6 @@
|
|||||||
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||||
|
|
||||||
|
import com.cf.imes.framework.common.pojo.PageParam;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -15,7 +16,7 @@ import com.alibaba.excel.annotation.*;
|
|||||||
@Schema(description = "管理后台 - 生产单板件 Response VO")
|
@Schema(description = "管理后台 - 生产单板件 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@ExcelIgnoreUnannotated
|
@ExcelIgnoreUnannotated
|
||||||
public class PlateRespVO {
|
public class PlateRespVO extends PageParam {
|
||||||
|
|
||||||
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32523")
|
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32523")
|
||||||
@ExcelProperty("板件 ID")
|
@ExcelProperty("板件 ID")
|
||||||
@@ -165,6 +166,9 @@ public class PlateRespVO {
|
|||||||
@ExcelProperty("是否作废")
|
@ExcelProperty("是否作废")
|
||||||
private Boolean isCancel;
|
private Boolean isCancel;
|
||||||
|
|
||||||
|
@Schema(description = "是否排孔", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private Boolean isRowHole;
|
||||||
|
|
||||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("创建时间")
|
@ExcelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|||||||
+4
@@ -49,6 +49,10 @@ public class OrderDO extends BaseDO {
|
|||||||
* 交付日期
|
* 交付日期
|
||||||
*/
|
*/
|
||||||
private LocalDateTime deliveryDate;
|
private LocalDateTime deliveryDate;
|
||||||
|
/**
|
||||||
|
* 生产单的完成时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime finishTime;
|
||||||
/**
|
/**
|
||||||
* 生产单类型,1主单 2子单
|
* 生产单类型,1主单 2子单
|
||||||
*/
|
*/
|
||||||
|
|||||||
+60
@@ -9,12 +9,14 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
|||||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
||||||
|
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
|
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
|
||||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
|
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||||
|
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@@ -145,4 +147,62 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
|||||||
|
|
||||||
// 生产单逾期统计
|
// 生产单逾期统计
|
||||||
List<OrderOverdueRespVO> selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId);
|
List<OrderOverdueRespVO> selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId);
|
||||||
|
|
||||||
|
// 生产单数量统计
|
||||||
|
default Integer selectOrderCount(Long organId){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getOrganId, organId)
|
||||||
|
.eq(OrderDO::getDeleted, 0)));
|
||||||
|
}
|
||||||
|
@OrganIgnore
|
||||||
|
default Integer selectOrderCount(){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getDeleted, 0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 今日新增生产单总数统计
|
||||||
|
default Integer selectOrderCountToday(Long organId){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getOrganId, organId)
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.between(OrderDO::getCreateTime, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0), LocalDateTime.now().withHour(23).withMinute(59).withSecond(59))));
|
||||||
|
}
|
||||||
|
@OrganIgnore
|
||||||
|
default Integer selectOrderCountToday(){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.between(OrderDO::getCreateTime, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0), LocalDateTime.now().withHour(23).withMinute(59).withSecond(59))));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 今日新增生产单总数统计
|
||||||
|
default Integer selectOrderCountTodayFinish(Long organId){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getOrganId, organId)
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.between(OrderDO::getFinishTime, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0), LocalDateTime.now().withHour(23).withMinute(59).withSecond(59))));
|
||||||
|
}
|
||||||
|
@OrganIgnore
|
||||||
|
default Integer selectOrderCountTodayFinish(){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.between(OrderDO::getFinishTime, LocalDateTime.now().withHour(0).withMinute(0).withSecond(0), LocalDateTime.now().withHour(23).withMinute(59).withSecond(59))));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 今日新增生产单总数统计
|
||||||
|
default Integer selectOrderCountProduce(Long organId){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getOrganId, organId)
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
|
||||||
|
}
|
||||||
|
@OrganIgnore
|
||||||
|
default Integer selectOrderCountProduce(){
|
||||||
|
return Math.toIntExact(selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.eq(OrderDO::getDeleted, 0)
|
||||||
|
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生产中生产平方数
|
||||||
|
@OrganIgnore
|
||||||
|
Integer selectOrderSquareProduce(@Param("organId") Long organId);
|
||||||
}
|
}
|
||||||
|
|||||||
+11
@@ -1,5 +1,8 @@
|
|||||||
package com.cf.imes.module.executor.dal.mysql.orderItem;
|
package com.cf.imes.module.executor.dal.mysql.orderItem;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO;
|
||||||
@@ -10,6 +13,7 @@ import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrder
|
|||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
||||||
|
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
|
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
|
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
|
||||||
@@ -31,10 +35,17 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
|||||||
@Param("bodyId") Long bodyId, @Param("groupId") Long groupId,
|
@Param("bodyId") Long bodyId, @Param("groupId") Long groupId,
|
||||||
@Param("groupName") String groupName, @Param("organId") Long organId,
|
@Param("groupName") String groupName, @Param("organId") Long organId,
|
||||||
@Param("deleted") Integer deleted);
|
@Param("deleted") Integer deleted);
|
||||||
|
IPage<PlateRespVO> selectPlatesDetailByOrderId(@Param("page") IPage page, @Param("orderId") Long orderId, @Param("roomId") Long roomId,
|
||||||
|
@Param("bodyId") Long bodyId, @Param("groupId") Long groupId,
|
||||||
|
@Param("groupName") String groupName, @Param("organId") Long organId,
|
||||||
|
@Param("deleted") Integer deleted);
|
||||||
|
|
||||||
List<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("orderId") Long orderId, @Param("roomId") Long roomId,
|
List<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("orderId") Long orderId, @Param("roomId") Long roomId,
|
||||||
@Param("bodyId") Long bodyId, @Param("name") String name,
|
@Param("bodyId") Long bodyId, @Param("name") String name,
|
||||||
@Param("organId") Long organId, @Param("deleted") Integer deleted);
|
@Param("organId") Long organId, @Param("deleted") Integer deleted);
|
||||||
|
IPage<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("page") IPage page,@Param("orderId") Long orderId, @Param("roomId") Long roomId,
|
||||||
|
@Param("bodyId") Long bodyId, @Param("name") String name,
|
||||||
|
@Param("organId") Long organId, @Param("deleted") Integer deleted);
|
||||||
|
|
||||||
|
|
||||||
List<OrderPlatesDetailRespVO> selectPartsByOrderId(@Param("orderId") Long orderId,
|
List<OrderPlatesDetailRespVO> selectPartsByOrderId(@Param("orderId") Long orderId,
|
||||||
|
|||||||
+40
-1
@@ -96,6 +96,7 @@ public interface OrderService {
|
|||||||
* 需要修改返回值
|
* 需要修改返回值
|
||||||
*/
|
*/
|
||||||
List<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId , Long bodyId , Long groupId, String groupName);
|
List<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId , Long bodyId , Long groupId, String groupName);
|
||||||
|
PageResult<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId, Long bodyId, Long groupId, String groupName, Integer pageNo, Integer pageSize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param orderId: 生产单id
|
* @param orderId: 生产单id
|
||||||
@@ -105,6 +106,7 @@ public interface OrderService {
|
|||||||
* 需要修改返回值
|
* 需要修改返回值
|
||||||
*/
|
*/
|
||||||
List<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId , Long bodyId , String name);
|
List<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId , Long bodyId , String name);
|
||||||
|
PageResult<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId , Long bodyId , String name, Integer pageNo, Integer pageSize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除柜体
|
* 删除柜体
|
||||||
@@ -185,5 +187,42 @@ public interface OrderService {
|
|||||||
/**
|
/**
|
||||||
* 生产单超期告警分析统计
|
* 生产单超期告警分析统计
|
||||||
*/
|
*/
|
||||||
Map<String,List<OrderOverdueRespVO>> getOrderWarn(Integer startTerm);
|
Map<String,List<OrderOverdueRespVO>> getOrderWarn();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 今日要完成生产单数
|
||||||
|
*/
|
||||||
|
List<OrderRespVO> getOrderOverdue();
|
||||||
|
|
||||||
|
String getOrderBodyToString(Long orderId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生产单总数统计
|
||||||
|
*/
|
||||||
|
Integer orderCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 今日新增生产单总数统计
|
||||||
|
*/
|
||||||
|
Integer orderCountToday();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 今日生产单完成总数
|
||||||
|
*/
|
||||||
|
Integer orderCountTodayFinish();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 今日生产单完成总数
|
||||||
|
*/
|
||||||
|
Integer orderCountProduce();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 今日生产单完成总数
|
||||||
|
*/
|
||||||
|
Integer orderSquareProduce();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小板数量
|
||||||
|
*/
|
||||||
|
Integer plateCount();
|
||||||
}
|
}
|
||||||
+113
-19
@@ -1,19 +1,25 @@
|
|||||||
package com.cf.imes.module.executor.service.order;
|
package com.cf.imes.module.executor.service.order;
|
||||||
|
|
||||||
import cn.smallbun.screw.core.util.CollectionUtils;
|
import cn.smallbun.screw.core.util.CollectionUtils;
|
||||||
|
import co.elastic.clients.elasticsearch.nodes.Ingest;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import com.cf.imes.framework.common.util.json.JsonUtils;
|
||||||
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||||
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||||
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
|
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
|
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
|
||||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
|
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
|
||||||
|
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsIdVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsIdVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
|
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
|
||||||
@@ -279,6 +285,78 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
orderBodyMapper.selectList(orderId, deleted, SecurityFrameworkUtils.getLoginUser().getOrganId()), OrderBodyRespVO.class);
|
orderBodyMapper.selectList(orderId, deleted, SecurityFrameworkUtils.getLoginUser().getOrganId()), OrderBodyRespVO.class);
|
||||||
return orderBodyRespVOList;
|
return orderBodyRespVOList;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public String getOrderBodyToString(Long orderId) {
|
||||||
|
// 判断生产单是否删除
|
||||||
|
Integer deleted = getOrderDeleted(orderId);
|
||||||
|
|
||||||
|
List<OrderBodyRespVO> orderBodyRespVOList = BeanUtils.toBean(
|
||||||
|
orderBodyMapper.selectList(orderId, deleted, SecurityFrameworkUtils.getLoginUser().getOrganId()), OrderBodyRespVO.class);
|
||||||
|
String orderBodyToString = JSON.toJSONString(orderBodyRespVOList);
|
||||||
|
|
||||||
|
return JsonUtils.zipString(orderBodyToString);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer orderCount() {
|
||||||
|
// 角色判断
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
System.out.println("loginUser " + loginUser);
|
||||||
|
// 数据查询
|
||||||
|
if (loginUser.getIsSupAdmin()){
|
||||||
|
return orderMapper.selectOrderCount();
|
||||||
|
}
|
||||||
|
return orderMapper.selectOrderCount(getUserOrganId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer orderCountToday() {
|
||||||
|
// 角色判断
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
// 数据查询
|
||||||
|
if (loginUser.getIsSupAdmin()){
|
||||||
|
return orderMapper.selectOrderCountToday();
|
||||||
|
}
|
||||||
|
return orderMapper.selectOrderCountToday(getUserOrganId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer orderCountTodayFinish() {
|
||||||
|
// 角色判断
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
// 数据查询
|
||||||
|
if (loginUser.getIsSupAdmin()){
|
||||||
|
return orderMapper.selectOrderCountTodayFinish();
|
||||||
|
}
|
||||||
|
return orderMapper.selectOrderCountTodayFinish(getUserOrganId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer orderCountProduce() {
|
||||||
|
// 角色判断
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
// 数据查询
|
||||||
|
if (loginUser.getIsSupAdmin()){
|
||||||
|
return orderMapper.selectOrderCountProduce();
|
||||||
|
}
|
||||||
|
return orderMapper.selectOrderCountProduce(getUserOrganId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer orderSquareProduce() {
|
||||||
|
// 角色判断
|
||||||
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
// 数据查询
|
||||||
|
if (loginUser.getIsSupAdmin()){
|
||||||
|
return orderMapper.selectOrderSquareProduce(null);
|
||||||
|
}
|
||||||
|
return orderMapper.selectOrderSquareProduce(getUserOrganId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer plateCount() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrderRoomBodyRespVO> getRoomAndBody(Long planId) {
|
public List<OrderRoomBodyRespVO> getRoomAndBody(Long planId) {
|
||||||
@@ -317,14 +395,26 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
List<OrderPlatesDetailReqVO> platesDetailReqVOS = new ArrayList<>();
|
List<OrderPlatesDetailReqVO> platesDetailReqVOS = new ArrayList<>();
|
||||||
orderDetail.forEach(orderPlatesDetailRespVO -> {
|
orderDetail.forEach(orderPlatesDetailRespVO -> {
|
||||||
OrderPlatesDetailReqVO orderPlatesDetailReqVO = BeanUtils.toBean(orderPlatesDetailRespVO, OrderPlatesDetailReqVO.class)
|
OrderPlatesDetailReqVO orderPlatesDetailReqVO = BeanUtils.toBean(orderPlatesDetailRespVO, OrderPlatesDetailReqVO.class)
|
||||||
.setIsHole(false);
|
.setIsRowHole(false);
|
||||||
if (orderPlatesDetailRespVO.getUnregularPointCount() > 0 || orderPlatesDetailRespVO.getFrontHoleCount() > 0
|
if (orderPlatesDetailRespVO.getUnregularPointCount() > 0 || orderPlatesDetailRespVO.getFrontHoleCount() > 0
|
||||||
|| orderPlatesDetailRespVO.getBackHoleCount() > 0 || orderPlatesDetailRespVO.getSideHoleCount() > 0)
|
|| orderPlatesDetailRespVO.getBackHoleCount() > 0 || orderPlatesDetailRespVO.getSideHoleCount() > 0)
|
||||||
orderPlatesDetailReqVO.setIsHole(true);
|
orderPlatesDetailReqVO.setIsRowHole(true);
|
||||||
platesDetailReqVOS.add(orderPlatesDetailReqVO);
|
platesDetailReqVOS.add(orderPlatesDetailReqVO);
|
||||||
});
|
});
|
||||||
return platesDetailReqVOS;
|
return platesDetailReqVOS;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public PageResult<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId, Long bodyId, Long groupId, String groupName, Integer pageNo, Integer pageSize) {
|
||||||
|
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageNo, pageSize);
|
||||||
|
// 判断生产单是否删除 (包含判断存在)
|
||||||
|
Integer deleted = getOrderDeleted(orderId);
|
||||||
|
IPage<PlateRespVO> plateRespVOPage = orderItemMapper.selectPlatesDetailByOrderId(page,orderId, roomId, bodyId, groupId,
|
||||||
|
groupName, SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted);
|
||||||
|
List<PlateRespVO> orderDetail = plateRespVOPage.getRecords();
|
||||||
|
List<OrderPlatesDetailReqVO> platesDetailReqVOS = BeanUtils.toBean(orderDetail, OrderPlatesDetailReqVO.class);
|
||||||
|
PageResult<OrderPlatesDetailReqVO> pageResult = new PageResult(platesDetailReqVOS, plateRespVOPage.getTotal());
|
||||||
|
return pageResult;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId, Long bodyId, String name) {
|
public List<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId, Long bodyId, String name) {
|
||||||
@@ -334,6 +424,16 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted);
|
SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted);
|
||||||
return orderDetail;
|
return orderDetail;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public PageResult<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId, Long bodyId, String name, Integer pageNo, Integer pageSize) {
|
||||||
|
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageNo, pageSize);
|
||||||
|
// 判断生产单是否删除 (包含判断存在)
|
||||||
|
Integer deleted = getOrderDeleted(orderId);
|
||||||
|
IPage<OrderPartsRespVO> orderDetail = orderItemMapper.selectPartsDetailByOrderId(page, orderId, roomId, bodyId, name,
|
||||||
|
SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted);
|
||||||
|
PageResult<OrderPartsRespVO> pageResult = new PageResult(orderDetail.getRecords(), orderDetail.getTotal());
|
||||||
|
return pageResult;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -607,34 +707,28 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,List<OrderOverdueRespVO>> getOrderWarn(Integer startTerm) {
|
public Map<String,List<OrderOverdueRespVO>> getOrderWarn() {
|
||||||
Map<String,List<OrderOverdueRespVO>> map = new HashMap<>();
|
Map<String,List<OrderOverdueRespVO>> map = new HashMap<>();
|
||||||
|
|
||||||
LocalDateTime today = LocalDateTime.now();
|
LocalDateTime yesterdayDay = LocalDateTime.now().minus(1, ChronoUnit.DAYS).withHour(23).withMinute(59).withSecond(59);
|
||||||
// 根据开始条件选择
|
|
||||||
LocalDateTime orderDate = null;
|
|
||||||
|
|
||||||
switch (startTerm) {
|
LocalDateTime today = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0);
|
||||||
case 3:
|
LocalDateTime tomorrowDay = LocalDateTime.now().plus(1, ChronoUnit.DAYS).withHour(23).withMinute(59).withSecond(59);
|
||||||
orderDate = LocalDateTime.now().minus(3, ChronoUnit.DAYS);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
orderDate = LocalDateTime.now().minus(7, ChronoUnit.DAYS);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
orderDate = LocalDateTime.now().minus(1, ChronoUnit.DAYS);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
// 查询预警单
|
// 查询预警单
|
||||||
List<OrderOverdueRespVO> orderNearVOS = orderMapper.selectOrderNear(today, orderDate, OrganContextHolder.getOrganId());
|
List<OrderOverdueRespVO> orderNearVOS = orderMapper.selectOrderNear(today, tomorrowDay, OrganContextHolder.getOrganId());
|
||||||
map.put("orderNearVOS",orderNearVOS);
|
map.put("orderNearVOS",orderNearVOS);
|
||||||
// 查询超时单
|
// 查询超时单
|
||||||
List<OrderOverdueRespVO> orderOverdueVOS = orderMapper.selectOrderOverdue(today, OrganContextHolder.getOrganId());
|
List<OrderOverdueRespVO> orderOverdueVOS = orderMapper.selectOrderOverdue(yesterdayDay, OrganContextHolder.getOrganId());
|
||||||
map.put("orderOverdueVOS",orderOverdueVOS);
|
map.put("orderOverdueVOS",orderOverdueVOS);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderRespVO> getOrderOverdue() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// 判断是否已经导入
|
// 判断是否已经导入
|
||||||
private Boolean validateOrderNoExists(String orderNo, Long organId) {
|
private Boolean validateOrderNoExists(String orderNo, Long organId) {
|
||||||
if (orderMapper.selectCount(new LambdaQueryWrapper<OrderDO>()
|
if (orderMapper.selectCount(new LambdaQueryWrapper<OrderDO>()
|
||||||
|
|||||||
+12
@@ -122,6 +122,7 @@
|
|||||||
from orders o
|
from orders o
|
||||||
where o.organ_id = #{organId}
|
where o.organ_id = #{organId}
|
||||||
and o.deleted = 0
|
and o.deleted = 0
|
||||||
|
and o.status != 4
|
||||||
and o.delivery_date between #{orderDate} and #{today}
|
and o.delivery_date between #{orderDate} and #{today}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -155,6 +156,17 @@
|
|||||||
from orders o
|
from orders o
|
||||||
where o.organ_id = #{organId}
|
where o.organ_id = #{organId}
|
||||||
and o.deleted = 0
|
and o.deleted = 0
|
||||||
|
and o.status != 4
|
||||||
and #{today} > DATE(o.delivery_date)
|
and #{today} > DATE(o.delivery_date)
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectOrderSquareProduce" resultType="java.lang.Integer">
|
||||||
|
SELECT SUM(op.area) as area FROM orders o
|
||||||
|
LEFT JOIN order_plate op on op.order_id = o.id
|
||||||
|
WHERE o.deleted = 0
|
||||||
|
<if test="organId != null">
|
||||||
|
AND o.organ_id = #{organId}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
<select id="selectPlatesDetailByOrderId" resultType="com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO">
|
<select id="selectPlatesDetailByOrderId" resultType="com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO">
|
||||||
SELECT DISTINCT i.order_id, p.id, p.plate_no, g.material, p.name, p.area, p.seal_left, p.seal_down,
|
SELECT DISTINCT i.order_id, p.id, p.plate_no, g.material, p.name, p.area, p.seal_left, p.seal_down,
|
||||||
p.seal_right, p.seal_up, p.texture, p.is_special_shaped, p.is_sculpt, p.unregular_point_count, p.front_hole_count,
|
p.seal_right, p.seal_up, p.texture, p.is_special_shaped, p.is_sculpt, p.unregular_point_count, p.front_hole_count,
|
||||||
p.back_hole_count, p.side_hole_count,p.width,p.height,p.thickness,p.remark,g.color
|
p.back_hole_count, p.side_hole_count,p.width,p.height,p.thickness,p.remark,g.color,p.is_row_hole
|
||||||
FROM order_item i
|
FROM order_item i
|
||||||
RIGHT JOIN `order_plate` p ON i.plate_id = p.id
|
RIGHT JOIN `order_plate` p ON i.plate_id = p.id
|
||||||
LEFT JOIN `order_goods` g ON g.id = p.goods_id
|
LEFT JOIN `order_goods` g ON g.id = p.goods_id
|
||||||
|
|||||||
Reference in New Issue
Block a user