diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEnumExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEnumExtService.java index ffd4f29..02d081d 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEnumExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesEnumExtService.java @@ -9,4 +9,7 @@ public interface IMesEnumExtService { @ApiOperation("根据枚举名获取枚举") Map doGetMesEnumByEnumName(String organizeCode, String enumName); + @ApiOperation("通过class获取枚举") + Map getEnumByClazzEnum(String enumName, Class clazz); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java index e9bf408..c8d9c16 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java @@ -2,12 +2,15 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush; import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg; import io.swagger.annotations.ApiOperation; import java.util.List; +import java.util.Map; public interface IMesQueueOrderPushService { @@ -25,7 +28,13 @@ public interface IMesQueueOrderPushService { void insertQueueOrderPush(String organizeCode, String userInfo, List queueOrderPushCellCfgList, MesProductionPsOutContext productionPsOutContext, MesProductionPartContext productionPartContext); - @ApiOperation(value = "根据配置查询生产队列工位推送信息") + @ApiOperation(value = "根据配置查询创建状态的生产队列工位推送信息") List getQueueOrderPushList(String organizeCode, List queueOrderPushCellCfgList); + @ApiOperation(value = "根据配置查询生产队列工位推送信息") + List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer cdtAscOrDesc, Integer... queueStatusArr); + + @ApiOperation(value = "根据分页条件查询生产队列工位推送信息") + ListPager queryQueueOrderPushListPager(Map paramMap, List pushSourceCodeList, Pager pager); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesEnumExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesEnumExtService.java deleted file mode 100644 index 39812a6..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/MesEnumExtService.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.base; - - -import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEnumExtService; -import cn.estsh.i3plus.mes.pcn.util.EnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; -import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceEnumUtil; -import cn.estsh.i3plus.pojo.mes.repository.MesEnumDetailRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesEnumRepository; -import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import java.util.Map; - -/** - * @Author: Wynne.Lu - * @CreateDate: 2019/8/30 1:39 PM - * @Description: - **/ -@Slf4j -@Service -@ApiOperation(value = "获取MesEnumUtil") -public class MesEnumExtService implements IMesEnumExtService { - - @Override - public Map doGetMesEnumByEnumName(String organizeCode, String enumName) { - Map enumMap; - enumMap = getEnumByClazzEnum(enumName, MesExtEnumUtil.class); - if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesEnumUtil.class); - if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesInterfaceEnumUtil.class); - return enumMap; - } - - public Map getEnumByClazzEnum(String enumName, Class clz) { - return EnumUtil.getEnumByName(clz, enumName); - } - - - - -} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ButtonDynamicExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ButtonDynamicExtService.java index ccc1ae6..635fe45 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ButtonDynamicExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ButtonDynamicExtService.java @@ -47,14 +47,14 @@ public class ButtonDynamicExtService extends ButtonDynamicService { private IConfigService configService; @Override - public List filterButtonDynamicModelList(String organizeCode, String workCenterCode, String workCellCode, String windowNo, List buttonDynamicModelList) { - if (CollectionUtils.isEmpty(buttonDynamicModelList)) { + public List filterButtonDynamicModelList(String organizeCode, String workCenterCode, String workCellCode, String windowNo, List buttonDynamicModelList, Integer moduleType) { + if (CollectionUtils.isEmpty(buttonDynamicModelList) && !StringUtils.isEmpty(moduleType) && moduleType.compareTo(MesEnumUtil.WORK_MODULE_TYPE.BUTTON_MODULE.getValue()) == 0) { MesWorkCell workCell = prodOrgExtService.getWorkCellDb(organizeCode, workCenterCode, workCellCode); if (null != workCell && !StringUtils.isEmpty(workCell.getGrade()) && workCell.getGrade().compareTo(MesExtEnumUtil.WORK_CELL_GRADE.SCAN.getValue()) == 0) { if (doAutoInitWorkCellModuleData(organizeCode, workCenterCode, workCellCode, workCell.getId())) buttonDynamicModelList = findWorkModuleList(organizeCode, windowNo); } } - return super.filterButtonDynamicModelList(organizeCode, workCenterCode, workCellCode, windowNo, buttonDynamicModelList); + return super.filterButtonDynamicModelList(organizeCode, workCenterCode, workCellCode, windowNo, buttonDynamicModelList, moduleType); } private List findWorkModuleList(String organizeCode, String windowNo) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEnumExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEnumExtService.java new file mode 100644 index 0000000..d49abe9 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEnumExtService.java @@ -0,0 +1,88 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; + + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEnumExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.util.EnumUtil; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesEnum; +import cn.estsh.i3plus.pojo.mes.bean.MesEnumDetail; +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceEnumUtil; +import cn.estsh.i3plus.pojo.mes.repository.MesEnumDetailRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEnumRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: Wynne.Lu + * @CreateDate: 2019/8/30 1:39 PM + * @Description: + **/ +@Slf4j +@Service +@ApiOperation(value = "获取MesEnumUtil") +public class MesEnumExtService implements IMesEnumExtService { + + @Autowired + private MesEnumRepository enumRepository; + + @Autowired + private MesEnumDetailRepository enumDetailRepository; + + @Override + public Map doGetMesEnumByEnumName(String organizeCode, String enumName) { + Map enumMap = getEnumMap(organizeCode, enumName); + if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesExtEnumUtil.class); + if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesEnumUtil.class); + if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesInterfaceEnumUtil.class); + return enumMap; + } + + @Override + public Map getEnumByClazzEnum(String enumName, Class clz) { + return EnumUtil.getEnumByName(clz, enumName); + } + + private Map getEnumMap(String organizeCode, String enumName) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(enumName, MesPcnExtConstWords.ENUM_CODE, packBean); + MesEnum enumDb = enumRepository.getByProperty(packBean); + if (null == enumDb) return null; + List enumDetailList = enumDetailRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(enumDetailList)) return null; + return getEnumMap(enumDetailList, enumName); + } + + private Map getEnumMap(List enumDetailList, String enumName) { + Map enumMap = new HashMap<>(); + List> values = new ArrayList<>(); + enumDetailList.forEach(e -> { + Map value = new HashMap<>(); + value.put("value", e.getDetailValue()); + if (!StringUtils.isEmpty(e.getEnumCode())) { + value.put("code", e.getDetailCode()); + } + value.put("description", e.getDetailName()); + values.add(value); + }); + enumMap.put("enumName", enumName); + enumMap.put("valuesList", values); + return enumMap; + } + + + + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java index 6f5194e..0b5586f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java @@ -6,8 +6,12 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush; import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg; import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderPushCellCfgRepository; @@ -18,10 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.TreeSet; +import java.util.*; import java.util.stream.Collectors; @Service @@ -93,10 +94,24 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { } } - //根据配置查询生产队列工位推送信息 + //根据配置查询创建状态的生产队列工位推送信息 @Override public List getQueueOrderPushList(String organizeCode, List queueOrderPushCellCfgList) { if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return null; + //搜集推送来源代码 去重; 根据生产线代码,推送来源代码集合查询创建状态的生产队列工位推送信息【创建时间正序】 + List queueOrderPushList = getQueueOrderPushListByStatus(organizeCode, queueOrderPushCellCfgList, CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()); + //条码去重 + return CollectionUtils.isEmpty(queueOrderPushList) ? null : + queueOrderPushList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).distinct() + .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesQueueOrderPush::getProductSn))), ArrayList::new)); + + } + + //根据配置查询生产队列工位推送信息 + @Override + public List getQueueOrderPushListByStatus(String organizeCode, List queueOrderPushCellCfgList, Integer cdtAscOrDesc, Integer... queueStatusArr) { + + if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return null; //搜集推送来源代码 去重 List pushSourceCodeList = (queueOrderPushCellCfgList.stream() @@ -104,18 +119,50 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { ).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); if (CollectionUtils.isEmpty(pushSourceCodeList)) return null; - //根据生产线代码,推送来源代码集合查询创建状态的生产队列工位推送信息【创建时间正序】 + //根据生产线代码,推送来源代码集合查询入参状态的生产队列工位推送信息【创建时间正序】 DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(queueOrderPushCellCfgList.get(0).getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue(), MesPcnExtConstWords.QUEUE_STATUS, packBean); + + if (null != queueStatusArr && queueStatusArr.length == 1) + DdlPreparedPack.getNumEqualPack(queueStatusArr[0], MesPcnExtConstWords.QUEUE_STATUS, packBean); + else if (null != queueStatusArr) DdlPreparedPack.getInPackArray(queueStatusArr, MesPcnExtConstWords.QUEUE_STATUS, packBean); + if (pushSourceCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(pushSourceCodeList.get(0), MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); else DdlPreparedPack.getInPackList(pushSourceCodeList, MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); - List queueOrderPushList = queueOrderPushRepository.findByHqlWhere(packBean); - //条码去重 - return CollectionUtils.isEmpty(queueOrderPushList) ? null : - queueOrderPushList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProductSn()))).distinct() - .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesQueueOrderPush::getProductSn))), ArrayList::new)); + if (!StringUtils.isEmpty(cdtAscOrDesc)) DdlPreparedPack.getOrderByPack(new Object[]{cdtAscOrDesc}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); + + return queueOrderPushRepository.findByHqlWhere(packBean); } + + //根据分页条件查询生产队列工位推送信息 + @Override + public ListPager queryQueueOrderPushListPager(Map paramMap, List pushSourceCodeList, Pager pager) { + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE)); + + DdlPreparedPack.getStringEqualPack(paramMap.get(MesPcnExtConstWords.WORK_CENTER_CODE), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getStringEqualPack(paramMap.get(MesPcnExtConstWords.PART_NO), MesPcnExtConstWords.PART_NO, packBean); + DdlPreparedPack.getStringEqualPack(paramMap.get(MesPcnExtConstWords.PART_PROD_GROUP_CODE), MesPcnExtConstWords.PART_PROD_GROUP_CODE, packBean); + + DdlPreparedPack.getStringLikerPack(paramMap.get(MesPcnExtConstWords.WORK_ORDER_NO), MesPcnExtConstWords.WORK_ORDER_NO, packBean); + DdlPreparedPack.getStringLikerPack(paramMap.get(MesPcnExtConstWords.CUST_SN), MesPcnExtConstWords.CUST_SN, packBean); + + if (pushSourceCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(pushSourceCodeList.get(0), MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); + else DdlPreparedPack.getInPackList(pushSourceCodeList, MesPcnExtConstWords.PUSH_SOURCE_CODE, packBean); + + if (paramMap.containsKey(MesPcnExtConstWords.QUEUE_STATUS)) { + List queueStatusList = Arrays.stream(paramMap.get(MesPcnExtConstWords.QUEUE_STATUS).split(MesPcnExtConstWords.COMMA)).map(Integer::parseInt).collect(Collectors.toList()); + if (queueStatusList.size() == 1) DdlPreparedPack.getNumEqualPack(queueStatusList.get(0), MesPcnExtConstWords.QUEUE_STATUS, packBean); + else DdlPreparedPack.getInPackList(queueStatusList, MesPcnExtConstWords.QUEUE_STATUS, packBean); + } + + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); + + pager = PagerHelper.getPager(pager, queueOrderPushRepository.findByHqlWhereCount(packBean)); + List list = queueOrderPushRepository.findByHqlWherePage(packBean, pager); + + return new ListPager<>(list, pager); + } + } 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 a477a6c..d217ba7 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 @@ -264,7 +264,7 @@ public class MesProductionSortModuleService extends BaseModuleService { String color = MesExtEnumUtil.COLOR.GREEN.getValue(); if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) color = MesExtEnumUtil.COLOR.WHITE.getValue(); //跳号标黄色 - if (index < queueOrderList.size() && checkJumpNumber(queueOrderModelList.get(index).getWorkOrderSeq(), queueOrderModel.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); + if (index < queueOrderList.size() && checkSamePartProdGroupCode(queueOrderModelList.get(index).getPartProdGroupCode(), queueOrderModel.getPartProdGroupCode()) && checkJumpNumber(queueOrderModelList.get(index).getWorkOrderSeq(), queueOrderModel.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); queueOrderModel.setColor(color); index ++; } @@ -272,8 +272,14 @@ public class MesProductionSortModuleService extends BaseModuleService { return queueOrderModelList; } + //验证生成 + private Boolean checkSamePartProdGroupCode(String nextPartProdGroupCode, String partProdGroupCode) { + if (StringUtils.isEmpty(nextPartProdGroupCode) || StringUtils.isEmpty(partProdGroupCode)) return false; + return nextPartProdGroupCode.equals(partProdGroupCode); + } + //标黄是跳号的工单, 不是跳过的工单 - private boolean checkJumpNumber(String nextWorkOrderSeq, String currentWorkOrderSeq) { + private Boolean checkJumpNumber(String nextWorkOrderSeq, String currentWorkOrderSeq) { if (StringUtils.isEmpty(nextWorkOrderSeq) || StringUtils.isEmpty(currentWorkOrderSeq) || !CheckTool.isNumber(nextWorkOrderSeq) || !CheckTool.isNumber(currentWorkOrderSeq)) return false; return Integer.parseInt(currentWorkOrderSeq) != Integer.parseInt(nextWorkOrderSeq) + MesPcnExtConstWords.ONE; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java new file mode 100644 index 0000000..c4ab80b --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionQueueOrderPushService.java @@ -0,0 +1,164 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEnumExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesQueueOrderPushService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.common.PagerHelper; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description : 工位参数按钮事件接口实现【队列推送】 + **/ +@Service +public class MesFunctionQueueOrderPushService extends BaseSwsService implements IFsmModuleFunctionService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesQueueOrderPushService queueOrderPushService; + + @Autowired + private IMesEnumExtService enumExtService; + + @Override + public Object doCustomApiDispatch(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { + + //页面渲染数据集 + Map resultMap = new HashMap<>(); + + //验证参数 + Map paramMap = null; + try { + paramMap = StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? null : JSONObject.parseObject(buttonDynamicModel.getFunctionValue(), Map.class); + } catch (Exception e) { + } + if (CollectionUtils.isEmpty(paramMap) || StringUtils.isEmpty(BUSI_TYPE.valueOfDescription(paramMap.get(MesPcnExtConstWords.BUSI_TYPE)))) { + resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT.getValue()); + return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]参数异常!", buttonDynamicModel.getButtonName())); + } + + //查询 + if (BUSI_TYPE.ONE.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) return queryQueueOrderPush(reqBean, resultMap, paramMap); + + this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()), + String.format("[%s]%s: %s", buttonDynamicModel.getButtonName(), BUSI_TYPE.valueOfDescription(paramMap.get(MesPcnExtConstWords.BUSI_TYPE)), JSONObject.toJSONString(paramMap)), + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + + resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()); + resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT.getValue()); + + if (BUSI_TYPE.TWO.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) queryQueueOrderPush(reqBean, resultMap, paramMap); + else if (BUSI_TYPE.THREE.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) queryQueueOrderPush(reqBean, resultMap, paramMap); + else queryQueueOrderPush(reqBean, resultMap, paramMap); + + if (!resultMap.containsKey(MesPcnExtConstWords.MESSAGE)) { + resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()); + resultMap.put(MesPcnExtConstWords.MESSAGE, String.format("[%s]%s成功!", buttonDynamicModel.getButtonName(), BUSI_TYPE.valueOfDescription(paramMap.get(MesPcnExtConstWords.BUSI_TYPE)))); + } + + return resultMap; + + } + + private Object queryQueueOrderPush(StationRequestBean reqBean, Map resultMap, Map paramMap) { + + Pager pager = new Pager(); + pager.setCurrentPage(paramMap.containsKey(MesPcnExtConstWords.CURRENT_PAGE) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.CURRENT_PAGE)) : MesPcnExtConstWords.ONE); + pager.setPageSize(paramMap.containsKey(MesPcnExtConstWords.PAGE_SIZE) ? Integer.valueOf(paramMap.get(MesPcnExtConstWords.PAGE_SIZE)) : MesPcnExtConstWords.FIFTY); + + resultMap.put(MesPcnExtConstWords.QUEUE_STATUS, enumExtService.doGetMesEnumByEnumName(reqBean.getOrganizeCode(), MesExtEnumUtil.QUEUE_ORDER_STATUS.class.getSimpleName())); + + //处理排序线推单上下文, 返回推送工位类型对应的配置信息 【来源工位】 + List queueOrderPushCellCfgList = productionProcessContextStepService.dispatchQueueOrderPushCellCfgContext(reqBean, MesExtEnumUtil.QUEUE_ORDER_CELL_PUSH_TYPE.TARGET.getValue()); + List pushSourceCodeList = (queueOrderPushCellCfgList.stream() + .filter(o -> (null != o && !StringUtils.isEmpty(o.getPushSourceCode()))).map(MesQueueOrderPushCellCfg::getPushSourceCode).collect(Collectors.toList()) + ).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(pushSourceCodeList)) resultMap.put(MesPcnExtConstWords.PUSH_SOURCE_CODE, pushSourceCodeList); + else { + pager = PagerHelper.getPager(pager, MesPcnExtConstWords.ZERO); + resultMap.put(MesPcnExtConstWords.DATA, new ListPager<>(new ArrayList<>(), pager)); + return resultMap; + } + + paramMap.put(MesPcnExtConstWords.ORGANIZE_CODE, reqBean.getOrganizeCode()); + //根据配置查询生产队列工位推送信息 + resultMap.put(MesPcnExtConstWords.DATA, queueOrderPushService.queryQueueOrderPushListPager(paramMap, pushSourceCodeList, pager)); + return resultMap; + + } + + //返回提示信息 + private Object packResultMap(StationRequestBean reqBean, StationResultBean resultBean, Map resultMap, String message) { + this.sendMessage(reqBean, resultBean, message, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + resultMap.put(MesPcnExtConstWords.MESSAGE, message); + return resultMap; + } + + //业务操作 + enum BUSI_TYPE { + + ONE("1", "查询"), + + TWO("2", "新增"), + + THREE("3", "修改"), + + FOUR("4", "取消"); + + private String value; + + private String description; + + BUSI_TYPE(String value, String description) { + + this.value = value; + + this.description = description; + + } + + public String getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public static String valueOfDescription(String val) { + if (StringUtils.isEmpty(val)) return null; + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (val.equals(values()[i].value)) { + tmp = values()[i].description; + } + } + return tmp; + } + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java index dc81d47..744621b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java @@ -103,7 +103,7 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService { MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - //根据配置查询生产队列工位推送信息 + //推送来源代码集合查询创建状态的生产队列工位推送信息 List queueOrderPushList = queueOrderPushService.getQueueOrderPushList(reqBean.getOrganizeCode(), queueOrderPushCellCfgList); if (CollectionUtils.isEmpty(queueOrderPushList) || queueOrderPushList.size() < cellEquipContext.getCavity()) { return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().checkRepeat(), stepResult, 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 a2e396e..24497c4 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 @@ -363,6 +363,14 @@ public class MesPcnExtConstWords { public static final String PROCESS_SEQ = "processSeq"; //推送来源代码 public static final String PUSH_SOURCE_CODE = "pushSourceCode"; + //业务类型 + public static final String BUSI_TYPE = "busiType"; + //当前页数 + public static final String CURRENT_PAGE = "currentPage"; + //页面数量 + public static final String PAGE_SIZE = "pageSize"; + //枚举代码 + public static final String ENUM_CODE = "enumCode"; //BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties)