diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 424f70c..1df69f9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -4,18 +4,22 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesInputDefectRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesPartInspectionInputModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesPartInspectionViewModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection; import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail; @@ -103,6 +107,10 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService @Autowired private MesProduceSnLogRepository produceSnLogRepository; + @Autowired + private MesWorkOrderRepository workOrderRepository; + @Autowired + private IMesWorkOrderExtService workOrderExtService; @Override public MesPartInspectionViewModel queryPartInspection(MesPartInspectionInputModel inputModel, String org) { @@ -118,7 +126,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService MesProduceSn produceSn = checkProduceSn(inputModel.getSn(), org); //获取NC-零件检测-单据 - partInspection = getPartInspection(inputModel, org); + partInspection = getPartInspection(produceSn,inputModel, org); //检查物料 part = checkPart(produceSn, org); @@ -214,6 +222,17 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService public void savePartInspection(MesPartInspectionInputModel model, String org) { MesProduceSn produceSn = getProduceSn(model.getSn(), org); + //武汉 会输入客户条码 + boolean isWorkOrderQcStatus=false; + if (!StringUtil.isEmpty(produceSn)){ + model.setCustSn(produceSn.getCustSn()); + model.setSn(produceSn.getProductSn()); + //排序产线 更新工单的 qcStatus + MesWorkCenter centerDb = prodOrgExtService.getWorkCenterDb(org, produceSn.getWorkCenterCode()); + if (!StringUtil.isEmpty(centerDb)){ + isWorkOrderQcStatus= centerDb.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(); + } + } if(!StringUtils.isEmpty(model.getPartInspection())){ model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); @@ -242,6 +261,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,produceSn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + ConvertBean.serviceModelUpdate(produceSn, AuthUtil.getSessionUser().getUserName()); + workOrderRepository.update(workOrder); + } + } } @@ -289,6 +317,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,produceSn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + ConvertBean.serviceModelUpdate(produceSn, AuthUtil.getSessionUser().getUserName()); + workOrderRepository.update(workOrder); + } + } } //移库 String srcLocate; @@ -349,6 +386,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,produceSn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + ConvertBean.serviceModelUpdate(produceSn, AuthUtil.getSessionUser().getUserName()); + workOrderRepository.update(workOrder); + } + } //查询条码所在库位 srcLocateNo = getDestLocateNo(model, org); } @@ -398,6 +444,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,produceSn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + ConvertBean.serviceModelUpdate(produceSn, AuthUtil.getSessionUser().getUserName()); + workOrderRepository.update(workOrder); + } + } } partInspectionDetailRepository.saveAll(resultDetailList); partInspectionDetailRepository.saveAll(model.getPartInspectionDetailList()); @@ -411,7 +466,12 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService } } - + public MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return null; + return workOrderRepository.getByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo}); + } private String getDestLocateNo(MesPartInspectionInputModel model, String org) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getStringEqualPack(model.getSn(), "productSn", packBean); @@ -434,11 +494,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService * @param org * @return */ - private MesPartInspection getPartInspection(MesPartInspectionInputModel inputModel, String org) { + private MesPartInspection getPartInspection(MesProduceSn produceSn,MesPartInspectionInputModel inputModel, String org) { //根据条码找最近一条单据 DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(inputModel.getSn(), "sn", packBean); + DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), "sn", packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); MesPartInspection partInspection = partInspectionRepository.getByProperty(packBean); @@ -563,7 +623,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService //若不存在则提示条码不存在 if (StringUtils.isEmpty(produceSn)) { - throw new ImppBusiException(String.format("【%s】此条码不存在,请检查数据", serialNumber)); + //再查一下排序查产线 + produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(org, serialNumber, false); + if (StringUtils.isEmpty(produceSn)) { + throw new ImppBusiException(String.format("【%s】此条码不存在,请检查数据", serialNumber)); + } } //根据条码状态判断 是不是已下线条码 @@ -582,7 +646,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getStringEqualPack(serialNumber, "productSn", packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); - return produceSnRepository.getByProperty(packBean); + MesProduceSn produceSn =produceSnRepository.getByProperty(packBean); + if (StringUtil.isEmpty(produceSn)){ + produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(org, serialNumber, false); + } + return produceSn; } private MesProduceSn checkProduceSn(MesProduceSn produceSn, String serialNumber) { @@ -619,6 +687,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService partInspection.setInspectionStatus(inspectionStatus); partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue()); partInspection.setSn(model.getSn()); + partInspection.setCustSn(StringUtil.isEmpty(model.getCustSn())?"":model.getCustSn()); partInspection.setLotNo(model.getLotNo()); partInspection.setQty(model.getQty().intValue()); partInspection.setWorkCenterCode(model.getWorkCenterCode()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index 7434da2..2edbb69 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNcProcessingService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesNcProcessingDao; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingModel; @@ -105,6 +106,12 @@ public class MesNcProcessingService implements IMesNcProcessingService { @Autowired private IMesProduceSnExtService produceSnExtService; + + @Autowired + private IMesWorkOrderExtService workOrderExtService; + + @Autowired + private MesWorkOrderRepository workOrderRepository; @Override public ListPager queryPartInspectionByPager(MesPartInspection partInspection, Pager pager) { @@ -327,6 +334,17 @@ public class MesNcProcessingService implements IMesNcProcessingService { assert model.getPartInspection() != null; model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); MesProduceSn sn = getProduceSn(model.getSn(), org); + //武汉 会输入客户条码 todo 更新工单对应qcStatus + boolean isWorkOrderQcStatus=false; + if (!StringUtil.isEmpty(sn)){ + model.setCustSn(sn.getCustSn()); + model.setSn(sn.getProductSn()); + //排序产线 更新工单的 qcStatus + MesWorkCenter centerDb = prodOrgExtService.getWorkCenterDb(org, sn.getWorkCenterCode()); + if (!StringUtil.isEmpty(centerDb)){ + isWorkOrderQcStatus= centerDb.getCenterType() == MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(); + } + } String source = configService.getCfgValue(org, "LGORT"); if (!StringUtils.isEmpty(model.getProductVersion())) { @@ -350,6 +368,15 @@ public class MesNcProcessingService implements IMesNcProcessingService { sn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS_TO_QUALIFIED.getValue()); ConvertBean.serviceModelUpdate(sn, model.getUserName()); produceSnExtService.update(sn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,sn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS_TO_QUALIFIED.getValue()); + ConvertBean.serviceModelUpdate(sn, model.getUserName()); + workOrderRepository.update(workOrder); + } + } } //更新检验单 @@ -427,6 +454,15 @@ public class MesNcProcessingService implements IMesNcProcessingService { sn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()); ConvertBean.serviceModelUpdate(sn, model.getUserName()); produceSnExtService.update(sn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,sn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()); + ConvertBean.serviceModelUpdate(sn, model.getUserName()); + workOrderRepository.update(workOrder); + } + } } //更新检验单 @@ -459,6 +495,15 @@ public class MesNcProcessingService implements IMesNcProcessingService { sn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); ConvertBean.serviceModelUpdate(sn, model.getUserName()); produceSnExtService.update(sn); + //更新工单对应qcStatus + if(isWorkOrderQcStatus){ + MesWorkOrder workOrder = getWorkOrder(org,sn.getWorkOrderNo()); + if (!StringUtil.isEmpty(workOrder)){ + workOrder.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + ConvertBean.serviceModelUpdate(sn, model.getUserName()); + workOrderRepository.update(workOrder); + } + } } //更新检验单 @@ -479,7 +524,12 @@ public class MesNcProcessingService implements IMesNcProcessingService { } } - + public MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return null; + return workOrderRepository.getByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo}); + } private int disassembleType(MesNcProcessingInputModel model, String org, MesProduceSn sn) { if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue() == model.getPartInspection().getSourceType()) { if (Objects.isNull(sn)) { @@ -521,7 +571,11 @@ public class MesNcProcessingService implements IMesNcProcessingService { DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); DdlPreparedPack.getStringEqualPack(serialNumber, "productSn", packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); - return produceSnRepository.getByProperty(packBean); + MesProduceSn produceSn =produceSnRepository.getByProperty(packBean); + if (StringUtil.isEmpty(produceSn)){ + produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(org, serialNumber, false); + } + return produceSn; } private MesProduceSn checkProduceSn(MesProduceSn produceSn, String serialNumber) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkCenterService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkCenterService.java index 04f0027..5d890a4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkCenterService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkCenterService.java @@ -6,10 +6,12 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,6 +63,9 @@ public class MesWorkCenterService implements IMesWorkCenterService { private DdlPackBean getDdlPackBean(MesWorkCenter workCenter) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCenter.getOrganizeCode()); + if (!StringUtil.isEmpty(workCenter.getCenterType()) && 0 != workCenter.getCenterType()) { + DdlPreparedPack.getNumEqualPack(workCenter.getCenterType(), "centerType", packBean); + } DdlPreparedPack.getStringLikerPack(workCenter.getWorkCenterCode(), "workCenterCode", packBean); return packBean; } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesNcProcessingInputModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesNcProcessingInputModel.java index 390d34b..b5dcd83 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesNcProcessingInputModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesNcProcessingInputModel.java @@ -26,6 +26,9 @@ public class MesNcProcessingInputModel { @ApiParam("条码") private String sn; + @ApiParam("客户条码") + private String custSn; + @ApiParam("责任人") private String onlyPerson; diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesPartInspectionInputModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesPartInspectionInputModel.java index f35fadc..afb6d47 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesPartInspectionInputModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesPartInspectionInputModel.java @@ -42,6 +42,9 @@ public class MesPartInspectionInputModel { @ApiParam("条码") private String sn; + @ApiParam("客户条码") + private String custSn; + @ApiParam("正反面") private Integer frontBack;