hd_real_name/target/classes/mappers/person/GeneratePayrollMapper.xml

290 lines
12 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.gzrn.rnbmw.person.dao.GeneratePayrollDao">
<select id="getPayrollList" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
select bsb.id ,
bsb.name ,
bsb.start_time ,
bsb.end_time ,
bsb.creator ,
bsb.create_time ,
bsb.people_num ,
bsb.salary_total ,
bp.name as proName,
pc.org_name as companyName
from bm_salary_book bsb
left join pm_company pc on pc.ID = bsb.company_id
left join bm_project bp on bp.ID = bsb.project_id
where 1=1
<if test="params.companyId != null and params.companyId != ''">
and pc.ID = #{params.companyId}
</if>
<if test="params.proId != null and params.proId != ''">
and bsb.project_id = #{params.proId}
</if>
<if test="params.keyWord != null and params.keyWord != '' ">
and (
bsb.name like concat ('%',#{params.keyWord},'%') or
bsb.creator like concat ('%',#{params.keyWord},'%') or
pc.org_name like concat ('%',#{params.keyWord},'%') or
bp.name like concat ('%',#{params.keyWord},'%')
)
</if>
limit #{offset}, #{limit}
</select>
<select id="getPayrollListCount" resultType="java.lang.Integer">
SELECT COUNT(*)
from bm_salary_book bsb
left join pm_company pc on pc.ID = bsb.company_id
left join bm_project bp on bp.Id = bsb.project_id
where 1=1
<if test="params.companyId != null and params.companyId != ''">
and pc.ID = #{params.companyId}
</if>
<if test="params.proId != null and params.proId != '' ">
and bsb.project_id = #{params.proId}
</if>
<if test="params.keyWord != null and params.keyWord != '' ">
and (
bsb.name like concat ('%',#{params.keyWord},'%') or
bsb.creator like concat ('%',#{params.keyWord},'%') or
pc.org_name like concat ('%',#{params.keyWord},'%') or
bp.name like concat ('%',#{params.keyWord},'%')
)
</if>
</select>
<select id="getAll" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
select sbd.id_number ,
sbd.name as personName,
sbd.bank_number ,
sbd.bank_name ,
sbd.bank_brank ,
sbd.payable_amount ,
sbd.payin_amount ,
sbd.pay_date ,
sbd.pay_month ,
sbd.is_reissue ,
sbd.work_days ,
sbd.finance_sure ,
sbd.person_sure ,
sbd.submit_no ,
sbd.bank_handleno
from salary_book_details sbd
where sbd.salary_id = #{params.id}
<if test="params.keyWord != null and params.keyWord != ''">
and (
sbd.name like concat ('%',#{params.keyWord},'%') OR
sbd.id_number like concat ('%',#{params.keyWord},'%')
)
</if>
limit #{offset}, #{limit}
</select>
<select id="getPersonInfo" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
select sbd.id_number ,
sbd.name as personName,
sbd.bank_number ,
sbd.bank_name ,
sbd.bank_brank ,
sbd.payable_amount ,
sbd.payin_amount ,
sbd.pay_date ,
sbd.pay_month ,
sbd.is_reissue ,
sbd.work_days ,
sbd.finance_sure ,
sbd.person_sure ,
sbd.submit_no ,
sbd.bank_handleno
from salary_book_details sbd
where sbd.salary_id = #{id} and sbd.id_number = #{idNumber}
</select>
<select id="getPayrollPersonCount" resultType="java.lang.Integer">
SELECT COUNT(*)
from salary_book_details sbd
where sbd.salary_id = #{params.id}
<if test="params.keyWord != null and params.keyWord != ''">
and (
sbd.name like concat ('%',#{params.keyWord},'%') OR
sbd.id_number like concat ('%',#{params.keyWord},'%')
)
</if>
</select>
<update id="updatePayroll">
update salary_book_details set payable_amount = #{payableAmount},payin_amount = #{payinAmount},
pay_date = #{payDate},pay_month = #{payMonth},is_reissue = #{isReissue},work_days = #{workDays},
finance_sure = #{financeSure},person_sure = #{personSure},submit_no = #{submitNo},bank_handleno =#{bankHandleno}
where id_number = #{idNumber} and salary_id = #{id}
</update>
<delete id="deletePayrollPerson">
delete from salary_book_details where id_number = #{idNumber}
</delete>
<delete id="deletePayroll">
delete from bm_salary_book where id = #{id}
</delete>
<select id="getWorkDayByIdNumber" resultType="java.lang.String">
SELECT
SUM(ffc.WORK_HOURS+ffc.OVER_HOURS) as workDays,ffc.ID_NUMBER
FROM fc_face_contrast ffc
WHERE
ffc.ID_NUMBER = #{idNumber}
AND ffc.CURRENT_DAY BETWEEN #{startDay} and #{endDay}
AND AUDIT_STATUS = 1
</select>
<!--//根据公司工程和时间获取生成工资册数据 -->
<select id="getPayrollDetails" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
SELECT
ffc.`NAME` as personName,
ffc.ID_NUMBER ,
bwc.wageApprovedWay as salaryCalcType,
bwc.wageCriterion as salaryCalcSta,
bwp.BANK_CARD as bankNumber,
bwp.BANK_NAME ,
bwp.ROLL_BANK_NAME as bankBrank,
sdd.`name` as workType,
count(ffc.ID_NUMBER) as workDays,
bwr.EIN_TIME einTime,
bwr.EXIT_TIME exitTime,
bwc.wageApprovedWay wageApprovedWay,
bwc.wageCriterion wageCriterion
FROM fc_face_contrast ffc
LEFT JOIN bm_worker_contract bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN bm_worker_payroll bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON sdd.id = bwr.POST_ID
where ffc.PRO_ID = #{params.proId} and ffc.CURRENT_DAY BETWEEN #{params.startTime} and #{params.endTime} and ffc.is_active = 1
GROUP BY ffc.ID_NUMBER
limit #{offset}, #{limit}
</select>
<select id="getPayrollDetailsCount" resultType="java.lang.Integer">
SELECT COUNT(1)
from(
select ffc.ID_NUMBER
FROM fc_face_contrast ffc
LEFT JOIN bm_worker_contract bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN bm_worker_payroll bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON sdd.id = bwr.POST_ID
where ffc.PRO_ID = #{params.proId} and ffc.CURRENT_DAY BETWEEN #{params.startTime} and #{params.endTime} and ffc.is_active = 1
GROUP BY ffc.ID_NUMBER) r
</select>
<insert id="insertPayroll" useGeneratedKeys="true" keyProperty="id">
insert into bm_salary_book (company_id,project_id,`name`,start_time,end_time,create_time,creator)
values(#{companyId},#{proId},#{name},#{startTime},#{endTime},now(),#{creator})
</insert>
<insert id="insertSalaryDetails">
insert into salary_book_details (salary_id,`name`,pro_id,id_number,bank_number,bank_name,bank_brank,payable_amount,payin_amount,work_days,work_type,salary_calc_type,salary_calc_sta,pay_month)
values(#{id},#{personName},#{proId},#{idNumber},#{bankNumber},#{bankName},#{bankBrank},#{payinAmount},#{payinAmount},#{workDays},#{workType},#{salaryCalcType},#{salaryCalcSta},now())
</insert>
<select id="getProNameById" resultType="string">
select bp.name
from bm_project bp
where bp.ID = #{proId}
</select>
<select id="getNameById" resultType="string">
select su.USERNAME
from sys_user su
where su.ID = #{uploadId}
</select>
<update id="insertOtherSalaryDetails">
update salary_book_details set pay_date = #{payDate},pay_month = #{payMonth},finance_sure = #{financeSure},person_sure = #{personSure},submit_no = #{submitNo},bank_handleno = #{bankHandleno}
where salary_id = #{id}
</update>
<select id="getSums" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
select count(id_number) as peopleNum, sum(payin_amount) as salaryTotal
from salary_book_details sbd
where salary_id = #{id}
</select>
<update id="insertOtherPayroll">
update bm_salary_book set people_num = #{peopleNum},salary_total = #{salaryTotal}
where id = #{id}
</update>
<select id="getExportPayroll" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
SELECT
ffc.`NAME` as personName,
ffc.ID_NUMBER ,
bwc.wageApprovedWay as salaryCalcType,
bwc.wageCriterion as salaryCalcSta,
bwp.BANK_CARD as bankNumber,
bwp.BANK_NAME ,
bwp.ROLL_BANK_NAME as bankBrank,
sdd.`name` as workType,
count(ffc.ID_NUMBER) as workDays,
case when bwc.wageApprovedWay = '天' then (bwc.wageCriterion * count(ffc.ID_NUMBER)) when bwc.wageApprovedWay = '月' then (bwc.wageCriterion/30 * count(ffc.ID_NUMBER)) end as payinAmount
FROM fc_face_contrast ffc
LEFT JOIN bm_worker_contract bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN bm_worker_payroll bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON sdd.id = bwr.POST_ID
where ffc.PRO_ID = #{params.proId} and ffc.CURRENT_DAY BETWEEN #{params.startTime} and #{params.endTime}
GROUP BY ffc.ID_NUMBER
</select>
<!--//根据公司工程和时间获取生成工资册数据-->
<select id="getPayrollDetailsInfo" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
SELECT
ffc.`NAME` as personName,
ffc.ID_NUMBER ,
bwc.wageApprovedWay as salaryCalcType,
bwc.wageCriterion as salaryCalcSta,
bwp.BANK_CARD as bankNumber,
bwp.BANK_NAME ,
bwp.ROLL_BANK_NAME as bankBrank,
sdd.`name` as workType,
count(ffc.ID_NUMBER) as workDays,
case when bwc.wageApprovedWay = '天' then (bwc.wageCriterion * count(ffc.ID_NUMBER)) when bwc.wageApprovedWay = '月' then (bwc.wageCriterion/30 * count(ffc.ID_NUMBER)) end as payinAmount
FROM fc_face_contrast ffc
LEFT JOIN bm_worker_contract bwc ON bwc.idCard = ffc.ID_NUMBER
LEFT JOIN bm_worker_payroll bwp ON bwp.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = ffc.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON sdd.id = bwr.POST_ID
where ffc.PRO_ID = #{proId} and ffc.CURRENT_DAY BETWEEN #{startTime} and #{endTime}
GROUP BY ffc.ID_NUMBER
</select>
<select id="exportPayrollInfo" resultType="com.bonus.gzrn.rnbmw.person.entity.GeneratePayrollBean">
select sbd.id_number ,
sbd.name as personName,
sbd.bank_number ,
sbd.bank_name ,
sbd.bank_brank ,
sbd.payable_amount ,
sbd.payin_amount ,
sbd.pay_date ,
sbd.pay_month ,
sbd.is_reissue ,
sbd.work_days ,
sbd.finance_sure ,
sbd.person_sure ,
sbd.submit_no ,
sbd.bank_handleno ,
bsb.start_time ,
bsb.end_time ,
bp.`name` proName
from salary_book_details sbd
LEFT JOIN bm_salary_book bsb on bsb.id = sbd.salary_id
LEFT JOIN bm_project bp on bp.ID = bsb.project_id
where sbd.salary_id = #{params.id}
</select>
</mapper>