liuliang
parent
a382660455
commit
e2663afe3d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
package com.engine.attendance.attendanceanalysis.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 综合工时
|
||||
*/
|
||||
public interface ComprehensiveWorkingHourService {
|
||||
/**
|
||||
* 根据综合工时生成出勤结果
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> excuteByWorkHour(Map<String,Object> param);
|
||||
}
|
@ -0,0 +1,359 @@
|
||||
package com.engine.attendance.attendanceanalysis.service.impl;
|
||||
|
||||
import com.engine.attendance.attendanceanalysis.cmd.item.AbsenteeismItemCmd;
|
||||
import com.engine.attendance.attendanceanalysis.cmd.item.BeLateItemCmd;
|
||||
import com.engine.attendance.attendanceanalysis.cmd.item.LeaveEarlyItemCmd;
|
||||
import com.engine.attendance.attendanceanalysis.service.ComprehensiveWorkingHourService;
|
||||
import com.engine.attendance.attendanceanalysis.service.UtilService;
|
||||
import com.engine.attendance.enums.AccountingUnitEnum;
|
||||
import com.engine.attendance.enums.CheckBoxEnum;
|
||||
import com.engine.attendance.enums.SystemItemEnum;
|
||||
import com.engine.common.util.CommonUtil;
|
||||
import com.engine.common.util.DateUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.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;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
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;
|
||||
|
||||
@Slf4j
|
||||
public class ComprehensiveWorkingHourServiceImpl extends Service implements ComprehensiveWorkingHourService {
|
||||
private UtilService utilService = ServiceUtil.getService(UtilServiceImpl.class);
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> excuteByWorkHour(Map<String, Object> param) {
|
||||
Map<String, Object> resultMap = Maps.newHashMap();
|
||||
|
||||
//按照日期分割的打卡时间
|
||||
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>) param.get("clockInTimeCollect");
|
||||
//分析日期
|
||||
String analysisDate = Util.null2String(param.get("analysisDate"));
|
||||
//人员
|
||||
String userId = Util.null2String(param.get("userId"));
|
||||
//考勤项目
|
||||
List<Map<String,Object>> attendanceItems = (List<Map<String,Object>>)param.get("attendanceItems");
|
||||
|
||||
//综合工时
|
||||
Map<String,Object> workHourItem = (Map<String,Object>)param.get("workHourItem");
|
||||
//日工作时长不足,核算异常
|
||||
String rgzscbzhsyc= Util.null2String(workHourItem.get("rgzscbzhsyc"));
|
||||
//日最晚打卡报到时间
|
||||
String rzwdkbdsj = Util.null2String(workHourItem.get("rzwdkbdsj"));
|
||||
//日工作时长要求
|
||||
double rgzscyq = Double.valueOf(Util.null2String(workHourItem.get("rgzscyq")));
|
||||
//累计出勤时长的核算分钟数
|
||||
int ljcqscdhsfzs = Integer.valueOf(Util.null2String(workHourItem.get("ljcqscdhsfzs")));
|
||||
//超出日工作时长要求,计入出勤 时长
|
||||
String ccrgzscyqjrcqsc = Util.null2String(workHourItem.get("ccrgzscyqjrcqsc"));
|
||||
//日最长工作时长
|
||||
double rzcgzsc = Double.valueOf(Util.null2String(workHourItem.get("rzcgzsc")));
|
||||
//核算工时的日期类型
|
||||
String hsgsdrqlx = Util.null2String(workHourItem.get("hsgsdrqlx"));
|
||||
|
||||
String cqzt = "0";
|
||||
|
||||
String rqlx = Utils.getDateType(analysisDate,Util.null2String(workHourItem.get("qyrl")));
|
||||
|
||||
if (!CommonUtil.ifContainStr(hsgsdrqlx,rqlx,",")){
|
||||
resultMap.put("message","执行的日期不在设置的日期类型内");
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
//异常项目
|
||||
List<Map<String, Object>> recordDataList = Lists.newArrayList();
|
||||
|
||||
clockInTimeList = getClockInDataByRule(param);
|
||||
|
||||
int betweenMinute = getDurationMinute(clockInTimeList);
|
||||
if (betweenMinute == 0 || clockInTimeList.size()==0){
|
||||
if (rgzscbzhsyc.equals(CheckBoxEnum.CHECKED.getKey())){
|
||||
//记漏打卡项目
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("item", SystemItemEnum.MISSING_CLOCK_IN.getKey());
|
||||
itemMap.put("itemduration","1");
|
||||
recordDataList.add(itemMap);
|
||||
}
|
||||
}
|
||||
double adjustBetWeenMinute = Utils.getItemdurationDown(ljcqscdhsfzs, AccountingUnitEnum.MINUTES.getKey(),betweenMinute,AccountingUnitEnum.MINUTES);
|
||||
double adjustBetweenHour = new BigDecimal(adjustBetWeenMinute).divide(new BigDecimal(60),2, RoundingMode.HALF_UP).doubleValue();
|
||||
log.info("betweenMinute : [{}],adjustBetWeenMinute: [{}],betweenHour:[{}]",betweenMinute,adjustBetWeenMinute,adjustBetweenHour);
|
||||
|
||||
if (clockInTimeList.size() > 0){
|
||||
String reportTime = clockInTimeList.get(0).get("signdate")+" "+clockInTimeList.get(0).get("signtime");
|
||||
int lateDurationTime = 0;
|
||||
int earlyLeaveMinute = 0;
|
||||
Map<String,Object> abnormalParams = Maps.newHashMap();
|
||||
abnormalParams.put("attendanceItems",attendanceItems);
|
||||
abnormalParams.put("rqlx",rqlx);
|
||||
if (!"".equals(rzwdkbdsj)){
|
||||
String lastReportTime = Utils.installTime(analysisDate,rzwdkbdsj);
|
||||
if (Utils.dateGreaterThan(reportTime,lastReportTime)){
|
||||
//迟到
|
||||
lateDurationTime = DateUtil.getBetWeenDays(lastReportTime,reportTime);
|
||||
}
|
||||
}
|
||||
if ((betweenMinute+lateDurationTime) < (rgzscyq*60)){
|
||||
//早退
|
||||
earlyLeaveMinute = Double.valueOf(rgzscyq*60-(betweenMinute+lateDurationTime)).intValue();
|
||||
}
|
||||
if (rgzscbzhsyc.equals(CheckBoxEnum.CHECKED.getKey())){
|
||||
if (lateDurationTime > 0){
|
||||
//计入迟到项目
|
||||
abnormalParams.put("time",lateDurationTime);
|
||||
Map<String,Object> result = commandExecutor.execute(new BeLateItemCmd(abnormalParams));
|
||||
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
|
||||
if (workTimeBeLateItems.size() == 0){
|
||||
workTimeBeLateItems = (List<Map<String,Object>>)commandExecutor.execute(new AbsenteeismItemCmd(abnormalParams)).get("attendanceItems");
|
||||
}
|
||||
if (workTimeBeLateItems.size() > 0){
|
||||
double hsl = Double.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
|
||||
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
|
||||
double itemduration = Utils.getItemduration(hsl,hsdw,lateDurationTime,AccountingUnitEnum.MINUTES);
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("item", workTimeBeLateItems.get(0).get("key"));
|
||||
itemMap.put("itemduration",itemduration);
|
||||
recordDataList.add(itemMap);
|
||||
}
|
||||
}
|
||||
if (earlyLeaveMinute > 0){
|
||||
//计早退项目
|
||||
abnormalParams.put("time",lateDurationTime);
|
||||
Map<String,Object> result = commandExecutor.execute(new LeaveEarlyItemCmd(abnormalParams));
|
||||
List<Map<String,Object>> workTimeBeLateItems = (List<Map<String,Object>>)result.get("attendanceItems");
|
||||
if (workTimeBeLateItems.size() == 0){
|
||||
workTimeBeLateItems = (List<Map<String,Object>>)commandExecutor.execute(new AbsenteeismItemCmd(abnormalParams)).get("attendanceItems");
|
||||
}
|
||||
if (workTimeBeLateItems.size() > 0){
|
||||
double hsl = Double.valueOf(Util.null2String(workTimeBeLateItems.get(0).get("hsl")));
|
||||
String hsdw = Util.null2String(workTimeBeLateItems.get(0).get("hsdw"));
|
||||
double itemduration = Utils.getItemduration(hsl,hsdw,earlyLeaveMinute,AccountingUnitEnum.MINUTES);
|
||||
Map<String, Object> itemMap = Maps.newHashMap();
|
||||
itemMap.put("item", workTimeBeLateItems.get(0).get("key"));
|
||||
itemMap.put("itemduration",itemduration);
|
||||
recordDataList.add(itemMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//超出日工作时长要求,计入出勤 时长,否则最大为日工作时长要求
|
||||
if (CheckBoxEnum.CHECKED.getKey().equals(ccrgzscyqjrcqsc)){
|
||||
if (adjustBetweenHour > rzcgzsc){
|
||||
adjustBetweenHour = rzcgzsc;
|
||||
}
|
||||
}else {
|
||||
if (adjustBetweenHour > rgzscyq){
|
||||
adjustBetweenHour=rgzscyq;
|
||||
}
|
||||
}
|
||||
if (recordDataList.size() > 0){
|
||||
cqzt="1";
|
||||
}
|
||||
|
||||
|
||||
|
||||
Map<String,Object> recordParam = Maps.newHashMap();
|
||||
recordParam.put("userId",userId);
|
||||
recordParam.put("analysisDate",analysisDate);
|
||||
recordParam.put("recordData",recordDataList);
|
||||
recordParam.put("rqlx",rqlx);
|
||||
recordParam.put("classInfo",Lists.newArrayList());
|
||||
recordParam.put("recordDataTime",getRecordDataTime(clockInTimeList));
|
||||
recordParam.put("attendanceDuration",adjustBetweenHour);
|
||||
recordParam.put("formmodeIdMap",Utils.getFormmodeIdMap());
|
||||
recordParam.put("cqzt",cqzt);
|
||||
|
||||
resultMap.put("recordParam",recordParam);
|
||||
utilService.recordItem(recordParam);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据综合工时规则获取打卡时间
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> getClockInDataByRule(Map<String, Object> param){
|
||||
|
||||
//按照日期分割的打卡时间
|
||||
List<Map<String,Object>> clockInTimeList = (List<Map<String,Object>>) param.get("clockInTimeCollect");
|
||||
//分析日期
|
||||
String analysisDate = Util.null2String(param.get("analysisDate"));
|
||||
//综合工时
|
||||
Map<String,Object> workHourItem = (Map<String,Object>)param.get("workHourItem");
|
||||
//最早打卡上班的开始时间
|
||||
String zzdksbdkssj = Util.null2String(workHourItem.get("zzdksbdkssj"));
|
||||
//最晚打卡下班的开始时间
|
||||
String zwdkxbdkssj = Util.null2String(workHourItem.get("zwdkxbdkssj"));
|
||||
//日工作时长计算规则
|
||||
String rgzscjsgz = Util.null2String(workHourItem.get("zwdkxbdkssj"));
|
||||
//调整上班开始到
|
||||
String dzsbksd = Util.null2String(workHourItem.get("dzsbksd"));
|
||||
//误打卡忽略分钟数
|
||||
int wdkhlfzs = Util.null2String(workHourItem.get("wdkhlfzs")).equals("")?1:Integer.valueOf(Util.null2String(workHourItem.get("wdkhlfzs")));
|
||||
|
||||
|
||||
|
||||
|
||||
String startTime = analysisDate+" "+zzdksbdkssj;
|
||||
String endTime = analysisDate+" "+zwdkxbdkssj;
|
||||
if (DateUtil.getTime(startTime).compareTo(DateUtil.getTime(endTime)) >=0){
|
||||
endTime = DateUtil.AfterDay(analysisDate,1) +" "+zwdkxbdkssj;
|
||||
}
|
||||
|
||||
String finalEndTime = endTime;
|
||||
|
||||
clockInTimeList = clockInTimeList.stream().filter(e -> {
|
||||
String signdate = Util.null2String(e.get("signdate"));
|
||||
String signtime = Util.null2String(e.get("signtime"));
|
||||
String time = signdate +" "+signtime;
|
||||
|
||||
return DateUtil.getTime(startTime).compareTo(DateUtil.getTime(time)) <=0 && DateUtil.getTime(finalEndTime).compareTo(DateUtil.getTime(time)) >=0;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
clockInTimeList = clockInTimeList.stream().sorted(Comparator.comparing(e->DateUtil.getTime(e.get("signdate")+" "+e.get("signtime")).toInstant(ZoneOffset.of("+8")).toEpochMilli())).collect(Collectors.toList());
|
||||
|
||||
if (clockInTimeList.size() == 0){
|
||||
return clockInTimeList;
|
||||
}
|
||||
|
||||
List<Map<String,Object>> newClockInTimeList = Lists.newArrayList();
|
||||
if ("0".equals(rgzscjsgz)){
|
||||
//最早最晚打卡间隔时长
|
||||
newClockInTimeList.add(clockInTimeList.get(0));
|
||||
newClockInTimeList.add(clockInTimeList.get(clockInTimeList.size()-1));
|
||||
|
||||
}else if ("1".equals(rgzscjsgz)){
|
||||
//依次累加成对打卡间隔时长
|
||||
if (clockInTimeList.size() %2 == 1){
|
||||
clockInTimeList.remove(clockInTimeList.size()-1);
|
||||
newClockInTimeList = clockInTimeList;
|
||||
}
|
||||
if (newClockInTimeList.size() > 1){
|
||||
//数据清洗
|
||||
Set<Map<String,Object>> needRemoveData = Sets.newHashSet();
|
||||
for (int i=0;i<newClockInTimeList.size()-1;i++){
|
||||
String time1 = newClockInTimeList.get(i).get("signdate")+" "+newClockInTimeList.get(i).get("signtime");
|
||||
for (int j=i+1;j<newClockInTimeList.size();j++){
|
||||
String time2 = newClockInTimeList.get(j).get("signdate")+" "+newClockInTimeList.get(j).get("signtime");
|
||||
if (DateUtil.getBetWeenMinutes(time1,time2) <wdkhlfzs){
|
||||
needRemoveData.add(newClockInTimeList.get(j));
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Map<String,Object> map:needRemoveData){
|
||||
newClockInTimeList.remove(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (newClockInTimeList.size() > 0){
|
||||
String time = newClockInTimeList.get(0).get("signdate")+" "+newClockInTimeList.get(0).get("signtime");
|
||||
int minute = DateUtil.getTime(time).getMinute();
|
||||
int hour = DateUtil.getTime(time).getHour();
|
||||
if ("1".equals(dzsbksd)){
|
||||
//整点
|
||||
if (minute > 0){
|
||||
hour=hour+1;
|
||||
}
|
||||
String hourstr = DateUtil.getTimeStr(hour);
|
||||
newClockInTimeList.get(0).put("signtime",hourstr+":00");
|
||||
|
||||
}else if ("2".equals(dzsbksd)){
|
||||
//半点
|
||||
String minuteStr = "";
|
||||
if (minute < 30){
|
||||
minuteStr = "30";
|
||||
}else if (minute > 30){
|
||||
minuteStr = "00";
|
||||
hour = hour+1;
|
||||
}
|
||||
String hourstr = DateUtil.getTimeStr(hour);
|
||||
newClockInTimeList.get(0).put("signtime",hourstr+":"+minuteStr);
|
||||
|
||||
}else if ("3".equals(dzsbksd)){
|
||||
//15分钟
|
||||
if (minute%15 > 0){
|
||||
minute = (minute/15)*15+15;
|
||||
if (minute == 60){
|
||||
minute = 0;
|
||||
hour = hour+1;
|
||||
}
|
||||
}
|
||||
String hourstr = DateUtil.getTimeStr(hour);
|
||||
String minutestr = DateUtil.getTimeStr(minute);
|
||||
newClockInTimeList.get(0).put("signtime",hourstr+":"+minutestr);
|
||||
}
|
||||
if (newClockInTimeList.size() > 1){
|
||||
String firstSignDate = newClockInTimeList.get(0).get("signdate")+" "+newClockInTimeList.get(0).get("signtime");
|
||||
String twoSignDate = newClockInTimeList.get(1).get("signdate")+" "+newClockInTimeList.get(1).get("signtime");
|
||||
//当调整后第一笔上班时间超过第二比那么去除这2比记录
|
||||
if (DateUtil.getTime(firstSignDate).compareTo(DateUtil.getTime(twoSignDate)) >=0){
|
||||
newClockInTimeList.remove(0);
|
||||
newClockInTimeList.remove(0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
log.info("newClockInTimeList : [{}]",newClockInTimeList);
|
||||
return newClockInTimeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得打卡时间两两直接的时间
|
||||
* @param clockInTimeList 打卡时间
|
||||
* @return 分钟数
|
||||
*/
|
||||
public int getDurationMinute(List<Map<String,Object>> clockInTimeList){
|
||||
if (clockInTimeList.size() == 0){
|
||||
return 0;
|
||||
}
|
||||
int logarithm = clockInTimeList.size()/2;
|
||||
int betweenMinute = 0;
|
||||
for (int i =0;i<logarithm;i++){
|
||||
int index1 = i*2;
|
||||
int index2 = index1+1;
|
||||
String time1 = clockInTimeList.get(index1).get("signdate") +" "+clockInTimeList.get(index1).get("signtime");
|
||||
String time2 = clockInTimeList.get(index2).get("signdate") +" "+clockInTimeList.get(index2).get("signtime");
|
||||
betweenMinute += DateUtil.getBetWeenMinutes(time1,time2);
|
||||
}
|
||||
log.info("betweenMinute : [{}]",betweenMinute);
|
||||
return betweenMinute;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得进出时间
|
||||
* @param clockInTimeList
|
||||
* @return
|
||||
*/
|
||||
public Map<String,Object> getRecordDataTime(List<Map<String,Object>> clockInTimeList){
|
||||
Map<String,Object> resultMap = Maps.newHashMap();
|
||||
if (clockInTimeList.size() == 0){
|
||||
return resultMap;
|
||||
}
|
||||
int logarithm = clockInTimeList.size()/2;
|
||||
|
||||
for (int i =0;i<logarithm;i++){
|
||||
int index1 = i*2;
|
||||
int index2 = index1+1;
|
||||
String time1 = clockInTimeList.get(index1).get("signdate") +" "+clockInTimeList.get(index1).get("signtime");
|
||||
String time2 = clockInTimeList.get(index2).get("signdate") +" "+clockInTimeList.get(index2).get("signtime");
|
||||
resultMap.put("j"+i,time1);
|
||||
resultMap.put("c"+i,time1);
|
||||
}
|
||||
log.info("betweenMinute : [{}]",resultMap);
|
||||
return resultMap;
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
# attendance.attendanceAnalysis
|
||||
## 考勤方案模块
|
||||
## 考勤方案、排班管理模块
|
||||
##
|
||||
|
||||
|
@ -0,0 +1,120 @@
|
||||
package com.engine.attendance.attendanceplan.cmd;
|
||||
|
||||
import com.engine.attendance.component.persongroup.commonutil.PersongroupCommonUtil;
|
||||
import com.engine.common.biz.AbstractCommonCommand;
|
||||
import com.engine.common.entity.BizLogContext;
|
||||
import com.engine.common.util.DbTools;
|
||||
import com.engine.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;
|
||||
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 GetWorkHoursItemByPersonCmd extends AbstractCommonCommand<Map<String,Object>> {
|
||||
public GetWorkHoursItemByPersonCmd(Map<String,Object> params){
|
||||
this.params=params;
|
||||
}
|
||||
@Override
|
||||
public BizLogContext getLogContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> execute(CommandContext commandContext) {
|
||||
String resourceId = Util.null2String(params.get("resourceId"));
|
||||
String startDate = Util.null2String(params.get("startDate"));
|
||||
String endDate = Util.null2String(params.get("endDate"));
|
||||
String modeId = Utils.getFormmodeIdMap().get("uf_jcl_kq_zhgs");
|
||||
Map<String,Object> resultMap = Maps.newHashMap();
|
||||
|
||||
String sql = "select dxlx,dataid,dx from uf_jcl_syzz where modeid=?";
|
||||
List<Map<String,Object>> organizationList = DbTools.getSqlToList(sql,modeId);
|
||||
sql = "select id,departmentid,subcompanyid1 from hrmresource where id =?";
|
||||
Map<String,Object> departMentMap = DbTools.getSqlToMap(sql,resourceId);
|
||||
Set<String> dataIds = Sets.newHashSet();
|
||||
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");
|
||||
if (personOrganizationList != null){
|
||||
for (Map<String,Object> personOrganization :personOrganizationList){
|
||||
String dx = Util.null2String(personOrganization.get("dx"));
|
||||
String ids = dx.split("-")[0];
|
||||
if (ids.equals(resourceId)){
|
||||
dataIds.add(Util.null2String(personOrganization.get("dataid")));
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
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;
|
||||
log.info("pdeptids : [{}]",pdeptids);
|
||||
for (Map<String,Object> departmentOrganization :departmentOrganizationList){
|
||||
String dx = Util.null2String(departmentOrganization.get("dx"));
|
||||
String ids = dx.split("-")[0];
|
||||
for (String pdeptid : pdeptids.split(",")){
|
||||
if (pdeptid.equals(ids)){
|
||||
dataIds.add(Util.null2String(departmentOrganization.get("dataid")));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("catch error :{}",e);
|
||||
}
|
||||
if (subCompanyOrganizationList != null){
|
||||
String subCompanyId = Util.null2String(departMentMap.get("subcompanyid1"));
|
||||
for (Map<String,Object> subCompanyOrganization :subCompanyOrganizationList){
|
||||
String dx = Util.null2String(subCompanyOrganization.get("dx"));
|
||||
String ids = dx.split("-")[0];
|
||||
if (ids.equals(subCompanyId)){
|
||||
dataIds.add(Util.null2String(subCompanyOrganization.get("dataid")));
|
||||
}
|
||||
}
|
||||
}
|
||||
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 from uf_ryqz_dt1 where mainid in ("+String.join(",",personGroupIds)+")";
|
||||
log.info("query personGroupData : {}",sql);
|
||||
List<Map<String,Object>> personGroupData = DbTools.getSqlToList(sql);
|
||||
Set<String> personnelGroupIds = PersongroupCommonUtil.getPersonnelGroupingByPerson(personGroupData,resourceId,startDate,endDate);
|
||||
log.info("personnelGroupIds : {}",personnelGroupIds);
|
||||
for (Map<String,Object> personGroupOrganization :personGroupOrganizationList){
|
||||
String personnelGroupId = Util.null2String(personGroupOrganization.get("dx")).split("-")[0];
|
||||
if (personnelGroupIds.contains(personnelGroupId)){
|
||||
dataIds.add(Util.null2String(personGroupOrganization.get("dataid")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<Map<String,Object>> attendanceItems = Lists.newArrayList();
|
||||
|
||||
log.info("dataIds : {}",dataIds);
|
||||
sql = "select * from uf_jcl_kq_zhgs where id in ("+String.join(",",dataIds)+")";
|
||||
if (dataIds.size() > 0){
|
||||
log.info("query GetWorkHoursItemByPersonCmd sql : {}",sql);
|
||||
attendanceItems.addAll(DbTools.getSqlToList(sql));
|
||||
}
|
||||
resultMap.put("data",attendanceItems);
|
||||
resultMap.put("total",attendanceItems.size());
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,28 @@
|
||||
package shuju;
|
||||
|
||||
import com.finance.toolkit.BaseEnum;
|
||||
|
||||
/**
|
||||
* 销售订单类别枚举
|
||||
*/
|
||||
public enum SaleOrderEnum implements BaseEnum {
|
||||
ALL("0","全部销售订单"),
|
||||
CLOSE("1","已关闭销售订单"),
|
||||
PART("2","部分销售订单");
|
||||
SaleOrderEnum(String key, String value){
|
||||
this.key=key;
|
||||
this.value=value;
|
||||
}
|
||||
private String key;
|
||||
private String value;
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package shuju;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
List<String> list = Lists.newArrayList();
|
||||
System.out.println(list.get(0));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue