装备管理 youhua
This commit is contained in:
parent
7e07867d96
commit
cbb674da58
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue