From b0f56573ea27a8798764314c72cf39e9eb0651dc Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 27 三月 2025 16:04:31 +0800 Subject: [PATCH] 综合利用率图表接口 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml | 14 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 12 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java | 6 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoMonthServiceImpl.java | 19 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoMonthServiceImpl.java | 19 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java | 147 ++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java | 43 ++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java | 24 + lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoMonthService.java | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/TeamEquEffVo.java | 27 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml | 14 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMonthMapper.xml | 5 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml | 56 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMonthMapper.java | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMonthMapper.xml | 5 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java | 7 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java | 107 ++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java | 1 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/MdcProductionController.java | 33 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/TeamEquipmentEfficiencyAnalyzeDto.java | 29 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoMonthService.java | 14 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/MdcProOptionsVo.java | 38 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java | 2 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 7 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 29 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 54 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java | 43 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMonthMapper.java | 14 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalInfoMonth.java | 106 ++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml | 20 + 41 files changed, 957 insertions(+), 12 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java index 83f6f51..b53209e 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java @@ -593,6 +593,11 @@ String DICT_EQUIPMENT_RATE_NORMAL = "equipment_rate_normal"; /** + * 閰嶉�佸皬缁勫瓧鍏哥紪鍙� + */ + String DICT_MDC_STAFF_TEAM = "mdc_staff_team"; + + /** * 鍔犵彮鏁版嵁 鑷姩璁$畻鏍囪瘑 1(鏄�) 2(鍚�) */ Integer AUTO_FLAG_Y = 1; @@ -608,4 +613,6 @@ String CLOSE_TYPE_0 = "0"; String CLOSE_TYPE_1 = "1"; + String ORG_TYPE = "3"; + } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java index c80f35d..543ad28 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java @@ -182,4 +182,8 @@ /**閫夋嫨绯荤粺绫诲瀷*/ private transient String systemValue; + + @Dict(dicCode = "mdc_staff_team") + @ApiModelProperty(value = "閰嶉�佸皬缁�") + private String teamCode; } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index 8e65dd4..6bde87b 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java @@ -129,4 +129,6 @@ * @return */ MdcEquipmentDetailedDto findById(@Param("id") String id); + + List<MdcEquipment> findByProductionIds(@Param("mdcProductionIds") List<String> mdcProductionIds); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 3029e7d..2fbec81 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -296,4 +296,16 @@ ORDER BY me.equipment_id </select> + <select id="findByProductionIds" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> + SELECT + t1.* + FROM + mdc_equipment t1 + LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id + WHERE t2.production_id IN + <foreach collection="mdcProductionIds" item = "productionId" index = "index" open = "(" close= ")" separator = ","> + #{productionId} + </foreach> + </select> + </mapper> diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index a8e4cde..51ddf0d 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java @@ -216,4 +216,11 @@ * @param productionId */ void addNewEquipmentFromEam(MdcEquipment mdcEquipment, String productionId); + + /** + * 鏍规嵁浜х嚎id闆嗗悎鏌ヨ璁惧鍒楄〃 + * @param mdcProductionIds + * @return + */ + List<MdcEquipment> findByProductionIds(List<String> mdcProductionIds); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 90a8f84..f59bcfa 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -1010,4 +1010,14 @@ this.saveMdcEquipment(mdcEquipment, null, productionId); } + /** + * 鏍规嵁浜х嚎id闆嗗悎鏌ヨ璁惧鍒楄〃 + * @param mdcProductionIds + * @return + */ + @Override + public List<MdcEquipment> findByProductionIds(List<String> mdcProductionIds) { + return this.baseMapper.findByProductionIds(mdcProductionIds); + } + } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java index 2086fe5..1a41d3e 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java @@ -164,6 +164,7 @@ public static final String STR_DATE = "yyyy-MM-dd"; public static final String STRDATE = "yyyyMMdd"; public static final String STR_YEAR_MONTH = "yyyy-MM"; + public static final String STRYEARMONTH = "yyyyMM"; public static final String STR_DATE_TIME = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String STR_DATE_TIME_SMALL = "yyyy-MM-dd HH:mm:ss"; public static final String STR_DATE_TIME_MIN = "yyyy-MM-dd HH:mm"; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java index 96ef9b8..1e1fa15 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEfficiencyReportController.java @@ -13,9 +13,11 @@ import org.jeecg.modules.mdc.vo.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.Map; /** * @author: LiuS @@ -30,7 +32,6 @@ @Resource private MdcEfficiencyReportService mdcEfficiencyReportService; - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垪琛ㄦ煡璇�") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垪琛ㄦ煡璇�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垪琛ㄦ煡璇�") @GetMapping("/efficiencyList") public Result efficiencyList(MdcEfficiencyReportQueryVo vo) { @@ -40,7 +41,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-寮�鍔ㄧ巼鍒楄〃鏌ヨ") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-寮�鍔ㄧ巼鍒楄〃鏌ヨ", notes = "璁惧鏁堢巼鎶ヨ〃-寮�鍔ㄧ巼鍒楄〃鏌ヨ") @GetMapping("/efficiencyPOList") public Result efficiencyPOList(MdcEfficiencyReportQueryVo vo) { @@ -50,7 +50,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-鐝鍒╃敤鐜囧垪琛ㄦ煡璇�") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鐝鍒╃敤鐜囧垪琛ㄦ煡璇�", notes = "璁惧鏁堢巼鎶ヨ〃-鐝鍒╃敤鐜囧垪琛ㄦ煡璇�") @GetMapping("/efficiencyShiftList") public Result efficiencyShiftList(MdcEfficiencyReportShiftQueryVo vo) { @@ -60,7 +59,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃", notes = "璁惧鏁堢巼鎶ヨ〃-缁熻鍒嗘瀽鍒楄〃") @GetMapping("/dayStatisticalRate") public Result dayStatisticalRate(MdcEfficiencyReportQueryVo vo) { @@ -70,7 +68,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-瀵规瘮鍒嗘瀽") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-瀵规瘮鍒嗘瀽", notes = "璁惧鏁堢巼鎶ヨ〃-瀵规瘮鍒嗘瀽") @GetMapping("/comparativeAnalysis") public Result comparativeAnalysis(ComparativeAnalysisQueryVo vo) { @@ -80,7 +77,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼", notes = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼") @GetMapping("/dayUtilizationRate") public Result dayUtilizationRate(DayUtilizationRateQueryVo vo) { @@ -90,7 +86,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼瀵规瘮") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼瀵规瘮", notes = "璁惧鏁堢巼鎶ヨ〃-璁惧鏃ュ埄鐢ㄧ巼瀵规瘮") @GetMapping("/dayUtilizationRateContrast") public Result dayUtilizationRateContrast(DayUtilizationRateContrastQueryVo vo) { @@ -100,7 +95,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囪蛋鍔垮垎鏋愬垪琛�") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囪蛋鍔垮垎鏋愬垪琛�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囪蛋鍔垮垎鏋愬垪琛�") @GetMapping("/utilizationRateTrendAnalyze") public Result utilizationRateTrendAnalyze(DayUtilizationRateContrastQueryVo vo) { @@ -110,7 +104,6 @@ return Result.OK(result); } - @AutoLog(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垎娈靛垎鏋愬垪琛�") @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垎娈靛垎鏋愬垪琛�", notes = "璁惧鏁堢巼鎶ヨ〃-鍒╃敤鐜囧垎娈靛垎鏋愬垪琛�") @GetMapping("/utilizationRateSectionAnalyze") public Result utilizationRateSectionAnalyze(DayUtilizationRateContrastQueryVo vo) { @@ -120,4 +113,36 @@ return Result.OK(result); } +// @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�", notes = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�") +// @GetMapping("/comprehensiveRayeAnalyze") +// public Result comprehensiveRayeAnalyze(DayUtilizationRateContrastQueryVo vo) { +// LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// String userId = user.getId(); +// MdcUtilizationRateDto result = mdcEfficiencyReportService.comprehensiveRayeAnalyze(userId, vo); +// return Result.OK(result); +// } + +// @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-鐝粍缁煎悎鍒╃敤鐜囩粺璁″垎鏋�", notes = "璁惧鏁堢巼鎶ヨ〃-缁煎悎鍒╃敤鐜囩粺璁″垎鏋�") +// @GetMapping("/teamComprehensiveRateAnalyze") +// public Result teamComprehensiveRateAnalyze(DayUtilizationRateContrastQueryVo vo) { +// LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// String userId = user.getId(); +// MdcUtilizationRateDto result = mdcEfficiencyReportService.teamComprehensiveRateAnalyze(userId, vo); +// return Result.OK(result);Equipment utilization distribution of each team +// } + +// @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-閰嶉�佸皬缁勭淮搴﹀悇鐝粍鏈堣澶囧埄鐢ㄥ垎甯�", notes = "璁惧鏁堢巼鎶ヨ〃-閰嶉�佸皬缁勭淮搴﹀悇鐝粍鏈堣澶囧埄鐢ㄥ垎甯�") +// @GetMapping("/teamEquipmentEfficiencyAnalyze") +// public Result teamEquipmentEfficiencyAnalyze(TeamEquEffVo teamEquEffVo) { +// Map<String, Object> result = mdcEfficiencyReportService.teamEquipmentEfficiencyAnalyze(teamEquEffVo); +// return Result.OK(result); +// } + + @ApiOperation(value = "璁惧鏁堢巼鎶ヨ〃-璁惧缁村害鍚勭彮缁勬湀璁惧鍒╃敤鍒嗗竷", notes = "璁惧鏁堢巼鎶ヨ〃-璁惧缁村害鍚勭彮缁勬湀璁惧鍒╃敤鍒嗗竷") + @GetMapping("/equipmentEfficiencyAnalyze") + public Result<?> equipmentEfficiencyAnalyze(TeamEquEffVo teamEquEffVo) { + Map<String, Object> result = mdcEfficiencyReportService.teamEquipmentEfficiencyAnalyze(teamEquEffVo); + return Result.OK(result); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java index 816cc92..69a1a9f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java @@ -13,7 +13,6 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.model.MdcEquipmentTree; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java new file mode 100644 index 0000000..189a667 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/MdcEquipmentStatisticalDto.java @@ -0,0 +1,43 @@ +package org.jeecg.modules.mdc.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-03-25 + * @Description: + */ +@Data +public class MdcEquipmentStatisticalDto { + + /** + * 寮�鏈烘椂闀� + */ + private BigDecimal openLong = new BigDecimal("0"); + /** + * 寰呮満鏃堕暱 + */ + private BigDecimal waitLong = new BigDecimal("0"); + /** + * 鍔犲伐鏃堕暱 + */ + private BigDecimal processLong = new BigDecimal("0"); + /** + * 鎶ヨ + */ + private BigDecimal errorLong = new BigDecimal("0"); + /** + * 鍏虫満鏃堕暱 + */ + private BigDecimal closeLong = new BigDecimal("0"); + /** + * 鎬绘椂闀� + */ + private BigDecimal totalLong = new BigDecimal("0"); + /** + * 澶╂暟 + */ + private BigDecimal dayNum; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/TeamEquipmentEfficiencyAnalyzeDto.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/TeamEquipmentEfficiencyAnalyzeDto.java new file mode 100644 index 0000000..9b1376d --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/dto/TeamEquipmentEfficiencyAnalyzeDto.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.mdc.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-03-26 + * @Description: + */ +@Data +public class TeamEquipmentEfficiencyAnalyzeDto { + + private String equipmentName; + + /** + * 鍒╃敤鐜� + */ + private BigDecimal utilizationRate = BigDecimal.ZERO; + /** + * 鐝鍒╃敤鐜� + */ + private BigDecimal shiftUtilizationRate = BigDecimal.ZERO; + /** + * 淇鍒╃敤鐜� + */ + private BigDecimal amendUtilizationRate = BigDecimal.ZERO; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalInfoMonth.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalInfoMonth.java new file mode 100644 index 0000000..c987011 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalInfoMonth.java @@ -0,0 +1,106 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 鏈堣澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +@Data +@TableName("mdc_equipment_statistical_info_month") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_equipment_statistical_info_month瀵硅薄", description = "鏈堣澶囪繍琛屾暟鎹〃") +public class MdcEquipmentStatisticalInfoMonth implements Serializable { + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /** + * 璁惧id + */ + @Excel(name = "璁惧id", width = 15) + @ApiModelProperty(value = "璁惧id") + private String equipmentId; + /** + * 鏈夋晥鏈堜唤 + */ + @Excel(name = "鏈夋晥鏈堜唤", width = 15) + @ApiModelProperty(value = "鏈夋晥鏈堜唤") + private String theMonth; + /** + * 寮�鏈烘椂闀� + */ + @Excel(name = "寮�鏈烘椂闀�", width = 15) + @ApiModelProperty(value = "寮�鏈烘椂闀�") + private Integer openLong; + /** + * 鍏虫満鏃堕暱 + */ + @Excel(name = "鍏虫満鏃堕暱", width = 15) + @ApiModelProperty(value = "鍏虫満鏃堕暱") + private Integer closeLong; + /** + * 寰呮満鏃堕暱 + */ + @Excel(name = "寰呮満鏃堕暱", width = 15) + @ApiModelProperty(value = "寰呮満鏃堕暱") + private Integer waitLong; + /** + * 鍔犲伐鏃堕暱 + */ + @Excel(name = "鍔犲伐鏃堕暱", width = 15) + @ApiModelProperty(value = "鍔犲伐鏃堕暱") + private Integer processLong; + /** + * 鎶ヨ鏃堕暱 + */ + @Excel(name = "鎶ヨ鏃堕暱", width = 15) + @ApiModelProperty(value = "鎶ヨ鏃堕暱") + private Integer errorLong; + /** + * 鍒╃敤鐜� + */ + @Excel(name = "鍒╃敤鐜�", width = 15) + @ApiModelProperty(value = "鍒╃敤鐜�") + private BigDecimal utilizationRate; + /** + * 寮�鍔ㄧ巼 + */ + @Excel(name = "寮�鍔ㄧ巼", width = 15) + @ApiModelProperty(value = "寮�鍔ㄧ巼") + private BigDecimal startRate; + /** + * 寮�鏈虹巼 + */ + @Excel(name = "寮�鏈虹巼", width = 15) + @ApiModelProperty(value = "寮�鏈虹巼") + private BigDecimal openRate; + /** + * 鍒涘缓鏃堕棿 + */ + @Excel(name = "鍒涘缓鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java new file mode 100644 index 0000000..8d63563 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentStatisticalShiftInfoMonth.java @@ -0,0 +1,107 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 鏈堢彮娆¤澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +@Data +@TableName("mdc_equipment_statistical_shift_info_month") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_equipment_statistical_shift_info_month瀵硅薄", description = "鏈堢彮娆¤澶囪繍琛屾暟鎹〃") +public class MdcEquipmentStatisticalShiftInfoMonth implements Serializable { + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /** + * 璁惧id + */ + @Excel(name = "璁惧id", width = 15) + @ApiModelProperty(value = "璁惧id") + private String equipmentId; + /** + * 鏈夋晥鏈堜唤 + */ + @Excel(name = "鏈夋晥鏈堜唤", width = 15) + @ApiModelProperty(value = "鏈夋晥鏈堜唤") + private String theMonth; + /** + * 鍏虫満鏃堕暱 + */ + @Excel(name = "鍏虫満鏃堕暱", width = 15) + @ApiModelProperty(value = "鍏虫満鏃堕暱") + private Integer closeLong; + /** + * 寮�鏈烘椂闀� + */ + @Excel(name = "寮�鏈烘椂闀�", width = 15) + @ApiModelProperty(value = "寮�鏈烘椂闀�") + private Integer openLong; + /** + * 鎶ヨ鏃堕暱 + */ + @Excel(name = "鎶ヨ鏃堕暱", width = 15) + @ApiModelProperty(value = "鎶ヨ鏃堕暱") + private Integer errorLong; + /** + * 寰呮満鏃堕暱 + */ + @Excel(name = "寰呮満鏃堕暱", width = 15) + @ApiModelProperty(value = "寰呮満鏃堕暱") + private Integer waitLong; + /** + * 鍔犲伐鏃堕暱 + */ + @Excel(name = "鍔犲伐鏃堕暱", width = 15) + @ApiModelProperty(value = "鍔犲伐鏃堕暱") + private Integer processLong; + /** + * 鏈夋晥鏃堕暱 + */ + @Excel(name = "鏈夋晥鏃堕暱", width = 15) + @ApiModelProperty(value = "鏈夋晥鏃堕暱") + private Integer totalLong; + /** + * 鍒╃敤鐜� + */ + @Excel(name = "鍒╃敤鐜�", width = 15) + @ApiModelProperty(value = "鍒╃敤鐜�") + private BigDecimal utilizationRate; + /** + * 寮�鍔ㄧ巼 + */ + @Excel(name = "寮�鍔ㄧ巼", width = 15) + @ApiModelProperty(value = "寮�鍔ㄧ巼") + private BigDecimal startRate; + /** + * 寮�鏈虹巼 + */ + @Excel(name = "寮�鏈虹巼", width = 15) + @ApiModelProperty(value = "寮�鏈虹巼") + private BigDecimal openRate; + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java new file mode 100644 index 0000000..2749b4a --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/CollectEquipmentDataMonthJob.java @@ -0,0 +1,147 @@ +package org.jeecg.modules.mdc.job; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth; +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfoMonth; +import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysAnnouncementService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Author: Lius + * @CreateTime: 2025-03-24 + * @Description: 缁熻鏈堟眹鎬绘暟鎹� + */ +@Slf4j +public class CollectEquipmentDataMonthJob implements Job { + + /** + * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼 鏃堕棿锛� yyyyMMdd 渚嬶細 20230414 + */ + private String parameter; + + public void setParameter(String parameter) { + this.parameter = parameter; + } + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysAnnouncementService sysAnnouncementService; + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private IMdcEquipmentStatisticalInfoMonthService mdcEquipmentStatisticalInfoMonthService; + + @Resource + private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; + + @Resource + private IMdcEquipmentStatisticalShiftInfoMonthService mdcEquipmentStatisticalShiftInfoMonthService; + + @Resource + private IMdcEquipmentStatisticalShiftInfoService mdcEquipmentStatisticalShiftInfoService; + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + quartzLog.setParams(this.parameter); + log.info(String.format("缁熻鏈堟眹鎬绘暟鎹� param: %s CollectEquipmentDataMonthJob start! 鏃堕棿:" + DateUtils.getNow(), this.parameter)); + long startTime = System.currentTimeMillis(); + try { + String date = ""; + if (StringUtils.isNotBlank(this.parameter)) { + date = DateUtils.format(DateUtils.toDate(this.parameter, DateUtils.STRYEARMONTH), DateUtils.STRYEARMONTH); + } else { + date = DateUtils.format(DateUtils.getNow(), DateUtils.STRYEARMONTH); + } + mdcEquipmentStatisticalInfoMonthService.remove(new LambdaQueryWrapper<MdcEquipmentStatisticalInfoMonth>().eq(MdcEquipmentStatisticalInfoMonth::getTheMonth, date)); + mdcEquipmentStatisticalShiftInfoMonthService.remove(new LambdaQueryWrapper<MdcEquipmentStatisticalShiftInfoMonth>().eq(MdcEquipmentStatisticalShiftInfoMonth::getTheMonth, date)); + + // step.1 鑾峰彇璁惧鍒楄〃 + List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(); + List<MdcEquipmentStatisticalInfoMonth> mdcEquipmentStatisticalInfoMonthList = new ArrayList<>(); + List<MdcEquipmentStatisticalShiftInfoMonth> mdcEquipmentStatisticalShiftInfoMonthList = new ArrayList<>(); + if (mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) { + for (MdcEquipment mdcEquipment : mdcEquipmentList) { + // step.2 姹囨��24灏忔椂鍒╃敤鐜囨暟鎹� + MdcEquipmentStatisticalDto mdcEquipmentStatisticalDto = mdcEquipmentStatisticalInfoService.findByEquipmentAndMonth(mdcEquipment.getEquipmentId(), date); + MdcEquipmentStatisticalInfoMonth mdcEquipmentStatisticalInfoMonth = new MdcEquipmentStatisticalInfoMonth(); + mdcEquipmentStatisticalInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcEquipmentStatisticalInfoMonth.setTheMonth(date); + mdcEquipmentStatisticalInfoMonth.setCloseLong(mdcEquipmentStatisticalDto.getCloseLong().intValue()); + mdcEquipmentStatisticalInfoMonth.setErrorLong(mdcEquipmentStatisticalDto.getErrorLong().intValue()); + mdcEquipmentStatisticalInfoMonth.setOpenLong(mdcEquipmentStatisticalDto.getOpenLong().intValue()); + mdcEquipmentStatisticalInfoMonth.setProcessLong(mdcEquipmentStatisticalDto.getProcessLong().intValue()); + mdcEquipmentStatisticalInfoMonth.setWaitLong(mdcEquipmentStatisticalDto.getWaitLong().intValue()); + mdcEquipmentStatisticalInfoMonth.setOpenRate(mdcEquipmentStatisticalDto.getOpenLong().divide((new BigDecimal("86400").multiply(mdcEquipmentStatisticalDto.getDayNum())), 4, RoundingMode.HALF_UP)); + mdcEquipmentStatisticalInfoMonth.setStartRate(mdcEquipmentStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentStatisticalDto.getProcessLong().divide(mdcEquipmentStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); + mdcEquipmentStatisticalInfoMonth.setUtilizationRate(mdcEquipmentStatisticalDto.getProcessLong().divide((new BigDecimal("86400").multiply(mdcEquipmentStatisticalDto.getDayNum())), 4, RoundingMode.HALF_UP)); + mdcEquipmentStatisticalInfoMonthList.add(mdcEquipmentStatisticalInfoMonth); + // step.3 姹囨�荤彮娆″埄鐢ㄧ巼鏁版嵁 + MdcEquipmentStatisticalDto mdcEquipmentShiftStatisticalDto = mdcEquipmentStatisticalShiftInfoService.findByEquipmentAndMonth(mdcEquipment.getEquipmentId(), date); + MdcEquipmentStatisticalShiftInfoMonth mdcEquipmentShiftInfoMonth = new MdcEquipmentStatisticalShiftInfoMonth(); + mdcEquipmentShiftInfoMonth.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcEquipmentShiftInfoMonth.setTheMonth(date); + mdcEquipmentShiftInfoMonth.setCloseLong(mdcEquipmentShiftStatisticalDto.getCloseLong().intValue()); + mdcEquipmentShiftInfoMonth.setTotalLong(mdcEquipmentShiftStatisticalDto.getTotalLong().intValue()); + mdcEquipmentShiftInfoMonth.setOpenLong(mdcEquipmentShiftStatisticalDto.getOpenLong().intValue()); + mdcEquipmentShiftInfoMonth.setErrorLong(mdcEquipmentShiftStatisticalDto.getErrorLong().intValue()); + mdcEquipmentShiftInfoMonth.setWaitLong(mdcEquipmentShiftStatisticalDto.getWaitLong().intValue()); + mdcEquipmentShiftInfoMonth.setProcessLong(mdcEquipmentShiftStatisticalDto.getProcessLong().intValue()); + mdcEquipmentShiftInfoMonth.setUtilizationRate(mdcEquipmentShiftStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getProcessLong().divide(mdcEquipmentShiftStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); + mdcEquipmentShiftInfoMonth.setStartRate(mdcEquipmentShiftStatisticalDto.getOpenLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getProcessLong().divide(mdcEquipmentShiftStatisticalDto.getOpenLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); + mdcEquipmentShiftInfoMonth.setOpenRate(mdcEquipmentShiftStatisticalDto.getTotalLong().compareTo(BigDecimal.ZERO) > 0 ? mdcEquipmentShiftStatisticalDto.getOpenLong().divide(mdcEquipmentShiftStatisticalDto.getTotalLong(), 4, RoundingMode.HALF_UP) : BigDecimal.ZERO); + mdcEquipmentStatisticalShiftInfoMonthList.add(mdcEquipmentShiftInfoMonth); + } + } + if (!mdcEquipmentStatisticalInfoMonthList.isEmpty()) { + mdcEquipmentStatisticalInfoMonthService.saveBatch(mdcEquipmentStatisticalInfoMonthList); + } + if (!mdcEquipmentStatisticalShiftInfoMonthList.isEmpty()) { + mdcEquipmentStatisticalShiftInfoMonthService.saveBatch(mdcEquipmentStatisticalShiftInfoMonthList); + } + quartzLog.setIsSuccess(0); + } catch (Exception e) { + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + // 鍙戦�佹秷鎭�氱煡 + sysAnnouncementService.jobSendMessage("缁熻鏈堟眹鎬绘暟鎹�", quartzLog.getExceptionDetail()); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } + + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java index 8d71bfd..24a5cc0 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEfficiencyReportMapper.java @@ -7,6 +7,7 @@ import org.jeecg.modules.mdc.vo.ComparativeAnalysisQueryVo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportQueryVo; import org.jeecg.modules.mdc.vo.MdcEfficiencyReportShiftQueryVo; +import org.jeecg.modules.mdc.dto.TeamEquipmentEfficiencyAnalyzeDto; import java.math.BigDecimal; import java.util.List; @@ -50,4 +51,6 @@ List<MdcComAnaDto> comparativeAnalysis(@Param("vo") ComparativeAnalysisQueryVo vo); List<BigDecimal> getEfficiencyRate(@Param("equipmentId") String equipmentId, @Param("date") String date); + + List<TeamEquipmentEfficiencyAnalyzeDto> teamEquipmentEfficiencyAnalyze(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java index 3815783..03bb2bd 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; /** @@ -25,4 +26,6 @@ * @return */ Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMonthMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMonthMapper.java new file mode 100644 index 0000000..4b9d25d --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMonthMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mdc.mapper; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 鏈堣澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +public interface MdcEquipmentStatisticalInfoMonthMapper extends BaseMapper<MdcEquipmentStatisticalInfoMonth> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java index 2bdddbe..f4443d6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import java.math.BigDecimal; @@ -21,4 +22,6 @@ MdcEquipmentStatisticalShiftInfo getMaxStaticsData(@Param("equipmentId") String equipmentid); BigDecimal findSpindleRunDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMonthMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMonthMapper.java new file mode 100644 index 0000000..cdf207e --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalShiftInfoMonthMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mdc.mapper; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfoMonth; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 鏈堢彮娆¤澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +public interface MdcEquipmentStatisticalShiftInfoMonthMapper extends BaseMapper<MdcEquipmentStatisticalShiftInfoMonth> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml index 73d3381..4458f0d 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml @@ -186,4 +186,24 @@ equipment_id = #{ equipmentId } AND the_date >= #{ date } ORDER BY the_date ASC </select> + + <select id="teamEquipmentEfficiencyAnalyze" resultType="org.jeecg.modules.mdc.dto.TeamEquipmentEfficiencyAnalyzeDto"> + SELECT + t3.equipment_name, + t1.utilization_rate AS utilizationRate, + t2.utilization_rate AS shiftUtilizationRate + FROM + mdc_equipment_statistical_info_month t1 + LEFT JOIN mdc_equipment_statistical_shift_info_month t2 ON t1.the_month = t2.the_month + AND t1.equipment_id = t2.equipment_id + LEFT JOIN mdc_equipment t3 ON t3.equipment_id = t1.equipment_id + WHERE + t1.equipment_id IN + <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + AND t1.the_month = #{month} + ORDER BY + t1.utilization_rate DESC + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml index e5d1c6b..2d4f020 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml @@ -12,4 +12,18 @@ <select id="selectProcessLong" resultType="java.lang.Integer"> SELECT TOP 1 process_long FROM mdc_equipment_statistical_info WHERE equipment_id = #{equipmentId} AND the_date = #{validDate} </select> + + <select id="findByEquipmentAndMonth" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto"> + SELECT + SUM(open_long) openLong, + SUM(close_long) closeLong, + SUM(wait_long) waitLong, + SUM(process_long) processLong, + SUM(error_long) errorLong, + COUNT(*) dayNum + FROM + mdc_equipment_statistical_info + WHERE + equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%') + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMonthMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMonthMapper.xml new file mode 100644 index 0000000..87294ee --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMonthMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalInfoMonthMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml index 97acaba..b12976f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMapper.xml @@ -17,4 +17,18 @@ equipment_id = #{ equipmentId } AND the_date LIKE CONCAT(#{ validDate },'%') </select> + + <select id="findByEquipmentAndMonth" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto"> + SELECT + SUM(open_long) openLong, + SUM(close_long) closeLong, + SUM(wait_long) waitLong, + SUM(process_long) processLong, + SUM(error_long) errorLong, + SUM ( total_long ) totalLong + FROM + mdc_equipment_statistical_shift_info + WHERE + equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%') + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMonthMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMonthMapper.xml new file mode 100644 index 0000000..b5af990 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalShiftInfoMonthMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalShiftInfoMonthMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoMonthService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoMonthService.java new file mode 100644 index 0000000..8ea0b99 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoMonthService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mdc.service; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 鏈堣澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +public interface IMdcEquipmentStatisticalInfoMonthService extends IService<MdcEquipmentStatisticalInfoMonth> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java index 51d56e6..4b27b44 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java @@ -1,5 +1,6 @@ package org.jeecg.modules.mdc.service; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -26,4 +27,6 @@ * @return */ Integer selectProcessLong(String equipmentId, String validDate); + + MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoMonthService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoMonthService.java new file mode 100644 index 0000000..227bcf8 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoMonthService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mdc.service; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfoMonth; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 鏈堢彮娆¤澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +public interface IMdcEquipmentStatisticalShiftInfoMonthService extends IService<MdcEquipmentStatisticalShiftInfoMonth> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java index cc1b424..ff6bde6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalShiftInfoService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo; import java.math.BigDecimal; @@ -28,4 +29,5 @@ */ BigDecimal findSpindleRunDuration(String equipmentId, String validDate); + MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java index d3dccf2..4862710 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/MdcEfficiencyReportService.java @@ -6,6 +6,7 @@ import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * @author: LiuS @@ -102,4 +103,6 @@ * @return */ List<BigDecimal> getEfficiencyRate(String equipmentId, String date); + + Map<String, Object> teamEquipmentEfficiencyAnalyze(TeamEquEffVo teamEquEffVo); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java index c8dd286..fde18f5 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java @@ -448,7 +448,7 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { - + List<String> equipmentIdList = mdcEquipmentService.listEquipmentId(vo); if (equipmentIdList != null && !equipmentIdList.isEmpty()) { vo.setEquipmentIdList(equipmentIdList); @@ -1736,6 +1736,33 @@ return mdcEfficiencyReportMapper.getEfficiencyRate(equipmentId, date); } + /** + * 鐝粍鍚勮澶囩患鍚堝埄鐢ㄧ巼 + * + * @param teamEquEffVo + * @return + */ + @Override + public Map<String, Object> teamEquipmentEfficiencyAnalyze(TeamEquEffVo teamEquEffVo) { + Map<String, Object> result = new HashMap<>(); + List<String> mdcProductionIds = new ArrayList<>(); + if (StringUtils.isEmpty(teamEquEffVo.getProductionIds())) { + mdcProductionIds.add(teamEquEffVo.getProductionId()); + } else { + mdcProductionIds.addAll(Arrays.asList(teamEquEffVo.getProductionIds().split(","))); + } + List<String> allProductionIds = mdcProductionService.findChildren(mdcProductionIds); + List<MdcEquipment> equipmentList = mdcEquipmentService.findByProductionIds(allProductionIds); + if (equipmentList != null && !equipmentList.isEmpty()) { + List<String> equipmentIdList = equipmentList.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); + List<TeamEquipmentEfficiencyAnalyzeDto> dataList = mdcEfficiencyReportMapper.teamEquipmentEfficiencyAnalyze(equipmentIdList, teamEquEffVo.getMonth()); + result.put("dataList", dataList); + List<String> equipmentNameList = dataList.stream().map(TeamEquipmentEfficiencyAnalyzeDto::getEquipmentName).collect(Collectors.toList()); + result.put("equipmentNameList", equipmentNameList); + } + return result; + } + private MdcUtilizationResultDto utilizationRate(String equipmentId, String equipmentName, String equipmentType, Date startTime, Date endTime, String date, List<MdcUtilizationRate> mdcUtilizationRateList) { MdcUtilizationResultDto dto = new MdcUtilizationResultDto(); dto.setEquipmentId(equipmentId); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoMonthServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoMonthServiceImpl.java new file mode 100644 index 0000000..9557c62 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoMonthServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.mdc.service.impl; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfoMonth; +import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalInfoMonthMapper; +import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalInfoMonthService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 鏈堣澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +@Service +public class MdcEquipmentStatisticalInfoMonthServiceImpl extends ServiceImpl<MdcEquipmentStatisticalInfoMonthMapper, MdcEquipmentStatisticalInfoMonth> implements IMdcEquipmentStatisticalInfoMonthService { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java index 7bbf531..87b92ae 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.jeecg.common.system.vo.DictModel; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.*; import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalInfoMapper; import org.jeecg.modules.mdc.service.*; @@ -317,4 +318,9 @@ return Integer.parseInt(new BigDecimal(processLong).divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).toString()); } } + + @Override + public MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date) { + return this.baseMapper.findByEquipmentAndMonth(equipmentId, date); + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoMonthServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoMonthServiceImpl.java new file mode 100644 index 0000000..54fcdd6 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoMonthServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.mdc.service.impl; + +import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfoMonth; +import org.jeecg.modules.mdc.mapper.MdcEquipmentStatisticalShiftInfoMonthMapper; +import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalShiftInfoMonthService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 鏈堢彮娆¤澶囪繍琛屾暟鎹〃 + * @Author: Lius + * @Date: 2025-03-25 + * @Version: V1.0 + */ +@Service +public class MdcEquipmentStatisticalShiftInfoMonthServiceImpl extends ServiceImpl<MdcEquipmentStatisticalShiftInfoMonthMapper, MdcEquipmentStatisticalShiftInfoMonth> implements IMdcEquipmentStatisticalShiftInfoMonthService { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java index 938b7a9..b1051a3 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.Equipment; import org.jeecg.modules.mdc.entity.MdcEquipmentRepair; import org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection; @@ -93,8 +94,13 @@ } } + @Override + public MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date) { + return this.baseMapper.findByEquipmentAndMonth(equipmentId, date); + } + @Transactional(readOnly = true) - List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) { + public List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) { Date initDate = null; //鍙栨渶鍚庣殑缁熻鏁版嵁 if (StringUtils.isBlank(dateTime)) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/TeamEquEffVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/TeamEquEffVo.java new file mode 100644 index 0000000..bc51746 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/TeamEquEffVo.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-03-27 + * @Description: + */ +@Data +public class TeamEquEffVo { + + /** + * 涓績 + */ + private String productionId; + /** + * 鐝粍ids + */ + private String productionIds; + /** + * 鏈堜唤 + */ + private String month; + + +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/MdcProductionController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/MdcProductionController.java index 11a8968..555cd8c 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/MdcProductionController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/MdcProductionController.java @@ -19,6 +19,7 @@ import org.jeecg.modules.system.model.MdcProductionTreeModel; import org.jeecg.modules.system.model.ProductionIdModel; import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecg.modules.system.vo.MdcProOptionsVo; import org.springframework.cache.annotation.CacheEvict; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -321,4 +322,36 @@ return super.importExcel(request, response, MdcProduction.class); } + @ApiOperation(value = "浜х嚎琛�-鏍规嵁鐢ㄦ埛id鑾峰彇MDC浜х嚎(涓績)鎴栫彮缁勪笅鎷夐�夐」", notes = "浜х嚎琛�-鏍规嵁鐢ㄦ埛id鑾峰彇MDC浜х嚎(涓績)鎴栫彮缁勪笅鎷夐�夐」") + @GetMapping(value = "/loadProductionOptions") + public Result<?> loadProductionOptions(String productionId) { + Result<List<MdcProOptionsVo>> result = new Result<>(); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + try { + List<MdcProOptionsVo> list = mdcProductionService.loadProductionOptions(userId, productionId); + result.setSuccess(true); + result.setResult(list); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + @ApiOperation(value = "浜х嚎琛�-鏍规嵁鐝粍id鑾峰彇閰嶉�佺粍涓嬫媺閫夐」", notes = "浜х嚎琛�-鏍规嵁鐝粍id鑾峰彇閰嶉�佺粍涓嬫媺閫夐」") + @GetMapping(value = "/loadTeamOptions") + public Result<?> loadTeamOptions(@RequestParam(name = "productionId", required = true) String productionId) { + Result<List<MdcProOptionsVo>> result = new Result<>(); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + try { + List<MdcProOptionsVo> list = mdcProductionService.loadTeamOptions(userId, productionId); + result.setSuccess(true); + result.setResult(list); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java index 42b9355..95c60bc 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java @@ -53,4 +53,10 @@ * @return */ List<MdcProduction> findAllProductionId(@Param("userId") String userId); + + List<String> findChildren(@Param("mdcProductionIds") List<String> mdcProductionIds); + + List<MdcProduction> loadProductionOptions(@Param("userId") String userId, @Param("productionId") String productionId); + + List<String> findTeamValue(@Param("userId") String userId, @Param("productionList") List<String> productionList); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml index 963f879..f84308c 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml @@ -42,6 +42,7 @@ t3.id = #{userId} AND t1.org_type = '3' </select> + <select id="recursionChildrenByList" resultType="java.lang.String"> WITH temp (id) AS ( -- 鍒濆鏌ヨ锛岃幏鍙栨寚瀹� id 鐨勮褰� @@ -68,4 +69,59 @@ FROM temp; </select> + + <select id="findChildren" resultType="java.lang.String"> + WITH temp ( id ) AS ( + SELECT + id + FROM + mdc_production + WHERE + id IN + <foreach collection="mdcProductionIds" item = "id" index = "index" open = "(" close = ")" separator = ","> + #{id} + </foreach> + AND mdc_flag = '1' UNION ALL + SELECT + a.id + FROM + mdc_production a + INNER JOIN temp ON a.parent_id = temp.id + WHERE + a.mdc_flag = '1' + ) SELECT + * + FROM + temp + </select> + + <select id="loadProductionOptions" resultType="org.jeecg.modules.system.entity.MdcProduction"> + SELECT + t1.* + FROM + mdc_production t1 + LEFT JOIN mdc_user_production t2 ON t1.id = t2.pro_id + WHERE + t2.user_id = #{userId} AND t1.mdc_flag = '1' + <choose> + <when test="productionId != null and productionId != ''"> + AND t1.org_type = '3' AND t1.parent_id = #{productionId} + </when> + <otherwise> + AND t1.org_type = '2' + </otherwise> + </choose> + </select> + + <select id="findTeamValue" resultType="java.lang.String"> + SELECT DISTINCT + t1.team_code deamCode + FROM + mdc_equipment t1 + LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id + WHERE t2.production_id IN + <foreach collection="productionList" item = "productionId" index = "index" open = "(" close= ")" separator = ","> + #{productionId} + </foreach> + </select> </mapper> diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java index 56d25eb..9b94f22 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java @@ -4,6 +4,7 @@ import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.model.MdcProductionTreeModel; import org.jeecg.modules.system.model.ProductionIdModel; +import org.jeecg.modules.system.vo.MdcProOptionsVo; import java.util.List; import java.util.Map; @@ -141,4 +142,27 @@ * 鏌ヨ鎵�鏈変骇绾夸俊鎭紝骞跺垎鑺傜偣杩涜鏄剧ず */ List<MdcProductionTreeModel> queryTreeListByMdc(); + + /** + * 鏌ヨ瀛愯妭鐐� + * @param mdcProductionIds + * @return + */ + List<String> findChildren(List<String> mdcProductionIds); + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇浜х嚎(涓績)鎴栫彮缁勪笅鎷夐�夐」 + * @param userId + * @param productionId + * @return + */ + List<MdcProOptionsVo> loadProductionOptions(String userId, String productionId); + + /** + * + * @param userId + * @param productionId + * @return + */ + List<MdcProOptionsVo> loadTeamOptions(String userId, String productionId); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java index f94adf6..5bfc7ff 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.FillRuleConstant; +import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.util.FillRuleUtil; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.*; @@ -21,8 +22,10 @@ import org.jeecg.modules.system.model.MdcProductionTreeModel; import org.jeecg.modules.system.model.ProductionIdModel; import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysParamsService; import org.jeecg.modules.system.util.FindsProductionsChildrenUtil; +import org.jeecg.modules.system.vo.MdcProOptionsVo; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,6 +54,9 @@ @Resource private ISysParamsService sysParamsService; + + @Resource + private ISysDictService sysDictService; /** * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑浜х嚎鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔� */ @@ -521,6 +527,54 @@ return FindsProductionsChildrenUtil.wrapTreeDataToTreeList(list); } + @Override + public List<String> findChildren(List<String> mdcProductionIds) { + return this.baseMapper.findChildren(mdcProductionIds); + } + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇浜х嚎(涓績)鎴栫彮缁勪笅鎷夐�夐」 + * @param userId + * @param productionId + * @return + */ + @Override + public List<MdcProOptionsVo> loadProductionOptions(String userId, String productionId) { + List<MdcProOptionsVo> result = new ArrayList<>(); + List<MdcProduction> mdcProductionList = this.baseMapper.loadProductionOptions(userId, productionId); + if (mdcProductionList != null && !mdcProductionList.isEmpty()) { + for (MdcProduction mdcProduction : mdcProductionList) { + MdcProOptionsVo vo = new MdcProOptionsVo().convert(mdcProduction); + result.add(vo); + } + } + return result; + } + + @Override + public List<MdcProOptionsVo> loadTeamOptions(String userId, String productionId) { + List<MdcProOptionsVo> result = new ArrayList<>(); + List<String> productionList = this.findChildren(Arrays.asList(productionId.split(","))); + if (productionList != null && !productionList.isEmpty()) { + List<String> dictValues = this.baseMapper.findTeamValue(userId, productionList); + if (dictValues != null && !dictValues.isEmpty()) { + List<DictModel> dictModels = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_MDC_STAFF_TEAM); + if (dictModels != null && !dictModels.isEmpty()) { + for (DictModel dictModel : dictModels) { + if (dictValues.contains(dictModel.getValue())) { + MdcProOptionsVo vo = new MdcProOptionsVo(); + vo.setKey(dictModel.getValue()); + vo.setValue(dictModel.getValue()); + vo.setTitle(dictModel.getText()); + result.add(vo); + } + } + } + } + } + return result; + } + /** * 鎵撳紑 鐖惰妭鐐� 鍙� 浠ヤ笂鐨刴dc鏍囪 * @param parentId diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/MdcProOptionsVo.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/MdcProOptionsVo.java new file mode 100644 index 0000000..24b6d97 --- /dev/null +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/MdcProOptionsVo.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.system.vo; + +import lombok.Data; +import org.jeecg.modules.system.entity.MdcProduction; + +/** + * @Author: Lius + * @CreateTime: 2025-03-27 + * @Description: + */ +@Data +public class MdcProOptionsVo { + /** + * id + */ + private String key; + /** + * id + */ + private String value; + /** + * 鍚嶇О + */ + private String title; + + /** + * + * + * @param mdcProduction + * @return + */ + public MdcProOptionsVo convert(MdcProduction mdcProduction) { + this.key = mdcProduction.getId(); + this.value = mdcProduction.getId(); + this.title = mdcProduction.getProductionName(); + return this; + } +} -- Gitblit v1.9.3