排序展示组件查询逻辑优化

tags/yfai-pcn-ext-v2.3
yxw 8 months ago
parent ad5934cfd8
commit 5eaf01b076

@ -6,6 +6,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepSer
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesQueueOrderModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -34,6 +35,8 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description :
@ -63,14 +66,15 @@ public class MesProductionSortModuleService extends BaseModuleService {
// 获取工单信息
List<List<StationKvBean>> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean);
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue());
MesWorkCell mesWorkCell = productionProcessContext.getWorkCell();
// 获取产成零件信息
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
// 排除掉空腔的产成零件
productionPartContext = CollectionUtils.isEmpty(productionPartContext) ? null : productionPartContext.stream().filter(o -> o.getForeignKey() != null).collect(Collectors.toList());
//获取班次信息,先查询缓存,缓存没有在查询数据库
List<StationKvBean> prodShiftDataContext = getShiftRecordStationKvBeans(reqBean);
MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
//MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
if (CollectionUtils.isEmpty(prodShiftDataContext)) {
this.sendMessage(reqBean, new StationResultBean().writeDbLog(), "请先开班", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
@ -81,7 +85,7 @@ public class MesProductionSortModuleService extends BaseModuleService {
this.sendMessage(reqBean, resultBean);
// 获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条
resultBean = getStationResultBean(queryQueueOrderTopFiftyProduceSeq(getNewQueueOrder(reqBean)));
resultBean = getStationResultBean(queryQueueOrderTopFiftyProduceSeq(reqBean, getNewPartProdGroupCode(reqBean, productionPartContext)));
this.sendMessage(reqBean, resultBean);
//验证工位是否锁定
@ -110,40 +114,54 @@ public class MesProductionSortModuleService extends BaseModuleService {
return attrBeanList;
}
private List<MesQueueOrderModel> queryQueueOrderTopFiftyProduceSeq(MesQueueOrder queueOrder) {
private List<MesQueueOrderModel> queryQueueOrderTopFiftyProduceSeq(StationRequestBean reqBean, List<String> partProdGroupCodeList) {
if (queueOrder == null) return new ArrayList<>();
Pager pager = new Pager();
pager.setStartRow(1);
pager.setCurrentPage(1);
pager.setPageSize(50);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(queueOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(queueOrder.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(queueOrder.getWorkCellCode(), MesPcnExtConstWords.WORK_CELL_CODE, packBean);
DdlPreparedPack.getStringEqualPack(queueOrder.getPartProdGroupCode(), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
packBean.setOrderByStr(" order by produceSeq desc ");
List<MesQueueOrder> queueOrderList = queueOrderRepository.findByHqlWherePage(packBean, pager);
if (CollectionUtils.isEmpty(partProdGroupCodeList)) return new ArrayList<>();
List<MesQueueOrderModel> queueOrderModels = new ArrayList<>();
if (!CollectionUtils.isEmpty(queueOrderList)) {
boolean isComplete = false;
for (MesQueueOrder mesQueueOrder : queueOrderList) {
MesQueueOrderModel queueOrderModel = new MesQueueOrderModel();
BeanUtils.copyProperties(mesQueueOrder, queueOrderModel);
String color = MesExtEnumUtil.COLOR.GREEN.getValue();
if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()) isComplete = true;
else if (!isComplete) color = MesExtEnumUtil.COLOR.WHITE.getValue();
else if (isComplete && (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue())) color = MesExtEnumUtil.COLOR.YELLOW.getValue();
queueOrderModel.setColor(color);
queueOrderModels.add(queueOrderModel);
for (String partProdGroupCode : partProdGroupCodeList) {
Pager pager = new Pager();
pager.setStartRow(1);
pager.setCurrentPage(1);
pager.setPageSize(50);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(reqBean.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(reqBean.getWorkCellCode(), MesPcnExtConstWords.WORK_CELL_CODE, packBean);
DdlPreparedPack.getStringEqualPack(partProdGroupCode, MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean);
packBean.setOrderByStr(" order by produceSeq desc ");
List<MesQueueOrder> queueOrderList = queueOrderRepository.findByHqlWherePage(packBean, pager);
//List<MesQueueOrderModel> queueOrderModels = new ArrayList<>();
if (!CollectionUtils.isEmpty(queueOrderList)) {
boolean isComplete = false;
for (MesQueueOrder mesQueueOrder : queueOrderList) {
MesQueueOrderModel queueOrderModel = new MesQueueOrderModel();
BeanUtils.copyProperties(mesQueueOrder, queueOrderModel);
String color = MesExtEnumUtil.COLOR.GREEN.getValue();
if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()) isComplete = true;
else if (!isComplete) color = MesExtEnumUtil.COLOR.WHITE.getValue();
else if (isComplete && (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue())) color = MesExtEnumUtil.COLOR.YELLOW.getValue();
queueOrderModel.setColor(color);
queueOrderModels.add(queueOrderModel);
}
}
}
return queueOrderModels;
}
private List<String> getNewPartProdGroupCode(StationRequestBean reqBean, List<MesProductionPartContext> productionPartContext) {
// 获取工单信息
if (!CollectionUtils.isEmpty(productionPartContext)) {
return productionPartContext.stream().map(MesProductionPartContext::getPartProdGroupCode).distinct().collect(Collectors.toList());
}
MesQueueOrder queueOrder = getNewQueueOrder(reqBean);
return Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList());
}
private MesQueueOrder getNewQueueOrder(StationRequestBean reqBean) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(reqBean.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean);

Loading…
Cancel
Save