From b7d861f9b69f01597eb42aaf75b517b5636b5c39 Mon Sep 17 00:00:00 2001 From: mashuai Date: Tue, 26 Aug 2025 09:25:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ComplexQueryServiceImpl.java | 28 ++++++----- .../PushProDataUseInfoController.java | 8 +++- .../material/push/domain/ProIdsBean.java | 14 +++++- .../material/push/domain/StaticsNumsBean.java | 20 +++++++- .../material/push/domain/TotalNumsBean.java | 47 +++++++++++++++++++ .../push/service/ProDataUseInfoService.java | 7 +-- .../push/service/impl/ProDataUseInfoImpl.java | 24 +++++----- .../material/push/ProDataUseInfoMapper.xml | 32 +++++++++++-- 8 files changed, 139 insertions(+), 41 deletions(-) create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/TotalNumsBean.java diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java index 3bbdc689..5ad3e14a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java @@ -192,12 +192,12 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { BigDecimal totalPendingScrapNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); BigDecimal totalScrapNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); BigDecimal totalAllNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); - BigDecimal fiveReplacementNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); + /*BigDecimal fiveReplacementNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); BigDecimal tenReplacementNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); BigDecimal tenPlusReplacementNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); String fiveReplacementRate = "0%"; String tenReplacementRate = "0%"; - String tenPlusReplacementRate = "0%"; + String tenPlusReplacementRate = "0%";*/ List recordList = complexQueryMapper.getRetainedEquipmentList(bean); if (CollectionUtils.isNotEmpty(recordList)) { for (RetainedEquipmentInfo retainedEquipmentInfo : recordList) { @@ -209,15 +209,15 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { totalPendingScrapNum = totalPendingScrapNum.add(retainedEquipmentInfo.getPendingScrapNum()); totalScrapNum = totalScrapNum.add(retainedEquipmentInfo.getScrapNum()); totalAllNum = totalAllNum.add(retainedEquipmentInfo.getAllNum()); - fiveReplacementNum = fiveReplacementNum.add(retainedEquipmentInfo.getFiveReplacementNum()); + /*fiveReplacementNum = fiveReplacementNum.add(retainedEquipmentInfo.getFiveReplacementNum()); tenReplacementNum = tenReplacementNum.add(retainedEquipmentInfo.getTenReplacementNum()); - tenPlusReplacementNum = tenPlusReplacementNum.add(retainedEquipmentInfo.getTenPlusReplacementNum()); + tenPlusReplacementNum = tenPlusReplacementNum.add(retainedEquipmentInfo.getTenPlusReplacementNum());*/ BigDecimal equipmentPrice = retainedEquipmentInfo.getAllNum() .multiply(retainedEquipmentInfo.getBuyPrice()) .divide(new BigDecimal(10000), 2, RoundingMode.HALF_UP); totalPrice = totalPrice.add(equipmentPrice); BigDecimal allNum = retainedEquipmentInfo.getAllNum(); - if (allNum.compareTo(BigDecimal.ZERO) == 0) { + /*if (allNum.compareTo(BigDecimal.ZERO) == 0) { fiveReplacementRate = "0%"; tenReplacementRate = "0%"; tenPlusReplacementRate = "0%"; @@ -234,13 +234,13 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { .divide(allNum, 4, RoundingMode.HALF_DOWN) .multiply(new BigDecimal(100)) .setScale(2, RoundingMode.HALF_UP) + "%"; - } + }*/ retainedEquipmentInfo.setTotalPrice(equipmentPrice); - retainedEquipmentInfo.setFiveReplacementRate(fiveReplacementRate); + /*retainedEquipmentInfo.setFiveReplacementRate(fiveReplacementRate); retainedEquipmentInfo.setTenReplacementRate(tenReplacementRate); - retainedEquipmentInfo.setTenPlusReplacementRate(tenPlusReplacementRate); + retainedEquipmentInfo.setTenPlusReplacementRate(tenPlusReplacementRate);*/ } - if (totalAllNum.compareTo(BigDecimal.ZERO) == 0) { + /*if (totalAllNum.compareTo(BigDecimal.ZERO) == 0) { fiveReplacementRate = "0%"; tenReplacementRate = "0%"; tenPlusReplacementRate = "0%"; @@ -257,7 +257,7 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { .divide(totalAllNum, 4, RoundingMode.HALF_DOWN) .multiply(new BigDecimal(100)) .setScale(2, RoundingMode.HALF_UP) + "%"; - } + }*/ if (bean.getIsExport() == 0) { RetainedEquipmentInfo retainedEquipmentInfo = new RetainedEquipmentInfo(); retainedEquipmentInfo.setStoreNum(totalStoreNum); @@ -269,9 +269,9 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { retainedEquipmentInfo.setScrapNum(totalScrapNum); retainedEquipmentInfo.setAllNum(totalAllNum); retainedEquipmentInfo.setTotalPrice(totalPrice); - retainedEquipmentInfo.setFiveReplacementRate(fiveReplacementRate); + /*retainedEquipmentInfo.setFiveReplacementRate(fiveReplacementRate); retainedEquipmentInfo.setTenReplacementRate(tenReplacementRate); - retainedEquipmentInfo.setTenPlusReplacementRate(tenPlusReplacementRate); + retainedEquipmentInfo.setTenPlusReplacementRate(tenPlusReplacementRate);*/ retainedEquipmentInfo.setUnit("合计"); recordList.add(0, retainedEquipmentInfo); } @@ -397,6 +397,10 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { Map leaseInfoMap = Collections.emptyMap(); if (!leaseIds.isEmpty()) { leaseInfoMap = complexQueryMapper.batchSelectInfo(leaseIds).stream() + // 先过滤掉null元素,避免后续调用方法时空指针 + .filter(Objects::nonNull) + // 再过滤LeaseId为null的元素 + .filter(info -> info.getLeaseId() != null) .collect(Collectors.toMap( UseStorageInfo::getLeaseId, info -> info, diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/controller/PushProDataUseInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/controller/PushProDataUseInfoController.java index 753c64f3..96ea32e1 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/controller/PushProDataUseInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/controller/PushProDataUseInfoController.java @@ -62,11 +62,15 @@ public class PushProDataUseInfoController extends BaseController { } } - // 查询七大类设备保有量、在用量、再修量、库存量 + /** + * 查询七大类设备保有量、在用量、再修量、库存量 + * @param bean + * @return + */ @GetMapping(value = "getNumsByStatics") public AjaxResult getNumsByStatics(ProIdsBean bean) { try { - HashMap results = service.getNumsByStatics(bean); + List results = service.getNumsByStatics(bean); return AjaxResult.success(results); } catch (Exception e) { logger.error(e.toString(), e); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/ProIdsBean.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/ProIdsBean.java index 8e878494..0aa1deca 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/ProIdsBean.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/ProIdsBean.java @@ -21,9 +21,19 @@ public class ProIdsBean { private String proCenter; private Integer deptId; private BigDecimal typeNum; -// 1 牵张设备 2 抱杆 3动力设备 4 变电专业设备 5安全工器具 6自主创新设备 7其他 + + /** + * 1 牵张设备 2 抱杆 3动力设备 4 变电专业设备 5安全工器具 6自主创新设备 7其他 + */ private Integer isStatics; - // 0 检验临期 1 检验超期 + /** + * 0 检验临期 1 检验超期 + */ private Integer type; + + /** + * 公司名称 + */ + private String unitName; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/StaticsNumsBean.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/StaticsNumsBean.java index 1e2d4143..05ffd36b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/StaticsNumsBean.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/StaticsNumsBean.java @@ -14,8 +14,24 @@ public class StaticsNumsBean { private BigDecimal useNum; private BigDecimal repairNum; private BigDecimal num; - // 检验临期数量 + + /** + * 检验临期数量 + */ private BigDecimal ApproachingNum; - // 检验超期数量 + + /** + * 检验超期数量 + */ private BigDecimal TimeoutNum; + + /** + * 1 牵张设备 2 抱杆 3动力设备 4 变电专业设备 5安全工器具 6自主创新设备 7其他 + */ + private Integer isStatics; + + /** + * 单位名称 + */ + private String unitName; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/TotalNumsBean.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/TotalNumsBean.java new file mode 100644 index 00000000..a0a60518 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/domain/TotalNumsBean.java @@ -0,0 +1,47 @@ +package com.bonus.material.push.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/8/23 - 16:29 + */ +@Data +@ApiModel("装备总览") +public class TotalNumsBean { + + @ApiModelProperty(value = "装备总览") + private BigDecimal total; + + @ApiModelProperty("分层列表") + List list; + + /** + * 单个分层 + */ + @Data + @ApiModel("单个分层实体vo") + public static class SingleEquipmentStatistic { + + @ApiModelProperty("类别名称") + private String equipmentName; + + @ApiModelProperty("保有量") + private BigDecimal inventoryNum; + + @ApiModelProperty("在用量") + private BigDecimal useNum; + + @ApiModelProperty("维修数量") + private BigDecimal repairNum; + + @ApiModelProperty("库存量") + private BigDecimal num; + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/ProDataUseInfoService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/ProDataUseInfoService.java index d4286be2..ed1a6a2a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/ProDataUseInfoService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/ProDataUseInfoService.java @@ -1,9 +1,6 @@ package com.bonus.material.push.service; -import com.bonus.material.push.domain.InventoryAlertBean; -import com.bonus.material.push.domain.ProIdsBean; -import com.bonus.material.push.domain.MachineInfoBean; -import com.bonus.material.push.domain.StaticsNumsBean; +import com.bonus.material.push.domain.*; import java.util.HashMap; import java.util.List; @@ -22,7 +19,7 @@ public interface ProDataUseInfoService { * @param bean * @return */ - HashMap getNumsByStatics(ProIdsBean bean); + List getNumsByStatics(ProIdsBean bean); List getApproachingAndTimeout(ProIdsBean bean); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/impl/ProDataUseInfoImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/impl/ProDataUseInfoImpl.java index 155f9c29..0d405f93 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/impl/ProDataUseInfoImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/push/service/impl/ProDataUseInfoImpl.java @@ -1,10 +1,8 @@ package com.bonus.material.push.service.impl; -import com.bonus.material.push.domain.InventoryAlertBean; -import com.bonus.material.push.domain.MachineInfoBean; -import com.bonus.material.push.domain.ProIdsBean; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.material.push.domain.*; -import com.bonus.material.push.domain.StaticsNumsBean; import com.bonus.material.push.mapper.ProDataUseInfoMapper; import com.bonus.material.push.service.ProDataUseInfoService; import org.springframework.stereotype.Service; @@ -54,18 +52,18 @@ public class ProDataUseInfoImpl implements ProDataUseInfoService { * @return */ @Override - public HashMap getNumsByStatics(ProIdsBean bean) { - HashMap hashMap = new HashMap<>(2); + public List getNumsByStatics(ProIdsBean bean) { + TotalNumsBean totalNumsBean = new TotalNumsBean(); + List beans = new ArrayList<>(); BigDecimal totalNum = BigDecimal.ZERO.setScale(3, RoundingMode.HALF_UP); List list = proDataUseInfoMapper.getNumsByStatics(bean); - for (StaticsNumsBean staticsNumsBean : list) { - totalNum = totalNum.add(staticsNumsBean.getInventoryNum()); + if (CollectionUtils.isNotEmpty(list)) { + for (StaticsNumsBean staticsNumsBean : list) { + totalNum = totalNum.add(staticsNumsBean.getInventoryNum()); + + } } - //总数量 - hashMap.put("total", totalNum); - // 数据集合 - hashMap.put("list", list); - return hashMap; + return beans; } @Override diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/push/ProDataUseInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/push/ProDataUseInfoMapper.xml index 9a219358..01e93cc6 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/push/ProDataUseInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/push/ProDataUseInfoMapper.xml @@ -74,7 +74,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(subquery0.num, 0) + IFNULL(subquery1.usNum, 0) + IFNULL(subquery2.repairNum, 0) ELSE IFNULL(mt.storage_num, 0) + IFNULL(subquery1.usNum, 0) + IFNULL(subquery2.repairNum, 0) - END AS inventoryNum + END AS inventoryNum, + subquery1.unitName AS unitName, + mt2.is_statics AS isStatics FROM ma_type mt LEFT JOIN ( SELECT @@ -104,7 +106,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mt2.type_name AS typeName, mt2.type_id AS thirdTypeId, mt.type_name AS typeModelName, - SUM(IFNULL( sai.num, 0 )) AS usNum + SUM(IFNULL( sai.num, 0 )) AS usNum, + sd.dept_name AS unitName FROM slt_agreement_info sai left join bm_agreement_info bai on sai.agreement_id = bai.agreement_id @@ -113,9 +116,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id LEFT JOIN ma_type mt3 ON mt3.type_id = mt2.parent_id LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id + LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit WHERE sai.`status` = '0' and sai.`is_slt` = '0' - AND bp.pro_id = #{proId} + + AND sd.dept_name = #{unitName} + + + AND bp.pro_id = #{proId} + + + and mt2.is_statics = #{isStatics} + AND sai.end_time IS NULL AND sai.back_id IS NULL GROUP BY mt.type_id @@ -133,7 +145,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mt.type_name AS typeModelName, SUM( IFNULL(rad.repair_num, 0) - IFNULL(rad.repaired_num, 0) - - IFNULL(rad.scrap_num, 0)) AS repairNum + IFNULL(rad.scrap_num, 0)) AS repairNum, + sd.dept_name AS unitName FROM repair_apply_details rad LEFT JOIN tm_task tt ON rad.task_id = tt.task_id LEFT JOIN tm_task_agreement tta ON tt.task_id = tta.task_id @@ -143,9 +156,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id LEFT JOIN ma_type mt3 ON mt3.type_id = mt2.parent_id LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id + LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit WHERE rad.status = '0' - AND bp.pro_id = #{proId} + + AND sd.dept_name = #{unitName} + + + AND bp.pro_id = #{proId} + + + and mt2.is_statics = #{isStatics} + GROUP BY mt.type_id) AS subquery2 ON subquery2.type_id = mt.type_id LEFT JOIN ma_type mt2 on mt2.type_id = mt.parent_id