Merge remote-tracking branch 'origin/main'
commit
afda2cf7c0
@ -0,0 +1,117 @@
|
||||
package com.engine.jucailinkq.attendance.attendanceanalysis.cmd.askforleave;
|
||||
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.core.interceptor.CommandContext;
|
||||
import com.engine.jucailinkq.attendance.enums.HalfDayRuleREnum;
|
||||
import com.engine.jucailinkq.common.util.CommonUtil;
|
||||
import com.engine.jucailinkq.common.util.DateUtil;
|
||||
import com.engine.jucailinkq.common.util.Utils;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GetAskforleaveSonItemsWhenHalfDay extends AbstractCommonCommand<Map<String, Object>> {
|
||||
public GetAskforleaveSonItemsWhenHalfDay(Map<String, Object> params) {
|
||||
this.params = params;
|
||||
}
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
|
||||
Map<String,Object> askForLeaveItem = (Map<String,Object>)params.get("askForLeaveItem");
|
||||
List<Map<String,Object>> halfoffsetAskForLeaveAnomaly = (List<Map<String,Object>>)params.get("halfoffsetAskForLeaveAnomaly");
|
||||
List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
|
||||
String analysisDate = Util.null2String(params.get("analysisDate"));
|
||||
//半天规则
|
||||
String btgz = Util.null2String(scheduleResult.get(0).get("btgz"));
|
||||
//作用时段
|
||||
String zysd = Util.null2String(askForLeaveItem.get("zysd"));
|
||||
List<String> classSegmens = Lists.newArrayList();
|
||||
for (String str:zysd.split(",")){
|
||||
classSegmens.add(Utils.getClassSegmenByWorkFor(str));
|
||||
}
|
||||
List<Map<String,Object>> itemList = Lists.newArrayList();
|
||||
if (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey())){
|
||||
//按班次设置
|
||||
List<Map<String,Object>> schedules = Lists.newArrayList();
|
||||
for (Map<String, Object> scheduleMap:scheduleResult){
|
||||
if (Utils.getAbnormalListBySchedule(scheduleMap,halfoffsetAskForLeaveAnomaly,analysisDate).size() >0){
|
||||
schedules.add(scheduleMap);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(schedules,analysisDate);
|
||||
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
|
||||
String bdlx = entry.getKey();
|
||||
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(askForLeaveItem,bdlx);
|
||||
if (item != null){
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("itemduration",Utils.getItemduration(entry.getValue(),item.get("hsdw").toString(),item.get("hsl").toString()));
|
||||
itemMap.put("item",item.get("keyid"));
|
||||
itemList.add(itemMap);
|
||||
}
|
||||
}
|
||||
|
||||
}else if (btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey())){
|
||||
//取固定时间
|
||||
String fgsjd = Util.null2String(scheduleResult.get(0).get("fgsjd"));
|
||||
fgsjd = analysisDate +" "+fgsjd;
|
||||
String finalFgsjd = fgsjd;
|
||||
List<Map<String,Object>> schedules = null;
|
||||
if (DateUtil.getTime(halfoffsetAskForLeaveAnomaly.get(0).get("pointTime").toString()).compareTo(DateUtil.getTime(fgsjd))<=0){
|
||||
//取前面的班段
|
||||
schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
|
||||
if (DateUtil.getTime(Utils.getjssjTime(schedules.get(schedules.size()-1),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) >0){
|
||||
int betweenMinutes = DateUtil.getBetWeenMinutes(Utils.getkssjTime(schedules.get(schedules.size()-1),analysisDate),fgsjd);
|
||||
schedules.get(schedules.size()-1).put("edfzs",betweenMinutes);
|
||||
double oldedxss = Double.valueOf(schedules.get(schedules.size()-1).get("edxss").toString());
|
||||
double newedxss = Utils.divide(betweenMinutes,60);
|
||||
schedules.get(schedules.size()-1).put("edxss",newedxss);
|
||||
double oldedts = Double.valueOf(schedules.get(schedules.size()-1).get("edts").toString());
|
||||
double newedts = Utils.divide(newedxss*oldedts,oldedxss);
|
||||
schedules.get(schedules.size()-1).put("edts",newedts);
|
||||
}
|
||||
|
||||
}else {
|
||||
//取后面的班段
|
||||
schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
|
||||
|
||||
if (DateUtil.getTime(Utils.getkssjTime(schedules.get(0),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) <0){
|
||||
int betweenMinutes = DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(schedules.get(0),analysisDate));
|
||||
schedules.get(0).put("edfzs",betweenMinutes);
|
||||
double oldedxss = Double.valueOf(schedules.get(0).get("edxss").toString());
|
||||
double newedxss = Utils.divide(betweenMinutes,60);
|
||||
schedules.get(0).put("edxss",newedxss);
|
||||
double oldedts = Double.valueOf(schedules.get(0).get("edts").toString());
|
||||
double newedts = Utils.divide(newedxss*oldedts,oldedxss);
|
||||
schedules.get(0).put("edts",newedts);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(schedules,analysisDate);
|
||||
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
|
||||
String bdlx = entry.getKey();
|
||||
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(askForLeaveItem,bdlx);
|
||||
if (item != null){
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("itemduration",Utils.getItemduration(entry.getValue(),item.get("hsdw").toString(),item.get("hsl").toString()));
|
||||
itemMap.put("item",item.get("keyid"));
|
||||
itemList.add(itemMap);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Map<String,Object> resultMap = Maps.newHashMap();
|
||||
resultMap.put("itemList",itemList);
|
||||
return resultMap;
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package com.engine.jucailinkq.attendance.attendanceanalysis.cmd.evection;
|
||||
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.core.interceptor.CommandContext;
|
||||
import com.engine.jucailinkq.attendance.enums.HalfDayRuleREnum;
|
||||
import com.engine.jucailinkq.common.util.CommonUtil;
|
||||
import com.engine.jucailinkq.common.util.DateUtil;
|
||||
import com.engine.jucailinkq.common.util.Utils;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GetEvectionSonItemsWhenHalfDay extends AbstractCommonCommand<Map<String, Object>> {
|
||||
public GetEvectionSonItemsWhenHalfDay(Map<String, Object> params) {
|
||||
this.params = params;
|
||||
}
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
|
||||
Map<String,Object> evectionItem = (Map<String,Object>)params.get("evectionItem");
|
||||
List<Map<String,Object>> halfoffsetEvectionAnomaly = (List<Map<String,Object>>)params.get("halfoffsetEvectionAnomaly");
|
||||
List<Map<String, Object>> scheduleResult = (List<Map<String,Object>>)params.get("scheduleResult");
|
||||
String analysisDate = Util.null2String(params.get("analysisDate"));
|
||||
//半天规则
|
||||
String btgz = Util.null2String(scheduleResult.get(0).get("btgz"));
|
||||
//作用时段
|
||||
String zysd = Util.null2String(evectionItem.get("zysd"));
|
||||
List<String> classSegmens = Lists.newArrayList();
|
||||
for (String str:zysd.split(",")){
|
||||
classSegmens.add(Utils.getClassSegmenByWorkFor(str));
|
||||
}
|
||||
List<Map<String,Object>> itemList = Lists.newArrayList();
|
||||
if (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey())){
|
||||
//按班次设置
|
||||
List<Map<String,Object>> schedules = Lists.newArrayList();
|
||||
for (Map<String, Object> scheduleMap:scheduleResult){
|
||||
if (Utils.getAbnormalListBySchedule(scheduleMap,halfoffsetEvectionAnomaly,analysisDate).size() >0){
|
||||
schedules.add(scheduleMap);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(schedules,analysisDate);
|
||||
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
|
||||
String bdlx = entry.getKey();
|
||||
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(evectionItem,bdlx);
|
||||
if (item != null){
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("itemduration",Utils.getItemduration(entry.getValue(),item.get("hsdw").toString(),item.get("hsl").toString()));
|
||||
itemMap.put("item",item.get("keyid"));
|
||||
itemList.add(itemMap);
|
||||
}
|
||||
}
|
||||
|
||||
}else if (btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey())){
|
||||
//取固定时间
|
||||
String fgsjd = Util.null2String(scheduleResult.get(0).get("fgsjd"));
|
||||
fgsjd = analysisDate +" "+fgsjd;
|
||||
String finalFgsjd = fgsjd;
|
||||
List<Map<String,Object>> schedules = null;
|
||||
if (DateUtil.getTime(halfoffsetEvectionAnomaly.get(0).get("pointTime").toString()).compareTo(DateUtil.getTime(fgsjd))<=0){
|
||||
//取前面的班段
|
||||
schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
|
||||
if (DateUtil.getTime(Utils.getjssjTime(schedules.get(schedules.size()-1),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) >0){
|
||||
int betweenMinutes = DateUtil.getBetWeenMinutes(Utils.getkssjTime(schedules.get(schedules.size()-1),analysisDate),fgsjd);
|
||||
schedules.get(schedules.size()-1).put("edfzs",betweenMinutes);
|
||||
double oldedxss = Double.valueOf(schedules.get(schedules.size()-1).get("edxss").toString());
|
||||
double newedxss = Utils.divide(betweenMinutes,60);
|
||||
schedules.get(schedules.size()-1).put("edxss",newedxss);
|
||||
double oldedts = Double.valueOf(schedules.get(schedules.size()-1).get("edts").toString());
|
||||
double newedts = Utils.divide(newedxss*oldedts,oldedxss);
|
||||
schedules.get(schedules.size()-1).put("edts",newedts);
|
||||
}
|
||||
|
||||
}else {
|
||||
//取后面的班段
|
||||
schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
|
||||
|
||||
if (DateUtil.getTime(Utils.getkssjTime(schedules.get(0),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) <0){
|
||||
int betweenMinutes = DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(schedules.get(0),analysisDate));
|
||||
schedules.get(0).put("edfzs",betweenMinutes);
|
||||
double oldedxss = Double.valueOf(schedules.get(0).get("edxss").toString());
|
||||
double newedxss = Utils.divide(betweenMinutes,60);
|
||||
schedules.get(0).put("edxss",newedxss);
|
||||
double oldedts = Double.valueOf(schedules.get(0).get("edts").toString());
|
||||
double newedts = Utils.divide(newedxss*oldedts,oldedxss);
|
||||
schedules.get(0).put("edts",newedts);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(schedules,analysisDate);
|
||||
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
|
||||
String bdlx = entry.getKey();
|
||||
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(evectionItem,bdlx);
|
||||
if (item != null){
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("itemduration",Utils.getItemduration(entry.getValue(),item.get("hsdw").toString(),item.get("hsl").toString()));
|
||||
itemMap.put("item",item.get("keyid"));
|
||||
itemList.add(itemMap);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Map<String,Object> resultMap = Maps.newHashMap();
|
||||
resultMap.put("itemList",itemList);
|
||||
return resultMap;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue