zm_dev
liuliang 1 year ago
parent dec7a29dc4
commit 860a825441

@ -0,0 +1,37 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
public class BeLateCmd extends AbstractCommonCommand<Map<String,Object>> {
@Override
public BizLogContext getLogContext() {
return null;
}
public BeLateCmd(Map<String,Object> params){
this.params=params;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
//分析人员
String userId = Util.null2String(params.get("userId"));
//分析日期
String analysisDate = Util.null2String(params.get("analysisDate"));
//打卡数据
List<Map<String, Object>> clockInTimeList = (List<Map<String, Object>>)params.get("analysisDate");
//班次
List<Map<String, Object>> scheduleResult = (List<Map<String, Object>>)params.get("scheduleResult");
//考勤项目
List<Map<String, Object>> attendanceItems = (List<Map<String, Object>>)params.get("attendanceItems");
return null;
}
}

@ -54,42 +54,36 @@ public class GetClockInTimeCmd extends AbstractCommonCommand<Map<String,Object>>
if (needGetDateList == null || needGetDateScheduling== null){ if (needGetDateList == null || needGetDateScheduling== null){
return resultMap; return resultMap;
}else if (beforeNeedGetDateList == null && afterNeedGetDateList == null){ }else if (beforeNeedGetDateList == null && afterNeedGetDateList == null ){
resultList = needGetDateList; resultList = needGetDateList;
}else if (beforeNeedGetDateList != null && afterNeedGetDateList == null){//前一天有打卡数据,后一天没有打卡数据 }else if (beforeNeedGetDateList != null && afterNeedGetDateList == null){//前一天有打卡数据,后一天没有打卡数据
if (beforeNeedGetDateScheduling == null){ if (beforeNeedGetDateScheduling == null){
resultMap.put("resultList",needGetDateList); resultMap.put("resultList",needGetDateList);
return resultMap; return resultMap;
} }
//前一天是否跨天 1:跨天 resultList=computeStartTime(beforeNeedGetDateScheduling,beforeNeedGetDateList,needGetDateScheduling,needGetDateList,needGetDate);
String beforesfkt = Util.null2String(beforeNeedGetDateScheduling.get(0).get("sfkt"));
//当天是否跨天 1跨天
String nowsfkt = Util.null2String(beforeNeedGetDateScheduling.get(0).get("sfkt"));
if (!"1".equals(beforesfkt) && !"1".equals(nowsfkt)){
resultList = needGetDateList;
}else if ("1".equals(beforesfkt) && !"1".equals(nowsfkt)){
//前一天跨天,当天没有跨天
}else if (!"1".equals(beforesfkt) && "1".equals(nowsfkt)){
//前一天没有跨天,当天跨天
}else if ("1".equals(beforesfkt) && "1".equals(nowsfkt)){
//前一天跨天,当天也跨天
}
}else if (beforeNeedGetDateList == null && afterNeedGetDateList != null){ //前一天没有打卡数据,后一天有打卡数据 }else if (beforeNeedGetDateList == null && afterNeedGetDateList != null){ //前一天没有打卡数据,后一天有打卡数据
if (afterNeedGetDateList == null){ if (afterNeedGetDateScheduling == null){
resultMap.put("resultList",needGetDateList); resultMap.put("resultList",needGetDateList);
return resultMap; return resultMap;
} }
resultList=computeEndTime(afterNeedGetDateScheduling,afterNeedGetDateList,needGetDateScheduling,needGetDateList,needGetDate);
}else if (beforeNeedGetDateList !=null && afterNeedGetDateList != null){ }else if (beforeNeedGetDateList !=null && afterNeedGetDateList != null){
//前后一天都有打卡数据 //前后一天都有打卡数据
if (beforeNeedGetDateScheduling == null && afterNeedGetDateScheduling ==null){
resultList = needGetDateList;
}else if (beforeNeedGetDateScheduling != null && afterNeedGetDateScheduling ==null){
resultList=computeStartTime(beforeNeedGetDateScheduling,beforeNeedGetDateList,needGetDateScheduling,needGetDateList,needGetDate);
}else if (beforeNeedGetDateScheduling == null && afterNeedGetDateScheduling != null){
resultList=computeEndTime(afterNeedGetDateScheduling,afterNeedGetDateList,needGetDateScheduling,needGetDateList,needGetDate);
}else if (beforeNeedGetDateScheduling != null && afterNeedGetDateScheduling != null){
resultList=computeStartTime(beforeNeedGetDateScheduling,beforeNeedGetDateList,needGetDateScheduling,needGetDateList,needGetDate);
resultList=computeEndTime(afterNeedGetDateScheduling,afterNeedGetDateList,needGetDateScheduling,resultList,needGetDate);
}
} }
resultList = resultList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
resultMap.put("resultList",resultList); resultMap.put("resultList",resultList);
return resultMap; return resultMap;
} }
@ -284,7 +278,7 @@ public class GetClockInTimeCmd extends AbstractCommonCommand<Map<String,Object>>
} }
//排序 //排序
needGetDateList = needGetDateList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); // needGetDateList = needGetDateList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
} }
return needGetDateList; return needGetDateList;
@ -392,7 +386,7 @@ public class GetClockInTimeCmd extends AbstractCommonCommand<Map<String,Object>>
} }
//排序 //排序
needGetDateList = needGetDateList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList()); // needGetDateList = needGetDateList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
} }
return needGetDateList; return needGetDateList;
} }

