SQL 修改

This commit is contained in:
cwchen 2025-08-29 11:13:50 +08:00
parent 7cbc1b9341
commit bcb3982b2e
2 changed files with 101 additions and 93 deletions

View File

@ -15,6 +15,7 @@ import com.bonus.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
@ -33,6 +34,7 @@ import java.util.zip.ZipOutputStream;
* @author zys * @author zys
*/ */
@Service("salaryStatService") @Service("salaryStatService")
@Slf4j
public class SalaryStatServiceImpl implements SalaryStatService{ public class SalaryStatServiceImpl implements SalaryStatService{
@Resource(name = "salaryStatDao") @Resource(name = "salaryStatDao")

View File

@ -270,101 +270,107 @@
<select id="getSubContractIdByIdNumber" resultType="java.lang.String"> <select id="getSubContractIdByIdNumber" resultType="java.lang.String">
SELECT SELECT
CASE CASE
WHEN count(*) = 0 THEN ( WHEN (SELECT COUNT(*) FROM (
SELECT SELECT "sub_contract_id"
CASE FROM (
WHEN count(*) = 0 THEN ( SELECT "sub_contract_id", "value", "create_time","v"
SELECT FROM "ynrealname"."bm_sub_relation"
bsr.sub_contract_id WHERE "type" = 3
FROM AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("create_time") AND TRUNC("update_time")
( ) bsr
SELECT LEFT JOIN (
id_number, SELECT "id_number", "team_id"
team_id FROM "ynrealname"."bm_worker_ein_history"
FROM WHERE "id_number" = #{idNumber}
"ynrealname"."bm_worker_ein_history" AND "exit_time" IS NULL
WHERE AND "team_id" != 0
id_number = #{idNumber} AND "is_active" = '1'
AND exit_time IS NULL ) bweh ON bweh."team_id" = bsr."v"
AND team_id != 0 LEFT JOIN (
AND is_active = 1 SELECT "team_id"
FROM "ynrealname"."bm_team_user_relation"
WHERE "id_number" = #{idNumber}
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("create_time") AND TRUNC("update_time")
) team ON team."team_id" = bsr."value"
WHERE bweh."team_id" IS NOT NULL
AND team."team_id" IS NOT NULL
ORDER BY bsr."create_time" DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
)) = 0 THEN (
SELECT CASE
WHEN (SELECT COUNT(*) FROM (
SELECT bsr."sub_contract_id"
FROM (
SELECT "id_number", "team_id"
FROM "ynrealname"."bm_worker_ein_history"
WHERE "id_number" = #{idNumber}
AND "team_id" != 0
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("ein_time") AND TRUNC("exit_time")
AND "is_active" = '1'
) a ) a
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bsr."value" = a."team_id"
bsr.value = a.team_id ORDER BY bsr."id" DESC
WHERE OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
bsr.is_active = 1 )) = 0 THEN (
ORDER BY SELECT bsr."sub_contract_id"
bsr.id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY FROM (
SELECT "id_number", "team_id"
FROM "ynrealname"."bm_worker_ein_history"
WHERE "id_number" = #{idNumber}
AND "exit_time" IS NULL
AND "team_id" != 0
AND "is_active" = '1'
) a
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bsr."v" = a."team_id"
WHERE TRIM(bsr."is_active") = '1'
ORDER BY bsr."id" DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
)
ELSE (
SELECT bsr."sub_contract_id"
FROM (
SELECT "id_number", "team_id"
FROM "ynrealname"."bm_worker_ein_history"
WHERE "id_number" = #{idNumber}
AND "team_id" != 0
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("ein_time") AND TRUNC("exit_time")
AND "is_active" = '1'
) a
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bsr."value" = a."team_id"
ORDER BY bsr."id" DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
) )
ELSE sub_contract_id
END END
FROM
(
SELECT
bsr.sub_contract_id
FROM
(
SELECT
id_number,
team_id
FROM
"ynrealname"."bm_worker_ein_history"
WHERE
id_number = #{idNumber}
AND team_id != 0
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC(ein_time)
AND TRUNC(exit_time)
AND is_active = 1
) a
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON
bsr.value = a.team_id
ORDER BY
bsr.id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) a
) )
ELSE a.sub_contract_id ELSE (
SELECT "sub_contract_id"
FROM (
SELECT "sub_contract_id", "value", "create_time","v"
FROM "ynrealname"."bm_sub_relation"
WHERE "type" = 3
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("create_time") AND TRUNC("update_time")
) bsr
LEFT JOIN (
SELECT "id_number", "team_id"
FROM "ynrealname"."bm_worker_ein_history"
WHERE "id_number" = #{idNumber}
AND "exit_time" IS NULL
AND "team_id" != 0
AND "is_active" = '1'
) bweh ON bweh."team_id" = bsr."v"
LEFT JOIN (
SELECT "team_id"
FROM "ynrealname"."bm_team_user_relation"
WHERE "id_number" = #{idNumber}
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC("create_time") AND TRUNC("update_time")
) team ON team."team_id" = bsr."v"
WHERE bweh."team_id" IS NOT NULL
AND team."team_id" IS NOT NULL
ORDER BY bsr."create_time" DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
)
END AS contractId END AS contractId
FROM FROM DUAL;
(
SELECT
sub_contract_id
FROM
(
SELECT
*
FROM
"ynrealname"."bm_sub_relation"
WHERE
TYPE = 3
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC(create_time) AND TRUNC(update_time)) bsr
LEFT JOIN (
SELECT
id_number,
team_id
FROM
"ynrealname"."bm_worker_ein_history"
WHERE
id_number = #{idNumber}
AND exit_time IS NULL
AND team_id != 0
AND is_active = 1)
bweh ON
bweh.team_id = bsr.VALUE
LEFT JOIN (
SELECT
*
FROM
"ynrealname"."bm_team_user_relation"
WHERE
id_number = #{idNumber}
AND TO_DATE(#{currentDay}, 'YYYY-MM-DD') BETWEEN TRUNC(create_time)
AND TRUNC(update_time)) team ON
team.team_id = bsr.VALUE
WHERE
bweh.team_id IS NOT NULL
AND team.team_id IS NOT NULL
ORDER BY
bsr.create_time DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) a
</select> </select>
<select id="getSalaryBySubContractWorkerList" <select id="getSalaryBySubContractWorkerList"