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/fault/mapper/FaultMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml index f4d0655..3d254c7 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml @@ -22,11 +22,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bf.vehicle_num, bf.store_id, su.agent_id - from <include refid="searchTables"/> + <include refid="searchTables"></include> </sql> - <sql id="searchTables"> - bst_fault bf + from bst_fault bf left join sys_user su on bf.store_id = su.user_id </sql> @@ -48,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="query.appealStatus != null and query.appealStatus != ''"> and bf.appeal_status = #{query.appealStatus}</if> ${@com.ruoyi.framework.util.DataScopeUtil@dataScope( null, - "bf.store_id,su.agent_id", + "bf.store_id,su.agent_id,bf.user_id", null, null, query.scope @@ -60,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <include refid="selectFaultVo"/> <where> <include refid="searchCondition"/> + order by bf.create_time desc </where> </select> diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java index 2dc2642..b6a81b3 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/service/impl/FaultServiceImpl.java @@ -5,6 +5,8 @@ import java.util.List; import com.github.pagehelper.PageHelper; import com.ruoyi.bst.area.domain.AreaQuery; import com.ruoyi.bst.area.domain.AreaVO; +import com.ruoyi.bst.device.domain.DeviceVO; +import com.ruoyi.bst.device.service.DeviceService; import com.ruoyi.bst.fault.domain.enums.FaultHandleStatus; import com.ruoyi.bst.fault.domain.enums.FaultStatus; import com.ruoyi.common.utils.DateUtils; @@ -30,6 +32,8 @@ public class FaultServiceImpl implements FaultService { @Autowired private FaultMapper faultMapper; + @Autowired + private DeviceService deviceService; @Override public FaultVO selectFaultById(Long id, boolean scope) { @@ -77,7 +81,9 @@ public class FaultServiceImpl implements FaultService { fault.setCreateTime(DateUtils.getNowDate()); fault.setUserId(SecurityUtils.getLoginUser().getUserId()); - return faultMapper.insertFault(fault); + DeviceVO vo = deviceService.selectDeviceBySn(fault.getVehicleNum()); + ServiceUtil.assertion(vo==null,"当前设备不存在"); + return faultMapper.insertFault(fault); } /** 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<Long> 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 ef38516..cacb853 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 @@ -88,6 +88,9 @@ public interface HardwareVersionMapper */ int countUnBoundNum(Long id); + List<HardwareVersionVO> selectBoundCount(HardwareVersionQuery query); + + List<HardwareVersionVO> 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 bd07d1f..6d8f34e 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 </select> + <select id="selectBoundCount" resultType="com.ruoyi.bst.hardwareVersion.domain.HardwareVersionVO"> + select bhv.id,count(1) as Bound + from bst_hardware_version bhv + left join bst_device bd + on bhv.id = bd.hardware_version_id + where bd.mch_id is not null + and bd.hardware_version_id is not null + group by bhv.id + </select> + + <select id="selectUnBoundCount" resultType="com.ruoyi.bst.hardwareVersion.domain.HardwareVersionVO"> + select bhv.id,count(1) as unBound + from bst_hardware_version bhv + left join bst_device bd + on bhv.id = bd.hardware_version_id + where bd.mch_id is null + and bd.hardware_version_id is not null + group by bhv.id + </select> + <insert id="insertHardwareVersion" parameterType="HardwareVersion" useGeneratedKeys="true" keyProperty="id"> insert into bst_hardware_version <trim prefix="(" suffix=")" suffixOverrides=","> 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<HardwareVersionVO> 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 6ce0d66..26e5f41 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 @@ -58,6 +58,10 @@ public interface HardwareVersionService List<HardwareVersionVO> computeNumber(HardwareVersionQuery query); + List<HardwareVersionVO> selectBoundCount(HardwareVersionQuery query); + + List<HardwareVersionVO> selectUnBoundCount(HardwareVersionQuery query); + /** * 查询所有硬件版本名称 * @return 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<HardwareVersionVO> 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<HardwareVersionVO> list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + HardwareVersionQuery query = new HardwareVersionQuery(); + query.setHardwareVersionIds(list.stream().map(HardwareVersionVO::getId).collect(Collectors.toList())); + List<HardwareVersionVO> hardwareVersionList = hardwareVersionService.selectBoundCount(query); + Map<Long, Integer> idToBoundMap = hardwareVersionList.stream().collect(Collectors.toMap(HardwareVersionVO::getId, HardwareVersion::getBound)); + list.forEach(vo->{ + vo.setBound(idToBoundMap.getOrDefault(vo.getId(), 0)); + }); + } + + // 拼接未绑定数量 + private void assembleUnboundCount(List<HardwareVersionVO> list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + HardwareVersionQuery query = new HardwareVersionQuery(); + query.setHardwareVersionIds(list.stream().map(HardwareVersionVO::getId).collect(Collectors.toList())); + List<HardwareVersionVO> hardwareVersionList = hardwareVersionService.selectUnBoundCount(query); + Map<Long, Integer> idToBoundMap = hardwareVersionList.stream().collect(Collectors.toMap(HardwareVersionVO::getId, HardwareVersion::getUnBound)); + list.forEach(vo->{ + vo.setUnBound(idToBoundMap.getOrDefault(vo.getId(), 0)); + }); + } + + // 拼接已录入数量 + private void assembleEnteredNum(List<HardwareVersionVO> list) { + list.forEach(vo->{ + int enteredNum = vo.getBound()+vo.getUnBound(); + vo.setEnteredNum(enteredNum); + }); + } + + // 计算父版本数量 + private void aggregateParentData(List<HardwareVersionVO> list) { + // 创建映射表 + Map<Long, List<HardwareVersionVO>> parentChildMap = list.stream() + .filter(vo -> vo.getParentId() != 0) + .collect(Collectors.groupingBy(HardwareVersionVO::getParentId)); + + // 处理父版本数据 + list.stream() + .filter(vo -> vo.getParentId() == 0) + .forEach(parent -> { + List<HardwareVersionVO> 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<HardwareVersionVO> 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 6cc68f8..9d00f88 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 org.springframework.beans.factory.annotation.Autowired; @@ -163,4 +164,14 @@ public class HardwareVersionServiceImpl implements HardwareVersionService String key = CacheConstants.ALL_HARDWARE_VERSION_NAME; redisCache.deleteObject(key); } + + @Override + public List<HardwareVersionVO> selectBoundCount(HardwareVersionQuery query) { + return hardwareVersionMapper.selectBoundCount(query); + } + + @Override + public List<HardwareVersionVO> selectUnBoundCount(HardwareVersionQuery query) { + return hardwareVersionMapper.selectUnBoundCount(query); + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java index cc59c0d..091a0ad 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/FaultController.java @@ -49,6 +49,7 @@ public class FaultController extends BaseController startPage(); startOrderBy(); query.setScope(true); + query.setStoreId(getUserId()); List<FaultVO> list = faultService.selectFaultList(query); return getDataTable(list); } 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 1e924ce..552a966 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 @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; 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; @@ -39,6 +40,8 @@ public class HardwareVersionController extends BaseController @Autowired private HardwareVersionService hardwareVersionService; + @Autowired + private HardwareVersionAssembler hardwareVersionAssembler; /** * 查询硬件版本列表 */ @@ -48,7 +51,8 @@ public class HardwareVersionController extends BaseController { startPage(); startOrderBy(); - List<HardwareVersionVO> list = hardwareVersionService.computeNumber(query); + List<HardwareVersionVO> list = hardwareVersionService.selectHardwareVersionList(query); + hardwareVersionAssembler.assembleRevenue(list); return getDataTable(list); }