@ -0,0 +1,23 @@
package com.engine.attendance.attendanceanalysis.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import java.util.Map;
public class LeaveEarlyCmd extends AbstractCommonCommand<Map<String,Object>> {
public LeaveEarlyCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
return null;
}
}

@ -3,7 +3,7 @@ package com.engine.attendance.attendanceanalysis.service;
import java.util.Map; import java.util.Map;
/** /**
* service * 退service
*/ */
public interface BeLateService { public interface BeLateService {
/** /**
@ -12,4 +12,18 @@ public interface BeLateService {
* @return * @return
*/ */
Map<String,Object> fullDayAbsenteeism(Map<String,Object> params); Map<String,Object> fullDayAbsenteeism(Map<String,Object> params);
/**
*
* @param params
* @return
*/
boolean beLate(Map<String,Object> params);
/**
* 退
* @param params
* @return
*/
boolean leaveEarly(Map<String,Object> params);
} }

@ -13,4 +13,10 @@ public interface ForgetClockInService {
* @return * @return
*/ */
Map<String, Object> ForgetClockInAllDays(Map<String,Object> params); Map<String, Object> ForgetClockInAllDays(Map<String,Object> params);
/**
*
* @param params
* @return
*/
Map<String, Object> ForgetClockIn(Map<String,Object> params);
} }

@ -8,7 +8,7 @@ import java.util.Map;
*/ */
public interface UtilService { public interface UtilService {
/** /**
* * ,
* @param params * @param params
* @return * @return
*/ */

@ -12,4 +12,16 @@ public class BeLateServiceImpl extends Service implements BeLateService {
return null; return null;
} }
@Override
public boolean beLate(Map<String, Object> params) {
return false;
}
@Override
public boolean leaveEarly(Map<String, Object> params) {
return false;
}
} }

@ -16,4 +16,9 @@ public class ForgetClockInServiceImpl extends Service implements ForgetClockInSe
Map<String,Object> result = commandExecutor.execute(new UpdateAttendanceResultsCmd(params)); Map<String,Object> result = commandExecutor.execute(new UpdateAttendanceResultsCmd(params));
return result; return result;
} }
@Override
public Map<String, Object> ForgetClockIn(Map<String, Object> params) {
return null;
}
} }

