hd_real_name/target/classes/mappers/contractHundred/AttendanceHundredMapper.xml

72 lines
3.2 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.sixHundred.dao.AttendanceHundredDao">
<select id="selectAttendanceHundred"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.AttendanceHundredBean">
SELECT
count(DISTINCT bwr.ID_NUMBER) - count(DISTINCT bwodd.id_number) as theDayOnDutyPersonNum,
count(DISTINCT ffc.ID_NUMBER) as theDayAttendancePersonNum,
count(DISTINCT wage.idCard) as lastMonthWagesHaveAttendancePersonNum,
count(DISTINCT wages.id_number) as lastMonthWagesPersonNum
FROM
bm_worker bw
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = bw.ID_NUMBER
left join bm_worker_on_duty_departure bwodd on bwodd.id_number = bwr.ID_NUMBER and bwodd.date = CURRENT_DATE()
left join fc_face_contrast ffc on ffc.ID_NUMBER = bwr.ID_NUMBER and ffc.CURRENT_DAY = CURRENT_DATE() and ffc.is_push = 1
left join (
select bwpsi.idCard from bm_worker_provide_salary_info bwpsi
where bwpsi.pro_id = #{proId} and bwpsi.is_push = 1
and bwpsi.payMonth = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y%m')
) wage on wage.idCard = bwr.ID_NUMBER
left join (
select bwr.ID_NUMBER from bm_worker_record bwr
left join fc_face_contrast ffc on ffc.ID_NUMBER = bwr.ID_NUMBER and ffc.is_push = 1 and ffc.CURRENT_DAY like concat
('%',DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m'),'%')
where bwr.PROJECT_ID = #{proId}
AND bwr.is_ein_push = 1
AND bwr.ein_status = 1
GROUP BY ffc.ID_NUMBER
) wages on wages.id_number = bwr.ID_NUMBER
WHERE
bw.ID_NUMBER IS NOT NULL
AND bwr.PROJECT_ID = #{proId}
AND bwr.is_ein_push = 1
AND bwr.ein_status = 1;
</select>
<select id="selectAttendanceHundredTable"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.SixHundredContentBean">
SELECT
bw.name, bw.ID_NUMBER
FROM
bm_worker bw
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = bw.ID_NUMBER
left join fc_face_contrast ffc on ffc.ID_NUMBER = bwr.ID_NUMBER and ffc.CURRENT_DAY = CURRENT_DATE() and ffc.is_push = 1
WHERE
bw.ID_NUMBER IS NOT NULL AND bwr.PROJECT_ID = #{proId}
AND bwr.is_ein_push = 1 AND bwr.ein_status = 1 and ffc.ID_NUMBER is null
and bw.ID_NUMBER not in (select ID_NUMBER from bm_worker_on_duty_departure where date = CURRENT_DATE())
</select>
<select id="selectAttendanceHundredWagesTable"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.SixHundredContentBean">
SELECT
bw.name, bw.ID_NUMBER
FROM bm_worker bw
LEFT JOIN bm_worker_record bwr ON bwr.ID_NUMBER = bw.ID_NUMBER
WHERE bw.ID_NUMBER IS NOT NULL AND bwr.PROJECT_ID = #{proId}
AND bwr.is_ein_push = 1 AND bwr.ein_status = 1
and bw.ID_NUMBER not in (
select bwpsi.idCard from bm_worker_provide_salary_info bwpsi
left join fc_face_contrast ffc on ffc.ID_NUMBER = bwpsi.idCard and ffc.is_push = 1 and ffc.CURRENT_DAY like concat
('%',DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m'),'%')
where bwpsi.pro_id = #{proId} and bwpsi.is_push = 1
and bwpsi.payMonth = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y%m')
GROUP BY ffc.ID_NUMBER
)
</select>
</mapper>