出勤分析适配人员部门变化

main
liuliang 5 months ago
parent ec483e255d
commit 4aa022373a

@ -122,8 +122,8 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
}
/** 加班计划*/
Map<String,List<Map<String,Object>>> overtimePlanMap = allOverPlanList.stream().filter(e->DateUtil.getTime("gsrq").compareTo(DateUtil.getTime(params.get("startDate").toString())) >=0 &&
DateUtil.getTime("gsrq").compareTo(DateUtil.getTime(params.get("endDate").toString())) <=0).collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
Map<String,List<Map<String,Object>>> overtimePlanMap = allOverPlanList.stream().filter(e->DateUtil.getTime(e.get("gsrq").toString()).compareTo(DateUtil.getTime(params.get("startDate").toString())) >=0 &&
DateUtil.getTime(e.get("gsrq").toString()).compareTo(DateUtil.getTime(params.get("endDate").toString())) <=0).collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
//考勤项目
for (Map.Entry<String,List<Map<String,Object>>> e: overtimePlanMap.entrySet()){

@ -0,0 +1,100 @@
package com.engine.jucailinkq.attendance.attendanceanalysis.cmd.item;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
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;
import java.util.stream.Collectors;
@Slf4j
public class GerPersonAttendanceItemsCmd extends AbstractCommonCommand<Map<String,Object>> {
public GerPersonAttendanceItemsCmd(Map<String, Object> params){
this.params=params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String userId = Util.null2String(params.get("userId"));
String departmentId = Util.null2String(params.get("departmentId"));
String subCompanyId = Util.null2String(params.get("subCompanyId"));
String anysisyDate = Util.null2String(params.get("anysisyDate"));
String seclevel = Util.null2String(params.get("seclevel"));
Map<String, List<Map<String, String>>> personData = (Map<String, List<Map<String, String>>>)params.get("personData");
Map<String, List<Map<String, String>>> personOrganzationMap = (Map<String, List<Map<String, String>>>)params.get("personOrganzationMap");
Map<String, List<Map<String, String>>> departMentMap = (Map<String, List<Map<String, String>>>)params.get("departMentMap");
Map<String, List<Map<String, String>>> subCompanyMap = (Map<String, List<Map<String, String>>>)params.get("subCompanyMap");
Set<String> attendanceItems = Sets.newHashSet();
//人力资源
if (personData.get(userId) != null){
for (Map<String, String> personMap :personData.get(userId)){
attendanceItems.add(personMap.get("dataid"));
}
}
//人员分组
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
List<Map<String,Object>> personnelGroups = personBelongGroup.get(userId) == null? Lists.newArrayList():personBelongGroup.get(userId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(anysisyDate))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(anysisyDate))>=0)).collect(Collectors.toList());
Set<String> personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
for (Map.Entry<String, List<Map<String, String>>> entry: personOrganzationMap.entrySet()){
String personnelGroupId = entry.getKey();
if (personnelGroupIds.contains(personnelGroupId)){
for (Map<String, String> personGroupMap :entry.getValue()){
attendanceItems.add(personGroupMap.get("dataid"));
}
}
}
//部门
try {
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
String pdeptids = "";
if (petDepart != null){
pdeptids = petDepart.get(departmentId);
}
if (pdeptids == null || pdeptids.equals("")){
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(params.get("departmentId")), pdeptids);
pdeptids = departmentId + pdeptids;
}
for (Map.Entry<String, List<Map<String, String>>> entry: departMentMap.entrySet()){
String id = entry.getKey();
for (String pdeptid : pdeptids.split(",")){
if (pdeptid.equals(id)){
for (Map<String, String> map :entry.getValue()){
attendanceItems.add(map.get("dataid"));
}
}
}
}
}catch (Exception e){
log.error("catch error :{}",e);
}
//分部
if (subCompanyMap.get(subCompanyId) != null){
for (Map<String, String> map :subCompanyMap.get(subCompanyId)){
attendanceItems.add(map.get("dataid"));
}
}
Map<String,Object> resultMap = Maps.newHashMap();
resultMap.put("attendanceItems",attendanceItems);
return resultMap;
}
}

