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.
60 lines
3.4 KiB
Java
60 lines
3.4 KiB
Java
package com.engine.jucailinkq.attendance.attendanceplan.cmd;
|
|
|
|
import com.engine.common.biz.AbstractCommonCommand;
|
|
import com.engine.common.entity.BizLogContext;
|
|
import com.engine.core.interceptor.CommandContext;
|
|
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
|
|
import com.engine.jucailinkq.common.util.DbTools;
|
|
import com.google.common.collect.Maps;
|
|
import weaver.general.Util;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class GetAttendanceItemsGroupByAttendancePlanDataCmd extends AbstractCommonCommand<Map<String,Object>> {
|
|
@Override
|
|
public BizLogContext getLogContext() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Map<String, Object> execute(CommandContext commandContext) {
|
|
|
|
Map<String,Object> resultMap = Maps.newHashMap();
|
|
String sql = "select c.id planid,b.id keyid,b.mc kqxm,c.mc famc,b.* from uf_jcl_kq_kqfa_dt1 a left join uf_jcl_kq_kqxm b on a.kqxm=b.id left join uf_jcl_kq_kqfa c on a.mainid=c.id";
|
|
List<Map<String,Object>> attendanceItems = DbTools.getSqlToList(sql);
|
|
List<String> fatherItems = attendanceItems.stream().filter(e-> Util.null2String(e.get("sffzcx")).equals(CheckBoxEnum.CHECKED.getKey())).map(e->e.get("keyid").toString()).collect(Collectors.toList());
|
|
if (fatherItems.size() > 0){
|
|
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where (xmzt is null or xmzt <> '0') and a.sjxm in ("+String.join(",",fatherItems)+")";
|
|
List<Map<String,Object>> sonItemList = DbTools.getSqlToList(sql);
|
|
Map<String,List<Map<String,Object>>> sonGroupMap = sonItemList.stream().collect(Collectors.groupingBy(e->e.get("sjxm").toString()));
|
|
for (Map<String,Object> attendanceItem :attendanceItems){
|
|
if (CheckBoxEnum.CHECKED.getKey().equals(attendanceItem.get("sffzcx"))){
|
|
attendanceItem.put("sonItems",sonGroupMap.get(attendanceItem.get("keyid")));
|
|
}
|
|
}
|
|
}
|
|
|
|
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where tyxm=1 and (xmzt is null or xmzt <> '0')";
|
|
List<Map<String,Object>> generalAttendanceItems = DbTools.getSqlToList(sql);
|
|
fatherItems = generalAttendanceItems.stream().filter(e-> Util.null2String(e.get("sffzcx")).equals(CheckBoxEnum.CHECKED.getKey())).map(e->e.get("keyid").toString()).collect(Collectors.toList());
|
|
if (fatherItems.size() > 0){
|
|
sql = "select id keyid,mc kqxm,a.* from uf_jcl_kq_kqxm a where (xmzt is null or xmzt <> '0') and a.sjxm in ("+String.join(",",fatherItems)+")";
|
|
List<Map<String,Object>> sonItemList = DbTools.getSqlToList(sql);
|
|
Map<String,List<Map<String,Object>>> sonGroupMap = sonItemList.stream().collect(Collectors.groupingBy(e->e.get("sjxm").toString()));
|
|
for (Map<String,Object> attendanceItem :generalAttendanceItems){
|
|
if (CheckBoxEnum.CHECKED.getKey().equals(attendanceItem.get("sffzcx"))){
|
|
attendanceItem.put("sonItems",sonGroupMap.get(attendanceItem.get("keyid")));
|
|
}
|
|
}
|
|
}
|
|
|
|
Map<String,List<Map<String,Object>>> attendanceItemGroupByPlan = attendanceItems.stream().collect(Collectors.groupingBy(e->e.get("planid").toString()));
|
|
resultMap.put("generalAttendanceItems",generalAttendanceItems);
|
|
resultMap.put("attendanceItemGroupByPlan",attendanceItemGroupByPlan);
|
|
|
|
return resultMap;
|
|
}
|
|
}
|