diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 449c558..ef783f3 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -84,9 +84,6 @@ public class MesWorkOrderService extends BaseMesService implements @Override public MesWorkOrder insert(MesWorkOrder bean) { - //插入前构造数据 - onInsertBean(bean); - //获取相同类型 相同标识 生产序号最大值的 DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", orderPackBean); @@ -94,15 +91,8 @@ public class MesWorkOrderService extends BaseMesService implements DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean); MesWorkOrder result = baseRDao.getByProperty(orderPackBean); - //生成工单号 - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); - List orderList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); - String orderNo = orderList.get(0); - orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean); - if (baseRDao.isExitByHql(orderPackBean)) { - MesException.throwMesBusiException("单号流水码生成重复"); - } + //插入前构造数据 + onInsertBean(bean); //若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1 if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { @@ -113,7 +103,6 @@ public class MesWorkOrderService extends BaseMesService implements MesWorkOrder copyMesWorkOrder = new MesWorkOrder(); BeanUtils.copyProperties(bean, copyMesWorkOrder); copyMesWorkOrder.setProduceSeq((long) (produceSeq + 1)); - copyMesWorkOrder.setWorkOrderNo(orderNo); copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); @@ -130,7 +119,6 @@ public class MesWorkOrderService extends BaseMesService implements List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); bean.setWorkOrderSeq(resultList.get(0)); } - bean.setWorkOrderNo(orderNo); bean.setQty(bean.getQty()); bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); @@ -168,6 +156,7 @@ public class MesWorkOrderService extends BaseMesService implements //更新状态 if (result.getWorkOrderStatus().intValue() != bean.getWorkOrderStatus().intValue()) { + result.setWorkOrderStatus(bean.getWorkOrderStatus()); if (result.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() && bean.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) { //校验物料生产版本是否存在 @@ -177,7 +166,6 @@ public class MesWorkOrderService extends BaseMesService implements //发送工单信息给WMS mesWorkOrderToWmsService.insertBatch(mesWorkOrderToWmsService.saveMesWorkOrderToWms(result, bomList)); } - result.setWorkOrderStatus(bean.getWorkOrderStatus()); } //修改工单,工单标识需要改为未同步 result.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); @@ -246,6 +234,16 @@ public class MesWorkOrderService extends BaseMesService implements if (StringUtil.isEmpty(item.getCustPartNo())) { getCustomerPart(item); } + //生成工单号 + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); + List orderList = syncFuncService.syncSerialNo(genSerialNoModel, item.getCreateUser(), item.getOrganizeCode(), 1).getResultList(); + String orderNo = orderList.get(0); + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean); + if (baseRDao.isExitByHql(orderPackBean)) { + MesException.throwMesBusiException("单号流水码生成重复"); + } + item.setWorkOrderNo(orderNo); //校验标识 //若工单类型为排序 List saveMesWorkOrderToWms = new ArrayList<>(); @@ -325,10 +323,9 @@ public class MesWorkOrderService extends BaseMesService implements MesProductVersion mesProductVersion = checkMesProductVersion(item); //获取bom信息 List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); - - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); } else { ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); @@ -340,9 +337,9 @@ public class MesWorkOrderService extends BaseMesService implements item.setProductVersion(mesProductVersion.getProductVersion()); //获取bom信息 List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); } //物料名称不存在,从物料信息中获取 MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode()); @@ -448,15 +445,6 @@ public class MesWorkOrderService extends BaseMesService implements MesWorkOrder next = mesWorkOrderList.iterator().next(); //属性校验&字段填充 List mesWorkOrderToWmsList = checkData(mesWorkOrderList, next.getOrganizeCode()); - //生成工单号 - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); - List orderList = syncFuncService.syncSerialNo(genSerialNoModel, next.getCreateUser(), next.getOrganizeCode(), mesWorkOrderList.size()).getResultList(); - //查询工单是否已经存在 - DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(next.getOrganizeCode()); - DdlPreparedPack.getInPackList(orderList, "workOrderNo", orderPackBean); - if (baseRDao.isExitByHql(orderPackBean)) { - MesException.throwMesBusiException("单号已存在"); - } //BTO序号 List seqList = new ArrayList<>(); if (MesExtEnumUtil.ORDER_TYPE.BTO.getValue() == next.getWorkOrderType()) { @@ -467,7 +455,7 @@ public class MesWorkOrderService extends BaseMesService implements int index = 0; for (MesWorkOrder item : mesWorkOrderList) { //获取相同类型 相同标识 生产序号最大值的 - orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(item.getWorkOrderStatus(), "workOrderStatus", orderPackBean); DdlPreparedPack.getStringEqualPack(item.getOrderFlag(), "orderFlag", orderPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean); @@ -482,7 +470,6 @@ public class MesWorkOrderService extends BaseMesService implements MesWorkOrder copyMesWorkOrder = new MesWorkOrder(); BeanUtils.copyProperties(item, copyMesWorkOrder); copyMesWorkOrder.setProduceSeq((long) (produceSeq + 1)); - copyMesWorkOrder.setWorkOrderNo(orderList.get(index)); copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(copyMesWorkOrder, item.getCreateUser()); index++; @@ -500,8 +487,6 @@ public class MesWorkOrderService extends BaseMesService implements item.setProduceSeq(produceSeq + 1); item.setWorkOrderSeq(seqList.get(index)); } - item.setWorkOrderNo(orderList.get(index)); - item.setQty(item.getQty()); item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(item, item.getCreateUser()); baseRDao.insert(item); @@ -522,6 +507,7 @@ public class MesWorkOrderService extends BaseMesService implements } private List checkData(List mesWorkOrderList, String organizeCode) { + MesWorkOrder next = mesWorkOrderList.iterator().next(); String nowDate = TimeTool.getNowTime(true); //获取产线信息 List workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList()); @@ -555,6 +541,15 @@ public class MesWorkOrderService extends BaseMesService implements MesException.throwMesBusiException("vin号【%s】已存在", list); } } + //生成工单号 + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); + List orderList = syncFuncService.syncSerialNo(genSerialNoModel, next.getCreateUser(), next.getOrganizeCode(), mesWorkOrderList.size()).getResultList(); + //查询工单是否已经存在 + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(next.getOrganizeCode()); + DdlPreparedPack.getInPackList(orderList, "workOrderNo", orderPackBean); + if (baseRDao.isExitByHql(orderPackBean)) { + MesException.throwMesBusiException("单号已存在"); + } //BOM信息 Map> mesBomMap = new HashMap<>(); @@ -564,7 +559,9 @@ public class MesWorkOrderService extends BaseMesService implements Map mesPartProdGroupMap = new HashMap<>(); //发送wms数据 List mesWorkOrderToWmsList = new ArrayList<>(); + int index = 0; for (MesWorkOrder item : mesWorkOrderList) { + item.setWorkOrderNo(orderList.get(index)); // 数据校验 ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空"); ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空"); @@ -702,10 +699,10 @@ public class MesWorkOrderService extends BaseMesService implements mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); } + item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); } else { ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); @@ -729,11 +726,12 @@ public class MesWorkOrderService extends BaseMesService implements mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); } + item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); } item.setUnCompleteQty(item.getQty()); + index++; } return mesWorkOrderToWmsList; }