@ -122,7 +122,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
/**
*
*/
if (CheckBoxEnum.CHECKED.getKey().equals(ksjbbxydk)) {
if (startClockPointDTO.size()>0) {
Map<String, Object> clcokInTimeData = clcokInTimeMap.get(kssj);
if (clcokInTimeData == null) {
log.debug("加班开始时间漏卡: {},clcokInTimeData:{}", kssj, clcokInTimeMap);
@ -138,7 +138,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
} else {
realityStartTime = kssj;
}
if (CheckBoxEnum.CHECKED.getKey().equals(jsjbbxydk)) {
if (endClockPointDTO.size()>0) {
Map<String, Object> clcokInTimeData = clcokInTimeMap.get(jssj);
if (clcokInTimeData == null) {
log.debug("加班结束时间漏卡: {},clcokInTimeData:{}", jssj, clcokInTimeData);
@ -154,6 +154,9 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
} else {
realityEndime = jssj;
}
if (DateUtil.getTime(realityEndime).compareTo(DateUtil.getTime(realityStartTime)) < 0){
realityEndime=realityStartTime;
}
jbsc = jbsc * 60;
if (CheckBoxEnum.CHECKED.getKey().equals(tqdkjrjb) && CheckBoxEnum.CHECKED.getKey().equals(ksjbbxydk)) {
//提前打卡开始的时长计入加班
@ -206,6 +209,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
//当存在迟到异常被抵消的情况
if (collect1.size() > 0) {
beLateTime = 0;
realityStartTime = kssjTime;
}
}
@ -249,6 +253,7 @@ public class GetOvertimeDurationCmd extends AbstractCommonCommand<Map<String, Ob
//当存在早退异常被抵消的情况
if (collect2.size() > 0) {
leaveElaryTime = 0;
realityEndime=jssjTime;
}
}

@ -58,7 +58,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
//查询所有在职人员
String queryUserSql = "select id,departmentid,subcompanyid1,companystartdate from hrmresource where status <> '5' and status <> '4' and status <> '7'";
String queryUserSql = "select id,departmentid,subcompanyid1,companystartdate,seclevel from hrmresource where status <> '5' and status <> '4' and status <> '7'";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
@ -115,7 +115,7 @@ public class AttendanceAnalysisJob extends BaseCronJob {
dataList.addAll(makeUpList);
}
sql = "select sjzt,sgsj,ygid,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq in ("+dateStrs+")";
sql = "select sjzt,sgsj,bc,fbid,bm,ygid,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq in ("+dateStrs+")";
List<Map<String,Object>> resultList = DbTools.getSqlToList(sql);
if (resultList.size() > 0){
attendaceResult.addAll(resultList);
@ -132,10 +132,9 @@ public class AttendanceAnalysisJob extends BaseCronJob {
Map<String,Object> params = Maps.newHashMap();
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa");
params.put("modeId",modeId);
Map<String,Object> resultMap = commonService.getPersonBySuitOrganzation(params);
Map<String,Object> attendancePlanMap = commonService.GetAllPersonBySuitOrganzationCmd(params);
Map<String,Object> attendacnePlanItems = basicsetService.getAttendanceItemsGroupByAttendancePlanDataCmd();
//人员所拥有的所有考勤方案
Map<String,List<Map<String,String>>> personAttendancePlan = (Map<String,List<Map<String,String>>>)resultMap.get("personAllData");
//通用考勤项目
List<Map<String,Object>> generalAttendanceItems = (List<Map<String,Object>>)attendacnePlanItems.get("generalAttendanceItems");
//考勤方案对应所属的考勤项目
@ -204,19 +203,10 @@ public class AttendanceAnalysisJob extends BaseCronJob {
paramMap.put("endDate",DateUtil.beforeDay(useDate,1));
paramMap.put("resourceId",userId);
List<Map<String,String>> attendancePlanList = personAttendancePlan.get(userId)==null?Lists.newArrayList():personAttendancePlan.get(userId);
List<Map<String, Object>> attendanceItems =Lists.newArrayList();
for (Map<String,String> attendancePlan :attendancePlanList){
if (attendanceItemGroupByPlan.get(attendancePlan.get("dataid")) != null &&
attendanceItemGroupByPlan.get(attendancePlan.get("dataid")).size()>0){
attendanceItems.addAll(attendanceItemGroupByPlan.get(attendancePlan.get("dataid")));
}
}
attendanceItems.addAll(generalAttendanceItems);
analysisParam.put("generalAttendanceItems",generalAttendanceItems);
analysisParam.put("attendancePlanList",attendancePlanList);
analysisParam.put("attendancePlanMap",attendancePlanMap);
analysisParam.put("attendanceItemGroupByPlan",attendanceItemGroupByPlan);
analysisParam.put("comprehensiveWorkingHourList",personComprehensiveWorkingHours.get(userId)==null?Lists.newArrayList():personComprehensiveWorkingHours.get(userId));
analysisParam.put("workingHourGroupBy",workingHourGroupBy);
@ -234,6 +224,10 @@ public class AttendanceAnalysisJob extends BaseCronJob {
analysisParam.put("evectionList",evectionList);
analysisParam.put("askforList",askforList);
analysisParam.put("hxbzList",hxbzList);
analysisParam.put("seclevel",Util.null2String(userMap.get("seclevel")));
analysisParam.put("departmentId",Util.null2String(userMap.get("departmentid")));
analysisParam.put("subCompanyId",Util.null2String(userMap.get("subcompanyid1")));
Map<String, List<Map<String, Object>>> attendaceResultMap = Maps.newHashMap();
List<Map<String, Object>> attendaceResultByUser = attendaceGroupById.get(userId);

@ -57,4 +57,9 @@ public interface UtilService {
* @return
*/
Map<String, Object> getAttendanceCycle(Map<String,Object> params);
/**
*
*/
Map<String, Object> getAttendanceItems(Map<String,Object> params);
}

@ -41,14 +41,15 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx"));
String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime"));
String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime"));
String betweenMinutes = Util.null2String(abnormalClockInList.get(i).get("betweenMinutes"));
if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) &&
!"".equals(classStartTime) && !"".equals(classEndTime)){
Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj);
leaveMap.put("jssj",jssj);
int betweenTime = Utils.removeRestTime(classStartTime,classEndTime,scheduleResult,analysisDate);
int betweenTime = Integer.valueOf(betweenMinutes);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap,scheduleResult,analysisDate);
if (betweenTime == intersectionTime){
if (betweenTime <= intersectionTime){
offsetAskForLeaveAnomaly.add(abnormalClockInList.get(i));
}else {
String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw"));
@ -56,6 +57,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
double itemduration = Utils.getItemduration(hsl,hsdw,betweenTime-intersectionTime, AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString()));
abnormalClockInList.get(i).put("itemduration",itemduration);
abnormalClockInList.get(i).put("betweenMinutes",betweenTime-intersectionTime);
}
}
}

@ -37,15 +37,16 @@ public class EvectionServiceImpl extends Service implements EvectionService {
String bdlx = Util.null2String(abnormalClockInList.get(i).get("bdlx"));
String classStartTime = Util.null2String(abnormalClockInList.get(i).get("classStartTime"));
String classEndTime = Util.null2String(abnormalClockInList.get(i).get("classEndTime"));
String betweenMinutes = Util.null2String(abnormalClockInList.get(i).get("betweenMinutes"));
if ((zysd.contains(Utils.getWorkFor(bdlx)) || zysd.contains(WorkForTimeEnum.ALL_TIME.getKey())) &&
!"".equals(classStartTime) && !"".equals(classEndTime)) {
Map<String,Object> leaveMap = Maps.newHashMap();
leaveMap.put("kssj",kssj);
leaveMap.put("jssj",jssj);
int betweenTime = Utils.removeRestTime(classStartTime,classEndTime,scheduleResult,analysisDate);
int betweenTime = Integer.valueOf(betweenMinutes);
int intersectionTime = Utils.getIntersectionTime(classStartTime,classEndTime,leaveMap,scheduleResult,analysisDate);
if (betweenTime == intersectionTime){
if (betweenTime <= intersectionTime){
offsetEvectionAnomaly.add(abnormalClockInList.get(i));
}else {
String hsdw = Util.null2String(abnormalClockInList.get(i).get("hsdw"));

@ -58,7 +58,6 @@ public class ShiftServiceImpl extends Service implements ShiftService {
// String bcSql = "select * from uf_jcl_kq_hxbz_dt1 where mainid = " + shiftTeamId;
List<Map<String, Object>> bcData = hxbzList.stream().filter(e->shiftTeamId.equals(e.get("mainid"))).collect(Collectors.toList());
if (bcData.size() > 0) {
log.info("compute waitCompareResultList start");
List<Map<String, Object>> waitCompareResultList = new ArrayList<>();
//循环匹配,输出匹配结果
for (Map<String, Object> bcMap : bcData) {
@ -67,9 +66,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
waitCompareMap.put("priorityValue", Util.null2String(bcMap.get("yxj")));
waitCompareResultList.add(waitCompareMap);
}
log.info("compute waitCompareResultList end");
//比较匹配结果
log.info("compareMap start");
for (Map<String, Object> compareMap : waitCompareResultList) {
//分析每组数据生成对应的ABCDE
compareMap = countMatchItem(compareMap);
@ -117,9 +114,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
result = resultE.compareTo(compareE) > 0 ? compareMap : result;
}
}
log.info("compareMap end");
//全天没有打卡时,看上一个工作日的班次为优先,如果前一个工作日也没有班次,按优先级
log.info("maxPriorityResult start");
if (result == null) {
//获取上一个工作日的班次
// String lastWorkDayInfoSql = "select * from uf_jcl_kq_cqjg where rqlx = 0 and ygid = " + empId + " and rq < '" + punchDate + "' order by rq desc limit 1;";
@ -134,7 +129,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
result = maxPriorityResult;
}
}
log.info("maxPriorityResult end");
}
}
@ -371,7 +366,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
//sql = "select a.id,b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.jbry =? and b.gsrq>=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1";
// Map<String,List<Map<String,Object>>> overtimePlanMap = DbTools.getSqlToList(sql,classesParamMap.get("pbdx"),punchDate,punchDate).stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
Map<String,List<Map<String,Object>>> overtimePlanMap = allOverPlanList.stream().filter(e->DateUtil.getTime("gsrq").compareTo(DateUtil.getTime(punchDate)) ==0).collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
Map<String,List<Map<String,Object>>> overtimePlanMap = allOverPlanList.stream().filter(e->DateUtil.getTime(e.get("gsrq").toString()).compareTo(DateUtil.getTime(punchDate)) ==0).collect(Collectors.groupingBy(e -> Util.null2String(e.get("gsrq"))));
//考勤项目

@ -3,6 +3,7 @@ package com.engine.jucailinkq.attendance.attendanceanalysis.service.impl;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.*;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.biz.AbstractAdjustClockPointAction;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.getclockInpoint.GetClockInPointCmd;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.item.GerPersonAttendanceItemsCmd;
import com.engine.jucailinkq.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO;
import com.engine.jucailinkq.attendance.attendanceanalysis.dto.clockpoint.ClockPointInfo;
import com.engine.jucailinkq.attendance.attendanceanalysis.service.UtilService;
@ -248,4 +249,9 @@ public class UtilServiceImpl extends Service implements UtilService {
public Map<String, Object> getAttendanceCycle(Map<String, Object> params) {
return commandExecutor.execute(new GetAttendanceCycleCmd(params));
}
@Override
public Map<String,Object> getAttendanceItems(Map<String, Object> params) {
return commandExecutor.execute(new GerPersonAttendanceItemsCmd(params));
}
}

@ -48,9 +48,9 @@ public class AttendanceanalysisAction {
log.info("********AttendanceanalysisAction start********");
Map<String,Object> paramMap = ParamUtil.request2Map(request);
// Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-06-20");
// paramMap.put("endDate","2024-06-20");
// paramMap.put("userIds","36");
// paramMap.put("startDate","2024-11-05");
// paramMap.put("endDate","2024-11-05");
// paramMap.put("userIds","82");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,2);
@ -69,10 +69,9 @@ public class AttendanceanalysisAction {
Map<String,Object> params = Maps.newHashMap();
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa");
params.put("modeId",modeId);
Map<String,Object> resultMap = commonService.getPersonBySuitOrganzation(params);
Map<String,Object> attendancePlanMap = commonService.GetAllPersonBySuitOrganzationCmd(params);
Map<String,Object> attendacnePlanItems = basicsetService.getAttendanceItemsGroupByAttendancePlanDataCmd();
//人员所拥有的所有考勤方案
Map<String,List<Map<String,String>>> personAttendancePlan = (Map<String,List<Map<String,String>>>)resultMap.get("personAllData");
//通用考勤项目
List<Map<String,Object>> generalAttendanceItems = (List<Map<String,Object>>)attendacnePlanItems.get("generalAttendanceItems");
//考勤方案对应所属的考勤项目
@ -98,7 +97,7 @@ public class AttendanceanalysisAction {
/**排班结果*/
String querySchedulesql = "select a.id as keyid,a.* from uf_pbjg a where bcrq >=? and bcrq<=? order by bcrq";
List<Map<String,Object>> allScheduleList = DbTools.getSqlToList(querySchedulesql,startBeforeDate,endAfterDate);
List<Map<String,Object>> allScheduleList = DbTools.getSqlToList(querySchedulesql,startDate,endDate);
/**加班计划*/
String queryOverplansql = "select a.id,b.jbry,b.ksrq,b.kssj,b.jblx,b.jsrq,b.jssj,b.jbsc,b.gsrq,b.d_jxgz,b.jxsc from uf_jcl_kq_jbjh a left join uf_jcl_kq_jbjh_dt1 b on a.id=b.mainid where b.gsrq >=? and b.gsrq<=? and (b.jbcx=0 or b.jbcx is null) and a.jlzt=1";
List<Map<String,Object>> allOverPlanList = DbTools.getSqlToList(queryOverplansql,startDate,endDate);
@ -117,7 +116,7 @@ public class AttendanceanalysisAction {
List<Map<String,Object>> hxbzList = DbTools.getSqlToList(queryHxbz);
String queryUserSql = "select id,companystartdate from hrmresource where status <> '5' and status <> '4' and status <> '7'";
String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where status <> '5' and status <> '4' and status <> '7'";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
@ -130,7 +129,7 @@ public class AttendanceanalysisAction {
dataList = dataList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq>=? and rq<=?";
sql = "select sjzt,sgsj,ygid,bc,fbid,bm,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq>=? and rq<=?";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
@ -157,7 +156,7 @@ public class AttendanceanalysisAction {
Map<String,Object> analysisParam = Maps.newHashMap();
analysisParam.put("generalAttendanceItems",generalAttendanceItems);
analysisParam.put("attendancePlanList",personAttendancePlan.get(userId)==null?Lists.newArrayList():personAttendancePlan.get(userId));
analysisParam.put("attendancePlanMap",attendancePlanMap);
analysisParam.put("attendanceItemGroupByPlan",attendanceItemGroupByPlan);
analysisParam.put("comprehensiveWorkingHourList",personComprehensiveWorkingHours.get(userId)==null?Lists.newArrayList():personComprehensiveWorkingHours.get(userId));
analysisParam.put("workingHourGroupBy",workingHourGroupBy);
@ -167,6 +166,10 @@ public class AttendanceanalysisAction {
analysisParam.put("evectionList",evectionGroup.get(userId)==null?Lists.newArrayList():evectionGroup.get(userId));
analysisParam.put("askforList",askforGroup.get(userId)==null?Lists.newArrayList():askforGroup.get(userId));
analysisParam.put("hxbzList",hxbzList);
analysisParam.put("seclevel",Util.null2String(userMap.get("seclevel")));
analysisParam.put("departmentId",Util.null2String(userMap.get("departmentid")));
analysisParam.put("subCompanyId",Util.null2String(userMap.get("subcompanyid1")));
@ -216,7 +219,7 @@ public class AttendanceanalysisAction {
String sql = "select id,userid,signdate,signtime from hrmschedulesign where isincom=1 and userid in ("+userIds+") and signdate >= ? and signdate <= ? order by signdate,signtime";
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
String queryUserSql = "select id,companystartdate from hrmresource where id in ("+userIds+")";
String queryUserSql = "select id,companystartdate,seclevel,departmentid,subcompanyid1 from hrmresource where id in ("+userIds+")";
List<Map<String,Object>> userList = DbTools.getSqlToList(queryUserSql);
Map<String,List<Map<String,Object>>> userGroupMap = userList.stream().collect(Collectors.groupingBy(e->e.get("id").toString()));
@ -231,7 +234,7 @@ public class AttendanceanalysisAction {
Map<String, List<Map<String,Object>>> collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("userid"))));
sql = "select sjzt,sgsj,ygid,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq>=? and rq<=? and ygid in ("+userIds+")";
sql = "select sjzt,sgsj,ygid,bc,fbid,bm,rq,j1,c1,j2,c2,j3,c3,j4,c4,j5,c5,j6,c6,j7,c7,j8,c8 from uf_jcl_kq_cqjg where rq>=? and rq<=? and ygid in ("+userIds+")";
List<Map<String,Object>> attendaceResult = DbTools.getSqlToList(sql,startBeforeDate,endAfterDate);
Map<String,List<Map<String,Object>>> attendaceGroupById = attendaceResult.stream().collect(Collectors.groupingBy(e->e.get("ygid").toString()));
@ -247,7 +250,7 @@ public class AttendanceanalysisAction {
Map<String,Object> analysisParam = Maps.newHashMap();
analysisParam.put("generalAttendanceItems",generalAttendanceItems);
analysisParam.put("attendancePlanList",personAttendancePlan.get(userId)==null?Lists.newArrayList():personAttendancePlan.get(userId));
analysisParam.put("attendancePlanMap",attendancePlanMap);
analysisParam.put("attendanceItemGroupByPlan",attendanceItemGroupByPlan);
analysisParam.put("comprehensiveWorkingHourList",personComprehensiveWorkingHours.get(userId)==null?Lists.newArrayList():personComprehensiveWorkingHours.get(userId));
analysisParam.put("workingHourGroupBy",workingHourGroupBy);
@ -257,6 +260,9 @@ public class AttendanceanalysisAction {
analysisParam.put("evectionList",evectionGroup.get(userId)==null?Lists.newArrayList():evectionGroup.get(userId));
analysisParam.put("askforList",askforGroup.get(userId)==null?Lists.newArrayList():askforGroup.get(userId));
analysisParam.put("hxbzList",hxbzList);
analysisParam.put("seclevel",userGroupMap.get(userId).get(0).get("seclevel"));
analysisParam.put("departmentId",userGroupMap.get(userId).get(0).get("departmentid"));
analysisParam.put("subCompanyId",userGroupMap.get(userId).get(0).get("subcompanyid1"));
Map<String, List<Map<String, Object>>> attendaceResultMap = Maps.newHashMap();

@ -10,10 +10,12 @@ import com.engine.jucailinkq.attendance.enums.ClassSegmentTypeEnum;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
@ -21,6 +23,7 @@ import java.time.ZoneOffset;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
@ -43,26 +46,18 @@ public class AttendanceAnalysisWrapper extends Service {
log.debug("***********analysis userId:{} analysisDate:{} start***********", userId,analysisDateList);
log.debug("clockInTimeDate : [{}]", dataList);
String beforeTwoDayDateDate = DateUtil.beforeDay(analysisDateList.get(0), 2);
/** 打卡数据 */
Map<String, List<Map<String, Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() > 0) {
collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
}
String departmentid = Util.null2String(analysisParam.get("departmentId"));
String subcompanyid1 = Util.null2String(analysisParam.get("subCompanyId"));
Map<String,String> attendancePlanMap = (Map<String,String>)analysisParam.get("attendancePlanMap");
List<Map<String,Object>> generalAttendanceItems = (List<Map<String,Object>>)analysisParam.get("generalAttendanceItems");
List<Map<String,String>> attendancePlanList = (List<Map<String,String>>)analysisParam.get("attendancePlanList");
Map<String,List<Map<String,Object>>> attendanceItemGroupByPlan = (Map<String,List<Map<String,Object>>>)analysisParam.get("attendanceItemGroupByPlan");
/**获得人员考勤项目*/
// List<Map<String, Object>> attendanceItems =Lists.newArrayList();
// for (Map<String,String> attendancePlan :attendancePlanList){
// if (attendanceItemGroupByPlan.get(attendancePlan.get("dataid")) != null &&
// attendanceItemGroupByPlan.get(attendancePlan.get("dataid")).size()>0){
// attendanceItems.addAll(attendanceItemGroupByPlan.get(attendancePlan.get("dataid")));
// }
// }
// attendanceItems.addAll(generalAttendanceItems);
/**获得综合工时*/
List<Map<String,String>> comprehensiveWorkingHourList = (List<Map<String,String>>)analysisParam.get("comprehensiveWorkingHourList");
Map<String,List<Map<String,Object>>> workingHourGroupBy = (Map<String,List<Map<String,Object>>>)analysisParam.get("workingHourGroupBy");
@ -70,22 +65,13 @@ public class AttendanceAnalysisWrapper extends Service {
for (String analysisDate :analysisDateList){
/**获得人员考勤项目*/
List<Map<String,String>> analysisDateAttendancePlanList = attendancePlanList.stream().filter(e->{
if ((!"".equals(Util.null2String(e.get("bdate"))) && DateUtil.getTime(analysisDate).compareTo(DateUtil.getTime(e.get("bdate"))) <0) ||
(!"".equals(Util.null2String(e.get("edate"))) && DateUtil.getTime(analysisDate).compareTo(DateUtil.getTime(e.get("edate"))) > 0)){
return false;
}else {
return true;
}
}).collect(Collectors.toList());
List<Map<String, Object>> analysisDateAttendanceItems =Lists.newArrayList();
for (Map<String,String> attendancePlan :analysisDateAttendancePlanList){
if (attendanceItemGroupByPlan.get(attendancePlan.get("dataid")) != null &&
attendanceItemGroupByPlan.get(attendancePlan.get("dataid")).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendancePlan.get("dataid")));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
Map<String,Object> getAttendacneParamMap = Maps.newHashMap();
getAttendacneParamMap.put("userId",userId);
getAttendacneParamMap.put("departmentId",departmentid);
getAttendacneParamMap.put("subCompanyId",subcompanyid1);
getAttendacneParamMap.put("anysisyDate",analysisDate);
getAttendacneParamMap.put("seclevel",analysisParam.get("seclevel"));
getAttendacneParamMap.putAll(attendancePlanMap);
/**
*
@ -107,17 +93,12 @@ public class AttendanceAnalysisWrapper extends Service {
}
}
List<Map<String, Object>> analysisDateAttendaceResult = attendaceResultMap.get(analysisDate);
if (analysisDateAttendaceResult == null || analysisDateAttendaceResult.size() == 0 || (!CheckBoxEnum.CHECKED.getKey().equals(analysisDateAttendaceResult.get(0).get("sgsj")) &&
!"3".equals(analysisDateAttendaceResult.get(0).get("sjzt")))) {
/** 获取人员班次*/
Map<String, Object> classesParamMap = Maps.newHashMap();
classesParamMap.put("startDate", analysisDate);
classesParamMap.put("endDate", analysisDate);
classesParamMap.put("pbdx", userId);
classesParamMap.put("clockInTimeMap", clockInTimeMap);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
classesParamMap.put("clockInData", dataList);
classesParamMap.put("allScheduleList",analysisParam.get("allScheduleList"));
classesParamMap.put("allClassInfoList",analysisParam.get("allClassInfoList"));
@ -126,7 +107,57 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("evectionList",analysisParam.get("evectionList"));
classesParamMap.put("askforList",analysisParam.get("askforList"));
classesParamMap.put("hxbzList",analysisParam.get("hxbzList"));
Map<String, Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
List<Map<String, Object>> analysisDateAttendaceResult = attendaceResultMap.get(analysisDate);
List<Map<String, Object>> analysisDateAttendanceItems =Lists.newArrayList();
Map<String, Object> schedulMap = null;
if (analysisDateAttendaceResult == null || analysisDateAttendaceResult.size() == 0 || (!CheckBoxEnum.CHECKED.getKey().equals(analysisDateAttendaceResult.get(0).get("sgsj")) &&
!"3".equals(analysisDateAttendaceResult.get(0).get("sjzt")))) {
/**人员换了部门,需班次、分部、部门继续走老的*/
if (analysisDateAttendaceResult!=null && analysisDateAttendaceResult.size() >0 && (!analysisDateAttendaceResult.get(0).get("fbid").equals(subcompanyid1) || !analysisDateAttendaceResult.get(0).get("bm").equals(departmentid))){
String olddepartmentid = analysisDateAttendaceResult.get(0).get("bm").toString();
String oldsubCompanyid = analysisDateAttendaceResult.get(0).get("fbid").toString();
//旧的考勤项目
getAttendacneParamMap.put("departmentId",olddepartmentid);
getAttendacneParamMap.put("subCompanyId",oldsubCompanyid);
Map<String, Object> attendanceItemresultMap = utilService.getAttendanceItems(getAttendacneParamMap);
Set<String> attendanceItems = (Set<String>)attendanceItemresultMap.get("attendanceItems");
for (String attendanceItemId:attendanceItems){
if (attendanceItemGroupByPlan.get(attendanceItemId) != null &&
attendanceItemGroupByPlan.get(attendanceItemId).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendanceItemId));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
//旧的综合工时
Map<String,Object> workhourpersonOrganzationMap = (Map<String,Object>)analysisParam.get("workhourpersonOrganzationMap");
Map<String,Object> workhourdepartMentMap = (Map<String,Object>)analysisParam.get("workhourdepartMentMap");
Map<String,Object> workhoursubCompanyMap = (Map<String,Object>)analysisParam.get("workhoursubCompanyMap");
//旧的班次
classesParamMap.put("olddepartmentid",olddepartmentid);
classesParamMap.put("oldsubCompanyid",oldsubCompanyid);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
schedulMap = utilService.getSchedulingInFormation(classesParamMap);
}else {
Map<String, Object> attendanceItemresultMap = utilService.getAttendanceItems(getAttendacneParamMap);
Set<String> attendanceItems = (Set<String>)attendanceItemresultMap.get("attendanceItems");
for (String attendanceItemId:attendanceItems){
if (attendanceItemGroupByPlan.get(attendanceItemId) != null &&
attendanceItemGroupByPlan.get(attendanceItemId).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendanceItemId));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
schedulMap = utilService.getSchedulingInFormation(classesParamMap);
}
Map<String, List<Map<String, Object>>> schedulingResultsMap = (Map<String, List<Map<String, Object>>>) schedulMap.get("schedulingResultsMap");
Map<String, Object> getClockTimeParam = Maps.newHashMap();
@ -158,38 +189,36 @@ public class AttendanceAnalysisWrapper extends Service {
log.debug("***********analysis userId:{},analysisDate:{} start***********", userId, analysisDate);
log.debug("clockInTimeDate : [{}]", dataList);
List<Map<String, Object>> attendaceResult = attendaceResultMap.get(analysisDate);
log.debug("attendaceResult : [{}]",attendaceResult);
if (attendaceResult!=null && attendaceResult.size()>0 && (CheckBoxEnum.CHECKED.getKey().equals(attendaceResult.get(0).get("sgsj")) ||
"3".equals(attendaceResult.get(0).get("sjzt")))) {
return;
}
Map<String, List<Map<String, Object>>> collect = Maps.newHashMap();
if (dataList != null && dataList.size() > 0) {
collect = dataList.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("signdate"))));
}
List<Map<String,Object>> generalAttendanceItems = (List<Map<String,Object>>)analysisParam.get("generalAttendanceItems");
List<Map<String,String>> attendancePlanList = (List<Map<String,String>>)analysisParam.get("attendancePlanList");
Map<String,String> attendancePlanMap = (Map<String,String>)analysisParam.get("attendancePlanMap");
Map<String,List<Map<String,Object>>> attendanceItemGroupByPlan = (Map<String,List<Map<String,Object>>>)analysisParam.get("attendanceItemGroupByPlan");
List<Map<String,String>> comprehensiveWorkingHourList = (List<Map<String,String>>)analysisParam.get("comprehensiveWorkingHourList");
Map<String,List<Map<String,Object>>> workingHourGroupBy = (Map<String,List<Map<String,Object>>>)analysisParam.get("workingHourGroupBy");
String departmentid = Util.null2String(analysisParam.get("departmentId"));
String subcompanyid1 = Util.null2String(analysisParam.get("subCompanyId"));
/**获得人员考勤项目*/
List<Map<String,String>> analysisDateAttendancePlanList = attendancePlanList.stream().filter(e->{
if ((!"".equals(Util.null2String(e.get("bdate"))) && DateUtil.getTime(analysisDate).compareTo(DateUtil.getTime(e.get("bdate"))) <0) ||
(!"".equals(Util.null2String(e.get("edate"))) && DateUtil.getTime(analysisDate).compareTo(DateUtil.getTime(e.get("edate"))) > 0)){
return false;
}else {
return true;
}
}).collect(Collectors.toList());
List<Map<String, Object>> analysisDateAttendanceItems =Lists.newArrayList();
for (Map<String,String> attendancePlan :analysisDateAttendancePlanList){
if (attendanceItemGroupByPlan.get(attendancePlan.get("dataid")) != null &&
attendanceItemGroupByPlan.get(attendancePlan.get("dataid")).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendancePlan.get("dataid")));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
Map<String,Object> getAttendacneParamMap = Maps.newHashMap();
getAttendacneParamMap.put("userId",userId);
getAttendacneParamMap.put("departmentId",departmentid);
getAttendacneParamMap.put("subCompanyId",subcompanyid1);
getAttendacneParamMap.put("anysisyDate",analysisDate);
getAttendacneParamMap.put("seclevel",analysisParam.get("seclevel"));
getAttendacneParamMap.putAll(attendancePlanMap);
/**
*
@ -217,7 +246,6 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("endDate", analysisDate);
classesParamMap.put("pbdx", userId);
classesParamMap.put("clockInTimeMap", clockInTimeMap);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
classesParamMap.put("clockInData", dataList);
classesParamMap.put("allScheduleList",analysisParam.get("allScheduleList"));
classesParamMap.put("allClassInfoList",analysisParam.get("allClassInfoList"));
@ -226,7 +254,55 @@ public class AttendanceAnalysisWrapper extends Service {
classesParamMap.put("evectionList",analysisParam.get("evectionList"));
classesParamMap.put("askforList",analysisParam.get("askforList"));
classesParamMap.put("hxbzList",analysisParam.get("hxbzList"));
Map<String, Object> schedulMap = utilService.getSchedulingInFormation(classesParamMap);
Map<String, Object> schedulMap = null;
List<Map<String, Object>> analysisDateAttendanceItems =Lists.newArrayList();
/**人员换了部门,需班次、分部、部门继续走老的*/
if (attendaceResult!=null && attendaceResult.size() >0 && (!attendaceResult.get(0).get("fbid").equals(subcompanyid1) || !attendaceResult.get(0).get("bm").equals(departmentid))){
String olddepartmentid = attendaceResult.get(0).get("bm").toString();
String oldsubCompanyid = attendaceResult.get(0).get("fbid").toString();
//旧的考勤项目
getAttendacneParamMap.put("departmentId",olddepartmentid);
getAttendacneParamMap.put("subCompanyId",oldsubCompanyid);
Map<String, Object> attendanceItemresultMap = utilService.getAttendanceItems(getAttendacneParamMap);
Set<String> attendanceItems = (Set<String>)attendanceItemresultMap.get("attendanceItems");
for (String attendanceItemId:attendanceItems){
if (attendanceItemGroupByPlan.get(attendanceItemId) != null &&
attendanceItemGroupByPlan.get(attendanceItemId).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendanceItemId));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
//旧的综合工时
Map<String,Object> workhourpersonOrganzationMap = (Map<String,Object>)analysisParam.get("workhourpersonOrganzationMap");
Map<String,Object> workhourdepartMentMap = (Map<String,Object>)analysisParam.get("workhourdepartMentMap");
Map<String,Object> workhoursubCompanyMap = (Map<String,Object>)analysisParam.get("workhoursubCompanyMap");
//旧的班次
classesParamMap.put("olddepartmentid",olddepartmentid);
classesParamMap.put("oldsubCompanyid",oldsubCompanyid);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
schedulMap = utilService.getSchedulingInFormation(classesParamMap);
}else {
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
Map<String, Object> attendanceItemresultMap = utilService.getAttendanceItems(getAttendacneParamMap);
Set<String> attendanceItems = (Set<String>)attendanceItemresultMap.get("attendanceItems");
for (String attendanceItemId:attendanceItems){
if (attendanceItemGroupByPlan.get(attendanceItemId) != null &&
attendanceItemGroupByPlan.get(attendanceItemId).size()>0){
analysisDateAttendanceItems.addAll(attendanceItemGroupByPlan.get(attendanceItemId));
}
}
analysisDateAttendanceItems.addAll(generalAttendanceItems);
classesParamMap.put("attendanceItems", analysisDateAttendanceItems);
schedulMap = utilService.getSchedulingInFormation(classesParamMap);
}
Map<String, List<Map<String, Object>>> schedulingResultsMap = (Map<String, List<Map<String, Object>>>) schedulMap.get("schedulingResultsMap");

@ -38,7 +38,7 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
String resourceId = Util.null2String(params.get("resourceId"));
String startDate = Util.null2String(params.get("startDate")).equals("")?DateUtil.getCurrentDate():Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_kqfa");
Map<String,Object> resultMap = Maps.newHashMap();

@ -38,6 +38,18 @@ public class GetAttendanceItemsGroupByAttendancePlanDataCmd extends AbstractComm
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);

@ -42,6 +42,8 @@ public class GetScheduleFoAnalysisCmd extends AbstractCommonCommand<Map<String,
String startDate = Util.null2String(params.get("startDate"));
String endDate = Util.null2String(params.get("endDate"));
String pbdx = Util.null2String(params.get("pbdx"));
String olddepartmentid = Util.null2String(params.get("olddepartmentid"));
String oldsubCompanyid = Util.null2String(params.get("oldsubCompanyid"));
List<Map<String,Object>> allScheduleList = (List<Map<String,Object>>)params.get("allScheduleList");
Map<String, Object> resultMap = Maps.newHashMap();
@ -91,6 +93,18 @@ public class GetScheduleFoAnalysisCmd extends AbstractCommonCommand<Map<String,
Map<String, Object> personInformationMap = personInformationThreadLocal.get(pbdx);
String pdeptids = Util.null2String(personInformationMap.get("pdeptids"));
String subcompanyid1 = Util.null2String(personInformationMap.get("subcompanyid1"));
if (!olddepartmentid.equals("")){
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
pdeptids = petDepart.get(olddepartmentid);
if (pdeptids == null || pdeptids.equals("")){
pdeptids="";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(params.get("olddepartmentid")), pdeptids);
pdeptids = olddepartmentid + pdeptids;
}
}
if (!oldsubCompanyid.equals("")){
subcompanyid1=oldsubCompanyid;
}
List<String> pdeptidList = Lists.newArrayList(pdeptids.split(","));
List<String> subcompanyList = Lists.newArrayList(subcompanyid1.split(","));

@ -36,7 +36,7 @@ public class VocationServiceImpl extends Service implements VocationService {
String sql = "select a.id userid,a.*,b.* from hrmresource a left join cus_fielddata b on a.id=b.id where a.id in (";
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where type_n = 5 or type_n = 7";
String queryDepartEmployeeSql = "select resourceid ,changedate,type_n from HRMSTATUSHISTORY where type_n = 5 or type_n = 7 and changedate <> '' and changedate is not null";
//获取离职日期
List<Map<String,Object>> departEmployeeList = DbTools.getSqlToList(queryDepartEmployeeSql);
Map<String,Object> departEmployeeMap = CommonUtil.getDepartEmployeeMap(departEmployeeList);

@ -0,0 +1,142 @@
package com.engine.jucailinkq.common.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class GetAllPersonBySuitOrganzationCmd extends AbstractCommonCommand<Map<String, Object>> {
public GetAllPersonBySuitOrganzationCmd(Map<String, Object> params) {
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
String modeId = Util.null2String(params.get("modeId"));
String sql = "select dxlx,dataid,dx,aqjb from uf_jcl_syzz where modeid=?";
List<Map<String, Object>> organizationList = DbTools.getSqlToList(sql, modeId);
Map<String,Object> resultMap = Maps.newHashMap();
Map<String, List<Map<String, Object>>> organizationListGroupBydxlx = organizationList.stream().collect(Collectors.groupingBy(e -> e.get("dxlx").toString()));
//对象类型为人员
List<Map<String, Object>> personOrganizationList = organizationListGroupBydxlx.get("0");
//对象类型为人员组织
List<Map<String, Object>> personGroupOrganizationList = organizationListGroupBydxlx.get("1");
//对象类型为部门
List<Map<String, Object>> departmentOrganizationList = organizationListGroupBydxlx.get("2");
//对象类型为分部
List<Map<String, Object>> subCompanyOrganizationList = organizationListGroupBydxlx.get("3");
//人力资源id
Map<String, List<Map<String, String>>> personData = Maps.newHashMap();
//人员分组id
Map<String, List<Map<String, String>>> personOrganzationMap = Maps.newHashMap();
//部门id
Map<String, List<Map<String, String>>> departMentMap = Maps.newHashMap();
//分部id
Map<String, List<Map<String, String>>> subCompanyMap = Maps.newHashMap();
if (personOrganizationList != null) {
for (Map<String, Object> personOrganization : personOrganizationList) {
String dx = Util.null2String(personOrganization.get("dx"));
String userId = dx.split("-")[0];
String dataId = Util.null2String(personOrganization.get("dataid"));
List<Map<String, String>> dataList2 = personData.get(userId);
if (dataList2 == null) {
dataList2 = Lists.newArrayList();
personData.put(userId, dataList2);
}
if (dataList2.stream().filter(e -> e.get("dataid").equals(dataId)).collect(Collectors.toList()).size() == 0) {
Map<String, String> dataMap = Maps.newHashMap();
dataMap.put("dataid", dataId);
dataMap.put("priority", "0");
dataMap.put("seclevel",Util.null2String(personOrganization.get("aqjb")));
dataList2.add(dataMap);
}
}
}
if (personGroupOrganizationList != null){
for (Map<String, Object> personGroupOrganization : personGroupOrganizationList) {
String dx = Util.null2String(personGroupOrganization.get("dx"));
String personGroupId = dx.split("-")[0];
String dataId = Util.null2String(personGroupOrganization.get("dataid"));
List<Map<String, String>> dataList = personOrganzationMap.get(personGroupId);
if (dataList == null) {
dataList = Lists.newArrayList();
personOrganzationMap.put(personGroupId, dataList);
}
if (dataList.stream().filter(e -> e.get("dataid").equals(dataId)).collect(Collectors.toList()).size() == 0) {
Map<String, String> dataMap = Maps.newHashMap();
dataMap.put("dataid", dataId);
dataMap.put("priority", "0");
dataMap.put("seclevel",Util.null2String(personGroupOrganization.get("aqjb")));
dataList.add(dataMap);
}
}
}
if (departmentOrganizationList != null) {
for (Map<String, Object> departmentOrganization : departmentOrganizationList) {
String dx = Util.null2String(departmentOrganization.get("dx"));
String departmentId = dx.split("-")[0];
String dataId = Util.null2String(departmentOrganization.get("dataid"));
List<Map<String, String>> dataList = departMentMap.get(departmentId);
if (dataList == null) {
dataList = Lists.newArrayList();
departMentMap.put(departmentId, dataList);
}
if (dataList.stream().filter(e -> e.get("dataid").equals(dataId)).collect(Collectors.toList()).size() == 0) {
Map<String, String> dataMap = Maps.newHashMap();
dataMap.put("dataid", dataId);
dataMap.put("priority", "2");
dataMap.put("seclevel",Util.null2String(departmentOrganization.get("aqjb")));
dataList.add(dataMap);
}
}
}
if (subCompanyOrganizationList != null) {
for (Map<String, Object> subCompanyOrganization : subCompanyOrganizationList) {
String dx = Util.null2String(subCompanyOrganization.get("dx"));
String subCompanyId = dx.split("-")[0];
String dataId = Util.null2String(subCompanyOrganization.get("dataid"));
List<Map<String, String>> dataList = subCompanyMap.get(subCompanyId);
if (dataList == null) {
dataList = Lists.newArrayList();
subCompanyMap.put(subCompanyId, dataList);
}
if (dataList.stream().filter(e -> e.get("dataid").equals(dataId)).collect(Collectors.toList()).size() == 0) {
Map<String, String> dataMap = Maps.newHashMap();
dataMap.put("dataid", dataId);
dataMap.put("priority", "3");
dataMap.put("seclevel",Util.null2String(subCompanyOrganization.get("aqjb")));
dataList.add(dataMap);
}
}
}
resultMap.put("personData",personData);
resultMap.put("personOrganzationMap",personOrganzationMap);
resultMap.put("departMentMap",departMentMap);
resultMap.put("subCompanyMap",subCompanyMap);
return resultMap;
}
}

@ -19,7 +19,7 @@ import java.util.Set;
import java.util.stream.Collectors;
/**
* modeid
* modeid
*/
public class GetPersonBySuitOrganzationCmd extends AbstractCommonCommand<Map<String,Object>> {
@ -195,6 +195,9 @@ public class GetPersonBySuitOrganzationCmd extends AbstractCommonCommand<Map<Str
}
resultMap.put("personMap",personMap);
resultMap.put("personAllData",personAllData);
resultMap.put("personOrganzationMap",personOrganzationMap);
resultMap.put("departMentMap",departMentMap);
resultMap.put("subCompanyMap",subCompanyMap);
return resultMap;
}

@ -12,4 +12,6 @@ public interface CommonService {
Map<String,Object> insertCommon(Map<String,Object> param);
Map<String,Object> getPersonBySuitOrganzation(Map<String,Object> param);
Map<String,Object> GetAllPersonBySuitOrganzationCmd(Map<String,Object> param);
}

@ -1,5 +1,6 @@
package com.engine.jucailinkq.common.service.impl;
import com.engine.jucailinkq.common.cmd.GetAllPersonBySuitOrganzationCmd;
import com.engine.jucailinkq.common.cmd.GetPersonBySuitOrganzationCmd;
import com.engine.jucailinkq.common.cmd.QueryCommonCmd;
import com.engine.jucailinkq.common.service.CommonService;
@ -45,4 +46,9 @@ public class CommonServiceImpl extends Service implements CommonService {
public Map<String, Object> getPersonBySuitOrganzation(Map<String, Object> param) {
return commandExecutor.execute(new GetPersonBySuitOrganzationCmd(param));
}
@Override
public Map<String, Object> GetAllPersonBySuitOrganzationCmd(Map<String, Object> param) {
return commandExecutor.execute(new GetAllPersonBySuitOrganzationCmd(param));
}
}

@ -725,7 +725,7 @@ public class Utils<T> {
log.debug("休息时间在请假时间 左边");
}else if (DateUtil.getTime(kssj).compareTo(DateUtil.getTime(dtkssj)) >=0 && DateUtil.getTime(jssj).compareTo(DateUtil.getTime(dtjssj)) <=0){
//请假时间在休息时间中间
betweenMinutes = 0;
betweenMinutes = DateUtil.getBetWeenMinutes(kssj,jssj);
log.debug("请假时间在休息时间中间");
}
if (betweenMinutes > 0){
@ -1427,4 +1427,11 @@ public class Utils<T> {
return sqltj;
}
public static void setDataIdbyMap(Set<String> itemSet,Map<String,Object>...values){
for (Map<String,Object> map : values){
}
}
}

Loading…
Cancel
Save