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

82 lines
4.1 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.BankIssuingHundredDao">
<select id="selectBankIssuingHundred"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.BankIssuingHundredBean">
select
FORMAT((count(a.ID_NUMBER) - count(yearwage.idCard)) / count(a.ID_NUMBER) * 100, 0) as proportion,
IFNULL(IFNULL(FORMAT(avg(nowwage.actualAmount), 0), 0),
IFNULL(FORMAT(avg(lastwage.actualAmount), 0), 0)) as averageWage,
IFNULL(IFNULL(sum(nowwage.actualAmount > 100000), 0),
IFNULL(sum(lastwage.actualAmount > 100000), 0)) as monthOver100000,
sum(yearwage.actualAmount > 300000) as yearOver300000,
sum(CASE WHEN MONTH ( CURRENT_DATE ( ) ) - 2 >= MONTH ( maxATT ) THEN 1
WHEN MONTH ( CURRENT_DATE ( ) ) - 2 >= MONTH ( maxWage ) THEN 1 ELSE 0 END
) AS departureNotPushPersonNum
from (
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
) a left join (
select bwpsi.idCard, bwpsi.actualAmount 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')
) lastwage on lastwage.idCard = a.ID_NUMBER
left join (
select bwpsi.idCard, bwpsi.actualAmount from bm_worker_provide_salary_info bwpsi
where bwpsi.pro_id = #{proId} and bwpsi.is_push = 1
and bwpsi.payMonth = DATE_FORMAT(MONTH(CURDATE()), '%Y%m')
) nowwage on nowwage.idCard = a.ID_NUMBER
left join (
select bwpsi.idCard, sum(bwpsi.actualAmount) as actualAmount from bm_worker_provide_salary_info bwpsi
where bwpsi.pro_id = #{proId} and bwpsi.is_push = 1
and bwpsi.payMonth like concat ('%', YEAR(CURDATE()),'%')
GROUP BY bwpsi.idCard
) yearwage on yearwage.idCard = a.ID_NUMBER
left join (
SELECT bw.ID_NUMBER, MAX( ffc.CURRENT_DAY ) AS maxAtt, MAX( bwpsi.payMonth ) AS maxWage
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 is_push = 1
LEFT JOIN bm_worker_provide_salary_info bwpsi ON bwpsi.idCard = bwr.ID_NUMBER and bwpsi.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
GROUP BY bw.ID_NUMBER
) max on max.ID_NUMBER = a.ID_NUMBER
</select>
<select id="selectYearOver300000Table"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.SixHundredContentBean">
select a.name, a.idCard from (
select bw.name, bwpsi.idCard, sum(bwpsi.actualAmount) as actualAmount from bm_worker_provide_salary_info bwpsi
left join bm_worker bw on bw.ID_NUMBER = bwpsi.idCard
where bwpsi.pro_id = #{proId} and bwpsi.is_push = 1
and bwpsi.payMonth like concat ('%', YEAR(CURDATE()),'%')
GROUP BY bwpsi.idCard
) a where a.actualAmount > 300000
</select>
<select id="selectMonthOver100000Table"
resultType="com.bonus.gzrn.rnbmw.sixHundred.entity.SixHundredContentBean">
SELECT a.NAME, a.idCard FROM (
SELECT a.NAME, a.idCard, IFNULL( nowwage.actualAmount, a.actualAmount ) AS actualAmount FROM
(
SELECT bw.NAME, bwpsi.idCard, bwpsi.actualAmount FROM bm_worker_provide_salary_info bwpsi
LEFT JOIN bm_worker bw ON bw.ID_NUMBER = bwpsi.idCard
WHERE bwpsi.pro_id = #{proId} AND bwpsi.is_push = 1
AND bwpsi.payMonth = DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 MONTH ), '%Y%m' )
) a
LEFT JOIN (
SELECT bw.NAME, bwpsi.idCard, bwpsi.actualAmount FROM bm_worker_provide_salary_info bwpsi
LEFT JOIN bm_worker bw ON bw.ID_NUMBER = bwpsi.idCard
WHERE bwpsi.pro_id = #{proId} AND bwpsi.is_push = 1
AND bwpsi.payMonth = DATE_FORMAT( MONTH ( CURDATE( ) ), '%Y%m' )
) nowwage ON nowwage.idCard = a.idCard
) a
WHERE a.actualAmount > 100000
</select>
</mapper>