装备管理 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的装备配置率累计值 新型装备 */
private BigDecimal valueD;
private BigDecimal configType;
private BigDecimal companyId;
private Long companyId;
private BigDecimal configValue;
//装备配置率赋值
private BigDecimal configRate;

View File

@ -74,45 +74,64 @@ public class SysDeptServiceImpl implements ISysDeptService {
}
@Override
public List<DeptConfigRateSummary> selectDeptConfigRatePivot(DeptConfigRateSummary entity){
public List<DeptConfigRateSummary> selectDeptConfigRatePivot(DeptConfigRateSummary entity)
{
// 1. 获取配置率数据包含公司设备类型满分值基本配置数量设备名称
List<DeptConfigRateSummary> configList = mapper.selectDeptConfigRatePivot(entity);
// 2. 获取所有设备数据包含设备名称来源自有数量
List<Ownerdomin> ownList = ownerMapper.list(null);
// 3. 构建索引设备名称 List<设备记录>
Map<String, List<Ownerdomin>> ownIndex = ownList.stream()
.collect(Collectors.groupingBy(Ownerdomin::getMaName));
// 3. 构建索引公司ID + 设备名称 设备记录
Map<String, List<Ownerdomin>> ownIndex = new HashMap<>();
for (Ownerdomin device : ownList) {
String key = device.getCompanyId() + "_" + device.getMaName();
ownIndex.computeIfAbsent(key, k -> new ArrayList<>()).add(device);
}
// 4. 构建公司 汇总结果 Map
Map<String, DeptConfigRateSummary> companyMap = new LinkedHashMap<>();
for (DeptConfigRateSummary config : configList) {
String company = config.getCompanyName();
String type = config.getConfigType().toPlainString();
String type = config.getConfigType().toPlainString(); // 0:线路 1:电缆 2:变电
String maName = config.getDeptName();
BigDecimal orderCount = config.getOrderCount();
// 获取所有匹配该设备名称的记录
List<Ownerdomin> matchedDevices = ownIndex.getOrDefault(maName, Collections.emptyList());
Long configCompanyId = config.getCompanyId(); // 当前配置项的公司ID
// 计算评分
BigDecimal score = computeScoreByMaName(orderCount,matchedDevices, config);
// 构建唯一键公司ID + 设备名称
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 d = new DeptConfigRateSummary();
d.setDeptName(company);
d.setCompanyId(config.getCompanyId());
d.setCompanyName(company);
d.setValueA(BigDecimal.ZERO);
d.setValueB(BigDecimal.ZERO);
d.setValueC(BigDecimal.ZERO);
return d;
});
// 设置对应类型得分字段
// 根据 type 累加对应字段的分数
switch (type) {
case "0": dto.setValueA(score); break; // 线路
case "1": dto.setValueB(score); break; // 电缆
case "2": dto.setValueC(score); break; // 变电
case "0": // 线路
dto.setValueA(dto.getValueA().add(score));
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
AND order_stat.parent_type_id = mdc.type_id
WHERE 1 = 1;
WHERE 1 = 1
</select>
@ -184,14 +184,14 @@
LEFT JOIN (
SELECT ma_name, SUM(ma_num) AS own_count
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
) own ON CAST(d.type_id AS CHAR) = own.ma_name
LEFT JOIN (
SELECT ma_name, SUM(ma_num) AS rent_count
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
) 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.type,
t.type_id as maNameId,
m.company_id as companyId,
m.ma_type AS maType,
t.type_name AS maName,
m.model_id AS modelId,
@ -54,6 +55,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="maName != null and maName != ''">
and ma_name like concat('%', #{maName}, '%')
</if>
<if test="companyId!= null and companyId != ''">
and m.company_id = #{companyId}
</if>
</where>
</select>
</mapper>