兼容PostgreSQL

pull/159/head
dxfeng 2 years ago
parent 03845251b1
commit db990ce227

@ -193,6 +193,17 @@
and t.subCompanyName like '%'||#{CompanyPO.subCompanyName}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="postgresql">
<if test=" CompanyPO.subCompanyCode != null and CompanyPO.subCompanyCode != '' ">
and t.subCompanyCode like '%'||#{CompanyPO.subCompanyCode}||'%'
</if>
<if test=" CompanyPO.subCompanyDesc != null and CompanyPO.subCompanyDesc != '' ">
and t.subCompanyDesc like '%'||#{CompanyPO.subCompanyDesc}||'%'
</if>
<if test=" CompanyPO.subCompanyName != null and CompanyPO.subCompanyName != '' ">
and t.subCompanyName like '%'||#{CompanyPO.subCompanyName}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="sqlserver">
<if test=" CompanyPO.subCompanyCode != null and CompanyPO.subCompanyCode != '' ">
@ -215,6 +226,9 @@
<sql id="subsWhere" databaseId="sqlserver">
and isnull(canceled,0)=0
</sql>
<sql id="subsWhere" databaseId="postgresql">
and COALESCE(canceled,'0')='0'
</sql>
<sql id="isCanceled">
and ifnull(canceled,0)=
@ -228,5 +242,9 @@
and isnull(canceled,0)=
#{CompanyPO.canceled}
</sql>
<sql id="isCanceled" databaseId="postgresql">
and COALESCE(canceled,'0')=
#{CompanyPO.canceled}
</sql>
</mapper>

@ -175,6 +175,14 @@
and t.departmentName like '%'||#{departmentPO.departmentName}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="postgresql">
<if test=" departmentPO.departmentCode != null and departmentPO.departmentCode != '' ">
and t.departmentCode like '%'||#{departmentPO.departmentCode}||'%'
</if>
<if test=" departmentPO.departmentName != null and departmentPO.departmentName != '' ">
and t.departmentName like '%'||#{departmentPO.departmentName}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="sqlserver">
<if test=" departmentPO.departmentCode != null and departmentPO.departmentCode != '' ">
@ -200,5 +208,10 @@
and isnull(canceled,0)= #{departmentPO.canceled}
</if>
</sql>
<sql id="isCanceled" databaseId="postgresql">
<if test=" departmentPO.canceled != null">
and COALESCE(canceled,'0')= #{departmentPO.canceled}
</if>
</sql>
</mapper>

@ -12,6 +12,11 @@
AND t.lastname like '%'||#{lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="postgresql">
<if test="lastName != null and lastName != ''">
AND t.lastname like '%'||#{lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="sqlserver">
<if test="lastName != null and lastName != ''">
AND t.lastname like '%'+#{lastName}+'%'

