From a9993e56b409d745dac0761815a93216775b59fe Mon Sep 17 00:00:00 2001 From: "logic.fang" <[logic.fang@estsh.com]> Date: Sat, 15 Jun 2024 18:59:58 +0800 Subject: [PATCH] =?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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/busi/report/IMesYfReportService.java | 25 +++++ .../report/MesDeviceDataQueryReportController.java | 70 +++++++++++++ .../mes/apiservice/dao/report/IMesYfReportDao.java | 25 +++++ .../daoimpl/report/MesYfReportDaoImpl.java | 109 +++++++++++++++++++++ .../serviceimpl/report/MesYfReportServiceImpl.java | 30 ++++++ .../MesDeviceDataQueryReportConditionModel.java | 48 +++++++++ .../MesDeviceDataQueryReportResultModel.java | 71 ++++++++++++++ 7 files changed, 378 insertions(+) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesDeviceDataQueryReportController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java create mode 100644 modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.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 new file mode 100644 index 0000000..1cf7195 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java @@ -0,0 +1,25 @@ +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.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; + +/** + * @Description : 报表-业务方法 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/15 11:30 + * @Modify: + **/ +public interface IMesYfReportService { + + /** + * 设备数据查询报表-查询 + * @param queryReportModel 查询条件封装 + * @param pager 分页信息 + * @return 分页查询结果 + */ + ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager); + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesDeviceDataQueryReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesDeviceDataQueryReportController.java new file mode 100644 index 0000000..3feadd5 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesDeviceDataQueryReportController.java @@ -0,0 +1,70 @@ +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.MesDeviceDataQueryReportConditionModel; +import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +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 io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +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/15 11:23 + * @Modify: + **/ +@Api("设备数据查询报表") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/device-data-query-report") +public class MesDeviceDataQueryReportController extends MesBaseController { + + @Autowired + private IMesYfReportService mesYfReportService; + + @ApiOperation(value = "查询设备数据", notes = "查询设备数据") + @GetMapping("/query") + public ResultBean queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel conditionModel, Pager pager){ + try { + //查询条件核验 + if (StringUtils.isEmpty(conditionModel.getCreateDateTimeStart()) || StringUtils.isEmpty(conditionModel.getCreateDateTimeEnd())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("【查询时间区间】条件必填!") + .build(); + } + if (StringUtils.isEmpty(conditionModel.getWorkCellCode()) && StringUtils.isEmpty(conditionModel.getEquipmentCode())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("请至少指定【工位】与【设备编号】其中一个查询条件!") + .build(); + } + String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + conditionModel.setOrganizeCode(organizeCode); + ListPager queryResultListPager = mesYfReportService.queryMesDeviceDataByPager(conditionModel, pager); + return ResultBean.success("查询设备数据成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } 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/dao/report/IMesYfReportDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java new file mode 100644 index 0000000..cc405ab --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java @@ -0,0 +1,25 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao.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.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; + +/** + * @Description : 报表-数据方法 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/15 13:30 + * @Modify: + **/ +public interface IMesYfReportDao { + + /** + * 设备数据查询报表-查询 + * @param queryReportModel 查询条件封装 + * @param pager 分页信息 + * @return 分页查询结果 + */ + ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager); + +} 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 new file mode 100644 index 0000000..02231ee --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java @@ -0,0 +1,109 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report; + +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.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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +/** + * @Description : 报表-数据方法实现 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/15 13:30 + * @Modify: + **/ +@Service +public class MesYfReportDaoImpl implements IMesYfReportDao { + + @Autowired + private EntityManager entityManager; + + @Override + public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { + StringBuilder dataQuerySql = new StringBuilder(); + StringBuilder countQuerySql = new StringBuilder(); + StringBuilder commonQuerySql = new StringBuilder(); + dataQuerySql.append("select new ") + .append(MesDeviceDataQueryReportResultModel.class.getName()) + .append("(organizeCode, workCenterCode, workCellCode, workOrderNo, serialNumber, ") + .append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser) "); + countQuerySql.append("select count(1) "); + commonQuerySql.append("from MesWorkCellScanMonitorLog " + + "where isValid = :isValid and isDeleted = :isDeleted and organizeCode = :organizeCode " + + "and createDatetime >= :createDateTimeStart and createDatetime <= :createDateTimeEnd "); + //非空查询条件拼接语句 + if (!StringUtils.isEmpty(queryReportModel.getWorkCenterCode())) { + commonQuerySql.append("and workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(queryReportModel.getWorkCellCode())) { + commonQuerySql.append("and workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(queryReportModel.getWorkOrderNo())) { + commonQuerySql.append("and workOrderNo = :workOrderNo "); + } + if (!StringUtils.isEmpty(queryReportModel.getSerialNumber())) { + commonQuerySql.append("and serialNumber = :serialNumber "); + } + if (!StringUtils.isEmpty(queryReportModel.getEquipmentCode())) { + commonQuerySql.append("and equipmentCode = :equipmentCode "); + } + if (!StringUtils.isEmpty(queryReportModel.getLogType())) { + commonQuerySql.append("and logType = :logType "); + } + Query dataQuery = entityManager.createQuery(dataQuerySql.append(commonQuerySql).toString(), MesDeviceDataQueryReportResultModel.class); + dataQuery.setParameter("isValid", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + dataQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + dataQuery.setParameter("organizeCode", queryReportModel.getOrganizeCode()); + dataQuery.setParameter("createDateTimeStart", queryReportModel.getCreateDateTimeStart()); + dataQuery.setParameter("createDateTimeEnd", queryReportModel.getCreateDateTimeEnd()); + Query countQuery = entityManager.createQuery(countQuerySql.append(commonQuerySql).toString()); + countQuery.setParameter("isValid", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + countQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + countQuery.setParameter("organizeCode", queryReportModel.getOrganizeCode()); + countQuery.setParameter("createDateTimeStart", queryReportModel.getCreateDateTimeStart()); + countQuery.setParameter("createDateTimeEnd", queryReportModel.getCreateDateTimeEnd()); + if (!StringUtils.isEmpty(queryReportModel.getWorkCenterCode())) { + dataQuery.setParameter("workCenterCode", queryReportModel.getWorkCenterCode()); + countQuery.setParameter("workCenterCode", queryReportModel.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(queryReportModel.getWorkCellCode())) { + dataQuery.setParameter("workCellCode", queryReportModel.getWorkCellCode()); + countQuery.setParameter("workCellCode", queryReportModel.getWorkCellCode()); + } + if (!StringUtils.isEmpty(queryReportModel.getWorkOrderNo())) { + dataQuery.setParameter("workOrderNo", queryReportModel.getWorkOrderNo()); + countQuery.setParameter("workOrderNo", queryReportModel.getWorkOrderNo()); + } + if (!StringUtils.isEmpty(queryReportModel.getSerialNumber())) { + dataQuery.setParameter("serialNumber", queryReportModel.getSerialNumber()); + countQuery.setParameter("serialNumber", queryReportModel.getSerialNumber()); + } + if (!StringUtils.isEmpty(queryReportModel.getEquipmentCode())) { + dataQuery.setParameter("equipmentCode", queryReportModel.getEquipmentCode()); + countQuery.setParameter("equipmentCode", queryReportModel.getEquipmentCode()); + } + if (!StringUtils.isEmpty(queryReportModel.getLogType())) { + dataQuery.setParameter("logType", queryReportModel.getLogType()); + countQuery.setParameter("logType", queryReportModel.getLogType()); + } + //本次查询满足条件的总数 + int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); + pager = PagerHelper.getPager(pager, count); + //查询本页数据 + dataQuery.setMaxResults(pager.getPageSize()); + dataQuery.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + List resultList = dataQuery.getResultList(); + return new ListPager<>(resultList, pager); + } + +} 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 new file mode 100644 index 0000000..3f77032 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -0,0 +1,30 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report; + +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.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 报表-业务方法实现 + * @Reference : + * @Author : logic + * @CreateDate : 2024/6/15 11:31 + * @Modify: + **/ +@Service +public class MesYfReportServiceImpl implements IMesYfReportService { + + @Autowired + private IMesYfReportDao mesYfReportDao; + + @Override + public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { + return mesYfReportDao.queryMesDeviceDataByPager(queryReportModel, pager); + } + +} 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 new file mode 100644 index 0000000..9c5fd18 --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportConditionModel.java @@ -0,0 +1,48 @@ +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/15 11:38 + * @Modify: + **/ +@Data +@ApiModel("设备数据查询报表-查询条件封装") +public class MesDeviceDataQueryReportConditionModel { + + @ApiParam(value = "组织代码") + private String organizeCode; + + /** + * 查询条件 + */ + @ApiParam(value = "工作中心(产线)") + private String workCenterCode; + + @ApiParam(value = "工作单元代码(工位)") + private String workCellCode; + + @ApiParam(value = "生产工单号(工单)") + private String workOrderNo; + + @ApiParam(value = "过程条码(主条码)") + private String serialNumber; + + @ApiParam(value = "设备代码(设备编号)") + private String equipmentCode; + + @ApiParam(value = "日志类型") + private Integer logType; + + @ApiParam(value = "创建日期查询用,查询起始日期") + private String createDateTimeStart; + + @ApiParam(value = "创建日期查询用,查询结束日期") + private String createDateTimeEnd; + +} 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 new file mode 100644 index 0000000..38f79fa --- /dev/null +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java @@ -0,0 +1,71 @@ +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/15 13:23 + * @Modify: + **/ +@Data +@ApiModel("设备数据查询报表-查询结果封装") +public class MesDeviceDataQueryReportResultModel { + + @ApiParam(value = "ERP工厂号(组织代码)") + private String organizeCode; + + @ApiParam(value = "工作中心(产线)") + private String workCenterCode; + + @ApiParam(value = "工作单元代码(工位)") + private String workCellCode; + + @ApiParam(value = "生产工单号(工单)") + private String workOrderNo; + + @ApiParam(value = "过程条码(主条码)") + private String serialNumber; + + @ApiParam(value = "日志类型") + private Integer logType; + + @ApiParam(value = "日志内容") + private String message; + + @ApiParam(value = "错误类型") + private String errorType; + + @ApiParam(value = "设备代码(设备编号)") + private String equipmentCode; + + @ApiParam(value = "设备名称") + private String equipmentName; + + @ApiParam(value = "创建时间") + private String createDatetime; + + @ApiParam(value = "创建人") + private String createUser; + + 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) { + this.organizeCode = organizeCode; + this.workCenterCode = workCenterCode; + this.workCellCode = workCellCode; + this.workOrderNo = workOrderNo; + this.serialNumber = serialNumber; + this.logType = logType; + this.message = message; + this.errorType = errorType; + this.equipmentCode = equipmentCode; + this.equipmentName = equipmentName; + this.createDatetime = createDatetime; + this.createUser = createUser; + } +}