From be90c5ad7af7528872dd0eaeae6c419a5ceedbc3 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期二, 11 三月 2025 16:27:25 +0800
Subject: [PATCH] 角色权限修改

---
 exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml |  180 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 159 insertions(+), 21 deletions(-)

diff --git a/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml b/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml
index 4d36750..ff12ddc 100644
--- a/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml
+++ b/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml
@@ -21,6 +21,13 @@
         <result property="updateTime" column="update_time"/>
         <result property="createBy" column="create_by"/>
         <result property="createTime" column="create_time"/>
+        <result property="operateTypeName" column="operate_type_name"/>
+        <result property="districtName" column="district_name"/>
+    </resultMap>
+
+    <resultMap type="NonCoalCategory" id="NonCoalCategoryResultVO" extends="NonCoalCategoryResult">
+        <result property="operateTypeName" column="operate_type_name"/>
+
     </resultMap>
 
     <sql id="selectNonCoalCategoryVo">
@@ -30,38 +37,90 @@
                subject_name,
                operate_type_id,
                amount,
-               bussiness_code,
+               business_code,
                company_code,
                drawer,
                reviewer,
-               invoicing_company_code, describe, update_by, update_time, create_by, create_time
+               invoicing_company_code,
+               `describe`,
+               update_by,
+               update_time,
+               create_by,
+               create_time
         from non_coal_category
     </sql>
 
     <select id="selectNonCoalCategoryList" parameterType="NonCoalCategory" resultMap="NonCoalCategoryResult">
-        <include refid="selectNonCoalCategoryVo"/>
+        select a.id,
+        a.district_code,
+        a.category_type,
+        a.subject_name,
+        a.operate_type_id,
+        a.amount,
+        a.business_code,
+        a.company_code,
+        a.drawer,
+        a.reviewer,
+        a.invoicing_company_code,
+        a.`describe`,
+        a.update_by,
+        a.update_time,
+        a.create_by,
+        a.create_time,
+        (SELECT GROUP_CONCAT(name SEPARATOR '/') FROM sys_operate_type
+        WHERE FIND_IN_SET(id, (SELECT ancestors FROM sys_operate_type WHERE id = a.operate_type_id)) or id =
+        a.operate_type_id ) operate_type_name,
+        b.name district_name
+        from non_coal_category a
+        left join sys_district b on a.district_code = b.code
         <where>
