Bläddra i källkod

add:工时管理

caozixuan 1 år sedan
förälder
incheckning
7b16be2052

+ 4 - 1
sop-business/src/main/resources/db/log/caozixuan_update_log.sql

@@ -315,4 +315,7 @@ UPDATE sys_privilege SET related = '2050' WHERE (id = '152');
 -- 2023-09-25
 ALTER TABLE t_b_ding_apply
     ADD COLUMN sop_no VARCHAR(100) NOT NULL COMMENT 'sop编号' AFTER id,
-    ADD COLUMN crm_no VARCHAR(100) NOT NULL COMMENT '派单编号' AFTER sop_no;
+    ADD COLUMN crm_no VARCHAR(100) NOT NULL COMMENT '派单编号' AFTER sop_no;
+
+UPDATE sys_privilege SET property = 'SYS' WHERE (id = '2033');
+UPDATE sys_privilege SET property = 'SYS' WHERE (id = '2035');

+ 44 - 36
sop-business/src/main/resources/mapper/TBDingSubmitMapper.xml

@@ -19,7 +19,7 @@
                  tbua.id AS archivesId,
                  tbua.code AS archivesCode,
                  tbua.name AS archivesName,
-                 CONCAT(tbua.name,'(',tbua.code,')') AS archivesInfo,
+                 CONCAT(tbua.name, '(', tbua.code, ')') AS archivesInfo,
                  tbd.role_type AS roleType,
                  ss.id AS supplierId,
                  ss.name AS supplierName,
@@ -30,8 +30,8 @@
                  tbd.work_hours AS workHours,
                  tbd.violation_days AS violationDays,
                  tbd.ding_exception_count AS dingExceptionCount,
-                 (sdg.reissue_card_count - tbd.submit_exception_count) AS remainCount,
-                 tbd.exception_count AS exceptionCount,
+                 (sdg.reissue_card_count - sec.cnt) AS remainCount,
+                 ec.cnt AS exceptionCount,
                  tbds.id AS submitId,
                  IFNULL(tbds.submit_status, 'WILL_SUBMIT') AS submitStatus,
                  tbds.submit_user_id AS submitUserId,
@@ -46,6 +46,7 @@
                       sop_no,
                       crm_no,
                       user_archives_id,
+                      MAX(user_id) AS user_id,
                       MAX(role_type) AS role_type,
                       MIN(sign_in_time) AS approach_time,
                       MAX(sign_out_time) AS departure_time,
@@ -58,22 +59,25 @@
                       SUM(IF((sign_in_time IS NULL
                           OR sign_out_time IS NULL), 1, 0)) AS violation_days,
                       SUM(IF((sign_in_time IS NULL
-                          OR sign_out_time IS NULL), 1, 0)) AS ding_exception_count,
-                      (SELECT
-                           COUNT(*)
-                       FROM
-                           t_b_ding_apply
-                       WHERE
-                           ding_id = id) AS submit_exception_count,
-                      (SELECT
-                           COUNT(*)
-                       FROM
-                           t_b_ding_apply
-                       WHERE
-                           ding_id = id AND approve IS NULL) AS exception_count
+                          OR sign_out_time IS NULL), 1, 0)) AS ding_exception_count
                   FROM
                       t_b_ding
                   GROUP BY service_id , sop_no , crm_no , user_archives_id) tbd
+                     LEFT JOIN (SELECT
+                                    COUNT(*) AS cnt, sop_no, crm_no, create_id
+                                FROM
+                                    t_b_ding_apply
+                                GROUP BY sop_no , crm_no , create_id) sec ON sec.sop_no = tbd.sop_no
+                     AND sec.crm_no = tbd.crm_no
+                     AND sec.create_id = tbd.user_id
+                     LEFT JOIN (SELECT
+                                    COUNT(*) AS cnt, sop_no, crm_no, create_id
+                                FROM
+                                    t_b_ding_apply
+                                WHERE approve IS NULL
+                                GROUP BY sop_no , crm_no , create_id) ec ON ec.sop_no = tbd.sop_no
+                     AND ec.crm_no = tbd.crm_no
+                     AND ec.create_id = tbd.user_id
                      LEFT JOIN t_b_ding_submit tbds ON tbd.sop_no = tbds.sop_no
                      AND tbd.user_archives_id = tbds.user_archives_id
                      LEFT JOIN t_b_service tbs ON tbd.service_id = tbs.id AND tbs.enable
