装备管理 youhua

This commit is contained in:
lizhenhua 2025-07-03 21:46:57 +08:00
parent 7e07867d96
commit cbb674da58
4 changed files with 41 additions and 18 deletions

View File

@ -27,7 +27,7 @@ public class DeptConfigRateSummary extends BaseEntity {
/** 配置类型D的装备配置率累计值 新型装备 */ /** 配置类型D的装备配置率累计值 新型装备 */
private BigDecimal valueD; private BigDecimal valueD;
private BigDecimal configType; private BigDecimal configType;
private BigDecimal companyId; private Long companyId;
private BigDecimal configValue; private BigDecimal configValue;
//装备配置率赋值 //装备配置率赋值
private BigDecimal configRate; private BigDecimal configRate;

View File

@ -74,45 +74,64 @@ public class SysDeptServiceImpl implements ISysDeptService {
} }
@Override @Override
public List<DeptConfigRateSummary> selectDeptConfigRatePivot(DeptConfigRateSummary entity){ public List<DeptConfigRateSummary> selectDeptConfigRatePivot(DeptConfigRateSummary entity)
{
// 1. 获取配置率数据包含公司设备类型满分值基本配置数量设备名称 // 1. 获取配置率数据包含公司设备类型满分值基本配置数量设备名称
List<DeptConfigRateSummary> configList = mapper.selectDeptConfigRatePivot(entity); List<DeptConfigRateSummary> configList = mapper.selectDeptConfigRatePivot(entity);
// 2. 获取所有设备数据包含设备名称来源自有数量 // 2. 获取所有设备数据包含设备名称来源自有数量
List<Ownerdomin> ownList = ownerMapper.list(null); List<Ownerdomin> ownList = ownerMapper.list(null);
// 3. 构建索引设备名称 List<设备记录> // 3. 构建索引公司ID + 设备名称 设备记录
Map<String, List<Ownerdomin>> ownIndex = ownList.stream() Map<String, List<Ownerdomin>> ownIndex = new HashMap<>();
.collect(Collectors.groupingBy(Ownerdomin::getMaName)); for (Ownerdomin device : ownList) {
String key = device.getCompanyId() + "_" + device.getMaName();
ownIndex.computeIfAbsent(key, k -> new ArrayList<>()).add(device);
}
// 4. 构建公司 汇总结果 Map // 4. 构建公司 汇总结果 Map
Map<String, DeptConfigRateSummary> companyMap = new LinkedHashMap<>(); Map<String, DeptConfigRateSummary> companyMap = new LinkedHashMap<>();
for (DeptConfigRateSummary config : configList) { for (DeptConfigRateSummary config : configList) {
String company = config.getCompanyName(); String company = config.getCompanyName();
String type = config.getConfigType().toPlainString(); String type = config.getConfigType().toPlainString(); // 0:线路 1:电缆 2:变电
String maName = config.getDeptName(); String maName = config.getDeptName();
BigDecimal orderCount = config.getOrderCount(); BigDecimal orderCount = config.getOrderCount();
// 获取所有匹配该设备名称的记录 Long configCompanyId = config.getCompanyId(); // 当前配置项的公司ID
List<Ownerdomin> matchedDevices = ownIndex.getOrDefault(maName, Collections.emptyList());
// 计算评分 // 构建唯一键公司ID + 设备名称
BigDecimal score = computeScoreByMaName(orderCount,matchedDevices, config); String key = configCompanyId + "_" + maName;
// 获取或创建该公司对应的评分对象 // 获取匹配的设备列表
List<Ownerdomin> sameCompanyDevices = ownIndex.getOrDefault(key, Collections.emptyList());
// 计算当前这一项的得分 - 使用同公司设备
BigDecimal score = computeScoreByMaName(orderCount, sameCompanyDevices, config);
// 获取或创建公司维度的统计对象
DeptConfigRateSummary dto = companyMap.computeIfAbsent(company, k -> { DeptConfigRateSummary dto = companyMap.computeIfAbsent(company, k -> {
DeptConfigRateSummary d = new DeptConfigRateSummary(); DeptConfigRateSummary d = new DeptConfigRateSummary();
d.setDeptName(company); d.setDeptName(company);
d.setCompanyId(config.getCompanyId()); d.setCompanyId(config.getCompanyId());
d.setCompanyName(company); d.setCompanyName(company);
d.setValueA(BigDecimal.ZERO);
d.setValueB(BigDecimal.ZERO);
d.setValueC(BigDecimal.ZERO);
return d; return d;
}); });
// 设置对应类型得分字段 // 根据 type 累加对应字段的分数
switch (type) { switch (type) {
case "0": dto.setValueA(score); break; // 线路 case "0": // 线路
case "1": dto.setValueB(score); break; // 电缆 dto.setValueA(dto.getValueA().add(score));
case "2": dto.setValueC(score); break; // 变电 break;
case "1": // 电缆
dto.setValueB(dto.getValueB().add(score));
break;
case "2": // 变电
dto.setValueC(dto.getValueC().add(score));
break;
} }
} }

View File

@ -134,7 +134,7 @@
ON order_stat.dept_id = mdc.dept_id ON order_stat.dept_id = mdc.dept_id
AND order_stat.parent_type_id = mdc.type_id AND order_stat.parent_type_id = mdc.type_id
WHERE 1 = 1; WHERE 1 = 1
</select> </select>
@ -184,14 +184,14 @@
LEFT JOIN ( LEFT JOIN (
SELECT ma_name, SUM(ma_num) AS own_count SELECT ma_name, SUM(ma_num) AS own_count
FROM ma_own_manage FROM ma_own_manage
WHERE type = '2' AND is_active = '0' WHERE type = '2' AND is_active = '0' and company_id=#{companyId}
GROUP BY ma_name GROUP BY ma_name
) own ON CAST(d.type_id AS CHAR) = own.ma_name ) own ON CAST(d.type_id AS CHAR) = own.ma_name
LEFT JOIN ( LEFT JOIN (
SELECT ma_name, SUM(ma_num) AS rent_count SELECT ma_name, SUM(ma_num) AS rent_count
FROM ma_own_manage FROM ma_own_manage
WHERE type = '1' AND is_active = '0' WHERE type = '1' AND is_active = '0' and company_id=#{companyId}
GROUP BY ma_name GROUP BY ma_name
) rent ON CAST(d.type_id AS CHAR) = rent.ma_name ) rent ON CAST(d.type_id AS CHAR) = rent.ma_name

View File

@ -31,6 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
m.id, m.id,
m.type, m.type,
t.type_id as maNameId, t.type_id as maNameId,
m.company_id as companyId,
m.ma_type AS maType, m.ma_type AS maType,
t.type_name AS maName, t.type_name AS maName,
m.model_id AS modelId, m.model_id AS modelId,
@ -54,6 +55,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="maName != null and maName != ''"> <if test="maName != null and maName != ''">
and ma_name like concat('%', #{maName}, '%') and ma_name like concat('%', #{maName}, '%')
</if> </if>
<if test="companyId!= null and companyId != ''">
and m.company_id = #{companyId}
</if>
</where> </where>
</select> </select>
</mapper> </mapper>