From 95ec43db79d961fd8cf080ffab4743f5d2803eaa Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Fri, 6 Dec 2024 09:56:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=82=B9=E6=A3=80=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulejob/MesReportWorkByPreDayJob.java | 8 ++- .../serviceimpl/base/MesReworkTaskServiceImpl.java | 4 +- .../serviceimpl/busi/MesSpotCheckOrderService.java | 72 +++++++--------------- 3 files changed, 31 insertions(+), 53 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java index dcaaf69..24fd90d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportWorkByPreDayJob.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -57,8 +58,13 @@ public class MesReportWorkByPreDayJob extends BaseMesScheduleJob { @Override public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { - List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); + //List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); String userName = "REPORT_PRE_DAY_JOB"; + + List wmsJobParamModelList = new ArrayList<>(); + WmsJobParamModel wmsJobParamModel1 = new WmsJobParamModel(); + wmsJobParamModel1.setOrganizeCode("CK01"); + wmsJobParamModelList.add(wmsJobParamModel1); if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { //遍历系统参数指定的产线获取对应班次,找到早班的开始时间, 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 b0b09a2..57bcbe5 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 @@ -668,10 +668,12 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { return; } //报工调整 + // 2024-11-27 物料报解后AME或者质量如何快速把正确委件返回流?A变B流程怎么走?-物料拆解需要去掉自动负报工接口,待开发 MesWorkOrder mesWorkOrderDb = mesWorkOrderService.findMesWorkOrderList(requestModel.getOrganizeCode(), optional.get().getWorkOrderNo()); MesProductVersion productVersion = getProductVersion(mesWorkOrderDb); + /* mesWorkOrderDb.setNum(MesPcnExtConstWords.ONE); - mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName()); + mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName());*/ //移库 requestModel.setSn(produceSnDb.getProductSn()); doCreateMove(requestModel,locateNo,productVersion.getReceiveInventoryPoint(),mesWorkOrderDb.getErpWorkCenter(),mesWorkOrderDb.getPartNo()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index f662769..fe22d52 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -8,10 +8,8 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEquipmentSpotCheckModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSpotCheckOrderModel; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; -import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -30,6 +28,7 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.map.HashedMap; import org.apache.commons.collections4.ListUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +38,6 @@ import org.springframework.util.StringUtils; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @Description : @@ -87,16 +85,13 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { @Autowired private MesEquipmentRepository mesEquipmentRepository; - @Autowired - private MesEquipmentSpotCheckTagRepository mesEquipmentSpotCheckTagRepository; - @Override public ListPager querySpotCheckOrder(MesSpotCheckOrder spotCheckOrder, Pager pager) { DdlPackBean packBean = getDdlPackBean(spotCheckOrder); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); pager = PagerHelper.getPager(pager, spotCheckOrderRepository.findByHqlWhereCount(packBean)); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue(),CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"status","createDatetime"}, packBean); List resultList = spotCheckOrderRepository.findByHqlWherePage(packBean, pager); if (CollectionUtils.isEmpty(resultList)) { return new ListPager<>(resultList, pager); @@ -207,19 +202,16 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 checkSpotCheckOrder(model.getSpotCheckOrder()); - //点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成 - if (Stream.of(MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.FIRST_INSPECTION.getValue(),MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.END_INSPECTION.getValue()).collect(Collectors.toList()).contains(model.getSpotCheckOrder().getSpotCheckOrderType())) { - Optional orderPartOptional = model.getOrderPartList().stream().filter(k -> !StringUtils.isEmpty(k.getSn())).findFirst(); - if (!orderPartOptional.isPresent()) { - throw new ImppBusiException("未扫描条码,请扫描条码后再查询设备数据,请检查数据"); + //点检单类型为产品首检时 需要判断单据的条码是否都扫描完成 + if (model.getSpotCheckOrder().getSpotCheckOrderType() == MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.FIRST_PRODUCT_INSPECTION.getValue()) { + + List partNoList = model.getOrderPartList().stream().filter(k -> StringUtils.isEmpty(k.getSn())).map(k -> k.getPartNo()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(partNoList)) { + throw new ImppBusiException(String.format("剩余物料号【%s】对应的条码未扫描,请扫描完成后再完成质检", partNoList)); } } //根据设备代码获取EQUIP_ID MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); - - //是否允许开始点检 - allowSpotCheckOrder(model.getSpotCheckOrder(), org, mesEquipment.getEquipId()); - Map> setMap = null; //实际值地址数据Map Map> realMap = null; @@ -237,19 +229,13 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //获取设定值设备数据 List setEquipmentLogList = new ArrayList<>(); for (List tmp : ListUtils.partition(setEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { - List equipmentLogCollectList = mesEquipmentLogExtService.getEquipmentLogCollectList(org, mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp); - if(!CollectionUtils.isEmpty(equipmentLogCollectList)){ - setEquipmentLogList.addAll(equipmentLogCollectList); - } + setEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogCollectList(org, mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp)); } //设定值地址数据Map setMap = setEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId)); for (List tmp : ListUtils.partition(realEquipVariableIdList, MesCommonConstant.MAX_PAGER_SIZE)) { - List equipmentLogCollectList = mesEquipmentLogExtService.getEquipmentLogCollectList(org, mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp); - if(!CollectionUtils.isEmpty(equipmentLogCollectList)){ - realEquipmentLogList.addAll(equipmentLogCollectList); - } + realEquipmentLogList.addAll(mesEquipmentLogExtService.getEquipmentLogCollectList(org,mesEquipment.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), tmp)); } //实际值地址数据Map realMap = realEquipmentLogList.stream().collect(Collectors.groupingBy(MesEquipVariableCollectContext::getEquipVariableId)); @@ -311,11 +297,12 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 MesSpotCheckOrder spotCheckOrder = checkSpotCheckOrder(model.getSpotCheckOrder()); - //点检单类型为产品首检,产品末检时 需要判断单据的条码是否都扫描完成 - if (Stream.of(MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.FIRST_INSPECTION.getValue(),MesExtEnumUtil.EQUIPMENT_CHECK_ORDER_TYPE.END_INSPECTION.getValue()).collect(Collectors.toList()).contains(model.getSpotCheckOrder().getSpotCheckOrderType())) { - Optional orderPartOptional = model.getOrderPartList().stream().filter(k -> !StringUtils.isEmpty(k.getSn())).findFirst(); - if (!orderPartOptional.isPresent()) { - throw new ImppBusiException("未扫描条码,请扫描条码后再查询设备数据,请检查数据"); + //点检单类型为产品首检时 需要判断单据的条码是否都扫描完成 + if (model.getSpotCheckOrder().getSpotCheckOrderType() == MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.FIRST_PRODUCT_INSPECTION.getValue()) { + + List partNoList = model.getOrderPartList().stream().filter(k -> StringUtils.isEmpty(k.getSn())).map(k -> k.getPartNo()).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(partNoList)) { + throw new ImppBusiException(String.format("剩余物料号【%s】对应的条码未扫描,请扫描完成后再完成质检", partNoList)); } } model.getOrderPartList().forEach(k -> { @@ -605,13 +592,15 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { } private DdlPackBean getDdlPackBean(MesSpotCheckOrder spotCheckOrder) { - String createDateTime = TimeTool.pareDateToString(DateUtil.addDays(new Date(), -(Objects.isNull(spotCheckOrder.getDays()) ? MesPcnExtConstWords.SEVEN : spotCheckOrder.getDays()))); + + List statusList = new ArrayList<>(); + statusList.add(MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.CREATE.getValue()); + statusList.add(MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.COMPLETE.getValue()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(spotCheckOrder.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(spotCheckOrder.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringLikerPack(spotCheckOrder.getWorkCellCode(), "workCellCode", packBean); DdlPreparedPack.getStringLikerPack(spotCheckOrder.getSpotCheckOrderNo(), "spotCheckOrderNo", packBean); - DdlPreparedPack.getStringEqualPack(spotCheckOrder.getEquipCode(), "equipCode", packBean); - packBean.setWhereAppend(packBean.getWhereAppend() + String.format(" and (model.status = %s or (model.status = %s and model.createDatetime >= '%s'))", MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.CREATE.getValue(), MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.COMPLETE.getValue(), createDateTime)); + DdlPreparedPack.getInPackList(statusList, "status", packBean); return packBean; } @@ -675,24 +664,5 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { } } - private void allowSpotCheckOrder(MesSpotCheckOrder spotCheckOrder, String org, Integer equipId) { - if(Objects.isNull(spotCheckOrder) || StringUtils.isEmpty(spotCheckOrder.getSpotCheckCode()) || StringUtils.isEmpty(org)){ - return; - } - DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(spotCheckOrder.getSpotCheckCode(),"spotCheckCode",packBean); - MesEquipmentSpotCheckTag equipmentSpotCheckTag = mesEquipmentSpotCheckTagRepository.getByProperty(packBean); - if(Objects.isNull(equipmentSpotCheckTag)){ - return; - } - List equipmentLogCollectList = mesEquipmentLogExtService.getEquipmentLogCollectList(org, equipId, MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.TRUE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), Stream.of(equipmentSpotCheckTag.getEquipVariableId()).collect(Collectors.toList())); - if(CollectionUtils.isEmpty(equipmentLogCollectList)){ - throw new ImppBusiException(String.format("点检项目代码【%s】设备地址【%s】未查询到设备返回值,请检查数据!", spotCheckOrder.getSpotCheckCode(),equipmentSpotCheckTag.getTagName())); - } - if (!equipmentLogCollectList.iterator().next().getEquipVariableValue().equals(equipmentSpotCheckTag.getSuccessValue())) { - throw new ImppBusiException(String.format("点检项目代码【%s】设备地址【%s】设备返回值【%s】与理论成功值【%s】不匹配,请检查数据!", spotCheckOrder.getSpotCheckCode(),equipmentSpotCheckTag.getTagName(),equipmentLogCollectList.iterator().next().getEquipVariableValue(),equipmentSpotCheckTag.getSuccessValue())); - } - } - }