diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index 1b42ba6..a82f7af 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -130,6 +130,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { @Autowired private IMesProductVersionService mesProductVersionService; + @Autowired + private MesQmsScrapRepository mesQmsScrapRepository; + @Override public ListPager queryReworkTask(MesReworkTask mesReworkTask, Pager pager) { String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode(); @@ -262,13 +265,27 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { if (!CollectionUtils.isEmpty(reworkTaskDetails)) { MesPcnException.throwFlowException("还有位置未返工完成,请检查"); } + MesPartInspection mesPartInspection = null; + if (!StringUtils.isEmpty(mesReworkTask.getId())){ + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesReworkTask.getId(), "reworkTaskId", packBean); + mesPartInspection = mesPartInspectionRepository.getByProperty(packBean); + if (!StringUtils.isEmpty(mesReworkTask.getId())){ + if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){ + mesPartInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue()); + } + mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + ConvertBean.serviceModelUpdate(mesPartInspection, requestModel.getUserName()); + mesPartInspectionRepository.update(mesPartInspection); + } + } if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue() == mesReworkTask.getType()) { mesReworkTask.setReworkedQty(requestModel.getReworkedQty()); mesReworkTask.setScrapQty(requestModel.getScrapQty()); } else { //拆解 if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){ - doAssemblyDisassembly(requestModel, mesReworkTask.getSn()); + doAssemblyDisassembly(requestModel, mesReworkTask.getSn(),Objects.isNull(mesPartInspection)?"":mesPartInspection.getResponsibleParty()); } if (MesExtEnumUtil.NC_TYPE.REWORK.getValue() == requestModel.getType()) { @@ -284,19 +301,6 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesReworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue()); ConvertBean.serviceModelUpdate(mesReworkTask,requestModel.getUserName()); mesReworkTaskRepository.save(mesReworkTask); - if (!StringUtils.isEmpty(mesReworkTask.getId())){ - DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(mesReworkTask.getId(), "reworkTaskId", packBean); - MesPartInspection mesPartInspection = mesPartInspectionRepository.getByProperty(packBean); - if (!StringUtils.isEmpty(mesReworkTask.getId())){ - if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){ - mesPartInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue()); - } - mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - ConvertBean.serviceModelUpdate(mesPartInspection, requestModel.getUserName()); - mesPartInspectionRepository.update(mesPartInspection); - } - } } @Override @@ -608,14 +612,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesProduceSnRepository.update(oldProduceSn); } - private void doAssemblyDisassembly(MesReworkTaskRequestModel requestModel, String productSn) { + private void doAssemblyDisassembly(MesReworkTaskRequestModel requestModel, String productSn,String responsibleParty) { + //报废目标库位 + String destLocateNo = getDestLocateNo(requestModel.getOrganizeCode(), productSn); //总成拆解 - doProductReportReversal(requestModel,productSn); + doProductReportReversal(requestModel,productSn,destLocateNo); //装配件数据处理 - doRecursionCheck(requestModel.getAssemblyModelList(), requestModel.getOrganizeCode(), requestModel.getUserName(),mesConfigService.getCfgValue(requestModel.getOrganizeCode(), MesPcnExtConstWords.DISASSEMBLY_DEST_LOCATE)); + doRecursionCheck(requestModel.getAssemblyModelList(), requestModel.getOrganizeCode(), requestModel.getUserName(),destLocateNo,responsibleParty); } - private void doProductReportReversal(MesReworkTaskRequestModel requestModel, String productSn) { + private void doProductReportReversal(MesReworkTaskRequestModel requestModel, String productSn,String locateNo) { //更新条码状态为总成拆解 MesProduceSn produceSnDb = getMesProduceSn(requestModel.getOrganizeCode(), productSn); produceSnDb.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue()); @@ -637,7 +643,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName()); //移库 requestModel.setSn(produceSnDb.getProductSn()); - doCreateMove(requestModel,getDestLocateNo(requestModel.getOrganizeCode(), produceSnDb.getProductSn()),productVersion.getReceiveInventoryPoint(),mesWorkOrderDb.getErpWorkCenter(),mesWorkOrderDb.getPartNo()); + doCreateMove(requestModel,locateNo,productVersion.getReceiveInventoryPoint(),mesWorkOrderDb.getErpWorkCenter(),mesWorkOrderDb.getPartNo()); } private MesProductVersion getProductVersion(MesWorkOrder mesWorkOrderDb) { @@ -648,7 +654,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { return mesProductVersion; } - public void doRecursionCheck(List assemblyModelList,String organizeCode,String userName,String destLocate){ + public void doRecursionCheck(List assemblyModelList,String organizeCode,String userName,String destLocate,String responsibleParty){ for (MesProductionAssemblyModel assemblyModel : assemblyModelList) { //勾选 if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { @@ -657,10 +663,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { updateOldSn(organizeCode,assemblyModel.getAssemblySn(), userName, MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()); } //对于已勾选报废的子件,对于有零件号的项,产生移库(产线的材料库位->报废库(系统参数配置))。移库数量为报废时的明细数量; - doCreateMove(getMesWorkCenter(organizeCode, assemblyModel.getWorkCenterCode()),destLocate, assemblyModel,userName); + if(!StringUtils.isEmpty(assemblyModel.getAssemblyPartNo())){ + //移库 + doCreateMove(getMesWorkCenter(organizeCode, assemblyModel.getWorkCenterCode()),destLocate, assemblyModel,userName); + //报废 + doCreateScrap(assemblyModel,userName,responsibleParty,organizeCode); + } + //循环处理数据 if(!CollectionUtils.isEmpty(assemblyModel.getChildren())){ - doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate); + doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate,responsibleParty); } } else if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) { //装配解绑 @@ -853,6 +865,22 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { return moveRepository.insert(move); } + private void doCreateScrap(MesProductionAssemblyModel assemblyModel,String userName,String responsibleParty,String organizeCode) { + //新增一条数据到报废表中 + MesQmsScrap mesQmsScrap = new MesQmsScrap(); + mesQmsScrap.setOrganizeCode(organizeCode); + mesQmsScrap.setAsnNo(""); + mesQmsScrap.setSource("MES"); + mesQmsScrap.setRejectQty(assemblyModel.getScrapQty().intValue()); + mesQmsScrap.setPartNo(assemblyModel.getAssemblyPartNo()); + mesQmsScrap.setPartName(assemblyModel.getAssemblyPartName()); + mesQmsScrap.setDefectTypeName("拆解报废"); + mesQmsScrap.setReponsibilityId(responsibleParty); + mesQmsScrap.setNcJudger(userName); + ConvertBean.serviceModelInitialize(mesQmsScrap, userName); + mesQmsScrapRepository.insert(mesQmsScrap); + } + private void doCreateMove(MesWorkCenter mesWorkCenter, String destLocate, MesProductionAssemblyModel assemblyModel,String userName) { MesMove move = new MesMove(); move.setMatnr(assemblyModel.getAssemblyPartNo()); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 4afbc7e..54fb717 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -416,7 +416,4 @@ public class MesPcnExtConstWords { //发运解析条码最大长度 public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH"; - - //拆解目标库位 - public static final String DISASSEMBLY_DEST_LOCATE = "DISASSEMBLY_DEST_LOCATE"; }