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> { public GetAttendanceCycleCmd(Map params){ this.params=params; } @Override public BizLogContext getLogContext() { return null; } @Override public Map execute(CommandContext commandContext) { List> userList = (List>)params.get("userList"); String executeDate = Util.null2String(params.get("executeDate")); String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqzqmc"); params.put("modeId",modeId); Map> userToDateMap = Maps.newHashMap(); Map person = new GetPersonBySuitOrganzationCmd(params).execute(commandContext); Set attendanceCycleSet = Sets.newHashSet(); Set subcompanyids = userList.stream().map(e->e.get("subcompanyid1").toString()).collect(Collectors.toSet()); Map subcompanyToAttendanceCycleMap = Maps.newHashMap(); for (String subcompanyid :subcompanyids){ String attendanceCycle = Utils.getDefaultAttendanceCycle(subcompanyid); subcompanyToAttendanceCycleMap.put(subcompanyid,attendanceCycle); } for (Map 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> dataList = DbTools.getSqlToList(sql,executeDate,executeDate); Map>> dataCollect = dataList.stream().collect(Collectors.groupingBy(e->e.get("mc").toString())); for (Map userMap : userList){ List 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; } }