mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
新增/修改排单新增 接入组件方案id 能力
This commit is contained in:
+11
@@ -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;
|
||||
}
|
||||
|
||||
+2
@@ -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;
|
||||
|
||||
+10
-1
@@ -65,10 +65,19 @@ public class PlanDO extends BaseDO {
|
||||
private Long machineId;
|
||||
|
||||
/**
|
||||
* 方案 ID
|
||||
* 加工方案 ID
|
||||
*/
|
||||
private Long processId;
|
||||
|
||||
/**
|
||||
* 上一次加工方案ID
|
||||
*/
|
||||
private Long previousProcessId;
|
||||
|
||||
/**
|
||||
* 加工方案名称
|
||||
*/
|
||||
private String processName;
|
||||
|
||||
/**
|
||||
* 计划时间
|
||||
|
||||
+38
-63
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user