@ -1,10 +1,15 @@
package com.engine.attendance.attendanceanalysis.service.impl; package com.engine.attendance.attendanceanalysis.service.impl;
import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeCmd; import com.engine.attendance.attendanceanalysis.cmd.GetClockInTimeCmd;
import com.engine.attendance.attendanceanalysis.cmd.UpdateAttendanceResultsCmd;
import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.UtilService;
import com.engine.attendance.attendanceplan.service.AttendancePlanService;
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService; import com.engine.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl; import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
import com.engine.attendance.enums.AttendanceItemTypeEnum;
import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.attendance.enums.WorkForTimeEnum;
import com.engine.common.cmd.GetDateCmd;
import com.engine.common.util.DateUtil; import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools; import com.engine.common.util.DbTools;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
@ -13,7 +18,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import weaver.general.Util; import weaver.general.Util;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -21,14 +25,18 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class UtilServiceImpl extends Service implements UtilService { public class UtilServiceImpl extends Service implements UtilService {
private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class); private SchedulingResultsService schedulingResultsService = ServiceUtil.getService(SchedulingResultsServiceImpl.class);
private AttendancePlanService basicsetService = ServiceUtil.getService(AttendancePlanServiceImpl.class);
@Override @Override
public Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String, Object> params) { public Map<String, List<Map<String,Object>>> getSchedulingInFormation(Map<String, Object> params) {
/** 班次信息*/ /** 班次信息*/
Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTable(params); Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTable(params);
List<Map<String,Object>> schedulingResultsList = (List<Map<String,Object>>)schedulingResultsMap.get("data"); List<Map<String,Object>> schedulingResultsList = (List<Map<String,Object>>)schedulingResultsMap.get("data");
schedulingResultsList = schedulingResultsList.stream().filter(e -> !"1".equals(e.get("sfxx"))).collect(Collectors.toList());
Map<String,String> schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")), e->Util.null2String(e.get("bcrq")))); Map<String,String> schedulingMap = schedulingResultsList.stream().collect(Collectors.toMap(e-> Util.null2String(e.get("bcxx")), e->Util.null2String(e.get("bcrq"))));
String sql = "select a.id bcxx,a.bcsdxx,a.sfkt,b.bdlx,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in ("; String sql = "select a.id bcxx,a.edsc,a.bcsdxx,a.sfdx,a.sfkt,b.bdlx,b.zddxfz,b.dxhs,b.kssj dtkssj,b.jssj dtjssj,b.ksdk,b.jsdk,b.tqdkfzs,b.thdkfzs from uf_jcl_kq_bcxx a left join uf_jcl_kq_bcxx_dt1 b on a.id=b.mainid where a.id in (";
String bcxxIds = ""; String bcxxIds = "";
for (Map.Entry<String,String> entry :schedulingMap.entrySet()){ for (Map.Entry<String,String> entry :schedulingMap.entrySet()){
bcxxIds +=entry.getKey() +","; bcxxIds +=entry.getKey() +",";
@ -43,8 +51,94 @@ public class UtilServiceImpl extends Service implements UtilService {
}); });
/** 加班计划*/ /** 加班计划*/
sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc from uf_jcl_kq_jbjh_dt1 where jbry=? and ksrq>=? and ksrq<=? and (jbcx=0 or jbcx is null)";
Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,params.get("pbdx"),params.get("startDate"),params.get("endDate")).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq"))));
//考勤项目
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","");
paramMap.put("endDate","");
paramMap.put("resourceId",params.get("pbdx"));
paramMap.put("modeId","204");
Map<String,Object> attendanceItemMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)attendanceItemMap.get("data");
//日期集合
Map<String,Object> dateParam = Maps.newHashMap();
dateParam.put("nd",Util.null2String(params.get("startDate")).split("-")[0]);
Map<String,Object> result = commandExecutor.execute(new GetDateCmd(dateParam));
List<Map<String,Object>> List = (List<Map<String,Object>>)result.get("data");
Map<String,String> dateMap = List.stream().collect(Collectors.toMap(e->Util.null2String(e.get("rq")),e->Util.null2String(e.get("rqlx"))));
for (Map.Entry<String,List<Map<String,Object>>> e: overtimePlanMap.entrySet()){
if (resultMap.get(e.getKey()) == null){
resultMap.put(e.getKey(),Lists.newArrayList());
}
List<Map<String,Object>> resultList = resultMap.get(e.getKey());
Map<String,Object> overtimePlan = e.getValue().get(0);
Map<String,Object> map = Maps.newHashMap();
if (!overtimePlan.get("ksrq").equals(overtimePlan.get("jsrq"))){
map.put("sfkt","1");
}else {
map.put("sfkt","0");
}
//查找对应的考勤项目
attendanceItems = attendanceItems.stream().filter(s->{
//项目类型
String xmlx = Util.null2String(s.get("xmlx"));
//作用时段
String zysd = Util.null2String(s.get("zysd"));
//项目绑定的日期类型
String bddrqlx = Util.null2String(s.get("bddrqlx"));
//日期类型
String dateType = dateMap.get(e.getKey());
if (xmlx.equals(AttendanceItemTypeEnum.WORK_OVERTIME.getKey()) && (zysd.equals(WorkForTimeEnum.PLAN_WORK_OVERTIME.getKey()) || zysd.equals(WorkForTimeEnum.ALL_TIME.getKey())) && bddrqlx.contains(dateType)){
return true;
}
return false;
}).collect(Collectors.toList());
map.put("bcxx","0");
map.put("bcsdxx","");
map.put("edsc","8");
map.put("bdlx", ClassSegmentTypeEnum.OVERTIME_PLAN.getKey());
map.put("dtkssj",overtimePlan.get("kssj"));
map.put("dtjssj",overtimePlan.get("jssj"));
map.put("ksdk","0");
map.put("jsdk","0");
map.put("tqdkfzs","30");
map.put("thdkfzs","30");
map.put("sfdx","0");
map.put("zddxfz","0");
map.put("dxhs","0");
if (attendanceItems.size() >0){
map.put("ksdk",attendanceItems.get(0).get("ksjbbxydk"));
map.put("jsdk",attendanceItems.get(0).get("jsjbbxydk"));
map.put("tqdkfzs",attendanceItems.get(0).get("tqdkyxfzs"));
map.put("thdkfzs",attendanceItems.get(0).get("thdkyxfzs"));
map.put("jbwdhlfzs",attendanceItems.get(0).get("jbwdhlfzs"));
map.put("jbzzhlfzs",attendanceItems.get(0).get("jbzzhlfzs"));
}
if (resultList.size() == 0){
resultList.add(map);
}
for (int j=0;j<resultList.size();j++){
String kssj1 = e.getKey() +" "+resultList.get(j).get("dtkssj");
String kssj2 = e.getKey() +" "+overtimePlan.get("kssj");
String kssj3 = e.getKey() +" "+resultList.get(j-1).get("dtkssj");
if (DateUtil.getTime(kssj1).compareTo(DateUtil.getTime(kssj2)) >=0 && DateUtil.getTime(kssj3).compareTo(DateUtil.getTime(kssj2)) <=0){
map.put("bcxx",resultList.get(0).get("bcxx"));
map.put("bcsdxx",resultList.get(0).get("bcsdxx"));
map.put("edsc",resultList.get(0).get("edsc"));
resultList.add(j,map);
}
}
}
log.info("SchedulingResults : [{}]",resultMap); log.info("SchedulingResults : [{}]",resultMap);
return resultMap; return resultMap;

