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

View File

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

View File

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

View File

@ -130,7 +130,7 @@ function photoView(idNumber) {
} }
function exportList(id) { 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) { function exportList(id) {
location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id; location.href = ctxPath + '/salaryBookFill/exportExamList?id='+ id + '&Authorization=' + token;
} }
function submit(id) { function submit(id) {