@@ -154,7 +158,7 @@
                  tbd.service_id AS serviceUnitId,
                  tbs.name AS serviceUnitName,
                  tbd.sop_no AS sopNo,
-                 tbd.crm_no AS crmNO,
+                 tbd.crm_no AS crmNo,
                  sc.name AS customName,
                  sc.province AS province,
                  sc.city AS city,
@@ -163,7 +167,7 @@
                  tbua.id AS archivesId,
                  tbua.code AS archivesCode,
                  tbua.name AS archivesName,
-                 CONCAT(tbua.name,'(',tbua.code,')') AS archivesInfo,
+                 CONCAT(tbua.name, '(', tbua.code, ')') AS archivesInfo,
                  tbd.role_type AS roleType,
                  ss.id AS supplierId,
                  ss.name AS supplierName,
@@ -174,22 +178,23 @@
                  tbd.work_hours AS workHours,
                  tbd.violation_days AS violationDays,
                  tbd.ding_exception_count AS dingExceptionCount,
-                 (sdg.reissue_card_count - tbd.submit_exception_count) AS remainCount,
-                 tbd.exception_count AS exceptionCount,
+                 (sdg.reissue_card_count - sec.cnt) AS remainCount,
+                 ec.cnt AS exceptionCount,
                  tbds.id AS submitId,
                  IFNULL(tbds.submit_status, 'WILL_SUBMIT') AS submitStatus,
                  tbds.submit_user_id AS submitUserId,
                  su.real_name AS submitUserName,
                  tbds.submit_time AS submitTime,
-                tbs.service_lead_id AS serviceUnitLeaderId,
-                tbc.lead_id AS regionManagerId,
-                tbc.region_coordinator_id AS coordinatorId
+                 tbs.service_lead_id AS serviceUnitLeaderId,
+                 tbc.lead_id AS regionManagerId,
+                 tbc.region_coordinator_id AS coordinatorId
              FROM
                  (SELECT
                       service_id,
                       sop_no,
                       crm_no,
                       user_archives_id,
+                      MAX(user_id) AS user_id,
                       MAX(role_type) AS role_type,
                       MIN(sign_in_time) AS approach_time,
                       MAX(sign_out_time) AS departure_time,
@@ -202,22 +207,25 @@
                       SUM(IF((sign_in_time IS NULL
                           OR sign_out_time IS NULL), 1, 0)) AS violation_days,
                       SUM(IF((sign_in_time IS NULL
-                          OR sign_out_time IS NULL), 1, 0)) AS ding_exception_count,
-                      (SELECT
-                           COUNT(*)
-                       FROM
-                           t_b_ding_apply
-                       WHERE
-                           ding_id = id) AS submit_exception_count,
-                      (SELECT
-                           COUNT(*)
-                       FROM
-                           t_b_ding_apply
-                       WHERE
-                           ding_id = id AND approve IS NULL) AS exception_count
+                          OR sign_out_time IS NULL), 1, 0)) AS ding_exception_count
                   FROM
                       t_b_ding
                   GROUP BY service_id , sop_no , crm_no , user_archives_id) tbd
+                     LEFT JOIN (SELECT
+                                    COUNT(*) AS cnt, sop_no, crm_no, create_id
+                                FROM
+                                    t_b_ding_apply
+                                GROUP BY sop_no , crm_no , create_id) sec ON sec.sop_no = tbd.sop_no
+                     AND sec.crm_no = tbd.crm_no
+                     AND sec.create_id = tbd.user_id
+                     LEFT JOIN (SELECT
+                                    COUNT(*) AS cnt, sop_no, crm_no, create_id
+                                FROM
+                                    t_b_ding_apply
+                                WHERE approve IS NULL
+                                GROUP BY sop_no , crm_no , create_id) ec ON ec.sop_no = tbd.sop_no
+                     AND ec.crm_no = tbd.crm_no
+                     AND ec.create_id = tbd.user_id
                      LEFT JOIN t_b_ding_submit tbds ON tbd.sop_no = tbds.sop_no
                      AND tbd.user_archives_id = tbds.user_archives_id
                      LEFT JOIN t_b_service tbs ON tbd.service_id = tbs.id AND tbs.enable