From 490c15ad18133040b887d97b742bf9f9f4472e40 Mon Sep 17 00:00:00 2001 From: SjS Date: Fri, 11 Apr 2025 18:41:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AC=E4=BB=B6=E7=89=88=E6=9C=AC=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E8=AE=A1=E7=AE=97=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ComplaintServiceImpl.java | 3 + .../domain/HardwareVersionQuery.java | 8 ++ .../mapper/HardwareVersionMapper.java | 3 + .../mapper/HardwareVersionMapper.xml | 20 +++ .../service/HardwareVersionAssembler.java | 10 ++ .../service/HardwareVersionService.java | 4 + .../impl/HardwareVersionAssemblerImpl.java | 117 ++++++++++++++++++ .../impl/HardwareVersionServiceImpl.java | 11 ++ .../web/bst/HardwareVersionController.java | 6 +- 9 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionAssembler.java create mode 100644 ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionAssemblerImpl.java diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/complaint/service/impl/ComplaintServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/complaint/service/impl/ComplaintServiceImpl.java index 1d072fa..1145ed4 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/complaint/service/impl/ComplaintServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/complaint/service/impl/ComplaintServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.bst.complaint.service.impl; import java.util.List; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ServiceUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.bst.complaint.mapper.ComplaintMapper; @@ -56,6 +57,8 @@ public class ComplaintServiceImpl implements ComplaintService public int insertComplaint(Complaint complaint) { complaint.setCreateTime(DateUtils.getNowDate()); + ServiceUtil.assertion(complaint.getType()==null,"类型不能为空"); + ServiceUtil.assertion(complaint.getContact()==null,"联系方式不能为空"); return complaintMapper.insertComplaint(complaint); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/domain/HardwareVersionQuery.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/domain/HardwareVersionQuery.java index 7cd7987..e1745c2 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/domain/HardwareVersionQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/domain/HardwareVersionQuery.java @@ -1,7 +1,15 @@ package com.ruoyi.bst.hardwareVersion.domain; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data public class HardwareVersionQuery extends HardwareVersion{ + + @ApiModelProperty("硬件版本列表") + private List hardwareVersionIds; + + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.java index 432b47e..93a06af 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.java @@ -85,4 +85,7 @@ public interface HardwareVersionMapper */ int countUnBoundNum(Long id); + List selectBoundCount(HardwareVersionQuery query); + + List selectUnBoundCount(HardwareVersionQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.xml index 127200c..0f9010f 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/mapper/HardwareVersionMapper.xml @@ -81,6 +81,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from bst_device where hardware_version_id = #{hardwareVersionId} and mch_id is null + + + + insert into bst_hardware_version diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionAssembler.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionAssembler.java new file mode 100644 index 0000000..e3d374c --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionAssembler.java @@ -0,0 +1,10 @@ +package com.ruoyi.bst.hardwareVersion.service; + +import com.ruoyi.bst.hardwareVersion.domain.HardwareVersionVO; + +import java.util.List; + +public interface HardwareVersionAssembler { + + void assembleRevenue(List list); +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionService.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionService.java index 3ad3918..4f3d01f 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/HardwareVersionService.java @@ -62,4 +62,8 @@ public interface HardwareVersionService public int deleteHardwareVersionById(Long id); List computeNumber(HardwareVersionQuery query); + + List selectBoundCount(HardwareVersionQuery query); + + List selectUnBoundCount(HardwareVersionQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionAssemblerImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionAssemblerImpl.java new file mode 100644 index 0000000..d2d0453 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionAssemblerImpl.java @@ -0,0 +1,117 @@ +package com.ruoyi.bst.hardwareVersion.service.impl; + +import com.ruoyi.bst.hardwareVersion.domain.HardwareVersion; +import com.ruoyi.bst.hardwareVersion.domain.HardwareVersionQuery; +import com.ruoyi.bst.hardwareVersion.domain.HardwareVersionVO; +import com.ruoyi.bst.hardwareVersion.service.HardwareVersionAssembler; +import com.ruoyi.bst.hardwareVersion.service.HardwareVersionService; +import com.ruoyi.common.utils.collection.CollectionUtils; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class HardwareVersionAssemblerImpl implements HardwareVersionAssembler { + + @Autowired + private HardwareVersionService hardwareVersionService; + + @Override + public void assembleRevenue(List list) { + if (CollectionUtils.isEmptyElement(list)) { + return; + } + // 子版本 + // 计算已绑定设备数量 + this.assembleBoundCount(list); + // 计算未绑定设备数量 + this.assembleUnboundCount(list); + // 计算已录入的设备数量 + this.assembleEnteredNum(list); + // 父版本 + // 累加子版本的数据 + this.aggregateParentData(list); + // 计算丢算的设备数量 + this.assembleLost(list); + } + + + // 拼接已绑定数量 + private void assembleBoundCount(List list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + HardwareVersionQuery query = new HardwareVersionQuery(); + query.setHardwareVersionIds(list.stream().map(HardwareVersionVO::getId).collect(Collectors.toList())); + List hardwareVersionList = hardwareVersionService.selectBoundCount(query); + Map idToBoundMap = hardwareVersionList.stream().collect(Collectors.toMap(HardwareVersionVO::getId, HardwareVersion::getBound)); + list.forEach(vo->{ + vo.setBound(idToBoundMap.getOrDefault(vo.getId(), 0)); + }); + } + + // 拼接未绑定数量 + private void assembleUnboundCount(List list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + HardwareVersionQuery query = new HardwareVersionQuery(); + query.setHardwareVersionIds(list.stream().map(HardwareVersionVO::getId).collect(Collectors.toList())); + List hardwareVersionList = hardwareVersionService.selectUnBoundCount(query); + Map idToBoundMap = hardwareVersionList.stream().collect(Collectors.toMap(HardwareVersionVO::getId, HardwareVersion::getUnBound)); + list.forEach(vo->{ + vo.setUnBound(idToBoundMap.getOrDefault(vo.getId(), 0)); + }); + } + + // 拼接已录入数量 + private void assembleEnteredNum(List list) { + list.forEach(vo->{ + int enteredNum = vo.getBound()+vo.getUnBound(); + vo.setEnteredNum(enteredNum); + }); + } + + // 计算父版本数量 + private void aggregateParentData(List list) { + // 创建映射表 + Map> parentChildMap = list.stream() + .filter(vo -> vo.getParentId() != 0) + .collect(Collectors.groupingBy(HardwareVersionVO::getParentId)); + + // 处理父版本数据 + list.stream() + .filter(vo -> vo.getParentId() == 0) + .forEach(parent -> { + List children = parentChildMap.getOrDefault(parent.getId(), Collections.emptyList()); + + // 初始化父版本统计值 + parent.setBound(0); + parent.setUnBound(0); + parent.setEnteredNum(0); + + // 单次遍历累加子版本数据 + for (HardwareVersionVO child : children) { + parent.setBound(parent.getBound() + child.getBound()); + parent.setUnBound(parent.getUnBound() + child.getUnBound()); + parent.setEnteredNum(parent.getEnteredNum() + child.getEnteredNum()); + } + }); + } + + // 拼接丢损的数量 + private void assembleLost(List list) { + list.stream() + .filter(vo -> vo.getParentId() == 0) // 仅处理父版本 + .forEach(vo -> { + int lost = vo.getQuantity() - vo.getEnteredNum() - vo.getNotEnteredNum(); + vo.setLost(lost); + }); + } + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionServiceImpl.java index 19686cb..0f04512 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/hardwareVersion/service/impl/HardwareVersionServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.bst.hardwareVersion.service.impl; +import java.util.Collections; import java.util.List; import com.ruoyi.bst.hardwareVersion.domain.enums.SelectCondition; @@ -138,4 +139,14 @@ public class HardwareVersionServiceImpl implements HardwareVersionService } return list; } + + @Override + public List selectBoundCount(HardwareVersionQuery query) { + return hardwareVersionMapper.selectBoundCount(query); + } + + @Override + public List selectUnBoundCount(HardwareVersionQuery query) { + return hardwareVersionMapper.selectUnBoundCount(query); + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/HardwareVersionController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/HardwareVersionController.java index 03c12eb..962d60d 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/HardwareVersionController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/HardwareVersionController.java @@ -3,6 +3,7 @@ package com.ruoyi.web.bst; import com.ruoyi.bst.hardwareVersion.domain.HardwareVersion; import com.ruoyi.bst.hardwareVersion.domain.HardwareVersionQuery; import com.ruoyi.bst.hardwareVersion.domain.HardwareVersionVO; +import com.ruoyi.bst.hardwareVersion.service.HardwareVersionAssembler; import com.ruoyi.bst.hardwareVersion.service.HardwareVersionService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; @@ -30,6 +31,8 @@ public class HardwareVersionController extends BaseController @Autowired private HardwareVersionService hardwareVersionService; + @Autowired + private HardwareVersionAssembler hardwareVersionAssembler; /** * 查询硬件版本列表 */ @@ -39,7 +42,8 @@ public class HardwareVersionController extends BaseController { startPage(); startOrderBy(); - List list = hardwareVersionService.computeNumber(query); + List list = hardwareVersionService.selectHardwareVersionList(query); + hardwareVersionAssembler.assembleRevenue(list); return getDataTable(list); }