@ -1,5 +1,6 @@
package com.engine.attendance.attendanceanalysis.wrapper; package com.engine.attendance.attendanceanalysis.wrapper;
import com.engine.attendance.attendanceanalysis.cmd.UpdateAttendanceResultsCmd;
import com.engine.attendance.attendanceanalysis.service.BeLateService; import com.engine.attendance.attendanceanalysis.service.BeLateService;
import com.engine.attendance.attendanceanalysis.service.ForgetClockInService; import com.engine.attendance.attendanceanalysis.service.ForgetClockInService;
import com.engine.attendance.attendanceanalysis.service.UtilService; import com.engine.attendance.attendanceanalysis.service.UtilService;
@ -8,16 +9,21 @@ import com.engine.attendance.attendanceanalysis.service.impl.ForgetClockInServic
import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl; import com.engine.attendance.attendanceanalysis.service.impl.UtilServiceImpl;
import com.engine.attendance.attendanceplan.service.AttendancePlanService; import com.engine.attendance.attendanceplan.service.AttendancePlanService;
import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl; import com.engine.attendance.attendanceplan.service.impl.AttendancePlanServiceImpl;
import com.engine.attendance.component.persongroup.service.SchedulingResultsService; import com.engine.attendance.enums.CheckBoxEnum;
import com.engine.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl; import com.engine.attendance.enums.ClassSegmentTypeEnum;
import com.engine.attendance.enums.WorkForTimeEnum; import com.engine.attendance.enums.PeriodOfTime;
import com.engine.common.util.DateUtil; import com.engine.common.util.DateUtil;
import com.engine.common.util.DbTools; import com.engine.common.util.DbTools;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.common.util.Utils;
import com.engine.core.impl.Service; import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.icbc.api.internal.apache.http.M;
import weaver.general.Util; import weaver.general.Util;
import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -37,13 +43,14 @@ public class AttendanceAnalysisWrapper extends Service {
String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3); String beforeThreeDayDate = DateUtil.getCurrentDateMinusDay(3);
String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(2); String beforeTwoDayDate = DateUtil.getCurrentDateMinusDay(2);
String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1); String beforeOneDayDate = DateUtil.getCurrentDateMinusDay(1);
/** 打卡数据 */
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate")))); Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
/**获得人员考勤项目*/ /**获得人员考勤项目*/
Map<String,Object> paramMap = Maps.newHashMap(); Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate",""); paramMap.put("startDate","");
paramMap.put("endDate",""); paramMap.put("endDate","");
paramMap.put("resourceId","85"); paramMap.put("resourceId",userId);
paramMap.put("modeId","204"); paramMap.put("modeId","204");
Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap); Map<String,Object> dataMap = basicsetService.getAttendanceItemsByPerson(paramMap);
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data"); List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)dataMap.get("data");
@ -61,7 +68,7 @@ public class AttendanceAnalysisWrapper extends Service {
Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(paramMap); Map<String,List<Map<String,Object>>> schedulingResultsMap = utilService.getSchedulingInFormation(paramMap);
/**获得人员加班计划*/ /**获得人员加班计划*/
String sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc, from uf_jcl_kq_jbjh_dt1 where jbry=? and ksrq>=? and ksrq<=? and jbcx=1"; String sql = "select jbry,ksrq,kssj,jsrq,jssj,jbsc from uf_jcl_kq_jbjh_dt1 where jbry=? and ksrq>=? and ksrq<=? and (jbcx=0 or jbcx is null)";
Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,userId,beforeOneDayDate,beforeThreeDayDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq")))); Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,userId,beforeOneDayDate,beforeThreeDayDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("ksrq"))));
Map<String,Object> forgetClockInParam = Maps.newHashMap(); Map<String,Object> forgetClockInParam = Maps.newHashMap();
forgetClockInParam.put("classInfo",schedulingResultsMap.get(beforeOneDayDate)); forgetClockInParam.put("classInfo",schedulingResultsMap.get(beforeOneDayDate));
@ -69,6 +76,21 @@ public class AttendanceAnalysisWrapper extends Service {
/**计算获取前一天和第二天打卡数据*/ /**计算获取前一天和第二天打卡数据*/
Map<String,Object> getClockTimeParam = Maps.newHashMap();
getClockTimeParam.put("date",beforeOneDayDate);
getClockTimeParam.put("clockInTimeCollect",collect);
getClockTimeParam.put("schedulingResultCollect",schedulingResultsMap);
//前一天打卡数据
List<Map<String, Object>> beforeOneDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
getClockTimeParam.put("date",beforeTwoDayDate);
//前第二天打卡数据
List<Map<String, Object>> beforeTwoDayClockInTimeList = utilService.getClockInTime(getClockTimeParam);
if (collect.size() == 0){ if (collect.size() == 0){
//没有打卡数据,漏打卡 //没有打卡数据,漏打卡
forgetClockInParam.put("date",beforeOneDayDate); forgetClockInParam.put("date",beforeOneDayDate);
@ -81,7 +103,7 @@ public class AttendanceAnalysisWrapper extends Service {
}else { }else {
//否则前一天记为漏打卡 //若为正常工作日,则记为漏打卡
} }
@ -89,7 +111,7 @@ public class AttendanceAnalysisWrapper extends Service {
//有2天有打卡数据 //有2天有打卡数据
if (collect.get(beforeOneDayDate) == null){ if (collect.get(beforeOneDayDate) == null){
//前一天漏打卡 //若为正常工作日,前一天漏打卡
}else if(collect.get(beforeOneDayDate) != null && collect.get(beforeTwoDayDate) == null){ }else if(collect.get(beforeOneDayDate) != null && collect.get(beforeTwoDayDate) == null){
@ -110,6 +132,204 @@ public class AttendanceAnalysisWrapper extends Service {
} }
} }
/**
*
* @param userId
* @param analysisDate
* @param clockInTimeList
* @param scheduleResult
* @param attendanceItems
*/
public void analysis(String userId,String analysisDate,List<Map<String, Object>> clockInTimeList,List<Map<String, Object>> scheduleResult,List<Map<String,Object>> attendanceItems){
if (scheduleResult == null || scheduleResult.size() ==0){
//没有排班
return;
}
List<Map<String, Object>> needClockInSchedule = scheduleResult.stream().filter(e -> "1".equals(e.get("ksdk")) || "1".equals(e.get("jsdk"))).collect(Collectors.toList());
if(clockInTimeList == null || clockInTimeList.size() == 0){
if (needClockInSchedule.size() > 0){
//全天漏打卡
return;
}else {
}
}
//请假记录
String sql = "select a.qjry,a.jqlx,a.cxjqj,b.ksrq,b.kssj,b.jsrq,b.jssj,b.qjsc,b.qtj,b.btj from uf_jcl_kq_qjjl a left join uf_jcl_kq_qjjl_dt1 b on a.id = b.mainid where a.qjry=? and b.ksrq=? and (b.cxqj=0 or b.cxqj is null)";
List<Map<String,Object>> askForLeaveList = DbTools.getSqlToList(sql,userId,analysisDate);
//出差记录
sql = "select a.ccr,a.cclx,a.ccsd,b.ksrq,b.jsrq,b.kssj,b.jssj,b.ccsc,b.qtcc,b.btcc,b.cxcc from uf_jcl_kq_ccjl a left join uf_jcl_kq_ccjl_dt1 b on a.id = b.mainid where a.ccr=? and a.ksrq=? and (b.cxcc=0 or b.cxcc is null)";
List<Map<String,Object>> evectionList = DbTools.getSqlToList(sql,userId,analysisDate);
Map<String,Object> updateAttendacneParams = Maps.newHashMap();
updateAttendacneParams.put("userId",userId);
updateAttendacneParams.put("date",analysisDate);
updateAttendacneParams.put("classInfo",scheduleResult);
sql = "select hsl,hsdw,lgsbxydk,tqlghlfzs,fgsbxydk,thfghlfzs,tybcndbjlhbjs,zdycbcndfgzsd,zdycrqqjndxxb from uf_jcl_kq_kqxm where id=?";
for (Map<String,Object> askForLeaveData : askForLeaveList){
//全天请假
if (PeriodOfTime.ALLDAY.getKey().equals(askForLeaveData.get("cxjqj"))){
updateAttendacneParams.put("item",askForLeaveData.get("jqlx"));
updateAttendacneParams.put("itemduration",scheduleResult.get(0).get("edsc"));
commandExecutor.execute(new UpdateAttendanceResultsCmd(updateAttendacneParams));
return;
}
Map<String,Object> askForLeaveItem = DbTools.getSqlToMap(sql,askForLeaveData.get("jqlx"));
Map<String,Object> askForLeaveMap = new HashMap(){{
put("bcxx",scheduleResult.get(0).get("bcxx"));
put("bcsdxx",scheduleResult.get(0).get("bcsdxx"));
put("edsc",scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",askForLeaveData.get("kssj"));
put("dtjssj",askForLeaveData.get("jssj"));
put("ksdk",askForLeaveItem.get("fgsbxydk"));
put("jsdk",askForLeaveItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("sfdx","1");
put("zddxfz",askForLeaveItem.get("tqlghlfzs"));
put("dxhs",askForLeaveItem.get("thfghlfzs"));
}};
scheduleResult.add(askForLeaveMap);
if (CheckBoxEnum.CHECKED.getKey().equals(askForLeaveItem.get("lgsbxydk")) || CheckBoxEnum.CHECKED.getKey().equals(askForLeaveItem.get("fgsbxydk"))){
needClockInSchedule.add(askForLeaveMap);
}
}
for (Map<String,Object> evectionData :evectionList){
//全天出差
if (PeriodOfTime.ALLDAY.getKey().equals(evectionData.get("ccsd"))) {
updateAttendacneParams.put("item", evectionData.get("cclx"));
updateAttendacneParams.put("itemduration", scheduleResult.get(0).get("edsc"));
commandExecutor.execute(new UpdateAttendanceResultsCmd(updateAttendacneParams));
return;
}
Map<String,Object> evectionItem = DbTools.getSqlToMap(sql,evectionData.get("cclx"));
Map<String,Object> evectionMap = new HashMap(){{
put("bcxx",scheduleResult.get(0).get("bcxx"));
put("bcsdxx",scheduleResult.get(0).get("bcsdxx"));
put("edsc",scheduleResult.get(0).get("edsc"));
put("bdlx", ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey());
put("dtkssj",evectionData.get("kssj"));
put("dtjssj",evectionData.get("jssj"));
put("ksdk",evectionItem.get("fgsbxydk"));
put("jsdk",evectionItem.get("lgsbxydk"));
put("tqdkfzs","60");
put("thdkfzs","60");
put("sfdx","1");
put("zddxfz",evectionItem.get("tqlghlfzs"));
put("dxhs",evectionItem.get("thfghlfzs"));
}};
scheduleResult.add(evectionMap);
if (CheckBoxEnum.CHECKED.getKey().equals(evectionItem.get("lgsbxydk")) || CheckBoxEnum.CHECKED.getKey().equals(evectionItem.get("fgsbxydk"))){
needClockInSchedule.add(evectionMap);
}
}
needClockInSchedule = needClockInSchedule.stream().sorted(Comparator.comparing(e->DateUtil.getTime(analysisDate+" "+e.get("dtkssj")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
List<Map<String,Map<String,Object>>> clcokInTimeData = Lists.newArrayList();
for (Map<String, Object> needClockIn :needClockInSchedule){
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("ksdk"))){
String dtkssj = analysisDate+" "+needClockIn.get("dtkssj");
String dtjssj = analysisDate+" "+needClockIn.get("dtjssj");
int tqdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("tqdkfzs")));
Map<String,Map<String,Object>> ksdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtkssj,clockInTimeList);
String timeType = "empty";
Map<String,Map<String,Object>> clcokInTimeMap = Maps.newHashMap();
if (ksdkNearestClcokInTime.get("equal") != null){
timeType="equal";
}
if ("empty".equals(timeType) && ksdkNearestClcokInTime.get("before") != null){
String clockInTime = ksdkNearestClcokInTime.get("before").get("signdate") +" "+ksdkNearestClcokInTime.get("before").get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.beforeMinutes(dtkssj,tqdkfzs))) >=0){
//打卡时间大于等于最早打卡时间
timeType="before";
}
}
if ("empty".equals(timeType) && ksdkNearestClcokInTime.get("after") != null){
String clockInTime = ksdkNearestClcokInTime.get("after").get("signdate") +" "+ksdkNearestClcokInTime.get("after").get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtjssj)) < 0){
//打卡时间小于结束时间
timeType="after";
}
}
clcokInTimeMap.put(dtkssj+"|start|"+timeType,ksdkNearestClcokInTime.get(timeType));
clcokInTimeData.add(clcokInTimeMap);
}
if (CheckBoxEnum.CHECKED.getKey().equals(needClockIn.get("jsdk"))){
String dtkssj = analysisDate+" "+needClockIn.get("dtkssj");
String dtjssj = analysisDate+" "+needClockIn.get("dtjssj");
int thdkfzs = Integer.valueOf(Util.null2String(needClockIn.get("thdkfzs")));
if (DateUtil.getTime(dtkssj).compareTo(DateUtil.getTime(dtjssj)) > 0){
dtjssj = DateUtil.AfterDay(analysisDate,1) +" "+needClockIn.get("dtjssj");
}
Map<String,Map<String,Object>> jsdkNearestClcokInTime = Utils.getNearestClcokInTimeCmd(dtjssj,clockInTimeList);
String timeType = "empty";
Map<String,Map<String,Object>> clcokInTimeMap = Maps.newHashMap();
if (jsdkNearestClcokInTime.get("equal") != null){
timeType="equal";
}
if ("empty".equals(timeType) && jsdkNearestClcokInTime.get("after") != null){
String clockInTime = jsdkNearestClcokInTime.get("after").get("signdate") +" "+jsdkNearestClcokInTime.get("after").get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(DateUtil.AfterMinutes(dtjssj,thdkfzs))) <=0){
timeType="after";
}
}
if ("empty".equals(timeType) && jsdkNearestClcokInTime.get("before") != null){
String clockInTime = jsdkNearestClcokInTime.get("before").get("signdate") +" "+jsdkNearestClcokInTime.get("before").get("signtime");
if (DateUtil.getTime(clockInTime).compareTo(DateUtil.getTime(dtkssj)) >0){
timeType="before";
}
}
clcokInTimeMap.put(dtjssj+"|end|"+timeType,jsdkNearestClcokInTime.get(timeType));
clcokInTimeData.add(clcokInTimeMap);
}
}
//当有2笔需要打卡时可能会有打卡歧义的情况歧义情况取2个时间点的中间值当打卡时间小于中间值归属前一个打卡大于则相反
if (clcokInTimeData.size() >1){
for (int i=0;i<clcokInTimeData.size()-1;i++){
Map<String,Map<String,Object>> beforeClcokInTimeData = clcokInTimeData.get(i);
Map<String,Map<String,Object>> afterClcokInTimeData = clcokInTimeData.get(i+1);
Map<String,Object> beforeClcokInTimeMap = null;
String beforeClcokInTime = "";
String afterClcokInTime = "";
Map<String,Object> afterClcokInTimeMap = null;
for (Map.Entry<String,Map<String,Object>> beforeEntry :beforeClcokInTimeData.entrySet()){
beforeClcokInTimeMap = beforeEntry.getValue();
beforeClcokInTime = beforeEntry.getKey();
}
for (Map.Entry<String,Map<String,Object>> afterEntry :afterClcokInTimeData.entrySet()){
afterClcokInTimeMap = afterEntry.getValue();
afterClcokInTime = afterEntry.getKey();
}
//重复
if (beforeClcokInTimeMap != null && beforeClcokInTimeMap == afterClcokInTimeMap ){
String beforeTime = beforeClcokInTime.split("\\|")[0];
String afterTime = afterClcokInTime.split("\\|")[0];
long betWeenMinutes = DateUtil.getBetWeenMinutes(beforeTime,afterTime);
String middileTime = DateUtil.AfterMinutes(beforeTime,betWeenMinutes/2);
String signdateTime = beforeClcokInTimeMap.get("signdate") +" "+beforeClcokInTimeMap.get("signtime");
if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) <=0){
//该打卡归属前一个打卡点
afterClcokInTimeData.put(afterClcokInTime,null);
}else if (DateUtil.getTime(signdateTime).compareTo(DateUtil.getTime(middileTime)) >0){
//该打卡归属后一个打卡点
beforeClcokInTimeData.put(beforeClcokInTime,null);
}
}
}
}
}
} }

