diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesShiftService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesShiftService.java index 66ba5b4..b92c748 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesShiftService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesShiftService.java @@ -6,6 +6,8 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesShift; import io.swagger.annotations.ApiOperation; +import java.util.List; + /** * @Description: 产线与班次的对应关系 * @Author: gsz @@ -18,4 +20,7 @@ public interface IMesShiftService { @ApiOperation(value = "查询产线与班次的对应关系") public ListPager queryMesShiftByPager(MesShift mesShift, Pager pager); + + @ApiOperation(value = "查询产线与班次的对应关系") + public List queryMesShift(String organizeCode, String workCenterCode); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java new file mode 100644 index 0000000..502cd5f --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdMouldStatisticsService.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 生产开模统计 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/26 16:32 + * @Modify: + **/ +public interface IMesProdMouldStatisticsService { + + @ApiOperation("汇总生产开模统计") + void doSumMesProdMouldStatistics(String organizeCode, Integer pageSize, String userName); +} diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java index 6ba259c..c2fc29f 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java @@ -37,7 +37,7 @@ public interface IMesWorkOrderService { * @param organizeCode * @return */ - List getUnReportMesProduceSn(String organizeCode); + public List getUnReportMesProduceSn(String organizeCode); List getPreDayReportMesProductionRecord(String organizeCode , List mesShiftList, String workCenterCode); @@ -46,4 +46,16 @@ public interface IMesWorkOrderService { public List insertMesWorkOrder(List mesProduceSns,List mesShiftList,String organizeCode, String userName ); void doPcnJobProductReport(List mesProduceSns,List mesShiftList,String organizeCode, String userName, MesWorkOrder mesWorkOrder); + + + void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName); + + void doProductHasOrderReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName); + + /** + * 获取未报工 + * @param organizeCode + * @return + */ + List getUnReportHasOrderMesProduceSn(String organizeCode); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProdMouldStatisticsDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProdMouldStatisticsDao.java new file mode 100644 index 0000000..b18ef47 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProdMouldStatisticsDao.java @@ -0,0 +1,24 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.dao; + +import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldRecord; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 生产开模统计 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/26 15:46 + * @Modify: + **/ +public interface IMesProdMouldStatisticsDao { + + @ApiOperation("查询未统计的开模记录数据") + List findUndStatisticsMesProdMouldRecord(String organizeCode, Integer pageSize); + + + @ApiOperation("更新加工记录表") + int updateMesProductionRecord(List idList, String organizeCode, boolean updateSyncStatus,String userName); + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProdMouldStatisticsDaoImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProdMouldStatisticsDaoImpl.java new file mode 100644 index 0000000..691d479 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProdMouldStatisticsDaoImpl.java @@ -0,0 +1,68 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesProdMouldStatisticsDao; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; +import java.util.Objects; + +/** + * @Description : 生产开模统计 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/26 15:46 + * @Modify: + **/ +@Service +public class MesProdMouldStatisticsDaoImpl implements IMesProdMouldStatisticsDao { + + @Autowired + private EntityManager entityManager; + + @Override + public List findUndStatisticsMesProdMouldRecord(String organizeCode, Integer pageSize) { + StringBuilder sql = new StringBuilder(); + sql.append(" select pmr from MesMouldMappingCfg mmc left join MesProdMouldRecord pmr on mmc.equipmentCode = pmr.equipmentCode"); + sql.append(" where mmc.organizeCode = :organizeCode and mmc.isDeleted = :isDeleted and mmc.isValid = :isValid "); + sql.append(" and pmr.organizeCode = :organizeCode and pmr.isDeleted = :isDeleted and pmr.isValid = :isValid "); + sql.append(" and (pmr.assetNum is null or pmr.assetNum = '') order by pmr.createDatetime asc"); + Query query = entityManager.createQuery(sql.toString(), MesProdMouldRecord.class); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + if (!Objects.isNull(pageSize)) { + query.setFirstResult(MesPcnExtConstWords.ZERO).setMaxResults(pageSize); + } + return query.getResultList(); + } + + @Override + public int updateMesProductionRecord(List idList, String organizeCode, boolean updateSyncStatus, String userName) { + StringBuilder sql = new StringBuilder(); + sql.append(" update MesProductionRecord set moduleStatisticsStatus = :moduleStatisticsStatus,modifyUser = :modifyUser"); + if (updateSyncStatus) { + sql.append(",systemSyncStatus = :systemSyncStatus,modifyDatetime = :modifyDatetime"); + } + sql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); + sql.append(" and id in (:idList) "); + Query query = entityManager.createQuery(sql.toString()); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("idList", idList); + query.setParameter("moduleStatisticsStatus", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("modifyUser", userName); + if (updateSyncStatus) { + query.setParameter("systemSyncStatus", CommonEnumUtil.FALSE); + query.setParameter("modifyDatetime", TimeTool.getNowTime(true)); + } + return query.executeUpdate(); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java new file mode 100644 index 0000000..95de35d --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProdMouldStatisticsJob.java @@ -0,0 +1,51 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; + + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdMouldStatisticsService; +import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; +import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +/** + * @Description : 生产开模统计job + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/26 18:22 + * @Modify: + **/ +@Slf4j +@DisallowConcurrentExecution +@Component +@ApiOperation("生产开模统计job") +public class MesProdMouldStatisticsJob extends BaseMesScheduleJob { + + @Autowired + private IMesProdMouldStatisticsService mesProdMouldStatisticsService; + + public MesProdMouldStatisticsJob() { + super(MesProdMouldStatisticsJob.class, "生产开模统计job"); + } + + @Override + public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); + if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { + for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { + long startTime = System.currentTimeMillis(); + mesProdMouldStatisticsService.doSumMesProdMouldStatistics(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); + long endTime = System.currentTimeMillis(); + log.info("工厂{}生产开模统计job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + } + } + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java index f048c98..a1f029b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java @@ -23,7 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author castle,暂时没有客供品移库 @@ -61,31 +63,49 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { if (null == userName){ userName = "JOB"; } - List unReportMesProduceSn = workOrderService.getUnReportMesProduceSn(organizeCode); - for (MesProduceSn mesProduceSn : unReportMesProduceSn) { - try { - workOrderService.doProductReport(Arrays.asList(mesProduceSn), organizeCode, userName); - //1.获取生产加工记录production_record表中,report_status为待汇报状态的工单 - updateProductionRecord(organizeCode, userName, mesProduceSn); - } catch (ImppBusiException e) { - LOGGER.error("条码:{}报工失败", mesProduceSn.getProductSn(), e.getErrorDetail()); - updateProductionRecord(organizeCode, userName, mesProduceSn, e.getErrorDetail()); - continue; - } + // 处理无工单 + handlerNoOrder(organizeCode, userName); + // 处理有工单 + handlerHasOrder(organizeCode, userName); + // } + } + + private void handlerNoOrder(String organizeCode, String userName) { + List unReportMesProduceSn = workOrderService.getUnReportMesProduceSn(organizeCode); + try { + Map map = new HashMap<>(); + workOrderService.doProductReportByRecord(unReportMesProduceSn.get(0), organizeCode, userName); + + } catch (ImppBusiException e) { + LOGGER.error("条码:{}报工失败", unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + updateProductionRecord(organizeCode, userName, unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + } + } + + private void handlerHasOrder(String organizeCode, String userName) { + List unReportMesProduceSn = workOrderService.getUnReportHasOrderMesProduceSn(organizeCode); + try { + Map map = new HashMap<>(); + workOrderService.doProductHasOrderReportByRecord(unReportMesProduceSn.get(0), organizeCode, userName); + + } catch (ImppBusiException e) { + LOGGER.error("条码:{}报工失败", unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + updateProductionRecord(organizeCode, userName, unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); } } - private void updateProductionRecord(String organizeCode, String userName, MesProduceSn mesProduceSn) { + + private void updateProductionRecord(String organizeCode, String userName, String sn) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", ddlPackBean); + DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus"}, new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue() },ddlPackBean); } - private void updateProductionRecord(String organizeCode, String userName, MesProduceSn mesProduceSn, String errorMsg) { + private void updateProductionRecord(String organizeCode, String userName, String sn, String errorMsg) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(mesProduceSn.getProductSn(), "productSn", ddlPackBean); + DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus", "remark"}, new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue(), errorMsg },ddlPackBean); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesShiftServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesShiftServiceImpl.java index b8ea6e8..e557d1e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesShiftServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesShiftServiceImpl.java @@ -43,4 +43,10 @@ public class MesShiftServiceImpl implements IMesShiftService { return new ListPager<>(resultList, pager); } + @Override + public List queryMesShift(String organizeCode, String workCenterCode) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", packBean); + return mesShiftRepository.findByHqlWhere(packBean); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java new file mode 100644 index 0000000..1b1a661 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProdMouldStatisticsServiceImpl.java @@ -0,0 +1,144 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdMouldStatisticsService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesProdMouldStatisticsDao; +import cn.estsh.i3plus.mes.pcn.util.DateUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesMouldMappingCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldRecord; +import cn.estsh.i3plus.pojo.mes.bean.MesProdMouldStatistics; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; +import cn.estsh.i3plus.pojo.mes.repository.IMesMouldMappingCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProdMouldRecordRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProdMouldStatisticsRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description : 生产开模统计 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/26 16:32 + * @Modify: + **/ +@Service +@Slf4j +public class MesProdMouldStatisticsServiceImpl implements IMesProdMouldStatisticsService { + + @Autowired + private IMesProdMouldStatisticsDao mesProdMouldStatisticsDao; + + @Autowired + private IMesMouldMappingCfgRepository mesMouldMappingCfgRDao; + + @Autowired + private MesProductionRecordRepository mesProductionRecordRDao; + + @Autowired + private MesProdMouldRecordRepository mesProdMouldRecordRDao; + + @Autowired + private MesProdMouldStatisticsRepository mesProdMouldStatisticsRDao; + + @Override + public void doSumMesProdMouldStatistics(String organizeCode, Integer pageSize, String userName) { + //查询未统计的开模记录数据 + List undStatisticsMesProdMouldRecordList = mesProdMouldStatisticsDao.findUndStatisticsMesProdMouldRecord(organizeCode, pageSize); + if (CollectionUtils.isEmpty(undStatisticsMesProdMouldRecordList)) { + return; + } + Map> undStatisticsMesProdMouldRecordMap = undStatisticsMesProdMouldRecordList.stream().collect(Collectors.groupingBy(MesProdMouldRecord::getEquipmentCode)); + //数据处理 + for (MesMouldMappingCfg mesMouldMappingCfg : getMesMouldMappingCfgs(organizeCode, new ArrayList<>(undStatisticsMesProdMouldRecordMap.keySet()))) { + List mesProdMouldRecords = undStatisticsMesProdMouldRecordMap.get(mesMouldMappingCfg.getEquipmentCode()); + //更新开模记录数据 + mesProdMouldRecords.forEach(mesProdMouldRecord -> { + mesProdMouldRecord.setAssetNum(mesMouldMappingCfg.getAssetNum()); + mesProdMouldRecord.setMeterName(mesMouldMappingCfg.getMeterName()); + mesProdMouldRecord.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(mesProdMouldRecord, userName); + }); + mesProdMouldRecordRDao.saveAll(mesProdMouldRecords); + //生产开模统计 + saveMesProdMouldStatistics(organizeCode, userName, mesMouldMappingCfg, mesProdMouldRecords); + } + //更新加工记录表状态 + updateMesProductionRecord(organizeCode, userName, undStatisticsMesProdMouldRecordList.stream().map(MesProdMouldRecord::getId).collect(Collectors.toList())); + } + + private void updateMesProductionRecord(String organizeCode, String userName, List idList) { + //查询加工记录表 + List mesProductionRecordList = getProductionRecordList(organizeCode, idList); + //更新加工记录表状态 + if (!CollectionUtils.isEmpty(mesProductionRecordList)) { + List noUpdateSyncStatusId = mesProductionRecordList.stream().filter(t -> MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() == t.getReportStatus()).map(MesProductionRecord::getId).collect(Collectors.toList()); + List updateSyncStatusId = mesProductionRecordList.stream().filter(t -> MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() != t.getReportStatus()).map(MesProductionRecord::getId).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(noUpdateSyncStatusId)) { + mesProdMouldStatisticsDao.updateMesProductionRecord(noUpdateSyncStatusId, organizeCode, false, userName); + } + if (!CollectionUtils.isEmpty(updateSyncStatusId)) { + mesProdMouldStatisticsDao.updateMesProductionRecord(updateSyncStatusId, organizeCode, true, userName); + } + } + } + + private void saveMesProdMouldStatistics(String organizeCode, String userName, MesMouldMappingCfg mesMouldMappingCfg, List mesProdMouldRecords) { + Map> mesProdMouldRecordMap = mesProdMouldRecords.stream().collect(Collectors.groupingBy(t -> TimeTool.parseStringFormat(t.getCreateDatetime(), null, DateUtil.SHORT_FORMAT))); + Map mouldStatisticsMap = getMesProdMouldStatistics(organizeCode, mesMouldMappingCfg.getAssetNum(), mesMouldMappingCfg.getMeterName()); + for (Map.Entry> mesProdMouldRecordEntry : mesProdMouldRecordMap.entrySet()) { + if (Objects.isNull(mouldStatisticsMap) || !mouldStatisticsMap.containsKey(mesProdMouldRecordEntry.getKey())) { + MesProdMouldStatistics mesProdMouldStatistic = new MesProdMouldStatistics(); + mesProdMouldStatistic.setWorkDate(mesProdMouldRecordEntry.getKey()); + mesProdMouldStatistic.setAssetNum(mesMouldMappingCfg.getAssetNum()); + mesProdMouldStatistic.setMeterName(mesMouldMappingCfg.getMeterName()); + mesProdMouldStatistic.setQty(mesProdMouldRecordEntry.getValue().size()); + mesProdMouldStatistic.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(mesProdMouldStatistic, userName); + mesProdMouldStatisticsRDao.insert(mesProdMouldStatistic); + } else { + MesProdMouldStatistics prodMouldStatistics = mouldStatisticsMap.get(mesProdMouldRecordEntry.getKey()); + prodMouldStatistics.setQty(prodMouldStatistics.getQty() + mesProdMouldRecordEntry.getValue().size()); + prodMouldStatistics.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(prodMouldStatistics, userName); + mesProdMouldStatisticsRDao.update(prodMouldStatistics); + } + } + } + + private Map getMesProdMouldStatistics(String organizeCode, String assetNum, String meterName) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(assetNum, "assetNum", packBean); + DdlPreparedPack.getStringEqualPack(meterName, "meterName", packBean); + List mesProdMouldStatistics = mesProdMouldStatisticsRDao.findByHqlWhere(packBean); + if (!CollectionUtils.isEmpty(mesProdMouldStatistics)) { + return mesProdMouldStatistics.stream().collect(Collectors.toMap(MesProdMouldStatistics::getWorkDate, t -> t)); + } + return null; + } + + private List getMesMouldMappingCfgs(String organizeCode, List equipmentCodeList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(equipmentCodeList, "equipmentCode", packBean); + return mesMouldMappingCfgRDao.findByHqlWhere(packBean); + } + + private List getProductionRecordList(String organizeCode, List idList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(idList, "mouldRecordId", packBean); + return mesProductionRecordRDao.findByHqlWhere(packBean); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 14e51cf..04b0841 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesShiftService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; @@ -20,6 +22,9 @@ import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.repository.shipping.MesWorkOrderToWmsRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.format.DateParser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; @@ -29,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -79,6 +85,14 @@ public class MesWorkOrderService implements IMesWorkOrderService { private MesShiftRepository mesShiftRepository; @Autowired private IMesConfigService configService; + + @Autowired + private IMesPartService iMesPartService; + + @Autowired + private IMesShiftService mesShiftService; + + @Override public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) { @@ -431,9 +445,276 @@ public class MesWorkOrderService implements IMesWorkOrderService { } return mesProductVersion; } + + private void updateProductionRecord(String organizeCode, String userName, String sn) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + + DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); + productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus"}, + new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_50.getValue()},ddlPackBean); + } + @Override + public void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) { + //新增初始化 todo + // 根据 + //根据物料获取已发布的工单 + MesWorkOrder oldMesWorkOrder = getMesWorkOrder(productionRecord, organizeCode); + if (oldMesWorkOrder == null) { + updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); + } + + report(productionRecord, organizeCode, userName, oldMesWorkOrder); + + } + @Override + public void doProductHasOrderReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) { + //新增初始化 todo + // 根据 + //根据物料获取已发布的工单 + List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode, null); + if (CollectionUtils.isEmpty(oldMesWorkOrders)) { + updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); + } + report(productionRecord, organizeCode, userName, oldMesWorkOrders.get(0)); + + } + private void report(MesProductionRecord productionRecord, String organizeCode, String userName, MesWorkOrder oldMesWorkOrder) { + DdlPackBean ddlPackBean; + //查询工作中心 + ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(oldMesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean); + MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); + if (Objects.isNull(mesWorkCenter)) { + throw new ImppBusiException(String.format("产线【%s】不存在", oldMesWorkOrder.getWorkCenterCode())); + } + //获取生产版本 + ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(oldMesWorkOrder.getProductVersion(), "productVersion", ddlPackBean); + MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); + if (null == mesProductVersion) { + throw new ImppBusiException(String.format("物料【%s】生产版本信息不存在", productionRecord.getPartNo())); + } + //物料+生产版本获取bom信息 + ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesProductVersion.getAlternativePartList(), "bomVersion", ddlPackBean); + List mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesBoms)) { + throw new ImppBusiException(String.format("物料【%s】生产版本【%s】对应bom信息不存在", + productionRecord.getPartNo(), mesProductVersion.getProductVersion())); + } + oldMesWorkOrder.setNum(oldMesWorkOrder.getNum() == null ? 1 : oldMesWorkOrder.getNum() + 1); + oldMesWorkOrder.setReportedQty(MathOperation.add(oldMesWorkOrder.getNum(), oldMesWorkOrder.getReportedQty())); + //更新SAP计划完成数量 + saveMesProductPlan(oldMesWorkOrder, false, true); + + //更新工单状态 + double unCompleteQty = MathOperation.sub(oldMesWorkOrder.getQty(), oldMesWorkOrder.getReportedQty()); + oldMesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); + if (oldMesWorkOrder.getReportedQty() > oldMesWorkOrder.getQty()) { + throw new ImppBusiException(String.format("工单报工数量【%s】大于工单数量【%s】,不允许报工", + oldMesWorkOrder.getReportedQty(), oldMesWorkOrder.getQty())); + } else if (Objects.equals(oldMesWorkOrder.getReportedQty(), oldMesWorkOrder.getQty())) { + oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + } else { + oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); + } + ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName); + workOrderRepository.saveAndFlush(oldMesWorkOrder); + //保存数据 + List mesProductOffLineList = new ArrayList<>(); + MesProductOffLine newMesProductOffLine; + + for (MesBom mesBom : mesBoms) { + newMesProductOffLine = new MesProductOffLine(); + newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo()); + newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName()); + newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); + newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); + newMesProductOffLine.setItemQty(mesBom.getItemQty()); + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + newMesProductOffLine.setQty(1d); + newMesProductOffLine.setReportSn(productionRecord.getProductSn()); + newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion()); + newMesProductOffLine.setSerialNumber(productionRecord.getProductSn()); + newMesProductOffLine.setUnit(mesBom.getUnit()); + newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); + newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo()); + newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode()); + newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode()); + newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType()); + newMesProductOffLine.setSapWorkCenter(oldMesWorkOrder.getErpWorkCenter()); + newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode()); + + ConvertBean.serviceModelInitialize(newMesProductOffLine, userName); + mesProductOffLineList.add(newMesProductOffLine); + } + + mesProductOffLineRDao.saveAll(mesProductOffLineList); + // 同步工单信息给加工记录、条码信息 + DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringEqualPack(productionRecord.getProductSn(), "productSn", snDdlPackBean); + DdlPreparedPack.getStringEqualPack(organizeCode, "organizeCode", snDdlPackBean); + + mesProduceSnRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo"}, + new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo()},snDdlPackBean); + + productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo", "reportStatus"}, + new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},snDdlPackBean); + } + + /** + * 获取对应的工单 + * @param productionRecord + * @param organizeCode + * @return + */ + private MesWorkOrder getMesWorkOrder(MesProductionRecord productionRecord, String organizeCode) { + MesWorkOrder mesWorkOrder = new MesWorkOrder(); + /** + * 根据产线物料获取所有工单 + */ + List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode, null); + // 获取当前班次 + String shiftCode = productionRecord.getShiftCode(); + String workCenterCode = productionRecord.getWorkCenterCode(); + + List shiftList = mesShiftService.queryMesShift(organizeCode, workCenterCode); + // 如果当前班次是早班 + if (CollectionUtils.isEmpty(shiftList)) { + MesPcnException.throwFlowException(String.format("班次信息未维护,产线=%s"), workCenterCode); + } + List shifts = shiftList.stream().filter(mesShift -> Objects.equals(mesShift.getWorkCenterCode(), workCenterCode)).collect(Collectors.toList()); + + MesShift currentShift = shifts.stream().filter(mesShift -> Objects.equals(mesShift.getShiftCode(), shiftCode)).findFirst().orElse(null); + + String beginTime =productionRecord.getLotNo() + " " + currentShift.getStartTime(); + Date beginDate = transfer(beginTime); + + /*MesWorkOrder found = null; + for (MesWorkOrder oldMesWorkOrder : oldMesWorkOrders) { + if (beginDate.getTime() >= transfer(oldMesWorkOrder.getPlanStartTime()).getTime() && beginDate.getTime() < transfer(oldMesWorkOrder.getPlanEndTime()).getTime()) { + found = oldMesWorkOrder; + break; + } + }*/ + + mesWorkOrder = oldMesWorkOrders.stream().filter(workOrder -> beginDate.getTime() >= transfer(workOrder.getPlanStartTime()).getTime() && beginDate.getTime() <= transfer(workOrder.getPlanEndTime()).getTime()).findFirst().orElse(null); + + String date = productionRecord.getLotNo(); + // 如果找不到需要找 当天的其它班次 + if (mesWorkOrder == null) { + // 如果开始时间大于结束时间,说明跨天了,跨天说明是晚班,需要找, 如果是晚班, 则找早中班的工单 + if (currentShift.getStartTime().compareTo(currentShift.getEndTime()) > 0) { + // 如果比0点大,需要找日期前一天的班次的工单号,如果是0点前,date =lotNO 如果是0点后,则找lot的前一天 + int hours = transfer(productionRecord.getCompleteDateTime()).getHours(); + if (hours < 12) { + date = getDate(productionRecord.getLotNo(), 1); + } else { + date = getDate(productionRecord.getLotNo(), 0); + } + String endTime = date + " " +currentShift.getStartTime(); + String startTime = date + " " +currentShift.getEndTime(); + + mesWorkOrder = oldMesWorkOrders.stream().filter(workOrder -> transfer(startTime).getTime() > transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() < transfer(workOrder.getPlanEndTime()).getTime()).findFirst().orElse(null); + + } else { + // 早班或者中班 则找当天非当前班次的最早单号 + String startTime = date + " " +currentShift.getEndTime(); + String endTime = getDate(date, 2) + " " +currentShift.getStartTime(); + for (MesWorkOrder workOrder : oldMesWorkOrders) { + if (transfer(startTime).getTime() >= transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() <= transfer(workOrder.getPlanEndTime()).getTime()) { + break; + } + } + mesWorkOrder = oldMesWorkOrders.stream().filter(workOrder -> transfer(startTime).getTime() >= transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() <= transfer(workOrder.getPlanEndTime()).getTime()).findFirst().orElse(null); + } + if (mesWorkOrder == null) { + // todo 需要记录并且第二天要用job跑 + return null; + } + } + return mesWorkOrder; + } + + private List getMesWorkOrders(MesProductionRecord productionRecord, String organizeCode, String workOrderNo) { + List list = Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()).collect(Collectors.toList()); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(productionRecord.getWorkCenterCode(), "workCenterCode", ddlPackBean); + if (!StringUtils.isEmpty(workOrderNo)) { + DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", ddlPackBean); + } + DdlPreparedPack.getInPackList(list, "workOrderStatus", ddlPackBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean); + // 新增班次逻辑 + //DdlPreparedPack. + List oldMesWorkOrders = workOrderRepository.findByHqlWhere(ddlPackBean); + if(CollectionUtils.isEmpty(oldMesWorkOrders)){ + throw new ImppBusiException(String.format("物料【%s】状态已发布的工单信息不存在", productionRecord.getPartNo())); + } + return oldMesWorkOrders; + } + + /** + * flag = 1 减少 1天, = 2 加一天 + * @param lotNo + * @param flag + * @return + */ + public String getDate(String lotNo, int flag) { + SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); + Date d = null; + try { + d = df.parse(lotNo); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar cal=Calendar.getInstance(); + cal.setTime(d); + if (flag == 1) { + cal.add(Calendar.DATE, -1); //减1天 + } else if (flag == 2) { + cal.add(Calendar.DATE, 1); //加1天 + } + return df.format(cal.getTime()).substring(0, 10); + } + + private MesProductVersion getMesProductVersion(MesWorkOrder item, MesWorkCenter mesWorkCenter) { + DdlPackBean ddlPackBean; + ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); + ddlPackBean.setOrderByStr(" order by createDatetime desc "); + MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); + if (Objects.isNull(mesProductVersion)) { + MesPcnException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), + mesWorkCenter.getErpWorkCenter()); + } + return mesProductVersion; + } + @Override + public List getUnReportMesProduceSn(String organizeCode) { + //1.获取生产加工记录production_record表中,report_status为待汇报状态的工单 + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + List statusList = Stream.of(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue()).collect(Collectors.toList()); + DdlPreparedPack.getInPackList( statusList,"reportStatus",ddlPackBean); + DdlPreparedPack.getIsNull("workOrderNo",ddlPackBean); + //DdlPreparedPack.getStringEqualPack("B19CK01A", "workCenterCode",ddlPackBean); + + + + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean); + List mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, 1); + + return mesProductionRecordList; + } + @Override - public List getUnReportMesProduceSn(String organizeCode) { - List mesProduceSnList = new ArrayList<>(); + public List getUnReportHasOrderMesProduceSn(String organizeCode) { //1.获取生产加工记录production_record表中,report_status为待汇报状态的工单 DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); List statusList = Stream.of(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue()).collect(Collectors.toList()); @@ -441,17 +722,12 @@ public class MesWorkOrderService implements IMesWorkOrderService { DdlPreparedPack.getIsNotNull("workOrderNo",ddlPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean); - List mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, 5); - if (mesProductionRecordList.isEmpty()){ - return mesProduceSnList; - } - //2.根据工单查询工单下的mesProduceSn - List workOrderNoList = mesProductionRecordList.stream().map(MesProductionRecord::getWorkOrderNo).collect(Collectors.toList()); - //工单号 - DdlPackBean snPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",snPackBean); - return mesProduceSnRao.findByHqlWhere(snPackBean); + List mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, 1); + + return mesProductionRecordList; } + + @Override public List getPreDayReportMesProductionRecord(String organizeCode,List mesShiftList, String workCenterCode ) { @@ -664,4 +940,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { } return mesProductVersion; } + + private Date transfer(String dateStr){ + return DateUtil.parse(dateStr, (DateParser) DatePattern.NORM_DATETIME_FORMAT); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSaveProcessResultStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSaveProcessResultStepService.java index ec76025..27fbbff 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSaveProcessResultStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSaveProcessResultStepService.java @@ -77,7 +77,7 @@ public class MesSaveProcessResultStepService extends BaseStepService { /** * 加工异常处理工步 */ - // mesProductResultErrorHandleStepService.execute(reqBean); + mesProductResultErrorHandleStepService.execute(reqBean); /** * 报工 */ 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 921b448..821c690 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 @@ -150,8 +150,8 @@ public class MesProductionCustomContextStepService extends BaseStepService imple StationKvBean shiftGroupKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftGroup")).findFirst().orElse(null); StationKvBean shiftCodeKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftCode")).findFirst().orElse(null); - mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftGroupKvBean.getValue()); - mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftCodeKvBean.getValue()); + mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftCodeKvBean.getValue()); + mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftGroupKvBean.getValue()); return mesProdShiftContext; } diff --git a/pom.xml b/pom.xml index ed126c0..9e0fe1b 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,9 @@ INFO true UTF-8 - + 1.0.1-YZ 1.0.0-yfai