hd_real_name/target/classes/mappers/basic/TeamMangerMapper.xml

428 lines
17 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.basic.dao.TeamManagerDao">
<select id="getTeam" resultType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean" >
select
a.ID ,
a.NAME as name,
bq.SUB_NAME as subName,
a.EIN_TIME,
bstt.`NAME` as teamType,
a.EXIT_TIME
from
bm_sub_team a
LEFT JOIN bm_subcontractor bq ON a.SUB_ID = bq.ID
LEFT JOIN pm_company pc ON pc.id = bq.COMPANY_ID
LEFT JOIN bm_sub_team_type bstt ON a.team_type_id = bstt.ID
where
a.IS_ACTIVE = 1
<if test="params.companyId!=null and params.companyId!='' ">
and pc.ID =#{params.companyId}
</if>
<if test="params.name != null and params.name != '' ">
and a.`NAME` like concat(concat ('%',#{params.name},'%'))
</if>
<if test="params.subName != null and params.subName != '' ">
and bq.`SUB_NAME` like concat(concat ('%',#{params.subName},'%'))
</if>
order by a.EIN_TIME desc
limit #{offset}, #{limit}
</select>
<select id="getTeamCount" resultType="java.lang.Integer">
SELECT COUNT(*) FROM bm_sub_team a
left join bm_subcontractor bq on a.SUB_ID = bq.ID
left join pm_company pc on pc.id = bq.COMPANY_ID
where a.IS_ACTIVE = 1
<if test="params.companyId!=null and params.companyId!='' ">
and pc.ID =#{params.companyId}
</if>
<if test="params.subName != null and params.subName != '' ">
and bq.`SUB_NAME` like concat(concat ('%',#{params.subName},'%'))
</if>
<if test="params.name!=null and params.name!='' ">
and a.`NAME` like concat(concat ('%',#{params.name},'%'))
</if>
</select>
<!--新增班组-->
<insert id="insertTeamManager" parameterType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean">
insert into bm_sub_team (NAME,SUB_ID,team_type_id,EIN_TIME,EXIT_TIME,IS_ACTIVE,UPDATE_TIME)
select #{name},#{subId},#{teamType},#{einTime},#{exitTime},'1',now() from dual
where NOT EXISTS (SELECT name FROM bm_sub_team WHERE name = #{name} and sub_id = #{subId} and is_active = 1)
</insert>
<update id="deleteTeamManager" parameterType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean">
update bm_sub_team set IS_ACTIVE = 0 WHERE ID = #{id}
</update>
<!--获取分包商-->
<select id="getSubName" parameterType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean" resultType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean" >
select bs.ID as subId,bs.`SUB_NAME` as subName
from bm_subcontractor bs
left join pm_company pc on pc.id = bs.COMPANY_ID
where bs.is_active = '1'
<if test="companyId!=null and companyId!='' ">
and pc.ID =#{companyId}
</if>
</select>
<select id="getTeamList" resultType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean">
SELECT bst.ID as id,bst.`NAME` as name,COUNT(bwr.TEAM_ID) as teamTotalNumber,bs.SUB_NAME as subName,
bwr.PROJECT_ID as proId,bp.`NAME` as proName FROM bm_sub_team bst
LEFT JOIN bm_worker_record bwr ON bst.ID = bwr.TEAM_ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_subcontractor bs ON bst.SUB_ID = bs.id
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.NAME like concat('%', #{params.keyWord}, '%')
)
</if>
and bst.IS_ACTIVE = '1'
</where>
GROUP BY bst.ID
limit #{offset}, #{limit}
</select>
<select id="getTeamWorkInfoList" resultType="com.bonus.gzrn.rnbmw.basic.entity.TeamManagerBean">
SELECT bst.ID as id,bst.`NAME` as name,COUNT(bwr.TEAM_ID) as teamTotalNumber,bs.SUB_NAME as subName,
bwr.PROJECT_ID as proId,GROUP_CONCAT(DISTINCT bp.`NAME`) as proName,bstt.NAME as teamType
FROM bm_sub_team bst
LEFT JOIN bm_worker_record bwr ON bst.ID = bwr.TEAM_ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_subcontractor bs ON bst.SUB_ID = bs.id
LEFT JOIN bm_sub_team_type bstt ON bst.team_type_id = bstt.ID
LEFT JOIN bm_sub_pro_relation bspr ON bspr.sub_id = bst.SUB_ID
LEFT JOIN bm_project bp ON bspr.pro_id = bp.ID
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.NAME like concat('%', #{params.keyWord}, '%')
)
</if>
<if test="params.teamType != null and params.teamType != ''">
and bstt.ID = #{params.teamType}
</if>
and bst.IS_ACTIVE = '1'
</where>
GROUP BY bst.ID
limit #{offset}, #{limit}
</select>
<select id="getIdNumberByTeam" resultType="java.lang.String">
SELECT bwr.FOREMAN_IDNUMBER FROM bm_worker_record bwr
WHERE TEAM_ID = #{teamId}
</select>
<select id="getTeamCountRed" resultType="java.lang.Integer">
SELECT COUNT(1) FROM bm_redlist_worker where id_number in
<foreach item="item" collection="list" separator="," open="(" close=")" index="index" >
#{item}
</foreach>
</select>
<select id="getListIdByTeamId" resultType="java.lang.String">
SELECT ID_NUMBER FROM bm_worker_record WHERE TEAM_ID = #{teamId}
</select>
<select id="getTeamEinNumber" resultType="java.lang.Integer">
select count(1) from bm_worker_record where ein_status = '1' and TEAM_ID = #{teamId}
</select>
<select id="getTeamExitNumber" resultType="java.lang.Integer">
select count(1) from bm_worker_record where ein_status = '0' and TEAM_ID = #{teamId}
</select>
<select id="getProNameByTeamId" resultType="java.lang.String">
SELECT bp.name FROM bm_worker_record bwr
LEFT JOIN bm_project bp ON bp.ID = bwr.PROJECT_ID
WHERE bwr.ID_NUMBER = #{teamIdCard}
</select>
<select id="isExcellentByIdCard" resultType="java.lang.Integer">
SELECT COUNT(1) FROM bm_outstanding_team
WHERE foreman_idnumber = #{teamIdCard}
AND IS_ACTIVE = '1'
</select>
<select id="getTeamListCount" resultType="java.lang.Integer">
SELECT count(bst.ID) FROM bm_sub_team bst
LEFT JOIN bm_worker_record bwr ON bst.ID = bwr.TEAM_ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_subcontractor bs ON bst.SUB_ID = bs.id
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.NAME like concat('%', #{params.keyWord}, '%')
)
</if>
and bst.IS_ACTIVE = '1'
</where>
GROUP BY bst.ID
</select>
<select id="getPersonByTeamId" resultType="com.bonus.gzrn.rnbmw.basic.entity.WorkPersonBean">
SELECT bwr.ID_NUMBER as idCard,sdd.`name` as post,bw.`NAME` as name,bwr.EIN_TIME as einTime,
bst.`NAME` as teamName,bs.SUB_NAME AS subName,bwr.EXIT_TIME as exitTime,
bp.`NAME` as proName,bwr.ein_status as einStatus,brw.ID_NUMBER as isRed
FROM bm_worker_record bwr
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID
LEFT JOIN bm_redlist_worker brw ON bwr.ID_NUMBER = brw.ID_NUMBER
WHERE bwr.TEAM_ID = #{params.teamId}
<if test="params.einStatus == 1 or params.einStatus == '1'">
and bwr.ein_status = #{params.einStatus}
</if>
<if test="params.einStatus == 0 or params.einStatus == '0'">
and bwr.ein_status = #{params.einStatus}
</if>
<if test="params.einStatus == 2 or params.einStatus == '2'">
and brw.ID_NUMBER is not null
</if>
<if test="params.redDom == 1 or params.redDom == '1'">
and brw.ID_NUMBER is not null
</if>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bw.`NAME` like concat('%', #{params.keyWord}, '%') or
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.`NAME` like concat('%', #{params.keyWord}, '%')
)
</if>
limit #{offset}, #{limit}
</select>
<select id="getWorkPersonCount" resultType="java.lang.Integer">
SELECT COUNT(bwr.ID_NUMBER)
FROM bm_worker_record bwr
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID
LEFT JOIN bm_redlist_worker brw ON bwr.ID_NUMBER = brw.ID_NUMBER
WHERE bwr.TEAM_ID = #{params.teamId}
<if test="params.einStatus == 1 or params.einStatus == '1'">
and bwr.ein_status = #{params.einStatus}
</if>
<if test="params.einStatus == 0 or params.einStatus == '0'">
and bwr.ein_status = #{params.einStatus}
</if>
<if test="params.einStatus == 2 or params.einStatus == '2'">
and brw.ID_NUMBER is not null
</if>
<if test="params.redDom == 1 or params.redDom == '1'">
and brw.ID_NUMBER is not null
</if>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bw.`NAME` like concat('%', #{params.keyWord}, '%') or
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.`NAME` like concat('%', #{params.keyWord}, '%')
)
</if>
</select>
<select id="getPersonQueryList" resultType="com.bonus.gzrn.rnbmw.basic.entity.WorkPersonBean">
SELECT bw.`NAME` as name,bwr.ID_NUMBER as idCard ,sdd.`name` as post,bwc.contractType,bwp.BANK_CARD as bankCard,
bwt.trainStatus,bwt.examStatus,bwt.examScore,bwr.ein_status as einStatus,
bst.`NAME` as teamName,bs.SUB_NAME AS subName,bp.`NAME` as proName,sdd.id as certificate,
IF(( ifnull( `brw`.`id_number`, '白' ) = '白' ), '白', '红' ) AS `isRed`
FROM bm_worker_record bwr
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID AND sdd.is_active = 1
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER AND bw.IS_ACTIVE = 1
LEFT JOIN bm_worker_contract bwc ON bwr.ID_NUMBER = bwc.idCard
LEFT JOIN bm_worker_payroll bwp ON bwr.ID_NUMBER = bwp.ID_NUMBER
LEFT JOIN bm_worker_train bwt ON bwr.ID_NUMBER = bwt.id_number
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID AND bst.IS_ACTIVE = 1
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID AND bs.IS_ACTIVE = 1
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID AND bp.is_active = 1
LEFT JOIN bm_redlist_worker brw ON brw.id_number = bwr.ID_NUMBER
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bwr.ID_NUMBER like concat('%', #{params.keyWord}, '%') or
bw.`NAME` like concat('%', #{params.keyWord}, '%') or
sdd.`name` like concat('%', #{params.keyWord}, '%') or
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bp.`NAME` like concat('%', #{params.keyWord}, '%')
)
</if>
<if test="params.contractType != null and params.contractType !='' ">
and bwc.contractType like concat('%', #{params.contractType}, '%')
</if>
<if test="params.bankCard != null and params.bankCard !='' ">
<if test="params.bankCard == '已上传'">
and bwp.BANK_CARD IS NOT NULL
</if>
<if test="params.bankCard == '未上传'">
and bwp.BANK_CARD IS NULL
</if>
</if>
<if test="params.trainStatus != null and params.trainStatus !='' ">
and bwt.trainStatus = #{params.trainStatus}
</if>
<if test="params.examStatus != null and params.examStatus !='' ">
and bwt.examStatus = #{params.examStatus}
</if>
<if test="params.einStatus != null and params.einStatus !='' ">
and bwr.ein_status = #{params.einStatus}
</if>
</where>
GROUP BY bwr.ID_NUMBER
<if test="params.isRed != null and params.isRed !='' ">
having isRed = #{params.isRed}
</if>
limit #{offset}, #{limit}
</select>
<select id="getHistoryCount" resultType="com.bonus.gzrn.rnbmw.basic.entity.WorkPersonBean">
SELECT COUNT(distinct SUB_ID) as historySubCount,COUNT(distinct PROJECT_ID) as historyProCount,
COUNT(distinct TEAM_ID) as historyTeamCount
FROM bm_worker_attend_history
WHERE ID_NUMBER = #{idNumber}
</select>
<select id="getCertificateNameByPost" resultType="java.lang.String">
SELECT bct.name FROM bm_certificate_post bcp
LEFT JOIN bm_certificate_type bct ON bcp.certificate_id = bct.id
WHERE post_id = #{postId}
</select>
<select id="getRedOrWhiteByIdCard" resultType="java.lang.String">
SELECT is_red_or_white FROM v_white_worker
WHERE ID_NUMBER = #{idCard}
</select>
<select id="getPersonQueryListCount" resultType="com.bonus.gzrn.rnbmw.basic.entity.WorkPersonBean">
SELECT bwr.ID_NUMBER,IF(( ifnull( `brw`.`id_number`, '白' ) = '白' ), '白', '红' ) AS `is_red_or_white`
FROM bm_worker_record bwr
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID AND ( `sdd`.`is_active` = 1 )
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER AND ( `bw`.`IS_ACTIVE` = 1 )
LEFT JOIN bm_worker_contract bwc ON bwr.ID_NUMBER = bwc.idCard
LEFT JOIN bm_worker_payroll bwp ON bwr.ID_NUMBER = bwp.ID_NUMBER
LEFT JOIN bm_worker_train bwt ON bwr.ID_NUMBER = bwt.id_number
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID AND ( `bst`.`IS_ACTIVE` = 1 )
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID AND ( `bs`.`IS_ACTIVE` = 1 )
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID AND ( `bp`.`is_active` = 1 )
LEFT JOIN bm_redlist_worker brw ON brw.id_number = bwr.ID_NUMBER
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bwr.ID_NUMBER like concat('%', #{params.keyWord}, '%') or
bw.`NAME` like concat('%', #{params.keyWord}, '%') or
sdd.`name` like concat('%', #{params.keyWord}, '%') or
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bp.`NAME` like concat('%', #{params.keyWord}, '%')
)
</if>
<if test="params.contractType != null and params.contractType !='' ">
and bwc.contractType like concat('%', #{params.contractType}, '%')
</if>
<if test="params.bankCard != null and params.bankCard !='' ">
<if test="params.bankCard == '已上传'">
and bwp.BANK_CARD IS NOT NULL
</if>
<if test="params.bankCard == '未上传'">
and bwp.BANK_CARD IS NULL
</if>
</if>
<if test="params.trainStatus != null and params.trainStatus !='' ">
and bwt.trainStatus = #{params.trainStatus}
</if>
<if test="params.examStatus != null and params.examStatus !='' ">
and bwt.examStatus = #{params.examStatus}
</if>
<if test="params.einStatus != null and params.einStatus !='' ">
and bwr.ein_status = #{params.einStatus}
</if>
</where>
GROUP BY bwr.ID_NUMBER
<if test="params.isRed != null and params.isRed !='' ">
having is_red_or_white = #{params.isRed}
</if>
</select>
<select id="getPersonRecordById" resultType="com.bonus.gzrn.rnbmw.basic.entity.WorkPersonBean">
SELECT bwr.ID_NUMBER as idCard,sdd.`name` as post,bw.`NAME` as name,bwr.EIN_TIME as einTime,
bst.`NAME` as teamName,bs.SUB_NAME AS subName,bp.`NAME` as proName,bwr.ein_status as einStatus,
brw.ID_NUMBER as isRed,bwr.EXIT_TIME as exitTime
FROM bm_worker_attend_history bwar
LEFT JOIN bm_worker_record bwr ON bwar.ID_NUMBER = bwr.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID
LEFT JOIN bm_redlist_worker brw ON bwr.ID_NUMBER = brw.ID_NUMBER
WHERE bwar.ID_NUMBER = #{params.idCard}
limit #{offset}, #{limit}
</select>
<select id="getPersonRecordCount" resultType="java.lang.Integer">
SELECT COUNT(bwar.ID_NUMBER)
FROM bm_worker_attend_history bwar
LEFT JOIN bm_worker_record bwr ON bwar.ID_NUMBER = bwr.ID_NUMBER
LEFT JOIN sys_dic_detail sdd ON bwr.POST_ID = sdd.ID
LEFT JOIN bm_worker bw ON bwr.ID_NUMBER = bw.ID_NUMBER
LEFT JOIN bm_sub_team bst ON bwr.TEAM_ID = bst.ID
LEFT JOIN bm_subcontractor bs ON bwr.SUB_ID = bs.ID
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID
LEFT JOIN bm_redlist_worker brw ON bwr.ID_NUMBER = brw.ID_NUMBER
WHERE bwar.ID_NUMBER = #{params.idCard}
</select>
<select id="getTeamWorkInfoListCount" resultType="java.lang.Integer">
SELECT COUNT(bst.ID) FROM bm_sub_team bst
LEFT JOIN (SELECT TEAM_ID,FOREMAN_IDNUMBER,PROJECT_ID from bm_worker_record GROUP BY TEAM_ID) bwr ON bst.ID = bwr.TEAM_ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_project bp ON bwr.PROJECT_ID = bp.ID AND bwr.FOREMAN_IDNUMBER IS NOT NULL
LEFT JOIN bm_subcontractor bs ON bst.SUB_ID = bs.id
LEFT JOIN bm_sub_team_type bstt ON bst.team_type_id = bstt.ID
<where>
<if test="params.keyWord != null and params.keyWord != ''">
and (
bst.`NAME` like concat('%', #{params.keyWord}, '%') or
bs.SUB_NAME like concat('%', #{params.keyWord}, '%') or
bp.NAME like concat('%', #{params.keyWord}, '%')
)
</if>
<if test="params.teamType != null and params.teamType != ''">
and bstt.ID = #{params.teamType}
</if>
and bst.IS_ACTIVE = '1'
</where>
</select>
</mapper>