diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java index 02a6dccd..bec2500d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/MaterialMachineServiceImpl.java @@ -1380,17 +1380,6 @@ public class MaterialMachineServiceImpl implements MaterialMachineService { if (CollectionUtils.isEmpty(recordList)) { return recordList; } - // 获取所有领料未结算协议id - List subAgreementIds = materialMachineMapper.getSubAgreementIds(bean); - - // 查询分包商领用数据,不作为库存,作为再用数据 - List subList = materialMachineMapper.getSubInfoList(bean); - // 根据工程id获取分包的在用数量,存储在map集合中 - Map subMap = new HashMap<>(); - subList.forEach(info -> { - String key = getCompositeKey(info.getProId(), info.getTypeId()); - subMap.putIfAbsent(key, info.getAllNum()); - }); // 1. 过滤数据(并行流加速大集合过滤) if (teamData != null) { @@ -1400,7 +1389,7 @@ public class MaterialMachineServiceImpl implements MaterialMachineService { } // 2. 转换参数:将agreementIds(逗号字符串)转为List - List> queryParams = subAgreementIds.stream() + List> queryParams = recordList.stream() .map(record -> { Map param = new HashMap<>(3); param.put("proId", record.getProId()); @@ -1457,12 +1446,6 @@ public class MaterialMachineServiceImpl implements MaterialMachineService { String key = getCompositeKey(record.getProId(), record.getTypeId()); // 从Map获取数据(默认0,避免null) 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.setBusinessNum(businessNum); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml index be68502f..c5ab6a83 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/MaterialMachineMapper.xml @@ -1965,19 +1965,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" subquery1.impUnit AS impUnit, subquery3.idCard AS idCard, CASE - WHEN IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) < 0 - THEN 0 - ELSE IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) - END - AS storeNum, - IFNULL(subquery3.usNum, 0) AS useNum, - ( + WHEN subquery1.typeId = 36 THEN + GREATEST(IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0), 0) + ELSE + IFNULL(subquery3.usNum, 0) + END AS storeNum, CASE - WHEN IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) < 0 - THEN 0 - ELSE IFNULL(subquery1.usNum, 0) - IFNULL(subquery3.usNum, 0) - END + IFNULL(subquery3.usNum, 0) - ) AS supplyNum, + WHEN subquery1.typeId = 36 THEN + IFNULL(subquery3.usNum, 0) + ELSE + IFNULL(subquery1.usNum, 0) + END AS useNum, + IFNULL(subquery1.supplyNum, 0) AS supplyNum, subquery1.proCenter AS departName, subquery1.departName AS impUnitName, CASE mt.manage_type @@ -2005,7 +2004,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mt2.type_name AS typeName, mt2.type_id AS thirdTypeId, 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_id as proId, bp.external_id as externalId, @@ -2013,7 +2013,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bu.bzz_idcard AS idCard, df.project_dept AS proCenter, 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 slt_agreement_info sai 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 data_center.dx_fb_son df ON bp.external_id = df.id WHERE - sai.`status` = '0' - AND sai.is_slt = '0' - AND sai.end_time IS NULL - AND sai.back_id IS NULL + sai.is_slt = '0' AND bp.external_id IS NOT NULL - AND bu.type_id = 36 AND sd.dept_name = #{impUnitName} @@ -2154,6 +2151,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_type mt4 ON mt4.type_id = mt3.parent_id WHERE mt.`level` = 4 and mt.del_flag = '0' 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 subquery1.proId, mt.type_id