weaver-hrm-salary/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMappe...

739 lines
26 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.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO">
<result column="id" property="id"/>
<result column="employee_id" property="employeeId"/>
<result column="bill_month" property="billMonth"/>
<result column="bill_status" property="billStatus"/>
<result column="payment_status" property="paymentStatus"/>
<result column="supplementary_month" property="supplementaryMonth"/>
<result column="supplementary_projects" property="supplementaryProjects"/>
<result column="resource_from" property="resourceFrom"/>
<result column="social_pay_org" property="socialPayOrg"/>
<result column="social_account" property="socialAccount"/>
<result column="fund_pay_org" property="fundPayOrg"/>
<result column="fund_account" property="fundAccount"/>
<result column="supplement_fund_account" property="supplementFundAccount"/>
<result column="other_pay_org" property="otherPayOrg"/>
<result column="social_scheme_id" property="socialSchemeId"/>
<result column="social_payment_base_string" property="socialPaymentBaseString"/>
<result column="fund_scheme_id" property="fundSchemeId"/>
<result column="fund_payment_base_string" property="fundPaymentBaseString"/>
<result column="other_scheme_id" property="otherSchemeId"/>
<result column="other_payment_base_string" property="otherPaymentBaseString"/>
<result column="social_per_json" property="socialPerJson"/>
<result column="social_per_sum" property="socialPerSum"/>
<result column="fund_per_json" property="fundPerJson"/>
<result column="fund_per_sum" property="fundPerSum"/>
<result column="other_per_json" property="otherPerJson"/>
<result column="other_per_sum" property="otherPerSum"/>
<result column="per_sum" property="perSum"/>
<result column="social_com_json" property="socialComJson"/>
<result column="social_com_sum" property="socialComSum"/>
<result column="fund_com_json" property="fundComJson"/>
<result column="fund_com_sum" property="fundComSum"/>
<result column="other_com_json" property="otherComJson"/>
<result column="other_com_sum" property="otherComSum"/>
<result column="com_sum" property="comSum"/>
<result column="social_sum" property="socialSum"/>
<result column="fund_sum" property="fundSum"/>
<result column="other_sum" property="otherSum"/>
<result column="total" property="total"/>
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="tenant_key" property="tenantKey"/>
<result column="payment_organization" property="paymentOrganization"/>
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t.id
, t.employee_id
, e.status as employee_status
, t.bill_month
, t.bill_status
, t.payment_status
, t.supplementary_month
, t.supplementary_projects
, t.resource_from
, t.social_pay_org
, t.social_account
, t.fund_pay_org
, t.fund_account
, t.supplement_fund_account
, t.other_pay_org
, t.social_scheme_id
, t.social_payment_base_string
, t.fund_scheme_id
, t.fund_payment_base_string
, t.other_scheme_id
, t.other_payment_base_string
, t.social_per_json
, t.social_per_sum
, t.fund_per_json
, t.fund_per_sum
, t.other_per_json
, t.other_per_sum
, t.per_sum
, t.social_com_json
, t.social_com_sum
, t.fund_com_json
, t.fund_com_sum
, t.other_com_json
, t.other_com_sum
, t.com_sum
, t.social_sum
, t.fund_sum
, t.other_sum
, t.total
, t.creator
, t.delete_type
, t.create_time
, t.update_time
, t.tenant_key
, t.payment_organization
</sql>
<sql id="paramSqlCommon" >
<if test="param.billMonth != null and param.billMonth != ''">
AND
t.bill_month = #{param.billMonth}
</if>
<if test="param.paymentStatus != null and param.paymentStatus != ''">
AND
t.payment_status = #{param.paymentStatus}
</if>
</sql>
<sql id="paramSql">
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like CONCAT('%',#{param.userName},'%')
)
</if>
</sql>
<sql id="paramSql" databaseId="oracle">
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like '%'||#{param.userName}||'%'
)
</if>
</sql>
<sql id="paramSql" databaseId="sqlserver">
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like '%'+#{param.userName}+'%'
)
</if>
</sql>
<select id="list" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns"/>
FROM
hrsa_bill_detail t
left join hrmresource e
on e.ID = t.employee_id
WHERE t.delete_type = 0
and e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
<include refid="paramSqlCommon"/>
<include refid="paramSql"/>
ORDER BY t.update_time DESC
</select>
<select id="selectList" resultMap="BaseResultMap">
SELECT
t.employee_id,t.social_sum,t.fund_sum,t.other_sum,t.fund_pay_org,t.social_pay_org,
t.other_pay_org
FROM
hrsa_bill_detail t
WHERE t.delete_type = 0
AND t.bill_month = #{billMonth}
</select>
<select id="queryList" resultMap="BaseResultMap">
SELECT
t.employee_id,t.social_per_json,t.social_com_json,
t.fund_per_json,t.fund_com_json,t.other_per_json,
t.other_com_json,t.social_per_sum,t.social_com_sum,
t.fund_per_sum,t.fund_com_sum,t.other_per_sum,
t.other_com_sum,t.per_sum,t.com_sum
FROM
hrsa_bill_detail t
WHERE t.delete_type = 0
AND t.bill_month = #{billMonth}
<if test="employeeIds != null and employeeIds.size()>0">
AND employee_id IN
<foreach collection="employeeIds" open="(" item="employeeId" separator="," close=")">
#{employeeId}
</foreach>
</if>
</select>
<select id="selectAccountIds" resultType="java.lang.Long">
SELECT DISTINCT a.ID
FROM (
SELECT t.ID,
social.social_start_time,
social.social_end_time,
fund.fund_start_time,
fund.fund_end_time,
other.other_start_time,
other.other_end_time
FROM (
SELECT e.ID
FROM hrmresource e
LEFT JOIN (SELECT
t.*
FROM
(
SELECT
log.resource_n,
log.dismissdate
FROM
bill_hrmdismiss log ) t) l
ON e.ID = l.resource_n
WHERE(
e.status != '5'
and (e.accounttype is null or e.accounttype = 0)
OR l.dismissdate IS NULL
OR l.dismissdate = ''
OR l.dismissdate
> #{time}
)
) t
LEFT JOIN hrsa_social_archives social ON t.ID = social.employee_id
LEFT JOIN hrsa_fund_archives fund ON t.ID = fund.employee_id
LEFT JOIN hrsa_other_archives other ON t.ID = other.employee_id
WHERE (
fund.fund_start_time IS NOT NULL AND fund.fund_start_time != ''
AND(
fund.fund_end_time IS NULL
OR fund.fund_end_time = ''
OR fund.fund_end_time > #{time}
)
)
OR (
social.social_start_time IS NOT NULL AND social.social_start_time != ''
-- 个税扣缴义务人
social.social_pay_org = #{paymentOrganization}
AND(
social.social_end_time IS NULL
OR social.social_end_time = ''
OR social.social_end_time > #{time}
)
)
OR (
other.other_start_time IS NOT NULL AND other.other_start_time != ''
AND(
other.other_end_time IS NULL
OR other.other_end_time = ''
OR other.other_end_time > #{time}
)
)
) a
</select>
<select id="selectAccountIds" resultType="java.lang.Long" databaseId="oracle">
SELECT DISTINCT a.ID
FROM (
SELECT t.ID,
social.social_start_time,
social.social_end_time,
fund.fund_start_time,
fund.fund_end_time,
other.other_start_time,
other.other_end_time
FROM (
SELECT e.ID
FROM hrmresource e
LEFT JOIN (SELECT
t.*
FROM
(
SELECT
log.resource_n,
log.dismissdate
FROM
bill_hrmdismiss log ) t) l
ON e.ID = l.resource_n
WHERE(
e.status != '5'
and (e.accounttype is null or e.accounttype = 0)
OR l.dismissdate IS NULL
OR l.dismissdate = ''
OR l.dismissdate
> #{time}
)
) t
LEFT JOIN hrsa_social_archives social ON t.ID = social.employee_id
LEFT JOIN hrsa_fund_archives fund ON t.ID = fund.employee_id
LEFT JOIN hrsa_other_archives other ON t.ID = other.employee_id
WHERE (
fund.fund_start_time IS NOT NULL
AND(
fund.fund_end_time IS NULL
OR fund.fund_end_time = ''
OR fund.fund_end_time > #{time}
)
)
OR (
social.social_start_time IS NOT NULL
AND(
social.social_end_time IS NULL
OR social.social_end_time = ''
OR social.social_end_time > #{time}
)
)
OR (
other.other_start_time IS NOT NULL
AND(
other.other_end_time IS NULL
OR other.other_end_time = ''
OR other.other_end_time > #{time}
)
)
) a
</select>
<!-- 根据主键删除记录 -->
<delete id="deleteById" parameterType="com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO">
UPDATE hrsa_bill_detail
SET delete_type = 1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="batchDeleteNotFile" parameterType="com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO">
DELETE
FROM hrsa_bill_detail
WHERE delete_type = 0
AND bill_month = #{billMonth}
AND payment_organization = #{paymentOrganization}
AND bill_status = 0
</delete>
<delete id="batchDelSupplementAccountDetails">
UPDATE hrsa_bill_detail
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="pos" open="(" item="po" separator="," close=")">
#{po.id}
</foreach>
</delete>
<update id="batchUnConfirmedInspectDetails">
UPDATE
hrsa_bill_inspect
SET
inspect_status = 0
WHERE
delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</update>
<update id="batchIgnoreInspectDetails">
UPDATE
hrsa_bill_inspect
SET
inspect_status = 1
WHERE
delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 批量删除 -->
<delete id="batchDelAccountDetails">
UPDATE hrsa_bill_detail
SET delete_type = 1
WHERE delete_type = 0
AND bill_month = #{billMonth}
AND payment_organization = #{paymentOrganization}
<if test="employeeIds != null and employeeIds.size()>0">
AND employee_id IN
<foreach collection="employeeIds" open="(" item="employeeId" separator="," close=")">
#{employeeId}
</foreach>
</if>
</delete>
<delete id="batchDelSupplementDetailsByIds">
UPDATE hrsa_bill_detail
SET delete_type = 1
WHERE delete_type = 0
AND employee_id IN
<foreach collection="pos" open="(" item="po" separator="," close=")">
#{po.employeeId}
</foreach>
</delete>
<insert id="batchSaveAccountDetails">
INSERT INTO hrsa_bill_detail
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
VALUES
<foreach collection="accounts" item="item" separator=",">
(
#{item.employeeId},
#{item.billMonth},
#{item.billStatus},
#{item.paymentStatus},
#{item.supplementaryMonth},
#{item.resourceFrom},
#{item.socialPayOrg},
#{item.socialAccount},
#{item.socialSchemeId},
#{item.socialPaymentBaseString},
#{item.fundPayOrg},
#{item.fundAccount},
#{item.supplementFundAccount},
#{item.fundSchemeId},
#{item.fundPaymentBaseString},
#{item.otherPayOrg},
#{item.otherSchemeId},
#{item.otherPaymentBaseString},
#{item.socialPerJson},
#{item.socialPerSum},
#{item.fundPerJson},
#{item.fundPerSum},
#{item.otherPerJson},
#{item.otherPerSum},
#{item.perSum},
#{item.socialComJson},
#{item.socialComSum},
#{item.fundComJson},
#{item.fundComSum},
#{item.otherComJson},
#{item.otherComSum},
#{item.comSum},
#{item.socialSum},
#{item.fundSum},
#{item.otherSum},
#{item.total},
#{item.creator},
#{item.createTime},
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
)
</foreach>
</insert>
<insert id="batchSaveAccountDetails" databaseId="oracle">
INSERT INTO hrsa_bill_detail
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
<foreach collection="accounts" item="item" separator="union all">
select
#{item.employeeId},
#{item.billMonth},
#{item.billStatus},
#{item.paymentStatus},
#{item.supplementaryMonth},
#{item.resourceFrom},
#{item.socialPayOrg},
#{item.socialAccount},
#{item.socialSchemeId},
#{item.socialPaymentBaseString},
#{item.fundPayOrg},
#{item.fundAccount},
#{item.supplementFundAccount},
#{item.fundSchemeId},
#{item.fundPaymentBaseString},
#{item.otherPayOrg},
#{item.otherSchemeId},
#{item.otherPaymentBaseString},
#{item.socialPerJson},
#{item.socialPerSum},
#{item.fundPerJson},
#{item.fundPerSum},
#{item.otherPerJson},
#{item.otherPerSum},
#{item.perSum},
#{item.socialComJson},
#{item.socialComSum},
#{item.fundComJson},
#{item.fundComSum},
#{item.otherComJson},
#{item.otherComSum},
#{item.comSum},
#{item.socialSum},
#{item.fundSum},
#{item.otherSum},
#{item.total},
#{item.creator},
#{item.createTime},
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
from dual
</foreach>
</insert>
<insert id="batchSaveAccountDetails" databaseId="sqlserver">
<foreach collection="accounts" item="item" separator=";">
INSERT INTO hrsa_bill_detail
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
VALUES
(
#{item.employeeId},
#{item.billMonth},
#{item.billStatus},
#{item.paymentStatus},
#{item.supplementaryMonth},
#{item.resourceFrom},
#{item.socialPayOrg},
#{item.socialAccount},
#{item.socialSchemeId},
#{item.socialPaymentBaseString},
#{item.fundPayOrg},
#{item.fundAccount},
#{item.supplementFundAccount},
#{item.fundSchemeId},
#{item.fundPaymentBaseString},
#{item.otherPayOrg},
#{item.otherSchemeId},
#{item.otherPaymentBaseString},
#{item.socialPerJson},
#{item.socialPerSum},
#{item.fundPerJson},
#{item.fundPerSum},
#{item.otherPerJson},
#{item.otherPerSum},
#{item.perSum},
#{item.socialComJson},
#{item.socialComSum},
#{item.fundComJson},
#{item.fundComSum},
#{item.otherComJson},
#{item.otherComSum},
#{item.comSum},
#{item.socialSum},
#{item.fundSum},
#{item.otherSum},
#{item.total},
#{item.creator},
#{item.createTime},
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
)
</foreach>
</insert>
<sql id="likeCondition" databaseId="mysql">
<if test="userName != null and userName != ''">
AND e.lastname like CONCAT('%',#{userName},'%')
</if>
</sql>
<sql id="likeCondition" databaseId="oracle">
<if test="userName != null and userName != ''">
AND e.lastname like '%'||#{userName}||'%'
</if>
</sql>
<sql id="likeCondition" databaseId="sqlserver">
<if test="userName != null and userName != ''">
AND e.lastname like '%'+#{userName}+'%'
</if>
</sql>
<select id="changeList" resultType="com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO">
SELECT DISTINCT
a.employeeId,
a.userName,
a.departmentId,
a.jobNum,
a.telephone,
a.departmentName,
a.position,
a.userStatus,
a.hiredate,
a.dimissionDate,
a.siSchemeId,
a.fundSchemeId,
a.otherSchemeId
FROM
(
SELECT
t.*, social.social_start_time,
social.social_end_time,
fund.fund_start_time,
fund.fund_end_time,
other.other_start_time,
other.other_end_time,
social.social_scheme_id AS siSchemeId,
fund.fund_scheme_id AS fundSchemeId,
other.other_scheme_id AS otherSchemeId
FROM
(
SELECT
e.lastname AS userName,
e.jobtitle AS jobNum,
e.departmentid AS departmentId,
d.departmentname AS departmentName,
e.STATUS AS userStatus,
e.jobtitle AS position,
h.payment_status AS paymentStatus,
e.companystartdate AS hiredate,
l.dismissdate AS dimissionDate,
e.ID AS employeeId,
e.MOBILE AS telephone
FROM
hrsa_bill_detail h
LEFT JOIN hrmresource e ON e.ID = h.employee_id AND h.delete_type = 0
LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n
LEFT JOIN hrmdepartment d ON d.ID = e.departmentid
WHERE
e.STATUS = 5 and (e.accounttype is null or e.accounttype = 0) AND h.payment_status = 0
<include refid="likeCondition"/>
AND(l.dismissdate IS NOT NULL)
)AS t
LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0
LEFT JOIN hrsa_fund_archives fund ON t.employeeId = fund.employee_id AND fund.delete_type = 0
LEFT JOIN hrsa_other_archives other ON t.employeeId = other.employee_id AND other.delete_type = 0
WHERE
(
fund.fund_start_time IS NOT NULL
AND(
fund.fund_end_time IS NULL
OR fund.fund_end_time = ''
)
)
OR(
social.social_start_time IS NOT NULL
AND(
social.social_end_time IS NULL
OR social.social_end_time = ''
)
)
OR(
other.other_start_time IS NOT NULL
AND(
other.other_end_time IS NULL
OR other.other_end_time = ''
)
)
)a
UNION
SELECT
a.employeeId,
a.userName,
a.departmentId,
a.jobNum,
a.telephone,
a.departmentName,
a.position,
a.userStatus,
a.hiredate,
a.dimissionDate,
a.siSchemeId,
a.fundSchemeId,
a.otherSchemeId
FROM
(
SELECT
t.*, social.social_start_time,
social.social_end_time,
fund.fund_start_time,
fund.fund_end_time,
other.other_start_time,
other.other_end_time,
social.social_scheme_id AS siSchemeId,
fund.fund_scheme_id AS fundSchemeId,
other.other_scheme_id AS otherSchemeId
FROM
(
SELECT
e.lastname AS userName,
e.jobtitle AS jobNum,
e.departmentid AS departmentId,
d.departmentname AS departmentName,
e.STATUS AS userStatus,
e.jobtitle AS position,
e.companystartdate AS hiredate,
l.dismissdate AS dimissionDate,
e.ID AS employeeId,
e.MOBILE AS telephone
FROM
hrmresource e
LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n
LEFT JOIN hrmdepartment d ON d.ID = e.departmentid
WHERE
e.STATUS not in (4,5,6,7)
and (e.accounttype is null or e.accounttype = 0)
<include refid="likeCondition"/>
AND(
l.dismissdate IS NULL OR l.dismissdate = ''
)
)AS t
LEFT JOIN hrsa_social_archives social ON t.employeeId = social.employee_id AND social.delete_type = 0
LEFT JOIN hrsa_fund_archives fund ON t.employeeId = fund.employee_id AND fund.delete_type = 0
LEFT JOIN hrsa_other_archives other ON t.employeeId = other.employee_id AND other.delete_type = 0
WHERE
(
(
fund.fund_start_time IS NULL
OR fund.fund_start_time = ''
)
AND(
fund.fund_end_time IS NULL
OR fund.fund_end_time = ''
)
)
AND(
(
social.social_start_time IS NULL
OR social.social_start_time = ''
)
AND(
social.social_end_time IS NULL
OR social.social_end_time = ''
)
)
AND(
(
other.other_start_time IS NULL
OR other.other_start_time = ''
)
AND(
other.other_end_time IS NULL
OR other.other_end_time = ''
)
)
)a
</select>
</mapper>