-            <if test="districtCode != null  and districtCode != ''">and district_code = #{districtCode}</if>
-            <if test="categoryType != null ">and category_type = #{categoryType}</if>
-            <if test="subjectName != null  and subjectName != ''">and subject_name like concat('%', #{subjectName},
+            and a.del_flag = 0
+            <if test="districtCode != null  and districtCode != ''">and a.district_code = #{districtCode}</if>
+            <if test="categoryType != null ">and a.category_type = #{categoryType}</if>
+            <if test="subjectName != null  and subjectName != ''">and a.subject_name like concat('%', #{subjectName},
                 '%')
             </if>
-            <if test="operateTypeId != null ">and operate_type_id = #{operateTypeId}</if>
-            <if test="amount != null ">and amount = #{amount}</if>
-            <if test="bussinessCode != null  and bussinessCode != ''">and bussiness_code = #{bussinessCode}</if>
-            <if test="companyCode != null  and companyCode != ''">and company_code = #{companyCode}</if>
-            <if test="drawer != null  and drawer != ''">and drawer = #{drawer}</if>
-            <if test="reviewer != null  and reviewer != ''">and reviewer = #{reviewer}</if>
-            <if test="invoicingCompanyCode != null  and invoicingCompanyCode != ''">and invoicing_company_code =
+            <if test="operateTypeId != null ">and a.operate_type_id = #{operateTypeId}</if>
+            <if test="amount != null ">and a.amount = #{amount}</if>
+            <if test="businessCode != null  and businessCode != ''">and a.business_code = #{businessCode}</if>
+            <if test="companyCode != null  and companyCode != ''">and a.company_code = #{companyCode}</if>
+            <if test="drawer != null  and drawer != ''">and a.drawer = #{drawer}</if>
+            <if test="reviewer != null  and reviewer != ''">and a.reviewer = #{reviewer}</if>
+            <if test="invoicingCompanyCode != null  and invoicingCompanyCode != ''">and a.invoicing_company_code =
                 #{invoicingCompanyCode}
             </if>
-            <if test="describe != null  and describe != ''">and describe = #{describe}</if>
+            <if test="describe != null  and describe != ''">and a.`describe` = #{describe}</if>
         </where>
+        order by create_time desc
     </select>
 
     <select id="selectNonCoalCategoryById" parameterType="Long" resultMap="NonCoalCategoryResult">
-        <include refid="selectNonCoalCategoryVo"/>
-        where id = #{id}
+        select a.id,
+               a.district_code,
+               a.category_type,
+               a.subject_name,
+               a.operate_type_id,
+               a.amount,
+               a.business_code,
+               a.company_code,
+               a.drawer,
+               a.reviewer,
+               a.invoicing_company_code,
+               a.`describe`,
+               a.update_by,
+               a.update_time,
+               a.create_by,
+               a.create_time,
+               (SELECT GROUP_CONCAT(name SEPARATOR '/')
+                FROM sys_operate_type
+                WHERE FIND_IN_SET(id, (SELECT ancestors FROM sys_operate_type WHERE id = a.operate_type_id))
+                   or id =
+                      a.operate_type_id) operate_type_name,
+               b.name                    district_name
+        from non_coal_category a
+                 left join sys_district b on a.district_code = b.code
+
+        where a.id = #{id}
     </select>
 
     <insert id="insertNonCoalCategory" parameterType="NonCoalCategory" useGeneratedKeys="true" keyProperty="id">
@@ -72,12 +131,12 @@
             <if test="subjectName != null and subjectName != ''">subject_name,</if>
             <if test="operateTypeId != null">operate_type_id,</if>
             <if test="amount != null">amount,</if>
-            <if test="bussinessCode != null and bussinessCode != ''">bussiness_code,</if>
+            <if test="businessCode != null and businessCode != ''">business_code,</if>
             <if test="companyCode != null and companyCode != ''">company_code,</if>
             <if test="drawer != null and drawer != ''">drawer,</if>
             <if test="reviewer != null and reviewer != ''">reviewer,</if>
             <if test="invoicingCompanyCode != null and invoicingCompanyCode != ''">invoicing_company_code,</if>
-            <if test="describe != null">describe,</if>
+            <if test="describe != null">`describe`,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="createBy != null">create_by,</if>
@@ -90,7 +149,7 @@
             <if test="subjectName != null and subjectName != ''">#{subjectName},</if>
             <if test="operateTypeId != null">#{operateTypeId},</if>
             <if test="amount != null">#{amount},</if>
-            <if test="bussinessCode != null and bussinessCode != ''">#{bussinessCode},</if>
+            <if test="businessCode != null and businessCode != ''">#{businessCode},</if>
             <if test="companyCode != null and companyCode != ''">#{companyCode},</if>
             <if test="drawer != null and drawer != ''">#{drawer},</if>
             <if test="reviewer != null and reviewer != ''">#{reviewer},</if>
@@ -112,14 +171,14 @@
             <if test="subjectName != null and subjectName != ''">subject_name = #{subjectName},</if>
             <if test="operateTypeId != null">operate_type_id = #{operateTypeId},</if>
             <if test="amount != null">amount = #{amount},</if>
-            <if test="bussinessCode != null and bussinessCode != ''">bussiness_code = #{bussinessCode},</if>
+            <if test="businessCode != null and businessCode != ''">business_code = #{businessCode},</if>
             <if test="companyCode != null and companyCode != ''">company_code = #{companyCode},</if>
             <if test="drawer != null and drawer != ''">drawer = #{drawer},</if>
             <if test="reviewer != null and reviewer != ''">reviewer = #{reviewer},</if>
             <if test="invoicingCompanyCode != null and invoicingCompanyCode != ''">invoicing_company_code =
                 #{invoicingCompanyCode},
             </if>
-            <if test="describe != null">describe = #{describe},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -138,6 +197,85 @@
         and subject_name = #{subjectName}
         <if test="id != null ">and id != #{id}</if>
     </select>
+    <select id="selectCountCategory" resultType="com.gkhy.exam.pay.dto.rep.NonCategoryCount">
+        SELECT
+            cc.id,
+            sot.name as subject_name,
+            cc.amount,
+            cc.category_type,
+            COUNT( cps.`name` ) num
+        FROM
+            non_coal_category cc
+                LEFT JOIN sys_operate_type sot on cc.operate_type_id = sot.id
+                LEFT JOIN non_coal_pay_category cpc ON cc.id = cpc.category_id
+                LEFT JOIN non_coal_pay cp ON cpc.non_coal_pay_id = cp.id
+                LEFT JOIN non_coal_pay_student cps ON cp.id = cps.non_coal_pay_id
+        WHERE cc.category_type = 2 and cc.del_flag = 0 and cps.del_flag =0 and cp.del_flag = 0 and cps.pay_status = 1
+        <if test="year!=null and year !=''">
+            and cp.year =#{year}
+        </if>
+        <if test="quarter != null">
+            and cp.quarter = #{quarter}
+        </if>
+        <if test="districtCode!=null and districtCode!='' and districtCode != 65">
+            and cc.district_code =#{districtCode}
+        </if>
+        <if test="deptId!=null">
+            and cp.dept_id =#{deptId}
+        </if>
+        GROUP BY
+            cc.id
+    </select>
+    <select id="selectCountTheory" resultType="com.gkhy.exam.pay.dto.rep.CateGoryTheory">
+        WITH filtered_data AS (
+            SELECT
+                cp.id AS pay_id,
+                cp.pay_type,
+                cpc.category_id AS category_id
+            FROM
+                non_coal_pay cp
+                    LEFT JOIN non_coal_pay_category cpc ON cp.id = cpc.non_coal_pay_id
+                    LEFT JOIN non_coal_category cc ON cpc.category_id = cc.id
+            WHERE
+                cc.category_type = 1
+              AND cp.del_flag = 0
+            <if test="year !=null and year!=''">
+                and cp.year = #{year}
+            </if>
+            <if test="quarter!=null">
+                and cp.quarter = #{quarter}
+            </if>
+            <if test="districtCode !=null and districtCode !='' and districtCode != 65 ">
+                and cp.district_code = #{districtCode}
+            </if>
+            <if test="deptId!=null">
+                and cp.dept_id =#{deptId}
+            </if>
+        ),
+             pay_type_data AS (
+                 SELECT
+                     CASE
+                         WHEN fd.pay_type IN (1, 3) THEN '初训理论'
+                         ELSE '复训理论'
+                         END AS pay_type_name,
+                     cps.id AS student_id,
+                     cc.amount
+                 FROM
+                     filtered_data fd
+                         LEFT JOIN non_coal_pay_student cps ON fd.pay_id = cps.non_coal_pay_id
+                         LEFT JOIN non_coal_category cc ON fd.category_id = cc.id
+                 WHERE
+                     cps.del_flag = 0 and cps.pay_status =1
+             )
+        SELECT
+            pay_type_name,
+            COUNT(student_id) AS num,
+            MAX(amount) AS amount
+        FROM
+            pay_type_data
+        GROUP BY
+            pay_type_name
+    </select>
 
     <update id="deleteNonCoalCategoryById" parameterType="Long">
         update non_coal_category

--
Gitblit v1.9.2