diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/controller/SysDeptController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/controller/SysDeptController.java index 64ccec9..6582b82 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/controller/SysDeptController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/controller/SysDeptController.java @@ -11,6 +11,7 @@ import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; import com.bonus.material.equipment.domain.DeptConfigRateSummary; import com.bonus.material.equipment.domain.DeptConfigTypeSummary; import com.bonus.material.equipment.domain.DeptEquipmentConfig; +import com.bonus.material.equipment.domain.EquipmentDetail; import com.bonus.material.equipment.service.ISysDeptService; import com.bonus.system.api.domain.SysDept; import com.bonus.system.api.domain.SysUser; @@ -58,7 +59,6 @@ public class SysDeptController extends BaseController { @SysLog(title = "装备列表", businessType = OperaType.QUERY, logType = 0, module = "系统管理->装备列表", details = "查询装备列表") public TableDataInfo listRate(DeptConfigRateSummary user) { try { - startPage(); List list = service.selectDeptConfigRatePivot(user); return getDataTable(list); } catch (Exception e) { @@ -90,4 +90,15 @@ public class SysDeptController extends BaseController { } return getDataTableError(new ArrayList<>()); } -} + @PostMapping("/detailsInfo") + @SysLog(title = "公司装备详情页面", businessType = OperaType.QUERY, logType = 0, module = "系统管理->装备列表", details = "公司装备详情页面") + public TableDataInfo detailsInfo(@RequestBody EquipmentDetail equipmentDetail) { + try { + List list = service.detailsInfo(equipmentDetail); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/DeptConfigRateSummary.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/DeptConfigRateSummary.java index 445c602..5563ac0 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/DeptConfigRateSummary.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/DeptConfigRateSummary.java @@ -1,16 +1,19 @@ package com.bonus.material.equipment.domain; +import com.bonus.common.core.web.domain.BaseEntity; import lombok.Data; import java.math.BigDecimal; @Data -public class DeptConfigRateSummary { +public class DeptConfigRateSummary extends BaseEntity { /** 部门ID */ private Long deptId; private String deptName; + //公司 + private String companyName; /** 配置类型A的装备配置率累计值 */ private BigDecimal valueA; @@ -20,4 +23,13 @@ public class DeptConfigRateSummary { /** 配置类型C的装备配置率累计值 */ private BigDecimal valueC; + + /** 配置类型D的装备配置率累计值 新型装备 */ + private BigDecimal valueD; + private BigDecimal configType; + private BigDecimal companyId; + private BigDecimal configValue; + //装备配置率赋值 + private BigDecimal configRate; + private BigDecimal orderCount; } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/EquipmentDetail.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/EquipmentDetail.java new file mode 100644 index 0000000..7746e40 --- /dev/null +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/domain/EquipmentDetail.java @@ -0,0 +1,57 @@ +package com.bonus.material.equipment.domain; + +import lombok.Data; + +/** + * 装备配置详情实体类 + */ +@Data +public class EquipmentDetail { + + /** 序号 */ + private Integer index; + + /** 工序 */ + private String process; + + /** 装备名称 */ + private String name; + + /** 基本配置标准(台/套) */ + private String standard; + + /** 装备种类 */ + private String type; + + /** 配置说明 */ + private String desc; + + /** 装备配置率赋值 */ + private String value; + + /** 自有装备数量 */ + private Integer own; + + /** 租赁装备数量 */ + private Integer rent; + + /** 装备实际配置率 */ + private String actual; + + /** 特殊装备配置率 */ + private String special; + + /** 特殊装备原因 */ + private String reason; + //公司 + private String companyId; + private String configType; + /*是否存在新型装备的标识 + * 是 → status = 1,否 → status = 0 + * + * */ + private String ifExist; + private String orderCount; + + +} diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/mapper/SysDeptMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/mapper/SysDeptMapper.java index d1e75ea..53019a9 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/mapper/SysDeptMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/mapper/SysDeptMapper.java @@ -24,4 +24,6 @@ public interface SysDeptMapper { List selectDeptConfigTypeSummary(DeptConfigTypeSummary entity); List getTree(); + + List detailsInfo(EquipmentDetail equipmentDetail); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/ISysDeptService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/ISysDeptService.java index 1fb8f42..4933bdf 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/ISysDeptService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/ISysDeptService.java @@ -23,4 +23,6 @@ public interface ISysDeptService { List selectDeptConfigRatePivot(DeptConfigRateSummary entity); List selectDeptConfigTypeSummary(DeptConfigTypeSummary entity); + + List detailsInfo(EquipmentDetail equipmentDetail); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/SysDeptServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/SysDeptServiceImpl.java index 20ad552..87c4e29 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/SysDeptServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/equipment/service/impl/SysDeptServiceImpl.java @@ -11,6 +11,8 @@ import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.equipment.domain.*; import com.bonus.material.equipment.mapper.SysDeptMapper; import com.bonus.material.equipment.service.ISysDeptService; +import com.bonus.material.owner.domain.Ownerdomin; +import com.bonus.material.owner.mapper.OwnerMapper; import com.bonus.system.api.domain.SysDept; import com.bonus.system.api.domain.SysUser; import org.apache.commons.lang3.ObjectUtils; @@ -20,9 +22,11 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import javax.annotation.Resource; import java.util.stream.Collectors; @Service @@ -32,6 +36,9 @@ public class SysDeptServiceImpl implements ISysDeptService { @Autowired private SysDeptMapper mapper; + @Resource + private OwnerMapper ownerMapper; + @Override public List selectDeptTreeList(SysDept dept) { List depts = SpringUtils.getAopProxy(this).selectDeptList(dept); @@ -67,15 +74,100 @@ public class SysDeptServiceImpl implements ISysDeptService { } @Override - public List selectDeptConfigRatePivot(DeptConfigRateSummary entity) { - return mapper.selectDeptConfigRatePivot(entity); + public List selectDeptConfigRatePivot(DeptConfigRateSummary entity){ + // 1. 获取配置率数据(包含公司、设备类型、满分值、基本配置数量、设备名称) + List configList = mapper.selectDeptConfigRatePivot(entity); + + // 2. 获取所有设备数据(包含设备名称、来源、自有数量) + List ownList = ownerMapper.list(null); + + // 3. 构建索引:设备名称 → List<设备记录> + Map> ownIndex = ownList.stream() + .collect(Collectors.groupingBy(Ownerdomin::getMaName)); + + // 4. 构建公司 → 汇总结果 Map + Map companyMap = new LinkedHashMap<>(); + + for (DeptConfigRateSummary config : configList) { + String company = config.getCompanyName(); + String type = config.getConfigType().toPlainString(); + String maName = config.getDeptName(); + BigDecimal orderCount = config.getOrderCount(); + // 获取所有匹配该设备名称的记录 + List matchedDevices = ownIndex.getOrDefault(maName, Collections.emptyList()); + + // 计算评分 + BigDecimal score = computeScoreByMaName(orderCount,matchedDevices, config); + + // 获取或创建该公司对应的评分对象 + DeptConfigRateSummary dto = companyMap.computeIfAbsent(company, k -> { + DeptConfigRateSummary d = new DeptConfigRateSummary(); + d.setDeptName(company); + d.setCompanyId(config.getCompanyId()); + d.setCompanyName(company); + return d; + }); + + // 设置对应类型得分字段 + switch (type) { + case "0": dto.setValueA(score); break; // 线路 + case "1": dto.setValueB(score); break; // 电缆 + case "2": dto.setValueC(score); break; // 变电 + } + } + + // 5. 返回结果列表 + return new ArrayList<>(companyMap.values()); } + + +private BigDecimal computeScoreByMaName(BigDecimal ordercount,List owns, DeptConfigRateSummary config) { + if (config == null || owns == null || owns.isEmpty()) return BigDecimal.ZERO; + + BigDecimal ownedTotal = BigDecimal.ZERO; + BigDecimal leasedTotal = BigDecimal.ZERO; + + for (Ownerdomin own : owns) { + BigDecimal num = new BigDecimal(own.getMaNum()); + if ("2".equals(own.getType())) { + ownedTotal = ownedTotal.add(num); // 自有 + } else { + leasedTotal = leasedTotal.add(num); // 租赁 + } + } + + BigDecimal base = config.getConfigValue(); // 基本配置数量 + BigDecimal score = config.getConfigRate(); // 满分值 + + if (base == null || base.compareTo(BigDecimal.ZERO) == 0) return BigDecimal.ZERO; + + + // 计算比例 = (自有 + 租赁×0.6 + 订单×0.9) / 基本配置数 + BigDecimal rate = ownedTotal + .add(leasedTotal.multiply(new BigDecimal("0.6"))) + .add(ordercount.multiply(new BigDecimal("0.9"))) + .divide(base, 4, RoundingMode.HALF_UP); + + +// 判断是否超过满分 + if (rate.compareTo(BigDecimal.ONE) > 0) { + return score.setScale(2, RoundingMode.HALF_UP); + } else { + return rate.multiply(score).setScale(2, RoundingMode.HALF_UP); + } +} + @Override public List selectDeptConfigTypeSummary(DeptConfigTypeSummary entity) { return mapper.selectDeptConfigTypeSummary(entity); } + @Override + public List detailsInfo(EquipmentDetail equipmentDetail) { + return mapper.detailsInfo(equipmentDetail); + } + /** * 查询部门管理数据 * diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/controller/OwnerController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/controller/OwnerController.java index bf36a78..43fa92e 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/controller/OwnerController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/controller/OwnerController.java @@ -40,6 +40,9 @@ public class OwnerController extends BaseController { @ApiOperation(value = "自有装备管理新增") @PostMapping("/add") public AjaxResult add(@RequestBody Ownerdomin ownerdomin) throws UnsupportedEncodingException { + if(ownerdomin.getMaNameId() != null){ + ownerdomin.setMaName(ownerdomin.getMaNameId()); + } Integer i = ownerService.add(ownerdomin); if (i > 0){ return AjaxResult.success("新增成功"); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/domain/Ownerdomin.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/domain/Ownerdomin.java index d4d6c30..25366c7 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/domain/Ownerdomin.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/owner/domain/Ownerdomin.java @@ -52,5 +52,7 @@ public class Ownerdomin { @ApiModelProperty(value = "备注") @Excel(name = "备注") private String remark; + @ApiModelProperty(value = "装备名称id") + private String maNameId; } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml index 68acf5e..d03d1c3 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml @@ -104,15 +104,39 @@ + diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/owner/OwnerMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/owner/OwnerMapper.xml index 4614aef..7eb3249 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/owner/OwnerMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/owner/OwnerMapper.xml @@ -12,7 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ma_own_manage set ma_type = #{maType}, - ma_name = #{maName}, + ma_name = #{maNameId}, model_id = #{modelId}, ma_model = #{maModel}, ma_num = #{maNum}, @@ -29,6 +29,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"