|
|
@ -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.base.ISxWorkOrderExtService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService;
|
|
|
|
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.MesProduceSnExt;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
|
|
|
|
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.MesPcnExtConstWords;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
|
|
|
|
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.api.iservice.busi.IShippingDispatchService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseModuleService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseModuleService;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil;
|
|
|
|
import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil;
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
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.bean.MesStateMachineStatus;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.AttrBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.AttrBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ImppRedis;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ImppRedis;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import java.util.StringJoiner;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @Description : 展示组件:嘉兴条码加工
|
|
|
|
* @Description : 展示组件:嘉兴条码加工
|
|
|
@ -49,10 +46,10 @@ public class JxSnProcessingModuleService extends BaseModuleService {
|
|
|
|
private IProduceSnExtService produceSnExtService;
|
|
|
|
private IProduceSnExtService produceSnExtService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IShippingDispatchService shippingDispatchService;
|
|
|
|
private IJxProduceSnExtService jxProduceSnExtService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IFsmRouteDataService fsmRouteDataService;
|
|
|
|
private IShippingDispatchService shippingDispatchService;
|
|
|
|
|
|
|
|
|
|
|
|
@Resource(name = MesPcnExtConstWords.REDIS_RES_PCN)
|
|
|
|
@Resource(name = MesPcnExtConstWords.REDIS_RES_PCN)
|
|
|
|
private ImppRedis redisMesPcn;
|
|
|
|
private ImppRedis redisMesPcn;
|
|
|
@ -116,74 +113,17 @@ public class JxSnProcessingModuleService extends BaseModuleService {
|
|
|
|
else
|
|
|
|
else
|
|
|
|
produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo());
|
|
|
|
produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo());
|
|
|
|
|
|
|
|
|
|
|
|
List<String> processCodeList = getProcessCodeList(reqBean);
|
|
|
|
List<String> 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);
|
|
|
|
this.sendMessage(reqBean, resultBean);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<String> getProcessCodeList(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(reqBean.getRouteCode()) || StringUtils.isEmpty(reqBean.getProcessCode())) return null;
|
|
|
|
|
|
|
|
List<MesRouteProcess> routeProcessList = fsmRouteDataService.getCachedFsmRouteProcessData(reqBean);
|
|
|
|
|
|
|
|
Optional<MesRouteProcess> 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<MesProduceSnExt> produceSnList, List<String> processCodeList) {
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(reqBean.getProcessCode()) || CollectionUtils.isEmpty(processCodeList)) return MesPcnExtConstWords.ZERO;
|
|
|
|
|
|
|
|
List<MesProduceSnExt> 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<JxSnWorkCellScanModel> packResultListByType(List<MesProduceSnExt> produceSnList, List<String> processCodeList) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(produceSnList) || CollectionUtils.isEmpty(processCodeList)) return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<JxSnWorkCellScanModel> 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<String, Object> packResultMap(MesWorkOrderExt workOrderExt, Integer completeQty) {
|
|
|
|
|
|
|
|
Map<String, Object> 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
|
|
|
|
@Override
|
|
|
|
public boolean doFunction(StationRequestBean reqBean) {
|
|
|
|
public boolean doFunction(StationRequestBean reqBean) {
|
|
|
|
Boolean result = false;
|
|
|
|
Boolean result = false;
|
|
|
|