diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java index 20ef8c8..bba502b 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java @@ -20,7 +20,7 @@ import java.util.List; /** * 设备信息对象 ma_dev_info - * + * * @author syruan */ @EqualsAndHashCode(callSuper = false) @@ -290,4 +290,13 @@ public class DevInfo extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date nextCheckDate; + + @ApiModelProperty(value = "使用率大于80") + private Integer idle80; + + @ApiModelProperty(value = "使用率大于30小于80") + private Integer idle3080; + + @ApiModelProperty(value = "使用率小于30") + private Integer idle30; } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java index 715ccc6..9faba65 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java @@ -17,13 +17,13 @@ import java.util.List; /** * 设备信息Mapper接口 - * + * * @author syruan */ public interface DevInfoMapper { /** * 查询设备信息 - * + * * @param maId 设备信息主键 * @return 设备信息 */ @@ -61,7 +61,7 @@ public interface DevInfoMapper { /** * 查询设备信息列表 - * + * * @param devInfo 设备信息 * @return 设备信息集合 */ @@ -73,7 +73,7 @@ public interface DevInfoMapper { /** * 新增设备信息 - * + * * @param devInfo 设备信息 * @return 结果 */ @@ -87,7 +87,7 @@ public interface DevInfoMapper { /** * 修改设备信息 - * + * * @param devInfo 设备信息 * @return 结果 */ @@ -95,7 +95,7 @@ public interface DevInfoMapper { /** * 删除设备信息 -- 逻辑删除 -- 限制状态删除 - * + * * @param maId 设备信息主键 * @param statusCode 状态码 * @return 结果 @@ -104,7 +104,7 @@ public interface DevInfoMapper { /** * 批量删除设备信息 - * + * * @param maIds 需要删除的数据主键集合 * @return 结果 */ @@ -242,5 +242,8 @@ public interface DevInfoMapper { */ List getCompanyNum(); + List selectDevInfoHotListRatio(DevInfoVo devInfoVo); + + List getOrderByCompanyId(int companyId); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/controller/LargeScreenController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/controller/LargeScreenController.java index 96f8d38..c830f35 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/controller/LargeScreenController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/controller/LargeScreenController.java @@ -9,6 +9,7 @@ import com.bonus.material.device.mapper.DevInfoMapper; import com.bonus.material.device.service.DevInfoService; import com.bonus.material.largeScreen.entity.OrderData; import com.bonus.material.largeScreen.entity.OrderDto; +import com.bonus.material.largeScreen.service.LargeScreenService; import com.bonus.material.lease.domain.MaLeaseInfo; import com.bonus.material.lease.mapper.MaLeaseInfoMapper; import com.bonus.material.order.domain.OrderDetailDto; @@ -49,11 +50,18 @@ public class LargeScreenController { @Resource private MaLeaseInfoMapper leaseInfoMapper; + @Resource + private LargeScreenService largeScreenService; + @ApiOperation("闲置装备分析") @GetMapping("/getIdleDevRatio") public AjaxResult getIdleDevRatio() { - List list = devInfoMapper.getIdleDevRatio(); - return AjaxResult.success(list); + try { + DevInfo list = largeScreenService.getIdleDevRatio(); + return AjaxResult.success(list); + }catch (Exception e){ + return AjaxResult.error("闲置装备分析异常"); + } } @ApiOperation("出租装备分析") @@ -127,10 +135,10 @@ public class LargeScreenController { OrderData orderData = new OrderData(); Integer leaseNum = leaseInfoMapper.getLeaseCount(); Integer leaseOrderNum = leaseInfoMapper.getLeaseOrderCount(); - //Integer maTypeCountFromLease = leaseInfoMapper.getMaTypeCountFromLease(); + Integer maTypeCountFromLease = leaseInfoMapper.getMaTypeCountFromLease(); String topPopularTypeName = leaseInfoMapper.getTopPopularTypeName(); orderData.setLeaseNum(leaseNum); - //orderData.setMaTypeCountFromLease(maTypeCountFromLease); + orderData.setMaTypeCountFromLease(maTypeCountFromLease); orderData.setLeaseOrderRatio(MathUtil.calculatePercentage(leaseOrderNum, leaseNum)); orderData.setTopPopularTypeName(topPopularTypeName); return AjaxResult.success(orderData); @@ -187,6 +195,36 @@ public class LargeScreenController { return AjaxResult.success(companyList); } +/* @ApiOperation("租赁装备数及订单数") + @GetMapping("/getCompanyNum") + public AjaxResult getCompanyNum(int companyId) { + // 查询装备对应订单数 + List list = devInfoMapper.getOrderByCompanyId(companyId); + // 查询装备对应所属公司 + List companyList = devInfoMapper.getCompanyList(); + // 使用 Map 存储每个公司 ID 对应的订单总数 + Map orderNumMap = new HashMap<>(); + for (DevInfoVo devInfoVo : list) { + String companyId = devInfoVo.getCompanyId(); + // 如果 Map 中已经存在该公司 ID,则累加订单数;否则,将当前订单数作为初始值 + orderNumMap.put(companyId, orderNumMap.getOrDefault(companyId, 0) + devInfoVo.getOrderNum()); + } + if (CollectionUtil.isNotEmpty(companyList)) { + for (DevInfoVo infoVo : companyList) { + String companyId = infoVo.getCompanyId(); + // 从 Map 中获取该公司 ID 对应的订单总数 + Integer orderNum = orderNumMap.getOrDefault(companyId, 0); + infoVo.setOrderNum(orderNum); + } + // 根据 orderNum 降序排序,并取前 9 个元素 + companyList = companyList.stream() + .sorted((vo1, vo2) -> Integer.compare(vo2.getOrderNum(), vo1.getOrderNum())) + .limit(9) + .collect(Collectors.toList()); + } + return AjaxResult.success(companyList); + }*/ + // @ApiOperation("订单数据") // @GetMapping("/orderData") // public AjaxResult getOrderData() { diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/LargeScreenService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/LargeScreenService.java new file mode 100644 index 0000000..717951b --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/LargeScreenService.java @@ -0,0 +1,11 @@ +package com.bonus.material.largeScreen.service; + +import com.bonus.material.device.domain.DevInfo; +import com.bonus.material.device.domain.vo.DevInfoVo; + +import java.rmi.ServerException; +import java.util.List; + +public interface LargeScreenService { + DevInfo getIdleDevRatio() throws ServerException; +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/impl/LargeScreenServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/impl/LargeScreenServiceImpl.java new file mode 100644 index 0000000..94e3e7d --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/largeScreen/service/impl/LargeScreenServiceImpl.java @@ -0,0 +1,66 @@ +package com.bonus.material.largeScreen.service.impl; + +import com.bonus.common.biz.utils.MathUtil; +import com.bonus.material.device.domain.DevInfo; +import com.bonus.material.device.domain.vo.DevInfoVo; +import com.bonus.material.device.mapper.DevInfoMapper; +import com.bonus.material.largeScreen.service.LargeScreenService; +import lombok.extern.slf4j.Slf4j; +import net.bytebuddy.implementation.bytecode.Throw; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.rmi.ServerException; +import java.util.List; + +@Service +@Slf4j +public class LargeScreenServiceImpl implements LargeScreenService { + + @Resource + private DevInfoMapper devInfoMapper; + @Override + public DevInfo getIdleDevRatio() throws ServerException { + DevInfoVo devInfoVo = new DevInfoVo(); + DevInfo devInfo = new DevInfo(); + try { + //获取所有设备信息 + ListdevInfoList = devInfoMapper.selectDevInfoHotListRatio(devInfoVo); + //计算使用率 + int idle80 = 0; + int idle3080 = 0; + int idle30 = 0; + for (DevInfoVo devInfoVoNew:devInfoList) { + if (devInfoVoNew.getTotalUpDay()==null){ + idle30++; + continue; + } + if (devInfoVoNew.getTotalLeaseDay()==null){ + devInfoVoNew.setTotalLeaseDay(0); + } + log.info("============{}",devInfoVoNew.getMaId()); + BigDecimal result = MathUtil.calculatePercentage(devInfoVoNew.getTotalUpDay(), devInfoVoNew.getTotalUpDay() + devInfoVoNew.getTotalLeaseDay()); + int re1 = result.compareTo(new BigDecimal(80)); + int re2 = result.compareTo(new BigDecimal(30)); + //使用率>80 + if (re1>0){ + idle80++; + //30<=使用率<=80 + }if (re1<=0 && re2>=0){ + idle3080++; + //使用率<30 + }if (re2<0){ + idle30++; + } + } + devInfo.setIdle30(idle30); + devInfo.setIdle3080(idle3080); + devInfo.setIdle80(idle80); + }catch (Exception e){ + log.info("获取利用率失败{}",e.getMessage()); + throw new ServerException("获取利用率失败"); + } + return devInfo; + } +} diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml index 686a879..8cf770b 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml @@ -983,11 +983,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml index 85e3bdb..2dec290 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml @@ -476,7 +476,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -538,4 +538,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY lease_count DESC - \ No newline at end of file +