From b664e74e378fba7001511ec77e9d901d9a0f8276 Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Wed, 19 Jun 2024 10:43:15 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E8=A7=84=E5=88=99=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/busi/report/IMesYfReportService.java | 11 ++++- .../report/MesProdRuleReportController.java | 50 ++++++++++++++++++++++ .../serviceimpl/report/MesYfReportServiceImpl.java | 39 ++++++++++++++++- .../report/MesProdRuleReportConditionModel.java | 42 ++++++++++++++++++ 4 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesProdRuleReportController.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesProdRuleReportConditionModel.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java index 373322f..dd33377 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java @@ -2,10 +2,11 @@ package cn.estsh.i3plus.ext.mes.api.busi.report; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; +import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg; +import cn.estsh.impp.framework.boot.util.ResultBean; /** * @Description : 报表-业务方法 @@ -24,5 +25,13 @@ public interface IMesYfReportService { */ ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager); + /** + * 产线产品加工规则报表-查询 + * @param queryReportModel 查询条件封装 + * @param pager 分页信息 + * @return 分页查询结果 + */ + ResultBean queryMesProdRuleByPager(MesProdRuleReportConditionModel queryReportModel, Pager pager); + ListPager queryMesSuspiciousSnMsgByPager(MesProduceSn mesProduceSn, Pager pager); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesProdRuleReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesProdRuleReportController.java new file mode 100644 index 0000000..7752fdf --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesProdRuleReportController.java @@ -0,0 +1,50 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.report; + +import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.impp.framework.base.controller.MesBaseController; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 产线产品加工规则报表 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/17 15:37 + * @Modify: + **/ +@Api("产线产品加工规则报表") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/prod-rule-report") +public class MesProdRuleReportController extends MesBaseController { + + @Autowired + private IMesYfReportService mesYfReportService; + + @ApiOperation(value = "查询产线产品加工规则报表", notes = "查询产线产品加工规则报表") + @GetMapping("/query") + public ResultBean queryMesProdRuleByPager(MesProdRuleReportConditionModel conditionModel, Pager pager){ + try { + ValidatorBean.beginValid(conditionModel).notNull("isSort", conditionModel.getIsSort()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return mesYfReportService.queryMesProdRuleByPager(conditionModel, pager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index 40344f7..3599d74 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -4,15 +4,22 @@ import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; +import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleSortCfg; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleSortCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; +import cn.estsh.impp.framework.boot.util.ResultBean; +import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,15 +37,45 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Autowired private IMesYfReportDao mesYfReportDao; + @Autowired private MesProduceSnRepository mesProduceSnRDao; + @Autowired + private MesProdRuleSortCfgRepository mesProdRuleSortCfgRepository; + + @Autowired + private MesProdRuleNoSortCfgRepository mesProdRuleNoSortCfgRepository; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { return mesYfReportDao.queryMesDeviceDataByPager(queryReportModel, pager); } @Override + public ResultBean queryMesProdRuleByPager(MesProdRuleReportConditionModel queryReportModel, Pager pager) { + DdlPackBean queryPackBean = DdlPackBean.getDdlPackBean(queryReportModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(queryReportModel.getEquipmentCode(), "equipmentCode", queryPackBean); + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == queryReportModel.getIsSort()) { + //查询“排序产品加工规则配置” + DdlPreparedPack.getStringEqualPack(queryReportModel.getWorkCenterCode(), "workCenterCode", queryPackBean); + DdlPreparedPack.getStringEqualPack(queryReportModel.getWorkCellCode(), "workCellCode", queryPackBean); + pager = PagerHelper.getPager(pager, mesProdRuleSortCfgRepository.findByHqlWhereCount(queryPackBean)); + List mesProdRuleSortCfgList = mesProdRuleSortCfgRepository.findByHqlWherePage(queryPackBean, pager); + return ResultBean.success("查询设备数据成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(new ListPager(mesProdRuleSortCfgList, pager)); + }else { + //查询“非排序产品加工规则配置” + DdlPreparedPack.getStringEqualPack(queryReportModel.getInPartNo(), "inPartNo", queryPackBean); + DdlPreparedPack.getStringEqualPack(queryReportModel.getInPartNoRule(), "inPartNoRule", queryPackBean); + DdlPreparedPack.getStringEqualPack(queryReportModel.getOutPartNo(), "outPartNo", queryPackBean); + pager = PagerHelper.getPager(pager, mesProdRuleNoSortCfgRepository.findByHqlWhereCount(queryPackBean)); + List mesProdRuleNosortCfgList = mesProdRuleNoSortCfgRepository.findByHqlWherePage(queryPackBean, pager); + return ResultBean.success("查询设备数据成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(new ListPager(mesProdRuleNosortCfgList, pager)); + } + } + + + @Override public ListPager queryMesSuspiciousSnMsgByPager(MesProduceSn bean, Pager pager) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "partNo", packBean); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesProdRuleReportConditionModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesProdRuleReportConditionModel.java new file mode 100644 index 0000000..9ba59ca --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesProdRuleReportConditionModel.java @@ -0,0 +1,42 @@ +package cn.estsh.i3plus.ext.mes.pojo.model.report; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * @Description : 产线产品加工规则报表-查询条件封装 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/17 15:52 + * @Modify: + **/ +@Data +@ApiModel("产线产品加工规则报表-查询条件封装") +public class MesProdRuleReportConditionModel { + + @ApiParam(value = "组织代码") + private String organizeCode; + + @ApiParam(value = "工作中心(产线)") + private String workCenterCode; + + @ApiParam(value = "工作单元代码(工位)") + private String workCellCode; + + @ApiParam(value = "设备代码(设备编号)") + private String equipmentCode; + + @ApiParam(value = "进料零件号") + private String inPartNo; + + @ApiParam(value = "进料零件规则") + private String inPartNoRule; + + @ApiParam(value = "产成零件号") + private String outPartNo; + + @ApiParam(value = "是否排序") + private Integer isSort; + +} From 057a9f2f2f3d561efa51909a5cc8fa6366c14d2d Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Wed, 19 Jun 2024 11:04:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?MES=E8=AE=BE=E5=A4=87=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8A=A5=E8=A1=A8-=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E2=80=9C=E6=97=A5=E5=BF=97=E7=B1=BB=E5=9E=8B=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E2=80=9D=E3=80=81=E2=80=9C=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E2=80=9D=E3=80=81=E2=80=9C=E6=9B=B4=E6=96=B0=E4=BA=BA=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daoimpl/report/MesYfReportDaoImpl.java | 3 +- .../serviceimpl/report/MesYfReportServiceImpl.java | 9 ++++- .../MesDeviceDataQueryReportConditionModel.java | 3 -- .../MesDeviceDataQueryReportResultModel.java | 46 +++++++++++++++++----- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java index 02231ee..540bb51 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java @@ -36,7 +36,8 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { dataQuerySql.append("select new ") .append(MesDeviceDataQueryReportResultModel.class.getName()) .append("(organizeCode, workCenterCode, workCellCode, workOrderNo, serialNumber, ") - .append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser) "); + .append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser, " + + "modifyDatetime, modifyUser) "); countQuerySql.append("select count(1) "); commonQuerySql.append("from MesWorkCellScanMonitorLog " + "where isValid = :isValid and isDeleted = :isDeleted and organizeCode = :organizeCode " + diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index 3599d74..dac50ad 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -18,6 +18,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleSortCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.ResultBean; import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -49,7 +50,13 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { - return mesYfReportDao.queryMesDeviceDataByPager(queryReportModel, pager); + ListPager mesDeviceDataQueryReportResultModelListPager = + mesYfReportDao.queryMesDeviceDataByPager(queryReportModel, pager); + List objectList = mesDeviceDataQueryReportResultModelListPager.getObjectList(); + for (MesDeviceDataQueryReportResultModel model : objectList) { + model.setLogTypeName(MesExtEnumUtil.LOG_TYPE.valueOfDescription(model.getLogType())); + } + return new ListPager<>(objectList, mesDeviceDataQueryReportResultModelListPager.getObjectPager()); } @Override diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java index 9c5fd18..440b2b2 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java @@ -18,9 +18,6 @@ public class MesDeviceDataQueryReportConditionModel { @ApiParam(value = "组织代码") private String organizeCode; - /** - * 查询条件 - */ @ApiParam(value = "工作中心(产线)") private String workCenterCode; diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java index 38f79fa..11ef034 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pojo.model.report; +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -15,46 +16,70 @@ import lombok.Data; @ApiModel("设备数据查询报表-查询结果封装") public class MesDeviceDataQueryReportResultModel { - @ApiParam(value = "ERP工厂号(组织代码)") + @ApiParam(value = "ERP工厂号") + @AnnoOutputColumn(name = "ERP工厂号") private String organizeCode; - @ApiParam(value = "工作中心(产线)") + @ApiParam(value = "产线") + @AnnoOutputColumn(name = "产线") private String workCenterCode; - @ApiParam(value = "工作单元代码(工位)") + @ApiParam(value = "工位代码") + @AnnoOutputColumn(name = "工位代码") private String workCellCode; - @ApiParam(value = "生产工单号(工单)") + @ApiParam(value = "工单") + @AnnoOutputColumn(name = "工单") private String workOrderNo; - @ApiParam(value = "过程条码(主条码)") + @ApiParam(value = "主条码") + @AnnoOutputColumn(name = "主条码") private String serialNumber; @ApiParam(value = "日志类型") private Integer logType; + @ApiParam(value = "日志类型名称") + @AnnoOutputColumn(name = "日志类型名称") + private String logTypeName; + @ApiParam(value = "日志内容") + @AnnoOutputColumn(name = "日志内容") private String message; @ApiParam(value = "错误类型") + @AnnoOutputColumn(name = "错误类型") private String errorType; - @ApiParam(value = "设备代码(设备编号)") + @ApiParam(value = "设备编号") + @AnnoOutputColumn(name = "设备编号") private String equipmentCode; @ApiParam(value = "设备名称") + @AnnoOutputColumn(name = "设备名称") private String equipmentName; @ApiParam(value = "创建时间") + @AnnoOutputColumn(name = "创建时间") private String createDatetime; @ApiParam(value = "创建人") + @AnnoOutputColumn(name = "创建人") private String createUser; + @ApiParam(value = "更新时间") + @AnnoOutputColumn(name = "更新时间") + private String modifyDatetime; + + @ApiParam(value = "更新人") + @AnnoOutputColumn(name = "更新人") + private String modifyUser; + public MesDeviceDataQueryReportResultModel(String organizeCode, String workCenterCode, String workCellCode, - String workOrderNo, String serialNumber, Integer logType, String message, - String errorType, String equipmentCode, String equipmentName, - String createDatetime, String createUser) { + String workOrderNo, String serialNumber, Integer logType, + String message, String errorType, String equipmentCode, + String equipmentName, String createDatetime, String createUser, + String modifyDatetime, String modifyUser) { this.organizeCode = organizeCode; this.workCenterCode = workCenterCode; this.workCellCode = workCellCode; @@ -67,5 +92,8 @@ public class MesDeviceDataQueryReportResultModel { this.equipmentName = equipmentName; this.createDatetime = createDatetime; this.createUser = createUser; + this.modifyDatetime = modifyDatetime; + this.modifyUser = modifyUser; } + } From 19893a311987657e9354625786683fc364841bc2 Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Wed, 19 Jun 2024 17:14:12 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/busi/board/IMesYfBoardService.java | 34 +++++ .../board/MesWorkCenterBoardController.java | 160 +++++++++++++++++++++ .../serviceimpl/board/IMesYfBoardServiceImpl.java | 58 ++++++++ .../board/MesWorkCenterBoardConditionModel.java | 29 ++++ .../model/board/MesWorkCenterBoardResultModel.java | 96 +++++++++++++ 5 files changed, 377 insertions(+) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/board/IMesYfBoardService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/board/MesWorkCenterBoardController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardConditionModel.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/board/IMesYfBoardService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/board/IMesYfBoardService.java new file mode 100644 index 0000000..54b1da3 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/board/IMesYfBoardService.java @@ -0,0 +1,34 @@ +package cn.estsh.i3plus.ext.mes.api.busi.board; + +import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardConditionModel; +import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardResultModel; + +import java.util.List; + +/** + * @Description : 看板-业务方法 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/19 11:08 + * @Modify: + **/ +public interface IMesYfBoardService { + + /** + * 产线看板 + */ + List queryWorkCenterStatus(MesWorkCenterBoardConditionModel conditionModel); + + MesWorkCenterBoardResultModel queryWorkCenterProductionCompletionRate(MesWorkCenterBoardConditionModel conditionModel); + + List queryWorkCenterWorkOrderCompletionStatus(MesWorkCenterBoardConditionModel conditionModel); + + List queryUnitHourCompletionRate(MesWorkCenterBoardConditionModel conditionModel); + + List queryWorkCenterFirstTimeOfflineQualificationRate(MesWorkCenterBoardConditionModel conditionModel); + + List queryInspectionResults(MesWorkCenterBoardConditionModel conditionModel); + + MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel); + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/board/MesWorkCenterBoardController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/board/MesWorkCenterBoardController.java new file mode 100644 index 0000000..b1ea7d3 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/board/MesWorkCenterBoardController.java @@ -0,0 +1,160 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.board; + +import cn.estsh.i3plus.ext.mes.api.busi.board.IMesYfBoardService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardConditionModel; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 产线看板 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/19 11:10 + * @Modify: + **/ +@Api("产线看板") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/work-center-board") +public class MesWorkCenterBoardController { + + @Autowired + private IMesYfBoardService mesYfBoardService; + + @ApiOperation(value = "查询产线状态", notes = "查询产线状态") + @PostMapping("/query-work-center-status") + public ResultBean queryWorkCenterStatus(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询产线状态").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultList(mesYfBoardService.queryWorkCenterStatus(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询产线生产完成率", notes = "查询产线生产完成率") + @PostMapping("/query-work-center-production-completion-rate") + public ResultBean queryWorkCenterProductionCompletionRate(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询产线生产完成率").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultObject(mesYfBoardService.queryWorkCenterProductionCompletionRate(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询产线工单完成情况", notes = "查询产线工单完成情况") + @PostMapping("/query-work-center-work-order-completion-status") + public ResultBean queryWorkCenterWorkOrderCompletionStatus(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询产线工单完成情况").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultList(mesYfBoardService.queryWorkCenterWorkOrderCompletionStatus(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询单位小时完工数", notes = "查询单位小时完工数") + @PostMapping("/query-unit-hour-completion-rate") + public ResultBean queryUnitHourCompletionRate(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询单位小时完工数").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultList(mesYfBoardService.queryUnitHourCompletionRate(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询产线一次下线合格率", notes = "查询产线一次下线合格率") + @PostMapping("/query-work-center-first-time-offline-qualification-rate") + public ResultBean queryWorkCenterFirstTimeOfflineQualificationRate(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询产线一次下线合格率").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultList(mesYfBoardService.queryWorkCenterFirstTimeOfflineQualificationRate(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询点检结果", notes = "查询点检结果") + @PostMapping("/query-inspection-results") + public ResultBean queryInspectionResults(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询点检结果").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultList(mesYfBoardService.queryInspectionResults(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "查询异常停线时间", notes = "查询异常停线时间") + @PostMapping("/query-abnormal-downtime") + public ResultBean queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel){ + try { + ValidatorBean.beginValid(conditionModel) + .notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList()) + .notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification()); + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + return ResultBean.success("查询异常停线时间").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()). + setResultObject(mesYfBoardService.queryAbnormalDowntime(conditionModel)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java new file mode 100644 index 0000000..6be95a3 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/board/IMesYfBoardServiceImpl.java @@ -0,0 +1,58 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.board; + +import cn.estsh.i3plus.ext.mes.api.busi.board.IMesYfBoardService; +import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardConditionModel; +import cn.estsh.i3plus.ext.mes.pojo.model.board.MesWorkCenterBoardResultModel; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : 看板-业务方法实现 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/19 11:08 + * @Modify: + **/ +@Service +public class IMesYfBoardServiceImpl implements IMesYfBoardService { + + /** + * 产线看板 + */ + @Override + public List queryWorkCenterStatus(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public MesWorkCenterBoardResultModel queryWorkCenterProductionCompletionRate(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public List queryWorkCenterWorkOrderCompletionStatus(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public List queryUnitHourCompletionRate(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public List queryWorkCenterFirstTimeOfflineQualificationRate(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public List queryInspectionResults(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + + @Override + public MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel) { + return null; + } + +} diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardConditionModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardConditionModel.java new file mode 100644 index 0000000..a3560a2 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardConditionModel.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.ext.mes.pojo.model.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.List; + +/** + * @Description : 产线看板-查询条件封装 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/19 11:13 + * @Modify: + **/ +@Data +@ApiModel("产线看板-查询条件封装") +public class MesWorkCenterBoardConditionModel { + + @ApiParam(value = "组织代码") + private String organizeCode; + + @ApiParam(value = "产线代码集合") + private List workCenterCodeList; + + @ApiParam(value = "时间范围标识") + private Integer timeRangeIdentification; + +} diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java new file mode 100644 index 0000000..f447a57 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/board/MesWorkCenterBoardResultModel.java @@ -0,0 +1,96 @@ +package cn.estsh.i3plus.ext.mes.pojo.model.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * @Description : 产线看板-查询结果封装 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/19 15:26 + * @Modify: + **/ +@Data +@ApiModel("产线看板-查询结果封装") +public class MesWorkCenterBoardResultModel { + + /** + * 查询产线状态 + */ + @ApiParam(value = "产线代码") + private String workCenterCode; + + @ApiParam(value = "产线状态") + private Integer workCenterCodeStatus; + + /** + * 查询产线生产完成率 + */ + @ApiParam(value = "产线完成数") + private Integer workCenterCompletedQuantity; + + @ApiParam(value = "产线计划数") + private Integer workCenterPlannedQuantity; + + @ApiParam(value = "产线完成率") + private Double workCenterCompletionRate; + + /** + * 查询产线工单完成情况 + */ + @ApiParam(value = "工单号") + private String workOrderNo; + + @ApiParam(value = "零件号") + private String partNo; + + @ApiParam(value = "零件描述") + private String partDescription; + + @ApiParam(value = "工单完成数") + private Integer workOrderCompletedQuantity; + + @ApiParam(value = "工单计划数") + private Integer workOrderPlannedQuantity; + + @ApiParam(value = "工单一次合格率") + private Double workOrderFirstPassRate; + + /** + * 查询单位小时完工数 + */ + @ApiParam(value = "单位小时完工数目标值") + private Double unitHourCompletionRateTargetValue; + + @ApiParam(value = "单位小时完工数") + private Integer unitHourCompletionRate; + + @ApiParam(value = "单位小时完工数-时间段") + private String unitHourCompletionRateTimePeriod; + + /** + * 查询产线一次下线合格率 + */ + @ApiParam(value = "产线一次下线合格率") + private Double workCenterFirstTimeOfflineQualificationRate; + + @ApiParam(value = "产线一次下线合格率-时间段") + private String workCenterFirstTimeOfflineQualificationRateTimePeriod; + + /** + * 查询点检结果 + */ + @ApiParam(value = "点检项") + private String inspectionItems; + + @ApiParam(value = "点检结果") + private Integer inspectionResults; + + /** + * 查询异常停线时间 + */ + @ApiParam(value = "异常停机时间") + private Double abnormalDowntime; + +}