You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
8.0 KiB
Java

2 years ago
package com.engine.attendance.component.persongroup.cmd;
2 years ago
import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
*/
@Slf4j
public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,Object>> {
@Override
public BizLogContext getLogContext() {
return null;
}
public GetDatatableRecurrenceCmd(Map<String, Object> params){
this.params=params;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String tableName = Util.null2String(params.get("tableName"));
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
String pblx = Util.null2String(params.get("pblx"));
String pbdx = Util.null2String(params.get("pbdx"));
1 year ago
String sql = "select a.id as 'key',b.lastname,a.* from "+tableName +" a left join hrmresource b on a.pbdxry=b.id where 1=1 ";
String conditions = "";
List<Object> Dateparam = Lists.newArrayList();
if (!"".equals(startDate) && !"".equals(endDate)){
conditions += " and bcrq >= ? and bcrq<= ?";
Dateparam.add(startDate);
Dateparam.add(endDate);
}
Map<String,Object> resultMap = Maps.newHashMap();
List<Map<String, Object>> dataTableList = Lists.newArrayList();
try {
if (!"".equals(pbdx)){
if ("0".equals(pblx)){
//人员递归查人员、人员分组、部门、分部
1 year ago
String querySqlbyPbdx = sql +conditions + " and pbdxry = ? order by bcrq";
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
param.add(pbdx);
log.info("递归查询人员-人员节点sql:{},param:{}",querySqlbyPbdx,param);
List<Map<String,Object>> dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
if (dataList.size() == 0){
//查人员分组
String currentTime = DateUtil.getCurrentDate();
String queryryfz = "select a.mainid,a.empid,a.filters,a.bdate,a.edate from uf_ryqz_dt1 a,(select pbdxryfz from uf_pbjg where dxlx=1 group by pbdxryfz) b where a.mainid =b.pbdxryfz and a.bdate <= '"+currentTime+"'";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(queryryfz);
2 years ago
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null);
2 years ago
querySqlbyPbdx = sql +conditions + " and pbdxryfz in (";
log.info("递归查询人员-人员分组节点sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds);
if(personnelGroupIds.size() > 0){
param.clear();
param.addAll(Dateparam);
1 year ago
querySqlbyPbdx = querySqlbyPbdx + String.join(",",personnelGroupIds)+") order by bcrq";
2 years ago
log.info("递归查询人员-人员分组节点sql:{}",querySqlbyPbdx);
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
}
if (dataList.size() == 0){
//查询人员部门
String queryDepartmentidAndSubcompanyid = "select id,departmentid,subcompanyid1 from hrmresource where id =?";
Map<String,Object> dataMap = DbTools.getSqlToMap(queryDepartmentidAndSubcompanyid,pbdx);
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(dataMap.get("departmentid")), pdeptids);
pdeptids = Util.null2String(dataMap.get("departmentid")) + pdeptids;
log.info("pdeptids : [{}]",pdeptids);
2 years ago
querySqlbyPbdx = sql + conditions + " and pbdxbm in (";
log.info("递归查询人员-部门节点sql:{},pdeptids:{}",querySqlbyPbdx,pdeptids);
param.clear();
param.addAll(Dateparam);
2 years ago
// param.add(pdeptids);
1 year ago
querySqlbyPbdx = querySqlbyPbdx + pdeptids+") order by bcrq";
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
if (dataList.size() == 0){
//查询人员分部
1 year ago
querySqlbyPbdx = sql + conditions + " and pbdxfb = ? order by bcrq";
log.info("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1"));
param.clear();
param.addAll(Dateparam);
param.add(dataMap.get("subcompanyid1"));
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
}
}
}
dataTableList = dataList;
}else if ("1".equals(pblx)){
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
//人员分组
1 year ago
conditions += " and pbdxryfz = ? order by bcrq";
sql +=conditions;
param.add(pbdx);
dataTableList = DbTools.getSqlToList(sql,param.toArray());
}else if ("2".equals(pblx)){
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
//部门
//部门递归查、部门、分部
1 year ago
String querySqlbyPbdx = sql +conditions + " and pbdxbm = ? order by bcrq";
param.add(pbdx);
dataTableList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
if (dataTableList.size() == 0){
String querySubCompanySql = "select subcompanyid1 from hrmdepartment where id=?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(querySubCompanySql,pbdx);
1 year ago
querySqlbyPbdx = sql +conditions + " and pbdxfb = ? order by bcrq";
log.info("递归查询部门-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,departMentMap.get("subcompanyid1"));
param.clear();
param.addAll(Dateparam);
param.add(departMentMap.get("subcompanyid1"));
dataTableList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
}
}else if ("3".equals(pblx)){
List<Object> param = Lists.newArrayList();
param.addAll(Dateparam);
//分部
1 year ago
conditions += " and pbdxfb = ? order by bcrq";
sql +=conditions;
param.add(pbdx);
dataTableList = DbTools.getSqlToList(sql,param.toArray());
}
}
}catch (Exception e){
log.error("catch error : {}",e);
}
resultMap.put("dataTableList",dataTableList);
log.info("dataTableList total size : {}",dataTableList.size());
return resultMap;
}
}