diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java index 6a9a38e..d84ee20 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java @@ -4,36 +4,39 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; 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.MesProductionProcessContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesQueueOrderModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseModuleService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; +import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesProdShiftRecord; -import cn.estsh.i3plus.pojo.mes.bean.MesStateMachineStatus; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.model.AttrBean; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; -import cn.estsh.i3plus.pojo.mes.repository.MesFileRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; 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 java.util.ArrayList; import java.util.List; -import java.util.Map; /** - * @Description : 展示组件:非排序生产 + * @Description : 展示组件:排序生产 * @Author :wangjie **/ @Slf4j @@ -53,10 +56,7 @@ public class MesProductionSortModuleService extends BaseModuleService { private IMesProdShiftRecordService mesProdShiftRecordService; @Autowired - private IMesWorkOrderExtService workOrderExtService; - - @Autowired - private MesFileRepository mesFileRepository; + private MesQueueOrderRepository queueOrderRepository; @Override public void init(StationRequestBean reqBean) { @@ -80,10 +80,9 @@ public class MesProductionSortModuleService extends BaseModuleService { StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext); this.sendMessage(reqBean, resultBean); - //TODO 右侧排序表格数据 - - - + // 获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条 + resultBean = getStationResultBean(queryQueueOrderTopFiftyProduceSeq(getNewQueueOrder(reqBean))); + this.sendMessage(reqBean, resultBean); //验证工位是否锁定 reqBean.getDataMap().put(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_INIT_MODULE.getCode(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); @@ -94,6 +93,66 @@ public class MesProductionSortModuleService extends BaseModuleService { } + private StationResultBean getStationResultBean(List mesQueueOrderModelList) { + return new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue()) + .customPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL) + .dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLE.getValue()) + .dataAttrList(dataAttrList()).resultList(mesQueueOrderModelList); + } + + //队列工单清单列表标题 + public List dataAttrList() { + List attrBeanList = new ArrayList<>(); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PRODUCT_SEQ, "工单序号"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CAR_MODEL_CODE, "车型配置"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.CUST_ORDER_NO, "客户订单号"); + PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PART_NO, "零件号"); + return attrBeanList; + } + + private List queryQueueOrderTopFiftyProduceSeq(MesQueueOrder queueOrder) { + + 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 queueOrderList = queueOrderRepository.findByHqlWherePage(packBean, pager); + + List 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 MesQueueOrder getNewQueueOrder(StationRequestBean reqBean) { + 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.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue(), MesPcnExtConstWords.STATUS, packBean); + packBean.setOrderByStr(" order by modifyDatetime desc "); + return queueOrderRepository.getByProperty(packBean); + } + private List getShiftRecordStationKvBeans(StationRequestBean reqBean) { // 获取班次信息 redis List prodShiftDataContext = productionCustomContextStepService.getProdShiftDataContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesQueueOrderModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesQueueOrderModel.java new file mode 100644 index 0000000..d1e9111 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesQueueOrderModel.java @@ -0,0 +1,74 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import javax.persistence.Column; +import java.io.Serializable; + +/** + * + */ +@Data +public class MesQueueOrderModel implements Serializable { + + @ApiParam("区域代码") + private String areaCode; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("工作中心") + private String workCenterCode; + + @Column(name = "WORK_CELL_CODE") + @ApiParam("工位代码") + private String workCellCode; + + @ApiParam("生产工单号") + private String workOrderNo; + + @ApiParam("过程条码") + private String serialNumber; + + @ApiParam("产品条码") + private String productSn; + + @ApiParam("客户条码") + private String custSn; + + @ApiParam("物料号") + private String partNo; + + @ApiParam("物料名称") + private String partName; + + @ApiParam("状态") + private Integer status; + + @ApiParam("零件生产组代码") + private String partProdGroupCode; + + @ApiParam("零件生产组名称") + private String partProdGroupName; + + @ApiParam("生产序号") + private Long produceSeq; + + @ApiParam("工单序号") + private String workOrderSeq; + + @ApiParam("车型大类") + private String carModelCode; + + @ApiParam("客户订单号") + private String custOrderNo; + + @ApiParam("客户物料号") + private String custPartNo; + + @ApiParam(value = "工艺顺序号") + private Integer processSeq; + + @ApiParam(value = "颜色") + private String color; + +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 5ea08e4..b35e14e 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -575,4 +575,6 @@ public class MesPcnExtConstWords { // 产线名称 public static final String WORK_CENTER_NAME = "workCenterName"; + // 生产序号 + public static final String PRODUCT_SEQ = "productSeq"; }