diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 8d323e4..c889115 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.shippingscan.IMesShippingScanStrategyService; 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.MesReworkTaskRequestModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingCheckModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; @@ -117,6 +118,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService @Autowired private MesShippingQueueRepository shippingQueueRDao; + @Autowired + private MesMoveRepository moveRepository; + @Override public MesSortShippingCheckModel doShippingOrderNoQuery(MesShippingOrderManagement shippingOrderManagement) { //校验发运单 @@ -580,7 +584,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } } //客供品移库 - customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail); + customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail, model.getMesPartShippingGroup()); detail.setSystemSyncStatus(CommonEnumUtil.FALSE); detail.setActualQty(MesPcnExtConstWords.ONE); @@ -730,9 +734,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService sortShippingModel.setMesWorkOrderList(mesWorkOrderExtService.getWorkOrderList(organizeCode, orderNoList)); sortShippingModel.setMesWorkOrderPartList(mesWorkOrderService.findMesWorkOrderPartByOrderNo(organizeCode, orderNoList)); sortShippingModel.setMesProductionRecordList(mesProductionRecordService.findProductionRecordList(organizeCode, orderNoList, MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue())); - sortShippingModel.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(shippingGroupCode, organizeCode,MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue())); sortShippingModel.setMesPartList(mesPartService.findMesPartByPartNo(sortShippingModel.getPartNoAllList(), organizeCode)); } + sortShippingModel.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(shippingGroupCode, organizeCode,MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue())); + return sortShippingModel; } @@ -744,7 +749,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService return produceSnByCustSnMap; } - private void customerSupplyMove(MesShippingOrderManagement orderManagement, String userInfo, MesSortShippingModel sortShippingModel, List shippingList, MesShippingOrderManagementDetail detail) { + private void customerSupplyMove(MesShippingOrderManagement orderManagement, String userInfo, MesSortShippingModel sortShippingModel, List shippingList, MesShippingOrderManagementDetail detail, MesPartShippingGroup mesPartShippingGroup) { if (!StringUtils.isEmpty(detail.getVisualOrderNo()) && !Objects.isNull(sortShippingModel.getMesWorkOrderMap()) && sortShippingModel.getMesWorkOrderMap().containsKey(detail.getVisualOrderNo())) { MesWorkOrder workOrder = sortShippingModel.getMesWorkOrderMap().get(detail.getVisualOrderNo()); //散件发运 @@ -767,6 +772,27 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } } } + } else if (Objects.equals(MesExtEnumUtil.PART_GROUP_MOVE_TYPE.PART_GROUP_MOVE_TYPE_10.getValue(), mesPartShippingGroup.getMoveType())) { + + MesWorkOrder workOrder = sortShippingModel.getMesWorkOrderMap().get(detail.getVisualOrderNo()); + //散件发运 + if (!Objects.isNull(sortShippingModel.getMesProductionRecordMap()) && sortShippingModel.getMesProductionRecordMap().containsKey(detail.getVisualOrderNo()) && !Objects.isNull(sortShippingModel.getMesWorkOrderPartMap()) && sortShippingModel.getMesWorkOrderPartMap().containsKey(detail.getVisualOrderNo())) { + //标记为总成不记录回传表 + detail.setSaveFlag(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + MesMoveRule moveRule = null; + MesPart itemPart = Objects.isNull(sortShippingModel.getMesPartMap()) || !sortShippingModel.getMesPartMap().containsKey(detail.getPartNo()) ? null : sortShippingModel.getMesPartMap().get(detail.getPartNo()); + if (Objects.isNull(itemPart) || StringUtil.isEmpty(itemPart.getEsd()) || Objects.isNull(sortShippingModel.getMesMoveRuleMap()) || !sortShippingModel.getMesMoveRuleMap().containsKey(itemPart.getEsd())) { + log.info("客供品移库零件【{}】维护的ESD属性未匹配到零件发运组【{}】中的移库规则", detail.getPartNo(), workOrder.getPartProdGroupCode()); + return; + } + moveRule = sortShippingModel.getMesMoveRuleMap().get(itemPart.getEsd()); + if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) { + doCreateReworkMove(orderManagement.getOrganizeCode(),userInfo,moveRule.getErpSrcLocateNo(),moveRule.getErpDestLocateNo(), workOrder.getWorkCenterCode(), detail.getPartNo(), detail.getActualQty(),detail.getBarcode()); + } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.NOT_HANDLER.getValue() == moveRule.getReportType()) { + log.info("客供品移库零件【{}】维护的移库规则不做处理", detail.getPartNo(), workOrder.getPartProdGroupCode()); + return; + } + } } } @@ -789,4 +815,24 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService ConvertBean.serviceModelInitialize(mesShippingQueue, userInfo); shippingQueueRDao.insert(mesShippingQueue); } + + private void doCreateReworkMove(String organizeCode,String userName, String srcLocate, String destLocate, String workCenterCode, String partNo, double qty, String sn) { + MesPartSap mesPartSap = mesPartService.getMesPartSapByPartNo(partNo, organizeCode); + MesMove move = new MesMove(); + move.setMatnr(mesPartSap.getPartNo()); + move.setOrganizeCode(organizeCode); + move.setFactoryCode(organizeCode); + move.setLgort(srcLocate); + move.setUmlgo(destLocate); + move.setPartInspectionId(0L); + move.setMenge(qty); + move.setMeins(mesPartSap.getUnit()); + move.setPostDate(TimeTool.getToday()); + move.setPostTime(TimeTool.getTimeShortWithColon()); + move.setMoveType(MesExtEnumUtil.MOVE_TYPE.RETURN_MOVE.getValue()); + move.setProductSn(sn); + move.setWorkCenter(workCenterCode); + ConvertBean.serviceModelInitialize(move, userName); + moveRepository.insert(move); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 15dff74..4522235 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -575,7 +575,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } } } - //查询物料信息 + //查询物料信息 DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart); MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogCutOrderPrintService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogCutOrderPrintService.java index 907f24d..360f404 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogCutOrderPrintService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogCutOrderPrintService.java @@ -1,43 +1,24 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderCutService; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; -import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesCutScheme; -import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutMaterial; import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; import cn.estsh.i3plus.pojo.mes.model.StationCustomDialogBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; -import cn.estsh.i3plus.pojo.mes.repository.MesCutSchemeRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; import com.alibaba.fastjson.JSONObject; -import com.google.common.base.Objects; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import javax.jws.Oneway; -import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; /** * @Description : 裁片工单弹框接口实现【裁片工单打印弹框】 @@ -52,13 +33,6 @@ public class MesFunctionDialogCutOrderPrintService extends BaseSwsService implem @Autowired private IShippingDispatchService shippingDispatchService; - @Autowired - private IMesWorkOrderCutService workOrderCutService; - @Autowired - private MesCutSchemeRepository cutSchemeRepository; - @Autowired - private MesPartRepository mesPartRepository; - @Override public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { @@ -92,60 +66,6 @@ public class MesFunctionDialogCutOrderPrintService extends BaseSwsService implem List mesWorkOrderCutFgDataContextList = productionDispatchContextStepService.getMesWorkOrderCutFgDataContext(reqBean); - // 如果当前存在成品列表则直接返回 - if (CollectionUtils.isEmpty(mesWorkOrderCutFgDataContextList)) { - - //获取上下文生产扫/读信息:加工单 - List equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean); - - String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); - - - DdlPackBean schemePackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, "cutCode", schemePackBean); - MesCutScheme mesCutScheme =cutSchemeRepository.getByProperty(schemePackBean); - // 如果是补片方案,则需要查询裁片工单原材料,而不是裁片方案原材料 - if (mesCutScheme != null && Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesCutScheme.getIsFree())) { - // 查裁片工单物料列表 - List workOrderCutMaterialList = workOrderCutService.queryCutOrderMaterialList(cutWorkOrderNo, reqBean.getOrganizeCode()); - if (CollectionUtils.isEmpty(workOrderCutMaterialList)) { - MesPcnException.throwFlowException("裁片工单为补片方案但未添加原材料信息"); - } - List partNoList = workOrderCutMaterialList.stream().map(MesWorkOrderCutMaterial::getPartNo).collect(Collectors.toList()); - // 查询物料信息 - DdlPackBean partBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); - DdlPreparedPack.getInPackList(partNoList, "partNo", partBean); - List mesPartList = mesPartRepository.findByHqlWhere(partBean); - Map> map = mesPartList.stream().collect(Collectors.groupingBy(MesPart::getPartNo)); - - mesWorkOrderCutFgDataContextList = new ArrayList<>(); - for (MesWorkOrderCutMaterial mesWorkOrderCutMaterial : workOrderCutMaterialList) { - MesWorkOrderCutDetailModel cutDetailModel = new MesWorkOrderCutDetailModel(); - BeanUtils.copyProperties(mesWorkOrderCutMaterial, cutDetailModel); - cutDetailModel.setPartName(map.get(mesWorkOrderCutMaterial.getPartNo()).get(0).getPartName()); - mesWorkOrderCutFgDataContextList.add(cutDetailModel); - } - } else { - - // 查询物料信息 - List mesCutSchemeFgs = workOrderCutService.queryCutSchemeFgList(cutWorkOrderNo, reqBean.getOrganizeCode()); - - mesWorkOrderCutFgDataContextList = new ArrayList<>(); - - for (MesCutSchemeFg mesWorkOrderCutMaterial : mesCutSchemeFgs) { - MesWorkOrderCutDetailModel cutDetailModel = new MesWorkOrderCutDetailModel(); - BeanUtils.copyProperties(mesWorkOrderCutMaterial, cutDetailModel); - mesWorkOrderCutFgDataContextList.add(cutDetailModel); - } - - } - - - - productionDispatchContextStepService.dispatchMesWorkOrderCutFgDataContext(reqBean, mesWorkOrderCutFgDataContextList); - - } - return CollectionUtils.isEmpty(mesWorkOrderCutFgDataContextList) ? dialogBean.unDialog() : dialogBean.obj(mesWorkOrderCutFgDataContextList); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java index a0bad04..3b2fce1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java @@ -224,10 +224,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { // 裁片方案成品配置 List mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode()); - // 裁片方案成品配置 - List mesWorkOrderCutDetails = workOrderCutService.queryMesWorkOrderCutDetailList(workOrderCut.getCutWorkOrderNo(), reqBean.getOrganizeCode()); - - // 校验裁片方案成品配置 if(!checkMesCutSchemeFgListValid(mesCutSchemeFgList, workOrderList, stepResult, cutWorkOrderNo, cutScheme.getCutCode()).isCompleted()) return stepResult; @@ -238,7 +234,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { Map partDataExtContext = (Map) stepResult.getObj(); - for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) { if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode())) return stepResult.isCompleted(false).msg(String.format("请检查裁片方案成品信息,零件号[%s]未在裁片方案[%s]成品配置信息中维护包装编码规则!", mesCutSchemeFg.getPartNo(), cutScheme.getCutCode())); @@ -260,7 +255,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { MesWorkOrderCutDetailModel workOrderCutDetailModel = new MesWorkOrderCutDetailModel(); BeanUtils.copyProperties(mesCutSchemeFg, workOrderCutDetailModel); if (Objects.equal(cutScheme.getIsFree(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())) { - Map> map = mesWorkOrderCutDetails.stream().collect(Collectors.groupingBy(MesWorkOrderCutDetail::getPartNo)); + Map> map = mesWorkOrderCutDetailList.stream().collect(Collectors.groupingBy(MesWorkOrderCutDetail::getPartNo)); workOrderCutDetailModel.setQty(map.get(mesCutSchemeFg.getPartNo()).get(0).getQty()); workOrderCutDetailModel.setPackageQty(map.get(mesCutSchemeFg.getPartNo()).get(0).getPackageQty()); }