From 55a722089b34aa9653888abbe0d5af4a4e121b50 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Fri, 10 Nov 2023 16:19:03 +0800 Subject: [PATCH] jx pcn sn work cell scan busi commit --- .../pcn/api/busi/jx/IJxProduceSnExtService.java | 39 +++++++++++ .../serviceimpl/busi/ProduceSnExtService.java | 5 +- .../serviceimpl/busi/jx/JxProduceSnExtService.java | 69 +++++++++++++++++-- .../jx/JxSnFinalInspectionModuleService.java | 70 ++++--------------- .../busi/station/jx/JxSnLineOffModuleService.java | 66 ++++-------------- .../busi/station/jx/JxSnLineOnModuleService.java | 68 ++++-------------- .../station/jx/JxSnProcessingModuleService.java | 80 +++------------------- 7 files changed, 149 insertions(+), 248 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java index 4f8677f..e25fab2 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProduceSnExtService.java @@ -1,9 +1,14 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi.jx; 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.pojo.mes.model.StationRequestBean; import io.swagger.annotations.ApiOperation; +import java.util.List; +import java.util.Map; + /** * @Author: wangjie * @CreateDate: 2021/01/18 11:22 上午 @@ -36,4 +41,38 @@ public interface IJxProduceSnExtService { @ApiOperation(value = "清空条码工序信息", notes = "清空条码工序信息") void clearProduceSnProcess(MesProduceSnExt produceSnExt); + /** + * 获取大于等于当前工位的工序代码集合,用于验证当前工位工序是否完成 + * @param requestBean 工位数据 + * @return 工序代码集合 + */ + @ApiOperation(value = "获取大于等于当前工位的工序代码集合,用于验证当前工位工序是否完成", notes = "获取大于等于当前工位的工序代码集合,用于验证当前工位工序是否完成") + List getBiggerCurProcessList(StationRequestBean requestBean); + + /** + * 获取当前工序条码完成数量 + * @param produceSnList 产品条码信息集合 + * @param processCodeList 工序代码集合 + * @return 当前工序条码完成数量 + */ + @ApiOperation(value = "获取当前工序条码完成数量", notes = "获取当前工序条码完成数量") + Integer getSnCompleteQtyByProcessList(List produceSnList, List processCodeList); + + /** + * 封装工位扫描条码信息集合 + * @param produceSnList 产品条码信息集合 + * @param processCodeList 工序代码集合 + * @return 工位扫描条码信息集合 + */ + @ApiOperation(value = "封装工位扫描条码信息集合", notes = "封装工位扫描条码信息集合") + List packSnWorkCellScanListByProcessList(List produceSnList, List processCodeList); + + /** + * 封装工位扫描展示信息 + * @param workOrderExt 生产工单信息 + * @param snCompleteQty 当前工序条码完成数量 + * @return 工位扫描展示信息 + */ + @ApiOperation(value = "封装工位扫描展示信息", notes = "封装工位扫描展示信息") + Map packSnWorkCellScanResultMap(MesWorkOrderExt workOrderExt, Integer snCompleteQty); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java index 921c4dd..d123908 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java @@ -1,7 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.*; -import cn.estsh.i3plus.ext.mes.pcn.api.base.bu.IMesProductPrintTypeService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProductEncodeCfgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWorkCellPrintRecordService; @@ -46,6 +45,7 @@ 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.ArrayList; import java.util.HashMap; import java.util.List; @@ -120,9 +120,6 @@ public class ProduceSnExtService implements IProduceSnExtService { private MesPackageDetailRepository packageDetailRepository; @Autowired - private IMesProductPrintTypeService productPrintTypeService; - - @Autowired private ISxPcnHttpService pcnHttpService; @Override diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java index 63ff53a..0278e21 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProduceSnExtService.java @@ -2,21 +2,26 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnExtService; 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.repository.MesProduceSnExtRepository; 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.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesRouteProcess; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; 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.List; -import java.util.Optional; +import java.util.*; +import java.util.stream.Collectors; /** * @Author: wangjie @@ -58,6 +63,12 @@ public class JxProduceSnExtService implements IJxProduceSnExtService { } + private String getNextProcessCode(String processCode, List routeProcessList) { + Optional routeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(processCode))).findFirst(); + if (null == routeProcessOp || !routeProcessOp.isPresent()) return null; + return routeProcessOp.get().getNextProcess(); + } + @Override public void clearProduceSnProcess(MesProduceSnExt produceSnExt) { if (null == produceSnExt) return; @@ -66,11 +77,57 @@ public class JxProduceSnExtService implements IJxProduceSnExtService { produceSnExt.setWorkCellCode(null); } - private String getNextProcessCode(String processCode, List routeProcessList) { - Optional routeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(processCode))).findFirst(); - if (null == routeProcessOp || !routeProcessOp.isPresent()) return null; - return routeProcessOp.get().getNextProcess(); + @Override + public List getBiggerCurProcessList(StationRequestBean requestBean) { return fsmRouteDataService.getBiggerCurProcessList(requestBean); } + + @Override + public Integer getSnCompleteQtyByProcessList(List produceSnList, List processCodeList) { + List completeList = (CollectionUtils.isEmpty(processCodeList) || CollectionUtils.isEmpty(produceSnList)) ? null : + produceSnList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()) && processCodeList.contains(o.getProcessCode()))).collect(Collectors.toList()); + return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); } + @Override + public List packSnWorkCellScanListByProcessList(List produceSnList, List processCodeList) { + if (CollectionUtils.isEmpty(produceSnList) || CollectionUtils.isEmpty(processCodeList)) return 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); + + List resultList = null; + + 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 (!StringUtils.isEmpty(produceSnExt.getProcessCode()) && processCodeList.contains(produceSnExt.getProcessCode())) 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; + } + + @Override + public Map packSnWorkCellScanResultMap(MesWorkOrderExt workOrderExt, Integer snCompleteQty) { + 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, snCompleteQty); + return resultMap; + } } \ No newline at end of file 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 a8af5a6..dec4ed1 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 @@ -2,9 +2,9 @@ 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.IJxProduceSnExtService; 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; @@ -12,22 +12,21 @@ 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; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; /** * @Description : 展示组件:嘉兴条码终检 @@ -47,6 +46,9 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { private IProduceSnExtService produceSnExtService; @Autowired + private IJxProduceSnExtService jxProduceSnExtService; + + @Autowired private IShippingDispatchService shippingDispatchService; @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) @@ -111,63 +113,15 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService { else produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); - resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(reqBean, produceSnList))); - - resultBean.setResultList(packResultListByType(reqBean, produceSnList)); - } - - this.sendMessage(reqBean, resultBean); - - } - - private Integer getCompleteQtyByType(StationRequestBean reqBean, List produceSnList) { - 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) { - - 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()); + List processCodeList = jxProduceSnExtService.getBiggerCurProcessList(reqBean); - if (!CollectionUtils.isEmpty(produceSnList) && produceSnList.size() > 50) produceSnList = produceSnList.subList(0, 50); + resultBean.setResultMap(jxProduceSnExtService.packSnWorkCellScanResultMap(workOrderExt, jxProduceSnExtService.getSnCompleteQtyByProcessList(produceSnList, processCodeList))); - 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 ((!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 ++; + resultBean.setResultList(jxProduceSnExtService.packSnWorkCellScanListByProcessList(produceSnList, processCodeList)); } - return resultList; - } + this.sendMessage(reqBean, resultBean); - 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 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 index cc6216f..ec61a6c 100644 --- 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 @@ -2,9 +2,9 @@ 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.IJxProduceSnExtService; 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; @@ -12,22 +12,21 @@ 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; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; /** * @Description : 展示组件:嘉兴条码下线 @@ -47,6 +46,9 @@ public class JxSnLineOffModuleService extends BaseModuleService { private IProduceSnExtService produceSnExtService; @Autowired + private IJxProduceSnExtService jxProduceSnExtService; + + @Autowired private IShippingDispatchService shippingDispatchService; @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) @@ -111,59 +113,15 @@ public class JxSnLineOffModuleService extends BaseModuleService { 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 processCodeList = jxProduceSnExtService.getBiggerCurProcessList(reqBean); - List resultList = null; + resultBean.setResultMap(jxProduceSnExtService.packSnWorkCellScanResultMap(workOrderExt, jxProduceSnExtService.getSnCompleteQtyByProcessList(produceSnList, processCodeList))); - 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 ++; + resultBean.setResultList(jxProduceSnExtService.packSnWorkCellScanListByProcessList(produceSnList, processCodeList)); } - return resultList; - } + this.sendMessage(reqBean, resultBean); - 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 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 d7d5a35..d4e2370 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,9 @@ 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.IJxProduceSnExtService; 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; @@ -12,22 +12,21 @@ 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; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; /** * @Description : 展示组件:嘉兴条码上线 @@ -47,6 +46,9 @@ public class JxSnLineOnModuleService extends BaseModuleService { private IProduceSnExtService produceSnExtService; @Autowired + private IJxProduceSnExtService jxProduceSnExtService; + + @Autowired private IShippingDispatchService shippingDispatchService; @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) @@ -111,61 +113,15 @@ public class JxSnLineOnModuleService extends BaseModuleService { 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() && MesPcnExtEnumUtil.SN_OPERATE_TYPE.QUALIFIED.getValue() == o.getOperateType())).collect(Collectors.toList()); - return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); - } - - private List packResultListByType(List produceSnList) { - - if (CollectionUtils.isEmpty(produceSnList)) return null; + List processCodeList = jxProduceSnExtService.getBiggerCurProcessList(reqBean); - List resultList = null; + resultBean.setResultMap(jxProduceSnExtService.packSnWorkCellScanResultMap(workOrderExt, jxProduceSnExtService.getSnCompleteQtyByProcessList(produceSnList, processCodeList))); - 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() && 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 ++; + resultBean.setResultList(jxProduceSnExtService.packSnWorkCellScanListByProcessList(produceSnList, processCodeList)); } - return resultList; - } + this.sendMessage(reqBean, resultBean); - 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 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnProcessingModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnProcessingModuleService.java index 8238b55..275a6f9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnProcessingModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/station/jx/JxSnProcessingModuleService.java @@ -2,34 +2,31 @@ 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.IJxProduceSnExtService; 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.actor.shipping.dispatch.IFsmRouteDataService; 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.MesRouteProcess; 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; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; /** * @Description : 展示组件:嘉兴条码加工 @@ -49,10 +46,10 @@ public class JxSnProcessingModuleService extends BaseModuleService { private IProduceSnExtService produceSnExtService; @Autowired - private IShippingDispatchService shippingDispatchService; + private IJxProduceSnExtService jxProduceSnExtService; @Autowired - private IFsmRouteDataService fsmRouteDataService; + private IShippingDispatchService shippingDispatchService; @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) private ImppRedis redisMesPcn; @@ -116,74 +113,17 @@ public class JxSnProcessingModuleService extends BaseModuleService { else produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo()); - List processCodeList = getProcessCodeList(reqBean); + List processCodeList = jxProduceSnExtService.getBiggerCurProcessList(reqBean); - resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(reqBean, produceSnList, processCodeList))); + resultBean.setResultMap(jxProduceSnExtService.packSnWorkCellScanResultMap(workOrderExt, jxProduceSnExtService.getSnCompleteQtyByProcessList(produceSnList, processCodeList))); - resultBean.setResultList(packResultListByType(produceSnList, processCodeList)); + resultBean.setResultList(jxProduceSnExtService.packSnWorkCellScanListByProcessList(produceSnList, processCodeList)); } this.sendMessage(reqBean, resultBean); } - private List getProcessCodeList(StationRequestBean reqBean) { - if (StringUtils.isEmpty(reqBean.getRouteCode()) || StringUtils.isEmpty(reqBean.getProcessCode())) return null; - List routeProcessList = fsmRouteDataService.getCachedFsmRouteProcessData(reqBean); - Optional routeProcessOp = CollectionUtils.isEmpty(routeProcessList) ? null : - routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(reqBean.getProcessCode()) && o.getRouteCode().equals(reqBean.getRouteCode()))).findFirst(); - if (null == routeProcessOp || !routeProcessOp.isPresent()) return null; - return routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(routeProcessOp.get().getSeq()) >= 0)).map(MesRouteProcess::getProcessCode).collect(Collectors.toList()); - } - - private Integer getCompleteQtyByType(StationRequestBean reqBean, List produceSnList, List processCodeList) { - if (StringUtils.isEmpty(reqBean.getProcessCode()) || CollectionUtils.isEmpty(processCodeList)) return MesPcnExtConstWords.ZERO; - List completeList = CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()) && processCodeList.contains(o.getProcessCode()))).collect(Collectors.toList()); - return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size(); - } - - private List packResultListByType(List produceSnList, List processCodeList) { - - if (CollectionUtils.isEmpty(produceSnList) || CollectionUtils.isEmpty(processCodeList)) 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 (!StringUtils.isEmpty(produceSnExt.getProcessCode()) && processCodeList.contains(produceSnExt.getProcessCode())) 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;