From 2bcd23eed4d7415788189f7fb7c1f57e7f8df80c Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Wed, 29 Nov 2023 12:31:45 +0800 Subject: [PATCH] =?UTF-8?q?jx=20mes=20=E5=B7=A5=E5=BA=8F=E5=B9=B3=E8=A1=A1?= =?UTF-8?q?=E5=8F=AF=E8=A7=86=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IProdOrgExtService.java | 9 ++ .../serviceimpl/base/ProdOrgExtService.java | 8 + .../jx/JxCenterWorkingBoardCenterThreeService.java | 175 ++++++++++++++++++++- .../jx/JxCenterWorkingBoardDispatchService.java | 3 +- .../ext/mes/pojo/bean/SxWorkCellTaktCollect.java | 56 +++++++ .../mes/pojo/bean/SxWorkCellTaktCollectRecord.java | 56 +++++++ .../SxWorkCellTaktCollectRecordRepository.java | 14 ++ .../SxWorkCellTaktCollectRepository.java | 14 ++ .../i3plus/ext/mes/pojo/util/MesExtConstWords.java | 3 + 9 files changed, 329 insertions(+), 9 deletions(-) create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollect.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollectRecord.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRecordRepository.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRepository.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IProdOrgExtService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IProdOrgExtService.java index 97f0480..6438de8 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IProdOrgExtService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IProdOrgExtService.java @@ -102,6 +102,15 @@ public interface IProdOrgExtService { List queryWorkCellList(String organizeCode); /** + * 根据生产线代码查询工位信息集合 + * @param organizeCode 组织代码 + * @param workCenterCode 生产线代码 + * @return 工位信息集合 + */ + @ApiOperation(value = "根据生产线代码查询工位信息集合", notes = "根据生产线代码查询工位信息集合") + List getWorkCellListByCenter(String organizeCode, String workCenterCode); + + /** * 根据组织代码查询工位信息集合 * @param workCell 工位参数 * @param pager 分页信息 diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/ProdOrgExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/ProdOrgExtService.java index b491d0b..73d0826 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/ProdOrgExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/ProdOrgExtService.java @@ -227,6 +227,14 @@ public class ProdOrgExtService implements IProdOrgExtService { } @Override + public List getWorkCellListByCenter(String organizeCode, String workCenterCode) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null; + return workCellRepository.findByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode}); + } + + @Override public ListPager queryWorkCellByPager(MesWorkCell workCell, Pager pager) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCell.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(workCell.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardCenterThreeService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardCenterThreeService.java index 861b948..7545676 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardCenterThreeService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardCenterThreeService.java @@ -1,16 +1,22 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi.jx; +import cn.estsh.i3plus.ext.mes.api.base.IProdOrgExtService; +import cn.estsh.i3plus.ext.mes.api.base.bu.IBusiConfigService; import cn.estsh.i3plus.ext.mes.api.base.jx.IJxTimeSegmentStatisticsService; import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxCenterWorkingBoardService; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesOutPutStatistics; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesOutPutStatisticsTimeSegment; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesTimeSegmentStatistics; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesWorkCenterExt; +import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxMergeTimeSlotsService; +import cn.estsh.i3plus.ext.mes.pojo.bean.*; import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxCenterWorkingBoardBusiModel; +import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxMergeTimeSlotsModel; +import cn.estsh.i3plus.ext.mes.pojo.repository.MesShiftProdCenterRecordRepository; +import cn.estsh.i3plus.ext.mes.pojo.repository.SxWorkCellTaktCollectRepository; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.tool.MathOperation; 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.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import com.alibaba.fastjson.JSONObject; @@ -18,7 +24,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.math.BigDecimal; import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -32,14 +40,32 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard private IJxCenterWorkingBoardService proxyService0; + private IJxCenterWorkingBoardService proxyService1; + private IJxCenterWorkingBoardService proxyService; private IJxTimeSegmentStatisticsService timeSegmentStatisticsService; - public JxCenterWorkingBoardCenterThreeService(IJxCenterWorkingBoardService proxyService0, IJxCenterWorkingBoardService proxyService) { + private IProdOrgExtService prodOrgExtService; + + private SxWorkCellTaktCollectRepository workCellTaktCollectRepository; + + private MesShiftProdCenterRecordRepository shiftProdCenterRecordRepository; + + private IBusiConfigService busiConfigService; + + private IJxMergeTimeSlotsService mergeTimeSlotsService; + + public JxCenterWorkingBoardCenterThreeService(IJxCenterWorkingBoardService proxyService0, IJxCenterWorkingBoardService proxyService1, IJxCenterWorkingBoardService proxyService) { this.proxyService0 = proxyService0; + this.proxyService1 = proxyService1; this.proxyService = proxyService; this.timeSegmentStatisticsService = (IJxTimeSegmentStatisticsService) SpringContextsUtil.getBean("jxTimeSegmentStatisticsService"); + this.prodOrgExtService = (IProdOrgExtService) SpringContextsUtil.getBean("prodOrgExtService"); + this.workCellTaktCollectRepository = (SxWorkCellTaktCollectRepository) SpringContextsUtil.getBean("sxWorkCellTaktCollectRepository"); + this.shiftProdCenterRecordRepository = (MesShiftProdCenterRecordRepository) SpringContextsUtil.getBean("mesShiftProdCenterRecordRepository"); + this.busiConfigService = (IBusiConfigService) SpringContextsUtil.getBean("busiConfigService"); + this.mergeTimeSlotsService = (IJxMergeTimeSlotsService) SpringContextsUtil.getBean("jxMergeTimeSlotsService"); } @Override @@ -47,6 +73,8 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard dataMap = proxyService0.queryCenterWorkingBoardData(dataMap); + dataMap = proxyService1.queryCenterWorkingBoardData(dataMap); + MesWorkCenterExt workCenterExtDb = (MesWorkCenterExt) dataMap.get(MesWorkCenterExt.class.getSimpleName()); packProxyCondition(dataMap, workCenterExtDb); @@ -67,10 +95,14 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard dataMap.put("当前计划台数", getQtyStr(getCurPlanQty(curOutPutStatisticsList, curWorkOrder, workCenterExtDb, dataMap))); - dataMap.put("当前实绩台数", getQtyStr(dataMap.containsKey(MesExtConstWords.COMPLET_QTY) ? (Double) dataMap.get(MesExtConstWords.COMPLET_QTY) : getOutPutStatisticsList2AmountQty(curOutPutStatisticsList))); + Double completeQty = dataMap.containsKey(MesExtConstWords.COMPLET_QTY) ? (Double) dataMap.get(MesExtConstWords.COMPLET_QTY) : getOutPutStatisticsList2AmountQty(curOutPutStatisticsList); + + dataMap.put("当前实绩台数", getQtyStr(completeQty)); dataMap.put("小时产量", getTimeSegmentStatistics(outPutStatisticsTimeSegmentList, workCenterExtDb)); + dataMap.put("工序平衡可视化", getWorkCellTaktStatistics(dataMap, workCenterExtDb, curWorkOrder, completeQty)); + return clearUselessData(dataMap); } @@ -85,6 +117,7 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard dataMap.remove(MesExtConstWords.WORK_TIME); dataMap.remove(MesExtConstWords.SHIFT_CODE); dataMap.remove(MesExtConstWords.WORK_CENTER_CODE); + dataMap.remove(MesExtConstWords.STANDARD_WORK); return dataMap; } @@ -128,7 +161,7 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard return qty; } - private Object getTimeSegmentStatistics(List outPutStatisticsTimeSegmentList, MesWorkCenterExt workCenterExtDb) { + private JxCenterWorkingBoardBusiModel getTimeSegmentStatistics(List outPutStatisticsTimeSegmentList, MesWorkCenterExt workCenterExtDb) { JxCenterWorkingBoardBusiModel psData = new JxCenterWorkingBoardBusiModel().title("小时产量"); @@ -181,8 +214,134 @@ public class JxCenterWorkingBoardCenterThreeService extends JxCenterWorkingBoard return new StringJoiner(MesExtConstWords.ONE_SPACE).add(workTime).add(hms).toString(); } - public Double getOutPutStatisticsTimeSegmentList2AmountQty(List outPutStatisticsTimeSegmentList) { + private Double getOutPutStatisticsTimeSegmentList2AmountQty(List outPutStatisticsTimeSegmentList) { return CollectionUtils.isEmpty(outPutStatisticsTimeSegmentList) ? new Double(0) : outPutStatisticsTimeSegmentList.stream().filter(o -> null != o).mapToDouble(MesOutPutStatisticsTimeSegment::getQty).sum(); } + private JxCenterWorkingBoardBusiModel getWorkCellTaktStatistics(Map dataMap, MesWorkCenterExt workCenterExtDb, Optional curWorkOrder, Double completeQty) { + + JxCenterWorkingBoardBusiModel psData = new JxCenterWorkingBoardBusiModel().title("工序平衡可视化"); + + List workCellList = getWorkCellList(workCenterExtDb); + + if (CollectionUtils.isEmpty(workCellList)) return psData; + + String curTime = TimeTool.getNowTime(true); + + String lastHourTime = TimeTool.timeCalc(TimeTool.stringParseToDate(curTime, MesExtConstWords.DATETIME_FORMAT), Calendar.HOUR_OF_DAY, -1, MesExtConstWords.DATETIME_FORMAT); + + List workCellTaktCollectList = getWorkCellTaktCollectList(workCenterExtDb, curTime, lastHourTime); + + List shiftProdCenterRecordList = getShiftProdCenterRecordList(workCenterExtDb, curTime, lastHourTime); + + MesBusiConfig limitCfg = getLimitCfg(workCenterExtDb); + + Map> filterMap = getWorkCellTaktCollectList2Filter(workCellTaktCollectList, limitCfg); + + Map partStandardWorkMap = (Map) dataMap.get(MesExtConstWords.STANDARD_WORK); + Double workStandard = (null != curWorkOrder && curWorkOrder.isPresent() && !CollectionUtils.isEmpty(partStandardWorkMap) && partStandardWorkMap.containsKey(curWorkOrder.get().getPartNo())) ? Double.parseDouble(partStandardWorkMap.get(curWorkOrder.get().getPartNo())) : new Double(0); + + for (MesWorkCell workCell : workCellList) { + if (null == workCell) continue; + List resultList = CollectionUtils.isEmpty(filterMap) ? null : filterMap.get(workCell.getWorkCellCode()); + psData.addChartData(workCell.getSeq().toString(), getCellRealTakt(resultList), getRealTakt(shiftProdCenterRecordList, completeQty, curTime, lastHourTime), getStandardTakt(workStandard, workCenterExtDb)); + } + + return psData; + } + + private List getWorkCellList(MesWorkCenterExt workCenterExtDb) { + String item = new StringJoiner(MesExtConstWords.AND).add("CELLS").add(workCenterExtDb.getWorkCenterCode()).toString(); + String workCellList4Cached = (String) execCachedCenterWorkingBoardData(workCenterExtDb.getOrganizeCode(), MesExtConstWords.ZERO_STR, item, null); + List workCellList = !StringUtils.isEmpty(workCellList4Cached) ? JSONObject.parseArray(workCellList4Cached, MesWorkCell.class) : execWorkCellList(workCenterExtDb, item); + return CollectionUtils.isEmpty(workCellList) ? null : workCellList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getSeq()))).sorted(Comparator.comparing(MesWorkCell::getSeq)).collect(Collectors.toList()); + } + + private List execWorkCellList(MesWorkCenterExt workCenterExtDb, String item) { + List workCellList = prodOrgExtService.getWorkCellListByCenter(workCenterExtDb.getOrganizeCode(), workCenterExtDb.getWorkCenterCode()); + if (!CollectionUtils.isEmpty(workCellList)) execCachedCenterWorkingBoardData(workCenterExtDb.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr(), item, JSONObject.toJSONString(workCellList)); + return workCellList; + } + + private List getWorkCellTaktCollectList(MesWorkCenterExt workCenterExtDb, String curTime, String lastHourTime) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCenterExtDb.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(workCenterExtDb.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.timeBuilder(lastHourTime, curTime, MesExtConstWords.CREATE_DATE_TIME, true, true, packBean); + return workCellTaktCollectRepository.findByHqlWhere(packBean); + } + + private MesBusiConfig getLimitCfg(MesWorkCenterExt workCenterExtDb) { + String limitCfg4Cached = (String) execCachedCenterWorkingBoardData(workCenterExtDb.getOrganizeCode(), MesExtConstWords.ZERO_STR, MesExtConstWords.SX_WORK_CELL_TAKT_LIMIT_CFG, null); + return !StringUtils.isEmpty(limitCfg4Cached) ? JSONObject.parseObject(limitCfg4Cached, MesBusiConfig.class) : execLimitCfg(workCenterExtDb.getOrganizeCode()); + } + + private MesBusiConfig execLimitCfg(String organizeCode) { + MesBusiConfig limitCfg = busiConfigService.getBusiConfigByCfgCode(organizeCode, MesExtConstWords.SX_WORK_CELL_TAKT_LIMIT_CFG); + if (null != limitCfg) execCachedCenterWorkingBoardData(organizeCode, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr(), MesExtConstWords.SX_WORK_CELL_TAKT_LIMIT_CFG, JSONObject.toJSONString(limitCfg)); + return limitCfg; + } + + private Map> getWorkCellTaktCollectList2Filter(List workCellTaktCollectList, MesBusiConfig limitCfg) { + if (CollectionUtils.isEmpty(workCellTaktCollectList)) return null; + workCellTaktCollectList = workCellTaktCollectList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkTakt()) && workCellTaktCollectCompareToCfg(o, limitCfg))).collect(Collectors.toList()); + return workCellTaktCollectList.stream().filter(o -> null != o).collect(Collectors.groupingBy(SxWorkCellTaktCollect::getWorkCellCode)); + } + + private Boolean workCellTaktCollectCompareToCfg(SxWorkCellTaktCollect workCellTaktCollect, MesBusiConfig limitCfg) { + if (null == limitCfg || (StringUtils.isEmpty(limitCfg.getCfgValue()) || !limitCfg.getCfgValue().contains(MesExtConstWords.COMMA))) return true; + String[] limitArr = limitCfg.getCfgValue().split(MesExtConstWords.COMMA); + if (limitArr.length != 2) return true; + if (!StringUtils.isEmpty(limitArr[0]) && MathOperation.compareTo(Double.parseDouble(workCellTaktCollect.getWorkTakt()), Double.parseDouble(limitArr[0])) < 0) return false; + if (!StringUtils.isEmpty(limitArr[1]) && MathOperation.compareTo(Double.parseDouble(workCellTaktCollect.getWorkTakt()), Double.parseDouble(limitArr[1])) > 0) return false; + return true; + } + + private BigDecimal getCellRealTakt(List resultList) { + if (CollectionUtils.isEmpty(resultList)) return format1RounHalfUp(new Double(0)); + return format1RounHalfUp(MathOperation.div(resultList.stream().filter(o -> null != o).mapToDouble(o -> Double.parseDouble(o.getWorkTakt())).sum(), new Double(resultList.size()))); + } + + private BigDecimal getStandardTakt(Double workStandard, MesWorkCenterExt workCenterExtDb) { + if (MathOperation.compareTo(workStandard, new Double(0)) == 0 || (StringUtils.isEmpty(workCenterExtDb.getWorkerQty()) || MathOperation.compareTo(workCenterExtDb.getWorkerQty(), new Double(0)) == 0)) return format1RounHalfUp(new Double(0)); + return format1RounHalfUp(MathOperation.div(MathOperation.mul(workStandard, new Double(60)), workCenterExtDb.getWorkerQty())); + } + + private List getShiftProdCenterRecordList(MesWorkCenterExt workCenterExtDb, String curTime, String lastHourTime) { + List shiftProdCenterRecordList = new ArrayList<>(); + shiftProdCenterRecordList.addAll(getShiftProdCenterRecordListByTime(workCenterExtDb, lastHourTime, curTime, MesExtConstWords.START_TIME)); + shiftProdCenterRecordList.addAll(getShiftProdCenterRecordListByTime(workCenterExtDb, lastHourTime, curTime, MesExtConstWords.END_TIME)); + return CollectionUtils.isEmpty(shiftProdCenterRecordList) ? null : + shiftProdCenterRecordList.stream().filter(o -> null != o).distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesShiftProdCenterRecord::getId))), ArrayList::new)); + } + + private List getShiftProdCenterRecordListByTime(MesWorkCenterExt workCenterExtDb, String lastHourTime, String curTime, String fieldName) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCenterExtDb.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(workCenterExtDb.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.timeBuilder(lastHourTime, curTime, fieldName, true, false, packBean); + return shiftProdCenterRecordRepository.findByHqlWhere(packBean); + } + + private BigDecimal getRealTakt(List shiftProdCenterRecordList, Double completeQty, String curTime, String lastHourTime) { + if (MathOperation.compareTo(completeQty, new Double(0)) == 0) return format1RounHalfUp(new Double(0)); + return format1RounHalfUp(MathOperation.div(MathOperation.mul(MathOperation.sub(new Double(60), getStopTime(shiftProdCenterRecordList, curTime, lastHourTime)), new Double(60)), completeQty)); + } + + private Double getStopTime(List shiftProdCenterRecordList, String curTime, String lastHourTime) { + if (CollectionUtils.isEmpty(shiftProdCenterRecordList)) return new Double(0); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(MesExtConstWords.DATETIME_FORMAT); + List timeSlots = new ArrayList<>(); + for (MesShiftProdCenterRecord shiftProdCenterRecord : shiftProdCenterRecordList) { + if (null == shiftProdCenterRecord) continue; + timeSlots.add(new JxMergeTimeSlotsModel().convertTime(compareToTimeByFlag(shiftProdCenterRecord.getStartTime(), lastHourTime, true), compareToTimeByFlag(shiftProdCenterRecord.getEndTime(), curTime, false), simpleDateFormat)); + } + timeSlots = mergeTimeSlotsService.mergeTimeSlots(timeSlots); + return CollectionUtils.isEmpty(timeSlots) ? new Double(0) : + timeSlots.stream().filter(o -> null != o).mapToDouble(o -> (MathOperation.div((double)(o.getEndDate().getTime() - o.getStartDate().getTime()), new Double(60000)))).sum(); + } + + private String compareToTimeByFlag(String time, String curTime, boolean flag) { + if (flag ? time.compareTo(curTime) > 0 : time.compareTo(curTime) < 0) return curTime; + else return time; + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardDispatchService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardDispatchService.java index c39248d..d213c85 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardDispatchService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxCenterWorkingBoardDispatchService.java @@ -36,7 +36,8 @@ public class JxCenterWorkingBoardDispatchService implements IJxCenterWorkingBoar new JxCenterWorkingBoardProxyEnergyRateService(new JxCenterWorkingBoardProxyOrderService(new JxCenterWorkingBoardProxyOutPutService(new JxCenterWorkingBoardProxyRepairService(new JxCenterWorkingBoardProxySpcrService()))))).queryCenterWorkingBoardData(dataMap); case "center03": - return new JxCenterWorkingBoardCenterThreeService(new JxCenterWorkingBoardProxyCenterService(), new JxCenterWorkingBoardProxyOrderService(new JxCenterWorkingBoardProxyOutPutService(new JxCenterWorkingBoardProxyTimeSegmentService()))).queryCenterWorkingBoardData(dataMap); + return new JxCenterWorkingBoardCenterThreeService(new JxCenterWorkingBoardProxyCenterService(), new JxCenterWorkingBoardProxyStandardWorkService(), + new JxCenterWorkingBoardProxyOrderService(new JxCenterWorkingBoardProxyOutPutService(new JxCenterWorkingBoardProxyTimeSegmentService()))).queryCenterWorkingBoardData(dataMap); case "monitor01": return new JxCenterWorkingBoardMonitorOneService( diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollect.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollect.java new file mode 100644 index 0000000..da01778 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollect.java @@ -0,0 +1,56 @@ +package cn.estsh.i3plus.ext.mes.pojo.bean; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Index; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @DESCRIPTION: 松下工位节拍采集看板专用表 + * @USER: wangjie + * @DATE: 2023-02-03 16:11 + */ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "SX_WORK_CELL_TAKT_COLLECT", indexes = { + @Index(columnList = "SYSTEM_SYNC_STATUS"), + @Index(columnList = "WORK_CENTER_CODE"), + @Index(columnList = "WORK_CELL_CODE") +}) +@Api("松下工位节拍采集看板专用表") +public class SxWorkCellTaktCollect extends BaseBean implements Serializable { + + private static final long serialVersionUID = -7357613295141228306L; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("生产线代码") + private String workCenterCode; + + @Column(name = "WORK_CELL_CODE") + @ApiParam("工位代码") + private String workCellCode; + + @Column(name = "WORK_TAKT") + @ApiParam("生产节拍") + private String workTakt; + + @Column(name = "SYSTEM_SYNC_STATUS") + @ColumnDefault("2") + @ApiParam(value = "系统同步标志") + public Integer systemSyncStatus = 2; + +} + diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollectRecord.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollectRecord.java new file mode 100644 index 0000000..f58bfe5 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/SxWorkCellTaktCollectRecord.java @@ -0,0 +1,56 @@ +package cn.estsh.i3plus.ext.mes.pojo.bean; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Index; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @DESCRIPTION: 松下工位节拍采集记录 + * @USER: wangjie + * @DATE: 2023-02-03 16:11 + */ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "SX_WORK_CELL_TAKT_COLLECT_RECORD", indexes = { + @Index(columnList = "SYSTEM_SYNC_STATUS"), + @Index(columnList = "WORK_CENTER_CODE"), + @Index(columnList = "WORK_CELL_CODE") +}) +@Api("松下工位节拍采集") +public class SxWorkCellTaktCollectRecord extends BaseBean implements Serializable { + + private static final long serialVersionUID = 4433980781546156429L; + + @Column(name = "WORK_CENTER_CODE") + @ApiParam("生产线代码") + private String workCenterCode; + + @Column(name = "WORK_CELL_CODE") + @ApiParam("工位代码") + private String workCellCode; + + @Column(name = "WORK_TAKT") + @ApiParam("生产节拍") + private String workTakt; + + @Column(name = "SYSTEM_SYNC_STATUS") + @ColumnDefault("2") + @ApiParam(value = "系统同步标志") + public Integer systemSyncStatus = 2; + +} + diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRecordRepository.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRecordRepository.java new file mode 100644 index 0000000..e1bdf88 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRecordRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.ext.mes.pojo.repository; + +import cn.estsh.i3plus.ext.mes.pojo.bean.SxWorkCellTaktCollectRecord; +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import org.springframework.stereotype.Repository; + +/** + * @author wangjie + * @version 1.0 + * @date 2021/1/29 15:02 + **/ +@Repository +public interface SxWorkCellTaktCollectRecordRepository extends BaseRepository { +} diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRepository.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRepository.java new file mode 100644 index 0000000..cdead7c --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/repository/SxWorkCellTaktCollectRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.ext.mes.pojo.repository; + +import cn.estsh.i3plus.ext.mes.pojo.bean.SxWorkCellTaktCollect; +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import org.springframework.stereotype.Repository; + +/** + * @author wangjie + * @version 1.0 + * @date 2021/1/29 15:02 + **/ +@Repository +public interface SxWorkCellTaktCollectRepository extends BaseRepository { +} diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java index 9fad282..d2b312c 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java @@ -901,4 +901,7 @@ public class MesExtConstWords { public static final String BOARD_WORK_SHOW_FLAG = "BOARD_WORK_SHOW_FLAG"; + //节拍限制值配置 + public static final String SX_WORK_CELL_TAKT_LIMIT_CFG = "SX_WORK_CELL_TAKT_LIMIT_CFG"; + }