Merge remote-tracking branch 'origin/main'

main
sy 6 months ago
commit afda2cf7c0

@ -172,11 +172,43 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
//半天请假
if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
if (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey())){
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
schedules = schedules.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toSet());
if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
}
}else if (btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey())){
String fgsjd = Util.null2String(scheduleResult.get(0).get("fgsjd"));
fgsjd = analysisDate +" "+fgsjd;
String finalFgsjd = fgsjd;
if (DateUtil.getTime(offsetAbnomaly.get(0).get("pointTime").toString()).compareTo(DateUtil.getTime(fgsjd))<=0){
//取前面的班段
List<Map<String, Object>> schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
for (int j=0;j<schedules.size();j++){
if (j == schedules.size()-1 && DateUtil.getTime(Utils.getjssjTime(schedules.get(j),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) >0){
employTime+=DateUtil.getBetWeenMinutes(Utils.getkssjTime(schedules.get(j),analysisDate),fgsjd);
}else {
employTime+=Double.valueOf(schedules.get(j).get("edfzs").toString());
}
}
}else {
//取后面的班段
List<Map<String, Object>> schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>0 && ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
for (int j=0;j<schedules.size();j++){
if (j == 0 && DateUtil.getTime(Utils.getkssjTime(schedules.get(j),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) <0){
employTime+=DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(schedules.get(j),analysisDate));
}else {
employTime+=Double.valueOf(schedules.get(j).get("edfzs").toString());
}
}
}
}
}else {
employTime +=edsc*30;
@ -260,11 +292,43 @@ public class ComputeAttendanceDurationCmd extends AbstractCommonCommand<Map<Stri
if (CheckBoxEnum.CHECKED.getKey().equals(btcc) && (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey()) || btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey()))){
//半天出差
if (offsetAbnomaly != null && offsetAbnomaly.size() > 0){
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
if (btgz.equals(HalfDayRuleREnum.BY_CLASS_SET.getKey())){
Set<Map<String,Object>> schedules = Utils.getScheduleByAbnormalList(scheduleResult,offsetAbnomaly,analysisDate);
schedules = schedules.stream().filter(e->ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toSet());
if (schedules.size() > 0){
employTime += schedules.stream().mapToDouble(e->Double.valueOf(e.get("edfzs").toString())).sum();
}else {
employTime +=edsc*30;
}
}else if (btgz.equals(HalfDayRuleREnum.FIXED_DURATION.getKey())){
String fgsjd = Util.null2String(scheduleResult.get(0).get("fgsjd"));
fgsjd = analysisDate +" "+fgsjd;
String finalFgsjd = fgsjd;
if (DateUtil.getTime(offsetAbnomaly.get(0).get("pointTime").toString()).compareTo(DateUtil.getTime(fgsjd))<=0){
//取前面的班段
List<Map<String, Object>> schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
for (int j=0;j<schedules.size();j++){
if (j == schedules.size()-1 && DateUtil.getTime(Utils.getjssjTime(schedules.get(j),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) >0){
employTime+=DateUtil.getBetWeenMinutes(Utils.getkssjTime(schedules.get(j),analysisDate),fgsjd);
}else {
employTime+=Double.valueOf(schedules.get(j).get("edfzs").toString());
}
}
}else {
//取后面的班段
List<Map<String, Object>> schedules = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>0 && ClassSegmentTypeEnum.WORK_TIME.getKey().equals(e.get("bdlx"))).collect(Collectors.toList());
for (int j=0;j<schedules.size();j++){
if (j == 0 && DateUtil.getTime(Utils.getkssjTime(schedules.get(j),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) <0){
employTime+=DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(schedules.get(j),analysisDate));
}else {
employTime+=Double.valueOf(schedules.get(j).get("edfzs").toString());
}
}
}
}
}else {
employTime +=edsc*30;

@ -105,14 +105,15 @@ public class GetAskForLeaveCmd extends AbstractCommonCommand<Map<String,Object>>
//全天请假
if (CheckBoxEnum.CHECKED.getKey().equals(askForLeaveData.get("qtj"))){
if (sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){
Map<String,Object> proportionMap = Utils.getClassSegmentTimeProportion(scheduleResult,analysisDate);
for (Map.Entry<String,Object> entry: proportionMap.entrySet()){
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(scheduleResult,analysisDate);
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
String bdlx = entry.getKey();
int betweenTimes = Integer.valueOf(entry.getValue().toString());
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(askForLeaveItem,bdlx);
if (item != null){
String sonhsdw = item.get("hsdw").toString();
List<Map<String,Object>> schedules = entry.getValue();
Map<String, Object> itemMap = Maps.newHashMap();
itemMap.put("itemduration",Utils.getItemduration(Double.valueOf(Util.null2String(item.get("hsl"))),Util.null2String(item.get("hsdw")),betweenTimes, AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())));
itemMap.put("itemduration",Utils.getItemduration(schedules,sonhsdw,item.get("hsl").toString()));
itemMap.put("item",item.get("keyid"));
resultList.add(itemMap);
}

@ -103,14 +103,15 @@ public class GetEvectionCmd extends AbstractCommonCommand<Map<String,Object>> {
//全天出差
if (CheckBoxEnum.CHECKED.getKey().equals(evectionData.get("qtcc"))){
if (sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){
Map<String,Object> proportionMap = Utils.getClassSegmentTimeProportion(scheduleResult,analysisDate);
for (Map.Entry<String,Object> entry: proportionMap.entrySet()){
Map<String,List<Map<String,Object>>> proportionMap = Utils.getClassSegmentTimeProportion(scheduleResult,analysisDate);
for (Map.Entry<String,List<Map<String,Object>>> entry: proportionMap.entrySet()){
String bdlx = entry.getKey();
int betweenTimes = Integer.valueOf(entry.getValue().toString());
Map<String,Object> item = CommonUtil.assembleAskForOrEvectionItem(evectionItem,bdlx);
if (item != null){
String sonhsdw = item.get("hsdw").toString();
List<Map<String,Object>> schedules = entry.getValue();
Map<String, Object> itemMap = Maps.newHashMap();
itemMap.put("itemduration",Utils.getItemduration(Double.valueOf(Util.null2String(item.get("hsl"))),Util.null2String(item.get("hsdw")),betweenTimes, AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString())));
itemMap.put("itemduration",Utils.getItemduration(schedules,sonhsdw,item.get("hsl").toString()));
itemMap.put("item",item.get("keyid"));
resultList.add(itemMap);
}

@ -115,7 +115,7 @@ public class GetScheduleResultListCmd extends AbstractCommonCommand<Map<String,O
adjustWorkOverTimeClass(data, attendanceItems,commandContext);
}
resultMap.put(shiftResult.get("bcrq").toString(),bcData);
clockInTimeDataMap.put(shiftResult.get("bcrq").toString(),shiftResult.get("clockInTimeData"));
clockInTimeDataMap.put(shiftResult.get("bcrq").toString(),shiftResult.get("oldclockInTimeData"));
}
/** 加班计划*/

@ -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;
}
}

@ -155,8 +155,8 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
log.debug("最终加班时长: {}",jbsc);
workOverTimeItems.put("item",workTimeBeLateItems.get(0).get("key"));
//20240914逻辑修改加班转调休中加班时长、转入假期时长不进行核算量相关逻辑处理
// double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
double itemduration = Utils.getItemdurationDownWithoutHsl(workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
double itemduration = Utils.getItemdurationDown(workOverTimeHsl,workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
// double itemduration = Utils.getItemdurationDownWithoutHsl(workOverTimeHsdw,Long.valueOf(Math.round(jbsc)).intValue(),AccountingUnitEnum.MINUTES);
workOverTimeItems.put("itemduration",itemduration);
workOverTimeItems.put("jbsc",jbsc);
@ -203,8 +203,8 @@ public class SaveWorkOverTimeCmd extends AbstractCommonCommand<Map<String,Object
Map<String,Object> holidayItem = getHolidayItem(workTimeBeLateItems.get(0).get("zrdjb").toString(),attendanceItems);
//20240914逻辑修改加班转调休中加班时长、转入假期时长不进行核算量相关逻辑处理
// double ktsc = Utils.getItemdurationDown(Double.valueOf(holidayItem.get("hsl").toString()),holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
// double ktsc = Utils.getItemdurationDownWithoutHsl(holidayItem.get("hsdw").toString(),Double.valueOf(jbsc).intValue(),AccountingUnitEnum.MINUTES);
double ktsc = itemduration;
insertHoliDayParam.put("ktsc",ktsc);
insertHoliDayParam.put("yxsc",0);
insertHoliDayParam.put("wxsc",ktsc);

@ -1,5 +1,6 @@
package com.engine.jucailinkq.attendance.attendanceanalysis.service;
import java.util.List;
import java.util.Map;
public interface AskForLeaveService {
@ -28,4 +29,11 @@ public interface AskForLeaveService {
* @return
*/
Map<String,Object> getAskForLeave(Map<String,Object> param);
/**
*
* @param param
* @return
*/
List<Map<String,Object>> getSonItemsWhenHalfDay(Map<String,Object> param);
}

@ -1,15 +1,15 @@
package com.engine.jucailinkq.attendance.attendanceanalysis.service.impl;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.GetAskForLeaveCmd;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.askforleave.GetAskforleaveSonItemsWhenHalfDay;
import com.engine.jucailinkq.attendance.attendanceanalysis.cmd.evection.GetEvectionSonItemsWhenHalfDay;
import com.engine.jucailinkq.attendance.attendanceanalysis.service.AskForLeaveService;
import com.engine.jucailinkq.attendance.enums.*;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
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.sun.corba.se.spi.ior.IdentifiableFactory;
import weaver.general.Util;
import java.time.ZoneOffset;
@ -184,7 +184,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
if (ifBefore){
List<Map<String,Object>> beforeScheduleList = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getkssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))<=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
for (int i=0;i<beforeScheduleList.size();i++){
if (i == beforeScheduleList.size()-1){
if (i == beforeScheduleList.size()-1 && DateUtil.getTime(Utils.getjssjTime(beforeScheduleList.get(i),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) >0){
if (keyName.equals("edfzs")){
itemduration+=DateUtil.getBetWeenMinutes(Utils.getkssjTime(beforeScheduleList.get(i),analysisDate),fgsjd);
}else if (keyName.equals("edxss")){
@ -195,9 +195,9 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
}
}
}else {
List<Map<String,Object>> afterScheduleList = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>=0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
List<Map<String,Object>> afterScheduleList = scheduleResult.stream().filter(e-> DateUtil.getTime(Utils.getjssjTime(e,analysisDate)).compareTo(DateUtil.getTime(finalFgsjd))>0 && classSegmens.contains(e.get("bdlx"))).collect(Collectors.toList());
for (int i=0;i<afterScheduleList.size();i++){
if (i == 0){
if (i == 0 && DateUtil.getTime(Utils.getkssjTime(afterScheduleList.get(i),analysisDate)).compareTo(DateUtil.getTime(finalFgsjd)) <0){
if (keyName.equals("edfzs")){
itemduration+=DateUtil.getBetWeenMinutes(fgsjd,Utils.getjssjTime(afterScheduleList.get(i),analysisDate));
}else if (keyName.equals("edxss")){
@ -349,5 +349,15 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
}
return abnormalClockInList;
}
@Override
public List<Map<String, Object>> getSonItemsWhenHalfDay(Map<String, Object> param) {
if (param.get("askForLeaveItem") != null){
return (List<Map<String, Object>>)commandExecutor.execute(new GetAskforleaveSonItemsWhenHalfDay(param)).get("itemList");
}else if (param.get("evectionItem") != null){
return (List<Map<String, Object>>)commandExecutor.execute(new GetEvectionSonItemsWhenHalfDay(param)).get("itemList");
}
return Lists.newArrayList();
}
}

@ -283,6 +283,7 @@ public class ShiftServiceImpl extends Service implements ShiftService {
clockInTimeDataParam.put("askForLeaveAndEvctionSchedule",askForLeaveAndEvctionSchedule);
List<ClockPointDTO> clockInTimeData = utilService.getClockInPointCmd(clockInTimeDataParam);
clockInDataMatchInfo.put("oldclockInTimeData",clockInTimeData);
if(clockInTimeData != null && clockInTimeData.size() > 0) {
clockInTimeData = clockInTimeData.stream().filter(ClockPointDTO::isRecord).collect(Collectors.toList());
}

@ -44,11 +44,11 @@ public class AttendanceanalysisAction {
public String getSchedulingData(@Context HttpServletRequest request, @Context HttpServletResponse response) {
try {
log.info("********AttendanceanalysisAction start********");
Map<String,Object> paramMap = ParamUtil.request2Map(request);
//Map<String,Object> paramMap = Maps.newHashMap();
// paramMap.put("startDate","2024-09-20");
// paramMap.put("endDate","2024-09-20");
// paramMap.put("userIds","25");
// Map<String,Object> paramMap = ParamUtil.request2Map(request);
Map<String,Object> paramMap = Maps.newHashMap();
paramMap.put("startDate","2024-07-22");
paramMap.put("endDate","2024-07-22");
paramMap.put("userIds","31");
String startDate = Util.null2String(paramMap.get("startDate"));
String startBeforeDate = DateUtil.beforeDay(startDate,2);

@ -263,10 +263,23 @@ public class UpdateAttendanceResultWrapper extends Service {
Map<String,Object> handleMap = askForLeaveService.askForLeaveByHalfDay(param);
itemduration = Double.valueOf(handleMap.get("itemduration").toString());
abnormalClockInList = (List<Map<String,Object>>)handleMap.get("abnormalClockInList");
offsetAskForLeaveAnomaly.addAll((List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly"));
List<Map<String,Object>> halfoffsetAskForLeaveAnomaly = (List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly");
offsetAskForLeaveAnomaly.addAll(halfoffsetAskForLeaveAnomaly);
resultMap.put("itemduration",itemduration);
askForLeaveToOffsetAbnomaly.put(askForLeaveList.get(i),(List<Map<String,Object>>)handleMap.get("offsetAskForLeaveAnomaly"));
askForLeaveToOffsetAbnomaly.put(askForLeaveList.get(i),halfoffsetAskForLeaveAnomaly);
resultMap.put("item",askForLeaveList.get(i).get("jqlx"));
if (sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){
//拆分半天假
if (halfoffsetAskForLeaveAnomaly.size() > 0){
param.put("halfoffsetAskForLeaveAnomaly",halfoffsetAskForLeaveAnomaly);
List<Map<String,Object>> itemList = askForLeaveService.getSonItemsWhenHalfDay(param);
if (itemList.size() > 0){
resultList.addAll(itemList);
}
}else {
resultList.add(resultMap);
}
}
}else if (!"".equals(qjsc) || (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey()) || btgz.equals(HalfDayRuleREnum.HALF_RATED_DURATION.getKey())))){
if (CheckBoxEnum.CHECKED.getKey().equals(btj)){
if (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey())){
@ -446,10 +459,23 @@ public class UpdateAttendanceResultWrapper extends Service {
Map<String,Object> handleMap = evectionService.evectionByHalfDay(param);
itemduration = Double.valueOf(handleMap.get("itemduration").toString());
abnormalClockInList = (List<Map<String,Object>>)handleMap.get("abnormalClockInList");
offsetEvectionAnomaly.addAll((List<Map<String,Object>>)handleMap.get("offsetEvectionAnomaly"));
List<Map<String,Object>> halfoffsetEvectionAnomaly = (List<Map<String,Object>>)handleMap.get("offsetEvectionAnomaly");
offsetEvectionAnomaly.addAll(halfoffsetEvectionAnomaly);
resultMap.put("itemduration",itemduration);
evectionToOffsetAbnomaly.put(evectionList.get(i),(List<Map<String,Object>>)handleMap.get("offsetEvectionAnomaly"));
evectionToOffsetAbnomaly.put(evectionList.get(i),halfoffsetEvectionAnomaly);
resultMap.put("item",evectionList.get(i).get("cclx"));
if (sffzcx.equals(CheckBoxEnum.CHECKED.getKey())){
//拆分出差
if (halfoffsetEvectionAnomaly.size() > 0){
param.put("halfoffsetEvectionAnomaly",halfoffsetEvectionAnomaly);
List<Map<String,Object>> itemList = askForLeaveService.getSonItemsWhenHalfDay(param);
if (itemList.size() > 0){
resultList.addAll(itemList);
}
}else {
resultList.add(resultMap);
}
}
}else if (!"".equals(ccsc) || (CheckBoxEnum.CHECKED.getKey().equals(btj) && (btgz.equals(HalfDayRuleREnum.HALF_TOTAL_DURATION.getKey()) || btgz.equals(HalfDayRuleREnum.HALF_RATED_DURATION.getKey())))){
//时长出差
itemduration = Utils.getItemduration(hsl,hsdw,ccscMinute,AccountingUnitEnum.MINUTES,Double.valueOf(scheduleResult.get(0).get("edsc").toString()));

@ -4,9 +4,12 @@ import com.engine.jucailinkq.attendance.component.persongroup.commonutil.Persong
import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
@ -65,8 +68,14 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
if (departmentOrganizationList != null){
String deptid = Util.null2String(departMentMap.get("departmentid"));
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
if (petDepart != null){
pdeptids = petDepart.get(deptid);
}
if (pdeptids == null || pdeptids.equals("")){
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
}
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
String dx = Util.null2String(departmentOrganization.get("dx"));
@ -92,12 +101,20 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
}
}
if (personGroupOrganizationList != null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,sqltj,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate);
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
Set<String> personnelGroupIds = null;
if (personBelongGroup == null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,sqltj,bdate,edate from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate);
}else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(startDate))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(startDate))>=0)).collect(Collectors.toList());
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
}
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];
if (personnelGroupIds.contains(personnelGroupId)){
@ -124,7 +141,6 @@ public class GetAttendanceItemsByPersonDataCmd extends AbstractCommonCommand<Map
attendanceItem.put("sonItems",sonGroupMap.get(attendanceItem.get("keyid")));
}
}
}
resultMap.put("data",attendanceItems);

@ -3,7 +3,9 @@ package com.engine.jucailinkq.attendance.attendanceplan.cmd;
import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.core.interceptor.CommandContext;
import com.google.common.collect.Lists;
@ -63,8 +65,14 @@ public class GetWorkHoursItemByPersonCmd extends AbstractCommonCommand<Map<Strin
if (departmentOrganizationList != null){
String deptid = Util.null2String(departMentMap.get("departmentid"));
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
if (petDepart != null){
pdeptids = petDepart.get(deptid);
}
if (pdeptids == null || pdeptids.equals("")){
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
}
log.debug("pdeptids : [{}]",pdeptids);
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
String dx = Util.null2String(departmentOrganization.get("dx"));
@ -90,11 +98,21 @@ public class GetWorkHoursItemByPersonCmd extends AbstractCommonCommand<Map<Strin
}
}
if (personGroupOrganizationList != null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate);
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
Set<String> personnelGroupIds = null;
if (personBelongGroup == null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate);
}else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(startDate))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(startDate))>=0)).collect(Collectors.toList());
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
}
log.debug("personnelGroupIds : {}",personnelGroupIds);
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];

