This commit is contained in:
mashuai 2025-10-13 23:01:30 +08:00
parent de2fb68076
commit 4f5f2eb0f2
2 changed files with 32 additions and 37 deletions

View File

@ -1380,17 +1380,6 @@ public class MaterialMachineServiceImpl implements MaterialMachineService {
if (CollectionUtils.isEmpty(recordList)) { if (CollectionUtils.isEmpty(recordList)) {
return recordList; return recordList;
} }
// 获取所有领料未结算协议id
List<MaterialProvideNumInfo> subAgreementIds = materialMachineMapper.getSubAgreementIds(bean);
// 查询分包商领用数据不作为库存作为再用数据
List<MaterialRetainedEquipmentInfo> subList = materialMachineMapper.getSubInfoList(bean);
// 根据工程id获取分包的在用数量存储在map集合中
Map<String, BigDecimal> subMap = new HashMap<>();
subList.forEach(info -> {
String key = getCompositeKey(info.getProId(), info.getTypeId());
subMap.putIfAbsent(key, info.getAllNum());
});
// 1. 过滤数据并行流加速大集合过滤 // 1. 过滤数据并行流加速大集合过滤
if (teamData != null) { if (teamData != null) {
@ -1400,7 +1389,7 @@ public class MaterialMachineServiceImpl implements MaterialMachineService {
} }
// 2. 转换参数将agreementIds逗号字符串转为List<String> // 2. 转换参数将agreementIds逗号字符串转为List<String>
List<Map<String, Object>> queryParams = subAgreementIds.stream() List<Map<String, Object>> queryParams = recordList.stream()
.map(record -> { .map(record -> {
Map<String, Object> param = new HashMap<>(3); Map<String, Object> param = new HashMap<>(3);
param.put("proId", record.getProId()); param.put("proId", record.getProId());
@ -1457,12 +1446,6 @@ public class MaterialMachineServiceImpl implements MaterialMachineService {
String key = getCompositeKey(record.getProId(), record.getTypeId()); String key = getCompositeKey(record.getProId(), record.getTypeId());
// 从Map获取数据默认0避免null // 从Map获取数据默认0避免null
BigDecimal businessNum = leaseBusinessMap.getOrDefault(key, BigDecimal.ZERO); BigDecimal businessNum = leaseBusinessMap.getOrDefault(key, BigDecimal.ZERO);
// 从subMap获取在用数量
BigDecimal useNum = subMap.getOrDefault(key, BigDecimal.ZERO);
// 追加在用数量给实际供应数量和已有在用数量
record.setSupplyNum(record.getSupplyNum().add(useNum));
record.setUseNum(record.getUseNum().add(useNum));
// 设置record的businessNum原逻辑保留 // 设置record的businessNum原逻辑保留
record.setBusinessNum(businessNum); record.setBusinessNum(businessNum);

View File

@ -1965,19 +1965,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
subquery1.impUnit AS impUnit, subquery1.impUnit AS impUnit,
subquery3.idCard AS idCard, subquery3.idCard AS idCard,
CASE CASE
WHEN IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) &lt; 0 WHEN subquery1.typeId = 36 THEN
THEN 0 GREATEST(IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0), 0)
ELSE IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) ELSE
END IFNULL(subquery3.usNum, 0)
AS storeNum, END AS storeNum,
IFNULL(subquery3.usNum, 0) AS useNum,
(
CASE CASE
WHEN IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) &lt; 0 WHEN subquery1.typeId = 36 THEN
THEN 0 IFNULL(subquery3.usNum, 0)
ELSE IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) ELSE
END + IFNULL(subquery3.usNum, 0) IFNULL(subquery1.usNum, 0)
) AS supplyNum, END AS useNum,
IFNULL(subquery1.supplyNum, 0) AS supplyNum,
subquery1.proCenter AS departName, subquery1.proCenter AS departName,
subquery1.departName AS impUnitName, subquery1.departName AS impUnitName,
CASE mt.manage_type CASE mt.manage_type
@ -2005,7 +2004,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mt2.type_name AS typeName, mt2.type_name AS typeName,
mt2.type_id AS thirdTypeId, mt2.type_id AS thirdTypeId,
mt.type_name AS typeModelName, mt.type_name AS typeModelName,
SUM(IFNULL( sai.num, 0 )) AS usNum, SUM(CASE WHEN sai.`status` = '0' THEN IFNULL(sai.num, 0) ELSE 0 END) AS usNum,
SUM(IFNULL( sai.num, 0 )) AS supplyNum,
bp.pro_name as proName, bp.pro_name as proName,
bp.pro_id as proId, bp.pro_id as proId,
bp.external_id as externalId, bp.external_id as externalId,
@ -2013,7 +2013,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bu.bzz_idcard AS idCard, bu.bzz_idcard AS idCard,
df.project_dept AS proCenter, df.project_dept AS proCenter,
sd.dept_name AS departName, sd.dept_name AS departName,
GROUP_CONCAT(DISTINCT sai.agreement_id) AS agreementId GROUP_CONCAT(DISTINCT sai.agreement_id) AS agreementId,
bu.type_id AS typeId
FROM FROM
slt_agreement_info sai slt_agreement_info sai
LEFT JOIN ma_type mt ON mt.type_id = sai.type_id LEFT JOIN ma_type mt ON mt.type_id = sai.type_id
@ -2027,12 +2028,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit
LEFT JOIN data_center.dx_fb_son df ON bp.external_id = df.id LEFT JOIN data_center.dx_fb_son df ON bp.external_id = df.id
WHERE WHERE
sai.`status` = '0' sai.is_slt = '0'
AND sai.is_slt = '0'
AND sai.end_time IS NULL
AND sai.back_id IS NULL
AND bp.external_id IS NOT NULL AND bp.external_id IS NOT NULL
AND bu.type_id = 36
<if test="impUnitName != null and impUnitName != ''"> <if test="impUnitName != null and impUnitName != ''">
AND sd.dept_name = #{impUnitName} AND sd.dept_name = #{impUnitName}
</if> </if>
@ -2154,6 +2151,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id
WHERE mt.`level` = 4 and mt.del_flag = '0' WHERE mt.`level` = 4 and mt.del_flag = '0'
AND subquery1.proName IS NOT NULL AND subquery1.proName IS NOT NULL
AND (
IFNULL(subquery1.usNum, 0) > 0
OR (
CASE
WHEN subquery1.typeId = 36 THEN GREATEST(IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0), 0)
ELSE IFNULL(subquery3.usNum, 0)
END
) > 0
OR (
CASE
WHEN subquery1.typeId = 36 THEN IFNULL(subquery3.usNum, 0)
ELSE IFNULL(subquery1.usNum, 0)
END
) > 0
)
GROUP BY GROUP BY
subquery1.proId, subquery1.proId,
mt.type_id mt.type_id