diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java index 3712525..14eb0b7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java @@ -61,8 +61,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { //【排序线】获取生产工单装配件清单 List workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext, false); - // 搜集待装配的数据 - workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0)).collect(Collectors.toList()); + // 搜集待装配或者解绑的数据 + workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> (null != o && + (o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 || o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0))).collect(Collectors.toList()); if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null; @@ -275,7 +276,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService { //根据生产工单装配件清单ID分组 private Map> groupProductionAssembly(List productionAssemblyList) { - return CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) >= 0)).collect(Collectors.groupingBy(MesProductionAssembly::getSourceId)); + return CollectionUtils.isEmpty(productionAssemblyList) ? null : + productionAssemblyList.stream().filter(o -> (null != o && (o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 || + o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_40.getValue()) == 0))).collect(Collectors.groupingBy(MesProductionAssembly::getSourceId)); } //根据装配件清单ID获取装配件绑定记录 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java index ff85563..8ea8aec 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java @@ -257,8 +257,9 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { @Override public MesPullingOrderPartInfo doMesPullingOrderInfoJisScan(MesPullingOrderPartInfo mesPullingOrderInfo, String userName) { - - MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository.getById(mesPullingOrderInfo.getId()); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPullingOrderInfo.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesPullingOrderInfo.getId(), MesPcnExtConstWords.ID, packBean); + MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository.getByProperty(packBean); if (!StringUtil.isEmpty(partInfo)) { //查拉动单明细对应的拉动组规则 DdlPackBean packBeanDetail = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode()); @@ -268,6 +269,12 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { if (StringUtil.isEmpty(mesPartPullDetail)) { MesPcnException.throwMesBusiException("工单【%s】拉动组数据为空", mesPullingOrderInfo.getWorkOrderNo()); } + //跳过码 + if (mesPullingOrderInfo.getProductSn().equals(configService.getCfgValue(partInfo.getOrganizeCode(), MesPcnExtConstWords.JIS_SKIP_CODE))) { + //修改为已跳过 + partInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.SKIP.getValue()); + return updatePullingOrderPartInfo(userName, partInfo); + } //校验规则 if (checkRule(mesPullingOrderInfo, mesPartPullDetail)) { //校验成功修改颜色为黄色2 @@ -314,22 +321,26 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService { if (!StringUtil.isEmpty(partInfo)) { //修改为已送料 partInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.SENTED.getValue()); - partInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.GREEN.getCode()); - ConvertBean.serviceModelUpdate(partInfo, userName); - mesPullingOrderPartInfoRepository.update(partInfo); - //拉动单改为已扫描 - DdlPackBean packBean = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(partInfo.getPullingOrderNo(), "pullingOrderNo", packBean); - - MesPullingOrderInfo pullingOrderInfo = mesPullingOrderInfoRepository.getByProperty(packBean); - if (!StringUtil.isEmpty(pullingOrderInfo)) { - pullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue()); - ConvertBean.serviceModelUpdate(pullingOrderInfo, userName); - mesPullingOrderInfoRepository.update(pullingOrderInfo); - } - result.add(partInfo); + result.add(updatePullingOrderPartInfo(userName, partInfo)); } } return result; } + + private MesPullingOrderPartInfo updatePullingOrderPartInfo(String userName, MesPullingOrderPartInfo partInfo) { + partInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.GREEN.getCode()); + ConvertBean.serviceModelUpdate(partInfo, userName); + mesPullingOrderPartInfoRepository.update(partInfo); + //拉动单改为已扫描 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(partInfo.getPullingOrderNo(), "pullingOrderNo", packBean); + + MesPullingOrderInfo pullingOrderInfo = mesPullingOrderInfoRepository.getByProperty(packBean); + if (!StringUtil.isEmpty(pullingOrderInfo)) { + pullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue()); + ConvertBean.serviceModelUpdate(pullingOrderInfo, userName); + mesPullingOrderInfoRepository.update(pullingOrderInfo); + } + return partInfo; + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEvcRuleMatchBackValueService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEvcRuleMatchBackValueService.java index 336d51c..aac343c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEvcRuleMatchBackValueService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEvcRuleMatchBackValueService.java @@ -49,6 +49,8 @@ public class MesEvcRuleMatchBackValueService implements IMesEquipVariableCfgRule //不过滤[)>字符 private MesEquipVariableCollectContext filterSpecialChar(MesEquipVariableCollectContext equipVariableCollectContext) { + equipVariableCollectContext.trimValue(); + String realEquipVariableValue = equipVariableCollectContext.getEquipVariableValue(); String equipVariableValue = StringUtils.removePattern(equipVariableCollectContext.getEquipVariableValue(), "[^A-Z^a-z0-9_^\\s^\\-^/^\\.^\\[^\\)^\\>^\\:]"); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java index b5cb098..3b9ca5c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java @@ -144,7 +144,7 @@ public class MesProductionSortModuleService extends BaseModuleService { if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()) isComplete = true; else if (!isComplete) color = MesExtEnumUtil.COLOR.WHITE.getValue(); //跳号标黄色 - if (index <= queueOrderList.size() && checkJumpNumber(queueOrderList.get(index).getWorkOrderSeq(), mesQueueOrder.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); + if (index < queueOrderList.size() && checkJumpNumber(queueOrderList.get(index).getWorkOrderSeq(), mesQueueOrder.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); queueOrderModel.setColor(color); queueOrderModels.add(queueOrderModel); index++; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveSortStepService.java new file mode 100644 index 0000000..e070008 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveSortStepService.java @@ -0,0 +1,173 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import io.swagger.annotations.ApiParam; +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 java.util.*; +import java.util.stream.Collectors; + +/** + * @Description : 保存装配记录工步 【排序】 + * @Author : wangjie + **/ +@Slf4j +@Service("mesAssemblySaveSortStepService") +public class MesAssemblySaveSortStepService extends BaseStepService { + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private MesProductionAssemblyRepository productionAssemblyRepository; + + @Autowired + private MesWorkOrderAssemblyRepository workOrderAssemblyRepository; + + @Autowired + private MesProductionAssemblyUniqueRepository productionAssemblyUniqueRepository; + + @Autowired + private SnowflakeIdMaker snowflakeIdMaker; + + @Autowired + private IMesProduceSnExtService produceSnExtService; + + public List saveSortProductionAssembly(StationRequestBean reqBean, List prodRuleContextList, List productionPsOutContextList, MesScanMonitorContext scanMonitorContext) { + + Map ppMap = CollectionUtils.isEmpty(productionPsOutContextList) ? null : productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsOutContext::getForeignKey, o -> o)); + + Long mouldRecordId = null != scanMonitorContext ? scanMonitorContext.getMouldRecordId() : null; + + List productSnIdList = new ArrayList<>(); + + //获取模具号 + String mouldNo = getMouldNo(reqBean, prodRuleContextList); + + for (MesProdRuleContext prodRuleContext : prodRuleContextList) { + + if (null == prodRuleContext) continue; + + if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue; + + //显示装配件的时候会进行赋值, 后续匹配的时候已经有值 + if (StringUtils.isEmpty(prodRuleContext.getProductionRecordId())) prodRuleContext.setProductionRecordId(snowflakeIdMaker.nextId()); + if (StringUtils.isEmpty(prodRuleContext.getMouldNo())) prodRuleContext.setMouldNo(mouldNo); + + MesProductionPsOutContext productionPsOutContext = CollectionUtils.isEmpty(ppMap) ? null : ppMap.get(prodRuleContext.getForeignKey()); + + List productionAssemblySortContextList = prodRuleContext.getSortAssemblyDataContext(); + + for (MesProductionAssemblySortContext productionAssemblySortContext : productionAssemblySortContextList) { + + if (null == productionAssemblySortContext) continue; + + if (productionAssemblySortContext.getIsSaveDb().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue; + + if (productionAssemblySortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0) continue; + + if (StringUtils.isEmpty(productionAssemblySortContext.getId())) { + MesProductionAssembly productionAssembly = new MesProductionAssembly(); + BeanUtils.copyProperties(productionAssemblySortContext, productionAssembly); + productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + if (null != productionPsOutContext) { + productionAssembly.setSerialNumber(productionPsOutContext.getSerialNumber()); + productionAssembly.setCustSn(productionPsOutContext.getCustSn()); + } + productionAssembly.setMouldRecordId(mouldRecordId); + productionAssembly.setProductionRecordId(prodRuleContext.getProductionRecordId()); + productionAssembly.setMouldNo(mouldNo); + productionAssembly.setFid(UUID.randomUUID().toString()); + productionAssembly.setOrganizeCode(reqBean.getOrganizeCode()); + ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo()); + productionAssembly.setRemark(getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), null)); + productionAssembly = productionAssemblyRepository.insert(productionAssembly); + + productionAssemblySortContext.setId(productionAssembly.getId()); + + } else { + + productionAssemblyRepository.updateByProperties( + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, + new Object[]{productionAssemblySortContext.getId(), reqBean.getOrganizeCode()}, + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, + MesPcnExtConstWords.ASSEMBLY_STATUS, MesPcnExtConstWords.ASSEMBLY_SN, MesPcnExtConstWords.IS_SKIP, MesPcnExtConstWords.MOULD_NO, + MesPcnExtConstWords.MOULD_RECORD_ID, MesPcnExtConstWords.PRODUCTION_RECORD_ID, MesPcnExtConstWords.REMARK}, + new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), + productionAssemblySortContext.getAssemblyStatus(), productionAssemblySortContext.getAssemblySn(), productionAssemblySortContext.getIsSkip(), mouldNo, + mouldRecordId, prodRuleContext.getProductionRecordId(), getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getPaRemark())}); + + } + + saveWorkOrderAssembly(reqBean, productionAssemblySortContext); + + productionAssemblySortContext.isSaveDb(); + + saveProductionAssemblyUnique(reqBean, productionAssemblySortContext); + + if (!StringUtils.isEmpty(productionAssemblySortContext.getProductSnId())) productSnIdList.add(productionAssemblySortContext.getProductSnId()); + + } + + } + + if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList); + + return prodRuleContextList; + + } + + private String getMouldNo(StationRequestBean reqBean, List prodRuleContextList) { + Optional optional = prodRuleContextList.stream().filter(o -> null != o && !StringUtils.isEmpty(o.getMouldNo())).findFirst(); + if (null != optional && optional.isPresent()) return optional.get().getMouldNo(); + MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean); + return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null; + } + + private String getRemark(String curWorkCellCode, String workCellCode, String remark) { + if (curWorkCellCode.equals(workCellCode)) return remark; + StringJoiner sj = new StringJoiner(MesPcnExtConstWords.SEMICOLON); + if (!StringUtils.isEmpty(remark)) sj.add(remark); + return sj.add(String.format("装配工位[%s]", curWorkCellCode)).toString(); + } + + private void saveProductionAssemblyUnique(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) { + if (productionAssemblySortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssemblySortContext.getAssemblySn())) return; + MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique(); + BeanUtils.copyProperties(productionAssemblySortContext, productionAssemblyUnique, MesPcnExtConstWords.ID); + productionAssemblyUnique.setPid(productionAssemblySortContext.getId()); + productionAssemblyUnique.setOrganizeCode(reqBean.getOrganizeCode()); + ConvertBean.serviceModelInitialize(productionAssemblyUnique, reqBean.getUserInfo()); + productionAssemblyUniqueRepository.insert(productionAssemblyUnique); + } + + private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) { + workOrderAssemblyRepository.updateByProperties( + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, + new Object[]{productionAssemblySortContext.getSourceId(), reqBean.getOrganizeCode()}, + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS, MesPcnExtConstWords.REMARK}, + new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblySortContext.getAssemblyStatus(), + getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getWoaRemark())}); + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java index b0bf149..e0dd654 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java @@ -8,18 +8,15 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -35,7 +32,7 @@ import java.util.UUID; import java.util.stream.Collectors; /** - * @Description : 保存装配记录工步 + * @Description : 保存装配记录工步 【非排序】 * @Author : wangjie **/ @Slf4j @@ -55,9 +52,6 @@ public class MesAssemblySaveStepService extends BaseStepService { private MesProductionAssemblyRepository productionAssemblyRepository; @Autowired - private MesWorkOrderAssemblyRepository workOrderAssemblyRepository; - - @Autowired private MesProductionAssemblyUniqueRepository productionAssemblyUniqueRepository; @Autowired @@ -89,16 +83,17 @@ public class MesAssemblySaveStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!"); + MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true); + //从上下文中取出工位当前要使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); Map ppMap = CollectionUtils.isEmpty(productionPsOutContextList) ? null : productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsOutContext::getForeignKey, o -> o)); List productSnIdList = new ArrayList<>(); //保存装配记录 - prodRuleContextList.stream().filter(o -> null != o).forEach(o -> saveProductionAssemblyData(reqBean, resultBean, stepResult, productSnIdList, productionProcessContext, o, ppMap, cellEquipContext, workCenter)); + prodRuleContextList.stream().filter(o -> null != o).forEach(o -> saveProductionAssemblyData(reqBean, productSnIdList, productionProcessContext, o, ppMap, cellEquipContext, scanMonitorContext)); if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList); @@ -106,26 +101,25 @@ public class MesAssemblySaveStepService extends BaseStepService { } - private void saveProductionAssemblyData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List productSnIdList, MesProductionProcessContext productionProcessContext, - MesProdRuleContext prodRuleContext, Map ppMap, MesCellEquipContext cellEquipContext, MesWorkCenter workCenter) { + private void saveProductionAssemblyData(StationRequestBean reqBean, List productSnIdList, MesProductionProcessContext productionProcessContext, MesProdRuleContext prodRuleContext, + Map ppMap, MesCellEquipContext cellEquipContext, MesScanMonitorContext scanMonitorContext) { if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) return; - List productionAssemblyContextList = prodRuleContext.getAssemblyDataContext(workCenter); + List productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext(); MesProductionPsOutContext productionPsOutContext = CollectionUtils.isEmpty(ppMap) ? null : ppMap.get(prodRuleContext.getForeignKey()); - for (MesProductionAssemblyContext productionAssemblyContext : productionAssemblyContextList) { + for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) { - if (null == productionAssemblyContext) continue; + if (null == productionAssemblyNosortContext) continue; MesProductionAssembly productionAssembly = new MesProductionAssembly(); - BeanUtils.copyProperties(productionAssemblyContext, productionAssembly); + BeanUtils.copyProperties(productionAssemblyNosortContext, productionAssembly); - productionAssembly.setDataSource(workCenter.getCenterType()); productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); + productionAssembly.setAreaCode(reqBean.getAreaCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setProcessCode(reqBean.getProcessCode()); @@ -147,46 +141,31 @@ public class MesAssemblySaveStepService extends BaseStepService { productionAssembly.setCustSn(productionPsOutContext.getCustSn()); } - MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true); if (null != scanMonitorContext) productionAssembly.setMouldRecordId(scanMonitorContext.getMouldRecordId()); + productionAssembly.setFid(UUID.randomUUID().toString()); productionAssembly.setOrganizeCode(reqBean.getOrganizeCode()); + ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo()); - if (StringUtils.isEmpty(productionAssembly.getId())) { - ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo()); - productionAssembly.setFid(UUID.randomUUID().toString()); - productionAssembly = productionAssemblyRepository.insert(productionAssembly); - } else { - ConvertBean.serviceModelUpdate(productionAssembly, reqBean.getUserInfo()); - productionAssemblyRepository.update(productionAssembly); - } - - if (productionAssemblyContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) == 0) saveProductionAssemblyUnique(productionAssembly); + productionAssembly = productionAssemblyRepository.insert(productionAssembly); - if (!StringUtils.isEmpty(productionAssemblyContext.getProductSnId())) productSnIdList.add(productionAssemblyContext.getProductSnId()); + saveProductionAssemblyUnique(productionAssembly); - if (productionAssemblyContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) - productionCustomContextStepService.dispatchRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyContext); + if (!StringUtils.isEmpty(productionAssemblyNosortContext.getProductSnId())) productSnIdList.add(productionAssemblyNosortContext.getProductSnId()); - if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()) == 0) saveWorkOrderAssembly(reqBean, productionAssemblyContext); + if (productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyNosortContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) + productionCustomContextStepService.dispatchRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext); } } private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) { - if (productionAssembly.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0) return; + if (productionAssembly.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssembly.getAssemblySn())) return; MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique(); BeanUtils.copyProperties(productionAssembly, productionAssemblyUnique, MesPcnExtConstWords.ID); productionAssemblyUnique.setPid(productionAssembly.getId()); productionAssemblyUniqueRepository.insert(productionAssemblyUnique); } - private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblyContext productionAssemblyContext) { - workOrderAssemblyRepository.updateByProperties( - new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, - new Object[]{productionAssemblyContext.getSourceId(), reqBean.getOrganizeCode()}, - new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS}, - new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblyContext.getAssemblyStatus()}); - } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java index 1f04584..d6ae0e1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; @@ -16,6 +17,7 @@ import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -50,6 +52,9 @@ public class MesAssemblyShowSortStepService extends BaseStepService { @Autowired private IFsmCommonService fsmCommonService; + @Autowired + public IMesAssemblyExtService assemblyExtService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -72,9 +77,6 @@ public class MesAssemblyShowSortStepService extends BaseStepService { //从上下文中取出生产线对象 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - //加工规则数据信息集合 - List prodRuleContextList = new ArrayList<>(); - //获取上下文产出零件数据信息集合 List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); @@ -84,10 +86,20 @@ public class MesAssemblyShowSortStepService extends BaseStepService { //获取上下文产出零件条码信息集合 List productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean); + //获取上下文工位扫描监控信息 + MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true); + + //加工规则数据信息集合 + List prodRuleContextList = new ArrayList<>(); + //封装排序加工规则 doHandleProdRuleData(reqBean, resultBean, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList); if (!CollectionUtils.isEmpty(prodRuleContextList)) { + + //无需扫描的需要先写库, 使用isSaveDb=1 进行标记 + prodRuleContextList = ((MesAssemblySaveSortStepService) SpringContextsUtil.getBean("mesAssemblySaveSortStepService")).saveSortProductionAssembly(reqBean, prodRuleContextList, productionPsOutContextList, scanMonitorContext); + //保存上下文产品加工规则信息集合 productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList); //保存上下文产出零件信息 @@ -106,6 +118,7 @@ public class MesAssemblyShowSortStepService extends BaseStepService { } + //获取装配件信息(子类进行重写) public MesProdRuleContext getProdRuleSortContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesProductionPsInContext productionPsInContext) { MesProdRuleContext prodRuleContext = new MesProdRuleContext( reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()).isCheckBindSeq(productionProcessContext.getWorkCell().getIsSeqScan()) @@ -157,6 +170,7 @@ public class MesAssemblyShowSortStepService extends BaseStepService { productionPartContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey()); productionPsOutContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.getForeignKey()); + //获取装配件信息 prodRuleContextList.add(getProdRuleSortContext(reqBean, productionProcessContext, cellEquipContext, productionPsInContext)); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java index e3ef36c..94c39c5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java @@ -36,7 +36,7 @@ public class MesProductionDataSaveStepService extends BaseStepService { //保存零件条码信息工步 ((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).executeInState(reqBean); - //保存工位队列信息工步 + //保存工位队列信息工步 【排序】 if (isSort) ((IStepService) SpringContextsUtil.getBean("mesWorkOrderQueueSaveStepService")).executeInState(reqBean); //加工异常处理工步 @@ -45,8 +45,8 @@ public class MesProductionDataSaveStepService extends BaseStepService { //生成加工记录工步 ((IStepService) SpringContextsUtil.getBean("mesProductionRecordGenerateStepService")).executeInState(reqBean); - //保存装配记录工步 - ((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).executeInState(reqBean); + //保存装配记录工步 【非排序】 + if (!isSort)((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).executeInState(reqBean); //保存工单信息工步 ((IStepService) SpringContextsUtil.getBean("mesWorkOrderSaveStepService")).executeInState(reqBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java index 1abe33c..3d4212e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java @@ -83,10 +83,6 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!"); - //获取上下文(头道)模具号 - MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getFirstMouldNoContext(reqBean); - if (null == equipVariableCollectContext) equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean); - //从上下文中取出工位当前要使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); @@ -99,8 +95,10 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); MesWorkCell workCell = productionProcessContext.getWorkCell(); + //获取上下文(头道)模具号 + String mouldNo = getMouldNo(reqBean, workCenter, prodRuleContextList); + //生成加工记录 - String mouldNo = null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null; productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProductionRecordData(reqBean, workCenter, mouldNo, prodRuleContextList, productionProcessContext, o, prMap, cellEquipContext, CollectionUtils.isEmpty(psiMap) ? null : psiMap.get(o.getForeignKey()))); //保存上下文产品加工规则信息集合 @@ -176,10 +174,15 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { productionRecord.setFid(UUID.randomUUID().toString()); productionRecord.setOneMouldMoreId(UUID.randomUUID().toString()); + //排序可能会先赋加工记录ID, 装配件记录前置工步写入时需要写加工记录ID + if (!StringUtils.isEmpty(prodRuleContext.getProductionRecordId())) productionRecord.setId(prodRuleContext.getProductionRecordId()); + productionRecord = productionRecordRepository.insert(productionRecord); - if (null != prodRuleContext) prodRuleContextList.stream().filter(o -> (null != o && - !StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(productionPsOutContext.getForeignKey()) == 0)).findFirst().get().productionRecordId(productionRecord.getId()).mouldNo(mouldNo); + //判断加工规则有没有赋值加工记录ID或者模具号 + if (null != prodRuleContext && (StringUtils.isEmpty(prodRuleContext.getProductionRecordId()) || StringUtils.isEmpty(prodRuleContext.getMouldNo()))) { + prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(productionPsOutContext.getForeignKey()) == 0)).findFirst().get().productionRecordId(productionRecord.getId()).mouldNo(mouldNo); + } } @@ -200,4 +203,19 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { return (null != optional && optional.isPresent()) ? true : false; } + //获取模具号 + private String getMouldNo(StationRequestBean reqBean, MesWorkCenter workCenter, List prodRuleContextList) { + //非排序 先获取头道模具号, 没有再获取模具号 + if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()) == 0) { + MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getFirstMouldNoContext(reqBean); + if (null == equipVariableCollectContext) equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean); + return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null; + } + //排序, 加工规则上下文中可能已经存了模具号, 装配件前置绑定的时候会写模具号 + Optional optional = prodRuleContextList.stream().filter(o -> null != o && !StringUtils.isEmpty(o.getMouldNo())).findFirst(); + if (null != optional && optional.isPresent()) return optional.get().getMouldNo(); + MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean); + return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java index e71c53c..7cf80ce 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java @@ -279,7 +279,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionAssembly.setIsSkip(CommonEnumUtil.FALSE); - productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); + productionAssembly.setAreaCode(reqBean.getAreaCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setProcessCode(reqBean.getProcessCode()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutSaveStepService.java index c24f229..d969a13 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutSaveStepService.java @@ -65,7 +65,7 @@ public class MesWorkOrderCutSaveStepService extends BaseStepService { productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionAssembly.setIsSkip(CommonEnumUtil.FALSE); - productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); + productionAssembly.setAreaCode(reqBean.getAreaCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setProcessCode(reqBean.getProcessCode()); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java index 4fc95c9..865971c 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java @@ -131,6 +131,11 @@ public class MesEquipVariableCollectContext implements Serializable { return this; } + public MesEquipVariableCollectContext trimValue() { + if (!StringUtils.isEmpty(this.equipVariableValue)) this.equipVariableValue = this.equipVariableValue.trim(); + return this; + } + public MesEquipVariableCollectContext replaceValue(String realEquipVariableValue, String equipVariableValue) { this.realEquipVariableValue = realEquipVariableValue; this.equipVariableValue = equipVariableValue; diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java index cab11d6..5f28651 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java @@ -47,6 +47,9 @@ public class MesProductionAssemblyContext implements Serializable { @ApiParam("自制件ID") public Long productSnId; + @ApiParam("数据来源") + public Integer dataSource; + @ApiParam("来源ID") public Long sourceId; diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java index 3479dc2..f77b537 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java @@ -50,6 +50,8 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon BeanUtils.copyProperties(prodRuleContext, this); + this.dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue(); + this.sourceId = assemblyNosortCfg.getId(); this.partNo = prodRuleContext.getOutPartNo(); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java index c3c46d1..b7b7732 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java @@ -109,6 +109,18 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte @ApiParam(value = "装配件记录表ID") public Long id; + @ApiParam("开模记录ID") + private Long mouldRecordId; + + @ApiParam("加工记录ID") + private Long productionRecordId; + + @ApiParam(value = "工单装配件信息备注") + public String woaRemark; + + @ApiParam(value = "装配件记录信息备注") + public String paRemark; + @ApiParam(value = "装配件记录表创建时间") public String createDatetime; @@ -118,10 +130,16 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte @ApiParam(name = "是否顺序扫描") private Integer isSeqScan; + @ApiParam(name = "是否保存到DB") + private Integer isSaveDb = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); + public MesProductionAssemblySortContext() {} + //前道工位 public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly) { + this.dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(); + if (null != workOrderAssembly) { BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); this.sourceId = workOrderAssembly.getId(); @@ -130,7 +148,8 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO; - if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); + if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0 || + this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); @@ -138,17 +157,22 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte return this; } + //末道工位 public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly, MesProductionAssembly productionAssembly, MesWorkCell workCell) { if (null != workOrderAssembly) { BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); this.sourceId = workOrderAssembly.getId(); + this.woaRemark = workOrderAssembly.getRemark(); } if (null != productionAssembly) { this.id = productionAssembly.getId(); + this.mouldRecordId = productionAssembly.getMouldRecordId(); + this.productionRecordId = productionAssembly.getProductionRecordId(); this.createDatetime = productionAssembly.getCreateDatetime(); this.createUser = productionAssembly.getCreateUser(); + this.paRemark = productionAssembly.getRemark(); } if (null != workCell && !StringUtils.isEmpty(workCell.getIsSeqScan())) this.isSeqScan = workCell.getIsSeqScan(); @@ -156,7 +180,8 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO; - if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); + if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0 || + this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); @@ -203,6 +228,11 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte return this; } + public MesProductionAssemblySortContext isSaveDb() { + this.isSaveDb = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + return this; + } + public MesProductionAssemblySortContext copy(MesProductionAssembly productionAssembly) { if (null != productionAssembly) BeanUtils.copyProperties(productionAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); 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 729806d..1b8d4fb 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 @@ -139,6 +139,8 @@ public class MesPcnExtConstWords { public static final String DATD_SOURCE = "dataSource"; // 数据来源ID public static final String SOURCE_ID = "sourceId"; + // 是否跳过 + public static final String IS_SKIP = "isSkip"; // 装配件绑定状态 public static final String ASSEMBLY_STATUS = "assemblyStatus"; // 装配件绑定状态 @@ -203,6 +205,8 @@ public class MesPcnExtConstWords { public static final String DATA = "data"; // 开模记录ID public static final String MOULD_RECORD_ID = "mouldRecordId"; + // 加工记录ID + public static final String PRODUCTION_RECORD_ID = "productionRecordId"; // 工步代码 public static final String STEP_CODE = "stepCode"; // 生产顺序号 @@ -527,6 +531,9 @@ public class MesPcnExtConstWords { //SPS强过配置code public static final String SPS_STRONGER_PASS = "SPS_STRONGER_PASS"; + // JIS跳过码 + public static final String JIS_SKIP_CODE = "JIS_SKIP_CODE"; + //发运解析条码最大长度 public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH"; //裁片工单号