@ -12,10 +12,7 @@ import com.engine.jucailinkq.attendance.enums.CheckBoxEnum;
import com.engine.jucailinkq.attendance.enums.PersonGroupListTypeEnum;
import com.engine.jucailinkq.attendance.enums.RegularScheduleTypeEnum;
import com.engine.jucailinkq.common.exception.AttendanceRunTimeException;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.jucailinkq.common.util.*;
import com.engine.core.impl.Service;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@ -48,6 +45,8 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
log.debug("getWorkRulesList : [{}]",resourceIds);
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_bcxx");
Set<String> bcids = Sets.newHashSet();
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
CommonUtil.initPersonInfromation();
for (String resourceId :resourceIds.split(",")){
bcids.addAll(CommonUtil.getAllDataIds(resourceId,modeId,DateUtil.getCurrentDate()));
}
@ -259,6 +258,9 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
param.put("pageSize","31");
param.put("recurrence","1");
//初始化人员分组数据
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
CommonUtil.initPersonInfromation();
List<Map<String, Object>> datas = Lists.newArrayList();
for (Map<String,Object> map:dataTable){
String id = map.get("id").toString();
@ -422,6 +424,8 @@ public class WorkRulesServiceImpl extends Service implements WorkRulesService {
@Override
public Map<String, Object> saveCalendarWork(Map<String, Object> params) {
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
CommonUtil.initPersonInfromation();
String bcxxId = Util.null2String(params.get("bcxx"));
String resourceIds = Util.null2String(params.get("resourceIds"));
String dateArrs = Util.null2String(params.get("date"));

@ -9,6 +9,7 @@ import com.engine.common.entity.BizLogContext;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.core.interceptor.CommandContext;
import com.engine.jucailinkq.common.util.ExtensionClassHolder;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
@ -76,11 +77,22 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
//人员分组数据
List<Map<String,Object>> personGroupList = Lists.newArrayList();
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
//查人员分组
String currentTime = DateUtil.getCurrentDate();
String queryryfz = "select a.mainid,a.empid,a.filters,a.bdate,a.edate,a.sqltj from uf_ryqz_dt1 a,(select pbdxryfz from uf_pbjg where dxlx=1 group by pbdxryfz) b where a.mainid =b.pbdxryfz and a.bdate <= '"+currentTime+"'";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(queryryfz);
List<Map<String,Object>> personnelGroups = PersongroupCommonUtil.getPersonnelGroupByPerson(personGroupData,pbdx,null);
List<Map<String,Object>> personnelGroups = null;
if (personBelongGroup == null){
String queryryfz = "select a.mainid,a.empid,a.filters,a.bdate,a.edate,a.sqltj from uf_ryqz_dt1 a,(select pbdxryfz from uf_pbjg where dxlx=1 group by pbdxryfz) b where a.mainid =b.pbdxryfz and a.bdate <= '"+currentTime+"'";
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(queryryfz);
personnelGroups = PersongroupCommonUtil.getPersonnelGroupByPerson(personGroupData,pbdx,null);
}else {
personnelGroups = personBelongGroup.get(pbdx) == null?Lists.newArrayList():personBelongGroup.get(pbdx);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(currentTime))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(currentTime))>=0)).collect(Collectors.toList());
}
Map<String,List<Map<String,Object>>> personnelGroupsCollect = personnelGroups.stream().collect(Collectors.groupingBy(e->e.get("mainid").toString()));
Set<String> personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
querySqlbyPbdx = sql +conditions + " and pbdxryfz in (";
@ -111,11 +123,21 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
//部门数据
List<Map<String,Object>> departmentList = Lists.newArrayList();
//查询部门数据
String queryDepartmentidAndSubcompanyid = "select id,departmentid,subcompanyid1 from hrmresource where id =?";
Map<String,Object> dataMap = DbTools.getSqlToMap(queryDepartmentidAndSubcompanyid,pbdx);
Map<String, Map<String, Object>> personInformationThreadLocal = ExtensionClassHolder.getPersonInformationThreadLocal();
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(dataMap.get("departmentid")), pdeptids);
pdeptids = Util.null2String(dataMap.get("departmentid")) + pdeptids;
String subcompanyid1="";
if (personInformationThreadLocal == null){
String queryDepartmentidAndSubcompanyid = "select id,departmentid,subcompanyid1 from hrmresource where id =?";
Map<String,Object> dataMap = DbTools.getSqlToMap(queryDepartmentidAndSubcompanyid,pbdx);
pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(dataMap.get("departmentid")), pdeptids);
pdeptids = Util.null2String(dataMap.get("departmentid")) + pdeptids;
subcompanyid1 = dataMap.get("subcompanyid1").toString();
}else {
Map<String, Object> personInformationMap = personInformationThreadLocal.get(pbdx);
pdeptids = Util.null2String(personInformationMap.get("pdeptids"));
subcompanyid1 = Util.null2String(personInformationMap.get("subcompanyid1"));
}
log.debug("pdeptids : [{}]",pdeptids);
querySqlbyPbdx = sql + conditions + " and pbdxbm in (";
log.debug("递归查询人员-部门节点sql:{},pdeptids:{}",querySqlbyPbdx,pdeptids);
@ -128,10 +150,10 @@ public class GetDatatableRecurrenceCmd extends AbstractCommonCommand<Map<String,
List<Map<String,Object>> subCompanyList = Lists.newArrayList();
//查询人员分部
querySqlbyPbdx = sql + conditions + " and pbdxfb = ? order by bcrq";
log.debug("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,dataMap.get("subcompanyid1"));
log.debug("递归查询人员-分部节点sql:{},pdeptids:{}",querySqlbyPbdx,subcompanyid1);
param.clear();
param.addAll(Dateparam);
param.add(dataMap.get("subcompanyid1"));
param.add(subcompanyid1);
subCompanyList = DbTools.getSqlToList(querySqlbyPbdx,param.toArray());
//Map<String,List<Map<String,Object>>> subCompanyCollect = subCompanyList.stream().collect(Collectors.groupingBy(e->e.get("pbtj").toString()));

@ -470,6 +470,72 @@ public class PersongroupCommonUtil {
return userIds;
}
/**
*
* @return
*/
public static Map<String,List<Map<String,Object>>> getAllpersonBelongGroup(){
String sql = "select a.list_type,a.userfor,b.mainid,b.empid,b.filters,b.bdate,b.edate,b.sqltj from uf_ryqz a left join uf_ryqz_dt1 b on a.id=b.mainid";
Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap();
List<Map<String,Object>> personGroupList = DbTools.getSqlToList(sql);
for (Map<String,Object> personGroup:personGroupList){
String empid = Util.null2String(personGroup.get("empid"));
String filters = Util.null2String(personGroup.get("filters"));
String list_type = Util.null2String(personGroup.get("list_type"));
String sqltj = Util.null2String(personGroup.get("sqltj"));
if (PersonGroupListTypeEnum.PERSON.getKey().equals(list_type) && !"".equals(empid)){
//人员清单
addpersonBelongGroup(resultMap,empid,personGroup,null);
}else if (PersonGroupListTypeEnum.CONDITION.getKey().equals(list_type) && !"".equals(filters)){
filters = filters.replace("","and");
filters = filters.replace("","or");
//条件清单
sql = "select id,seclevel from hrmresource where 1=1 ";
if (filters.contains("field")){
sql = "select a.id,a.seclevel from hrmresource a left join cus_fielddata b on a.id=b.id where scope='HrmCustomFieldByInfoType' and "+filters;
}else {
sql = sql+ " and "+filters;
}
log.debug("getPersonnelGroupingByPerson filter sql : {}",sql);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sql);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
String seclevel = Util.null2String(dataMap.get("seclevel"));
addpersonBelongGroup(resultMap,hrmId,personGroup,seclevel);
}
}else if (PersonGroupListTypeEnum.SQLCONDITION.getKey().equals(list_type) && !"".equals(sqltj)){
sqltj = Utils.converSQL(sqltj);
log.info("getPersonnelGroupingByPerson sqltj : [{}]",sqltj);
List<Map<String,Object>> dataList = DbTools.getSqlToList(sqltj);
for (Map<String,Object> dataMap :dataList){
String hrmId = Util.null2String(dataMap.get("id"));
addpersonBelongGroup(resultMap,hrmId,personGroup,null);
}
}
}
return resultMap;
}
public static void addpersonBelongGroup(Map<String,List<Map<String,Object>>> resultMap,String empid,Map<String,Object> personGroup,String seclevel){
List<Map<String,Object>> personGroups = resultMap.get(empid);
if (personGroups == null){
personGroups = Lists.newArrayList();
resultMap.put(empid,personGroups);
}
Map<String,Object> map = Maps.newHashMap();
map.put("userfor",personGroup.get("userfor"));
map.put("mainid",personGroup.get("mainid"));
map.put("bdate",personGroup.get("bdate"));
map.put("edate",personGroup.get("edate"));
map.put("seclevel",seclevel);
personGroups.add(map);
}
/**
*
* @return

@ -3,6 +3,7 @@ package com.engine.jucailinkq.attendance.vacation.job.holidaygeneration;
import com.engine.jucailinkq.attendance.vacation.service.VocationService;
import com.engine.jucailinkq.attendance.vacation.service.impl.VocationServiceImpl;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
@ -35,6 +36,8 @@ public class HolidayGenerationJob extends BaseCronJob {
params.put("modeId",modeId);
params.put("releaseDate",executeDate);
params.put("cover",cover);
CommonUtil.initExtensionClassHolder();
basicsetService.generateVocation(params);
basicsetService.handleOverdueVocation(params);
log.info("**********HolidayGenerationJob end ************");

@ -2,14 +2,12 @@ package com.engine.jucailinkq.attendance.workflow.action;
import com.engine.jucailinkq.attendance.attendanceanalysis.service.UtilService;
import com.engine.jucailinkq.attendance.attendanceanalysis.service.impl.UtilServiceImpl;
import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.jucailinkq.attendance.enums.*;
import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.attendance.workflow.service.impl.MakeUpClockInServiceImpl;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.*;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import weaver.general.TimeUtil;
@ -62,6 +60,7 @@ public class OvertimePlanCheckAction implements Action {
//明细数据按照人员分组
Map<String,List<Map<String, String>>> detailGroupMap = detailTableData.stream().collect(Collectors.groupingBy(e->Util.null2String(e.get("jbry"))));
List<String> errorMessage = new ArrayList<>();
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
for (Map.Entry<String,List<Map<String, String>>> tableEntry :detailGroupMap.entrySet()){
List<Map<String, String>> detailGroupByUserList = tableEntry.getValue();
Map<String, Object> params = Maps.newHashMap();

@ -1,5 +1,6 @@
package com.engine.jucailinkq.attendance.workflow.service.impl;
import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.jucailinkq.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.jucailinkq.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum;
@ -14,10 +15,7 @@ import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.common.exception.AttendanceRunTimeException;
import com.engine.common.util.*;
import com.engine.core.impl.Service;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.engine.jucailinkq.common.util.*;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
@ -947,6 +945,7 @@ public class AskForLeaveServiceImpl extends Service implements AskForLeaveServic
params.put("current", "1");
params.put("pageSize", "999");
params.put("recurrence", "1");
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
for (String empId : leaveEmpIdList) {
params.put("pbdx", empId);
Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTableActualUse(params);

@ -1,6 +1,7 @@
package com.engine.jucailinkq.attendance.workflow.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.jucailinkq.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
import com.engine.jucailinkq.attendance.component.persongroup.service.SchedulingResultsService;
import com.engine.jucailinkq.attendance.component.persongroup.service.impl.SchedulingResultsServiceImpl;
import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum;
@ -11,11 +12,8 @@ import com.engine.jucailinkq.attendance.workflow.cmd.GetRestDayIntervalCmd;
import com.engine.jucailinkq.attendance.workflow.enums.AskAndEvctionWayEnum;
import com.engine.jucailinkq.attendance.workflow.service.BusinessTripsApplyService;
import com.engine.jucailinkq.attendance.workflow.service.MakeUpClockInService;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DateUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.*;
import com.engine.core.impl.Service;
import com.engine.jucailinkq.common.util.Utils;
import lombok.extern.slf4j.Slf4j;
import weaver.general.Util;
@ -234,6 +232,8 @@ public class BusinessTripsApplyServiceImpl extends Service implements BusinessTr
params.put("current", "1");
params.put("pageSize", "999");
params.put("recurrence", "1");
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
for (String empId : empIdList) {
params.put("pbdx", empId);
Map<String,Object> schedulingResultsMap = schedulingResultsService.queryDataTableActualUse(params);

@ -141,11 +141,22 @@ public class CommonUtil {
}
}
if (personGroupOrganizationList != null && dataIds.size() ==0){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
Set<String> personnelGroupIds = null;
if (personBelongGroup == null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
}else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList());
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
}
log.debug("personnelGroupIds : {}",personnelGroupIds);
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];
@ -158,8 +169,14 @@ public class CommonUtil {
if (departmentOrganizationList != null && dataIds.size() ==0){
String deptid = Util.null2String(departMentMap.get("departmentid"));
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
if (petDepart != null){
pdeptids = petDepart.get(deptid);
}
if (pdeptids == null || pdeptids.equals("")){
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
}
log.debug("pdeptids : [{}]",pdeptids);
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
String dx = Util.null2String(departmentOrganization.get("dx"));
@ -225,11 +242,22 @@ public class CommonUtil {
}
}
if (personGroupOrganizationList != null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
Map<String,List<Map<String,Object>>> personBelongGroup = ExtensionClassHolder.getPersonBelongGroupThreadLocal();
Set<String> personnelGroupIds = null;
if (personBelongGroup == null){
Set<String> personGroupIds = personGroupOrganizationList.stream().map(e -> Util.null2String(e.get("dx")).split("-")[0]).collect(Collectors.toSet());
sql = "select mainid,empid,filters,bdate,edate,sqltj from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
log.debug("query personGroupData : {}",sql);
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,date);
}else {
List<Map<String,Object>> personnelGroups = personBelongGroup.get(resourceId) == null? Lists.newArrayList():personBelongGroup.get(resourceId);
personnelGroups = personnelGroups.stream().filter(e->(Util.null2String(e.get("bdate")).equals("") || DateUtil.getTime(e.get("bdate").toString()).compareTo(DateUtil.getTime(date))<=0) &&
(Util.null2String(e.get("edate")).equals("") || DateUtil.getTime(e.get("edate").toString()).compareTo(DateUtil.getTime(date))>=0)).collect(Collectors.toList());
personnelGroupIds = personnelGroups.stream().map(e->e.get("mainid").toString()).collect(Collectors.toSet());
}
log.debug("personnelGroupIds : {}",personnelGroupIds);
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];
@ -242,8 +270,15 @@ public class CommonUtil {
if (departmentOrganizationList != null){
String deptid = Util.null2String(departMentMap.get("departmentid"));
String pdeptids = "";
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
Map<String,String> petDepart = ExtensionClassHolder.getPetDepartMentThreadLocal();
if (petDepart != null){
pdeptids = petDepart.get(deptid);
}
if (pdeptids == null || pdeptids.equals("")){
pdeptids = new DepartmentComInfo().getAllParentDepartId(Util.null2String(departMentMap.get("departmentid")), pdeptids);
pdeptids = deptid + pdeptids;
}
log.debug("pdeptids : [{}]",pdeptids);
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
String dx = Util.null2String(departmentOrganization.get("dx"));
@ -807,6 +842,7 @@ public class CommonUtil {
adjustClockPointAction.add(action);
}
ExtensionClassHolder.setAdjustClockPointAction(adjustClockPointAction);
/**
*
*/
@ -814,6 +850,16 @@ public class CommonUtil {
Map<String,Object> globalMap = DbTools.getSqlToMapList(sql);
ExtensionClassHolder.setGlobalSetMap(globalMap);
/**
*
*/
ExtensionClassHolder.setPersonBelongGroupThreadLocal(PersongroupCommonUtil.getAllpersonBelongGroup());
/**
*
*/
initPersonInfromation();
}catch (Exception e){
log.error("initExtensionClassHolder fail");
throw new AttendanceRunTimeException("初始化扩展类失败");
@ -821,6 +867,40 @@ public class CommonUtil {
}
/**
*
*/
public static void initPersonInfromation(){
/**
*
*/
try {
String sql = "select id,departmentid,subcompanyid1 from hrmresource";
List<Map<String,Object>> hrmresourceList = DbTools.getSqlToList(sql);
Map<String,Map<String,Object>> hrmresourceInformationMap = Maps.newHashMap();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
Map<String,String> departInfo = Maps.newHashMap();
for (Map<String,Object> map :hrmresourceList){
String pdeptids = departInfo.get(Util.null2String(map.get("departmentid")));
if (pdeptids == null || pdeptids.equals("")){
pdeptids="";
pdeptids = departmentComInfo.getAllParentDepartId(Util.null2String(map.get("departmentid")), pdeptids);
pdeptids = Util.null2String(map.get("departmentid")) + pdeptids;
departInfo.put(Util.null2String(map.get("departmentid")),pdeptids);
}
map.put("pdeptids",pdeptids);
hrmresourceInformationMap.put(map.get("id").toString(),map);
}
ExtensionClassHolder.setPersonInformationThreadLocal(hrmresourceInformationMap);
ExtensionClassHolder.setPetDepartMentThreadLocal(departInfo);
}catch (Exception e){
log.error("initPersonInfromation fail");
throw new AttendanceRunTimeException("初始化人员信息失败");
}
}
/**
*
* @param itemMap

@ -19,6 +19,22 @@ public class ExtensionClassHolder {
*/
private static ThreadLocal<Map<String,Object>> globalSetMapThreadLocal = new ThreadLocal<>();
/**
*
*/
private static ThreadLocal<Map<String,List<Map<String,Object>>>> personBelongGroupThreadLocal = new ThreadLocal<>();
/**
*
*/
private static ThreadLocal<Map<String,Map<String,Object>>> personInformationThreadLocal = new ThreadLocal<>();
/**
*
*/
private static ThreadLocal<Map<String,String>> petDepartThreadLocal= new ThreadLocal<>();
public static void setAdjustClockPointAction(List<AbstractAdjustClockPointAction> adjustClockPointActionList) {
adjustClockPointActionThreadLocal.set(adjustClockPointActionList);
@ -35,4 +51,28 @@ public class ExtensionClassHolder {
public static Map<String,Object> getGlobalSetMap() {
return globalSetMapThreadLocal.get();
}
public static Map<String, List<Map<String, Object>>> getPersonBelongGroupThreadLocal() {
return personBelongGroupThreadLocal.get();
}
public static void setPersonBelongGroupThreadLocal(Map<String, List<Map<String, Object>>> personBelongGroupMap) {
personBelongGroupThreadLocal.set(personBelongGroupMap);
}
public static Map<String, Map<String, Object>> getPersonInformationThreadLocal() {
return personInformationThreadLocal.get();
}
public static void setPersonInformationThreadLocal(Map<String, Map<String, Object>> personInformationThreadLocal) {
ExtensionClassHolder.personInformationThreadLocal.set(personInformationThreadLocal);
}
public static Map<String, String> getPetDepartMentThreadLocal() {
return petDepartThreadLocal.get();
}
public static void setPetDepartMentThreadLocal(Map<String, String> petDepartMent) {
ExtensionClassHolder.petDepartThreadLocal.set(petDepartMent);
}
}

@ -746,27 +746,42 @@ public class Utils<T> {
* ,
* @return
*/
public static Map<String,Object> getClassSegmentTimeProportion(List<Map<String,Object>> scheduleResult,String analysisDate){
Map<String,Object> resultMap = Maps.newHashMap();
public static Map<String,List<Map<String,Object>>> getClassSegmentTimeProportion(List<Map<String,Object>> scheduleResult,String analysisDate){
Map<String,List<Map<String,Object>>> resultMap = Maps.newHashMap();
for (Map<String,Object> schedule: scheduleResult){
String bdlx = Util.null2String(schedule.get("bdlx"));
int edfzs = Util.null2String(schedule.get("edfzs")).equals("")?0:Integer.valueOf(Util.null2String(schedule.get("edfzs")));
if (!bdlx.equals(ClassSegmentTypeEnum.ASK_FOR_LEAVE.getKey()) && !bdlx.equals(ClassSegmentTypeEnum.EVECTION.getKey())){
if (bdlx.equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey())){
String kssj = getkssjTime(schedule,analysisDate);
String jssj = getjssjTime(schedule,analysisDate);
edfzs = DateUtil.getBetWeenMinutes(kssj,jssj);
}
if (resultMap.get(bdlx) != null){
edfzs = edfzs + Integer.valueOf(resultMap.get(bdlx).toString());
resultMap.get(bdlx).add(schedule);
}else {
List<Map<String,Object>> schedules = Lists.newArrayList();
schedules.add(schedule);
resultMap.put(bdlx,schedules);
}
resultMap.put(bdlx,edfzs);
}
}
return resultMap;
}
public static double getItemduration(List<Map<String,Object>> schedules,String sonhsdw,String sonhsl){
double itemduration = 0;
for (Map<String,Object> schedule:schedules){
if (sonhsdw.equals(AccountingUnitEnum.MINUTES.getKey())){
itemduration += Double.valueOf(Util.null2String(schedule.get("edfzs")));
}else if (sonhsdw.equals(AccountingUnitEnum.DAY.getKey())){
itemduration += Double.valueOf(Util.null2String(schedule.get("edts")));
if (schedule.get("bdlx").equals(ClassSegmentTypeEnum.OVERTIME_PLAN.getKey())){
itemduration+=Utils.getItemduration(Double.valueOf(sonhsl),sonhsdw,Double.valueOf(schedule.get("edxss").toString()), AccountingUnitEnum.HOUR,Double.valueOf(schedule.get("edsc").toString()));
}
}else if (sonhsdw.equals(AccountingUnitEnum.HOUR.getKey())){
itemduration += Double.valueOf(Util.null2String(schedule.get("edxss")));
}else if (sonhsdw.equals(AccountingUnitEnum.ONCE.getKey())){
itemduration=1;
}
}
return itemduration;
}
/**
*

@ -34,11 +34,11 @@
//新行默认上一行补打卡日期
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdkrq","detail_1")+"_"+index, {value: bdkrq});
//取第一行对应的补打卡类型
bdklx = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+(index-1)).specialobj);
if (bdklx !== null){
//新行默认上一行的补打卡类型
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+index, {value:bdklx[0].id,specialobj:[{id:bdklx[0].id,name:bdklx[0].mc}]});
}
// bdklx = mobx.toJS(wfform.getFieldValueObj(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+(index-1)).specialobj);
// if (bdklx !== null){
// //新行默认上一行的补打卡类型
// WfForm.changeSingleField(WfForm.convertFieldNameToId("bdklx","detail_1")+"_"+index, {value:bdklx[0].id,specialobj:[{id:bdklx[0].id,name:bdklx[0].mc}]});
// }
}
WfForm.changeSingleField(WfForm.convertFieldNameToId("bdkr","detail_1")+"_"+index, {value:bdkr[0].id,specialobj:[{id:bdkr[0].id,name:bdkr[0].name}]});
});

@ -17,6 +17,7 @@
//出差时间长度不可编辑
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("ccsc"), 1);
WfForm.changeFieldAttr(WfForm.convertFieldNameToId("mttsdcc"), 2);
WfForm.changeFieldValue(WfForm.convertFieldNameToId("mttsdcc"),{ value: '0' });
break;
case '3'://按时间区间出差
WfForm.changeFieldValue(WfForm.convertFieldNameToId("scdw"),{ value: '1' });//出差时长单位为小时
@ -53,7 +54,7 @@
*/
function adddetail() {
//首先进行必填校验,不通过直接退出
if(!WfForm.verifyFormRequired(false, true)){ return; }
// if(!WfForm.verifyFormRequired(false, true)){ return; }
//获取出差时段类型0全天1指定时间区间2半天3指定时长长度
let ccsd = WfForm.getFieldValue(WfForm.convertFieldNameToId("ccsd"));
//每天同时段出差1:是0

Loading…
Cancel
Save