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.

258 lines
14 KiB
Java

2 years ago
package com.engine.attendance.component.persongroup.cmd;
2 years ago
import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
10 months ago
import com.engine.attendance.enums.CheckBoxEnum;
12 months ago
import com.engine.attendance.enums.SchedulingApproachEnum;
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;
12 months ago
import java.util.stream.Collectors;
/**
*
*/
@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"));
10 months ago
String showAll = Util.null2String(params.get("showAll"));
12 months ago
String sql = "select a.id as keyid,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);
10 months ago
log.debug("递归查询人员-人员节点sql:{},param:{}",querySqlbyPbdx,param);
List<Map<String,Object>> dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
12 months ago
//人员数据
Map<String,List<Map<String,Object>>> personCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
//人员分组数据
List<Map<String,Object>> personGroupList = Lists.newArrayList();
//查人员分组
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);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null);
querySqlbyPbdx = sql +conditions + " and pbdxryfz in (";
10 months ago
log.debug("递归查询人员-人员分组节点sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds);
12 months ago
if(personnelGroupIds.size() > 0){
querySqlbyPbdx = querySqlbyPbdx + String.join(",",personnelGroupIds)+") order by bcrq";
10 months ago
log.debug("递归查询人员-人员分组节点sql:{}",querySqlbyPbdx);
12 months ago
personGroupList = DbTools.getSqlToList(querySqlbyPbdx,Dateparam.toArray());
}
Map<String,List<Map<String,Object>>> personGroupCollect = personGroupList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
//部门数据
List<Map<String,Object>> departmentList = Lists.newArrayList();
//查询部门数据
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;
10 months ago
log.debug("pdeptids : [{}]",pdeptids);
12 months ago
querySqlbyPbdx = sql + conditions + " and pbdxbm in (";
10 months ago
log.debug("递归查询人员-部门节点sql:{},pdeptids:{}",querySqlbyPbdx,pdeptids);
12 months ago
querySqlbyPbdx = querySqlbyPbdx + pdeptids+") order by bcrq";
departmentList = DbTools.getSqlToList(querySqlbyPbdx,Dateparam.toArray());
Map<String,List<Map<String,Object>>> departmentCollect = departmentList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
//分部数据
List<Map<String,Object>> subCompanyList = Lists.newArrayList();
//查询人员分部
querySqlbyPbdx = sql + conditions + " and pbdxfb = ? order by bcrq";
10 months ago
log.debug("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1"));
12 months ago
param.clear();
param.addAll(Dateparam);
param.add(dataMap.get("subcompanyid1"));
subCompanyList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
Map<String,List<Map<String,Object>>> subCompanyCollect = subCompanyList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
//排班途径枚举集合
10 months ago
if (CheckBoxEnum.CHECKED.getKey().equals(showAll)){
dataTableList.addAll(dataList);
dataTableList.addAll(personGroupList);
dataTableList.addAll(departmentList);
dataTableList.addAll(subCompanyList);
}else {
for (SchedulingApproachEnum schedulingApproachEnum :SchedulingApproachEnum.values()){
List<Map<String,Object>> resulstList = personCollect.get(schedulingApproachEnum.getKey());
12 months ago
if (resulstList == null || resulstList.size() == 0){
10 months ago
resulstList = personGroupCollect.get(schedulingApproachEnum.getKey());
12 months ago
if (resulstList == null || resulstList.size() == 0){
10 months ago
resulstList = departmentCollect.get(schedulingApproachEnum.getKey());
if (resulstList == null || resulstList.size() == 0){
resulstList = subCompanyCollect.get(schedulingApproachEnum.getKey());
}
12 months ago
}
}
10 months ago
if (resulstList != null && resulstList.size() != 0){
dataTableList.addAll(resulstList);
}
12 months ago
}
}
}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);
12 months ago
List<Map<String,Object>> departmentList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
Map<String,List<Map<String,Object>>> departmentCollect = departmentList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
String querySubCompanySql = "select subcompanyid1 from hrmdepartment where id=?";
Map<String,Object> departMentMap = DbTools.getSqlToMap(querySubCompanySql,pbdx);
//分部分部数据
querySqlbyPbdx = sql +conditions + " and pbdxfb = ? order by bcrq";
10 months ago
log.debug("递归查询部门-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,departMentMap.get("subcompanyid1"));
12 months ago
param.clear();
param.addAll(Dateparam);
param.add(departMentMap.get("subcompanyid1"));
List<Map<String,Object>> subcompanyList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
Map<String,List<Map<String,Object>>> subcompanyCollect = subcompanyList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));
12 months ago
//排班枚举集合
10 months ago
if (CheckBoxEnum.CHECKED.getKey().equals(showAll)){
dataTableList.addAll(departmentList);
dataTableList.addAll(subcompanyList);
}else {
for (SchedulingApproachEnum schedulingApproachEnum :SchedulingApproachEnum.values()){
List<Map<String,Object>> resulstList = departmentCollect.get(schedulingApproachEnum.getKey());
if (resulstList == null || resulstList.size() == 0){
resulstList = subcompanyCollect.get(schedulingApproachEnum.getKey());
}
if (resulstList != null && resulstList.size() != 0){
dataTableList.addAll(resulstList);
}
12 months ago
}
}
}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);
10 months ago
log.debug("dataTableList total size : {}",dataTableList.size());
return resultMap;
}
12 months ago
/**
*
* @return
*/
public List<Map<String,Object>> getDataListPerson(String sql,String conditions,List<Object> Dateparam,String pbdx) throws Exception {
List<Map<String,Object>> dataList = Lists.newArrayList();
//查人员分组
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);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,pbdx,null,null);
String querySqlbyPbdx = sql +conditions + " and pbdxryfz in (";
10 months ago
log.debug("递归查询人员-人员分组节点sql:{},personnelGroupIds:{}",querySqlbyPbdx,personnelGroupIds);
12 months ago
if(personnelGroupIds.size() > 0){
querySqlbyPbdx = querySqlbyPbdx + String.join(",",personnelGroupIds)+") order by bcrq";
10 months ago
log.debug("递归查询人员-人员分组节点sql:{}",querySqlbyPbdx);
12 months ago
dataList = DbTools.getSqlToList(querySqlbyPbdx,Dateparam.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;
10 months ago
log.debug("pdeptids : [{}]",pdeptids);
12 months ago
querySqlbyPbdx = sql + conditions + " and pbdxbm in (";
10 months ago
log.debug("递归查询人员-部门节点sql:{},pdeptids:{}",querySqlbyPbdx,pdeptids);
12 months ago
querySqlbyPbdx = querySqlbyPbdx + pdeptids+") order by bcrq";
dataList = DbTools.getSqlToList(querySqlbyPbdx,Dateparam.toArray());
if (dataList.size() == 0){
//查询人员分部
querySqlbyPbdx = sql + conditions + " and pbdxfb = ? order by bcrq";
10 months ago
log.debug("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1"));
12 months ago
List<Object> param = Lists.newArrayList();
param.clear();
param.addAll(Dateparam);
param.add(dataMap.get("subcompanyid1"));
dataList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
}
}
return dataList;
}
}