From 915a2e40175c6390802af1257e57effea5fd02ef Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 06 五月 2025 17:35:32 +0800 Subject: [PATCH] art: 设备管理-看板接口-点检、周保统计接口 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java | 12 ++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java | 27 +++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml | 20 ++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java | 64 ++++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml | 20 ++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentInspectionStatistics.java | 28 +++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java | 27 +++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java | 11 ++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java | 11 ++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentMaintenanceStatistics.java | 29 +++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java | 12 ++ 11 files changed, 261 insertions(+), 0 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java index 109ffa9..864c55b 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java @@ -9,7 +9,11 @@ import org.jeecg.modules.eam.constant.EquipmentRepairStatus; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.service.IEamEquipmentService; +import org.jeecg.modules.eam.service.IEamInspectionOrderService; import org.jeecg.modules.eam.service.IEamReportRepairService; +import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; +import org.jeecg.modules.eam.vo.EquipmentInspectionStatistics; +import org.jeecg.modules.eam.vo.EquipmentMaintenanceStatistics; import org.jeecg.modules.eam.vo.EquipmentRepairStatistics; import org.jeecg.modules.eam.vo.EquipmentStatusStatistics; import org.springframework.beans.factory.annotation.Autowired; @@ -30,6 +34,10 @@ private IEamEquipmentService eamEquipmentService; @Autowired private IEamReportRepairService reportRepairService; + @Autowired + private IEamInspectionOrderService inspectionOrderService; + @Autowired + private IEamWeekMaintenanceOrderService weekMaintenanceOrderService; @ApiOperation(value = "鐪嬫澘鎺ュ彛-缁翠繚鐘舵�佺粺璁�", notes = "鐪嬫澘鎺ュ彛-缁翠繚鐘舵�佺粺璁�") @GetMapping(value = "/equipmentStatusStatistics") @@ -87,4 +95,60 @@ resultList.sort(Comparator.comparing(EquipmentRepairStatistics::getMonthStr)); return Result.ok(resultList); } + + @ApiOperation(value = "鐪嬫澘鎺ュ彛-鐐规缁熻", notes = "鐪嬫澘鎺ュ彛-鐐规缁熻") + @GetMapping(value = "/equipmentInspectionStatistics") + public Result<?> equipmentInspectionStatistics(@RequestParam(required = false, value = "productionId") String productionId) { + //缁熻缁撴潫鏃ユ湡 + LocalDate today = LocalDate.now(); + LocalDate localDate = today.minusMonths(5); + //缁熻寮�濮嬫棩鏈� + LocalDate firstOfMonth = DateUtils.getFirstOfMonth(localDate); + + //鍒濆鍖栬繑鍥炲�� + Map<String, EquipmentInspectionStatistics> statisticsMap = new HashMap<>(); + List<String> monthsBetween = DateUtils.getMonthsBetween(firstOfMonth, today); + monthsBetween.forEach(month -> { + statisticsMap.put(month, new EquipmentInspectionStatistics(month)); + }); + + List<EquipmentInspectionStatistics> list = inspectionOrderService.equipmentInspectionStatistics(productionId, firstOfMonth, today); + for (EquipmentInspectionStatistics statistics : list) { + if (statisticsMap.containsKey(statistics.getMonthStr())) { + statisticsMap.put(statistics.getMonthStr(), statistics); + } + } + List<EquipmentInspectionStatistics> resultList = new ArrayList<>(statisticsMap.values()); + //鎺掑簭 + resultList.sort(Comparator.comparing(EquipmentInspectionStatistics::getMonthStr)); + return Result.ok(resultList); + } + + @ApiOperation(value = "鐪嬫澘鎺ュ彛-鍛ㄤ繚缁熻", notes = "鐪嬫澘鎺ュ彛-鍛ㄤ繚缁熻") + @GetMapping(value = "/equipmentMaintenanceStatistics") + public Result<?> equipmentMaintenanceStatistics(@RequestParam(required = false, value = "productionId") String productionId) { + //缁熻缁撴潫鏃ユ湡 + LocalDate today = LocalDate.now(); + LocalDate localDate = today.minusMonths(5); + //缁熻寮�濮嬫棩鏈� + LocalDate firstOfMonth = DateUtils.getFirstOfMonth(localDate); + + //鍒濆鍖栬繑鍥炲�� + Map<String, EquipmentMaintenanceStatistics> statisticsMap = new HashMap<>(); + List<String> monthsBetween = DateUtils.getMonthsBetween(firstOfMonth, today); + monthsBetween.forEach(month -> { + statisticsMap.put(month, new EquipmentMaintenanceStatistics(month)); + }); + + List<EquipmentMaintenanceStatistics> list = weekMaintenanceOrderService.equipmentMaintenanceStatistics(productionId, firstOfMonth, today); + for (EquipmentMaintenanceStatistics statistics : list) { + if (statisticsMap.containsKey(statistics.getMonthStr())) { + statisticsMap.put(statistics.getMonthStr(), statistics); + } + } + List<EquipmentMaintenanceStatistics> resultList = new ArrayList<>(statisticsMap.values()); + //鎺掑簭 + resultList.sort(Comparator.comparing(EquipmentMaintenanceStatistics::getMonthStr)); + return Result.ok(resultList); + } } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java index 0851910..3c346e0 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java @@ -8,6 +8,9 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamInspectionOrder; import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; +import org.jeecg.modules.eam.vo.EquipmentInspectionStatistics; + +import java.util.List; /** * @Description: 鐐规宸ュ崟 @@ -24,4 +27,13 @@ * @return */ IPage<EamInspectionOrder> queryPageList(Page<EamInspectionOrder> page, @Param(Constants.WRAPPER) QueryWrapper<EamInspectionOrder> queryWrapper); + + /** + * 鐐规缁熻 + * @param productionIds + * @param start + * @param end + * @return + */ + List<EquipmentInspectionStatistics> equipmentInspectionStatistics(@Param("productionIds") List<String> productionIds, @Param("start") String start, @Param("end") String end); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java index f6f73de..3580713 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java @@ -7,6 +7,9 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; +import org.jeecg.modules.eam.vo.EquipmentMaintenanceStatistics; + +import java.util.List; /** * @Description: 鍛ㄤ繚宸ュ崟 @@ -22,4 +25,13 @@ * @return */ IPage<EamWeekMaintenanceOrder> queryPageList(IPage<EamWeekMaintenanceOrder> page, @Param(Constants.WRAPPER) Wrapper<EamWeekMaintenanceOrder> queryWrapper); + + /** + * 淇濆吇缁熻 + * @param productionIds + * @param start + * @param end + * @return + */ + List<EquipmentMaintenanceStatistics> equipmentMaintenanceStatistics(@Param("productionIds") List<String> productionIds, @Param("start") String start, @Param("end") String end); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml index b596292..225c243 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml @@ -9,4 +9,24 @@ on wmo.equipment_id = e.id ${ew.customSqlSegment} </select> + + <select id="equipmentInspectionStatistics" + resultType="org.jeecg.modules.eam.vo.EquipmentInspectionStatistics"> + select FORMAT(err.inspection_date, 'yyyy-MM') as monthStr, + COUNT(1) as planNumber, + SUM(CASE WHEN err.inspection_status = 'COMPLETE' THEN 1 ELSE 0 END) as completeNumber + from eam_inspection_order err + inner join eam_equipment e + on err.equipment_id = e.id + where err.inspection_status != 'ABOLISH' and err.del_flag = 0 and e.del_flag = 0 + <if test="productionIds != null"> + AND e.org_id IN + <foreach collection="productionIds" item="productionId" index="index" open="(" close=")" separator=","> + #{productionId} + </foreach> + </if> + and err.inspection_date >= #{start} + and err.inspection_date < #{end} + group by FORMAT(err.inspection_date, 'yyyy-MM') + </select> </mapper> diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml index f07c0c8..41f74de 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml @@ -9,4 +9,24 @@ on wmo.equipment_id = e.id ${ew.customSqlSegment} </select> + + <select id="equipmentMaintenanceStatistics" + resultType="org.jeecg.modules.eam.vo.EquipmentMaintenanceStatistics"> + select FORMAT(err.maintenance_date, 'yyyy-MM') as monthStr, + COUNT(1) as planNumber, + SUM(CASE WHEN err.maintenance_status = 'COMPLETE' THEN 1 ELSE 0 END) as completeNumber + from eam_week_maintenance_order err + inner join eam_equipment e + on err.equipment_id = e.id + where err.maintenance_status != 'ABOLISH' and err.del_flag = 0 and e.del_flag = 0 + <if test="productionIds != null"> + AND e.org_id IN + <foreach collection="productionIds" item="productionId" index="index" open="(" close=")" separator=","> + #{productionId} + </foreach> + </if> + and err.maintenance_date >= #{start} + and err.maintenance_date < #{end} + group by FORMAT(err.maintenance_date, 'yyyy-MM') + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java index 7999fa1..6146862 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java @@ -7,7 +7,9 @@ import org.jeecg.modules.eam.entity.EamInspectionOrder; import org.jeecg.modules.eam.request.EamInspectionOrderQuery; import org.jeecg.modules.eam.request.EamInspectionOrderRequest; +import org.jeecg.modules.eam.vo.EquipmentInspectionStatistics; +import java.time.LocalDate; import java.util.List; /** @@ -82,4 +84,13 @@ * @return */ List<EamInspectionOrder> selectUnCompleteOrder(String expiredDate); + + /** + * 鐐规缁熻 + * @param productionId + * @param firstOfMonth + * @param today + * @return + */ + List<EquipmentInspectionStatistics> equipmentInspectionStatistics(String productionId, LocalDate firstOfMonth, LocalDate today); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java index 2a69318..0ea10d1 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java @@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.request.EamWeekMaintenanceQuery; import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest; +import org.jeecg.modules.eam.vo.EquipmentMaintenanceStatistics; +import java.time.LocalDate; import java.util.List; /** @@ -59,4 +61,13 @@ * @return */ List<EamWeekMaintenanceOrder> selectUnCompleteOrder(String expiredDate); + + /** + * 淇濆吇缁熻 + * @param productionId + * @param firstOfMonth + * @param today + * @return + */ + List<EquipmentMaintenanceStatistics> equipmentMaintenanceStatistics(String productionId, LocalDate firstOfMonth, LocalDate today); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java index e79f405..b621571 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java @@ -33,6 +33,8 @@ import org.jeecg.modules.eam.request.EamInspectionOrderQuery; import org.jeecg.modules.eam.request.EamInspectionOrderRequest; import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.eam.vo.EquipmentInspectionStatistics; +import org.jeecg.modules.eam.vo.EquipmentRepairStatistics; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; @@ -40,6 +42,7 @@ import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.IMdcUserProductionService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -83,6 +87,8 @@ private IEamReportRepairService eamReportRepairService; @Autowired private IEamEquipmentExtendService eamEquipmentExtendService; + @Autowired + private IMdcProductionService mdcProductionService; @Override public IPage<EamInspectionOrder> queryPageList(Page<EamInspectionOrder> page, EamInspectionOrderQuery query) { @@ -148,6 +154,27 @@ } @Override + public List<EquipmentInspectionStatistics> equipmentInspectionStatistics(String productionId, LocalDate firstOfMonth, LocalDate today) { + if (StringUtils.isNotBlank(productionId)) { + //杞﹂棿缂栫爜涓嶄负绌� + List<String> productIds = mdcProductionService.recursionChildren(productionId); + if (CollectionUtil.isEmpty(productIds)) { + return Collections.emptyList(); + } + List<EquipmentInspectionStatistics> list = this.baseMapper.equipmentInspectionStatistics(productIds, firstOfMonth.toString(), today.plusDays(1).toString()); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } + List<EquipmentInspectionStatistics> list = this.baseMapper.equipmentInspectionStatistics(null, firstOfMonth.toString(), today.plusDays(1).toString()); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } + + @Override @Transactional(rollbackFor = Exception.class) public boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) { EamInspectionOrder eamInspectionOrder = new EamInspectionOrder(); diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java index 661eba9..dc69929 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java @@ -30,12 +30,15 @@ import org.jeecg.modules.eam.request.EamWeekMaintenanceQuery; import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest; import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.eam.vo.EquipmentInspectionStatistics; +import org.jeecg.modules.eam.vo.EquipmentMaintenanceStatistics; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.UserSelector; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -80,6 +84,8 @@ private IEamReportRepairService eamReportRepairService; @Autowired private IEamEquipmentExtendService eamEquipmentExtendService; + @Autowired + private IMdcProductionService mdcProductionService; @Override @Transactional(rollbackFor = Exception.class) @@ -499,6 +505,27 @@ return eamWeekMaintenanceOrderMapper.selectList(queryWrapper); } + @Override + public List<EquipmentMaintenanceStatistics> equipmentMaintenanceStatistics(String productionId, LocalDate firstOfMonth, LocalDate today) { + if (StringUtils.isNotBlank(productionId)) { + //杞﹂棿缂栫爜涓嶄负绌� + List<String> productIds = mdcProductionService.recursionChildren(productionId); + if (CollectionUtil.isEmpty(productIds)) { + return Collections.emptyList(); + } + List<EquipmentMaintenanceStatistics> list = this.baseMapper.equipmentMaintenanceStatistics(productIds, firstOfMonth.toString(), today.plusDays(1).toString()); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } + List<EquipmentMaintenanceStatistics> list = this.baseMapper.equipmentMaintenanceStatistics(null, firstOfMonth.toString(), today.plusDays(1).toString()); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); return todoUsers != null && todoUsers.contains(user.getUsername()); diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentInspectionStatistics.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentInspectionStatistics.java new file mode 100644 index 0000000..3a74079 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentInspectionStatistics.java @@ -0,0 +1,28 @@ +package org.jeecg.modules.eam.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class EquipmentInspectionStatistics implements Serializable { + /** + * 鏈堜唤 + */ + private String monthStr; + /** + * 璁″垝鏁� + */ + private Integer planNumber; + /** + * 瀹屾垚鏁� + */ + private Integer completeNumber; + public EquipmentInspectionStatistics(){} + + public EquipmentInspectionStatistics(String monthStr){ + this.monthStr = monthStr; + this.planNumber = 0; + this.completeNumber = 0; + } +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentMaintenanceStatistics.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentMaintenanceStatistics.java new file mode 100644 index 0000000..194ef5e --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/EquipmentMaintenanceStatistics.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.eam.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class EquipmentMaintenanceStatistics implements Serializable { + /** + * 鏈堜唤 + */ + private String monthStr; + /** + * 璁″垝鏁� + */ + private Integer planNumber; + /** + * 瀹屾垚鏁� + */ + private Integer completeNumber; + + public EquipmentMaintenanceStatistics(){} + + public EquipmentMaintenanceStatistics(String monthStr){ + this.monthStr = monthStr; + this.planNumber = 0; + this.completeNumber = 0; + } +} -- Gitblit v1.9.3