diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesProdShiftRecordService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesProdShiftRecordService.java index 76fc589..efcb687 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesProdShiftRecordService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesProdShiftRecordService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.base; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProdShiftRecord; @@ -40,4 +41,10 @@ public interface IMesProdShiftRecordService { @ApiOperation(value = "获取展示组件班组班次内容") List getShiftRecordStationKvBeans(String organizeCode, String workCenterCode); + @ApiOperation(value = "获取生产线的当前班组班次信息") + MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode); + + @ApiOperation(value = "封装当前班组班次信息") + MesProdShiftContext getMesProdShiftKvBean(List prodShiftDataContext); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java index dabbeac..1bb121b 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java @@ -42,12 +42,12 @@ public interface IMesProductionCustomContextStepService { @ApiOperation(value = "发送工步内容") void sendStepContextMessage(StationRequestBean reqBean, List resultList); - @ApiOperation(value = "验证上下文班次班组信息是否存在") - Boolean checkProdShiftDataIsExistContext(String orgainzeCode, String workCenterCode); - @ApiOperation(value = "获取上下文班次班组信息") List getProdShiftDataContext(String orgainzeCode, String workCenterCode); + @ApiOperation(value = "验证上下文班次班组信息是否存在") + Boolean checkProdShiftDataIsExistContext(String orgainzeCode, String workCenterCode); + @ApiOperation(value = "保存上下文班次班组信息", notes = "[JSON]List") Boolean dispatchProdShiftDataContext(String orgainzeCode, String workCenterCode, List prodShiftDatList); @@ -57,18 +57,18 @@ public interface IMesProductionCustomContextStepService { @ApiOperation(value = "获取上下文工位加工数统计信息") List getProductionStatisticsContext(StationRequestBean reqBean); + @ApiOperation(value = "封装加工数信息") + List getProductionStatisticsContext(MesProdShiftContext mesProdShiftKvBean, String countStr); + @ApiOperation(value = "保存上下文工位加工数统计信息", notes = "[JSON]List") Boolean dispatchProductionStatisticsContext(StationRequestBean reqBean, List prodShiftDatList); @ApiOperation(value = "新增上下文工位加工数统计信息") - Integer dispatchProductionStatisticsContext(StationRequestBean reqBean, int count); + Integer dispatchProductionStatisticsContext(StationRequestBean reqBean, int count, MesProdShiftContext mesProdShiftKvBean); @ApiOperation(value = "删除上下文工位加工数统计信息") void removeProductionStatisticsContext(StationRequestBean reqBean); - @ApiOperation(value = "获取生产线的当前班组班次信息") - MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode); - @ApiOperation(value = "根据装配件信息获取可复用条码") String getRepeatAssemblySn(String organizeCode, String workCenterCode, String workCellCode, MesProductionAssemblyContext productionAssemblyContext); diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteVariableService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteVariableService.java deleted file mode 100644 index 6be41a8..0000000 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IWriteVariableService.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.estsh.i3plus.ext.mes.pcn.api.busi; - - -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult; -import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * @Description : 发送加工参数的抽象类 - * @Author : zxw - **/ -public interface IWriteVariableService { - - /** - * 写值 - * @param value - * @param equipmentVariable - * @param kepwareFlag - */ - MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index,Integer maxRetryTimes); - - /** - * 转成需要的值 - * @param reqBean - * @param value - * @param foreignKey - * @param index - * @return - */ - String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index); - -} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesProdShiftRecordServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesProdShiftRecordServiceImpl.java index 2af058b..67f7a09 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesProdShiftRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesProdShiftRecordServiceImpl.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesShiftService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService; 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.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -256,6 +257,7 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService //获取展示组件班组班次内容 @Override public List getShiftRecordStationKvBeans(String organizeCode, String workCenterCode) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null; // 获取班次信息 redis List prodShiftDataContext = productionCustomContextStepService.getProdShiftDataContext(organizeCode, workCenterCode); if (CollectionUtils.isEmpty(prodShiftDataContext)) { @@ -268,4 +270,29 @@ public class MesProdShiftRecordServiceImpl implements IMesProdShiftRecordService } return prodShiftDataContext; } + + //获取生产线的当前班组班次信息 + @Override + public MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode) { + + List prodShiftDataContext = getShiftRecordStationKvBeans(organizeCode, workCenterCode); + if (CollectionUtils.isEmpty(prodShiftDataContext)) return null; + + return getMesProdShiftKvBean(prodShiftDataContext); + } + + //封装当前班组班次信息 + @Override + public MesProdShiftContext getMesProdShiftKvBean(List prodShiftDataContext) { + if (CollectionUtils.isEmpty(prodShiftDataContext)) return null; + + StationKvBean shiftGroupKvBean = prodShiftDataContext.stream().filter(stationKvBean -> com.google.common.base.Objects.equal(stationKvBean.getKey(), MesPcnExtConstWords.SHIFT_GROUP)).findFirst().orElse(null); + StationKvBean shiftCodeKvBean = prodShiftDataContext.stream().filter(stationKvBean -> com.google.common.base.Objects.equal(stationKvBean.getKey(), MesPcnExtConstWords.SHIFT_CODE)).findFirst().orElse(null); + + MesProdShiftContext mesProdShiftContext = new MesProdShiftContext(); + mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftCodeKvBean.getValue()); + mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftGroupKvBean.getValue()); + return mesProdShiftContext; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtService.java index 2a9950b..e55e29c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/equiplog/MesEquipmentRwExtService.java @@ -1,7 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.WriteVariableService; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService; import cn.estsh.i3plus.platform.common.tool.HttpClientTool; @@ -32,7 +31,7 @@ import java.util.stream.Collectors; @Service public class MesEquipmentRwExtService implements IMesEquipVariableRwExtService { - public static final Logger LOGGER = LoggerFactory.getLogger(WriteVariableService.class); + public static final Logger LOGGER = LoggerFactory.getLogger(MesEquipmentRwExtService.class); @Autowired private IConfigService configService; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/WriteVariableService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/WriteVariableService.java deleted file mode 100644 index b8d187a..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/WriteVariableService.java +++ /dev/null @@ -1,162 +0,0 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch; - - -import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.BaseMesScheduleJob; -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.MesProductionPsInContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult; -import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -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.Date; -import java.util.List; -import java.util.Objects; - -/** - * @Description : 发送加工参数的抽象类 - * @Author : zxw - **/ -@Service -public class WriteVariableService implements IWriteVariableService { - - public static final Logger LOGGER = LoggerFactory.getLogger(WriteVariableService.class); - - - @Autowired - private IMesEquipVariableRwExtService equipVariableRwExtService; - - @Autowired - private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService; - - @Autowired - private IMesProductionDispatchContextStepService productionDispatchContextStepService; - - @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - /** - * 写值 - * @param value - * @param equipmentVariable - * @param kepwareFlag - */ - public MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index, Integer maxTimes) { - // 需要不同的策略不同的转换方式 - String newValue = transferValue(reqBean, value, foreignKey, index); - if (StringUtils.isEmpty(newValue)) { - LOGGER.info("发送的值为空,不予发送"); - return null; - } - MesEquipVariableRwResult mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag); - if (!mesEquipVariableRwResult.getIsSuccessed() && mesEquipVariableRwResult.getIsNoCfg()) { - for (int i = 0;i < maxTimes; i++) { - - mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag); - if (mesEquipVariableRwResult.getIsSuccessed()){ - break; - } - } - } - return mesEquipVariableRwResult; - } - - - @Override - public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) { - List productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean); - List productionPsOutContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean); - List productionPsInContexts = mesProductionDispatchContextStepService.getProductionPsInContext(reqBean); - - - - String productResult = productionDispatchContextStepService.getProductResultContext(reqBean); - MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); - - - - MesProductionPartContext mesProductionPartContext = null; - MesProductionPsOutContext productionPsOutSn = null; - - if (!Objects.isNull(foreignKey)) { - if (!CollectionUtils.isEmpty(productionPartContextList)) { - mesProductionPartContext = productionPartContextList.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null); - } - if (!CollectionUtils.isEmpty(productionPsOutContexts)) { - productionPsOutSn = productionPsOutContexts.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null); - } - String newValue = ""; - if (StringUtils.isEmpty(value)) { - return null; - } - if (mesProductionPartContext == null) { - mesProductionPartContext = new MesProductionPartContext(); - } - if (productionPsOutSn == null) { - productionPsOutSn = new MesProductionPsOutContext(); - } - switch (value.toUpperCase()) { - case "%RESULT%" : newValue = mesProductionPartContext.getPartNo(); break; - case "%PARAM%": newValue = mesProductionPartContext.getWorkOrderNo(); break; - case "%ORDERCODE%": newValue = mesProductionPartContext.getWorkOrderNo(); break; - case "%CUSTPARTNO%": newValue = mesProductionPartContext.getCustPartNo(); break; - case "%EMPLOYEENO%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名 - case "%BARCODE%": newValue = productionPsOutSn.getProductSn(); break;// 条码 - case "%BARCODE2%": newValue = productionPsOutContexts.get(1).getProductSn(); break;///条码 - case "%BARCODE3%": newValue = productionPsOutContexts.get(2).getProductSn(); break;///条码 - case "%BARCODE4%": newValue = productionPsOutContexts.get(3).getProductSn(); break;///条码 - case "%BARCODE5%": newValue = productionPsOutContexts.get(4).getProductSn(); break;///条码 - case "%BARCODE6%": newValue = productionPsOutContexts.get(5).getProductSn(); break;///条码 - case "%BARCODE7%": newValue = productionPsOutContexts.get(6).getProductSn(); break;///条码 - case "%BARCODE8%": newValue = productionPsOutContexts.get(7).getProductSn(); break;///条码 - case "%BARCODE9%": newValue = productionPsOutContexts.get(8).getProductSn(); break;///条码 - case "%BARCODE10%": newValue = productionPsOutContexts.get(9).getProductSn(); break;///条码 - case "%BARCODE11%": newValue = productionPsOutContexts.get(10).getProductSn(); break;///条码 - case "%BARCODE12%": newValue = productionPsOutContexts.get(11).getProductSn(); break;///条码 - case "%BARCODE13%": newValue = productionPsOutContexts.get(12).getProductSn(); break;///条码 - case "%BARCODE14%": newValue = productionPsOutContexts.get(13).getProductSn(); break;///条码 - case "%BARCODE15%": newValue = productionPsOutContexts.get(14).getProductSn(); break;///条码 - case "%BARCODE16%": newValue = productionPsOutContexts.get(15).getProductSn(); break;///条码 - case "%BARCODE17%": newValue = productionPsOutContexts.get(16).getProductSn(); break;///条码 - case "%BARCODE18%": newValue = productionPsOutContexts.get(17).getProductSn(); break;///条码 - case "%BARCODE19%": newValue = productionPsOutContexts.get(18).getProductSn(); break;///条码 - case "%BARCODE20%": newValue = productionPsOutContexts.get(19).getProductSn(); break;///条码 - case "%CREATEDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///加工记录的创建时间 - case "%CREATEUSER%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名 - case "%SHIFT%": newValue = mesProdShiftKvBean.getShiftGroup(); break;///当前操作员工号 用户名 - //case "%STATUS%": newValue = productionPsInContexts.get(0).get() +"" ; break;//进料条码状态 - // case "%CUSTORDERCOD%": newValue = mesProductionPartContext.getCustOrderNo(); break;///客户订单号 - case "%PARTNO%": newValue = mesProductionPartContext.getPartNo(); break;///工单对应的零件号 - //case "%VINCODE%": newValue = mesProductionPartContext.getv(); break;///工单对应的vincode - case "%SEQUENCE%": newValue = reqBean.getUserInfo(); break;///工单顺序号 不是生产顺序号 - case "%CUSTBARCODE%": newValue = productionPsOutSn.getCustSn(); break;///客户条码 - case "%GETDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///客户条码 - - default: - newValue = value; - } - return newValue; - } else { - if (index != null && foreignKey == null) { - mesProductionPartContext = productionPartContextList.get(index); - if (mesProductionPartContext == null || Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesProductionPartContext.getIsFinishCode())) { - return null; - } - return value; - } - } - return null; - } - - -} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java index 84df841..c6011f2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepServi 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.serviceimpl.station.function.MesFunctionProductionStatisticsService; 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; @@ -73,37 +74,44 @@ public class MesProductionNoSortModuleService extends BaseModuleService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean, false); //配置错误 抛出异常 if (!productionProcessContext.getSuccess()) { - this.sendMessage(reqBean, new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN), String.format("信息: %s!", productionProcessContext.getMessage()), MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE, MesPcnEnumUtil.STATION_DATA_TYPE.TITLE); - this.sendMessage(reqBean, new StationResultBean().writeDbLog(), productionProcessContext.getMessage(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + this.sendMessage(reqBean, new StationResultBean() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()) + .addStationResultBeans(new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN) + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TITLE.getValue()).message(String.format("信息: %s!", productionProcessContext.getMessage()))) + .addStationResultBeans(new StationResultBean().writeDbLog() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()).message(productionProcessContext.getMessage())) + ); + MesPcnException.throwBusiException(productionProcessContext.getMessage()); } - // 获取工单信息 - List> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean); - //获取班次信息,先查询缓存,缓存没有在查询数据库 List prodShiftDataContext = prodShiftRecordService.getShiftRecordStationKvBeans(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); if (CollectionUtils.isEmpty(prodShiftDataContext)) { - this.sendMessage(reqBean, new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN), "信息: 请先开班!", MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE, MesPcnEnumUtil.STATION_DATA_TYPE.TITLE); - this.sendMessage(reqBean, new StationResultBean().writeDbLog(), "请先开班!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + this.sendMessage(reqBean, new StationResultBean() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()) + .addStationResultBeans(new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN) + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TITLE.getValue()).message("信息: 请先开班!")) + .addStationResultBeans(new StationResultBean().writeDbLog() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()).message("请先开班!")) + ); + MesPcnException.throwBusiException("请先开班!"); } - // 发送班次班组和工单 + + // 获取工单信息 + List> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean); + + //封装数据: 班次班组和工单 StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext); - this.sendMessage(reqBean, resultBean); - - //获取生产线的当前班组班次信息 - MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); - // 整合班次加工数量 - List productionStatisticsContext = productionCustomContextStepService.getProductionStatisticsContext(reqBean); - if (CollectionUtils.isEmpty(productionStatisticsContext)) { - productionStatisticsContext = StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), - new StationKvBean(new StringJoiner(MesPcnExtConstWords.AND).add(mesProdShiftKvBean.getShiftGroup()).add(mesProdShiftKvBean.getShiftCode()).toString(), "加工数", MesPcnExtConstWords.ZERO_STR), - new StationKvBean(MesPcnExtConstWords.COLOR, "颜色", MesExtEnumUtil.COLOR.BLACK.getValue())); - } - StationResultBean shiftCountBean = getStationResultBean(reqBean, productionStatisticsContext, productionProcessContext.getWorkCell(), mesProdShiftKvBean); - this.sendMessage(reqBean, shiftCountBean); + //封装当前班组班次信息 + MesProdShiftContext mesProdShiftKvBean = prodShiftRecordService.getMesProdShiftKvBean(prodShiftDataContext); + //封装工位展示的客制化信息 (优先级: 工位图/视频/柱状图-->加工数) + StationResultBean resultBeanCustom = getStationResultBean(reqBean, productionProcessContext.getWorkCell(), mesProdShiftKvBean); + + if (null == resultBeanCustom) this.sendMessage(reqBean, resultBean); + else this.sendMessage(reqBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()).addStationResultBeans(resultBean).addStationResultBeans(resultBeanCustom)); //验证工位是否锁定 reqBean.getDataMap().put(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_INIT_MODULE.getCode(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); @@ -126,65 +134,61 @@ public class MesProductionNoSortModuleService extends BaseModuleService { return resultBean; } - private StationResultBean getStationResultBean(StationRequestBean reqBean, List productionStatisticsContext, MesWorkCell mesWorkCell, MesProdShiftContext mesProdShiftKvBean) { + //封装工位展示的客制化信息(优先级: 工位图/视频/柱状图-->加工数) + private StationResultBean getStationResultBean(StationRequestBean reqBean, MesWorkCell workCell, MesProdShiftContext mesProdShiftKvBean) { + StationResultBean resultBean = new StationResultBean(); resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue()); - String dataType = MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue(); - JSONObject reqJson = new JSONObject(); - String url = ""; - - List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); - - List> orderQtyKvBeans = new ArrayList<>(); - if (!StringUtils.isEmpty(mesWorkCell.getFileId())) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + resultBean.setCustomPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL); - DdlPreparedPack.getNumEqualPack(Long.parseLong(mesWorkCell.getFileId()), MesPcnExtConstWords.ID, packBean); - MesFile mesFile = mesFileRepository.getByProperty(packBean); - if (mesFile != null) { - url = mesFile.getFileUrl(); - } - } - if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue(); - List workOrderList = workOrderExtService.getWorkOrderListByShiftCode(reqBean.getOrganizeCode(), mesWorkCell.getWorkCenterCode(), mesProdShiftKvBean.getShiftCode()); + //验证是否展示柱状图 + if (!StringUtils.isEmpty(workCell.getIsShowMsg()) && workCell.getIsShowMsg().compareTo(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue()) == 0) { + List workOrderList = workOrderExtService.getWorkOrderListByShiftCode(reqBean.getOrganizeCode(), workCell.getWorkCenterCode(), mesProdShiftKvBean.getShiftCode()); + List> stationKvBeans = new ArrayList<>(); if (CollectionUtils.isEmpty(workOrderList)) { - StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(), + StationKvBeanUtil.addStationKvBeanList(stationKvBeans, new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", MesPcnExtConstWords.ZERO_STR), new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", MesPcnExtConstWords.ZERO_STR)); } else { Double qty = workOrderList.stream().map(MesWorkOrder::getQty).reduce((a, b) -> a + b).get(); Double complateQty = workOrderList.stream().map(MesWorkOrder::getCompleteQty).reduce((a, b) -> a + b).get(); - StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(), + StationKvBeanUtil.addStationKvBeanList(stationKvBeans, new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", qty.toString()), new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", complateQty.toString())); } - if (!CollectionUtils.isEmpty(productionPartContextList)) { - + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue()); + resultBean.setResultList(stationKvBeans); + return resultBean; + } + //判断是否配置的是展示文件 + String url = null; + if (!StringUtils.isEmpty(workCell.getIsShowMsg()) && !StringUtils.isEmpty(MesExtEnumUtil.WORK_FILE_TYPE.valueOfDescription(workCell.getIsShowMsg()))) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(Long.parseLong(workCell.getFileId()), MesPcnExtConstWords.ID, packBean); + MesFile mesFile = mesFileRepository.getByProperty(packBean); + url = (null != mesFile && !StringUtils.isEmpty(mesFile.getFileUrl())) ? mesFile.getFileUrl() : null; + if (!StringUtils.isEmpty(url)) { + JSONObject reqJson = new JSONObject(); + if (workCell.getIsShowMsg().compareTo(MesExtEnumUtil.WORK_FILE_TYPE.WORK_CELL_PICTURE.getValue()) == 0) resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.IMAGE.getValue()); + else resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.VIDEO.getValue()); + reqJson.put(MesPcnExtConstWords.URL, url); + resultBean.setResultObj(reqJson); + return resultBean; } - resultBean.setResultList(orderQtyKvBeans); - } else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.PROD_VIDEO.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.VIDEO.getValue(); - reqJson.put(MesPcnExtConstWords.URL, url); - resultBean.setResultObj(reqJson); - } else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.WORK_CELL_PICTURE.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.IMAGE.getValue(); - reqJson.put(MesPcnExtConstWords.URL, url); - resultBean.setResultObj(reqJson); } - if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesWorkCell.getIsCountFinish())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue(); + if (StringUtils.isEmpty(url) && !StringUtils.isEmpty(workCell.getIsCountFinish()) && workCell.getIsCountFinish().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) { + //获取上下文工位加工数统计信息 + List productionStatisticsContext = productionCustomContextStepService.getProductionStatisticsContext(reqBean); + if (CollectionUtils.isEmpty(productionStatisticsContext)) productionStatisticsContext = productionCustomContextStepService.getProductionStatisticsContext(mesProdShiftKvBean, MesPcnExtConstWords.ZERO_STR); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()); resultBean.setResultList(productionStatisticsContext); + return resultBean; } - resultBean.setDataType(dataType); - resultBean.setCustomPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL); - - - return resultBean; + return null; } @Override 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 6c3da5e..8085874 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 @@ -18,6 +18,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder; +import cn.estsh.i3plus.pojo.mes.bean.MesStateMachineStatus; import cn.estsh.i3plus.pojo.mes.model.AttrBean; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; @@ -34,6 +35,7 @@ import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -64,33 +66,47 @@ public class MesProductionSortModuleService extends BaseModuleService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean, false); //配置错误 抛出异常 if (!productionProcessContext.getSuccess()) { - this.sendMessage(reqBean, new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN), String.format("信息: %s!", productionProcessContext.getMessage()), MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE, MesPcnEnumUtil.STATION_DATA_TYPE.TITLE); - this.sendMessage(reqBean, new StationResultBean().writeDbLog(), productionProcessContext.getMessage(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + this.sendMessage(reqBean, new StationResultBean() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()) + .addStationResultBeans(new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN) + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TITLE.getValue()).message(String.format("信息: %s!", productionProcessContext.getMessage()))) + .addStationResultBeans(new StationResultBean().writeDbLog() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()).message(productionProcessContext.getMessage())) + ); + MesPcnException.throwBusiException(productionProcessContext.getMessage()); } - // 获取工单信息 - List> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean); - - // 获取产成零件信息 - List productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean); - // 排除掉空腔的产成零件 - productionPartContext = CollectionUtils.isEmpty(productionPartContext) ? null : productionPartContext.stream().filter(o -> o.getForeignKey() != null).collect(Collectors.toList()); - //获取班次信息,先查询缓存,缓存没有在查询数据库 List prodShiftDataContext = prodShiftRecordService.getShiftRecordStationKvBeans(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); if (CollectionUtils.isEmpty(prodShiftDataContext)) { - this.sendMessage(reqBean, new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN), "信息: 请先开班!", MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE, MesPcnEnumUtil.STATION_DATA_TYPE.TITLE); - this.sendMessage(reqBean, new StationResultBean().writeDbLog(), "请先开班!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + this.sendMessage(reqBean, new StationResultBean() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()) + .addStationResultBeans(new StationResultBean().resultObj(MesPcnExtConstWords.STEP_DISABLE_SCAN) + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_TITLE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TITLE.getValue()).message("信息: 请先开班!")) + .addStationResultBeans(new StationResultBean().writeDbLog() + .busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()).message("请先开班!")) + ); + MesPcnException.throwBusiException("请先开班!"); } + + // 获取工单信息 + List> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean); + // 发送班次班组和工单 StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext); - this.sendMessage(reqBean, resultBean); - // 获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条 - resultBean = getStationResultBean(queryQueueOrderTopFiftyProductSeq(reqBean, getNewPartProdGroupCode(reqBean, productionPartContext))); - this.sendMessage(reqBean, resultBean); + // 获取产成零件信息 + List productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean); + // 排除掉空腔的产成零件 + productionPartContext = CollectionUtils.isEmpty(productionPartContext) ? null : productionPartContext.stream().filter(o -> !StringUtils.isEmpty(o.getForeignKey())).collect(Collectors.toList()); + + //封装工位展示的客制化信息 (获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条) + StationResultBean resultBeanCustom = getStationResultBean(queryQueueOrderTopFiftyProductSeq(reqBean, getNewPartProdGroupCode(reqBean, productionPartContext))); + + if (null == resultBeanCustom) this.sendMessage(reqBean, resultBean); + else this.sendMessage(reqBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()).addStationResultBeans(resultBean).addStationResultBeans(resultBeanCustom)); //验证工位是否锁定 reqBean.getDataMap().put(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_INIT_MODULE.getCode(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); @@ -99,9 +115,9 @@ public class MesProductionSortModuleService extends BaseModuleService { } private StationResultBean getStationResultBean(List mesQueueOrderModelList) { + if (CollectionUtils.isEmpty(mesQueueOrderModelList)) return null; 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()) + .dataType(MesPcnEnumUtil.STATION_DATA_TYPE.TABLE.getValue()).customPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL) .dataAttrList(dataAttrList()).resultList(mesQueueOrderModelList); } @@ -117,9 +133,9 @@ public class MesProductionSortModuleService extends BaseModuleService { private List queryQueueOrderTopFiftyProductSeq(StationRequestBean reqBean, List partProdGroupCodeList) { - if (CollectionUtils.isEmpty(partProdGroupCodeList)) return new ArrayList<>(); + if (CollectionUtils.isEmpty(partProdGroupCodeList)) return null; - List queueOrderModels = new ArrayList<>(); + List queueOrderModelList = null; for (String partProdGroupCode : partProdGroupCodeList) { Pager pager = new Pager(); pager.setStartRow(1); @@ -133,9 +149,8 @@ public class MesProductionSortModuleService extends BaseModuleService { List queueOrderList = queueOrderRepository.findByHqlWherePage(packBean, pager); if (!CollectionUtils.isEmpty(queueOrderList)) { - - boolean isComplete = false; - int index = MesPcnExtConstWords.ONE; + Boolean isComplete = false; + Integer index = MesPcnExtConstWords.ONE; for (MesQueueOrder mesQueueOrder : queueOrderList) { MesQueueOrderModel queueOrderModel = new MesQueueOrderModel(); BeanUtils.copyProperties(mesQueueOrder, queueOrderModel); @@ -145,13 +160,15 @@ public class MesProductionSortModuleService extends BaseModuleService { //跳号标黄色 if (index < queueOrderList.size() && checkJumpNumber(queueOrderList.get(index).getWorkOrderSeq(), mesQueueOrder.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); queueOrderModel.setColor(color); - queueOrderModels.add(queueOrderModel); - index++; + + if (CollectionUtils.isEmpty(queueOrderModelList)) queueOrderModelList = new ArrayList<>(); + queueOrderModelList.add(queueOrderModel); + index ++; } } } - return queueOrderModels; + return queueOrderModelList; } private List getNewPartProdGroupCode(StationRequestBean reqBean, List productionPartContext) { @@ -165,7 +182,6 @@ public class MesProductionSortModuleService extends BaseModuleService { return queueOrder == null ? null : Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList()); } - 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; @@ -192,4 +208,10 @@ public class MesProductionSortModuleService extends BaseModuleService { return resultBean; } + @Override + public boolean execStateModule(StationRequestBean reqBean, List states, Map wcpcMap) { + init(reqBean); + return true; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java index 2460337..a7a9ced 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java @@ -1,39 +1,29 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; +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.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.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.mes.pcn.util.StationKvBeanUtil; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesFile; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; 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.util.MesExtEnumUtil; -import com.alibaba.fastjson.JSONObject; -import com.google.common.base.Objects; 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.List; -import java.util.StringJoiner; /** * @Description : 清除加工数【按钮】 @@ -48,91 +38,56 @@ public class MesFunctionProductionStatisticsService extends BaseSwsService imple private MesFileRepository mesFileRepository; @Autowired - private IMesWorkOrderExtService workOrderExtService; - - @Autowired - private IMesProductionDispatchContextStepService productionDispatchContextStepService; + private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired - private IMesProductionProcessContextStepService productionProcessContextStepService; + private IMesProdShiftRecordService prodShiftRecordService; @Override public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { productionCustomContextStepService.removeProductionStatisticsContext(reqBean); - this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()), String.format("生产线[%s]工位[%s]%s成功!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); - // 刷新加工数 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue()); - MesWorkCell mesWorkCell = productionProcessContext.getWorkCell(); - - MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + //重置页面的加工数 + resetStationData(reqBean, productionProcessContextStepService.getProductionProcessContext(reqBean, false).getWorkCell()); - List productionStatisticsContext = StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), new StationKvBean(new StringJoiner(MesPcnExtConstWords.AND).add(mesProdShiftKvBean.getShiftGroup()).add(mesProdShiftKvBean.getShiftCode()).toString(), "加工数", "0"), - new StationKvBean("color", "颜色", MesExtEnumUtil.COLOR.BLACK.getValue())); + return true; - StationResultBean shiftCountBean = getStationResultBean(reqBean, productionStatisticsContext,mesWorkCell, mesProdShiftKvBean); + } - this.sendMessage(reqBean, shiftCountBean); + //重置页面的加工数 + private void resetStationData(StationRequestBean reqBean, MesWorkCell workCell) { + if (null == workCell) return; - return true; + //如果工位当前配置的是展示柱状图则无须重置加工数 + if (!StringUtils.isEmpty(workCell.getIsShowMsg()) && workCell.getIsShowMsg().compareTo(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue()) == 0) return; - } - private StationResultBean getStationResultBean(StationRequestBean reqBean, List productionStatisticsContext, MesWorkCell mesWorkCell, MesProdShiftContext mesProdShiftKvBean) { - StationResultBean resultBean = new StationResultBean(); - resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue()); - String dataType = MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue(); - JSONObject reqJson = new JSONObject(); - String url = ""; - - List> orderQtyKvBeans = new ArrayList<>(); - if (!StringUtils.isEmpty(mesWorkCell.getFileId())) { + //判断是否配置的是展示文件 + String url = null; + if (!StringUtils.isEmpty(workCell.getIsShowMsg()) && !StringUtils.isEmpty(MesExtEnumUtil.WORK_FILE_TYPE.valueOfDescription(workCell.getIsShowMsg()))) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(); - - DdlPreparedPack.getNumEqualPack(Long.parseLong(mesWorkCell.getFileId()), "id", packBean); + DdlPreparedPack.getNumEqualPack(Long.parseLong(workCell.getFileId()), MesPcnExtConstWords.ID, packBean); MesFile mesFile = mesFileRepository.getByProperty(packBean); - if (mesFile != null) { - url = mesFile.getFileUrl(); - } - } - if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.ECHART.getValue(); - List workOrderList = workOrderExtService.getWorkOrderListByShiftCode(reqBean.getOrganizeCode(), mesWorkCell.getWorkCenterCode(), mesProdShiftKvBean.getShiftCode()); - if (CollectionUtils.isEmpty(workOrderList)) { - StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(), - new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", 0 + ""), - new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", 0 + "")); - } else { - double qty = workOrderList.stream().map(MesWorkOrder::getQty).reduce((a, b) -> a + b).get(); - double complateQty = workOrderList.stream().map(MesWorkOrder::getCompleteQty).reduce((a, b) -> a + b).get(); - - StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(), - new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", qty + ""), - new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", complateQty + "")); - } - resultBean.setResultList(orderQtyKvBeans); - } else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.PROD_VIDEO.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.VIDEO.getValue(); - reqJson.put("url", url); - resultBean.setResultObj(reqJson); - } else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.WORK_CELL_PICTURE.getValue(), mesWorkCell.getIsShowMsg())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.IMAGE.getValue(); - reqJson.put("url", url); - resultBean.setResultObj(reqJson); + url = (null != mesFile && !StringUtils.isEmpty(mesFile.getFileUrl())) ? mesFile.getFileUrl() : null; } - if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesWorkCell.getIsCountFinish())) { - dataType = MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue(); + //如果不存在文件, 且当前工位配置需要统计加工数的情况下才进行重置加工数 + if (StringUtils.isEmpty(url) && !StringUtils.isEmpty(workCell.getIsCountFinish()) && workCell.getIsCountFinish().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) { + //获取生产线的当前班组班次信息 + MesProdShiftContext mesProdShiftKvBean = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + List productionStatisticsContext = productionCustomContextStepService.getProductionStatisticsContext(mesProdShiftKvBean, MesPcnExtConstWords.ZERO_STR); + + StationResultBean resultBean = new StationResultBean(); + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue()); + resultBean.setCustomPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL); resultBean.setResultList(productionStatisticsContext); + this.sendMessage(reqBean, resultBean); } - resultBean.setDataType(dataType); - resultBean.setCustomPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL); - - - return resultBean; } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyGeneratePartNoStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyGeneratePartNoStepService.java index 962be3d..e825e69 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyGeneratePartNoStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyGeneratePartNoStepService.java @@ -184,10 +184,12 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService { return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, isEnoughQty ? true : stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN).isCompleted(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, - String.format("%s装配件条码%s匹配成功!当前扫描的主条码数量[%s]%s设备腔数[%s]!", suffix, assemblySn, productionPsInContextList.size(), isEnoughQty ? "已满足" : "未满足", cellEquipContext.getCavity())); + String.format("%s装配件条码%s匹配成功!当前扫描的主条码数量[%s]%s设备腔数[%s]!", suffix, assemblySn, productionPsInContextList.size(), isEnoughQty ? "已满足" : "未满足", cellEquipContext.getCavity()), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, String.format("装配件条码%s匹配成功!", assemblySn)); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, String.format("装配件条码%s匹配成功!", assemblySn), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortRetrodictStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortRetrodictStepService.java index 02bae7e..ac4d690 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortRetrodictStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortRetrodictStepService.java @@ -184,10 +184,12 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, isEnoughQty ? true : stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN).isCompleted(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, - String.format("%s装配件条码%s匹配成功!当前扫描的主条码数量[%s]%s设备腔数[%s]!", suffix, assemblySn, productionPsInContextList.size(), isEnoughQty ? "已满足" : "未满足", cellEquipContext.getCavity())); + String.format("%s装配件条码%s匹配成功!当前扫描的主条码数量[%s]%s设备腔数[%s]!", suffix, assemblySn, productionPsInContextList.size(), isEnoughQty ? "已满足" : "未满足", cellEquipContext.getCavity()), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, String.format("装配件条码%s匹配成功!", assemblySn)); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, String.format("装配件条码%s匹配成功!", assemblySn), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java index c1ea8f5..2def437 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java @@ -100,7 +100,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { if (!isNeedScanAssembly || !hasUnBindAssembly) { return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, (CollectionUtils.isEmpty(productionPsInContextList) || productionPsInContextList.size() >= needQty) ? true : stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN).isCompleted(), - MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, !isNeedScanAssembly ? "当前加工规则未配置装配件扫描项,当前无需匹配装配件条码!" : "当前加工规则对应的装配件扫描项均匹配完毕!"); + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, !isNeedScanAssembly ? "当前加工规则无装配件清单,当前无需匹配装配件条码!" : "当前加工规则对应的装配件清单均匹配完毕!"); } //获取上下文生产扫/读信息:装配件条码 @@ -136,12 +136,16 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { if (!hasUnBindAssembly) { return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, (CollectionUtils.isEmpty(productionPsInContextList) || productionPsInContextList.size() >= needQty) ? true : stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_PRODUCT_SN).isCompleted(), - MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("%s当前加工规则对应的装配件扫描项均匹配完毕!", suffix)); + MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("%s当前加工规则对应的装配件清单均匹配完毕!", suffix), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } //单次匹配成功 - if (result) return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), - stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, suffix); + if (result) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), + stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, suffix, + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); + } //匹配失败验证是否重置装配件扫描项 MesWorkCell workCell = productionProcessContext.getWorkCell(); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchSortStepService.java index 74a0d9a..13604e6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchSortStepService.java @@ -72,11 +72,17 @@ public class MesAssemblyMatchSortStepService extends BaseStepService { if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!"); //判断是否存在装配件清单 - if (!checkIsNeedScanAssembly(prodRuleContextList)) return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则未配置装配件扫描项,当前无需匹配装配件条码!"); + if (!checkIsNeedScanAssembly(prodRuleContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则无装配件清单,当前无需匹配装配件条码!"); + } //验证是否存在待绑定数据 Boolean hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList); - if (!hasUnBindAssembly) return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则对应的装配件扫描项均匹配完毕!"); + if (!hasUnBindAssembly) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则对应的装配件清单均匹配完毕!"); + } //获取上下文生产扫/读信息:装配件条码 List equipVariableCollectContextList = productionDispatchContextStepService.getScanAssemblySnContext(reqBean); @@ -113,11 +119,17 @@ public class MesAssemblyMatchSortStepService extends BaseStepService { } //验证是否存在待绑定数据 - if (!hasUnBindAssembly) return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("%s当前加工规则对应的装配件扫描项均匹配完毕!", suffix)); + if (!hasUnBindAssembly) { + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("%s当前加工规则对应的装配件清单均匹配完毕!", suffix), + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); + } //单次匹配成功 - if (result) return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), - stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, suffix); + if (result) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), + stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, suffix, + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); + } stepResult.msg(String.format("装配件条码%s匹配失败!%s", assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java index 87756d6..b97e488 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java @@ -106,8 +106,10 @@ public class MesAssemblyReadStepService extends BaseStepService { List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); //验证当前是否需要读装配件条码: 是否存在装配件清单 - if (!CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedReedAssembly(prodRuleContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前加工规则未配置装配件扫描项,无需读设备[%s]装配件条码!", cellEquipContext.getEquipmentName())); + if (!CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedReedAssembly(prodRuleContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("当前加工规则未装配件清单,无需读设备[%s]装配件条码!", cellEquipContext.getEquipmentName())); + } //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java index e0dd654..fc20a1b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java @@ -25,10 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -78,6 +75,12 @@ public class MesAssemblySaveStepService extends BaseStepService { if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!"); + //判断是否存在装配件清单 + if (!checkIsNeedScanAssembly(prodRuleContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则无装配件清单,当前无需保存装配件记录!"); + } + //获取上下文产出条码数据信息集合 List productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean); @@ -101,6 +104,12 @@ public class MesAssemblySaveStepService extends BaseStepService { } + //判断是否存在装配件清单 + private Boolean checkIsNeedScanAssembly(List prodRuleContextList) { + Optional optional = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).findFirst(); + return (null == optional || !optional.isPresent()) ? false : true; + } + private void saveProductionAssemblyData(StationRequestBean reqBean, List productSnIdList, MesProductionProcessContext productionProcessContext, MesProdRuleContext prodRuleContext, Map ppMap, MesCellEquipContext cellEquipContext, MesScanMonitorContext scanMonitorContext) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java index c55acaf..f4da625 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java @@ -86,19 +86,25 @@ public class MesAssemblyScanStepService extends BaseStepService { Integer busiType = getBusiType(productionPsInContextListNoFinishCode, prodRuleContextList); //验证场景1 当前是否需要扫描装配件条码: 是否存在装配件清单 【当前验证只能对内部触发生效】 - if (busiType == BUSI_TYPE.ONE.value && !CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedScanAssembly(prodRuleContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则未配置装配件扫描项,当前无需扫描装配件条码!"); + if (busiType == BUSI_TYPE.ONE.value && !CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedScanAssembly(prodRuleContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则无装配件清单,当前无需扫描装配件条码!"); + } //场景1 处理装配件的装配爆炸图和音频文件 if (busiType == BUSI_TYPE.ONE.value) doHandleAssemblyFile(reqBean, productionProcessContext.getWorkCenter(), prodRuleContextList); //验证场景1 当前是否需要扫描装配件条码: 验证是否存在待绑定数据 【当前验证只能对内部触发生效】 - if (busiType == BUSI_TYPE.ONE.value && !CollectionUtils.isEmpty(prodRuleContextList) && !hasUnBindAssembly(prodRuleContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则对应的装配件清单已扫描完毕,当前无需扫描装配件条码!"); + if (busiType == BUSI_TYPE.ONE.value && !CollectionUtils.isEmpty(prodRuleContextList) && !hasUnBindAssembly(prodRuleContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则对应的装配件清单已扫描完毕,当前无需扫描装配件条码!"); + } //验证场景3的当前未匹配的主条码是否是空腔码 - if (busiType == BUSI_TYPE.THREE.value && CollectionUtils.isEmpty(curProductionPsInContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前主条码对应的装配件清单已扫描完毕,当前无需扫描装配件条码!"); + if (busiType == BUSI_TYPE.THREE.value && CollectionUtils.isEmpty(curProductionPsInContextList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前主条码对应的装配件清单已扫描完毕,当前无需扫描装配件条码!"); + } if (StringUtils.isEmpty(scanInfo)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描装配件条码!"); @@ -274,9 +280,9 @@ public class MesAssemblyScanStepService extends BaseStepService { ONE(1, "唯一加工规则场景或排序线"),//通过 产出零件 + 进料条码零件 + 设备 找到唯一的非排序产品加工规则, 产出零件与进料条码零件至少存在1个 或者 排序线 - TWO(2, "无进无出扫装配件生成零件号场景"),//产出零件与进料条码零件均不扫描, 直接扫描装配件, 通过生成零件号工步反向匹配非排序产品加工规则 + TWO(2, "无出无进扫装配件,非排序无显示装配件匹配场景"),//产出零件与进料条码零件均不扫描, 直接扫描装配件, 通过非排序无显示装配件匹配工步反向匹配非排序产品加工规则 - THREE(3, "有进未匹配加工规则扫装配件生成零件号场景");//产出零件不扫描, 扫描进料条码零件 + 设备 会对应多个非排序产品加工规则, 通过扫描装配件, 生成零件号工步反向匹配非排序产品加工规则, 将匹配的规则再匹配进料条码零件 + THREE(3, "无出有进扫装配件,非排序无显示装配件匹配场景");//产出零件不扫描, 扫描进料条码零件, 扫描装配, 通过非排序无显示装配件匹配工步反向匹配非排序产品加工规则, 将匹配的规则再匹配进料条码零件 private Integer value; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepServiceBak.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepServiceBak.java index 82b5b64..33b5616 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepServiceBak.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepServiceBak.java @@ -74,7 +74,7 @@ public class MesAssemblyScanStepServiceBak extends BaseStepService { //验证当前是否需要扫描装配件条码: 是否存在装配件清单 【当前验证只能对内部触发生效】 if (!CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedScanAssembly(prodRuleContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则未配置装配件扫描项,当前无需扫描装配件条码!"); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前加工规则无配置装配件清单,当前无需扫描装配件条码!"); //处理装配件的装配爆炸图和音频文件 doHandleAssemblyFile(reqBean, productionProcessContext.getWorkCenter(), prodRuleContextList); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java index 2dc41cd..03e4d40 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java @@ -111,9 +111,11 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { } //显示装配件信息 - showProductionAssembly(reqBean, resultBean, workCenter, prodRuleContextList); + Boolean isShow = showProductionAssembly(reqBean, resultBean, workCenter, prodRuleContextList); - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "装配件扫描项已查询完毕,请查看!"); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, + isShow ? "已显示装配件清单,请查看!" : "当前腔匹配的加工规则无装配件清单!", + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } private StepResult doHandleProdRuleData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, @@ -468,6 +470,8 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { } + if (CollectionUtils.isEmpty(allAssemblyList)) return false; + //获取前端置顶信息 【sourceId&MatchDatetime】 String topRowInfo = getTopRowInfo(allAssemblyList); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java index 9a84aa3..aba1cfa 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowSortStepService.java @@ -104,10 +104,11 @@ public class MesAssemblyShowSortStepService extends BaseStepService { } //显示装配件信息 - if (!showProductionAssembly(reqBean, resultBean, workCenter, prodRuleContextList)) - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "当前未查询到相关的装配件清单"); + Boolean isShow = showProductionAssembly(reqBean, resultBean, workCenter, prodRuleContextList); - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "显示装配件扫描项成功!"); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, + isShow ? "已显示装配件清单,请查看!" : "当前腔匹配的加工规则无装配件清单!", + MesPcnEnumUtil.PROMPT_SOUND.SUCCESS.getValue()); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java index 5c0ba2f..65f14b2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; -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.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService; @@ -54,9 +54,6 @@ public class MesProductSnGenerateStepService extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - - @Autowired private MesPartDataMapSaveStepService partDataMapSaveStepService; @Autowired @@ -74,6 +71,9 @@ public class MesProductSnGenerateStepService extends BaseStepService { @Autowired private IFsmRouteDataService fsmRouteDataService; + @Autowired + private IMesProdShiftRecordService prodShiftRecordService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -105,7 +105,7 @@ public class MesProductSnGenerateStepService extends BaseStepService { if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在加工规则信息,请重置工序解决!"); //获取生产线的当前班组班次信息 - MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + MesProdShiftContext prodShiftContext = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); if (null == prodShiftContext) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在生产开班记录,请重新开班!"); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java index a602f3d..2d6575d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintNosortStepService.java @@ -138,6 +138,11 @@ public class MesProductSnPrintNosortStepService extends BaseStepService { } } + if (CollectionUtils.isEmpty(printModelList) && CollectionUtils.isEmpty(resultMapList)) { + return stepDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, true, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, "当前加工规则无需执行打印!"); + } + //前端接收到busiTyep是customComponent,并且 dataType是file类型的消息,就需要打印后续消息里的数据,一个模板对应多个打印数据 resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue()); resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.FILE.getValue()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java index a9103c9..e37e7da 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnPrintSortStepService.java @@ -109,16 +109,11 @@ public class MesProductSnPrintSortStepService extends BaseStepService { // 根据工单号获取工单信息 MesWorkOrder workOrder = workOrderMap.get(sn.getWorkOrderNo()); - if (workOrder == null) { - log.error("MesCustSnPrintStepService --- exec --- 工单号:{}无效", sn.getWorkOrderNo()); - stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号:{}无效!", sn.getWorkOrderNo())); - continue; - } - - if ((partDataContext == null) || (!partDataContext.containsKey(workOrder.getPartNo()))) { - log.error("MesCustSnPrintStepService --- exec --- 工单号:{}零件{}丢失缓存", sn.getWorkOrderNo(), sn.getPartNo()); + if (null == workOrder) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号:{}无效!", sn.getWorkOrderNo())); + + if (CollectionUtils.isEmpty(partDataContext) || !partDataContext.containsKey(workOrder.getPartNo())) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]丢失零件信息缓存!", sn.getWorkOrderNo(), sn.getPartNo())); - } + MesPart mesPart = partDataContext.get(sn.getPartNo()); String custMatchRule = StringUtils.isEmpty(mesPart.getCustMatchRule()) ? "WH_CUST_SN_RULE" : mesPart.getCustMatchRule(); @@ -126,25 +121,18 @@ public class MesProductSnPrintSortStepService extends BaseStepService { DdlPreparedPack.getStringEqualPack(custMatchRule, MesPcnExtConstWords.RULE_CODE, packBean); MesNumberRule numberRule = numberRuleRepository.getByProperty(packBean); - if (numberRule == null) { - log.error("MesCustSnPrintStepService --- exec --- 客户条码编码规则[WH_CUST_SN_RULE]无效"); - stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]客户条码编码规则[%s]无效!", sn.getWorkOrderNo(), sn.getPartNo(), custMatchRule)); - } + if (null == numberRule) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]客户条码编码规则[%s]无效!", sn.getWorkOrderNo(), sn.getPartNo(), custMatchRule)); // 从物料信息中获取标签模板 String labelTemplateCode = partDataContext.get(sn.getPartNo()).getCustLabelTemplate(); - if (labelTemplateCode == null) { - stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]未在ERP物料信息维护打印模板,请检查并修改!", sn.getWorkOrderNo(), sn.getPartNo())); - } + if (null == labelTemplateCode) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]未在ERP物料信息维护打印模板,请检查并修改!", sn.getWorkOrderNo(), sn.getPartNo())); MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel(); // 查模板代码 MesLabelTemplate labelTemplate = mesTemplateService.getLabelTemplate(labelTemplateCode, organizeCode); - if (labelTemplate == null) { - stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]的模板代码[%s]无效,请检查并修改!", sn.getWorkOrderNo(), sn.getPartNo(), labelTemplateCode)); - } + if (null == labelTemplate) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]的模板代码[%s]无效,请检查并修改!", sn.getWorkOrderNo(), sn.getPartNo(), labelTemplateCode)); mesProduceSnPrintModel.setMesLabelTemplate(labelTemplate); mesProduceSnPrintModel.setPrinter(partDataContext.get(sn.getPartNo()).getProductPrinterCode()); @@ -155,11 +143,9 @@ public class MesProductSnPrintSortStepService extends BaseStepService { //根据反射获取策略类--封装打印数据 String methodCode = labelTemplate.getMethodCode(); //模板信息丢失抛出异常 - if (StringUtils.isEmpty(methodCode)) { - stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]的模板代码[%s]的反射类丢失,请配置!", sn.getWorkOrderNo(), sn.getPartNo(), labelTemplateCode)); - } + if (StringUtils.isEmpty(methodCode)) stepExpSendMsgAndThrowEx(reqBean, resultBean, String.format("工单号[%s]零件号[%s]的模板代码[%s]的反射类丢失,请配置!", sn.getWorkOrderNo(), sn.getPartNo(), labelTemplateCode)); + IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode); - // GenSerialNoModel model , MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep MesProduceSnPrintModel printModel = strategyService.execute(null, mesProduceSnPrintModel, numberRule, stepResult, reqBean, true); resultMap.addAll(printModel.getPrintContextList()); snLogList.add(getMesPrintedSnLog(reqBean, workOrder, JSONObject.toJSONString(printModel.getPrintContextList().iterator().next().get(MesPcnExtConstWords.TEMPLATE_DATA)))); @@ -192,13 +178,17 @@ public class MesProductSnPrintSortStepService extends BaseStepService { private Map getMesWorkOrderMap(StationRequestBean reqBean, List productionPartContextList) { // 从产成物料上下文中获取 工单号集合 - List workOrderNoList = productionPartContextList.stream().map(MesProductionPartContext::getWorkOrderNo).distinct().collect(Collectors.toList()); + List workOrderNoList = (productionPartContextList.stream().filter(o -> + (null != o && !StringUtils.isEmpty(o.getForeignKey()))).map(MesProductionPartContext::getWorkOrderNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o) + ).distinct().collect(Collectors.toList()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); - DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesPcnExtConstWords.WORK_ORDER_NO, packBean); + else DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); List workOrderList = workOrderRepository.findByHqlWhere(packBean); // 根据工单号分组 - return workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y)); + return CollectionUtils.isEmpty(workOrderList) ? null : + workOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y)); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index 34af48d..47efa99 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; -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.apiservice.serviceimpl.step.method.MesPartDataMapSaveStepService; @@ -49,9 +49,6 @@ public class MesProductSnSaveStepService extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - - @Autowired private MesPartDataMapSaveStepService partDataMapSaveStepService; @Autowired @@ -60,6 +57,9 @@ public class MesProductSnSaveStepService extends BaseStepService { @Autowired private MesProduceSnRepository produceSnRepository; + @Autowired + private IMesProdShiftRecordService prodShiftRecordService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -82,7 +82,7 @@ public class MesProductSnSaveStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!"); //获取生产线的当前班组班次信息 - MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + MesProdShiftContext prodShiftContext = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); if (null == prodShiftContext) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在生产开班记录,请重新开班!"); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java index 6cd6ad2..08039ae 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoScanStepService.java @@ -10,6 +10,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.model.StationKvBean; @@ -82,7 +83,7 @@ public class MesProductionPartNoScanStepService extends BaseStepService { if (CollectionUtils.isEmpty(chooseCavityPart) && StringUtils.isEmpty(scanInfo)) stepSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "请扫描产成零件!"); - List productionPartContextList = null; + List productionPartContextList; List readList; List partNoList; String cellMessageSorce = null; @@ -152,7 +153,7 @@ public class MesProductionPartNoScanStepService extends BaseStepService { if (cellEquipContext.getCavity().compareTo(productionPartContextList.size()) > 0) return stepDynamicsCompleteAndSendMsgReturn( reqBean, resultBean.writeDbLog().scanInfo(scanInfo), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, - String.format("当前%s验证成功,已知腔数[%s],还需要再连续扫描[%s]次加工单!", suffix, cellEquipContext.getCavity(), cellEquipContext.getCavity() - productionPartContextList.size())); + String.format("当前%s验证成功,已知腔数[%s],还需要再连续扫描[%s]次产成零件!", suffix, cellEquipContext.getCavity(), cellEquipContext.getCavity() - productionPartContextList.size())); } //存储展示组件MODULE_CONTENT内容 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java index 3d4212e..5feb21d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +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; @@ -56,6 +57,9 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { @Autowired private IMesProductionRecordService productionRecordService; + @Autowired + private IMesProdShiftRecordService prodShiftRecordService; + //当前非排序线, 排序线有差异 @Override public StepResult execute(StationRequestBean reqBean) { @@ -106,7 +110,8 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCell.getIsCountFinish())) { // 保存班次加工数量上下文 - Integer amount = productionCustomContextStepService.dispatchProductionStatisticsContext(reqBean, productionPsOutContextList.size()); + MesProdShiftContext mesProdShiftKvBean = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + Integer amount = productionCustomContextStepService.dispatchProductionStatisticsContext(reqBean, productionPsOutContextList.size(), mesProdShiftKvBean); this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), String.format("生产线[%s]工位[%s]当前累加数[%s]已累计加工数[%s]", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionPsOutContextList.size(), amount), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java index d8cd1f7..2e9b57d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java @@ -2,8 +2,8 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentProdParamCfgService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService; -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.pojo.context.*; @@ -46,9 +46,6 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - - @Autowired private IMesEquipmentProdParamCfgService equipmentProdParamCfgService; @Autowired @@ -57,6 +54,9 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { @Autowired private IMesEquipmentExtService equipmentExtService; + @Autowired + private IMesProdShiftRecordService prodShiftRecordService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -107,7 +107,7 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List productionPsInContexts = productionDispatchContextStepService.getProductionPsInContext(reqBean); List productionPsOutContexts = productionDispatchContextStepService.getProductionPsOutContext(reqBean); - MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + MesProdShiftContext mesProdShiftKvBean = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); //发送设备加工参数 prodRuleContextList.stream().filter(o -> null != o).forEach(o -> { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService2.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService2.java index 1287d9a..fcfa0f0 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService2.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService2.java @@ -2,8 +2,8 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentProdParamCfgService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService; -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.pojo.context.*; @@ -46,9 +46,6 @@ public class MesSendEquipParamsCmdStepService2 extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - - @Autowired private IMesEquipmentProdParamCfgService equipmentProdParamCfgService; @Autowired @@ -57,6 +54,9 @@ public class MesSendEquipParamsCmdStepService2 extends BaseStepService { @Autowired private IMesEquipmentExtService equipmentExtService; + @Autowired + private IMesProdShiftRecordService prodShiftRecordService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -107,7 +107,7 @@ public class MesSendEquipParamsCmdStepService2 extends BaseStepService { List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List productionPsInContexts = productionDispatchContextStepService.getProductionPsInContext(reqBean); List productionPsOutContexts = productionDispatchContextStepService.getProductionPsOutContext(reqBean); - MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + MesProdShiftContext mesProdShiftKvBean = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); //发送设备加工参数 prodRuleContextList.stream().filter(o -> null != o).forEach(o -> { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java index 7f841d5..9dc1ede 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java @@ -1,13 +1,14 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +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.pojo.context.*; -import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; import cn.estsh.i3plus.mes.pcn.util.StringUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -15,12 +16,13 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; -import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderCutDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderCutRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -54,9 +56,6 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IMesProductionCustomContextStepService productionCustomContextStepService; - - @Autowired private MesWorkOrderCutRepository workOrderCutRepository; @Autowired @@ -69,10 +68,10 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { private IFsmRouteDataService fsmRouteDataService; @Autowired - private MesProductionAssemblyRepository productionAssemblyRepository; + private MesWorkOrderCutDetailRepository workOrderCutDetailRepository; @Autowired - private MesWorkOrderCutDetailRepository workOrderCutDetailRepository; + private IMesProdShiftRecordService prodShiftRecordService; @Override public StepResult execute(StationRequestBean reqBean) { @@ -88,11 +87,6 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { //存储生产过程上下文对象 productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext); - ////获取上下文生产扫/读信息:加工单 - //List equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean); - // - //String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); - //看是否修改裁片工单状态 //获取上下文进料零件条码信息集合 List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); @@ -121,7 +115,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { MesWorkCell workCell = productionProcessContext.getWorkCell(); //获取生产线的当前班组班次信息 - MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + MesProdShiftContext prodShiftContext = prodShiftRecordService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); // 无进料条码则生成条码 if (CollectionUtils.isEmpty(productionPsInContextList)) { @@ -193,9 +187,6 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { new String[]{MesPcnExtConstWords.PRODUCT_SN, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, new Object[]{cutWorkOrderNo, reqBean.getUserInfo(), TimeTool.getNowTime(true)}); - // 新增装配件加工记录 - //saveProductionAssembly(reqBean, productionProcessContext, cellEquipContext, mesProdRuleContext, productionPsOutContext); - } //保存上下文产出条码数据信息集合 @@ -218,11 +209,6 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { if (productionPsOutContext == null) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("产出零件号[%s]不存在,请重置工序解决!", mesProductionPartContext.getPartNo())); - //MesProdRuleContext mesProdRuleContext = prodRuleContextMapByOutPartNo.get(mesProductionPartContext.getPartNo()); - - // 新增装配件加工记录 - //saveProductionAssembly(reqBean, productionProcessContext, cellEquipContext, mesProdRuleContext, productionPsOutContext); - } } @@ -267,51 +253,6 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { } - - private void saveProductionAssembly(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, - MesCellEquipContext cellEquipContext, MesProdRuleContext mesProdRuleContext, - MesProductionPsOutContext productionPsOutContext) { - - MesProductionAssembly productionAssembly = new MesProductionAssembly(); - - productionAssembly.setAssemblySn(""); - productionAssembly.setDataSource(MesExtEnumUtil.PRODUCTION_ASSEMBLY_DATA_SOURCE.NOSORT.getValue()); - productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - productionAssembly.setIsSkip(CommonEnumUtil.FALSE); - - productionAssembly.setAreaCode(reqBean.getAreaCode()); - productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); - productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); - productionAssembly.setProcessCode(reqBean.getProcessCode()); - - productionAssembly.setProcessName(productionProcessContext.getProcessName()); - productionAssembly.setCraftCode(productionProcessContext.getCraftCode()); - productionAssembly.setCraftName(productionProcessContext.getCraftName()); - - productionAssembly.setEquipmentCode(cellEquipContext.getEquipmentCode()); - - productionAssembly.setProductionRecordId(mesProdRuleContext.getProductionRecordId()); - productionAssembly.setMouldNo(mesProdRuleContext.getMouldNo()); - - if (null != productionPsOutContext) { - productionAssembly.setPartNo(productionPsOutContext.getPartNo()); - productionAssembly.setPartName(productionPsOutContext.getPartName()); - productionAssembly.setSerialNumber(productionPsOutContext.getSerialNumber()); - productionAssembly.setProductSn(productionPsOutContext.getProductSn()); - productionAssembly.setCustSn(productionPsOutContext.getCustSn()); - } - - MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true); - if (null != scanMonitorContext) productionAssembly.setMouldRecordId(scanMonitorContext.getMouldRecordId()); - - productionAssembly.setOrganizeCode(reqBean.getOrganizeCode()); - ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo()); - - productionAssembly.setFid(UUID.randomUUID().toString()); - - productionAssemblyRepository.insert(productionAssembly); - } - private void updateWorkOrderCutStatus(StationRequestBean reqBean, String cutWorkOrderNo, Integer status) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, MesPcnExtConstWords.CUT_WORK_ORDER_NO, packBean); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java index 7a1d6d5..4023d86 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java @@ -14,7 +14,6 @@ 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 com.google.common.base.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -110,22 +109,6 @@ public class MesProductionCustomContextStepService extends BaseStepService imple this.sendMessage(reqBean, resultBean); } - //获取生产线的当前班组班次信息 - @Override - public MesProdShiftContext getMesProdShiftKvBean(String organizeCode, String workCenterCode) { - - List stationKvBeans = getProdShiftDataContext(organizeCode, workCenterCode); - if (CollectionUtils.isEmpty(stationKvBeans)) return null; - - StationKvBean shiftGroupKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), MesPcnExtConstWords.SHIFT_GROUP)).findFirst().orElse(null); - StationKvBean shiftCodeKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), MesPcnExtConstWords.SHIFT_CODE)).findFirst().orElse(null); - - MesProdShiftContext mesProdShiftContext = new MesProdShiftContext(); - mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftCodeKvBean.getValue()); - mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftGroupKvBean.getValue()); - return mesProdShiftContext; - } - //开班信息KEY 【PS:生产线级别】 private String getProdShiftContextKey(String orgainzeCode, String workCenterCode) { return new StringJoiner(MesPcnExtConstWords.COLON).add(orgainzeCode).add(MesPcnExtConstWords.PROD_SHIFT_DATA_CONTEXT).add(workCenterCode).toString(); } @@ -166,6 +149,13 @@ public class MesProductionCustomContextStepService extends BaseStepService imple return !StringUtils.isEmpty(productionStatisticsJson) ? JSONObject.parseArray(productionStatisticsJson, StationKvBean.class) : null; } + //封装加工数信息 + @Override + public List getProductionStatisticsContext(MesProdShiftContext mesProdShiftKvBean, String countStr) { + return StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), + new StationKvBean(mesProdShiftKvBean.getShiftGroup(), "加工数", countStr), new StationKvBean(MesPcnExtConstWords.COLOR, "颜色", MesExtEnumUtil.COLOR.BLACK.getValue())); + } + //保存上下文工位加工数统计信息 [JSON]List @Override public Boolean dispatchProductionStatisticsContext(StationRequestBean reqBean, List productionStatisticsList) { @@ -180,9 +170,9 @@ public class MesProductionCustomContextStepService extends BaseStepService imple } @Override - public Integer dispatchProductionStatisticsContext(StationRequestBean reqBean, int count) { + public Integer dispatchProductionStatisticsContext(StationRequestBean reqBean, int count, MesProdShiftContext mesProdShiftKvBean) { - MesProdShiftContext mesProdShiftKvBean = getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + if (null == mesProdShiftKvBean) return null; List stationKvBeans = getProductionStatisticsContext(reqBean); @@ -191,9 +181,7 @@ public class MesProductionCustomContextStepService extends BaseStepService imple amount.set(count); if (CollectionUtils.isEmpty(stationKvBeans)) { - String name = "加工数"; - stationKvBeans = StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), - new StationKvBean(mesProdShiftKvBean.getShiftGroup(), name, countStr), new StationKvBean(MesPcnExtConstWords.COLOR, "颜色", MesExtEnumUtil.COLOR.BLACK.getValue())); + stationKvBeans = getProductionStatisticsContext(mesProdShiftKvBean, countStr); } else { AtomicReference flag = new AtomicReference<>(false); stationKvBeans.stream().forEach(stationKvBean -> { @@ -203,13 +191,7 @@ public class MesProductionCustomContextStepService extends BaseStepService imple flag.set(true); } }); - - if (!flag.get()) { - String name = "加工数"; - stationKvBeans = StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), - new StationKvBean(mesProdShiftKvBean.getShiftGroup(), name, countStr), new StationKvBean(MesPcnExtConstWords.COLOR, "颜色", MesExtEnumUtil.COLOR.BLACK.getValue())); - } - + if (!flag.get()) stationKvBeans = getProductionStatisticsContext(mesProdShiftKvBean, countStr); } dispatchProductionStatisticsContext(reqBean, stationKvBeans);