jx pcn sn line on and fqc update

dev
王杰 2 years ago
parent 096751b871
commit b8cd8e64ff

@ -87,11 +87,11 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService {
List<AttrBean> 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<MesProduceSnExt> produceSnList) {
List<MesProduceSnExt> 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<MesProduceSnExt> 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<JxSnWorkCellScanModel> packResultListByType(StationRequestBean reqBean, List<MesProduceSnExt> produceSnList) {
List<JxSnWorkCellScanModel> resultList = null;
if (CollectionUtils.isEmpty(produceSnList)) return resultList;
if (CollectionUtils.isEmpty(produceSnList) || StringUtils.isEmpty(reqBean.getProcessCode())) return null;
List<JxSnWorkCellScanModel> 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 ++;
}

@ -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<MesStateMachineStatus> states, Map<String, String> 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<AttrBean> packDataAttrList() {
List<AttrBean> 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<MesProduceSnExt> 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<MesProduceSnExt> produceSnList) {
List<MesProduceSnExt> 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<JxSnWorkCellScanModel> packResultListByType(List<MesProduceSnExt> produceSnList) {
if (CollectionUtils.isEmpty(produceSnList)) 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 (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<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
public boolean doFunction(StationRequestBean reqBean) {
Boolean result = false;
Map<String, Object> 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;
}
}
}

@ -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<AttrBean> 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<MesProduceSnExt> produceSnList = null;
List<MesProduceSnMcRecord> produceSnMcRecordList = null;
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrderExt.getWorkOrderType())
List<MesProduceSnExt> 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<MesProduceSnExt> produceSnList, List<MesProduceSnMcRecord> 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<MesProduceSnExt> getLineOnSnList(List<MesProduceSnExt> 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<MesProduceSnExt> produceSnList) {
List<MesProduceSnExt> 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<JxSnWorkCellScanModel> packResultListByType(List<MesProduceSnExt> produceSnList) {
private List<JxSnWorkCellScanModel> packResultListByType(Integer workOrderType, List<MesProduceSnExt> produceSnList, List<MesProduceSnMcRecord> 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<JxSnWorkCellScanModel> packResultListByType1(List<MesProduceSnExt> produceSnList) {
List<JxSnWorkCellScanModel> 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<JxSnWorkCellScanModel> packResultListByType2(List<MesProduceSnMcRecord> produceSnMcRecordList) {
List<JxSnWorkCellScanModel> 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<String, Object> packResultMap(MesWorkOrderExt workOrderExt, Integer completeQty) {
Map<String, Object> 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;

@ -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;
}

@ -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";
}

Loading…
Cancel
Save