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