@ -0,0 +1,28 @@
package com.engine.attendance.attendanceanalysis.wrapper;
import com.engine.core.impl.Service;
import java.util.List;
import java.util.Map;
public class UpdateAttendanceResultWrapper extends Service {
public boolean recordAbnormalClockIn(Map<String,Object> params){
//卡点
List<Map<String,Map<String,Object>>> clcokInTimeList = (List<Map<String,Map<String,Object>>>)params.get("clcokInTimeList");
//考勤项目
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)params.get("attendanceItems");
//排班
List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
for (int i=0;i<clcokInTimeList.size();i++){
}
return false;
}
}

@ -108,7 +108,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
List<Map<String,Object>> attendanceItems = DbTools.getSqlToList(sql); List<Map<String,Object>> attendanceItems = DbTools.getSqlToList(sql);
log.info("dataIds : {}",dataIds); log.info("dataIds : {}",dataIds);
sql = "select b.id `key`,b.mc kqxm,c.mc,b.* famc 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 where mainid in ("+String.join(",",dataIds)+")"; sql = "select b.id `key`,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 where mainid in ("+String.join(",",dataIds)+")";
if (dataIds.size() > 0){ if (dataIds.size() > 0){
log.info("query attendanceItems sql : {}",sql); log.info("query attendanceItems sql : {}",sql);
attendanceItems.addAll(DbTools.getSqlToList(sql)); attendanceItems.addAll(DbTools.getSqlToList(sql));

@ -0,0 +1,27 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
public enum CheckBoxEnum implements BaseEnum {
UNCHECKED("0","未选中"),
CHECKED("1","选中");
private String key;
private String value;
CheckBoxEnum(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -11,7 +11,10 @@ public enum ClassSegmentTypeEnum implements BaseEnum {
EXTENDED_OVERTIME("2","延长加班"), EXTENDED_OVERTIME("2","延长加班"),
EARLY_OVERTIME("3","早到加班"), EARLY_OVERTIME("3","早到加班"),
REST_PERIOD("4","休息时段"), REST_PERIOD("4","休息时段"),
DINING_PERIOD("5","就餐时段"); DINING_PERIOD("5","就餐时段"),
OVERTIME_PLAN("6","加班计划"),
ASK_FOR_LEAVE("7","请假假期"),
EVECTION("8","外出出差");
private String key; private String key;
private String value; private String value;

@ -0,0 +1,32 @@
package com.engine.attendance.enums;
import com.finance.toolkit.BaseEnum;
/**
*
*/
public enum PeriodOfTime implements BaseEnum {
ALLDAY("0","全天"),
HOUR("1","小时"),
HALFDAY("2","半天");
private String key;
private String value;
PeriodOfTime(String key, String value){
this.key=key;
this.value=value;
}
@Override
public String getKey() {
return this.key;
}
@Override
public String getValue() {
return this.value;
}
}

@ -35,6 +35,8 @@ public class ProcessSubmitCheckApi {
log.error("execute fail,catch error: [{}]",e); log.error("execute fail,catch error: [{}]",e);
return ApiReturnTools.error("500","processSubmitCheck error"); return ApiReturnTools.error("500","processSubmitCheck error");
} }
} }
} }

