weaver-hrm-salary/src/com/engine/salary/mapper/datacollection/EmployMapper.xml

635 lines
24 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.datacollection.EmployMapper">
<!-- 员工基本信息 -->
<select id="listEmployee" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.ID as employeeId,
e.LASTNAME as username,
d.DEPARTMENTNAME as departmentName,
e.status,
e.mobile,
e.workcode,
'false' as extEmp
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
where e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
</select>
<select id="getEmployeeByIds" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.certificatenum as idNo,
e.status as status,
e.workcode as workcode,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.workyear as workYear
from hrmresource e
where e.status not in (7) and (e.accounttype is null or e.accounttype = 0)
<if test="collection != null and collection.size()>0">
AND e.id IN
<foreach collection="collection" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<select id="getEmployeeByIdsAll" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
d.departmentname as departmentName,
d.id as departmentId,
sc.SUBCOMPANYNAME as subcompanyName,
sc.id as subcompanyid,
c.jobtitlename as jobtitleName,
c.id as jobtitleId,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.status as status,
e.workcode as workcode,
e.sex as sex,
e.email as email,
e.telephone as telephone,
e.jobcall as jobcall,
e.birthday as birthday,
e.certificatenum as idNo,
c.id as jobtitleId,
e.enddate as dismissdate,
e.workyear,
e.companyworkyear
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
left join hrmjobtitles c on e.jobtitle = c.id
left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id
where e.status not in (7) and (e.accounttype is null or e.accounttype = 0)
<if test="collection != null and collection.size()>0">
AND e.id IN
<foreach collection="collection" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<select id="listPositionInfo" resultType="com.engine.salary.entity.hrm.PositionInfo">
select t.id,
t.jobtitlename as name
from hrmjobtitles t
where 1=1
<if test="collection != null and collection.size()>0">
AND t.id IN
<foreach collection="collection" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<select id="listByParams" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.certificatenum as idNo,
e.workcode as workcode,
d.departmentname as departmentName,
d.id as departmentId,
c.jobtitlename as jobtitleName,
c.id as jobtitleId,
e.companystartdate as companystartdate,
e.mobile as mobile
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
left join hrmjobtitles c on e.jobtitle = c.id
WHERE e.status not in (7) and (e.accounttype is null or e.accounttype = 0)
<if test="params != null and params.size() > 0">
AND ( 1=2
<foreach collection="params" item="param">
OR
(
<if test="param.targetType == 'EMPLOYEE'">
e.id IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.targetType == 'DEPT'">
d.id IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.targetType == 'POSITION'">
c.id IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.targetType == 'SUBCOMPANY'">
e.subcompanyid1 IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.employeeStatus != null and param.employeeStatus.size() > 0">
AND e.status IN
<foreach collection="param.employeeStatus" open="(" item="status" separator="," close=")">
#{status}
</foreach>
</if>
<!-- &#45;&#45; 在职-->
<!-- <if test="param.employeeStatus != null and param.employeeStatus == 'normal'">-->
<!-- AND em.status in (0,1,2,3)-->
<!-- </if>-->
<!-- &#45;&#45; 离职-->
<!-- <if test="param.employeeStatus != null and param.employeeStatus == 'unavailable'">-->
<!-- AND em.status in (4,5,6)-->
<!-- </if>-->
)
</foreach>
)
</if>
</select>
<select id="listByVirtualParams" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select h.id as employeeId,
h.lastname as username,
h.status as status,
h.certificatenum as idNo,
h.workcode as workcode,
h.companystartdate as companystartdate,
h.mobile as mobile
from hrmresourcevirtual v
left join hrmresource h on v.resourceid=h.id
WHERE h.status not in (7) and (h.accounttype is null or h.accounttype = 0)
<if test="params != null and params.size() > 0">
AND ( 1=2
<foreach collection="params" item="param">
OR
(
<if test="param.targetType == 'DEPT'">
v.departmentid IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.targetType == 'SUBCOMPANY'">
v.subcompanyid IN
<foreach collection="param.targetIds" open="(" item="targetId" separator="," close=")">
#{targetId}
</foreach>
</if>
<if test="param.employeeStatus != null and param.employeeStatus.size() > 0">
AND h.status IN
<foreach collection="param.employeeStatus" open="(" item="status" separator="," close=")">
#{status}
</foreach>
</if>
<!-- &#45;&#45; 在职-->
<!-- <if test="param.employeeStatus != null and param.employeeStatus == 'normal'">-->
<!-- AND em.status in (0,1,2,3)-->
<!-- </if>-->
<!-- &#45;&#45; 离职-->
<!-- <if test="param.employeeStatus != null and param.employeeStatus == 'unavailable'">-->
<!-- AND em.status in (4,5,6)-->
<!-- </if>-->
)
</foreach>
)
</if>
</select>
<select id="getEmployeeById" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.certificatenum as idNo,
e.workcode as workcode,
d.departmentname as departmentName,
d.id as departmentId,
c.jobtitlename as jobtitleName,
c.id as jobtitleId,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.enddate as dismissdate,
sc.SUBCOMPANYNAME as subcompanyName,
sc.id as subcompanyid
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id
left join hrmjobtitles c on e.jobtitle = c.id
where e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
AND e.id = #{id}
</select>
<sql id="paramSql">
<!-- 关键字(姓名、 -->
<if test="userName != null and userName != ''">
AND
(
a.lastname like CONCAT('%',#{userName},'%')
)
</if>
</sql>
<sql id="paramSql" databaseId="oracle">
<if test="userName != null and userName != ''">
AND
(
a.lastname like '%'||#{userName}||'%'
)
</if>
</sql>
<sql id="paramSql" databaseId="sqlserver">
<if test="userName != null and userName != ''">
AND
(
a.lastname like '%'+#{userName}+'%'
)
</if>
</sql>
<select id="listAllFields" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.workcode as workcode,
e.certificatenum as idNo,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.subcompanyid1 as subcompanyid,
d.departmentname as departmentName,
d.id as departmentId,
c.jobtitlename as jobtitleName,
c.id as jobtitleId
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
left join hrmjobtitles c on e.jobtitle = c.id
where e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
</select>
<select id="listAll" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.workcode as workcode,
e.certificatenum as idNo,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.subcompanyid1 as subcompanyid,
e.departmentid as departmentId,
d.DEPARTMENTNAME as departmentName,
e.jobtitle as jobtitleId
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
where e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
</select>
<select id="listAllForReport" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.workcode as workcode,
e.certificatenum as idNo,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.departmentid as departmentId,
e.subcompanyid1 as subcompanyid,
e.costcenterid as costcenterId,
e.locationid as locationId,
e.jobtitle as jobtitleId,
d.departmentname as departmentName,
d.id as departmentId
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
where e.status not in (7)
and (e.accounttype is null or e.accounttype = 0)
</select>
<select id="getDeptInfoList" resultType="com.engine.salary.entity.hrm.DeptInfo">
select d.departmentname as name,
d.id as id
from hrmdepartment d
where 1=1
<if test="departmentIds != null and departmentIds.size()>0">
AND d.id IN
<foreach collection="departmentIds" open="(" item="departmentId" separator="," close=")">
#{departmentId}
</foreach>
</if>
</select>
<select id="getVirtualDeptInfoList" resultType="com.engine.salary.entity.hrm.DeptInfo">
select d.departmentname as name,
d.id as id
from hrmdepartmentvirtual d
where 1=1
<if test="virtualDepartmentIds != null and virtualDepartmentIds.size()>0">
AND d.id IN
<foreach collection="virtualDepartmentIds" open="(" item="virtualDepartmentId" separator="," close=")">
#{virtualDepartmentId}
</foreach>
</if>
</select>
<select id="getSubCompanyInfoList" resultType="com.engine.salary.entity.hrm.SubCompanyInfo">
select d.subcompanyname as name,
d.id as id
from hrmsubcompany d
where 1=1
<if test="subDepartmentIds != null and subDepartmentIds.size()>0">
AND d.id IN
<foreach collection="subDepartmentIds" open="(" item="subDepartmentId" separator="," close=")">
#{subDepartmentId}
</foreach>
</if>
</select>
<select id="getVirtualSubCompanyInfoList" resultType="com.engine.salary.entity.hrm.SubCompanyInfo">
select d.subcompanyname as name,
d.id as id
from hrmsubcompanyvirtual d
where 1=1
<if test="virtualSubCompanyIds != null and virtualSubCompanyIds.size()>0">
AND d.id IN
<foreach collection="virtualSubCompanyIds" open="(" item="virtualSubCompanyId" separator="," close=")">
#{virtualSubCompanyId}
</foreach>
</if>
</select>
<select id="listHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO">
select e.id as employeeId,
e.lastname as username
from hrmresource e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like CONCAT('%',#{param.userName},'%')
)
</if>
</select>
<select id="listHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO" databaseId="sqlserver">
select e.id as employeeId,
e.lastname as username
from hrmresource e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like '%'+#{param.userName}+'%'
)
</if>
</select>
<select id="listHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO" databaseId="oracle">
select e.id as employeeId,
e.lastname as username
from hrmresource e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.lastname like '%'||#{param.userName}||'%'
)
</if>
</select>
<select id="getDeptInfosByName" resultType="com.engine.salary.entity.hrm.DeptInfo">
select d.departmentname as name,
d.id as id,
d.subcompanyid1 as subcompanyid1
from hrmdepartment d
where d.departmentname = #{name}
</select>
<select id="getSubCompanyInfosByName" resultType="com.engine.salary.entity.hrm.SubCompanyInfo">
select d.subcompanyname as name,
d.id as id
from hrmsubcompany d
where d.subcompanyname = #{name}
</select>
<select id="getDeptInfoById" resultType="com.engine.salary.entity.hrm.DeptInfo">
select d.departmentname as name,
d.id as id,
d.subcompanyid1 as subcompanyid1
from hrmdepartment d
where d.id = #{id}
</select>
<select id="listByDismissDate" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.certificatenum as idNo,
e.workcode as workcode,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.enddate as dismissdate
from hrmresource e
where e.status in (4,5,6)
AND e.enddate >= #{dismissDate}
</select>
<select id="listExtHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO">
select e.id as employeeId,
e.username as username
from hrsa_external_employee e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.username like CONCAT('%',#{param.userName},'%')
)
</if>
</select>
<select id="listExtHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO" databaseId="sqlserver">
select e.id as employeeId,
e.username as username
from hrsa_external_employee e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.username like '%'+#{param.userName}+'%'
)
</if>
</select>
<select id="listExtHrmInfoByIdAndName" resultType="com.engine.salary.entity.hrm.dto.HrmInfoDTO" databaseId="oracle">
select e.id as employeeId,
e.username as username
from hrsa_external_employee e
where 1=1
<if test="param.ids != null and param.ids.size()>0">
AND e.id IN
<foreach collection="param.ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="param.userName != null and param.userName != ''">
AND
(
e.username like '%'||#{param.userName}||'%'
)
</if>
</select>
<select id="listBySubCompanyOrDepartment"
resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.certificatenum as idNo,
e.workcode as workcode,
d.departmentname as departmentName,
d.id as departmentId,
c.jobtitlename as jobtitleName,
c.id as jobtitleId,
e.companystartdate as companystartdate,
e.mobile as mobile
from hrmresource e
left join hrmdepartment d on e.departmentid = d.id
left join hrmjobtitles c on e.jobtitle = c.id
WHERE e.status not in (7) and (e.accounttype is null or e.accounttype = 0)
<if test="subCompanyIds != null and subCompanyIds.size()>0">
AND e.subcompanyid1 IN
<foreach collection="subCompanyIds" open="(" item="subCompanyId" separator="," close=")">
#{subCompanyId}
</foreach>
</if>
<if test="departmentIds != null and departmentIds.size()>0">
AND d.id IN
<foreach collection="departmentIds" open="(" item="departmentId" separator="," close=")">
#{departmentId}
</foreach>
</if>
</select>
<select id="listVirtualEmpByVirtualDepIds"
resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.RESOURCEID as employeeId,
e.SUBCOMPANYID as subcompanyid,
e.DEPARTMENTID as departmentId
from hrmresourcevirtual e
left join hrmresource h on e.RESOURCEID=h.id
where h.status not in (7)
<if test="virtualDepartmentIds != null and virtualDepartmentIds.size()>0">
AND e.DEPARTMENTID IN
<foreach collection="virtualDepartmentIds" open="(" item="virtualDepartmentId" separator="," close=")">
#{virtualDepartmentId}
</foreach>
</if>
</select>
<select id="listVirtualEmpByVirtualSubCompanyIds"
resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select
e.RESOURCEID as employeeId,
e.SUBCOMPANYID as subcompanyid,
e.DEPARTMENTID as departmentId
from hrmresourcevirtual e
left join hrmresource h on e.RESOURCEID=h.id
where h.status not in (7)
<if test="virtualSubCompanyIds != null and virtualSubCompanyIds.size()>0">
AND e.SUBCOMPANYID IN
<foreach collection="virtualSubCompanyIds" open="(" item="virtualSubCompanyId" separator="," close=")">
#{virtualSubCompanyId}
</foreach>
</if>
</select>
<select id="listByKeyword" resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee">
select e.id as employeeId,
e.lastname as username,
e.status as status,
e.certificatenum as idNo,
e.workcode as workcode,
e.companystartdate as companystartdate,
e.mobile as mobile,
e.enddate as dismissdate
from hrmresource e
where e.status not in (7)
<include refid="keywordParamSql"/>
</select>
<sql id="keywordParamSql">
<!-- 关键字(姓名、 -->
<if test="keyword != null and keyword != ''">
AND
(
e.lastname like CONCAT('%',#{keyword},'%')
OR
e.workcode like CONCAT('%',#{keyword},'%')
)
</if>
</sql>
<sql id="keywordParamSql" databaseId="oracle">
<if test="keyword != null and keyword != ''">
AND
(
e.lastname like '%'||#{keyword}||'%'
OR
e.workcode like '%'||#{keyword}||'%'
)
</if>
</sql>
<sql id="keywordParamSql" databaseId="sqlserver">
<if test="keyword != null and keyword != ''">
AND
(
e.lastname like '%'+#{keyword}+'%'
OR
e.workcode like '%'+#{keyword}+'%'
)
</if>
</sql>
</mapper>