diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java index 2ebb6a3..a8af5a6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnFinalInspectionModuleService.java @@ -87,11 +87,11 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { List attrBeanList = new ArrayList<>(); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.INDEX, "序号"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MANAGE_CODE, "(源)管理码"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS, "终检状态"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS_NAME, "终检状态"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.SERIAL_NUMBER, "过程条码"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PRODUCT_SN, "产品条码"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CREATE_DATE_TIME, "操作时间"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CREATE_USER, "操作人"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_DATE_TIME, "操作时间"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_USER, "操作人"); return attrBeanList; } @@ -121,15 +121,17 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { } private Integer getCompleteQtyByType(StationRequestBean reqBean, List produceSnList) { - List curProcessSnList = CollectionUtils.isEmpty(produceSnList) ? null : - produceSnList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()) && o.getProcessCode().equals(reqBean.getProcessCode()))).collect(Collectors.toList()); - return CollectionUtils.isEmpty(curProcessSnList) ? MesPcnExtConstWords.ZERO : curProcessSnList.size(); + if (StringUtils.isEmpty(reqBean.getProcessCode())) return MesPcnExtConstWords.ZERO; + List completeList = CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> (null != o && + ((!StringUtils.isEmpty(o.getProcessCode()) && o.getProcessCode().equals(reqBean.getProcessCode()) || MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() < o.getSnStatus())))).collect(Collectors.toList()); + return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); } private List packResultListByType(StationRequestBean reqBean, List produceSnList) { - List resultList = null; - if (CollectionUtils.isEmpty(produceSnList)) return resultList; + if (CollectionUtils.isEmpty(produceSnList) || StringUtils.isEmpty(reqBean.getProcessCode())) return null; + + List resultList = null; produceSnList = produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getModifyDatetime).reversed()).collect(Collectors.toList()); @@ -141,9 +143,12 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>(); JxSnWorkCellScanModel result = new JxSnWorkCellScanModel(); BeanUtils.copyProperties(produceSnExt, result); - if (!StringUtils.isEmpty(produceSnExt.getProcessCode()) && produceSnExt.getProcessCode().equals(reqBean.getProcessCode())) result.status("已终检").color(MesPcnExtConstWords.GREEN); - else if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) result.status("返修中"); - else result.status("未终检"); + + if ((!StringUtils.isEmpty(produceSnExt.getProcessCode()) && produceSnExt.getProcessCode().equals(reqBean.getProcessCode())) + || MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() < produceSnExt.getSnStatus()) result.statusName("已完成").color(MesPcnExtConstWords.GREEN); + else if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) result.statusName("返修中").color(MesPcnExtConstWords.YELLOW); + else result.statusName("未完成"); + resultList.add(result.manageCode(produceSnExt.getTrayNo()).index(index)); index ++; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOffModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOffModuleService.java new file mode 100644 index 0000000..cc6216f --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOffModuleService.java @@ -0,0 +1,266 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnExt; +import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxSnWorkCellScanModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; +import cn.estsh.i3plus.mes.pcn.api.iservice.busi.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseModuleService; +import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesStateMachineStatus; +import cn.estsh.i3plus.pojo.mes.model.AttrBean; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.impp.framework.boot.util.ImppRedis; +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.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description : 展示组件:嘉兴条码下线 + * @Reference : + * @Author :wangjie + * @CreateDate : 2020-06-26 11:18 上午 + * @Modify: + **/ +@Slf4j +@Service("jxSnLineOffModuleService") +public class JxSnLineOffModuleService extends BaseModuleService { + + @Autowired + private ISxWorkOrderExtService workOrderExtService; + + @Autowired + private IProduceSnExtService produceSnExtService; + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) + private ImppRedis redisMesPcn; + + @Override + public void init(StationRequestBean reqBean) { + MesWorkOrderExt workOrderExt = getCurExecWorkOrder(reqBean); + doLoadData(reqBean, workOrderExt); + } + + @Override + public boolean execStateModule(StationRequestBean reqBean, List states, Map wcpcMap) { + String curExecWorkOrder = (String) doHandleCurExecWorkOrder(reqBean, 1, null); + if (StringUtils.isEmpty(curExecWorkOrder)) return true; + MesWorkOrderExt workOrderExtDb = getCachedWorkOrder(reqBean, curExecWorkOrder); + if (null == workOrderExtDb) return true; + doLoadData(reqBean, workOrderExtDb); + return true; + } + + private MesWorkOrderExt getCurExecWorkOrder(StationRequestBean reqBean) { + String curExecWorkOrder = (String) doHandleCurExecWorkOrder(reqBean, 1, null); + MesWorkOrderExt workOrderExtDb = StringUtils.isEmpty(curExecWorkOrder) ? null : getCachedWorkOrder(reqBean, curExecWorkOrder); + return workOrderExtDb; + } + + private String getDataKey(StationRequestBean reqBean) { + return new StringJoiner(MesPcnExtConstWords.COLON).add(reqBean.getOrganizeCode()) + .add(MesPcnExtConstWords.JX_SN_LINE_OFF_DATA).add(reqBean.getWorkCenterCode()).add(reqBean.getWorkCellCode()).toString(); + } + + private MesWorkOrderExt getCachedWorkOrder(StationRequestBean reqBean, String curExecWorkOrder) { + return workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrder); + } + + private List packDataAttrList() { + List attrBeanList = new ArrayList<>(); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.INDEX, "序号"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MANAGE_CODE, "(源)管理码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS_NAME, "下线状态"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.SERIAL_NUMBER, "过程条码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PRODUCT_SN, "产品条码"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_DATE_TIME, "操作时间"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_USER, "操作人"); + return attrBeanList; + } + + private void doLoadData(StationRequestBean reqBean, MesWorkOrderExt workOrderExt) { + StationResultBean resultBean = new StationResultBean(); + + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.CUSTOM.getValue()); + resultBean.setCustomPageName(MesPcnExtConstWords.JX_SN_LINE_OFF_MODULE); + resultBean.setDataAttrList(packDataAttrList()); + resultBean.setSpecialDisplayData(getStepColIndent(reqBean)); + + if (null != workOrderExt) { + List produceSnList; + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != workOrderExt.getWorkOrderType()) + produceSnList = produceSnExtService.getProduceSnExtListByOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); + else + produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); + + resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(produceSnList))); + + resultBean.setResultList(packResultListByType(produceSnList)); + } + + this.sendMessage(reqBean, resultBean); + + } + + private Integer getCompleteQtyByType(List produceSnList) { + List completeList = CollectionUtils.isEmpty(produceSnList) ? null : + produceSnList.stream().filter(o -> (null != o && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() < o.getSnStatus())).collect(Collectors.toList()); + return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); + } + + private List packResultListByType(List produceSnList) { + + if (CollectionUtils.isEmpty(produceSnList)) return null; + + List resultList = null; + + produceSnList = produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getModifyDatetime).reversed()).collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(produceSnList) && produceSnList.size() > 50) produceSnList = produceSnList.subList(0, 50); + + Integer index = 1; + for (MesProduceSnExt produceSnExt : produceSnList) { + if (null == produceSnExt) continue; + if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>(); + JxSnWorkCellScanModel result = new JxSnWorkCellScanModel(); + BeanUtils.copyProperties(produceSnExt, result); + if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() < produceSnExt.getSnStatus()) result.statusName("已完成").color(MesPcnExtConstWords.GREEN); + else if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) result.statusName("返修中").color(MesPcnExtConstWords.YELLOW); + else result.statusName("未完成"); + resultList.add(result.manageCode(produceSnExt.getTrayNo()).index(index)); + index ++; + } + + return resultList; + } + + private Map packResultMap(MesWorkOrderExt workOrderExt, Integer completeQty) { + Map resultMap = new HashMap<>(); + resultMap.put(MesPcnExtConstWords.CUR_WORK_ORDER_NO, workOrderExt.getOrderNo()); + resultMap.put(MesPcnExtConstWords.PART_NO, workOrderExt.getPartNo()); + resultMap.put(MesPcnExtConstWords.PART_NAME_RDD, workOrderExt.getPartNameRdd()); + resultMap.put(MesPcnExtConstWords.WORK_ORDER_TYPE, workOrderExt.getWorkOrderType()); + resultMap.put(MesPcnExtConstWords.WORK_ORDER_TYPE_NAME, MesPcnExtEnumUtil.WORK_ORDER_TYPE.valueOfDescription(workOrderExt.getWorkOrderType())); + resultMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, workOrderExt.getWorkOrderStatus()); + resultMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS_NAME, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus())); + resultMap.put(MesPcnExtConstWords.QTY, workOrderExt.getQty().intValue()); + resultMap.put(MesPcnExtConstWords.COMPLETE_QTY, completeQty); + return resultMap; + } + + @Override + public boolean doFunction(StationRequestBean reqBean) { + Boolean result = false; + Map dataMap = reqBean.getDataMap(); + String command = (String) dataMap.get(MesPcnExtConstWords.COMMAND); + Object value = dataMap.get(MesPcnExtConstWords.VALUE); + if (StringUtils.isEmpty(command)) { + this.sendMessage(reqBean, null, "后端未获取到业务功能指令", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return result; + } + + switch (command) { + case MesPcnExtConstWords.CMD_WORK_ORDER : + if (StringUtils.isEmpty(value)) { + this.sendMessage(reqBean, null, "请选择启动状态的生产工单", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return result; + } + + String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null); + if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result; + reqBean.setForceJumpProcess(true); + if (StringUtils.isEmpty(selectWorkOrderNo)) { + if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true; + else { + this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return result; + } + } + break; + case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS : + if (StringUtils.isEmpty(value)) { + this.sendMessage(reqBean, null, "入参缺少产线强制放行的工步代码", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return result; + } + reqBean.setForceSpecStepCode(value.toString()); + result = true; + break; + default: + break; + } + + if (!result) this.sendMessage(reqBean, null, "操作太频繁", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + else { + //跳过工序 + reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); + reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); + reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); + shippingDispatchService.doSendScanQueueNextExec(reqBean); + } + return result; + } + + public synchronized Object doHandleCurExecWorkOrder(StationRequestBean reqBean, Integer flag, String curExecWorkOrder) { + switch (flag) { + case 1: + return redisMesPcn.getHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER); + case 2: + return redisMesPcn.putHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER, curExecWorkOrder, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue()); + case 3: + redisMesPcn.deleteHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER); + return true; + default: + return null; + } + } + + public synchronized Object doHandleSelectWorkOrderNo(StationRequestBean reqBean, Integer flag, String selectWorkOrderNo) { + switch (flag) { + case 1: + return redisMesPcn.getHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER); + case 2: + return redisMesPcn.putHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER, selectWorkOrderNo, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue()); + case 3: + redisMesPcn.deleteHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER); + return true; + default: + return null; + } + } + + public Object doHandleBindKeyPartData(StationRequestBean reqBean, Integer flag, String item, String data) { + switch (flag) { + case 1: + return redisMesPcn.getHash(getDataKey(reqBean), item); + case 2: + return redisMesPcn.putHash(getDataKey(reqBean), item, data, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue()); + case 3: + String[] itemArr = item.split(MesPcnExtConstWords.COMMA); + for (String s : itemArr) { + redisMesPcn.deleteHash(getDataKey(reqBean), s); + } + return true; + default: + return null; + } + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOnModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOnModuleService.java index 455fa63..d7d5a35 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOnModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnLineOnModuleService.java @@ -2,9 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx; import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnMcRecordService; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnExt; -import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnMcRecord; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxSnWorkCellScanModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; @@ -43,9 +41,6 @@ import java.util.stream.Collectors; public class JxSnLineOnModuleService extends BaseModuleService { @Autowired - private IJxProduceSnMcRecordService produceSnMcRecordService; - - @Autowired private ISxWorkOrderExtService workOrderExtService; @Autowired @@ -92,11 +87,11 @@ public class JxSnLineOnModuleService extends BaseModuleService { List attrBeanList = new ArrayList<>(); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.INDEX, "序号"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MANAGE_CODE, "(源)管理码"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS, "上线状态"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS_NAME, "上线状态"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.SERIAL_NUMBER, "过程条码"); PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PRODUCT_SN, "产品条码"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CREATE_DATE_TIME, "操作时间"); - PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CREATE_USER, "操作人"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_DATE_TIME, "操作时间"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_USER, "操作人"); return attrBeanList; } @@ -110,49 +105,33 @@ public class JxSnLineOnModuleService extends BaseModuleService { resultBean.setSpecialDisplayData(getStepColIndent(reqBean)); if (null != workOrderExt) { - List produceSnList = null; - List produceSnMcRecordList = null; - if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrderExt.getWorkOrderType()) + List produceSnList; + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != workOrderExt.getWorkOrderType()) produceSnList = produceSnExtService.getProduceSnExtListByOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); - else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrderExt.getWorkOrderType()) - produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); else - produceSnMcRecordList = produceSnMcRecordService.getProduceSnMcRecordDbList(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); + produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); - resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(workOrderExt.getWorkOrderType(), produceSnList, produceSnMcRecordList))); + resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(produceSnList))); - resultBean.setResultList(packResultListByType(workOrderExt.getWorkOrderType(), produceSnList, produceSnMcRecordList)); + resultBean.setResultList(packResultListByType(produceSnList)); } this.sendMessage(reqBean, resultBean); } - private Integer getCompleteQtyByType(Integer workOrderType, List produceSnList, List produceSnMcRecordList) { - if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrderType) return getListSize(produceSnList); - else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrderType) return getListSize(getLineOnSnList(produceSnList)); - else return getListSize(produceSnMcRecordList); - } - - private List getLineOnSnList(List produceSnList) { - return CollectionUtils.isEmpty(produceSnList) ? null : - produceSnList.stream().filter(o -> (null != o && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() == o.getSnStatus())).collect(Collectors.toList()); + private Integer getCompleteQtyByType(List produceSnList) { + List completeList = CollectionUtils.isEmpty(produceSnList) ? null : + produceSnList.stream().filter(o -> (null != o && MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() <= o.getSnStatus() && MesPcnExtEnumUtil.SN_OPERATE_TYPE.QUALIFIED.getValue() == o.getOperateType())).collect(Collectors.toList()); + return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); } - private Integer getListSize(List list) { - return CollectionUtils.isEmpty(list) ? MesPcnExtConstWords.ZERO : list.size(); - } + private List packResultListByType(List produceSnList) { - private List packResultListByType(Integer workOrderType, List produceSnList, List produceSnMcRecordList) { - if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.ATTEMPT_ORDER.getValue() != workOrderType) return packResultListByType1(produceSnList); - else return packResultListByType2(produceSnMcRecordList); - } + if (CollectionUtils.isEmpty(produceSnList)) return null; - private List packResultListByType1(List produceSnList) { List resultList = null; - if (CollectionUtils.isEmpty(produceSnList)) return resultList; - produceSnList = produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getModifyDatetime).reversed()).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(produceSnList) && produceSnList.size() > 50) produceSnList = produceSnList.subList(0, 50); @@ -163,8 +142,11 @@ public class JxSnLineOnModuleService extends BaseModuleService { if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>(); JxSnWorkCellScanModel result = new JxSnWorkCellScanModel(); BeanUtils.copyProperties(produceSnExt, result); - if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() <= produceSnExt.getSnStatus()) result.status("已完成").color(MesPcnExtConstWords.GREEN); - else result.status("未完成"); + if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() <= produceSnExt.getSnStatus() && MesPcnExtEnumUtil.SN_OPERATE_TYPE.QUALIFIED.getValue() == produceSnExt.getOperateType()) + result.statusName("已完成").color(MesPcnExtConstWords.GREEN); + else if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) + result.statusName("返修中").color(MesPcnExtConstWords.YELLOW); + else result.statusName("未完成"); resultList.add(result.manageCode(produceSnExt.getTrayNo()).index(index)); index ++; } @@ -172,30 +154,6 @@ public class JxSnLineOnModuleService extends BaseModuleService { return resultList; } - private List packResultListByType2(List produceSnMcRecordList) { - List resultList = null; - - if (CollectionUtils.isEmpty(produceSnMcRecordList)) return resultList; - - produceSnMcRecordList = produceSnMcRecordList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSnMcRecord::getModifyDatetime).reversed()).collect(Collectors.toList()); - - if (!CollectionUtils.isEmpty(produceSnMcRecordList) && produceSnMcRecordList.size() > 50) produceSnMcRecordList = produceSnMcRecordList.subList(0, 50); - - Integer index = 1; - for (MesProduceSnMcRecord produceSnMcRecord : produceSnMcRecordList) { - if (null == produceSnMcRecordList) continue; - if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>(); - JxSnWorkCellScanModel result = new JxSnWorkCellScanModel(); - BeanUtils.copyProperties(produceSnMcRecord, result); - if (MesPcnExtEnumUtil.MC_RECORD_LINE_ON_STATUS.TRUE.getValue() <= produceSnMcRecord.getLineOnStatus()) result.status("已完成").color(MesPcnExtConstWords.GREEN); - else result.status("未完成"); - resultList.add(result.index(index)); - index ++; - } - - return resultList; - } - private Map packResultMap(MesWorkOrderExt workOrderExt, Integer completeQty) { Map resultMap = new HashMap<>(); resultMap.put(MesPcnExtConstWords.CUR_WORK_ORDER_NO, workOrderExt.getOrderNo()); @@ -230,6 +188,7 @@ public class JxSnLineOnModuleService extends BaseModuleService { String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null); if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result; + reqBean.setForceJumpProcess(true); if (StringUtils.isEmpty(selectWorkOrderNo)) { if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true; else { @@ -256,7 +215,6 @@ public class JxSnLineOnModuleService extends BaseModuleService { reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); - if (StringUtils.isEmpty(reqBean.getForceSpecStepCode())) reqBean.setForceJumpProcess(true); shippingDispatchService.doSendScanQueueNextExec(reqBean); } return result; diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxSnWorkCellScanModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxSnWorkCellScanModel.java index 60fb1e3..f3c759c 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxSnWorkCellScanModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxSnWorkCellScanModel.java @@ -20,11 +20,11 @@ public class JxSnWorkCellScanModel implements Serializable { @ApiParam("序号") private Integer index; - @ApiParam("创建时间") - private String createDatetime; + @ApiParam("操作时间") + private String modifyDatetime; - @ApiParam("创建人") - private String createUser; + @ApiParam("操作人") + private String modifyUser; @ApiParam("管理码") private String manageCode; @@ -36,7 +36,7 @@ public class JxSnWorkCellScanModel implements Serializable { private String productSn; @ApiParam("状态") - private String status; + private String statusName; @ApiParam("颜色") private String color; @@ -51,8 +51,8 @@ public class JxSnWorkCellScanModel implements Serializable { return this; } - public JxSnWorkCellScanModel status(String status) { - this.status = status; + public JxSnWorkCellScanModel statusName(String statusName) { + this.statusName = statusName; return this; } 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 6d432b3..1b75b78 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 @@ -85,6 +85,8 @@ public class MesPcnExtConstWords { public static final String OUT_WC_TIME = "outWorkCenterTime"; // 状态 public static final String STATUS = "status"; + // 状态 + public static final String STATUS_NAME = "statusName"; // 生产工单号 public static final String ORDER_NO = "orderNo"; // 生产工单号 @@ -896,5 +898,8 @@ public class MesPcnExtConstWords { public static final String STATE_REPAIR = "STATE_REPAIR"; public static final String JX_THIRD_PARTY_SN_LOCK = "JX_THIRD_PARTY_SN_LOCK"; + public static final String JX_SN_LINE_OFF_MODULE = "JX_SN_LINE_OFF_MODULE"; + public static final String JX_SN_LINE_OFF_DATA = "JX_SN_LINE_OFF_DATA"; + }