@ -0,0 +1,33 @@
package com.engine.common.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Maps;
import weaver.general.Util;
import java.util.List;
import java.util.Map;
public class GetDateCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetDateCmd(Map<String,Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String nd = Util.null2String(params.get("nd"));
String sql = "select nd,rq,nlrq,rqlx,xq from uf_jcl_kq_rlxx where nd=?";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,nd);
Map<String, Object> resultMap = Maps.newHashMap();
resultMap.put("data",dataList);
return resultMap;
}
}

@ -35,12 +35,12 @@ public class DateUtil {
} }
public static String beforeMinutes(String time,long minutes){ public static String beforeMinutes(String time,long minutes){
LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMddHHmm).atStartOfDay(); LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.minusDays(minutes).format(yyyyMMddHHmm); return localDateTime.minusDays(minutes).format(yyyyMMddHHmm);
} }
public static String AfterMinutes(String time,long minutes){ public static String AfterMinutes(String time,long minutes){
LocalDateTime localDateTime = LocalDate.parse(time, yyyyMMddHHmm).atStartOfDay(); LocalDateTime localDateTime = DateUtil.getTime(time);
return localDateTime.plusMinutes(minutes).format(yyyyMMddHHmm); return localDateTime.plusMinutes(minutes).format(yyyyMMddHHmm);
} }
@ -153,6 +153,18 @@ public class DateUtil {
long daysBetween = ChronoUnit.MINUTES.between(startDate, endDate); long daysBetween = ChronoUnit.MINUTES.between(startDate, endDate);
return Math.toIntExact(daysBetween); return Math.toIntExact(daysBetween);
} }
/**
*
* @param startTime yyyy-MM-dd
* @return
*/
public static int getBetWeenMinutes(String startTime,String endTime){
LocalDateTime startDate = DateUtil.getTime(startTime);
LocalDateTime endDate = DateUtil.getTime(endTime);
long daysBetween = ChronoUnit.MINUTES.between(startDate, endDate);
return Math.toIntExact(daysBetween);
}
/** /**
* *

@ -1,5 +1,6 @@
package com.engine.common.util; package com.engine.common.util;
import com.google.common.collect.Maps;
import com.google.common.reflect.TypeToken; import com.google.common.reflect.TypeToken;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -205,4 +206,33 @@ public class Utils<T> {
} }
} }
/**
* time
* @param time
* @param clockInTimeList
* @return
*/
public static Map<String,Map<String,Object>> getNearestClcokInTimeCmd(String time,List<Map<String, Object>> clockInTimeList){
Map<String,Map<String,Object>> resultMap = Maps.newHashMap();
for (int i=0;i<clockInTimeList.size();i++){
String signDateTime = clockInTimeList.get(i).get("signdate") +" "+clockInTimeList.get(i).get("signtime");
int j=i+1;
if (j > clockInTimeList.size()-1){
j = clockInTimeList.size()-1;
}
String afterSignDateTime = clockInTimeList.get(j).get("signdate") +" "+clockInTimeList.get(j).get("signtime");
if (i==0 && DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) <0){
resultMap.put("after",clockInTimeList.get(i));
}else if (i == clockInTimeList.size()-1 && DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) >0){
resultMap.put("before",clockInTimeList.get(i));
}else if (DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) >0 && DateUtil.getTime(time).compareTo(DateUtil.getTime(afterSignDateTime)) <0){
resultMap.put("before",clockInTimeList.get(i));
resultMap.put("after",clockInTimeList.get(j));
}else if (DateUtil.getTime(time).compareTo(DateUtil.getTime(signDateTime)) == 0){
resultMap.put("equal",clockInTimeList.get(i));
}
}
return resultMap;
}
} }

