From 059ef7674fc097d74dcb908a152ead05c3551f75 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 28 Aug 2025 15:34:27 +0800 Subject: [PATCH] =?UTF-8?q?SQL=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/person/InOutMapper.xml | 353 +++++++++--------- .../mapper/subeva/SubCompareMapper.xml | 71 ++-- .../mapper/subeva/SubCorepersonMapper.xml | 85 +++-- .../mapper/subeva/SubEndyearMapper.xml | 25 +- .../mapper/subeva/SubProjectMapper.xml | 16 +- 5 files changed, 292 insertions(+), 258 deletions(-) diff --git a/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml b/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml index 9ff5f68..d7e5f3d 100644 --- a/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/InOutMapper.xml @@ -6,330 +6,327 @@ WHERE 1=1 - AND ( po.id in (${params.orgAll}) - or bp.company_id in (${params.orgAll}) + AND ( po."id" IN (${params.orgAll}) + OR bp."company_id" IN (${params.orgAll}) ) - AND ( po.id = #{params.orgId} - or bp.company_id = #{params.orgId} + AND ( po."id" = #{params.orgId} + OR bp."company_id" = #{params.orgId} ) - and bp.company_id = #{params.companyId} + AND bp."company_id" = #{params.companyId} - and bp.id = #{params.proId} + AND bp."id" = #{params.proId} - and bweh.exit_status in (${params.status}) + AND bweh."exit_status" IN (${params.status}) - and bweh.is_force = #{params.isForce} + AND bweh."is_force" = #{params.isForce} - and bw.id_number = #{params.idNumber} + AND bw."id_number" = #{params.idNumber} - and bw.name = #{params.name} + AND bw."name" = #{params.name} - AND bs.id = #{params.subId} + AND bs."id" = #{params.subId} - and bst.id = #{params.teamId} + AND bst."id" = #{params.teamId} - and ( - bw.name like concat('%', #{params.keyWord}, '%') - or td.`value` like concat('%', #{params.keyWord}, '%') - or bst.team_name like concat('%', #{params.keyWord}, '%') + AND ( + bw."name" LIKE ('%' || #{params.keyWord} || '%') + OR td."value" LIKE ('%' || #{params.keyWord} || '%') + OR bst."team_name" LIKE ('%' || #{params.keyWord} || '%') ) - update bm_worker_ein_history set exit_performance = #{evaluate},exit_skill_evaluation = #{exitExamineRemark} - where id_number = #{idNumber} and ein_time = #{einTime} + UPDATE "ynrealname"."bm_worker_ein_history" SET "exit_performance" = #{evaluate}, "exit_skill_evaluation" = #{exitExamineRemark} + WHERE "id_number" = #{idNumber} AND "ein_time" = #{einTime} - INSERT INTO - bm_worker_exit_revoke( - id_number, - project_id, - sub_id, - team_id, - upload_exit_time, - revoke_time + INSERT INTO "ynrealname"."bm_worker_exit_revoke"( + "id_number", + "project_id", + "sub_id", + "team_id", + "upload_exit_time", + "revoke_time" ) - VALUE( + VALUES ( #{idNumber}, #{proId}, #{subId}, #{TeamId}, #{exitTime}, - NOW() + SYSDATE ) - insert into bm_attendance_machine_push(id_number, face_path, attendance_machine_id, operate) - values (#{idNumber}, #{facePhoto}, #{attendanceMachineId}, #{operate}); + INSERT INTO "ynrealname"."bm_attendance_machine_push"("id_number", "face_path", "attendance_machine_id", "operate") + VALUES (#{idNumber}, #{facePhoto}, #{attendanceMachineId}, #{operate}); - replace into bm_attendance_machine_push_history(id_number, attendance_machine_id) values - (#{idNumber}, #{attendanceMachineId}) + MERGE INTO "ynrealname"."bm_attendance_machine_push_history" tgt + USING ( + SELECT #{idNumber} AS "id_number", #{attendanceMachineId} AS "attendance_machine_id" FROM DUAL + ) src + ON (tgt."id_number" = src."id_number" AND tgt."attendance_machine_id" = src."attendance_machine_id") + WHEN MATCHED THEN UPDATE SET tgt."attendance_machine_id" = src."attendance_machine_id" + WHEN NOT MATCHED THEN INSERT ("id_number", "attendance_machine_id") VALUES (src."id_number", src."attendance_machine_id") - update bm_worker_ein_history set exit_time = #{exitTime},exit_status = '0' - where id_number = #{idNumber} and is_active = '1' + UPDATE "ynrealname"."bm_worker_ein_history" SET "exit_time" = #{exitTime},"exit_status" = '0' + WHERE "id_number" = #{idNumber} AND "is_active" = '1' - update bm_worker_ein_history set exit_status = #{exitStatus},exit_examine_user = #{userId},is_furlough_person = 0, + UPDATE "ynrealname"."bm_worker_ein_history" SET "exit_status" = #{exitStatus},"exit_examine_user" = #{userId},"is_furlough_person" = 0, - contract_id = #{contractId}, + "contract_id" = #{contractId}, - exit_time = #{exitTime},exit_examine_time = #{exitTime},exit_examine_remark = #{exitExamineRemark},is_force = '1' - where id_number = #{idNumber} and is_active = 1; - update bm_worker_ein_history set is_active = 0 where id_number = #{idNumber} and is_active = 1; - update bm_worker_contract set is_active = 0 where idCard = #{idNumber}; - update bm_worker_contract_details set is_active = 0 where id_card = #{idNumber}; - update bm_worker_contract_witness set is_active = 0 where id_number = #{idNumber}; - update bm_worker_train set is_active = 0 where id_number = #{idNumber}; - update bm_team_user_relation set is_active = 0 where id_number = #{idNumber} and is_regular_person = '0' and is_active = '1'; - update bm_worker set light_status = 0,is_furlough_person = 0 where id_number = #{idNumber} and is_active = 1; - update bm_worker_training_result set is_active = 0 where id_number = #{idNumber}; + "exit_time" = #{exitTime},"exit_examine_time" = #{exitTime},"exit_examine_remark" = #{exitExamineRemark},"is_force" = '1' + WHERE "id_number" = #{idNumber} AND "is_active" = 1; + UPDATE "ynrealname"."bm_worker_ein_history" SET "is_active" = 0 WHERE "id_number" = #{idNumber} AND "is_active" = 1; + UPDATE "ynrealname"."bm_worker_contract" SET "is_active" = 0 WHERE "id_card" = #{idNumber}; + UPDATE "ynrealname"."bm_worker_contract_details" SET "is_active" = 0 WHERE "id_card" = #{idNumber}; + UPDATE "ynrealname"."bm_worker_contract_witness" SET "is_active" = 0 WHERE "id_number" = #{idNumber}; + UPDATE "ynrealname"."bm_worker_train" SET "is_active" = 0 WHERE "id_number" = #{idNumber}; + UPDATE "ynrealname"."bm_team_user_relation" SET "is_active" = 0 WHERE "id_number" = #{idNumber} AND "is_regular_person" = '0' AND "is_active" = '1'; + UPDATE "ynrealname"."bm_worker" SET "light_status" = 0,"is_furlough_person" = 0 WHERE "id_number" = #{idNumber} AND "is_active" = 1; + UPDATE "ynrealname"."bm_worker_training_result" SET "is_active" = 0 WHERE "id_number" = #{idNumber}; - update bm_worker set ein_status = 0 where id_number = #{idNumber} and is_active = 1; - update sys_user set org_id = '',pro_id = '' where id_number = #{idNumber}; + UPDATE "ynrealname"."bm_worker" SET "ein_status" = 0 WHERE "id_number" = #{idNumber} AND "is_active" = 1; + UPDATE "ynrealname"."sys_user" SET "org_id" = '',"pro_id" = '' WHERE "id_number" = #{idNumber}; - update bm_worker set ein_status = 1,is_furlough_person = 0 where id_number = #{idNumber} and is_active = 1; + UPDATE "ynrealname"."bm_worker" SET "ein_status" = 1,"is_furlough_person" = 0 WHERE "id_number" = #{idNumber} AND "is_active" = 1; UPDATE - bm_worker_ein_history bweh - SET bweh.exit_time = NULL , - bweh.exit_status = '-1' - WHERE bweh.id_number = #{idNumber} + "ynrealname"."bm_worker_ein_history" bweh + SET bweh."exit_time" = NULL , + bweh."exit_status" = '-1' + WHERE bweh."id_number" = #{idNumber} - update bm_worker_furlough_history set rework_time = #{item.reworkTime} where id = #{item.id}; + UPDATE "ynrealname"."bm_worker_furlough_history" SET "rework_time" = #{item.reworkTime} WHERE "id" = #{item.id}; - update bm_worker_red_history set end_time = #{item.endTime} where id = #{item.id}; + UPDATE "ynrealname"."bm_worker_red_history" SET "end_time" = #{item.endTime} WHERE "id" = #{item.id}; - update bm_worker_ein_history set contract_id = #{contractId} where id_number = #{idNumber} and ein_time = #{einTime} + UPDATE "ynrealname"."bm_worker_ein_history" SET "contract_id" = #{contractId} WHERE "id_number" = #{idNumber} AND "ein_time" = #{einTime} SELECT - eva."id" as uuid, - bm."sub_name" AS subName, - td."value" AS evaMonth, + MAX(eva."id") as uuid, + MAX(bm."sub_name") AS subName, + MAX(td."value") AS evaMonth, bm."id", - eva."eva_grade" AS evaScore, - eva."eva_name" AS evaName, - eva."eva_date" AS evaDate, - eva."eva_toal" AS evaToal, - eva."eva_id" as evaId, - eva."eva_year" as evaYear + MAX(eva."eva_grade") AS evaScore, + MAX(eva."eva_name") AS evaName, + MAX(eva."eva_date") AS evaDate, + MAX(eva."eva_toal") AS evaToal, + MAX(eva."eva_id") as evaId, + MAX(eva."eva_year") as evaYear FROM "ynrealname"."bm_subcontractor" bm LEFT JOIN "ynrealname"."t_dict" td ON td."type" = 'quartercheck' and td."value"=#{params.reasonSelect} @@ -54,21 +54,23 @@ SELECT bsc."id" as id, - bp."NAME" as proName, - bs."sub_name" as subName, - bsc."contract_name" as contractName, + MAX(bp."name") as proName, + MAX(bs."sub_name") as subName, + MAX(bsc."contract_name") as contractName, COUNT(bsr."id") AS teamNumber, - td."value" AS evaMonth, - fcpe."eva_grade" AS evaGrade, - fcpe."eva_name" AS evaName, - fcpe."eva_date" AS evaDate, - fcpe."eva_id" as evaId, - fcpe."eva_year" as evaYear, - case WHEN ROUND(sum(fcpe."eva_grade")/ COUNT(bs."sub_name"),2) > 90 then 1 - when ROUND(sum(fcpe."eva_grade")/ COUNT(bs."sub_name"),2) > 80 then 2 - when ROUND(sum(fcpe."eva_grade")/ COUNT(bs."sub_name"),2) > 60 then 3 - when ROUND(sum(fcpe."eva_grade")/ COUNT(bs."sub_name"),2) < 61 then 4 - else 0 - End as status + MAX(td."value") AS evaMonth, + MAX(fcpe."eva_grade") AS evaGrade, + MAX(fcpe."eva_name") AS evaName, + MAX(fcpe."eva_date") AS evaDate, + MAX(fcpe."eva_id") as evaId, + MAX(fcpe."eva_year") as evaYear, + CASE + WHEN COUNT(bs."sub_name") = 0 THEN 0 -- 处理除数为0的情况 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 90 THEN 1 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 80 THEN 2 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 60 THEN 3 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) < 61 THEN 4 + ELSE 0 + END as status FROM "ynrealname"."bm_sub_contract" bsc - LEFT JOIN "ynrealname"."bm_project" bp on bp."id" = bsc."pro_id" and bp."is_active" = '1' - LEFT JOIN "ynrealname"."bm_subcontractor" bs on bs."id" = bsc."sub_id" and bs."is_active" = '1' - LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bsr."sub_contract_id" = bsc."id" AND bsr."type" = '3' and bsr."is_active" = '1' - LEFT JOIN "ynrealname"."t_dict" td ON td."type" = 'monthcheck' and td."is_active" = '1' - LEFT JOIN "ynrealname"."fbeva_core_person_evalu" fcpe ON fcpe."eva_month" = td."value" AND bsc."id" = fcpe."contract_id" and fcpe."eva_year" = #{params.year} - - WHERE bsc."is_active" = '1' and td."value" = #{params.month} and fcpe."eva_date" is not null + LEFT JOIN "ynrealname"."bm_project" bp ON bp."id" = bsc."pro_id" AND bp."is_active" = '1' + LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs."id" = bsc."sub_id" AND bs."is_active" = '1' + LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bsr."sub_contract_id" = bsc."id" AND bsr."type" = '3' AND bsr."is_active" = '1' + LEFT JOIN "ynrealname"."t_dict" td ON td."type" = 'monthcheck' AND td."is_active" = '1' + LEFT JOIN "ynrealname"."fbeva_core_person_evalu" fcpe ON fcpe."eva_month" = td."value" AND bsc."id" = fcpe."contract_id" AND fcpe."eva_year" = #{params.year} + WHERE + bsc."is_active" = '1' + AND td."value" = #{params.month} + AND fcpe."eva_date" IS NOT NULL - AND bp."id" =#{params.proId} + AND bp."id" = #{params.proId} AND bs."sub_name" LIKE concat('%', #{params.subName}, '%') - - GROUP BY - bsc."id", bp."NAME", bs."sub_name", bsc."contract_name", td."value", - fcpe."eva_grade", fcpe."eva_name", fcpe."eva_date", fcpe."eva_id", fcpe."eva_year" - order by status - - having status = #{params.status} + GROUP BY + bsc."id" + + HAVING + CASE + WHEN COUNT(bs."sub_name") = 0 THEN 0 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 90 THEN 1 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 80 THEN 2 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) > 60 THEN 3 + WHEN ROUND(SUM(fcpe."eva_grade") / COUNT(bs."sub_name"), 2) < 61 THEN 4 + ELSE 0 + END = #{params.status} + ORDER BY status OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY @@ -52,7 +62,7 @@