mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1、订单/排单未排小板查询接口重构;2、未排/已排板件和造型查询优化;
This commit is contained in:
+1
-1
@@ -35,7 +35,7 @@ public class PackController {
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "打包分页查询")
|
||||
@PreAuthorize("@ss.hasPermission('manage:pack:query')")
|
||||
public CommonResult<PageResult<PackRespVO>> getPlatePage(@Valid PackPageReqVO pageReqVO) {
|
||||
public CommonResult<PageResult<PackRespVO>> getPackPlatePage(@Valid PackPageReqVO pageReqVO) {
|
||||
|
||||
return CommonResult.success(packService.getPackPage(pageReqVO));
|
||||
|
||||
|
||||
-3
@@ -219,7 +219,4 @@ public class PlateDetailRespVO {
|
||||
// 加工组ID和名称
|
||||
@Schema(description = "加工组名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<ProcessGroupList> processGroupLists;
|
||||
|
||||
@Schema(description = "造型数据")
|
||||
private String modelData;
|
||||
}
|
||||
|
||||
+4
-6
@@ -8,7 +8,7 @@ import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
||||
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCadViewPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
|
||||
@@ -78,13 +78,11 @@ public class PlateController {
|
||||
|
||||
|
||||
|
||||
@GetMapping("/getPlatePage")
|
||||
@PostMapping("/orders/noplan")
|
||||
@Operation(summary = "获取未排单的订单板件")
|
||||
@PreAuthorize("@ss.hasAnyPermissions('manage:un-order-plan:insert-plate','manage:order-plan:insert-plate')")
|
||||
public CommonResult<PageResult<PlateResList>> getPlatePage(@Valid NoPlanPlatePageReqVO reqVO) {
|
||||
|
||||
return success(plateService.getOrderPlatePage(reqVO));
|
||||
|
||||
public CommonResult<List<PlateDetailRespVO>> getOrdersNoPlanPlate(@Valid @RequestBody NoPlanPlatePageReqVO reqVO) {
|
||||
return success(plateService.getOrdersNoPlanPlate(reqVO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
-5
@@ -4,12 +4,11 @@ package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
import com.cf.imes.framework.common.validation.NumberValid;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import jakarta.validation.constraints.Pattern;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,9 +20,8 @@ public class NoPlanPlatePageReqVO extends PageParam {
|
||||
|
||||
|
||||
@Schema(description = "订单id")
|
||||
@Pattern(regexp = "^[0-9]*$",message = "订单号必须为数字")
|
||||
@Length(max = 19,message = "订单号长度不能超过19位")
|
||||
private String orderId;
|
||||
@Size(min = 1, max = 100, message = "订单id列表不能为空且数量不能超过100个")
|
||||
private List<Long> orderIds;
|
||||
|
||||
|
||||
@Schema(description = "排单ID")
|
||||
@@ -57,18 +55,25 @@ public class NoPlanPlatePageReqVO extends PageParam {
|
||||
@Schema(description = "材质-在排单界面添加板材时为必传的")
|
||||
private String material;
|
||||
|
||||
private List<String> materialList;
|
||||
|
||||
|
||||
@Schema(description = "颜色-在排单界面添加板材时为必传的")
|
||||
private String color;
|
||||
|
||||
private List<String> colorList;
|
||||
|
||||
|
||||
@Schema(description = "厚度-在排单界面添加板材时为必传的")
|
||||
private Integer thickness;
|
||||
|
||||
private List<BigDecimal> thicknessList;
|
||||
|
||||
@Schema(description = "品牌-在排单界面添加板材时为必传的")
|
||||
private String brand;
|
||||
|
||||
private List<String> brandList;
|
||||
|
||||
|
||||
@Schema(description = "板名称")
|
||||
private String plateName;
|
||||
@@ -107,6 +112,8 @@ public class NoPlanPlatePageReqVO extends PageParam {
|
||||
@Schema(description = "纹路")
|
||||
private Integer texture;
|
||||
|
||||
private List<Boolean> textureList;
|
||||
|
||||
|
||||
@Schema(description = "异形")
|
||||
private Boolean isSpecialShaped;
|
||||
|
||||
+287
@@ -0,0 +1,287 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.plate;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 板件明细
|
||||
*
|
||||
* @author Gqr
|
||||
* @since 2026/5/12 10:21
|
||||
*/
|
||||
@Data
|
||||
public class PlateDetailDO {
|
||||
|
||||
/**
|
||||
* 板件ID
|
||||
*/
|
||||
private Long plateId;
|
||||
|
||||
/**
|
||||
* 房间ID
|
||||
*/
|
||||
private Long roomId;
|
||||
|
||||
/**
|
||||
* 房间名称
|
||||
*/
|
||||
private String roomName;
|
||||
|
||||
/**
|
||||
* 柜体ID
|
||||
*/
|
||||
private Long bodyId;
|
||||
|
||||
/**
|
||||
* 柜体名称
|
||||
*/
|
||||
private String bodyName;
|
||||
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 商品ID-大板分类ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 大板实际ID
|
||||
*/
|
||||
private String goodsId;
|
||||
|
||||
/**
|
||||
* 商品名称
|
||||
*/
|
||||
private String goodsName;
|
||||
|
||||
/**
|
||||
* 板编号
|
||||
*/
|
||||
private String plateNo;
|
||||
|
||||
/**
|
||||
* 自定义板编号
|
||||
*/
|
||||
private String customPlateNo;
|
||||
|
||||
/**
|
||||
* 板名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 板颜色
|
||||
*/
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* 品牌
|
||||
*/
|
||||
private String brand;
|
||||
|
||||
/**
|
||||
* 板材质
|
||||
*/
|
||||
private String material;
|
||||
|
||||
/**
|
||||
* 板长
|
||||
*/
|
||||
private Double height;
|
||||
|
||||
/**
|
||||
* 板宽
|
||||
*/
|
||||
private Double width;
|
||||
|
||||
/**
|
||||
* 板厚
|
||||
*/
|
||||
private Double thickness;
|
||||
|
||||
/**
|
||||
* 拆单宽度
|
||||
*/
|
||||
private BigDecimal splitWidth;
|
||||
|
||||
/**
|
||||
* 拆单高度
|
||||
*/
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
/**
|
||||
* 拆单厚度
|
||||
*/
|
||||
private BigDecimal splitThickness;
|
||||
|
||||
/**
|
||||
* 是否异性-是否弧形地脚,不处理异形
|
||||
*/
|
||||
private Boolean isSpecialShaped;
|
||||
|
||||
/**
|
||||
* 左封边厚度
|
||||
*/
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
/**
|
||||
* 右封边厚度
|
||||
*/
|
||||
private BigDecimal sealRight;
|
||||
|
||||
/**
|
||||
* 上封边厚度
|
||||
*/
|
||||
private BigDecimal sealUp;
|
||||
|
||||
/**
|
||||
* 下封边厚度
|
||||
*/
|
||||
private BigDecimal sealDown;
|
||||
|
||||
/**
|
||||
* 面积
|
||||
*/
|
||||
private BigDecimal area;
|
||||
|
||||
/**
|
||||
* 纹路类型,0 正纹 1 可翻转 2 反纹
|
||||
*/
|
||||
private Integer texture;
|
||||
|
||||
/**
|
||||
* 孔面类型,0 正面 1 反面 2 侧面
|
||||
*/
|
||||
private Integer holeFace;
|
||||
|
||||
/**
|
||||
* 排孔类型,0 正纹 1 反面 2 随意面
|
||||
*/
|
||||
private Integer holeArrange;
|
||||
|
||||
/**
|
||||
* 异型孔数量
|
||||
*/
|
||||
private Integer unregularPointCount;
|
||||
|
||||
/**
|
||||
* 正面孔数量
|
||||
*/
|
||||
private Integer frontHoleCount;
|
||||
|
||||
/**
|
||||
* 背面孔数量
|
||||
*/
|
||||
private Integer backHoleCount;
|
||||
|
||||
/**
|
||||
* 侧面孔数量
|
||||
*/
|
||||
private Integer sideHoleCount;
|
||||
|
||||
/**
|
||||
* 正面造型量
|
||||
*/
|
||||
private Integer frontModelCount;
|
||||
|
||||
/**
|
||||
* 背面造型量
|
||||
*/
|
||||
private Integer backModelCount;
|
||||
|
||||
/**
|
||||
* 是否门板
|
||||
*/
|
||||
private Boolean isDoor;
|
||||
|
||||
/**
|
||||
* 是否孤形对角
|
||||
*/
|
||||
private Boolean isArcAcross;
|
||||
|
||||
/**
|
||||
* 模块类型 ID
|
||||
*/
|
||||
private Long moduleTypeId;
|
||||
|
||||
/**
|
||||
* 排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠
|
||||
*/
|
||||
private String filterType;
|
||||
|
||||
/**
|
||||
* 异型偏移 x
|
||||
*/
|
||||
private Double offsetX;
|
||||
|
||||
/**
|
||||
* 异型偏移 y
|
||||
*/
|
||||
private Double offsetY;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 是否作废
|
||||
*/
|
||||
private Boolean isCancel;
|
||||
|
||||
/**
|
||||
* 板类型,0 层板 1 立板 2 背板
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 加工组名称
|
||||
*/
|
||||
private String processGroupName;
|
||||
|
||||
/**
|
||||
* 开门类型,0 无 1 左 2 右 3 上 4 下
|
||||
*/
|
||||
private Integer openDoorType;
|
||||
|
||||
/**
|
||||
* 是否有孔
|
||||
*/
|
||||
private Boolean hasHole;
|
||||
|
||||
/**
|
||||
* 是否造型
|
||||
*/
|
||||
private Boolean isSculpt;
|
||||
|
||||
/**
|
||||
* 是否侧面造型
|
||||
*/
|
||||
private Boolean isSideSculpt;
|
||||
|
||||
/**
|
||||
* 是否二维刀路
|
||||
*/
|
||||
private Boolean is2v;
|
||||
|
||||
/**
|
||||
* 是否侧面二维刀路
|
||||
*/
|
||||
private Boolean isSide2v;
|
||||
|
||||
/**
|
||||
* 加工组名称
|
||||
*/
|
||||
private List<ProcessGroupList> processGroupLists;
|
||||
|
||||
/**
|
||||
* 造型数据
|
||||
*/
|
||||
private String modelData;
|
||||
}
|
||||
+9
-1
@@ -8,6 +8,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPla
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -37,7 +38,14 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
||||
@Param("orderGoodsIds") List<Long> orderGoodsIds,
|
||||
@Param("orderIds") Long... orderIds);
|
||||
|
||||
List<PlateDetailRespVO> selectPlanPlateDetailList(@Param("planId") Long planId, @Param("organId") Long organId);
|
||||
/**
|
||||
* 查询排单小板
|
||||
*
|
||||
* @param planId
|
||||
* @param organId
|
||||
* @return
|
||||
*/
|
||||
List<PlateDetailDO> selectPlanPlateDetailList(@Param("planId") Long planId, @Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
|
||||
|
||||
|
||||
List<PlateInfoVO> selectOrderPlanPlateList(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
|
||||
|
||||
+19
-4
@@ -7,18 +7,18 @@ import com.cf.imes.framework.common.enums.OrderPlateTypeEnum;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.PackRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.PlateDetailsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.manage.process.vo.PlateDetails;
|
||||
import com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.PackageDetailsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPlateData;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.NoPlanPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsIdVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
@@ -193,9 +193,24 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
|
||||
|
||||
|
||||
List<PlateDetailRespVO> selectPlateListByGoodsIds(@Param("orderId") Long orderId, @Param("organId") Long organId);
|
||||
List<PlateDetailDO> selectPlateListByGoodsIds(@Param("orderId") Long orderId, @Param("organId") Long organId);
|
||||
|
||||
List<PlateDetailRespVO> selectNoPlanPlate(@Param("orderIds") List<Long> orderIds, @Param("ids") List<Long> ids, @Param("organId") Long organId);
|
||||
/**
|
||||
* 查询未排单板件
|
||||
*
|
||||
* @param orderIds
|
||||
* @param ids
|
||||
* @param organId
|
||||
* @return
|
||||
*/
|
||||
List<PlateDetailDO> selectNoPlanPlate(@Param("orderIds") List<Long> orderIds, @Param("ids") List<Long> ids, @Param("organId") Long organId);
|
||||
|
||||
/**
|
||||
* 查询未排单板件(带添加小板筛选)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<PlateDetailDO> selectNoPlanPlateWithFilter(@Param("reqVO") NoPlanPlatePageReqVO reqVO, @Param("organId") Long organId);
|
||||
|
||||
|
||||
// 批量删除
|
||||
|
||||
+70
-34
@@ -1,5 +1,6 @@
|
||||
package com.cf.imes.module.executor.service.optimizeplan;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
@@ -53,6 +54,7 @@ import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateModel;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
|
||||
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
|
||||
@@ -283,7 +285,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
OrderSource orderSource;
|
||||
if (ObjectUtil.isNotNull(orderId)) {
|
||||
orderSource = getOrderSourceByOrderId(orderId);
|
||||
// orderSource.setMachineDTO(machineApi.getMachineDetail(machineId).getCheckedData());
|
||||
return orderSource;
|
||||
}
|
||||
if (ObjectUtil.isNotNull(planId)) {
|
||||
@@ -305,13 +306,13 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(goodsDOS, ORDER_PLATE_EMPTY);
|
||||
|
||||
List<PlateDetailRespVO> plateDOS = plateMapper.selectPlateListByGoodsIds(orderId,getUserOrganId());
|
||||
List<PlateDetailDO> plateDOS = plateMapper.selectPlateListByGoodsIds(orderId, getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(plateDOS, ORDER_PLATE_EMPTY);
|
||||
|
||||
List<OrderModelDO> models =
|
||||
plateDOS.stream()
|
||||
.map(PlateDetailRespVO::getModelData)
|
||||
.map(PlateDetailDO::getModelData)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
|
||||
.toList();
|
||||
@@ -322,10 +323,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(Collections.singletonList(orderId), getUserOrganId());
|
||||
|
||||
|
||||
// 查询订单对应的配件的ES信息
|
||||
List<OrderPartsRemark> orderPartsRemarks = esUtils.getEsDocument(FIELD_ORDER_ID, orderId, printOrderPartsRespVOS.size(), ORDER_PARTS_REMARK_MODEL.getIndex(), OrderPartsRemark.class);
|
||||
|
||||
|
||||
// 查询订单对应的包裹信息
|
||||
List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectOrderPackList(orderId,getUserOrganId());
|
||||
|
||||
@@ -342,10 +339,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
return OrderSource.builder()
|
||||
.orderList(Collections.singletonList(orderDO))
|
||||
.goodsList(goodsDOS)
|
||||
.plateList(plateDOS)
|
||||
.plateList(BeanUtil.copyToList(plateDOS, PlateDetailRespVO.class))
|
||||
.plateModels(models)
|
||||
.orderPartsRespVOS(printOrderPartsRespVOS)
|
||||
.orderPartsRemarks(orderPartsRemarks)
|
||||
.orderPartsRemarks(null)
|
||||
.orderPackReqVOS(printOrderPackReqVOS)
|
||||
.build();
|
||||
|
||||
@@ -372,31 +369,19 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
List<Long> ids = goodsDOS.stream().map(GoodsReqVO::getId).toList();
|
||||
|
||||
// 查询排单对应的小板信息
|
||||
List<PlateDetailRespVO> plateDetailRespVOS = planItemMapper.selectPlanPlateDetailList(planId,getUserOrganId());
|
||||
List<PlateDetailDO> plateDetailRespVOS = planItemMapper.selectPlanPlateDetailList(planId, orderIds, getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(plateDetailRespVOS, ORDER_PLAN_PLATE_ERROR);
|
||||
|
||||
for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) {
|
||||
StringBuilder name = new StringBuilder();
|
||||
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
|
||||
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
|
||||
// 去除最后的逗号
|
||||
name.append(groupNameList.getGroupName()).append(",");
|
||||
|
||||
}
|
||||
name = new StringBuilder(name.substring(0, name.length() - 1));
|
||||
}
|
||||
plateDetailsRespVO.setProcessGroupName(name.toString());
|
||||
|
||||
}
|
||||
List<PlateDetailDO> resultPlateList = mergeGroupName(plateDetailRespVOS);
|
||||
|
||||
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
|
||||
|
||||
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
|
||||
|
||||
List<OrderModelDO> models =
|
||||
plateDetailRespVOS.stream()
|
||||
.map(PlateDetailRespVO::getModelData)
|
||||
resultPlateList.stream()
|
||||
.map(PlateDetailDO::getModelData)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
|
||||
.toList();
|
||||
@@ -422,9 +407,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
// 查询订单对应的配件信息
|
||||
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
|
||||
|
||||
// 查询订单对应的配件的ES信息
|
||||
List<OrderPartsRemark> orderPartsRemarks = esUtils.getEsDocument(FIELD_ORDER_ID, orderIds, printOrderPartsRespVOS.size(), ORDER_PARTS_REMARK_MODEL.getIndex(), OrderPartsRemark.class);
|
||||
|
||||
// 查询订单对应的包裹信息
|
||||
List<PrintOrderPackReqVO> printOrderPackReqVOS = plateMapper.selectPlanPackList(ids,getUserOrganId());
|
||||
|
||||
@@ -446,12 +428,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
.orderList(orderDOS)
|
||||
.plan(planDO)
|
||||
.goodsList(goodsDOS)
|
||||
.plateList(plateDetailRespVOS)
|
||||
.plateList(BeanUtil.copyToList(resultPlateList, PlateDetailRespVO.class))
|
||||
.plateModels(models)
|
||||
.planActualGoodsModelDO(planActualGoodsModelDO)
|
||||
.optimizeRemainPlates(optimizeRemainPlates)
|
||||
.orderPartsRespVOS(printOrderPartsRespVOS)
|
||||
.orderPartsRemarks(orderPartsRemarks)
|
||||
.orderPartsRemarks(null)
|
||||
.orderPackReqVOS(printOrderPackReqVOS)
|
||||
.build();
|
||||
}
|
||||
@@ -788,13 +770,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
throw new ServiceException(ORDER_PLAN_CREATE_PLATE_NUM_REACH_THRESHOLD_ERROR, planCreatePlateThreshold);
|
||||
}
|
||||
|
||||
List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds, orderGoodsIds, getUserOrganId());
|
||||
// 查询未排单小板
|
||||
List<PlateDetailDO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds, orderGoodsIds, getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(plateDetailRespVOS, ORDER_PLATE_EMPTY);
|
||||
|
||||
List<PlateDetailDO> resultPlateList = mergeGroupName(plateDetailRespVOS);
|
||||
|
||||
List<OrderModelDO> models =
|
||||
plateDetailRespVOS.stream()
|
||||
.map(PlateDetailRespVO::getModelData)
|
||||
resultPlateList.stream()
|
||||
.map(PlateDetailDO::getModelData)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(json -> JsonUtils.parseObject(json, OrderModelDO.class))
|
||||
.toList();
|
||||
@@ -804,12 +789,63 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
return OrderSource.builder()
|
||||
.orderList(buildTree(orderDOS))
|
||||
.goodsList(goodsReqVOS)
|
||||
.plateList(plateDetailRespVOS)
|
||||
.plateList(BeanUtil.copyToList(resultPlateList, PlateDetailRespVO.class))
|
||||
.plateModels(models)
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并加工组名称
|
||||
*
|
||||
* @param list
|
||||
*/
|
||||
public List<PlateDetailDO> mergeGroupName(List<PlateDetailDO> list) {
|
||||
|
||||
if (list == null || list.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// plateId -> (groupName + 代表对象)
|
||||
Map<Long, PlateDetailDO> resultMap = new LinkedHashMap<>();
|
||||
Map<Long, Set<String>> groupNameMap = new HashMap<>();
|
||||
|
||||
for (PlateDetailDO item : list) {
|
||||
|
||||
Long plateId = item.getPlateId();
|
||||
if (plateId == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 保留第一条作为代表对象(或你也可以自定义取最新)
|
||||
resultMap.putIfAbsent(plateId, item);
|
||||
|
||||
if (item.getProcessGroupName() != null) {
|
||||
groupNameMap
|
||||
.computeIfAbsent(plateId, k -> new LinkedHashSet<>())
|
||||
.add(item.getProcessGroupName());
|
||||
}
|
||||
}
|
||||
|
||||
// 组装最终结果
|
||||
List<PlateDetailDO> result = new ArrayList<>(resultMap.size());
|
||||
|
||||
for (Map.Entry<Long, PlateDetailDO> entry : resultMap.entrySet()) {
|
||||
|
||||
Long plateId = entry.getKey();
|
||||
PlateDetailDO item = entry.getValue();
|
||||
|
||||
Set<String> groupNames = groupNameMap.get(plateId);
|
||||
if (groupNames != null && !groupNames.isEmpty()) {
|
||||
item.setProcessGroupName(String.join(",", groupNames));
|
||||
}
|
||||
|
||||
result.add(item);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将订单列表整理成父子结构
|
||||
* 规则:
|
||||
|
||||
+8
-2
@@ -4,7 +4,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCadViewPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
|
||||
@@ -70,7 +70,13 @@ public interface PlateService {
|
||||
|
||||
PageResult<PlateGoodDO> getGoodsPlate(GoodsPlateFilterPageReqVO pageReqVO);
|
||||
|
||||
PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO reqVO);
|
||||
/**
|
||||
* 查询订单未排单小板
|
||||
*
|
||||
* @param reqVO
|
||||
* @return
|
||||
*/
|
||||
List<PlateDetailRespVO> getOrdersNoPlanPlate(NoPlanPlatePageReqVO reqVO);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
+69
-85
@@ -22,7 +22,6 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCadViewPlatePageReqVO;
|
||||
@@ -31,7 +30,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderDetailComponentPageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
@@ -42,6 +41,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderItem.OrdersViewPlatesPage
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
|
||||
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
||||
@@ -334,24 +334,16 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO pageReqVO) {
|
||||
|
||||
List<Integer> statusList = new ArrayList<>();
|
||||
statusList.add(OrderStatusEnum.NEW_ORDER.getStatus());
|
||||
statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus());
|
||||
statusList.add(OrderStatusEnum.SORTED.getStatus());
|
||||
public List<PlateDetailRespVO> getOrdersNoPlanPlate(NoPlanPlatePageReqVO pageReqVO) {
|
||||
// 置空内部条件
|
||||
pageReqVO.setMaterialList(null);
|
||||
pageReqVO.setColorList(null);
|
||||
pageReqVO.setBrandList(null);
|
||||
pageReqVO.setThicknessList(null);
|
||||
pageReqVO.setTextureList(null);
|
||||
|
||||
Long organId = getUserOrganId();
|
||||
|
||||
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
|
||||
queryWrapperX
|
||||
.eq("o.organ_id", organId)
|
||||
.eq("o.deleted", false)
|
||||
.in("o.status", statusList)
|
||||
.isNotNull("op.id")
|
||||
.eq("op.deleted", false);
|
||||
|
||||
|
||||
if (pageReqVO.getPlanId() != null) {
|
||||
|
||||
Long planId = pageReqVO.getPlanId();
|
||||
@@ -379,67 +371,75 @@ public class PlateServiceImpl implements PlateService {
|
||||
if (planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())) {
|
||||
|
||||
// 混单添加查询条件
|
||||
mixedInsertQuery(pageReqVO, planDO, material, thickness, queryWrapperX);
|
||||
mixedInsertQuery(pageReqVO, planDO, material, thickness);
|
||||
|
||||
}
|
||||
// 非混单
|
||||
else {
|
||||
|
||||
// 非混单条件查询条件
|
||||
noMixedInsertQuery(pageReqVO, planDO, material, brand, color, thickness, texture, queryWrapperX);
|
||||
noMixedInsertQuery(pageReqVO, planDO, material, brand, color, thickness, texture);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 无排单ID时
|
||||
else {
|
||||
// 查询订单未排单小板
|
||||
List<PlateDetailDO> plateDetailDOS = plateMapper.selectNoPlanPlateWithFilter(pageReqVO, organId);
|
||||
// 合并加工组
|
||||
List<PlateDetailDO> resultPlateList = mergeGroupName(plateDetailDOS);
|
||||
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.eqIfPresent(FIELD_OP_THICKNESS, pageReqVO.getThickness());
|
||||
return BeanUtil.copyToList(resultPlateList, PlateDetailRespVO.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并加工组名称
|
||||
*
|
||||
* @param list
|
||||
*/
|
||||
public List<PlateDetailDO> mergeGroupName(List<PlateDetailDO> list) {
|
||||
|
||||
if (list == null || list.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// plateId -> (groupName + 代表对象)
|
||||
Map<Long, PlateDetailDO> resultMap = new LinkedHashMap<>();
|
||||
Map<Long, Set<String>> groupNameMap = new HashMap<>();
|
||||
|
||||
queryWrapperX
|
||||
.inIfPresent("op.goods_id", pageReqVO.getGoodsIdList())
|
||||
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null)
|
||||
.likeIfPresent("op.id", pageReqVO.getPlateId())
|
||||
.likeIfPresent("op.name", pageReqVO.getPlateName())
|
||||
.likeIfPresent("op.plate_no", pageReqVO.getPlateNo())
|
||||
.likeIfPresent("op.custom_plate_no", pageReqVO.getCustomPlateNo())
|
||||
.betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()})
|
||||
.betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()})
|
||||
.betweenIfPresent(FIELD_OP_THICKNESS, new BigDecimal[]{pageReqVO.getThicknessMinRang(), pageReqVO.getThicknessMaxRang()})
|
||||
.eqIfPresent("op.texture", pageReqVO.getTexture())
|
||||
.eqIfPresent("op.is_special_shaped", pageReqVO.getIsSpecialShaped())
|
||||
.eqIfPresent("op.is_sculpt", pageReqVO.getIsSculpt())
|
||||
.eqIfPresent("op.is_row_hole", pageReqVO.getIsRowHole())
|
||||
.likeIfPresent("op.remark", pageReqVO.getRemark())
|
||||
.orderByDesc("o.id, op.id");
|
||||
for (PlateDetailDO item : list) {
|
||||
|
||||
Long plateId = item.getPlateId();
|
||||
if (plateId == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Integer pageNo = (pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize();
|
||||
|
||||
|
||||
List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX, pageNo, pageReqVO.getPageSize(), organId);
|
||||
|
||||
if (CollUtil.isEmpty(plateResLists)) {
|
||||
|
||||
return new PageResult<>();
|
||||
// 保留第一条作为代表对象(或你也可以自定义取最新)
|
||||
resultMap.putIfAbsent(plateId, item);
|
||||
|
||||
if (item.getProcessGroupName() != null) {
|
||||
groupNameMap
|
||||
.computeIfAbsent(plateId, k -> new LinkedHashSet<>())
|
||||
.add(item.getProcessGroupName());
|
||||
}
|
||||
}
|
||||
|
||||
queryWrapperX
|
||||
.groupBy("o.id");
|
||||
// 组装最终结果
|
||||
List<PlateDetailDO> result = new ArrayList<>(resultMap.size());
|
||||
|
||||
List<Long> plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX, organId);
|
||||
for (Map.Entry<Long, PlateDetailDO> entry : resultMap.entrySet()) {
|
||||
|
||||
long sum = plateCount.stream().mapToLong(Long::longValue).sum();
|
||||
Long plateId = entry.getKey();
|
||||
PlateDetailDO item = entry.getValue();
|
||||
|
||||
return new PageResult<>(plateResLists, sum);
|
||||
Set<String> groupNames = groupNameMap.get(plateId);
|
||||
if (groupNames != null && !groupNames.isEmpty()) {
|
||||
item.setProcessGroupName(String.join(",", groupNames));
|
||||
}
|
||||
|
||||
result.add(item);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -768,8 +768,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
private void mixedInsertQuery(NoPlanPlatePageReqVO pageReqVO,
|
||||
PlanDO planDO,
|
||||
List<String> material,
|
||||
List<BigDecimal> thickness,
|
||||
QueryWrapperX<OrderDO> queryWrapperX) {
|
||||
List<BigDecimal> thickness) {
|
||||
|
||||
|
||||
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
||||
@@ -779,21 +778,14 @@ public class PlateServiceImpl implements PlateService {
|
||||
// 相同材质和厚度
|
||||
if (planDO.getFilter().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())) {
|
||||
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
pageReqVO.setMaterialList(material);
|
||||
pageReqVO.setThicknessList(thickness);
|
||||
|
||||
}
|
||||
// 相同厚度
|
||||
else {
|
||||
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
pageReqVO.setThicknessList(thickness);
|
||||
|
||||
}
|
||||
|
||||
@@ -807,8 +799,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
List<String> brand,
|
||||
List<String> color,
|
||||
List<BigDecimal> thickness,
|
||||
List<Boolean> texture,
|
||||
QueryWrapperX<OrderDO> queryWrapperX) {
|
||||
List<Boolean> texture) {
|
||||
|
||||
// 是否开启混单
|
||||
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
||||
@@ -819,29 +810,22 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
// 相同材质和厚度 混单
|
||||
if (pageReqVO.getMixedType().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())) {
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
pageReqVO.setMaterialList(material);
|
||||
pageReqVO.setThicknessList(thickness);
|
||||
|
||||
}
|
||||
// 相同厚度 混单
|
||||
else {
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
pageReqVO.setThicknessList(thickness);
|
||||
|
||||
}
|
||||
} else {
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.inIfPresent(FIELD_OG_BRAND, brand)
|
||||
.inIfPresent(FIELD_OG_COLOR, color)
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness)
|
||||
.inIfPresent(FIELD_OG_TEXTURE, texture);
|
||||
// 非混单
|
||||
pageReqVO.setMaterialList(material);
|
||||
pageReqVO.setBrandList(brand);
|
||||
pageReqVO.setColorList(color);
|
||||
pageReqVO.setThicknessList(thickness);
|
||||
pageReqVO.setTextureList(texture);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+64
-42
@@ -349,7 +349,7 @@
|
||||
|
||||
|
||||
|
||||
<resultMap id="PlateDetailMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO">
|
||||
<resultMap id="PlateDetailMap" type="com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO">
|
||||
|
||||
<result property="plateId" column="plateId"/>
|
||||
<result property="orderId" column="orderId"/>
|
||||
@@ -418,54 +418,76 @@
|
||||
|
||||
|
||||
<select id="selectPlanPlateDetailList" resultMap="PlateDetailMap">
|
||||
SELECT
|
||||
og.name AS processGroupName,
|
||||
|
||||
ogs.goods_id as plateGoodsId,
|
||||
ogs.goods_name as goodsName,
|
||||
ogs.color as color,
|
||||
ogs.material as material,
|
||||
|
||||
op.id as plateId,
|
||||
op.order_id as orderId,
|
||||
op.name as name,
|
||||
op.plate_no as plateNo,
|
||||
op.custom_plate_no as customPlateNo,
|
||||
op.type as type,
|
||||
op.goods_id as goodsId,
|
||||
op.width,
|
||||
op.height,
|
||||
op.thickness,
|
||||
op.split_width as splitWidth,
|
||||
op.split_height as splitHeight,
|
||||
op.split_thickness as splitThickness,
|
||||
op.seal_left as sealLeft,
|
||||
op.seal_right as sealRight,
|
||||
op.seal_up as sealUp,
|
||||
op.seal_down as sealDown,
|
||||
op.area as area,
|
||||
op.texture as texture,
|
||||
op.hole_face as holeFace,
|
||||
op.hole_arrange as holeArrange,
|
||||
op.is_door as isDoor,
|
||||
op.open_door_type as openDoorType,
|
||||
op.offset_x as offsetX,
|
||||
op.offset_y as offsetY,
|
||||
op.is_special_shaped as isSpecialShaped,
|
||||
op.is_sculpt as isSculpt,
|
||||
op.is_row_hole as hasHole,
|
||||
op.remark as remark,
|
||||
op.model_data as modelData
|
||||
|
||||
select distinct
|
||||
FROM order_plate op
|
||||
|
||||
oi.body_id as bodyId,
|
||||
oi.group_id as groupId,
|
||||
oi.room_id as roomId,
|
||||
og.name as groupName,
|
||||
ob.name as bodyName,
|
||||
ob.room_name as roomName,
|
||||
ogs.goods_id as plateGoodsId,
|
||||
ogs.goods_name as goodsName,
|
||||
ogs.brand as brand,
|
||||
ogs.color as color,
|
||||
ogs.material as material,
|
||||
op.id as plateId,
|
||||
op.order_id as orderId,
|
||||
op.name as name,
|
||||
op.plate_no as plateNo,
|
||||
op.custom_plate_no as customPlateNo,
|
||||
op.type as type,
|
||||
op.goods_id as goodsId,
|
||||
op.width as width,
|
||||
op.height as height,
|
||||
op.thickness as thickness,
|
||||
op.seal_left as sealLeft,
|
||||
op.seal_right as sealRight,
|
||||
op.seal_up as sealUp,
|
||||
op.seal_down as sealDown,
|
||||
op.area as area,
|
||||
op.texture as texture,
|
||||
op.hole_face as holeFace,
|
||||
op.open_door_type as openDoorType,
|
||||
op.is_special_shaped as isSpecialShaped,
|
||||
op.is_sculpt as isSculpt,
|
||||
op.remark as remark,
|
||||
op.model_data as modelData
|
||||
JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
|
||||
from order_plate op
|
||||
left join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
|
||||
left join order_group og on op.organ_id = og.organ_id and op.order_id = og.order_id and oi.group_id = og.id
|
||||
left join order_body ob on op.organ_id = ob.organ_id and op.order_id = ob.order_id and oi.body_id = ob.id
|
||||
|
||||
where op.organ_id = #{organId} and op.plan_id = #{planId}
|
||||
LEFT JOIN (
|
||||
SELECT group_id, plate_id
|
||||
FROM order_item
|
||||
WHERE plate_id != 0
|
||||
and source_id = 0
|
||||
and order_id in
|
||||
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
|
||||
#{orderIds}
|
||||
</foreach>
|
||||
and organ_id = #{organId}
|
||||
group by group_id, plate_id
|
||||
) oi
|
||||
ON op.id = oi.plate_id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON og.id = oi.group_id
|
||||
|
||||
WHERE op.organ_id = #{organId}
|
||||
and op.order_id in
|
||||
<foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
AND op.deleted = false
|
||||
AND op.plan_id = #{planId}
|
||||
</select>
|
||||
|
||||
<select id="selectIsCuttingPlate" resultType="java.lang.Long">
|
||||
|
||||
+291
-53
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
|
||||
<resultMap id="PlateDetialMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO">
|
||||
<resultMap id="PlateDetialMap" type="com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO">
|
||||
|
||||
<result property="plateId" column="plateId"/>
|
||||
<result property="orderId" column="orderId"/>
|
||||
@@ -77,12 +77,6 @@
|
||||
<result property="is2v" column="is2v"/>
|
||||
<result property="isSide2v" column="isSide2v"/>
|
||||
<result property="modelData" column="modelData" typeHandler="com.cf.imes.framework.mybatis.core.type.CompressByteTypeHandler"/>
|
||||
|
||||
<collection property="processGroupLists" javaType="java.util.List" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList" >
|
||||
|
||||
<result property="groupId" column="groupId"/>
|
||||
<result property="groupName" column="groupName"/>
|
||||
</collection >
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -350,7 +344,7 @@
|
||||
|
||||
</select>
|
||||
|
||||
<resultMap id="OrderSourcePlateDetialMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO">
|
||||
<resultMap id="OrderSourcePlateDetialMap" type="com.cf.imes.module.executor.dal.dataobject.plate.PlateDetailDO">
|
||||
<result property="goodsId" column="plateGoodsId"/>
|
||||
<result property="goodsName" column="goodsName"/>
|
||||
<result property="brand" column="brand"/>
|
||||
@@ -428,67 +422,311 @@
|
||||
|
||||
|
||||
<select id="selectNoPlanPlate" resultMap="PlateDetialMap">
|
||||
SELECT
|
||||
og.name AS processGroupName,
|
||||
|
||||
ogs.goods_id as plateGoodsId,
|
||||
ogs.goods_name as goodsName,
|
||||
ogs.color as color,
|
||||
ogs.material as material,
|
||||
|
||||
select distinct
|
||||
oi.group_id as groupId,
|
||||
og.name as groupName,
|
||||
ogs.goods_id as plateGoodsId,
|
||||
ogs.goods_name as goodsName,
|
||||
op.id as plateId,
|
||||
op.order_id as orderId,
|
||||
op.name as name,
|
||||
op.plate_no as plateNo,
|
||||
op.custom_plate_no as customPlateNo,
|
||||
op.type as type,
|
||||
op.goods_id as goodsId,
|
||||
op.width,
|
||||
op.height,
|
||||
op.thickness,
|
||||
op.split_width as splitWidth,
|
||||
op.split_height as splitHeight,
|
||||
op.split_thickness as splitThickness,
|
||||
op.seal_left as sealLeft,
|
||||
op.seal_right as sealRight,
|
||||
op.seal_up as sealUp,
|
||||
op.seal_down as sealDown,
|
||||
op.area as area,
|
||||
op.texture as texture,
|
||||
op.hole_face as holeFace,
|
||||
op.hole_arrange as holeArrange,
|
||||
op.is_door as isDoor,
|
||||
op.open_door_type as openDoorType,
|
||||
op.offset_x as offsetX,
|
||||
op.offset_y as offsetY,
|
||||
op.is_special_shaped as isSpecialShaped,
|
||||
op.is_sculpt as isSculpt,
|
||||
op.is_row_hole as hasHole,
|
||||
op.remark as remark,
|
||||
op.model_data as modelData
|
||||
|
||||
ogs.color as color,
|
||||
ogs.material as material,
|
||||
op.id as plateId,
|
||||
op.order_id as orderId,
|
||||
op.name as name,
|
||||
op.plate_no as plateNo,
|
||||
op.custom_plate_no as customPlateNo,
|
||||
op.type as type,
|
||||
op.goods_id as goodsId,
|
||||
op.width as width,
|
||||
op.height as height,
|
||||
op.thickness as thickness,
|
||||
op.split_width as splitWidth,
|
||||
op.split_height as splitHeight,
|
||||
op.split_thickness as splitThickness,
|
||||
op.seal_left as sealLeft,
|
||||
op.seal_right as sealRight,
|
||||
op.seal_up as sealUp,
|
||||
op.seal_down as sealDown,
|
||||
op.area as area,
|
||||
op.texture as texture,
|
||||
op.hole_face as holeFace,
|
||||
op.hole_arrange as holeArrange,
|
||||
op.is_door as isDoor,
|
||||
op.open_door_type as openDoorType,
|
||||
op.offset_x as offsetX,
|
||||
op.offset_y as offsetY,
|
||||
op.is_special_shaped as isSpecialShaped,
|
||||
op.is_sculpt as isSculpt,
|
||||
op.is_row_hole as hasHole,
|
||||
op.remark as remark,
|
||||
op.model_data as modelData
|
||||
FROM order_plate op
|
||||
|
||||
from order_plate op
|
||||
join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id and oi.plate_id != 0
|
||||
left join order_group og on oi.organ_id = og.organ_id and oi.order_id = og.order_id and oi.group_id = og.id
|
||||
where op.organ_id = #{organId}
|
||||
JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
|
||||
and op.order_id in
|
||||
LEFT JOIN (
|
||||
SELECT group_id, plate_id
|
||||
FROM order_item
|
||||
WHERE plate_id != 0
|
||||
and source_id = 0
|
||||
and order_id in
|
||||
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
|
||||
#{orderIds}
|
||||
</foreach>
|
||||
and organ_id = #{organId}
|
||||
group by group_id, plate_id
|
||||
) oi
|
||||
ON op.id = oi.plate_id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON og.id = oi.group_id
|
||||
|
||||
WHERE op.organ_id = #{organId}
|
||||
and op.order_id in
|
||||
<foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
and op.goods_id in
|
||||
<foreach collection="ids" item="ids" open="(" close=")" separator=",">
|
||||
#{ids}
|
||||
</foreach>
|
||||
AND op.deleted = false
|
||||
AND op.plan_id = 0
|
||||
</select>
|
||||
|
||||
and op.deleted = false
|
||||
<select id="selectNoPlanPlateWithFilter" resultMap="PlateDetialMap">
|
||||
|
||||
and op.plan_id = 0
|
||||
SELECT
|
||||
og.name AS processGroupName,
|
||||
|
||||
ogs.goods_id as plateGoodsId,
|
||||
ogs.goods_name as goodsName,
|
||||
ogs.color as color,
|
||||
ogs.material as material,
|
||||
ogs.brand as brand,
|
||||
|
||||
op.id as plateId,
|
||||
op.order_id as orderId,
|
||||
op.name as name,
|
||||
op.plate_no as plateNo,
|
||||
op.custom_plate_no as customPlateNo,
|
||||
op.type as type,
|
||||
op.goods_id as goodsId,
|
||||
op.width,
|
||||
op.height,
|
||||
op.thickness,
|
||||
op.split_width as splitWidth,
|
||||
op.split_height as splitHeight,
|
||||
op.split_thickness as splitThickness,
|
||||
op.seal_left as sealLeft,
|
||||
op.seal_right as sealRight,
|
||||
op.seal_up as sealUp,
|
||||
op.seal_down as sealDown,
|
||||
op.area as area,
|
||||
op.texture as texture,
|
||||
op.hole_face as holeFace,
|
||||
op.hole_arrange as holeArrange,
|
||||
op.is_door as isDoor,
|
||||
op.open_door_type as openDoorType,
|
||||
op.offset_x as offsetX,
|
||||
op.offset_y as offsetY,
|
||||
op.is_special_shaped as isSpecialShaped,
|
||||
op.is_sculpt as isSculpt,
|
||||
op.is_row_hole as hasHole,
|
||||
op.remark as remark,
|
||||
op.model_data as modelData
|
||||
|
||||
FROM order_plate op
|
||||
|
||||
JOIN order_goods ogs
|
||||
ON op.organ_id = ogs.organ_id
|
||||
AND op.order_id = ogs.order_id
|
||||
AND op.goods_id = ogs.id
|
||||
|
||||
LEFT JOIN (
|
||||
SELECT group_id, plate_id
|
||||
FROM order_item
|
||||
WHERE plate_id != 0
|
||||
AND source_id = 0
|
||||
AND organ_id = #{organId}
|
||||
|
||||
<if test="reqVO.orderIds != null and reqVO.orderIds.size() > 0">
|
||||
AND order_id IN
|
||||
<foreach collection="reqVO.orderIds" item="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
GROUP BY group_id, plate_id
|
||||
) oi
|
||||
ON op.id = oi.plate_id
|
||||
|
||||
LEFT JOIN order_group og
|
||||
ON og.id = oi.group_id
|
||||
AND og.organ_id = #{organId}
|
||||
|
||||
JOIN orders o
|
||||
ON o.id = op.order_id
|
||||
AND o.organ_id = #{organId}
|
||||
AND o.deleted = false
|
||||
AND o.status IN (1,2,3)
|
||||
|
||||
WHERE op.organ_id = #{organId}
|
||||
AND op.deleted = false
|
||||
AND op.plan_id = 0
|
||||
|
||||
<!-- goodsIdList -->
|
||||
<if test="reqVO.goodsIdList != null and reqVO.goodsIdList.size() > 0">
|
||||
AND op.goods_id IN
|
||||
<foreach collection="reqVO.goodsIdList" item="goodsId" open="(" close=")" separator=",">
|
||||
#{goodsId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- orderIds -->
|
||||
<if test="reqVO.orderIds != null and reqVO.orderIds.size() > 0">
|
||||
AND op.order_id IN
|
||||
<foreach collection="reqVO.orderIds" item="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- plateId -->
|
||||
<if test="reqVO.plateId != null and reqVO.plateId != ''">
|
||||
AND CAST(op.id AS CHAR) LIKE CONCAT('%', #{reqVO.plateId}, '%')
|
||||
</if>
|
||||
|
||||
<!-- plateName -->
|
||||
<if test="reqVO.plateName != null and reqVO.plateName != ''">
|
||||
AND op.name LIKE CONCAT('%', #{reqVO.plateName}, '%')
|
||||
</if>
|
||||
|
||||
<!-- plateNo -->
|
||||
<if test="reqVO.plateNo != null and reqVO.plateNo != ''">
|
||||
AND op.plate_no LIKE CONCAT('%', #{reqVO.plateNo}, '%')
|
||||
</if>
|
||||
|
||||
<!-- customPlateNo -->
|
||||
<if test="reqVO.customPlateNo != null and reqVO.customPlateNo != ''">
|
||||
AND op.custom_plate_no LIKE CONCAT('%', #{reqVO.customPlateNo}, '%')
|
||||
</if>
|
||||
|
||||
<!-- material -->
|
||||
<if test="reqVO.material != null and reqVO.material != ''">
|
||||
AND ogs.material LIKE CONCAT('%', #{reqVO.material}, '%')
|
||||
</if>
|
||||
|
||||
<!-- brand -->
|
||||
<if test="reqVO.brand != null and reqVO.brand != ''">
|
||||
AND ogs.brand LIKE CONCAT('%', #{reqVO.brand}, '%')
|
||||
</if>
|
||||
|
||||
<!-- color -->
|
||||
<if test="reqVO.color != null and reqVO.color != ''">
|
||||
AND ogs.color LIKE CONCAT('%', #{reqVO.color}, '%')
|
||||
</if>
|
||||
|
||||
<!-- thickness -->
|
||||
<if test="reqVO.thickness != null">
|
||||
AND op.thickness = #{reqVO.thickness}
|
||||
</if>
|
||||
|
||||
<!-- height range -->
|
||||
<if test="reqVO.longMinRang != null">
|
||||
AND op.height <![CDATA[ >= ]]> #{reqVO.longMinRang}
|
||||
</if>
|
||||
|
||||
<if test="reqVO.longMaxRang != null">
|
||||
AND op.height <![CDATA[ <= ]]> #{reqVO.longMaxRang}
|
||||
</if>
|
||||
|
||||
<!-- width range -->
|
||||
<if test="reqVO.widthMinRang != null">
|
||||
AND op.width <![CDATA[ >= ]]> #{reqVO.widthMinRang}
|
||||
</if>
|
||||
|
||||
<if test="reqVO.widthMaxRang != null">
|
||||
AND op.width <![CDATA[ <= ]]> #{reqVO.widthMaxRang}
|
||||
</if>
|
||||
|
||||
<!-- thickness range -->
|
||||
<if test="reqVO.thicknessMinRang != null">
|
||||
AND op.thickness <![CDATA[ >= ]]> #{reqVO.thicknessMinRang}
|
||||
</if>
|
||||
|
||||
<if test="reqVO.thicknessMaxRang != null">
|
||||
AND op.thickness <![CDATA[ <= ]]> #{reqVO.thicknessMaxRang}
|
||||
</if>
|
||||
|
||||
<!-- texture -->
|
||||
<if test="reqVO.texture != null">
|
||||
AND op.texture = #{reqVO.texture}
|
||||
</if>
|
||||
|
||||
<!-- special shaped -->
|
||||
<if test="reqVO.isSpecialShaped != null">
|
||||
AND op.is_special_shaped = #{reqVO.isSpecialShaped}
|
||||
</if>
|
||||
|
||||
<!-- sculpt -->
|
||||
<if test="reqVO.isSculpt != null">
|
||||
AND op.is_sculpt = #{reqVO.isSculpt}
|
||||
</if>
|
||||
|
||||
<!-- row hole -->
|
||||
<if test="reqVO.isRowHole != null">
|
||||
AND op.is_row_hole = #{reqVO.isRowHole}
|
||||
</if>
|
||||
|
||||
<!-- remark -->
|
||||
<if test="reqVO.remark != null and reqVO.remark != ''">
|
||||
AND op.remark LIKE CONCAT('%', #{reqVO.remark}, '%')
|
||||
</if>
|
||||
|
||||
<!-- 材质 -->
|
||||
<if test="reqVO.materialList != null and reqVO.materialList.size > 0">
|
||||
AND ogs.material IN
|
||||
<foreach collection="reqVO.materialList" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- 品牌 -->
|
||||
<if test="reqVO.brandList != null and reqVO.brandList.size > 0">
|
||||
AND ogs.brand IN
|
||||
<foreach collection="reqVO.brandList" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- 颜色 -->
|
||||
<if test="reqVO.colorList != null and reqVO.colorList.size > 0">
|
||||
AND ogs.color IN
|
||||
<foreach collection="reqVO.colorList" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- 厚度 -->
|
||||
<if test="reqVO.thicknessList != null and reqVO.thicknessList.size > 0">
|
||||
AND op.thickness IN
|
||||
<foreach collection="reqVO.thicknessList" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- 纹理 -->
|
||||
<if test="reqVO.textureList != null and reqVO.textureList.size > 0">
|
||||
AND ogs.texture IN
|
||||
<foreach collection="reqVO.textureList" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY op.order_id DESC, op.id DESC
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user