Binary file not shown.

@ -62,17 +62,66 @@ public class Test {
// System.out.println("aaaa"); // System.out.println("aaaa");
//System.out.println(Util.getIntValue("")); //System.out.println(Util.getIntValue(""));
List<Map<String,Object>> beforeleaveDate = Lists.newArrayList(); // List<Map<String,Object>> beforeleaveDate = Lists.newArrayList();
for (int i=beforeleaveDate.size()-1;i>=0;i--){ // for (int i=beforeleaveDate.size()-1;i>=0;i--){
System.out.println(123123); // System.out.println(123123);
} // }
// System.out.println(DateUtil.getTime("2023-10-30 23:00").compareTo(DateUtil.getTime("2023-10-30 22:01"))); // System.out.println("".split("-")[0]);
// for (int i=0;i<5;i++){
// int j=i+1;
// if (j > 5-1){
// j = 5-1;
// }
// System.out.println(j);
// }
// Map<String,Object> jsdkNearestClcokInTime = Maps.newHashMap();
// jsdkNearestClcokInTime.put("after","222");
// //jsdkNearestClcokInTime.put("before","222");
// jsdkNearestClcokInTime.put("equal","222");
// if (jsdkNearestClcokInTime.get("equal") != null){
// System.out.println(111);
// }else if (jsdkNearestClcokInTime.get("after") != null){
// System.out.println(222);
// }else if (jsdkNearestClcokInTime.get("before") != null){
// System.out.println(333);
// }
// List<Map> lists = Lists.newArrayList();
// List<Map> lists2 = Lists.newArrayList();
// List<Map> lists3 = Lists.newArrayList();
// lists.add(new HashMap());
// lists.add(new HashMap());
// lists.add(new HashMap());
// lists2.add(lists.get(1));
// lists3.add(lists.get(1));
// if (lists2.get(0) == lists3.get(0)){
// System.out.println(1111);
// }
// System.out.println("aa|aa|ss".split("\\|")[2]);
// long numDays = DateUtil.getBetWeenMinutes("2023-11-08 15:40","2023-11-08 16:30");
// System.out.println(numDays/2);
// System.out.println(DateUtil.AfterMinutes("2023-11-08 15:40:05",numDays/2));
System.out.println(DateUtil.getTime("2023-10-30 23:00").compareTo(DateUtil.getTime("2023-10-30 22:01")));
//System.out.println(DateUtil.beforeDay("2023-10-31",1)); //System.out.println(DateUtil.beforeDay("2023-10-31",1));
// List<Map<String,Object>> personGroupOrganizationList = Lists.newArrayList(); // List<Map<String,Object>> personGroupOrganizationList = Lists.newArrayList();
// personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}}); // personGroupOrganizationList.add(new HashMap(){{put("dx","4-夜班人员");}});
// personGroupOrganizationList.add(new HashMap(){{put("dx","8-测试条件录入");}}); // personGroupOrganizationList.add(new HashMap(){{put("dx","8-测试条件录入");}});
// Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet()); // Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
// System.out.println(String.join(",",personGroupIds)); // System.out.println(String.join(",",personGroupIds));
// List<String> list = Lists.newArrayList();
// list.add("1");
// list.add("2");
// list.add("5");
// System.out.println(list);
// list.add(1,"10");
// Map<String,Object> map = new HashMap(){{
//put("11","22");
// put("33","44");
// put("44","66");
// }};
// System.out.println(map);
} }
public static int getDaysBetween(String date1, String date2) { public static int getDaysBetween(String date1, String date2) {

Loading…
Cancel
Save