package com.engine.bjcj220907.service.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.engine.bjcj220907.entity.Attend4MonthBonus; import com.engine.bjcj220907.service.GetKQ4MonthBonusService; import com.engine.core.impl.Service; import com.engine.kq.cmd.report.GetKQReportCmd; import com.weaver.general.BaseBean; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Harryxzy * @date 2022/09/09 16:17 * @description 拉取考勤中考勤信息进行解析 */ public class GetKQ4MonthBonusServiceImpl extends Service implements GetKQ4MonthBonusService { BaseBean baseBean = new BaseBean(); /** * @description 获取所有员工的缺勤天数,(境外、境内年假、奖励假、工伤、隔离假除外) * @return Map * @author Harryxzy * @date 2022/9/13 10:22 */ @Override public Map getKQDatas(Attend4MonthBonus attend4MonthBonus) { baseBean.writeLog("开始获取考勤数据,参数{}", attend4MonthBonus); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM"); List columnsList = new ArrayList<>(); List> dataList = new ArrayList<>(); try { Map paramsMap = new HashMap(); paramsMap.put("typeselect", "6"); paramsMap.put("pageIndex", 1); paramsMap.put("pageSize", 10000); paramsMap.put("fromDate", sdf.format(attend4MonthBonus.getBeginDate())); paramsMap.put("toDate", sdf.format(attend4MonthBonus.getEndDate())); paramsMap.put("viewScope", "0"); paramsMap.put("isNoAccount", "0"); paramsMap.put("attendanceSerial", "0"); paramsMap.put("status", "9"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); temp.put("reportType", "month"); Map execute = commandExecutor.execute(new GetKQReportCmd(temp,user)); // 获取列数据 columnsList = (List) execute.get("columns"); List c = new ArrayList(); columnsList.stream().forEach(column->{ if(column.get("title").equals("旷工")){ c.add(column.get("dataIndex")); } if(column.get("title").equals("出差及请假")){ List children =(List) column.get("children"); children.stream().forEach(i->{ if((!i.get("title").equals("境内年假")) && (!i.get("title").equals("境外年假")) && (!i.get("title").equals("奖励假")) && (!i.get("title").equals("工伤")) && (!i.get("title").equals("隔离假")) ){ c.add(i.get("dataIndex")); } }); } }); baseBean.writeLog("计算缺勤列:"+c); dataList = (List>) execute.get("datas"); // 获取每个人的缺勤天数 Map qqDays = new HashMap<>(); dataList.stream().forEach(i->{ if(attend4MonthBonus.getUser()!=null){ if(i.get("resourceId").equals(attend4MonthBonus.getUser())){ double[] qq={0.0}; c.stream().forEach(j->{ // 累加各种请假天数 qq[0]+=Double.parseDouble(i.get(j)); }); String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate()); qqDays.put(s,qq[0]); } }else{ double[] qq={0.0}; c.stream().forEach(j->{ // 累加各种请假天数 qq[0]+=Double.parseDouble(i.get(j)); }); String s = i.get("resourceId") +"-"+ sdf2.format(attend4MonthBonus.getEndDate()); qqDays.put(s,qq[0]); } }); baseBean.writeLog("获取的考勤缺勤天数,{}", JSONUtils.toJSONString(qqDays)); return qqDays; } catch (Exception e) { baseBean.writeLog("获取考勤数据失败{}", e); } return null; } }