Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
zhouxain01 2023-12-25 10:09:58 +08:00
commit c035d39874
2 changed files with 67 additions and 65 deletions

View File

@ -18,6 +18,8 @@ public class TypeTreeNode {
private String num; private String num;
private String unitName;
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
private String level; private String level;

View File

@ -291,7 +291,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
tt.task_status as taskStatus, tt.task_status as taskStatus,
tta.agreement_id as agreementId, tta.agreement_id as agreementId,
GROUP_CONCAT(DISTINCT bad.type_id) as typeId, GROUP_CONCAT(DISTINCT bad.type_id) as typeId,
GROUP_CONCAT(CONCAT_WS('/', IFNULL(mt3.type_name, ''))) AS typeName GROUP_CONCAT(mt2.type_name) AS typeName
FROM FROM
back_apply_info bai back_apply_info bai
LEFT JOIN back_apply_details bad on bad.parent_id=bai.id LEFT JOIN back_apply_details bad on bad.parent_id=bai.id
@ -303,8 +303,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_user us on us.user_id=bai.create_by LEFT JOIN sys_user us on us.user_id=bai.create_by
LEFT JOIN ma_type mt1 ON mt1.type_id=bad.type_id LEFT JOIN ma_type mt1 ON mt1.type_id=bad.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id=mt1.parent_id LEFT JOIN ma_type mt2 ON mt2.type_id=mt1.parent_id
LEFT JOIN ma_type mt3 ON mt3.type_id=mt2.parent_id
LEFT JOIN ma_type mt4 ON mt4.type_id=mt3.parent_id
WHERE WHERE
1=1 1=1
<if test="keyWord != null and keyWord != ''"> <if test="keyWord != null and keyWord != ''">
@ -422,71 +420,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="getUseTypeTree" resultType="com.bonus.sgzb.material.domain.TypeTreeNode"> <select id="getUseTypeTree" resultType="com.bonus.sgzb.material.domain.TypeTreeNode">
WITH RECURSIVE cte AS ( WITH RECURSIVE cte AS (
SELECT SELECT
mt.type_id, mt.type_id,
mt.parent_id, mt.parent_id,
mt.type_name, mt.type_name,
mt.`level`, mt.`level`,
mt4.num mt.unit_name,
FROM mt4.num
ma_type mt FROM
LEFT JOIN ( ma_type mt
SELECT LEFT JOIN (
subquery1.type_id AS typeId, SELECT
subquery1.parent_id , subquery1.type_id AS typeId,
subquery1.typeName typeCode, subquery1.parent_id ,
subquery1.out_num - COALESCE ( subquery2.audit_num, 0 ) AS num subquery1.typeName typeCode,
FROM subquery1.out_num - COALESCE ( subquery2.audit_num, 0 ) AS num
(-- 第一个查询作为子查询 FROM
SELECT (-- 第一个查询作为子查询
mt.type_id, SELECT
mt.parent_id, mt.type_id,
mt.type_name AS typeName, mt.parent_id,
SUM( lod.out_num ) AS out_num mt.type_name AS typeName,
FROM SUM( lod.out_num ) AS out_num
lease_apply_info lai FROM
LEFT JOIN tm_task_agreement tta ON lai.task_id = tta.task_id lease_apply_info lai
LEFT JOIN lease_out_details lod ON lod.parent_id = lai.id LEFT JOIN tm_task_agreement tta ON lai.task_id = tta.task_id
LEFT JOIN tm_task tt ON tt.task_id = tta.task_id LEFT JOIN lease_out_details lod ON lod.parent_id = lai.id
LEFT JOIN ma_type mt ON lod.type_id = mt.type_id LEFT JOIN tm_task tt ON tt.task_id = tta.task_id
WHERE LEFT JOIN ma_type mt ON lod.type_id = mt.type_id
tta.agreement_id = #{agreementId} WHERE
AND tt.task_type = '29' tta.agreement_id = #{agreementId}
AND mt.`level` = '4' AND tt.task_type = '29'
GROUP BY AND mt.`level` = '4'
mt.type_id GROUP BY
) AS subquery1 mt.type_id
LEFT JOIN (-- 第二个查询作为子查询 ) AS subquery1
SELECT LEFT JOIN (-- 第二个查询作为子查询
mt.type_id, SELECT
mt.parent_id, mt.type_id,
mt.type_name, mt.parent_id,
SUM( bad.audit_num ) AS audit_num mt.type_name,
FROM SUM( bad.audit_num ) AS audit_num
back_apply_info bai FROM
LEFT JOIN tm_task tt ON tt.task_id = bai.task_id back_apply_info bai
LEFT JOIN back_apply_details bad ON bad.parent_id = bai.id LEFT JOIN tm_task tt ON tt.task_id = bai.task_id
LEFT JOIN tm_task_agreement tta ON tta.task_id = tt.task_id LEFT JOIN back_apply_details bad ON bad.parent_id = bai.id
LEFT JOIN ma_type mt ON mt.type_id = bad.type_id LEFT JOIN tm_task_agreement tta ON tta.task_id = tt.task_id
WHERE LEFT JOIN ma_type mt ON mt.type_id = bad.type_id
tta.agreement_id = #{agreementId} WHERE
AND tt.task_type = '36' tta.agreement_id = #{agreementId}
AND mt.`level` = '4' AND tt.task_type = '36'
GROUP BY AND mt.`level` = '4'
mt.type_id GROUP BY
) AS subquery2 ON subquery1.type_id = subquery2.type_id mt.type_id
WHERE ) AS subquery2 ON subquery1.type_id = subquery2.type_id
subquery1.out_num - COALESCE ( subquery2.audit_num, 0 )> 0) mt4 on mt4.typeId = mt.type_id WHERE
HAVING num> 0 subquery1.out_num - COALESCE ( subquery2.audit_num, 0 )> 0) mt4 on mt4.typeId = mt.type_id
UNION ALL HAVING num> 0
SELECT ma_type.type_id, ma_type.parent_id,ma_type.type_name as typeCode, ma_type.`level`,0 as num UNION ALL
FROM ma_type SELECT ma_type.type_id, ma_type.parent_id,ma_type.type_name as typeCode, ma_type.`level`,ma_type.unit_name,0 as
JOIN cte ON ma_type.type_id = cte.parent_id num
FROM ma_type
JOIN cte ON ma_type.type_id = cte.parent_id
) )
SELECT type_id as typeId, parent_id as parentId,type_name as typeName,num,`level` SELECT type_id as typeId, parent_id as parentId,type_name as typeName,num,`level`,unit_name as unitName
FROM cte FROM cte
WHERE WHERE
1=1 1=1
<if test="level!=null and level!=''"> <if test="level!=null and level!=''">
<if test="level == 2"> <if test="level == 2">
AND level IN ('1','2') AND level IN ('1','2')