@ -120,6 +120,22 @@
left join jcl_org_grade f on d.${grade}=f.id
where a.status &lt; 4
</insert>
<insert id="insertResToMap" databaseId="postgresql">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleaderimg,
fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid,
fisvitual,fdatebegin,fdateend)
select a.id+300000000,4,a.id,a.uuid,0,'行政维度',a.workcode,a.LASTNAME,a.messagerurl,
c.id,c.jobtitlename,e.level_name,f.grade_name, COALESCE( b.id, 0 ) +200000000,b.id,
0,NOW(),'2099-12-31'
from hrmresource a
left join jcl_org_job b ON a.JOBTITLE = b.ec_jobTitle and a.subcompanyid1=b.ec_company and a.departmentid=b.ec_department
left join HrmJobTitles c on b.ec_jobTitle = c.id
left join cus_fielddata d on a.id = d.id and d.scope='HrmCustomFieldByInfoType' and d.scopeid=3
left join jcl_org_level e on NULLIF(d.${level},'')=e.id
left join jcl_org_grade f on NULLIF(d.${grade},'')=f.id
where a.status &lt; 4
</insert>
<insert id="insertResToMap" parameterType="java.lang.String" databaseId="oracle">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleaderimg,
@ -181,6 +197,28 @@
left join HrmJobTitles g on a.ec_jobTitle = g.id
where ifnull(a.delete_type,0) &lt;&gt; 1 and ifnull(a.forbidden_tag,0) &lt;&gt; 1
</insert>
<insert id="insertJobToMap" databaseId="postgresql">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,
fparentid,fobjparentid,
fplan,fonjob,fisvitual,fdatebegin,fdateend)
select a.id+200000000,3,a.id,g.uuid,0,'行政维度',a.job_no,g.jobtitlename,
ec_department+100000000,
ec_department,
COALESCE(e.fcnt,0),COALESCE(f.fcnt,0),0,NOW(),'2099-12-31'
from JCL_ORG_job as a
left join (select job_id,sum(COALESCE(staff_num,0)) fcnt from JCL_ORG_STAFF
where plan_id in (select id from JCL_ORG_STAFFPLAN
where time_start&lt;=NOW() and time_end &gt; NOW() and delete_type=0)
group by job_id) e on a.id=e.job_id
left join ( select c.id,count(1) fcnt from hrmresource a
left join Hrmjobtitles b on a.jobtitle=b.id and a.status&lt;4
left join jcl_org_job c on b.id=c.ec_jobtitle and a.subcompanyid1=c.ec_company and a.departmentid=c.ec_department
group by c.id) f
on f.id=a.id
left join HrmJobTitles g on a.ec_jobTitle = g.id
where COALESCE(a.delete_type,0) &lt;&gt; 1 and COALESCE(a.forbidden_tag,0) &lt;&gt; 1
</insert>
<insert id="insertJobToMap" databaseId="oracle">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,
@ -244,6 +282,26 @@
left join jcl_org_grade g on e.${grade}=g.id
where ifnull(a.canceled,0) &lt;&gt; 1
</insert>
<insert id="insertDeptToMap" databaseId="postgresql">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg,
fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid,
fplan,fonjob,fisvitual,fdatebegin,fdateend)
select a.id+100000000,2,a.id,a.uuid,0,'行政维度',a.DEPARTMENTCODE,a.departmentname,b.BMFZR,c.messagerurl,
c.lastname,c.jobtitle,d.jobtitlemark,f.level_name,g.grade_name,
(case COALESCE(a.supdepid,0) when 0 then a.subcompanyid1 else a.supdepid+100000000 end),
(case COALESCE(a.supdepid,0) when 0 then a.subcompanyid1 else a.supdepid end),
0,0,0,NOW(),'2099-12-31'
from
HrmDepartment as a
left join hrmdepartmentdefined as b on a.id=b.deptid
left join hrmresource as c on NULLIF(b.BMFZR,'')=c.ID
left join hrmjobtitles as d on c.JOBTITLE=d.id
left join cus_fielddata e on c.id = e.id and e.scope='HrmCustomFieldByInfoType' and e.scopeid=3
left join jcl_org_level f on NULLIF(e.${level},'')=f.id
left join jcl_org_grade g on NULLIF(e.${grade},'')=g.id
where COALESCE(a.canceled,'0') &lt;&gt; '1'
</insert>
<insert id="insertDeptToMap" databaseId="oracle">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg,
@ -284,6 +342,16 @@
0,0,0,NOW(),'2099-12-31' from hrmsubcompany as a
where IFNULL(a.canceled,0) &lt;&gt; 1
</insert>
<insert id="insertSubComToMap" databaseId="postgresql">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg,
fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid,
fplan,fonjob,fisvitual,fdatebegin,fdateend)
select a.id,1,a.id,a.uuid,0,'行政维度', '',a.subcompanyname,null,'',
'',NULL,'','','',COALESCE(a.supsubcomid,0),COALESCE(a.supsubcomid,0),
0,0,0,NOW(),'2099-12-31' from hrmsubcompany as a
where COALESCE(a.canceled,'0') &lt;&gt; '1'
</insert>
<insert id="insertSubComToMap" databaseId="oracle">
insert into jcl_org_map
(id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg,
@ -319,6 +387,14 @@
0, NULL, NULL, 0, NULL, -1, 0,
0, 0, 0, NOW(), '2099-12-31' FROM hrmcompany
</insert>
<insert id="insertComToMap" databaseId="postgresql">
INSERT INTO jcl_org_map ( id, ftype, fobjid, uuid,fclass, fclassname, fnumber, fname,
fleader, fleaderimg, fleadername, fleaderjobid, fleaderjob, fparentid,fobjparentid,
fplan, fonjob, fisvitual, fdatebegin, fdateend)
SELECT 0, 0, 0, uuid, 0, '行政维度', '00', companyname,
0, NULL, NULL, 0, NULL, -1, 0,
0, 0, 0, NOW(), '2099-12-31' FROM hrmcompany
</insert>
<delete id="deleteJobNull">
delete from jcl_org_map where ftype =3 and fdateend &gt; #{currentDate} and id not in (select a.FPARENTID from (select FPARENTID from jcl_org_map where ftype=4 and fdateend &gt; #{currentDate}) a)
</delete>

@ -561,6 +561,10 @@
and NVL(ec_department,0) =
#{parentDepartment}
</sql>
<sql id="nullparentDept" databaseId="postgresql">
and COALESCE(ec_department,0) =
#{parentDepartment}
</sql>
<sql id="likeSQL">
@ -604,6 +608,26 @@
and t.work_authority like '%'||#{jobPO.workAuthority}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="postgresql">
<if test=" jobPO.jobNo != null and jobPO.jobNo != '' ">
and t.job_no like '%'||#{jobPO.jobNo}||'%'
</if>
<if test=" jobPO.jobTitleName != null and jobPO.jobTitleName != '' ">
and h.jobtitlename like '%'||#{jobPO.jobTitleName}||'%'
</if>
<if test=" jobPO.workplace != null and jobPO.workplace != '' ">
and t.workplace like '%'||#{jobPO.workplace}||'%'
</if>
<if test=" jobPO.description != null and jobPO.description != '' ">
and t.description like '%'||#{jobPO.description}||'%'
</if>
<if test=" jobPO.workDuty != null and jobPO.workDuty != '' ">
and t.work_duty like '%'||#{jobPO.workDuty}||'%'
</if>
<if test=" jobPO.workAuthority != null and jobPO.workAuthority != '' ">
and t.work_authority like '%'||#{jobPO.workAuthority}||'%'
</if>
</sql>
<sql id="likeSQL" databaseId="sqlserver">
<if test=" jobPO.jobNo != null and jobPO.jobNo != '' ">

@ -389,6 +389,11 @@
AND t.lastname like '%'||#{resourcePO.lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="postgresql">
<if test="resourcePO.lastName != null and resourcePO.lastName != ''">
AND t.lastname like '%'||#{resourcePO.lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="sqlserver">
<if test="resourcePO.lastName != null and resourcePO.lastName != ''">
AND t.lastname like '%'+#{resourcePO.lastName}+'%'

@ -150,6 +150,11 @@
AND t.last_name like '%'||#{param.lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="postgresql">
<if test="param.lastName != null and param.lastName != ''">
AND t.last_name like '%'||#{param.lastName}||'%'
</if>
</sql>
<sql id="likeSql" databaseId="sqlserver">
<if test="param.lastName != null and param.lastName != ''">
AND t.last_name like '%'+#{param.lastName}+'%'

@ -280,6 +280,9 @@
<sql id="likeSQL" databaseId="oracle">
','||level_id||',' like '%,'||#{levelId}+',%'
</sql>
<sql id="likeSQL" databaseId="postgresql">
','||level_id||',' like '%,'||#{levelId}+',%'
</sql>
<sql id="likeSQL" databaseId="sqlserver">
','+level_id+',' like '%,'+cast(#{levelId} as varchar(20))+',%'
</sql>

@ -6,11 +6,9 @@ import com.engine.core.impl.Service;
import com.engine.organization.entity.map.JclOrgMap;
import com.engine.organization.entity.scheme.po.GradePO;
import com.engine.organization.entity.scheme.po.LevelPO;
import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.mapper.jclorgmap.JclOrgMapper;
import com.engine.organization.mapper.scheme.GradeMapper;
import com.engine.organization.mapper.scheme.LevelMapper;
import com.engine.organization.mapper.staff.StaffMapper;
import com.engine.organization.service.OrgChartService;
import com.engine.organization.util.HasRightUtil;
import com.engine.organization.util.OrganizationDateUtil;
@ -101,7 +99,11 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
String whereSql = " where 1 = 1 ";
if (DBType.isOracle()) {
whereSql += " and ((fdatebegin <= to_date('" + date + "','yyyy-MM-DD') and fdateend >= to_date('" + date + "','yyyy-MM-DD')) or (fdatebegin <= to_date('" + date + "','yyyy-MM-DD') and fdateend is null )) ";
} else {
}
else if (DBType.isPG()) {
whereSql += " and ((TO_DATE(to_char(fdatebegin,'yyyy-MM-dd'),'yyyy-MM-dd') <= '" + date + "' and TO_DATE(to_char(fdateend,'yyyy-MM-dd'),'yyyy-MM-dd') >= '" + date + "') or (TO_DATE(to_char(fdatebegin,'yyyy-MM-dd'),'yyyy-MM-dd') <= '" + date + "' and fdateend is null )) ";
}
else {
whereSql += " and ((fdatebegin <= '" + date + "' and fdateend >= '" + date + "') or (fdatebegin <= '" + date + "' and fdateend is null )) ";
}
whereSql += " and fclass = " + fclass + " ";
@ -141,7 +143,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
// 获取根节点
RecordSet rs = new RecordSet();
rs.executeQuery("select id, fname, ftype, fparentid, fnumber, fobjid, fisvitual from jcl_org_map " + whereSql + whereItemSql);
String sql = "select id, fname, ftype, fparentid, fnumber, fobjid, fisvitual from jcl_org_map " + whereSql + whereItemSql;
rs.executeQuery(sql);
List<Map<String, Object>> list = new ArrayList<>();
String id = null;
if (rs.next()) {
@ -227,6 +230,8 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
String whereSql = " where 1 = 1 ";
if (DBType.isOracle()) {
whereSql += " and ((t.fdatebegin <= to_date('" + date + "','yyyy-MM-DD') and t.fdateend >= to_date('" + date + "','yyyy-MM-DD')) or (t.fdatebegin <= to_date('" + date + "','yyyy-MM-DD') and t.fdateend is null )) ";
}else if(DBType.isPG()){
whereSql += " and ((TO_DATE(to_char(t.fdatebegin,'yyyy-MM-dd'),'yyyy-MM-dd') <= '" + date + "' and TO_DATE(to_char(t.fdateend,'yyyy-MM-dd'),'yyyy-MM-dd') >= '" + date + "') or (TO_DATE(to_char(t.fdatebegin,'yyyy-MM-dd'),'yyyy-MM-dd') <= '" + date + "' and t.fdateend is null )) ";
} else {
whereSql += " and ((t.fdatebegin <= '" + date + "' and t.fdateend >= '" + date + "') or (t.fdatebegin <= '" + date + "' and t.fdateend is null )) ";
}
@ -393,7 +398,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
if (StringUtils.isNotBlank(bmfzr)) {
String[] split = bmfzr.split(",");
for (String s : split) {
jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getResInfo(level, grade,s);
jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getResInfo(level, grade, s);
break;
}
}
@ -539,6 +544,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
private JclOrgMapper getJclOrgMapMapper() {
return MapperProxyFactory.getProxy(JclOrgMapper.class);
}
@Override
public String synchronousData(Map<String, Object> request2Map, User user) {
String currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date());
@ -549,13 +555,13 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
java.sql.Date time = new java.sql.Date(calendar.getTime().getTime());
// 自下向上刷新
getJclOrgMapMapper().deleteAllMap(date);
getJclOrgMapMapper().updateAllMap(date,time);
getJclOrgMapMapper().updateAllMap(date, time);
//同步人员信息
getJclOrgMapMapper().insertResToMap(level,grade);
getJclOrgMapMapper().insertResToMap(level, grade);
//同步岗位信息
getJclOrgMapMapper().insertJobToMap();
//同步部门信息
getJclOrgMapMapper().insertDeptToMap(level,grade);
getJclOrgMapMapper().insertDeptToMap(level, grade);
//同步分部信息
getJclOrgMapMapper().insertSubComToMap();
//同步集团信息
@ -563,17 +569,18 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
//清除部门合并、转移造成的脏数据
getJclOrgMapMapper().deleteJobNull(date);
//刷新在岗数、编制数(从岗位向上刷,岗位不需处理)
List<JclOrgMap> jclOrgMaps = getJclOrgMapMapper().getJclOrgMapByType("3",date);
for (JclOrgMap jclOrgMap : jclOrgMaps){
List<JclOrgMap> jclOrgMaps = getJclOrgMapMapper().getJclOrgMapByType("3", date);
for (JclOrgMap jclOrgMap : jclOrgMaps) {
int id = jclOrgMap.getId();
countJobAndPlans("3",id,currentDate);
countJobAndPlans("3", id, currentDate);
}
return "同步成功";
}
/**
*
*/
void countJobAndPlans(String type,int id,String currentDate) {
void countJobAndPlans(String type, int id, String currentDate) {
java.sql.Date date = new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime());
RecordSet rs = new RecordSet();
//处理上级
@ -605,15 +612,17 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
}
}
private String getFieldName(String fieldabel) {
RecordSet recordSet = new RecordSet();
String fieldname = null;
recordSet.executeQuery("select fieldname from jcl_org_field where fieldlabel='" + fieldabel+"'");
recordSet.executeQuery("select fieldname from jcl_org_field where fieldlabel='" + fieldabel + "'");
if (recordSet.next()) {
fieldname = recordSet.getString("fieldname");
}
return fieldname;
}
static class OrgSelectItem {
private String id;
private String fnumber;

@ -67,6 +67,27 @@ public enum DBType implements DBOperateAdapter {
public String ifNull(String some, String defaultValue) {
return " NVL(" + some + ",'" + defaultValue + "')";
}
},
POSTGRESQL("postgresql") {
@Override
public String like(String some) {
return " like '%" + some + "%' ";
}
@Override
public String concat(String some) {
return " ',' ||" + some + "|| ',' ";
}
@Override
public String currentDate() {
return "now()";
}
@Override
public String ifNull(String some, String defaultValue) {
return " COALESCE(" + some + ",'" + defaultValue + "')";
}
};
private String dbtype;
@ -88,5 +109,9 @@ public enum DBType implements DBOperateAdapter {
return DBType.get(new RecordSet().getDBType()).equals(DBType.ORACLE);
}
public static boolean isPG() {
return DBType.get(new RecordSet().getDBType()).equals(DBType.POSTGRESQL);
}
}

Loading…
Cancel
Save