jhprjv2/yanzhu-jh/src/main/resources/mapper/project/SurProjectInsuranceMapper.xml

266 lines
13 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.yanzhu.jh.project.mapper.SurProjectInsuranceMapper">
<resultMap type="SurProjectInsurance" id="SurProjectInsuranceResult">
<result property="id" column="id" />
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="deptId" column="dept_id" />
<result property="deptName" column="dept_name" />
<result property="insuranceType" column="insurance_type" />
<result property="insuranceNumber" column="insurance_number" />
<result property="insuranceFile" column="insurance_file" />
<result property="insuranceState" column="insurance_state" />
<result property="beginDate" column="begin_date" />
<result property="endDate" column="end_date" />
<result property="companyName" column="company_name" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="insuranceTypeName" column="insurance_type_name" />
</resultMap>
<sql id="selectSurProjectInsuranceVo">
select spi.id, spi.project_id, sp.projectName as project_name, spi.dept_id, d.dept_name, spi.insurance_type, sdd.dict_label as insurance_type_name, spi.insurance_number, spi.insurance_file, spi.insurance_state, spi.begin_date, spi.end_date, spi.company_name, spi.is_del, spi.create_by, spi.create_time, spi.update_by, spi.update_time, spi.remark from sur_project_insurance spi
left join sur_project sp on sp.id=spi.project_id
left JOIN sys_dict_data sdd ON sdd.dict_type = 'sur_project_insurance_type' AND spi.insurance_type = sdd.dict_value
left join sys_dept d on d.dept_id = spi.dept_id
</sql>
<select id="selectProjectInsuranceListByProjectId" parameterType="Long" resultMap="SurProjectInsuranceResult">
SELECT x.*,y.dict_label AS insurance_type_name FROM (
SELECT * FROM sys_dict_data WHERE dict_type = 'sur_project_insurance_type' AND STATUS=0
) Y
LEFT JOIN
(
SELECT a.*,b.projectName project_name, c.dept_name FROM sur_project_insurance a,sur_project b,sys_dept c
WHERE a.project_id=b.id AND a.dept_id=c.dept_id AND IF(a.is_del IS NULL ,0,a.is_del) =0 AND a.project_id=#{projectId}
) AS X
ON x.insurance_type=y.dict_value
</select>
<select id="selectSurProjectInsuranceList" parameterType="SurProjectInsurance" resultMap="SurProjectInsuranceResult">
SELECT
spi.id,
spi.project_id,
sp.projectName as project_name,
d.dept_name,
spi.insurance_type,
sdd.dict_label as insurance_type_name,
spi.insurance_number,
spi.insurance_file,
CASE WHEN spi.insurance_state IS NULL THEN 0 ELSE 1 END AS insurance_state,
spi.begin_date,
spi.end_date,
spi.company_name,
spi.is_del,
spi.create_by,
spi.create_time,
spi.update_by,
spi.update_time,
spi.remark
FROM
sur_project sp
left join sur_project_unit_info spui on spui.projectId=sp.id and spui.unitType=2
left join sys_dept d on d.dept_id = spui.unitId
RIGHT JOIN sys_dict_data sdd ON sdd.dict_type = 'sur_project_insurance_type'
LEFT JOIN sur_project_insurance spi ON spi.project_id = sp.id
AND spi.insurance_type = sdd.dict_value
AND spi.is_del = 0
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> left join sur_project_userinfo spu on spu.project_id = sp.id</if>
<where>
and sp.isDel=0
and spui.del_flag=0
and d.del_flag=0
and sdd.dict_type = 'sur_project_insurance_type'
<if test="projectId != null "> and sp.id = #{projectId}</if>
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="deptName != null and deptName != ''"> and d.dept_name like concat('%', #{deptName}, '%')</if>
<if test="insuranceNumber != null and insuranceNumber != ''"> and spi.insurance_number like concat('%', #{insuranceNumber}, '%')</if>
<if test="companyName != null and companyName != ''"> and spi.company_name like concat('%', #{companyName}, '%')</if>
<if test='insuranceState == "0"'>and spi.insurance_state IS NULL</if>
<if test='insuranceState == "1"'>and spi.insurance_state IS NOT NULL</if>
<if test="insuranceType != null and insuranceType != ''"> and spi.insurance_type = #{insuranceType}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and spui.unitId = #{nowDept}</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> and spu.user_id = #{nowUser} and spu.is_del=0</if>
</where>
ORDER BY
sp.projectSort,
sdd.dict_sort
</select>
<select id="selectSurProjectInsuranceListv2" parameterType="SurProjectInsurance" resultMap="SurProjectInsuranceResult">
SELECT
spi.id,
spi.project_id,
sp.projectName,
sdd.dict_value,
sdd.dict_label as insurance_type_name,
spi.insurance_number,
spi.insurance_file,
CASE WHEN spi.insurance_state IS NULL THEN 0 ELSE 1 END AS insurance_state,
spi.begin_date,
spi.end_date,
spi.company_name,
spi.is_del,
spi.create_by,
spi.create_time,
spi.update_by,
spi.update_time,
spi.remark
FROM
sur_project sp
RIGHT JOIN sys_dict_data sdd ON sdd.dict_type = 'sur_project_insurance_type'
LEFT JOIN sur_project_insurance spi ON spi.project_id = sp.id
AND spi.insurance_type = sdd.dict_value
AND spi.dept_id = #{deptId}
AND spi.is_del = 0
<where>
and sdd.dict_type = 'sur_project_insurance_type'
<if test="projectId != null "> and sp.id = #{projectId}</if>
</where>
ORDER BY
sp.projectSort,
sdd.dict_sort
</select>
<select id="findGroupCountByProjectId" parameterType="Long" resultType="map">
SELECT
spi.insurance_type as insuranceType,
sdd.dict_label as insuranceTypeName,
count(1) AS total
FROM
sur_project_insurance spi
LEFT JOIN sys_dict_data sdd ON sdd.dict_type = 'sur_project_insurance_type' and spi.insurance_type = sdd.dict_value
WHERE
spi.is_del = 0
AND spi.project_id = #{projectId}
GROUP BY
spi.insurance_type
order by sdd.dict_sort
</select>
<!--查询项目保险统计列表-->
<select id="selectBgscreenInsuranceList" parameterType="SurProjectInsurance" resultType="map">
SELECT
sp.id,
sp.projectName,
CASE
WHEN azx.insurance_state IS NULL THEN
'未办理'
ELSE
'已办理'
END AS azxstate,
CASE
WHEN yqx.insurance_state IS NULL THEN
'未办理'
ELSE
'已办理'
END AS yqxstate
FROM
sur_project sp
LEFT JOIN sur_project_insurance azx ON azx.project_id = sp.id
AND azx.insurance_type = 1
LEFT JOIN sur_project_insurance yqx ON yqx.project_id = sp.id
AND yqx.insurance_type = 2
where sp.isDel=0
<if test="nowDept != null and nowDept != ''"> and sp.deptId = #{nowDept}</if>
<if test="projectId != null "> and sp.id = #{projectId}</if>
ORDER BY sp.projectSort ASC
</select>
<select id="selectSurProjectInsuranceById" parameterType="Long" resultMap="SurProjectInsuranceResult">
<include refid="selectSurProjectInsuranceVo"/>
where spi.id = #{id}
</select>
<insert id="insertSurProjectInsurance" parameterType="SurProjectInsurance" useGeneratedKeys="true" keyProperty="id">
insert into sur_project_insurance
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="insuranceType != null">insurance_type,</if>
<if test="insuranceNumber != null">insurance_number,</if>
<if test="insuranceFile != null">insurance_file,</if>
<if test="insuranceState != null">insurance_state,</if>
<if test="beginDate != null">begin_date,</if>
<if test="endDate != null">end_date,</if>
<if test="companyName != null">company_name,</if>
<if test="isDel != null">is_del,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="insuranceType != null">#{insuranceType},</if>
<if test="insuranceNumber != null">#{insuranceNumber},</if>
<if test="insuranceFile != null">#{insuranceFile},</if>
<if test="insuranceState != null">#{insuranceState},</if>
<if test="beginDate != null">#{beginDate},</if>
<if test="endDate != null">#{endDate},</if>
<if test="companyName != null">#{companyName},</if>
<if test="isDel != null">#{isDel},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateSurProjectInsurance" parameterType="SurProjectInsurance">
update sur_project_insurance
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="insuranceType != null">insurance_type = #{insuranceType},</if>
<if test="insuranceNumber != null">insurance_number = #{insuranceNumber},</if>
<if test="insuranceFile != null">insurance_file = #{insuranceFile},</if>
<if test="insuranceState != null">insurance_state = #{insuranceState},</if>
<if test="beginDate != null">begin_date = #{beginDate},</if>
<if test="endDate != null">end_date = #{endDate},</if>
<if test="companyName != null">company_name = #{companyName},</if>
<if test="isDel != null">is_del = #{isDel},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSurProjectInsuranceById" parameterType="Long">
delete from sur_project_insurance where id = #{id}
</delete>
<delete id="deleteSurProjectInsuranceByIds" parameterType="String">
delete from sur_project_insurance where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="findInsuranceByParams" parameterType="SurProjectInsurance" resultType="int">
select count(1) as total from sur_project_insurance where is_del=0 and project_id = #{projectId} and dept_id = #{deptId} and insurance_type = #{insuranceType}
</select>
</mapper>