SQL 修改

This commit is contained in:
cwchen 2025-08-28 18:49:53 +08:00
parent 414b6ef953
commit fed39e960b
5 changed files with 636 additions and 472 deletions

View File

@ -130,7 +130,7 @@
<update id="updateRedTimeValidByFFC">
update "ynrealname"."fc_face_contrast" set "is_red_att" = #{params.isValid}
where ID_NUMBER = #{params.idNumber} and PRO_ID = #{params.proId} and CURRENT_DAY = #{params.currentDay}
where "id_number" = #{params.idNumber} and "pro_id" = #{params.proId} and "current_day" = #{params.currentDay}
</update>
<update id="updateRedLightRecord">
update "ynrealname"."bm_worker_red_time" set "payroll_id" = #{id}
@ -142,250 +142,255 @@
</delete>
<select id="getList" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT bsb.id,bsb.company_id AS companyId,bsb.pro_id AS proId,bsb.sub_id AS subId,
bsb."name",bp."name" AS proName,bsb.start_date AS startDate,bs.sub_name AS subName,
bsb.stop_date AS stopDate,bsb.upload_time AS uploadTime,
bsb.remark,bsb.invoice_amount AS invoiceAmount,
bsb.examine_status AS examStatus,bsb.examine_remark AS examRemark,
bsb.grant_status AS grantStatus,pc."NAME" AS companyName,
bsb.is_active AS isActive,COUNT(sbud.id_number) AS personNum,
ROUND(SUM(sbud.payable_amount),2) AS actualMoney,
ROUND(SUM(sbud.payin_amount),2) AS shouldMoney,
su.username AS uploadUser FROM "ynrealname"."bm_salary_book" AS bsb
LEFT JOIN "ynrealname"."bm_project" bp ON bsb.pro_id = bp.id
LEFT JOIN "ynrealname"."pm_company" pc ON bsb.company_id = pc.ID
LEFT JOIN "ynrealname"."salary_book_upload_details" sbud ON bsb.id = sbud.salary_id
LEFT JOIN "ynrealname"."sys_user" su ON bsb.upload_user = su.id
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bsb.sub_id = bs.id AND bs.is_active = '1'
WHERE bsb.is_active = '1' AND sbud."name" IS NOT NULL
SELECT bsb."id", bsb."company_id" AS companyId, bsb."pro_id" AS proId, bsb."sub_id" AS subId,
bsb."name", bp."name" AS proName, bsb."start_date" AS startDate, bs."sub_name" AS subName,
bsb."stop_date" AS stopDate, bsb."upload_time" AS uploadTime,
bsb."remark", bsb."invoice_amount" AS invoiceAmount,
bsb."examine_status" AS examStatus, bsb."examine_remark" AS examRemark,
bsb."grant_status" AS grantStatus, pc."name" AS companyName,
bsb."is_active" AS isActive, COUNT(sbud."id_number") AS personNum,
ROUND(SUM(sbud."payable_amount"), 2) AS actualMoney,
ROUND(SUM(sbud."payin_amount"), 2) AS shouldMoney,
su."username" AS uploadUser
FROM "ynrealname"."bm_salary_book" bsb
LEFT JOIN "ynrealname"."bm_project" bp ON bsb."pro_id" = bp."id"
LEFT JOIN "ynrealname"."pm_company" pc ON bsb."company_id" = pc."id"
LEFT JOIN "ynrealname"."salary_book_upload_details" sbud ON bsb."id" = sbud."salary_id"
LEFT JOIN "ynrealname"."sys_user" su ON bsb."upload_user" = su."id"
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bsb."sub_id" = bs."id" AND bs."is_active" = '1'
WHERE bsb."is_active" = '1' AND sbud."name" IS NOT NULL
<if test='params.html != null and params.html != "" '>
AND (
bsb.examine_status like CONCAT('%','1','%') or
bsb.examine_status like CONCAT('%','3','%') or
bsb.examine_status like CONCAT('%','5','%') or
bsb.examine_status like CONCAT('%','7','%')
INSTR(bsb."examine_status", '1') > 0 OR
INSTR(bsb."examine_status", '3') > 0 OR
INSTR(bsb."examine_status", '5') > 0 OR
INSTR(bsb."examine_status", '7') > 0
)
</if>
<if test='params.keyWord != null and params.keyWord != "" '>
AND (
bs.sub_name like CONCAT('%',#{params.keyWord},'%') or
bp."name" like CONCAT('%',#{params.keyWord},'%')
bs."sub_name" like ('%' || #{params.keyWord} || '%') OR
bp."name" like ('%' || #{params.keyWord} || '%')
)
</if>
<if test='params.proId != null and params.proId != "" '>
AND bp.id = #{params.proId}
AND bp."id" = #{params.proId}
</if>
GROUP BY bsb.id, bsb.company_id, bsb.pro_id, bsb.sub_id, bsb."name", bp."name", bsb.start_date, bs.sub_name, bsb.stop_date, bsb.upload_time, bsb.remark, bsb.invoice_amount, bsb.examine_status, bsb.examine_remark, bsb.grant_status, pc."NAME", bsb.is_active, su.username
ORDER BY bsb.upload_time DESC
GROUP BY bsb."id", bsb."company_id", bsb."pro_id", bsb."sub_id", bsb."name", bp."name", bsb."start_date", bs."sub_name", bsb."stop_date", bsb."upload_time", bsb."remark", bsb."invoice_amount", bsb."examine_status", bsb."examine_remark", bsb."grant_status", pc."name", bsb."is_active", su."username"
ORDER BY bsb."upload_time" DESC
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY
</select>
<select id="getCount" resultType="java.lang.Integer">
SELECT count(DISTINCT(bsb.id)) FROM "ynrealname"."bm_salary_book" AS bsb
LEFT JOIN "ynrealname"."bm_project" bp ON bsb.pro_id = bp.id
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bsb.sub_id = bs.id AND bs.is_active = '1'
LEFT JOIN "ynrealname"."salary_book_upload_details" sbud ON bsb.id = sbud.salary_id
WHERE bsb.is_active = '1' AND sbud."name" IS NOT NULL
SELECT count(DISTINCT(bsb."id"))
FROM "ynrealname"."bm_salary_book" bsb
LEFT JOIN "ynrealname"."bm_project" bp ON bsb."pro_id" = bp."id"
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bsb."sub_id" = bs."id" AND bs."is_active" = '1'
LEFT JOIN "ynrealname"."salary_book_upload_details" sbud ON bsb."id" = sbud."salary_id"
WHERE bsb."is_active" = '1' AND sbud."name" IS NOT NULL
<if test='params.html != null and params.html != "" '>
AND (
bsb.examine_status like CONCAT('%','1','%') or
bsb.examine_status like CONCAT('%','3','%') or
bsb.examine_status like CONCAT('%','5','%') or
bsb.examine_status like CONCAT('%','7','%')
INSTR(bsb."examine_status", '1') > 0 OR
INSTR(bsb."examine_status", '3') > 0 OR
INSTR(bsb."examine_status", '5') > 0 OR
INSTR(bsb."examine_status", '7') > 0
)
</if>
<if test='params.keyWord != null and params.keyWord != "" '>
AND (
bs.sub_name like CONCAT('%',#{params.keyWord},'%') or
bp."name" like CONCAT('%',#{params.keyWord},'%')
bs."sub_name" like ('%' || #{params.keyWord} || '%') OR
bp."name" like ('%' || #{params.keyWord} || '%')
)
</if>
<if test='params.proId != null and params.proId != "" '>
AND bp.id = #{params.proId}
AND bp."id" = #{params.proId}
</if>
</select>
<select id="getExportViewList" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
bs.sub_name AS subName,
bs."sub_name" AS subName,
bp."name" AS proName,
sbud.pro_id,
pay_month,
sbud."pro_id",
sbud."pay_month",
sbud."name",
sbud.id_number AS idNumber,
sbud.bank_name AS bankName,
bank_number AS bankCard,
sbud.teamMan,
sbud.work_type AS postName,
sbud.salary_calc_type,
sbud.salary_calc_sta,
sbud.work_situation,
sbud.phone,
sbud.base_salary AS baseSalary,
sbud.payin_amount AS shouldMoney,
sbud.payable_amount AS actualMoney,
sbud.remark
sbud."id_number" AS idNumber,
sbud."bank_name" AS bankName,
sbud."bank_number" AS bankCard,
sbud."teamMan",
sbud."work_type" AS postName,
sbud."salary_calc_type",
sbud."salary_calc_sta",
sbud."work_situation",
sbud."phone",
sbud."base_salary" AS baseSalary,
sbud."payin_amount" AS shouldMoney,
sbud."payable_amount" AS actualMoney,
sbud."remark"
FROM
"ynrealname"."salary_book_upload_details" AS sbud
LEFT JOIN "ynrealname"."bm_project" bp ON bp.id = sbud.pro_id AND bp.is_active = '1'
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs.id = sbud.sub_id AND bs.is_active = '1'
"ynrealname"."salary_book_upload_details" sbud
LEFT JOIN "ynrealname"."bm_project" bp ON bp."id" = sbud."pro_id" AND bp."is_active" = '1'
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs."id" = sbud."sub_id" AND bs."is_active" = '1'
WHERE
sbud.salary_id = #{params.id}
sbud."salary_id" = #{params.id}
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY
</select>
<select id="getExportViewCount" resultType="java.lang.Integer">
SELECT count(id_number)
SELECT count("id_number")
FROM
"ynrealname"."salary_book_upload_details"
WHERE
salary_id = #{params.id}
"salary_id" = #{params.id}
</select>
<select id="getExamViewList" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
sbud.id_number AS idNumber,
sbud."id_number" AS idNumber,
sbud."name",
sbud.bank_number AS bankCard,
sbud.bank_name AS bankName,
sbud.phone,
sbud.work_type AS workType,
sbud.salary_calc_type AS salaryCalcType,
sbud.salary_calc_sta AS salaryCalcSta,
sbud.work_situation AS workSituation,
sbud.base_salary AS baseSalary,
sbud.reward_salary AS rewardSalary,
sbud.payin_amount AS shouldMoney,
sbud.tax_salary AS taxSalary,
sbud.teamMan,
sbud.payable_amount AS actualMoney,
sbud.remark
FROM "ynrealname"."salary_book_upload_details" AS sbud
WHERE sbud.salary_id = #{params.id}
sbud."bank_number" AS bankCard,
sbud."bank_name" AS bankName,
sbud."phone",
sbud."work_type" AS workType,
sbud."salary_calc_type" AS salaryCalcType,
sbud."salary_calc_sta" AS salaryCalcSta,
sbud."work_situation" AS workSituation,
sbud."base_salary" AS baseSalary,
sbud."reward_salary" AS rewardSalary,
sbud."payin_amount" AS shouldMoney,
sbud."tax_salary" AS taxSalary,
sbud."teamMan",
sbud."payable_amount" AS actualMoney,
sbud."remark"
FROM "ynrealname"."salary_book_upload_details" sbud
WHERE sbud."salary_id" = #{params.id}
<if test="params.keyWord != null and params.keyWord != ''">
and sbud."name" like concat('%', #{params.keyWord}, '%')
and sbud."name" like ('%' || #{params.keyWord} || '%')
</if>
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY
</select>
<select id="getExamViewListCount" resultType="java.lang.Integer">
SELECT count(*)
FROM "ynrealname"."salary_book_upload_details" AS sbud
WHERE sbud.salary_id = #{params.id}
FROM "ynrealname"."salary_book_upload_details" sbud
WHERE sbud."salary_id" = #{params.id}
<if test="params.keyWord != null and params.keyWord != ''">
and sbud."name" like concat('%', #{params.keyWord}, '%')
and sbud."name" like ('%' || #{params.keyWord} || '%')
</if>
</select>
<select id="getGenerateList" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
ffc.ID_NUMBER as idNumber,
bw."name",
bw.phone,
ffc.PRO_ID as proId,
bwc.wageApprovedWay as salaryCalcType,
bwc.wageCriterion as salaryCalcSta,
bwb.BANK_CARD as bankCard,
bwb.BANK_NAME as bankName,
bwb.ROLL_BANK_NAME as bankBrank,
sdd."value" as workType,
count(DISTINCT ffc.CURRENT_DAY) AS workDays,
bwr.EIN_TIME einTime,
bwr.EXIT_TIME exitTime,
bwc.wageApprovedWay wageApprovedWay,
bwc.wageCriterion wageCriterion,
bsc.sub_id AS subId
ffc.id_number as idNumber,
MAX(bw."name"),
MAX(bw."phone"),
MAX(ffc."pro_id") as proId,
MAX(bwc."wageApprovedWay") as salaryCalcType,
MAX(bwc."wageCriterion") as salaryCalcSta,
MAX(bwb."bank_card") as bankCard,
MAX(bwb."bank_name") as bankName,
MAX(bwb."roll_bank_name") as bankBrank,
MAX(sdd."value") as workType,
count(DISTINCT ffc."current_day") AS workDays,
MAX(bwr."ein_time") einTime,
MAX(bwr."exit_time") exitTime,
MAX(bwc."wageApprovedWay") wageApprovedWay,
MAX(bwc."wageCriterion") wageCriterion,
MAX(bsc."sub_id") AS subId
FROM
"ynrealname"."fc_face_contrast" ffc
LEFT JOIN "ynrealname"."bm_team_user_relation" btur ON btur.id_number = ffc.ID_NUMBER and btur.is_active = '1'
LEFT JOIN "ynrealname"."bm_sub_team" bst ON btur.team_id = bst.id and bst.is_active = '1'
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bst.id = bsr."value" and bsr.is_active = '1' and bsr.type = '3'
LEFT JOIN "ynrealname"."bm_sub_contract" bsc ON bsr.sub_contract_id = bsc.id and bsc.is_active = '1' AND bsc.sub_id =
LEFT JOIN "ynrealname"."bm_team_user_relation" btur ON btur."id_number" = ffc."id_number" and btur."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_team" bst ON btur."team_id" = bst."id" and bst."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bst."id" = bsr."value" and bsr."is_active" = '1' and bsr."type" = '3'
LEFT JOIN "ynrealname"."bm_sub_contract" bsc ON bsr."sub_contract_id" = bsc."id" and bsc."is_active" = '1' AND bsc."sub_id" =
#{params.subId}
LEFT JOIN "ynrealname"."bm_worker" bw ON bw.id_number = ffc.ID_NUMBER AND bw.IS_ACTIVE = '1'
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bwc.idCard = ffc.ID_NUMBER AND bwc.is_active = '1'
LEFT JOIN "ynrealname"."bm_worker_payroll" bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER AND bwp.is_active = '1'
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb.ID_NUMBER = ffc.ID_NUMBER AND bwb.is_active = '1'
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER AND bwr.is_active = '1'
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd.id = bwr.POST_ID AND sdd.is_active = '1'
LEFT JOIN "ynrealname"."bm_worker" bw ON bw."id_number" = ffc."id_number" AND bw."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bwc."idCard" = ffc."id_number" AND bwc."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_payroll" bwp ON bwp."id_number" = ffc."id_number" AND bwp."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = ffc."id_number" AND bwb."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr."id_number" = ffc."id_number" AND bwr."is_active" = '1'
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd."id" = bwr."post_id" AND sdd."is_active" = '1'
WHERE ffc.is_active = '1' AND ffc.CURRENT_DAY BETWEEN #{params.startDate} and #{params.stopDate} AND bsc.sub_id
WHERE ffc.is_active = '1' AND ffc."current_day" BETWEEN #{params.startDate} and #{params.stopDate} AND bsc."sub_id"
IS NOT NULL
AND bsc.pro_id = #{params.proId}
AND bsc.sub_id = #{params.subId}
AND bsc."pro_id" = #{params.proId}
AND bsc."sub_id" = #{params.subId}
<if test='params.keyWord != null and params.keyWord != "" '>
AND (
ffc.ID_NUMBER like CONCAT('%',#{params.keyWord},'%') or
bw."name" like CONCAT('%',#{params.keyWord},'%')
ffc."id_number" like ('%' || #{params.keyWord} || '%') or
bw."name" like ('%' || #{params.keyWord} || '%')
)
</if>
GROUP BY ffc.ID_NUMBER, bw."name", bw.phone, ffc.PRO_ID, bwc.wageApprovedWay, bwc.wageCriterion, bwb.BANK_CARD, bwb.BANK_NAME, bwb.ROLL_BANK_NAME, sdd."value", bwr.EIN_TIME, bwr.EXIT_TIME, bsc.sub_id
GROUP BY ffc."id_number"
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY
</select>
<select id="getGenerateListCount" resultType="java.lang.Integer">
SELECT count(*) FROM "ynrealname"."fc_face_contrast" ffc
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN "ynrealname"."bm_worker_payroll" bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd.id = bwr.POST_ID
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bwc."idCard" = ffc."id_number"
LEFT JOIN "ynrealname"."bm_worker_payroll" bwp ON bwp."id_number" = ffc."id_number"
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = ffc."id_number"
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr."id_number" = ffc."id_number"
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd."id" = bwr."post_id"
</select>
<select id="getBookIdByTime" resultType="java.lang.Integer">
select id from "ynrealname"."bm_salary_book" where upload_time = #{uploadTime}
select "id" from "ynrealname"."bm_salary_book" where "upload_time" = #{uploadTime}
</select>
<select id="getEinRecordByProSub" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT COUNT(id_number) as number,id_number AS idNumber,ein_time AS einTime,CASE WHEN exit_status = '1' THEN exit_time ELSE NULL END AS exitTime,is_active FROM "ynrealname"."bm_worker_ein_history" bweh
WHERE bweh.project_id = #{proId}
AND bweh.sub_id = #{subId}
GROUP BY id_number,ein_time, CASE WHEN exit_status = '1' THEN exit_time ELSE NULL END, is_active
SELECT COUNT("id_number") as number,"id_number" AS idNumber,"ein_time" AS einTime,
CASE WHEN "exit_status" = '1' THEN "exit_time" ELSE NULL END AS exitTime,
"is_active"
FROM "ynrealname"."bm_worker_ein_history" bweh
WHERE bweh."project_id" = #{proId}
AND bweh."sub_id" = #{subId}
GROUP BY "id_number","ein_time"
</select>
<select id="getEinRecordInfoByIdNumber" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
ffc.ID_NUMBER AS idNumber,
bw.`name`,
ffc.id_number AS idNumber,
bw."name",
bw.phone,
ffc.PRO_ID AS proId,
ffc.pro_id AS proId,
bwc.wageApprovedWay AS salaryCalcType,
bwc.wageCriterion AS salaryCalcSta,
bwb.BANK_CARD AS bankCard,
bwb.BANK_NAME AS bankName,
bwb.ROLL_BANK_NAME AS bankBrank,
sdd.`value` AS workType,
count( DISTINCT ffc.CURRENT_DAY ) AS workDays,
bwr.EIN_TIME einTime,
bwr.EXIT_TIME exitTime,
bwb.bank_card AS bankCard,
bwb.bank_name AS bankName,
bwb.roll_bank_name AS bankBrank,
sdd."value" AS workType,
count( DISTINCT ffc.current_day ) AS workDays,
bwr.ein_time einTime,
bwr.exit_time exitTime,
bwc.wageApprovedWay wageApprovedWay,
bwc.wageCriterion wageCriterion,
bsc.sub_id AS subId
FROM
fc_face_contrast ffc
LEFT JOIN bm_team_user_relation btur ON btur.id_number = ffc.ID_NUMBER AND btur.is_active = '1'
LEFT JOIN bm_sub_team bst ON btur.team_id = bst.id AND bst.is_active = '1'
LEFT JOIN bm_sub_relation bsr ON bst.id = bsr.`value` AND bsr.is_active = '1' AND bsr.type = '3'
LEFT JOIN bm_sub_contract bsc ON bsr.sub_contract_id = bsc.id AND bsc.is_active = '1' AND bsc.sub_id = '24'
LEFT JOIN bm_worker bw ON bw.id_number = ffc.ID_NUMBER AND bw.IS_ACTIVE = '1'
LEFT JOIN bm_worker_contract bwc ON bwc.idCard = ffc.ID_NUMBER AND bwc.is_active = '1'
LEFT JOIN bm_worker_payroll bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER AND bwp.is_active = '1'
LEFT JOIN bm_worker_bank bwb ON bwb.ID_NUMBER = ffc.ID_NUMBER AND bwb.is_active = '1'
LEFT JOIN bm_worker_ein_history bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER AND bwr.is_active = '1'
LEFT JOIN t_dict sdd ON sdd.id = bwr.POST_ID AND sdd.is_active = '1'
"ynrealname"."fc_face_contrast" ffc
LEFT JOIN "ynrealname"."bm_team_user_relation" btur ON btur."id_number" = ffc."id_number" AND btur."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_team" bst ON btur."team_id" = bst."id" AND bst."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bst."id" = bsr."value" AND bsr."is_active" = '1' AND bsr."type" = '3'
LEFT JOIN "ynrealname"."bm_sub_contract" bsc ON bsr."sub_contract_id" = bsc."id" AND bsc."is_active" = '1' AND bsc."sub_id" = '24'
LEFT JOIN "ynrealname"."bm_worker" bw ON bw."id_number" = ffc."id_number" AND bw."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bwc."idCard" = ffc."id_number" AND bwc."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_payroll" bwp ON bwp."id_number" = ffc."id_number" AND bwp."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = ffc."id_number" AND bwb."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr."id_number" = ffc."id_number" AND bwr."is_active" = '1'
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd."id" = bwr."post_id" AND sdd."is_active" = '1'
WHERE
ffc.is_active = '1'
AND ffc.ID_NUMBER in(
ffc."is_active" = '1'
AND ffc."id_number" in(
<foreach collection="list" separator="," item="item">
#{item.idNumber}
</foreach>)
AND
<foreach collection="list" index="index" item="obj" open="(" separator="or" close=")">
(ffc.CURRENT_DAY BETWEEN #{obj.startDate} AND #{obj.stopDate})
(ffc."current_day" BETWEEN #{obj.startDate} AND #{obj.stopDate})
</foreach>
AND bsc.sub_id IS NOT NULL
AND bsc."sub_id" IS NOT NULL
GROUP BY
ffc.ID_NUMBER
ffc."id_number"
</select>
<select id="getEinRecordInfoByIdNumbers" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
@ -395,35 +400,43 @@
FROM
(
SELECT
ffc.ID_NUMBER AS idNumber,
bw.`name`,
bw.phone,
ffc.PRO_ID AS proId,
bwc.wageApprovedWay AS salaryCalcType,
bwc.wageCriterion AS salaryCalcSta,
bwb.BANK_CARD AS bankCard,
bwb.BANK_NAME AS bankName,
bwb.ROLL_BANK_NAME AS bankBrank,
sdd.`value` AS workType,
ffc.CURRENT_DAY AS workDay,
bwr.EIN_TIME einTime,
bwr.EXIT_TIME exitTime,
bwc.wageApprovedWay wageApprovedWay,
bwc.wageCriterion wageCriterion,
bsc.sub_id AS subId
ffc."id_number" AS idNumber,
bw."name",
bw."phone",
ffc."pro_id" AS proId,
bwc."wageApprovedWay" AS salaryCalcType,
bwc."wageCriterion" AS salaryCalcSta,
bwb."bank_card" AS bankCard,
bwb."bank_name" AS bankName,
bwb."roll_bank_name" AS bankBrank,
sdd."value" AS workType,
ffc."current_day" AS workDay,
bwr."ein_time" einTime,
bwr."exit_time" exitTime,
bwc."wageApprovedWay" wageApprovedWay,
bwc."wageCriterion" wageCriterion,
bsc."sub_id" AS subId
FROM
( SELECT * FROM fc_face_contrast WHERE CURRENT_DAY BETWEEN #{obj.startDate} AND #{obj.stopDate} AND is_active = '1' AND ID_NUMBER = #{obj.idNumber} GROUP BY
CURRENT_DAY,attendance_type) ffc
LEFT JOIN bm_team_user_relation btur ON btur.id_number = #{obj.idNumber} AND btur.is_active = '1'
LEFT JOIN bm_sub_team bst ON btur.team_id = bst.id AND bst.is_active = '1'
LEFT JOIN bm_sub_relation bsr ON bst.id = bsr.`value` AND bsr.is_active = '1' AND bsr.type = '3'
LEFT JOIN bm_sub_contract bsc ON bsr.sub_contract_id = bsc.id AND bsc.is_active = '1' AND bsc.sub_id = #{params.subId}
LEFT JOIN bm_worker bw ON bw.id_number = #{obj.idNumber} AND bw.IS_ACTIVE = '1'
LEFT JOIN (SELECT * FROM bm_worker_contract WHERE idCard = #{obj.idNumber} AND LEFT(upload_time,10) &lt;= #{obj.stopDate} ORDER BY upload_time DESC LIMIT 1) bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN (SELECT * FROM bm_worker_payroll WHERE ID_NUMBER = #{obj.idNumber} LIMIT 1) bwp ON bwp.ID_NUMBER = #{obj.idNumber} AND bwp.is_active = '1'
LEFT JOIN bm_worker_bank bwb ON bwb.ID_NUMBER = #{obj.idNumber} AND bwb.is_active = '1'
LEFT JOIN bm_worker_ein_history bwr ON bwr.ID_NUMBER = #{obj.idNumber} AND bwr.is_active = '1'
LEFT JOIN t_dict sdd ON sdd.id = bwr.POST_ID AND sdd.is_active = '1'
( SELECT * FROM "ynrealname"."fc_face_contrast" WHERE "current_day" BETWEEN #{obj.startDate} AND #{obj.stopDate} AND "is_active" = '1' AND "id_number" = #{obj.idNumber} GROUP BY
"current_day","attendance_type") ffc
LEFT JOIN "ynrealname"."bm_team_user_relation" btur ON btur."id_number" = #{obj.idNumber} AND btur."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_team" bst ON btur."team_id" = bst."id" AND bst."is_active" = '1'
LEFT JOIN "ynrealname"."bm_sub_relation" bsr ON bst."id" = bsr."value" AND bsr."is_active" = '1' AND bsr."type" = '3'
LEFT JOIN "ynrealname"."bm_sub_contract" bsc ON bsr."sub_contract_id" = bsc."id" AND bsc."is_active" = '1' AND bsc."sub_id" = #{params.subId}
LEFT JOIN "ynrealname"."bm_worker" bw ON bw."id_number" = #{obj.idNumber} AND bw."is_active" = '1'
LEFT JOIN (
SELECT * FROM "ynrealname"."bm_worker_contract"
WHERE "idCard" = #{obj.idNumber} AND SUBSTR("upload_time",1,10) &lt;= #{obj.stopDate}
ORDER BY upload_time DESC FETCH FIRST 1 ROWS ONLY
) bwc ON bwc."idCard" = ffc."id_number"
LEFT JOIN (
SELECT * FROM "ynrealname"."bm_worker_payroll"
WHERE "id_number" = #{obj.idNumber}
FETCH FIRST 1 ROWS ONLY
) bwp ON bwp."id_number" = #{obj.idNumber} AND bwp."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = #{obj.idNumber} AND bwb."is_active" = '1'
LEFT JOIN "ynrealname"."bm_worker_ein_history" bwr ON bwr."id_number" = #{obj.idNumber} AND bwr."is_active" = '1'
LEFT JOIN "ynrealname"."t_dict" sdd ON sdd.id = bwr.POST_ID AND sdd.is_active = '1'
) a
GROUP BY
idNumber
@ -433,18 +446,17 @@
select
bweh.id_number as idNumber,
bweh.ein_time as einTime,
IF(bweh.exit_status = '1',IF(bweh.exit_examine_time is null,bweh.exit_time,bweh.exit_examine_time),NULL) AS
exitTime,
CASE WHEN bweh.exit_status = '1' THEN (CASE WHEN bweh.exit_examine_time is null THEN bweh.exit_time ELSE bweh.exit_examine_time END) ELSE NULL END AS exitTime,
bst.team_name AS teamName,
bw.`name` as teamMan,
td.`value` as postName,bweh.contract_id,
bw."name" as teamMan,
td."value" as postName,bweh.contract_id,
bwc.wageCriterion
FROM
bm_worker_ein_history bweh
LEFT JOIN bm_sub_team bst ON bst.id = bweh.team_id
left JOIN bm_worker bw ON bw.id_number = bst.team_idnumber
LEFT JOIN t_dict td ON td.id = bweh.post_id and td.type = 'postType'
LEFT JOIN bm_worker_contract bwc ON bweh.contract_id = bwc.id
"ynrealname"."bm_worker_ein_history" bweh
LEFT JOIN "ynrealname"."bm_sub_team" bst ON bst.id = bweh.team_id
left JOIN "ynrealname"."bm_worker" bw ON bw.id_number = bst.team_idnumber
LEFT JOIN "ynrealname"."t_dict" td ON td.id = bweh.post_id and td.type = 'postType'
LEFT JOIN "ynrealname"."bm_worker_contract" bwc ON bweh.contract_id = bwc.id
WHERE
bweh.id_number = #{idNumber}
and bweh.project_id = #{params.proId}
@ -462,23 +474,23 @@
</select>
<select id="getEinRecordByProSubHaving" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT a.number,COUNT(DISTINCT ffc.CURRENT_DAY) AS workDays,a.idNumber,a.einTime,a.exitTime,btur.create_time
SELECT a.number,COUNT(DISTINCT ffc."current_day") AS workDays,a.idNumber,a.einTime,a.exitTime,btur.create_time
FROM (
SELECT
COUNT(bweh.id_number) AS number,
bweh.id_number AS idNumber,
bweh.ein_time AS einTime,
IF(bweh.exit_status = '1', bweh.exit_time, NULL) AS exitTime,
bweh.is_active
COUNT(bweh."id_number") AS number,
bweh."id_number" AS idNumber,
bweh."ein_time" AS einTime,
CASE WHEN bweh."exit_status" = '1' THEN bweh."exit_time" ELSE NULL END AS exitTime,
bweh."is_active"
FROM
bm_worker_ein_history bweh
"ynrealname"."bm_worker_ein_history" bweh
WHERE
bweh.project_id = #{params.proId} AND bweh.sub_id = #{params.subId}
bweh."project_id" = #{params.proId} AND bweh."sub_id" = #{params.subId}
GROUP BY
bweh.id_number
bweh."id_number"
) a
LEFT JOIN fc_face_contrast ffc ON a.idNumber = ffc.ID_NUMBER AND ffc.CURRENT_DAY BETWEEN #{params.startDate} AND #{params.stopDate}
LEFT JOIN (SELECT * FROM bm_team_user_relation WHERE #{params.stopDate} > create_time and is_active = '1') btur ON a.idNumber = btur.id_number
LEFT JOIN "ynrealname"."fc_face_contrast" ffc ON a.idNumber = ffc."id_number" AND ffc."current_day" BETWEEN #{params.startDate} AND #{params.stopDate}
LEFT JOIN (SELECT * FROM "ynrealname"."bm_team_user_relation" WHERE #{params.stopDate} > create_time and is_active = '1') btur ON a.idNumber = btur."id_number"
GROUP BY a.idNumber
HAVING workDays > 0
ORDER BY btur.create_time
@ -490,12 +502,12 @@
FROM
(
SELECT
ffc.ID_NUMBER AS idNumber,
ffc.PRO_ID AS proId,
ffc.CURRENT_DAY AS workDay
ffc."id_number" AS idNumber,
ffc."pro_id" AS proId,
ffc."current_day" AS workDay
FROM
( SELECT * FROM fc_face_contrast WHERE CURRENT_DAY BETWEEN #{obj.startDate} AND #{obj.stopDate} AND is_active = '1' AND is_red_att = '1' AND ID_NUMBER = #{obj.idNumber}
GROUP BY CURRENT_DAY,attendance_type) ffc
( SELECT * FROM "ynrealname"."fc_face_contrast" WHERE "current_day" BETWEEN #{obj.startDate} AND #{obj.stopDate} AND "is_active" = '1' AND "is_red_att" = '1' AND "id_number" = #{obj.idNumber}
GROUP BY "current_day","attendance_type") ffc
) a
GROUP BY
idNumber
@ -540,14 +552,14 @@
count( 1 )
FROM
"ynrealname"."bm_worker_red_time" bwrt
INNER JOIN ( SELECT id_number, pro_id, CURRENT_DAY FROM "ynrealname"."fc_face_contrast" WHERE CURRENT_DAY BETWEEN #{startDate}
AND #{stopDate} GROUP BY id_number, CURRENT_DAY ) ffc ON ffc.ID_NUMBER = bwrt.id_number
AND ffc.CURRENT_DAY = bwrt.current_day
INNER JOIN ( SELECT "id_number", "pro_id", "current_day" FROM "ynrealname"."fc_face_contrast" WHERE "current_day" BETWEEN #{startDate}
AND #{stopDate} GROUP BY "id_number", "current_day" ) ffc ON ffc."id_number" = bwrt."id_number"
AND ffc."current_day" = bwrt."current_day"
WHERE
bwrt.pro_id = #{proId}
AND bwrt.sub_id = #{subId}
AND bwrt.is_confirm = '0'
AND bwrt.current_day BETWEEN #{startDate}
bwrt."pro_id" = #{proId}
AND bwrt."sub_id" = #{subId}
AND bwrt."is_confirm" = '0'
AND bwrt."current_day" BETWEEN #{startDate}
AND #{stopDate}
</select>
<select id="getNotDealRedLight" resultType="com.bonus.bmw.salary.entity.WorkRedTimeBean">
@ -572,8 +584,7 @@
COUNT( bweh.id_number ) AS number,
bweh.id_number AS idNumber,
bweh.ein_time AS einTime,
IF
( bweh.exit_status = '1', IF ( bweh.exit_examine_time IS NULL, bweh.exit_time, bweh.exit_examine_time ), NULL ) AS exitTime,
CASE WHEN bweh.exit_status = '1', CASE WHEN bweh.exit_examine_time IS NULL, bweh.exit_time, bweh.exit_examine_time END, NULL ) AS exitTime,
bst.team_name AS teamName,
td.`value` as postName,
bw.`name` as teamMan,
@ -606,50 +617,52 @@
<select id="getContractAndWageByIdNumber" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
bw.id_number,
bw.`name`,
bw.`phone`,
bwb.BANK_NAME,
bwb.BANK_CARD,
bwc.wageApprovedWay as salaryCalcType,
bwc.wageCriterion as salaryCalcSta
bw."name",
bw."phone",
bwb."bank_name",
bwb."bank_card",
bwc."wageApprovedWay" as salaryCalcType,
bwc."wageCriterion" as salaryCalcSta
FROM
bm_worker bw
LEFT JOIN bm_worker_bank bwb ON bwb.ID_NUMBER = bw.id_number and bwb.is_active = '1'
LEFT JOIN (SELECT * FROM bm_worker_contract WHERE idCard = #{idNumber} AND LEFT(upload_time,10) &lt;= #{params.stopDate} ORDER BY upload_time DESC LIMIT 1) bwc ON bwc.idCard = bw.ID_NUMBER
WHERE bw.ID_NUMBER = #{idNumber}
"ynrealname"."bm_worker" bw
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = bw."id_number" and bwb."is_active" = '1'
LEFT JOIN (
SELECT * FROM "ynrealname"."bm_worker_contract" WHERE "idCard" = #{idNumber} AND SUBSTR("upload_time",1,10) &lt;= #{params.stopDate} ORDER BY upload_time DESC FETCH FIRST 1 ROWS ONLY
) bwc ON bwc."idCard" = bw."id_number"
WHERE bw."id_number" = #{idNumber}
</select>
<select id="getWageByIdNumber" resultType="com.bonus.bmw.salary.entity.SalaryBookBean">
SELECT
bw.id_number,
bw.`name`,
bw.`phone`,
bwb.BANK_NAME,
bwb.BANK_CARD
bw."name",
bw."phone",
bwb."bank_name",
bwb."bank_card"
FROM
bm_worker bw
LEFT JOIN bm_worker_bank bwb ON bwb.ID_NUMBER = bw.id_number and bwb.is_active = '1'
WHERE bw.ID_NUMBER = #{idNumber}
"ynrealname"."bm_worker" bw
LEFT JOIN "ynrealname"."bm_worker_bank" bwb ON bwb."id_number" = bw."id_number" and bwb."is_active" = '1'
WHERE bw."id_number" = #{idNumber}
</select>
<select id="selectSalaryWorkerList" resultType="com.bonus.bmw.salarystat.entity.SalaryRecordHisBean">
select salary_id, name, id_number, DATE_FORMAT(pay_month, '%Y-%m') as payMonth,
pro_id, sub_id from salary_book_upload_details
where salary_id = #{id} and name is not null
select "salary_id", "name", "id_number", to_char("pay_month", 'YYYY-MM') as "payMonth",
"pro_id", "sub_id" from "ynrealname"."salary_book_upload_details"
where "salary_id" = #{id} and "name" is not null
</select>
<select id="selectSalaryWorkerAttList"
resultType="com.bonus.bmw.salarystat.entity.SalaryRecordAttBean">
select id_number, CURRENT_DAY as currentDate, attendance_type from fc_face_contrast
where ID_NUMBER = #{idNumber}
and CURRENT_DAY like CONCAT(#{payMonth},'%')
and PRO_ID = #{proId}
GROUP BY ID_NUMBER, CURRENT_DAY, attendance_type
select "id_number", "current_day" as "currentDate", "attendance_type" from "ynrealname"."fc_face_contrast"
where "id_number" = #{idNumber}
and "current_day" like (#{payMonth} || '%')
and "pro_id" = #{proId}
GROUP BY "id_number", "current_day", "attendance_type"
</select>
<insert id="insertSalaryRecordHis">
INSERT INTO `bm_salary_record_his`(`pro_id`, `sub_id`, `id_number`, `pay_month`,
`current_date`, `att_day_num`, `salary_id`)
INSERT INTO "ynrealname"."bm_salary_record_his"("pro_id", "sub_id", "id_number", "pay_month",
"current_date", "att_day_num", "salary_id")
VALUES
<foreach item="item" collection="list" separator="," index="index">
(
@ -661,26 +674,26 @@
<select id="exportSalaryBookFill" resultType="com.bonus.bmw.salary.entity.ExportSalaryBookBean">
SELECT
sbud.id_number AS idNumber,
sbud."id_number" AS idNumber,
sbud."name",
sbud.bank_number AS bankCard,
sbud.bank_name AS bankName,
sbud.phone,
sbud.work_type AS workType,
sbud.salary_calc_type AS salaryCalcType,
sbud.salary_calc_sta AS salaryCalcSta,
sbud.work_situation AS workSituation,
sbud.base_salary AS baseSalary,
sbud.reward_salary AS rewardSalary,
sbud.payin_amount AS shouldMoney,
sbud.tax_salary AS taxSalary,
sbud.teamMan,
sbud.payable_amount AS actualMoney,
sbud.remark
FROM "ynrealname"."salary_book_upload_details" AS sbud
WHERE sbud.salary_id = #{params.id}
sbud."bank_number" AS bankCard,
sbud."bank_name" AS bankName,
sbud."phone",
sbud."work_type" AS workType,
sbud."salary_calc_type" AS salaryCalcType,
sbud."salary_calc_sta" AS salaryCalcSta,
sbud."work_situation" AS workSituation,
sbud."base_salary" AS baseSalary,
sbud."reward_salary" AS rewardSalary,
sbud."payin_amount" AS shouldMoney,
sbud."tax_salary" AS taxSalary,
sbud."teamMan",
sbud."payable_amount" AS actualMoney,
sbud."remark"
FROM "ynrealname"."salary_book_upload_details" sbud
WHERE sbud."salary_id" = #{params.id}
<if test="params.keyWord != null and params.keyWord != ''">
and sbud."name" like concat('%', #{params.keyWord}, '%')
and sbud."name" like ('%' || #{params.keyWord} || '%')
</if>
</select>
</mapper>

View File

@ -4,222 +4,373 @@
<mapper namespace="com.bonus.bmw.salarystat.dao.SalaryStatDao">
<select id="selectSalaryByProList" resultType="com.bonus.bmw.salarystat.entity.SalaryProStatBean">
<![CDATA[
select a.*, (a.attNum - a.grantSalaryNum) as notSendNum from(
select vpc.*, NVL(a.grantSalaryNum, 0) as grantSalaryNum, NVL(a.payMonth, '无发放') as payMonth,
NVL(a.salaryNum, 0) as salaryNum, NVL(b.attNum, 0) as attNum, a.salaryId
from "ynrealname"."v_pro_com" vpc
left join (
select a.pro_id, a.pay_month as payMonth,
WM_CONCAT(DISTINCT a.salary_id) as salaryId,
count(DISTINCT a.id_number) as grantSalaryNum,
count(DISTINCT a.salary_id) as salaryNum from
SELECT
a.*,
(a.attNum - a.grantSalaryNum) AS notSendNum
FROM
(
select * from "ynrealname"."bm_salary_record_his" bsrh
WHERE bsrh.pay_month >= #{params.startMonth} AND bsrh.pay_month <= #{params.endMonth}
GROUP BY bsrh.id_number, bsrh.salary_id, bsrh.pay_month
) a GROUP BY a.pay_month, a.pro_id
) a on a.pro_id = vpc.proId
left join (
select b.pro_id, count(DISTINCT b.id_number) as attNum, b.month from(
select b.id_number, b.pro_id, b.month from(
select *, TO_CHAR(CURRENT_DAY, 'YYYY-MM') as month from "ynrealname"."fc_face_contrast"
where "year_month" BETWEEN #{params.startMonth} and #{params.endMonth}
GROUP BY ID_NUMBER, TO_CHAR(CURRENT_DAY, 'YYYY-MM')
) b left join (
select bweh.id_number, TO_CHAR(ein_time, 'YYYY-MM-DD') as einTime,
project_id, TO_CHAR(exit_time, 'YYYY-MM-DD') as exitTime
from "ynrealname"."bm_worker_ein_history" bweh
where TO_CHAR(ein_time, 'YYYY-MM') <= #{params.endMonth}
and sub_id != 0 and team_id != 0
) bweh on bweh.id_number = b.id_number and (
CASE WHEN bweh.exitTime is null THEN TO_CHAR(b.CURRENT_DAY, 'YYYY-MM-DD') >= bweh.einTime
ELSE TO_CHAR(b.CURRENT_DAY, 'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh.id_number is not null
) b GROUP BY b.pro_id, b.month
) b on b.PRO_ID = vpc.proId and a.payMonth = b.month
ORDER BY vpc.companyId
) a
where 1=1
]]>
SELECT
vpc.*,
NVL(a.grantSalaryNum, 0) AS grantSalaryNum,
NVL(a.payMonth, '无发放') AS payMonth,
NVL(a.salaryNum, 0) AS salaryNum,
NVL(b.attNum, 0) AS attNum,
a.salaryId
FROM
"ynrealname"."v-pro-com" vpc
LEFT JOIN (
SELECT
a."pro_id",
a."pay_month" AS payMonth,
WM_CONCAT(DISTINCT a."salary_id") AS salaryId,
count(DISTINCT a."id_number") AS grantSalaryNum,
count(DISTINCT a."salary_id") AS salaryNum
FROM
(
SELECT
bsrh."id_number",
bsrh."salary_id",
bsrh."pay_month",
MAX(bsrh."pro_id") AS "pro_id"
FROM
"ynrealname"."bm_salary_record_his" bsrh
WHERE
bsrh."pay_month" &gt;= #{params.startMonth}
AND bsrh."pay_month" &lt;= #{params.endMonth}
GROUP BY
bsrh."id_number",
bsrh."salary_id",
bsrh."pay_month" ) a
GROUP BY
a."pay_month",
a."pro_id" ) a ON
a."pro_id" = vpc."proId"
LEFT JOIN (
SELECT
b."pro_id",
count(DISTINCT b."id_number") AS attNum,
b."month"
FROM
(
SELECT
b."id_number",
MAX(b."pro_id") as "pro_id",
MAX(b."month") as "month"
FROM
(
SELECT
ffc."id_number",
ffc."pro_id",
TO_CHAR(ffc."current_day", 'YYYY-MM') AS "month",
ffc."current_day"
FROM
"ynrealname"."fc_face_contrast" ffc
WHERE
ffc."year_month" BETWEEN #{params.startMonth} AND #{params.endMonth}
GROUP BY
ffc."id_number",
ffc."pro_id",
TO_CHAR(ffc."current_day", 'YYYY-MM'),
ffc."current_day") b
INNER JOIN (
SELECT
bweh."id_number",
TO_CHAR(bweh."ein_time", 'YYYY-MM-DD') AS einTime,
bweh."project_id",
TO_CHAR(bweh."exit_time", 'YYYY-MM-DD') AS exitTime
FROM
"ynrealname"."bm_worker_ein_history" bweh
WHERE
TO_CHAR(bweh."ein_time", 'YYYY-MM') &lt;= #{params.endMonth}
AND bweh."sub_id" != 0
AND bweh."team_id" != 0 ) bweh ON
bweh."id_number" = b."id_number"
WHERE
(bweh.exitTime IS NULL AND TO_CHAR(b."current_day", 'YYYY-MM-DD') &gt;= bweh.einTime)
OR (bweh.exitTime IS NOT NULL AND TO_CHAR(b."current_day", 'YYYY-MM-DD') BETWEEN bweh.einTime AND bweh.exitTime)
GROUP BY
b."id_number" ) b
GROUP BY
b."pro_id",
b."month" ) b ON
b."pro_id" = vpc."proId"
AND a.payMonth = b."month"
ORDER BY
vpc."companyId" ) a
WHERE
1 = 1
<if test="params.companyId != null and params.companyId != '' ">
and a.companyId = #{params.companyId}
and a."companyId" = #{params.companyId}
</if>
<if test="params.proName != null and params.proName != '' ">
and a.proName like concat('%',#{params.proName},'%')
and a."proName" like ('%' || #{params.proName} || '%')
</if>
<if test="params.name != null and params.name != '' ">
and a.NAME like concat('%',#{params.name},'%')
and a."name" like ('%' || #{params.name} || '%')
</if>
</select>
<select id="selectSalaryByWorkerList" resultType="com.bonus.bmw.salarystat.entity.SalaryProStatBean">
SELECT * FROM (
SELECT bw.NAME, bw.id_number, bw.phone, att.MONTH as payMonth, att.attDayNum,
SELECT bw."name", bw."id_number", bw."phone", att."month" as payMonth, att.attDayNum,
CASE WHEN bsth.id_number IS NULL THEN 0 ELSE 1 END AS isWages,
NVL(bsth.salaryName, 0) as salaryName, bsth.salaryId
FROM (
<![CDATA[
select ffc.id_number, ffc.month, count( DISTINCT
TO_CHAR(ffc.ID_NUMBER) || '_' || TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') ) AS attDayNum from (
SELECT id_number, CURRENT_DAY, TO_CHAR( CURRENT_DAY,
'YYYY-MM' ) AS MONTH FROM "ynrealname"."fc_face_contrast"
select ffc."id_number", ffc."month", count( DISTINCT
TO_CHAR(ffc."id_number") || '_' || TO_CHAR(ffc."current_day",'YYYY-MM-DD') ) AS attDayNum from (
SELECT "id_number", "current_day", TO_CHAR( "current_day",
'YYYY-MM' ) AS "month" FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" = #{params.payMonth}
AND pro_id = #{params.proId}
GROUP BY ID_NUMBER, CURRENT_DAY
AND "pro_id" = #{params.proId}
GROUP BY "id_number", "current_day"
) ffc left join (
select bweh.id_number, TO_CHAR(ein_time, 'YYYY-MM-DD') as einTime,
project_id, TO_CHAR(exit_time, 'YYYY-MM-DD') as exitTime
select bweh."id_number", TO_CHAR("ein_time", 'YYYY-MM-DD') as einTime,
"project_id", TO_CHAR("exit_time", 'YYYY-MM-DD') as exitTime
from "ynrealname"."bm_worker_ein_history" bweh
where TO_CHAR(ein_time, 'YYYY-MM') <= #{params.payMonth}
and sub_id != 0 and team_id != 0 and project_id = #{params.proId}
) bweh on bweh.id_number = ffc.id_number and (
CASE WHEN bweh.exitTime is null THEN TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') >= bweh.einTime
ELSE TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh.id_number is not null
GROUP BY ffc.ID_NUMBER
where TO_CHAR("ein_time", 'YYYY-MM') <= #{params.payMonth}
and "sub_id" != 0 and "team_id" != 0 and "project_id" = #{params.proId}
) bweh on bweh."id_number" = ffc."id_number" and (
CASE WHEN bweh.exitTime is null THEN TO_CHAR(ffc."current_day",'YYYY-MM-DD') >= bweh.einTime
ELSE TO_CHAR(ffc."current_day",'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh."id_number" is not null
GROUP BY ffc."id_number"
]]>
) att
LEFT JOIN "ynrealname"."bm_worker" bw ON att.id_number = bw.id_number
LEFT JOIN ( SELECT id_number, count( DISTINCT (TO_CHAR(id_number) || '_' || TO_CHAR(salary_id)) ) AS salaryName,
WM_CONCAT(DISTINCT salary_id) as salaryId
FROM "ynrealname"."bm_salary_record_his" WHERE pay_month = #{params.payMonth} GROUP BY id_number )
bsth ON att.id_number = bsth.id_number
LEFT JOIN "ynrealname"."bm_worker" bw ON att."id_number" = bw."id_number"
LEFT JOIN ( SELECT "id_number", count( DISTINCT (TO_CHAR("id_number") || '_' || TO_CHAR("salary_id")) ) AS salaryName,
WM_CONCAT(DISTINCT "salary_id") as salaryId
FROM "ynrealname"."bm_salary_record_his" WHERE "pay_month" = #{params.payMonth} GROUP BY "id_number" )
bsth ON att."id_number" = bsth."id_number"
) a WHERE 1 = 1
<if test="params.isWages != null and params.isWages != '' ">
and a.isWages = #{params.isWages}
</if>
<if test="params.name != null and params.name != '' ">
and a.NAME like concat('%',#{params.name},'%')
and a."name" like ('%' || #{params.name} || '%')
</if>
</select>
<select id="selectSalaryByWorkerAttList"
resultType="com.bonus.bmw.salarystat.entity.SalaryProStatBean">
SELECT * FROM (
SELECT bw.NAME, bw.id_number, bw.phone, att.CURRENT_DAY, bsth.salaryId,
SELECT bw."name", bw."id_number", bw."phone", att."current_day", bsth.salaryId,
att.attDayNum, CASE WHEN bsth.salaryName IS NULL THEN '无' ELSE bsth.salaryName END as salaryName,
bsth.subName, CASE WHEN bsth.salaryName IS NULL THEN 0 ELSE 1 END AS isWages
FROM (SELECT id_number, CURRENT_DAY,
FROM (SELECT "id_number", "current_day",
CASE WHEN COUNT(*) >= 2 THEN 1 ELSE 0.5 END AS attDayNum
FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" = #{params.payMonth}
AND pro_id = #{params.proId}
GROUP BY id_number, CURRENT_DAY) att
LEFT JOIN "ynrealname"."bm_worker" bw ON att.id_number = bw.id_number
LEFT JOIN (SELECT id_number, bsb.NAME AS salaryName, bs.sub_name AS subName,
WM_CONCAT(DISTINCT bsrh.salary_id) as salaryId
AND "pro_id" = #{params.proId}
GROUP BY "id_number", "current_day") att
LEFT JOIN "ynrealname"."bm_worker" bw ON att."id_number" = bw."id_number"
LEFT JOIN (SELECT "id_number", bsb."NAME" AS salaryName, bs."sub_name" AS subName,
WM_CONCAT(DISTINCT bsrh."salary_id") as salaryId
FROM "ynrealname"."bm_salary_record_his" bsrh
LEFT JOIN "ynrealname"."bm_salary_book" bsb ON bsb.id = bsrh.salary_id
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs.id = bsb.sub_id
WHERE bsrh.pay_month = #{params.payMonth}
GROUP BY bsrh.id_number) bsth ON att.id_number = bsth.id_number) a
LEFT JOIN "ynrealname"."bm_salary_book" bsb ON bsb."id" = bsrh."salary_id"
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs."id" = bsb."sub_id"
WHERE bsrh."pay_month" = #{params.payMonth}
GROUP BY bsrh."id_number") bsth ON att."id_number" = bsth."id_number") a
WHERE 1 = 1
and a.id_number = #{params.idNumber}
and a."id_number" = #{params.idNumber}
<if test="params.isWages != null and params.isWages != '' ">
and a.isWages = #{params.isWages}
</if>
<if test="params.name != null and params.name != '' ">
and a.NAME like concat('%',#{params.name},'%')
and a."name" like ('%' || #{params.name} || '%')
</if>
ORDER BY CURRENT_DAY
ORDER BY "current_day"
</select>
<select id="getSalaryList" resultType="com.bonus.bmw.salarystat.entity.SalaryListBean">
SELECT bsb.id as salaryId, bsb.name as salaryName, count(sbud.id_number) as personNum,
bsb.start_date, bsb.stop_date, bp.name as proName, bs.sub_name
SELECT bsb."id" as salaryId, bsb."name" as salaryName, count(sbud."id_number") as personNum,
bsb."start_date", bsb."stop_date", bp."name" as proName, bs."sub_name"
from "ynrealname"."bm_salary_book" bsb
left join "ynrealname"."salary_book_upload_details" sbud on sbud.salary_id = bsb.id
left join "ynrealname"."bm_subcontractor" bs on bs.id = bsb.sub_id
left join "ynrealname"."bm_project" bp on bp.id = bsb.pro_id
where bsb.id in (${params.salaryId})
left join "ynrealname"."salary_book_upload_details" sbud on sbud."salary_id" = bsb."id"
left join "ynrealname"."bm_subcontractor" bs on bs."id" = bsb."sub_id"
left join "ynrealname"."bm_project" bp on bp."id" = bsb."pro_id"
where bsb."id" in (${params.salaryId})
<if test="params.salaryName != null and params.salaryName != '' ">
and bsb.name like concat('%',#{params.salaryName},'%')
and bsb."name" like ('%' || #{params.salaryName} || '%')
</if>
<if test="params.subName != null and params.subName != '' ">
and bs.sub_name like concat('%',#{params.subName},'%')
and bs."sub_name" like ('%' || #{params.subName} || '%')
</if>
GROUP BY bsb.id, bsb.name, bsb.start_date, bsb.stop_date, bp.name, bs.sub_name
GROUP BY bsb."id", bsb."name", bsb."start_date", bsb."stop_date", bp."name", bs."sub_name"
</select>
<select id="getSalaryBySubContractList" resultType="com.bonus.bmw.salarystat.entity.SalarySubContractBean">
<![CDATA[
select * from (
select vsc.*, NVL(a.grantSalaryNum, 0) as grantSalaryNum,
NVL(a.payMonth, '无发放') as payMonth,
NVL(a.salaryNum, 0) as salaryNum, a.salaryId
from "ynrealname"."v_sub_contract" vsc
left join (
select a.pro_id, a.sub_id, a.pay_month as payMonth,
WM_CONCAT(DISTINCT a.salary_id) as salaryId,
count(DISTINCT a.id_number) as grantSalaryNum,
count(DISTINCT a.salary_id) as salaryNum from (
select * from "ynrealname"."bm_salary_record_his" bsrh
WHERE bsrh.pay_month = #{params.startMonth}
GROUP BY bsrh.id_number, bsrh.salary_id, bsrh.pay_month
) a GROUP BY a.pay_month, a.pro_id, a.sub_id
) a on a.pro_id = vsc.proId and a.sub_id = vsc.subId
) a where 1=1
]]>
SELECT
*
FROM
(
SELECT
vsc.*,
NVL(a.grantSalaryNum, 0) AS grantSalaryNum,
NVL(a.payMonth, '无发放') AS payMonth,
NVL(a.salaryNum, 0) AS salaryNum,
a.salaryId
FROM
"ynrealname"."v_sub_contract" vsc
LEFT JOIN (
SELECT
a.pro_id,
a.sub_id,
a.pay_month AS payMonth,
WM_CONCAT(DISTINCT a.salary_id) AS salaryId,
count(DISTINCT a."id_number") AS grantSalaryNum,
count(DISTINCT a.salary_id) AS salaryNum
FROM
(
SELECT
MAX(bsrh."pro_id") AS pro_id,
MAX(bsrh."sub_id") AS sub_id,
bsrh."id_number",
bsrh."pay_month" AS pay_month,
bsrh."salary_id" AS salary_id
FROM
"ynrealname"."bm_salary_record_his" bsrh
WHERE
bsrh."pay_month" = #{params.startMonth}
GROUP BY
bsrh."id_number",
bsrh."salary_id",
bsrh."pay_month"
) a
GROUP BY
a.pay_month,
a.pro_id,
a.sub_id
) a ON
a.pro_id = vsc."proId"
AND a.sub_id = vsc."subId"
) a
WHERE
1 = 1
<if test="params.subName != null and params.subName != '' ">
and a.subName like concat('%',#{params.subName},'%')
and a."subName" like ('%' || #{params.subName} || '%')
</if>
<if test="params.proName != null and params.proName != '' ">
and a.proName like concat('%',#{params.proName},'%')
and a."proName" like ('%' || #{params.proName} || '%')
</if>
<if test="params.subContractName != null and params.subContractName != '' ">
and a.subContractName like concat('%',#{params.subContractName},'%')
and a."subContractName" like ('%' || #{params.subContractName} || '%')
</if>
</select>
<select id="getWorkerAttBean" resultType="com.bonus.bmw.salarystat.entity.WorkerAttBean">
<![CDATA[
SELECT * FROM (SELECT id_number, CURRENT_DAY,
CASE WHEN COUNT(*) >= 2 THEN 1 ELSE 0.5 END AS attDayNum
FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" = #{startMonth}
GROUP BY id_number, CURRENT_DAY) att
]]>
SELECT * FROM (SELECT "id_number", "current_day",
CASE WHEN COUNT(*) &gt;= 2 THEN 1 ELSE 0.5 END AS attDayNum
FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" = #{startMonth}
GROUP BY "id_number", "current_day") att
</select>
<select id="getSubContractIdByIdNumber" resultType="java.lang.String">
select CASE WHEN count(*) = 0 THEN (
select CASE WHEN count(*) = 0 THEN (
select bsr.sub_contract_id 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.value = a.team_id
where bsr.is_active = 1
ORDER BY bsr.id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
) ELSE sub_contract_id 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 END as contractId
from (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
CASE
WHEN count(*) = 0 THEN (
SELECT
CASE
WHEN count(*) = 0 THEN (
SELECT
bsr.sub_contract_id
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.value = a.team_id
WHERE
bsr.is_active = 1
ORDER BY
bsr.id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
)
ELSE sub_contract_id
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
END AS contractId
FROM
(
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 id="getSalaryBySubContractWorkerList"
resultType="com.bonus.bmw.salarystat.entity.SalarySubContractWorkerBean">
SELECT * FROM (
SELECT bw.NAME, bw.id_number, bw.phone, bsth.salaryName, bsth.salaryId,
SELECT bw."name", bw."id_number", bw."phone", bsth.salaryName, bsth.salaryId,
CASE WHEN bsth.salaryName IS NULL THEN 0 ELSE 1 END AS isWages, #{params.payMonth} as payMonth
FROM ( SELECT id_number, count( DISTINCT (TO_CHAR(id_number) || '_' || TO_CHAR(salary_id)) ) AS salaryName,
WM_CONCAT(DISTINCT salary_id) as salaryId
@ -232,103 +383,103 @@
<select id="getSalaryBySubContractWorkerAttList"
resultType="com.bonus.bmw.salarystat.entity.SalarySubContractWorkerAttBean">
SELECT * FROM (
SELECT bw.NAME, bw.id_number, bw.phone, bsth.subName,
IF(bsth.salaryName IS NULL, '无', bsth.salaryName) as salaryName,
IF(bsth.salaryName IS NULL, 0, 1) AS isWages, bsth.salaryId,
SELECT bw."name", bw."id_number", bw."phone", bsth.subName,
CASE WHEN bsth.salaryName IS NULL THEN '无' ELSE bsth.salaryName END as salaryName,
CASE WHEN bsth.salaryName IS NULL THEN 0 ELSE 1 END AS isWages, bsth.salaryId,
#{params.payMonth} as payMonth
FROM (SELECT id_number, bsb.NAME AS salaryName, bs.sub_name AS subName,
bsb.id as salaryId
FROM bm_salary_record_his bsrh
LEFT JOIN bm_salary_book bsb ON bsb.id = bsrh.salary_id
LEFT JOIN bm_subcontractor bs ON bs.id = bsb.sub_id
WHERE bsrh.pay_month = #{params.payMonth}
GROUP BY bsrh.id_number) bsth
LEFT JOIN bm_worker bw ON bw.id_number = bsth.id_number) a
FROM (SELECT "id_number", bsb."NAME" AS salaryName, bs."sub_name" AS subName,
bsb."id" as salaryId
FROM "ynrealname"."bm_salary_record_his" bsrh
LEFT JOIN "ynrealname"."bm_salary_book" bsb ON bsb."id" = bsrh."salary_id"
LEFT JOIN "ynrealname"."bm_subcontractor" bs ON bs."id" = bsb."sub_id"
WHERE bsrh."pay_month" = #{params.payMonth}
GROUP BY bsrh."id_number") bsth
LEFT JOIN "ynrealname"."bm_worker" bw ON bw."id_number" = bsth."id_number") a
WHERE 1 = 1
and a.id_number = #{idNumber}
and a."id_number" = #{idNumber}
</select>
<select id="getTemporarySalaryList" resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryStatBean">
select vpc.*, (
select count(DISTINCT bstrh.id) from "ynrealname"."bm_salary_temp_record_his" bstrh
where bstrh.is_active = 1 and bstrh.pro_id = vpc.proId
select count(DISTINCT bstrh."id") from "ynrealname"."bm_salary_temp_record_his" bstrh
where bstrh."is_active" = '1' and bstrh."pro_id" = vpc."proId"
) as salaryVoucher from "ynrealname"."v_pro_com" vpc
where 1 = 1
<if test="params.companyId != null and params.companyId != '' ">
and vpc.companyId = #{params.companyId}
and vpc."companyId" = #{params.companyId}
</if>
<if test="params.proName != null and params.proName != '' ">
and vpc.proName like concat('%',#{params.proName},'%')
and vpc."proName" like ('%' || #{params.proName} || '%')
</if>
</select>
<select id="getTemporarySalaryFileList"
resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryFileBean">
select bstrh.*, su.username as createUserName from "ynrealname"."bm_salary_temp_record_his" bstrh
left join "ynrealname"."sys_user" su on su.id = bstrh.create_user_id
where bstrh.is_active = 1 and bstrh.pro_id = #{params.proId}
select bstrh.*, su."username" as createUserName from "ynrealname"."bm_salary_temp_record_his" bstrh
left join "ynrealname"."sys_user" su on su."id" = bstrh."create_user_id"
where bstrh."is_active" = '1' and bstrh."pro_id" = #{params.proId}
<if test="params.month != null and params.month != '' ">
and bstrh.month = #{params.month}
and bstrh."month" = #{params.month}
</if>
</select>
<select id="getTemporarySalaryByProList"
resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryProStatBean">
select vpc.*, ffc.month, NVL(ffc.temporaryPersonNum, '无') as temporaryPersonNum,
select vpc.*, ffc."month", NVL(ffc.temporaryPersonNum, '无') as temporaryPersonNum,
NVL(ffc.temporaryPersonAttNum, '无') as temporaryPersonAttNum,
NVL(bstrh.salaryVoucher, '无') as salaryVoucher
from (
<![CDATA[
select ffc.id_number, ffc.month, count( DISTINCT
TO_CHAR(ffc.ID_NUMBER) || '_' || TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') ) AS temporaryPersonAttNum,
count(DISTINCT bweh.id_number) as temporaryPersonNum from (
SELECT id_number, CURRENT_DAY, TO_CHAR( CURRENT_DAY,
'YYYY-MM' ) AS MONTH FROM "ynrealname"."fc_face_contrast"
select ffc."id_number", ffc."month", count( DISTINCT
TO_CHAR(ffc."ID_NUMBER") || '_' || TO_CHAR(ffc."CURRENT_DAY",'YYYY-MM-DD') ) AS temporaryPersonAttNum,
count(DISTINCT bweh."id_number") as temporaryPersonNum from (
SELECT "id_number", "CURRENT_DAY", TO_CHAR( "CURRENT_DAY",
'YYYY-MM' ) AS "MONTH" FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" BETWEEN #{params.startMonth}
and #{params.endMonth} AND pro_id = #{params.proId}
GROUP BY ID_NUMBER, CURRENT_DAY
and #{params.endMonth} AND "pro_id" = #{params.proId}
GROUP BY "ID_NUMBER", "CURRENT_DAY"
) ffc left join (
select bweh.id_number, TO_CHAR(ein_time, 'YYYY-MM-DD') as einTime,
project_id, TO_CHAR(exit_time, 'YYYY-MM-DD') as exitTime
select bweh."id_number", TO_CHAR("ein_time", 'YYYY-MM-DD') as einTime,
"project_id", TO_CHAR("exit_time", 'YYYY-MM-DD') as exitTime
from "ynrealname"."bm_worker_ein_history" bweh
where TO_CHAR(ein_time, 'YYYY-MM') <= #{params.endMonth}
and sub_id = 0 and team_id = 0 and project_id = #{params.proId}
) bweh on bweh.id_number = ffc.id_number and (
CASE WHEN bweh.exitTime is null THEN TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') >= bweh.einTime
ELSE TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh.id_number is not null
GROUP BY ffc.ID_NUMBER, ffc.month
where TO_CHAR("ein_time", 'YYYY-MM') <= #{params.endMonth}
and "sub_id" = 0 and "team_id" = 0 and "project_id" = #{params.proId}
) bweh on bweh."id_number" = ffc."ID_NUMBER" and (
CASE WHEN bweh.exitTime is null THEN TO_CHAR(ffc."CURRENT_DAY",'YYYY-MM-DD') >= bweh.einTime
ELSE TO_CHAR(ffc."CURRENT_DAY",'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh."id_number" is not null
GROUP BY ffc."ID_NUMBER", ffc."month"
]]>
) ffc
left join (
select month, count(DISTINCT id) as salaryVoucher from "ynrealname"."bm_salary_temp_record_his"
where is_active = 1 and month BETWEEN #{params.startMonth}
and #{params.endMonth} and pro_id = #{params.proId}
GROUP BY month
select "month", count(DISTINCT "id") as salaryVoucher from "ynrealname"."bm_salary_temp_record_his"
where "is_active" = '1' and "month" BETWEEN #{params.startMonth}
and #{params.endMonth} and "pro_id" = #{params.proId}
GROUP BY "month"
) bstrh on bstrh.month = ffc.month
left join "ynrealname"."v_pro_com" vpc on vpc.proId = #{params.proId}
where vpc.proId = #{params.proId}
left join "ynrealname"."v_pro_com" vpc on vpc."proId" = #{params.proId}
where vpc."proId" = #{params.proId}
<if test="params.proName != null and params.proName != '' ">
and vpc.proName = #{params.proName}
and vpc."proName" = #{params.proName}
</if>
ORDER BY bstrh.month DESC
ORDER BY bstrh."month" DESC
</select>
<select id="getTemporarySalaryPersonAttList"
resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryPersonAttBean">
select bw.name, bw.id_number, bw.phone, bp.name as proName,
select bw."name", bw."id_number", bw."phone", bp."name" as proName,
ffc.CURRENT_DAY, ffc.attDayNum from (
SELECT * FROM (SELECT id_number, CURRENT_DAY,
SELECT * FROM (SELECT "id_number", "CURRENT_DAY",
CASE WHEN COUNT(*) >= 2 THEN 1 ELSE 0.5 END AS attDayNum
FROM "ynrealname"."fc_face_contrast"
WHERE "year_month" = #{params.month}
and pro_id = #{params.proId}
and "pro_id" = #{params.proId}
<if test="params.idNumber != null and params.idNumber != '' ">
and id_number = #{params.idNumber}
and "id_number" = #{params.idNumber}
</if>
GROUP BY id_number, CURRENT_DAY) att
) ffc left join bm_worker bw on bw.id_number = ffc.id_number
left join "ynrealname"."bm_project" bp on bp.id = #{params.proId}
GROUP BY "id_number", "CURRENT_DAY") att
) ffc left join "ynrealname"."bm_worker" bw on bw."id_number" = ffc.ID_NUMBER
left join "ynrealname"."bm_project" bp on bp."id" = #{params.proId}
left join (
select bweh.id_number, TO_CHAR(ein_time, 'YYYY-MM-DD') as einTime,
project_id, TO_CHAR(exit_time, 'YYYY-MM-DD') as exitTime
@ -348,7 +499,7 @@
<select id="getTemporarySalaryPersonAttStatList"
resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryPersonAttStatBean">
<![CDATA[
select bw.name, bw.id_number, bw.phone, #{params.month} as month, ffc.einDate as einTime,
select bw."name", bw."id_number", bw."phone", #{params.month} as month, ffc.einDate as einTime,
ffc.exitDate as exitTime, ffc.attDayNum
from (select ffc.id_number, ffc.month, count( DISTINCT
TO_CHAR(ffc.ID_NUMBER) || '_' || TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') ) AS attDayNum,
@ -371,45 +522,45 @@
ELSE TO_CHAR(ffc.CURRENT_DAY,'YYYY-MM-DD') BETWEEN bweh.einTime and bweh.exitTime END)
where bweh.id_number is not null
GROUP BY ffc.ID_NUMBER, ffc.month
) ffc left join bm_worker bw on bw.id_number = ffc.id_number
) ffc left join "ynrealname"."bm_worker" bw on bw."id_number" = ffc.id_number
]]>
<if test="params.name != null and params.name != '' ">
where bw.name = #{params.name}
where bw."name" = #{params.name}
</if>
</select>
<select id="selectSalaryVoucherFile" resultType="com.bonus.bmw.salarystat.entity.TemporarySalaryFileBean">
select file_name, file_path from "ynrealname"."bm_salary_temp_record_his"
where is_active = 1 and month BETWEEN #{startMonth}
and #{endMonth} and pro_id = #{proId}
GROUP BY file_name, file_path
select "file_name", "file_path" from "ynrealname"."bm_salary_temp_record_his"
where "is_active" = '1' and "month" BETWEEN #{startMonth}
and #{endMonth} and "pro_id" = #{proId}
GROUP BY "file_name", "file_path"
</select>
<select id="selectPersonContent" resultType="java.util.Map">
select bw.name, bw.id_number as idNumber, bw.phone
select bw."name", bw."id_number" as idNumber, bw."phone"
from "ynrealname"."bm_worker" bw
where bw.id_number = #{idNumber}
where bw."id_number" = #{idNumber}
</select>
<select id="getSubName" resultType="java.lang.String">
select bs.sub_name as subName from "ynrealname"."bm_sub_contract" bsc
left join "ynrealname"."bm_subcontractor" bs ON bs.id = bsc.sub_id
where bsc.id = #{subContractId}
select bs."sub_name" as subName from "ynrealname"."bm_sub_contract" bsc
left join "ynrealname"."bm_subcontractor" bs ON bs."id" = bsc."sub_id"
where bsc."id" = #{subContractId}
</select>
<select id="selectSalaryByIdNumber" resultType="java.lang.Integer">
SELECT CASE WHEN count(*) > 0 THEN 1 ELSE 0 END FROM "ynrealname"."bm_salary_record_his"
where id_number = #{idNumber} and pay_month = #{startMonth}
where "id_number" = #{idNumber} and "pay_month" = #{startMonth}
</select>
<delete id="deleteTemporarySalaryFileById">
update "ynrealname"."bm_salary_temp_record_his" set is_active = 0 where id = #{id}
update "ynrealname"."bm_salary_temp_record_his" set "is_active" = '0' where "id" = #{id}
</delete>
<insert id="insertTemporarySalaryFile">
<foreach collection="list" item="params" separator=";">
insert into "ynrealname"."bm_salary_temp_record_his"(sub_com_id, pro_id, month,
file_name, file_path, create_user_id) values (#{params.companyId}, #{params.proId},
insert into "ynrealname"."bm_salary_temp_record_his"("sub_com_id", "pro_id", "month",
"file_name", "file_path", "create_user_id") values (#{params.companyId}, #{params.proId},
#{params.month}, #{params.fileName}, #{params.filePath}, #{params.createUserId})
</foreach>
</insert>

View File

@ -139,7 +139,7 @@ function init() {
}
function exportData() {
window.location.href = ctxPath + "/salaryBookFill/exportSalaryBookFill?token=" + token
window.location.href = ctxPath + "/salaryBookFill/exportSalaryBookFill?Authorization=" + token
+ "&id=" + $("#id").val()
+ "&keyWord=" + $("#keyWord").val();
}

View File

@ -130,7 +130,7 @@ function photoView(idNumber) {
}
function exportList(id) {
location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id;
location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id + '&Authorization=' + token;;
}
// 编辑按钮

View File

@ -245,7 +245,7 @@ function dataEdit(idNumber) {
function exportList(id) {
location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id;
location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id + '&Authorization=' + token;
}
function submit(id) {