新增/修改排单新增 接入组件方案id 能力

This commit is contained in:
gaoqr
2026-05-21 11:50:52 +08:00
parent 0e2933f0e2
commit 2a9e38b8d0
5 changed files with 84 additions and 64 deletions
@@ -100,4 +100,15 @@ public class OrderPageReqVOCopy extends PageParam {
// @Size(max = 20,message = "最多可同时查询20个订单")
private List<Long> orderIds;
@Schema(description = "板材名称")
private String goodsName;
@Schema(description = "材质")
private String material;
@Schema(description = "颜色")
private String color;
@Schema(description = "厚度")
private BigDecimal thickness;
}
@@ -35,6 +35,8 @@ public class PlanSaveReqVO {
@Schema(description = "方案ID")
private Long processId;
@Schema(description = "方案组名称")
private String processName;
@Schema(description = "新增的小板ID")
private List<OrderPlateIds> insertOrderPlateIds;
@@ -65,10 +65,19 @@ public class PlanDO extends BaseDO {
private Long machineId;
/**
* 方案 ID
* 加工方案 ID
*/
private Long processId;
/**
* 上一次加工方案ID
*/
private Long previousProcessId;
/**
* 加工方案名称
*/
private String processName;
/**
* 计划时间
@@ -17,6 +17,7 @@ import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -28,7 +29,6 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlat
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.ProcessSchemeModelDO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardInfo;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds;
@@ -153,9 +153,8 @@ public class PlanServiceImpl implements PlanService {
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
assert loginUser != null;
SystemConfigRespDTO systemConfigRespDTO = systemConfigApi.getDefaultProcessConfig().getCheckedData();
Long processId = systemConfigRespDTO.getId();
Long processId = createReqVO.getProcessId();
String processName = createReqVO.getProcessName();
List<PlanDO> planDOS = new ArrayList<>();
@@ -174,7 +173,7 @@ public class PlanServiceImpl implements PlanService {
List<PlanActualGoodsList> planActualGoodsLists = Optional.ofNullable(createReqVO.getPlanActualGoodsListList()).orElse(new ArrayList<>());
// 混单时判断是否进行板材对应并创建排单
mixConfigPlateCorresponding(planActualGoodsLists, plateItemList, goodsItemList, planDOS, processId, loginUser, mixedType);
mixConfigPlateCorresponding(planActualGoodsLists, plateItemList, goodsItemList, planDOS, processId, processName, loginUser, mixedType);
} else {
@@ -185,29 +184,11 @@ public class PlanServiceImpl implements PlanService {
// 查找材质和厚度和颜色相同的大板
Map<String, List<Long>> grouped = groupByMaterialAndThicknessAndColorAndBrand(goodsItemList);
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType());
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType());
}
// 增加排单
planMapper.insertBatch(planDOS);
// 排单对应的加工方案组的配置信息
List<ProcessSchemeModelDO> processSchemeModelDOS;
try {
processSchemeModelDOS = parseArray(systemConfigRespDTO.getSetting(), ProcessSchemeModelDO.class);
}catch (Exception e){
log.error(e.getMessage());
throw new ServiceException(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR);
}
planDOS.forEach(f-> processSchemeModelDOS.forEach(p->{
p.setPlanId(f.getId());
p.setProcessId(processId);
}));
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_CONFIG.getIndex(),processSchemeModelDOS);
}
@@ -219,21 +200,28 @@ public class PlanServiceImpl implements PlanService {
Long planId = updateReqVO.getId();
if(planId != null) {
if (planId != null) {
PlanDO planDO = validatePlan(planId);
if(updateReqVO.getProcessId() != null){
Long currProcessId = updateReqVO.getProcessId();
if (currProcessId != null) {
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
if (planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) {
throw new ServiceException(PLAN_PLATE_IS_CUT);
}
// 如果方案组id发生改变需要记录前序的
Long processId = planDO.getProcessId();
if (ObjectUtil.notEqual(processId, currProcessId)) {
planDO.setPreviousProcessId(processId);
}
planDO.setProcessId(updateReqVO.getProcessId());
planDO.setProcessId(currProcessId);
planDO.setProcessName(updateReqVO.getProcessName());
planMapper.updateById(planDO);
}else {
} else {
planDO.setIsScheduled(updateReqVO.getIsScheduled());
planMapper.updateById(planDO);
@@ -429,15 +417,9 @@ public class PlanServiceImpl implements PlanService {
}
List<Long> processIds = planDOPageResult.getRecords().stream().map(PlanDO::getProcessId).distinct().toList();
List<Long> planIds = planDOPageResult.getRecords().stream().map(PlanDO::getId).toList();
List<SystemConfigRespDTO> configDOS = systemConfigApi.getProcessByIds(processIds).getData();
// 查询排单对应的大板板材信息以及 统计小板数量和面积
List<PlateInfoVO> plateInfoVOS = planItemMapper.selectOrderPlanPlateList(planIds, getUserOrganId());
@@ -454,8 +436,6 @@ public class PlanServiceImpl implements PlanService {
planRespVOPageResult.forEach(e -> {
// 方案信息
e.setProcessName(getProcessName(e.getProcessId(), configDOS));
// 大板信息列表
e.setPlateInfoList(getPlateInfoList(e.getId(), plateInfoVOS));
// 小板的总数量
@@ -525,8 +505,6 @@ public class PlanServiceImpl implements PlanService {
planRespVOList.forEach(e -> {
// 机台信息
e.setProcessName(getProcessName(e.getProcessId(), configDOS));
// 板材信息列表
e.setPlateInfoList(getPlateInfoList(e.getId(), plateInfoVOS));
// 小板总数量
@@ -585,7 +563,7 @@ public class PlanServiceImpl implements PlanService {
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee())
.likeIfPresent(FIELD_CUSTOM_ORDER_NO, pageReqVO.getDefaultId())
.likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress())
.betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime());
.betweenIfPresent(FIELD_ORDER_DATE, LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime()));
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<OrderRespVOCopy> orderList = planItemMapper.selectOrderList(page, queryWrapperX, type, orderGoodsIds);
List<OrderRespVOCopy> mainOrderList = orderList.getRecords();
@@ -643,7 +621,7 @@ public class PlanServiceImpl implements PlanService {
.inIfPresent("oi.body_id", pageReqVO.getBodyId());
orderGoodsResps = planItemMapper.selectNoPlanGoodsByRoomAndBodyIds(page, queryWrapperX, getUserOrganId());
type = OrderPlanQueryTypeEnum.GOODS_ROOMBODY_QUERY.getType();
}else {
} else {
queryWrapperX
.eq(FIELD_DELETED, false)
.in(FIELD_STATUS, statusList)
@@ -652,9 +630,13 @@ public class PlanServiceImpl implements PlanService {
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee())
.likeIfPresent(FIELD_CUSTOM_ORDER_NO, pageReqVO.getDefaultId())
.likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress())
.betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime());
.betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime())
.likeIfPresent("og.goods_name", pageReqVO.getGoodsName())
.likeIfPresent("og.material", pageReqVO.getMaterial())
.likeIfPresent("og.color", pageReqVO.getColor())
.eqIfPresent("og.thickness", pageReqVO.getThickness());
orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page,queryWrapperX,getUserOrganId());
orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page, queryWrapperX, getUserOrganId());
}
@@ -683,11 +665,11 @@ public class PlanServiceImpl implements PlanService {
List<Boolean> texture = records.stream().map(OrderGoodsResp::getTexture).distinct().toList();
queryWrapperX
.inIfPresent("og.goods_name",goodsName)
.inIfPresent("og.material",material)
.inIfPresent("og.color",color)
.inIfPresent("og.thickness",thickness)
.inIfPresent("og.brand",brand)
.inIfPresent("og.goods_name", goodsName)
.inIfPresent("og.material", material)
.inIfPresent("og.color", color)
.inIfPresent("og.thickness", thickness)
.inIfPresent("og.brand", brand)
.inIfPresent("og.texture", texture);
// 查询带订单列表的商品分组
@@ -1056,18 +1038,6 @@ public class PlanServiceImpl implements PlanService {
return planDOS;
}
// 方案信息
private String getProcessName(Long processId,List<SystemConfigRespDTO> configDOS) {
return configDOS.stream()
.filter(f -> Objects.equals(f.getId(), processId))
.map(SystemConfigRespDTO::getName)
.findAny()
.orElse(null);
}
// 板材信息列表
private List<PlateInfoVO> getPlateInfoList(Long planId, List<PlateInfoVO> infoVOList) {
return infoVOList.stream()
@@ -1638,6 +1608,7 @@ public class PlanServiceImpl implements PlanService {
List<SavePlanPlateList.GoodsItemList> goodsItemList,
List<PlanDO> planDOS,
Long processId,
String processName,
LoginUser loginUser,
Integer mixedType){
@@ -1647,7 +1618,7 @@ public class PlanServiceImpl implements PlanService {
if(CollUtil.isNotEmpty(planActualGoodsLists)) {
// 有选实际大板的小板加大板创建排单
getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, planDOS, processId, loginUser);
getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, planDOS, processId, processName, loginUser);
// 没有选择实际大板的创建排单
if(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.equals(mixedType)){
@@ -1660,7 +1631,7 @@ public class PlanServiceImpl implements PlanService {
}
if(CollUtil.isNotEmpty(grouped)) {
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType());
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType());
}
}else {
@@ -1675,7 +1646,7 @@ public class PlanServiceImpl implements PlanService {
}
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType());
createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType());
}
@@ -1861,6 +1832,7 @@ public class PlanServiceImpl implements PlanService {
List<SavePlanPlateList.PlateItemList> plateItemList,
List<PlanDO> planDOS,
Long processId,
String processName,
LoginUser loginUser) {
Set<Long> orderIdSet = new HashSet<>();
@@ -1904,6 +1876,7 @@ public class PlanServiceImpl implements PlanService {
.sort(sort.get())
.type(PlanTypeEnum.MIXEDORDERPLAN.getType())
.processId(processId)
.processName(processName)
.orderNos(planOrderIdSet.toString())
.produceTime(null)
.status(PlanStatusEnum.NOCUTTING.getStatus())
@@ -1927,6 +1900,7 @@ public class PlanServiceImpl implements PlanService {
List<SavePlanPlateList.PlateItemList> plateItemList,
List<PlanDO> planDOS,
Long processId,
String processName,
LoginUser loginUser,
Integer planType){
@@ -1970,6 +1944,7 @@ public class PlanServiceImpl implements PlanService {
.sort(sort.get())
.type(planType)
.processId(processId)
.processName(processName)
.orderNos(planOrderIdSet.toString())
.produceTime(null)
.status(PlanStatusEnum.NOCUTTING.getStatus())