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.

71 lines
3.1 KiB
Java

1 year ago
package com.engine.jucailinkq.attendance.attendanceanalysis.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.jucailinkq.common.cmd.GetPersonBySuitOrganzationCmd;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class GetAttendanceCycleCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetAttendanceCycleCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
List<Map<String,Object>> userList = (List<Map<String,Object>>)params.get("userList");
String executeDate = Util.null2String(params.get("executeDate"));
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqzqmc");
params.put("modeId",modeId);
Map<String,List<String>> userToDateMap = Maps.newHashMap();
Map<String,Object> person = new GetPersonBySuitOrganzationCmd(params).execute(commandContext);
Set<String> attendanceCycleSet = Sets.newHashSet();
Set<String> subcompanyids = userList.stream().map(e->e.get("subcompanyid1").toString()).collect(Collectors.toSet());
Map<String,String> subcompanyToAttendanceCycleMap = Maps.newHashMap();
for (String subcompanyid :subcompanyids){
String attendanceCycle = Utils.getDefaultAttendanceCycle(subcompanyid);
subcompanyToAttendanceCycleMap.put(subcompanyid,attendanceCycle);
}
for (Map<String,Object> userMap : userList){
String id = Util.null2String(userMap.get("id"));
String subcompanyid1 =Util.null2String(userMap.get("subcompanyid1"));
String attendanceCycle = person.get(id)==null?subcompanyToAttendanceCycleMap.get(subcompanyid1):person.get(id).toString();
if ("".equals(attendanceCycle)){
continue;
}
attendanceCycleSet.add(attendanceCycle);
}
String sql = "select mc,ksrq,jsrq from uf_jcl_kq_kqzq where mc in ("+String.join(",",attendanceCycleSet)+") and gzrq<=? and zt <> '2'";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,executeDate,executeDate);
Map<String,List<Map<String,Object>>> dataCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("mc").toString()));
for (Map<String,Object> userMap : userList){
List<String> dateList = Lists.newArrayList();
dateList.add(DateUtil.beforeDay(executeDate,1));
dateList.add(DateUtil.beforeDay(executeDate,2));
String id = Util.null2String(userMap.get("id"));
userToDateMap.put(id,dateList);
}
return null;
}
}