You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1208 lines
59 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.engine.attendance.workflow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.attendance.workflow.cmd.GetCqSummarySearchConditionCmd;
import com.engine.attendance.workflow.service.AttendanceSummaryService;
import com.engine.common.util.DbTools;
import com.engine.core.impl.Service;
import com.engine.kq.biz.KQHolidaySetBiz;
import com.engine.kq.biz.KQReportBiz;
import com.engine.kq.util.PageUidFactory;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @Author: sy
* @Description: 出勤汇总实现类
* @Date: 2024/3/19
**/
public class AttendanceSummaryServiceImpl extends Service implements AttendanceSummaryService {
BaseBean bs = new BaseBean();
/**
* 新增出勤汇总
* 基于入参中的出勤汇总主表id,获取主表信息,根据主表中的分部、考勤时间区间等字段,
* 对出勤结果表、补打卡表、出勤津贴表中数据根据分布和时间区间筛选后,
* 根据分部、部门、人员id、考勤项目进行分组统计
* @param params
* @return
*/
@Override
public Map<String, Object> addAttendanceSummary(Map<String, Object> params) {
bs.writeLog("params : " + params);
String mainIds = Util.null2String(params.get("mainIds"));
bs.writeLog("mainIds : " + mainIds);
ExecutorService taskExecutor = Executors.newCachedThreadPool();
taskExecutor.execute(() -> {
List<String> mainIdList = new ArrayList<>();
if (!mainIds.equals("")) {
mainIdList = Arrays.asList(mainIds.split(","));
}
for (String mainId : mainIdList) {
List<Map<String, String>> addList = new ArrayList<>();
//查询出勤汇总主表信息
String sql = "select * from uf_jcl_kq_cqhz where id="+mainId;
Map<String,Object> data = DbTools.getSqlToMap(sql);
String subCompany = Util.null2String(data.get("fb"));
String startDate = Util.null2String(data.get("ksrq"));
String endDate = Util.null2String(data.get("jsrq"));
bs.writeLog("subCompany : " + subCompany + ", startDate : " + startDate + ", endDate : " + endDate);
if (!subCompany.equals("") && !startDate.equals("") && !endDate.equals("")) {
String subCompanyListStr = SubCompanyComInfo.getAllChildSubcompanyId(subCompany, subCompany);
//汇总出勤结果表、补打卡表、出勤津贴表数据
//出勤结果表
List<Map<String, String>> cqAddList = getCqAddList(mainId, subCompanyListStr, startDate, endDate);
bs.writeLog("cqAddList_size : " + cqAddList.size());
if (cqAddList.size() > 0) {
addList.addAll(cqAddList);
}
//补打卡表
List<Map<String, String>> bdkAddList = getBdkAddList(mainId, startDate, endDate);
bs.writeLog("bdkAddList_size : " + bdkAddList.size());
if (bdkAddList.size() > 0) {
addList.addAll(bdkAddList);
}
//出勤津贴表
List<Map<String, String>> cqjtAddList = getCqjtAddList(mainId, startDate, endDate);
bs.writeLog("cqjtAddList_size : " + cqjtAddList.size());
if (cqjtAddList.size() > 0) {
addList.addAll(cqjtAddList);
}
bs.writeLog("addList_size : " + addList.size());
//删除已有汇总数据
String delSql = "delete from uf_jcl_kq_cqhz_dt1 where mainid = " + mainId;
boolean delSign = DbTools.update(delSql);
bs.writeLog("delSign : " + delSign + ", delSql : " + delSql);
//插入汇总数据
List<List> dataList = new ArrayList<>();
String insertSql = " insert into uf_jcl_kq_cqhz_dt1(mainid,ry,kqxm," +
" lc,lf,ls,lt," +
" gzfb,gzbm) values(?,?,?,?,?,?,?,?,?)";
for (Map<String, String> map : addList) {
List<String> list = new ArrayList<>();
list.add(mainId);
list.add(map.get("ry"));
list.add(map.get("kqxm"));
list.add(map.get("lc"));
list.add(map.get("lf"));
list.add(map.get("ls"));
list.add(map.get("lt"));
list.add(map.get("gzfb"));
list.add(map.get("gzbm"));
dataList.add(list);
}
bs.writeLog("dataList_size : " + dataList.size());
if(dataList.size() > 0){
RecordSet rs = new RecordSet();
bs.writeLog("入库开始---");
boolean insertSign =rs.executeBatchSql(insertSql,dataList);
bs.writeLog("insertSign : " + insertSign);
}
}
}
});
return new HashMap<>();
}
@Override
public Map<String, Object> getCqSummaryReport(Map<String, Object> params) {
Map<String,Object> retmap = new HashMap<String,Object>();
try{
String pageUid = PageUidFactory.getHrmPageUid("CqSummaryReport");
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
String attendanceSerial = Util.null2String(jsonObj.get("attendanceSerial"));
String fromDate = Util.null2String(jsonObj.get("fromDate"));
String toDate = Util.null2String(jsonObj.get("toDate"));
String typeSelect =Util.null2String(jsonObj.get("typeselect"));
if(typeSelect.length()==0) {typeSelect = "3";}
if(!typeSelect.equals("") && !typeSelect.equals("0")&& !typeSelect.equals("6")){
if(typeSelect.equals("1")){
fromDate = TimeUtil.getCurrentDateString();
toDate = TimeUtil.getCurrentDateString();
}else{
fromDate = TimeUtil.getDateByOption(typeSelect,"0");
toDate = TimeUtil.getDateByOption(typeSelect,"1");
}
}
//人员状态
String status = Util.null2String(jsonObj.get("status"));
String subCompanyId = Util.null2String(jsonObj.get("subCompanyId"));
String departmentId = Util.null2String(jsonObj.get("departmentId"));
String resourceId = Util.null2String(jsonObj.get("resourceId"));
bs.writeLog("status : " + status + ", subCompanyId : " + subCompanyId + ", departmentId : " + departmentId + ", resourceId : " + resourceId);
String allLevel = Util.null2String(jsonObj.get("allLevel"));
String isNoAccount = Util.null2String(jsonObj.get("isNoAccount"));
String viewScope = Util.null2String(jsonObj.get("viewScope"));
String isFromMyAttendance = Util.null2String(jsonObj.get("isFromMyAttendance"));//是否是来自我的考勤的请求,如果是,不加载考勤报表权限共享的限制,不然我的考勤会提示无权限
int pageIndex = Util.getIntValue(Util.null2String(jsonObj.get("pageIndex")), 1);
int pageSize = KQReportBiz.getPageSize(Util.null2String(jsonObj.get("pageSize")),pageUid,user.getUID());
int count = 0;
int pageCount = 0;
int isHavePre = 0;
int isHaveNext = 0;
//设置列头
List<Object> columns = new ArrayList();
Map<String,Object> column = null;
//人员相关信息
column = new HashMap<>();
column.put("title", SystemEnv.getHtmlLabelName(413, user.getLanguage())); //姓名
column.put("unit", "");
column.put("dataIndex", "lastname");
column.put("type", "lastname");
column.put("key", "lastname");
column.put("rowSpan", 3);
column.put("width", 105);
column.put("showDetial", "1");
columns.add(column);
column = new HashMap<>();
column.put("title", SystemEnv.getHtmlLabelName(528842, user.getLanguage())); //分部
column.put("unit", "");
column.put("dataIndex", "subcompany");
column.put("type", "subcompany");
column.put("key", "subcompany");
column.put("rowSpan", 3);
column.put("width", 105);
column.put("showDetial", "1");
columns.add(column);
column = new HashMap<>();
column.put("title", SystemEnv.getHtmlLabelName(528843, user.getLanguage())); //部门
column.put("unit", "");
column.put("dataIndex", "department");
column.put("type", "department");
column.put("key", "department");
column.put("rowSpan", 3);
column.put("width", 105);
column.put("showDetial", "1");
columns.add(column);
//考勤项目
String kqxmSql = "select * from uf_jcl_kq_kqxm";
List<Map<String,Object>> kqxmDates = DbTools.getSqlToList(kqxmSql);
for(Map<String,Object> kqxm : kqxmDates) {
String unit = getKqxmUnit(Util.null2String(kqxm.get("hsdw")));
column = new HashMap<>();
column.put("title", kqxm.get("mc"));
column.put("unit", unit);
column.put("dataIndex", "kqxm" + "_" + kqxm.get("id"));
column.put("type", "kqxm" + "_" + kqxm.get("id"));
column.put("key", "kqxm" + "_" + kqxm.get("id"));
column.put("rowSpan", 3);
column.put("width", 105);
column.put("showDetial", "1");
columns.add(column);
}
bs.writeLog("columns : " + columns);
//获取列表结果typeSelect为9、10时查询出勤汇总明细表数据其他则生成临时汇总数据
List<Map<String,Object>> dtDates = null;
LocalDate targetDate = LocalDate.now(); // 获取当前日期
bs.writeLog("currentDate : " + targetDate);
if (typeSelect.equals("9")) {
String targetYear = String.valueOf(targetDate.getYear());
String targetMonth = String.valueOf(targetDate.getMonthValue());
bs.writeLog("targetYear : " + targetYear + ", targetMonth : " + targetMonth);
dtDates = getDtDates(targetYear, targetMonth, subCompanyId, departmentId, resourceId, status);
} else if (typeSelect.equals("10")) {
targetDate = targetDate.minusMonths(1);
String targetYear = String.valueOf(targetDate.getYear());
String targetMonth = String.valueOf(targetDate.getMonthValue());
bs.writeLog("targetYear : " + targetYear + ", targetMonth : " + targetMonth);
dtDates = getDtDates(targetYear, targetMonth, subCompanyId, departmentId, resourceId, status);
} else {
//调用临时汇总数据方法,生成数据
dtDates = getTemAttendanceSummary(jsonObj);
}
bs.writeLog("dtDates_size : " + (dtDates==null ? "null" : dtDates.size()));
//处理明细表数据,分组生成列表数据
Map<String, Map<String, String>> groupData = new HashMap<>();
for (Map<String, Object> map : dtDates) {
String groupKey = map.get("ry") + "_" + map.get("gzfb") + "_" + map.get("gzbm");
Map<String, String> itemMap = new HashMap<>();
if (groupData.get(groupKey) == null) {
//尚未存在则新建,加入
itemMap.put("resourceId", Util.null2String(map.get("ry")));
itemMap.put("lastname", resourceComInfo.getLastname(Util.null2String(map.get("ry"))));
itemMap.put("subcompanyId", Util.null2String(map.get("gzfb")));
itemMap.put("subcompany", subCompanyComInfo.getSubcompanyname(Util.null2String(map.get("gzfb"))));
itemMap.put("departmentId", Util.null2String(map.get("gzbm")));
itemMap.put("department", departmentComInfo.getDepartmentName(Util.null2String(map.get("gzbm"))));
//设置考勤项目累计数值,累天、累时、累分最多有一个有值,都没有则取累次
String cumulativeValue = Util.null2String(map.get("lt")) + Util.null2String(map.get("ls")) + Util.null2String(map.get("lf"));
if (!cumulativeValue.equals("")) {
itemMap.put("kqxm" + "_" + map.get("kqxm").toString(), cumulativeValue);
} else {
itemMap.put("kqxm" + "_" + map.get("kqxm").toString(), map.get("lc").toString());
}
groupData.put(groupKey, itemMap);
} else {
//已存在则新增元素
itemMap = groupData.get(groupKey);
//设置考勤项目累计数值,累天、累时、累分最多有一个有值,都没有则取累次
String cumulativeValue = Util.null2String(map.get("lt")) + Util.null2String(map.get("ls")) + Util.null2String(map.get("lf"));
if (!cumulativeValue.equals("")) {
itemMap.put("kqxm" + "_" + map.get("kqxm").toString(), cumulativeValue);
} else {
itemMap.put("kqxm" + "_" + map.get("kqxm").toString(), map.get("lc").toString());
}
groupData.put(groupKey, itemMap);
}
}
//获取最终的list根据人员id排序
List<Map<String, String>> dataList = new ArrayList<>(groupData.values());
Collections.sort(dataList, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
String str1 = o1.get("resourceId").toString();
String str2 = o2.get("resourceId").toString();
//str1在前str2在后默认升序
return str1.compareTo(str2);
}
});
//分页处理
int start = pageIndex * pageSize;
int end = Math.min((pageIndex + 1) * pageSize, dataList.size());
List<Map<String, String>> resultList = new ArrayList<>();
if (start <= dataList.size()) {
resultList = dataList.subList(start, end);
}
count = dataList.size();
if (count <= 0) {
pageCount = 0;
} else {
pageCount = count / pageSize + ((count % pageSize > 0) ? 1 : 0);
}
isHaveNext = (pageIndex + 1 <= pageCount) ? 1 : 0;
isHavePre = (pageIndex - 1 >= 1) ? 1 : 0;
List<Object> lsHolidays = KQHolidaySetBiz.getHolidaySetListByScope(""+user.getUID(),fromDate,toDate);
retmap.put("holidays", lsHolidays);
retmap.put("columns",columns);
retmap.put("datas",resultList);
retmap.put("pagesize", pageSize);
retmap.put("pageindex", pageIndex);
retmap.put("count", count);
retmap.put("pagecount", pageCount);
retmap.put("ishavepre", isHavePre);
retmap.put("ishavenext", isHaveNext);
}catch (Exception e){
bs.writeLog(e);
}
return retmap;
}
@Override
public Map<String, Object> getCqSummarySearchCondition(Map<String, Object> params) {
return this.commandExecutor.execute(new GetCqSummarySearchConditionCmd(params, user));
}
private String getKqxmUnit(String hsdw) {
if (hsdw.equals("0")) {
return SystemEnv.getHtmlLabelName(518514, user.getLanguage()); //天
} else if (hsdw.equals("1")) {
return SystemEnv.getHtmlLabelName(518515, user.getLanguage()); //小时
} else if (hsdw.equals("2")) {
return SystemEnv.getHtmlLabelName(518516, user.getLanguage()); //分钟
} else if (hsdw.equals("3")) {
return SystemEnv.getHtmlLabelName(18083, user.getLanguage()); //次
} else {
return "";
}
}
private List<Map<String,Object>> getDtDates(String targetYear, String targetMonth, String status, String subCompanyIds, String depIds, String empIds) {
String mainListSql = "select * from uf_jcl_kq_cqhz where nd= " + targetYear + " and yf = " + targetMonth;
List<Map<String,Object>> mainDates = DbTools.getSqlToList(mainListSql);
List<String> mainIds = new ArrayList<>();
for (Map<String, Object> map : mainDates) {
mainIds.add(map.get("id").toString());
}
bs.writeLog("mainIds : " + mainIds);
String dtListSql = "select * from uf_jcl_kq_cqhz_dt1 a left join hrmresource b on a.ry = b.id where 1=1";
if (!status.equals("") && !status.equals("9")) {
dtListSql = dtListSql + " and b.status = " + status;
}
if (!subCompanyIds.equals("")) {
dtListSql = dtListSql + " and a.gzfb in (" + subCompanyIds + ")";
}
if (!depIds.equals("")) {
dtListSql = dtListSql + " and a.gzbm in (" + depIds + ")";
}
if (!empIds.equals("")) {
dtListSql = dtListSql + " and a.ry in (" + empIds + ")";
}
if (mainIds.size() > 0) {
dtListSql = dtListSql + " and a.mainid in (" + String.join(",", mainIds) + ")";
List<Map<String,Object>> dtDates = DbTools.getSqlToList(dtListSql);
bs.writeLog("dtDates_size : " + dtDates.size() + ", dtListSql : " + dtListSql);
return dtDates;
} else {
return new ArrayList<>();
}
}
/**
* 获取临时出勤汇总数据
* 基于入参中分部、部门、人员id、人员状态、考勤时间区间等字段
* 对出勤结果表、补打卡表、出勤津贴表中数据根据分布和时间区间筛选后,
* 根据分部、部门、人员id、考勤项目进行分组统计
* @param params
* @return
*/
public List<Map<String, Object>> getTemAttendanceSummary(Map<String, Object> params) {
bs.writeLog("params : " + params);
List<Map<String, Object>> addList = new ArrayList<>();
//处理筛选条件
//时间范围,今天-1本周-2本月-3本季-4本年-5指定日期范围-6上个月-7上一年-8
String dateRange = Util.null2String(params.get("typeselect"));//时间范围
String startDate = Util.null2String(params.get("fromDate"));
String endDate = Util.null2String(params.get("toDate"));
if (dateRange.length() == 0) {
dateRange = "3";
}
if (!dateRange.equals("") && !dateRange.equals("0") && !dateRange.equals("6")) {
if (dateRange.equals("1")) {
startDate = TimeUtil.getCurrentDateString();
endDate = TimeUtil.getCurrentDateString();
} else {
startDate = TimeUtil.getDateByOption(dateRange, "0");
endDate = TimeUtil.getDateByOption(dateRange, "1");
}
}
//查看范围,总部-0分部-1部门-2人员-3
String viewRange = Util.null2String(params.get("viewScope"));//查看范围
String subCompanyIds = Util.null2String(params.get("subCompanyId"));//可以多个分部id以,分隔
String departmentIds = Util.null2String(params.get("departmentId"));//可以多个部门id以,分隔
String empIds = Util.null2String(params.get("resourceId"));//可以多个人员id以,分隔
//人员状态,试用-0正式-1临时-2试用延期-3解聘-4离职-5退休-6无效-7在职-8全部-9
String empStatus = Util.null2String(params.get("status"));//人员状态
bs.writeLog("startDate : " + startDate + ", endDate : " + endDate + ", subCompanyIds : " + subCompanyIds + ", departmentIds : " + departmentIds + ", empIds : " + empIds + ", empStatus : " + empStatus);
if (!startDate.equals("") && !endDate.equals("")) {
//临时汇总出勤结果表、补打卡表、出勤津贴表数据
//出勤结果表
List<Map<String, Object>> cqAddList = getTemCqAddList(startDate, endDate, subCompanyIds, departmentIds, empIds, empStatus);
bs.writeLog("cqAddList_size : " + cqAddList.size());
if (cqAddList.size() > 0) {
addList.addAll(cqAddList);
}
//补打卡表
List<Map<String, Object>> bdkAddList = getTemBdkAddList(startDate, endDate, subCompanyIds, departmentIds, empIds, empStatus);
bs.writeLog("bdkAddList_size : " + bdkAddList.size());
if (bdkAddList.size() > 0) {
addList.addAll(bdkAddList);
}
//出勤津贴表
List<Map<String, Object>> cqjtAddList = getTemCqjtAddList(startDate, endDate, subCompanyIds, departmentIds, empIds, empStatus);
bs.writeLog("cqjtAddList_size : " + cqjtAddList.size());
if (cqjtAddList.size() > 0) {
addList.addAll(cqjtAddList);
}
}
return addList;
}
//汇总出勤结果表
public List<Map<String, String>> getCqAddList(String mainId, String subCompanyListStr, String startDate, String endDate) {
String cqSql = "select * from uf_jcl_kq_cqjg where fbid in (" + subCompanyListStr + ") and rq >= '" + startDate +"'" + " and rq <= '" + endDate +"'";
List<Map<String,Object>> cqDates = DbTools.getSqlToList(cqSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealCqDataWithGroup = new HashMap<>();
for (Map<String,Object> map : cqDates) {
//出勤状态
String cqzt = Util.null2String(map.get("cqzt"));
if (!cqzt.equals("")) {
//匹配出勤状态对应的考勤项目id
String kqxmId = cqzt.equals("0") ? "1" : "5";
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + kqxmId;
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", kqxmId);
itemMap.put("sc", "1");
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
//日期类型
String rqlx = Util.null2String(map.get("rqlx"));
if (!rqlx.equals("")) {
//匹配日期类型对应的考勤项目id
String kqxmId = null;
if (rqlx.equals("0") || rqlx.equals("4")) {
kqxmId = "2";
} else if (rqlx.equals("2") || rqlx.equals("3")) {
kqxmId = "3";
} else if (rqlx.equals("1")) {
kqxmId = "4";
}
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + kqxmId;
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", kqxmId);
itemMap.put("sc", "1");
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
//项目1
if (!Util.null2String(map.get("xm1")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm1");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm1"));
itemMap.put("sc", map.get("sc1"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目2
if (!Util.null2String(map.get("xm2")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm2");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm2"));
itemMap.put("sc", map.get("sc2"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目3
if (!Util.null2String(map.get("xm3")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm3");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm3"));
itemMap.put("sc", map.get("sc3"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目4
if (!Util.null2String(map.get("xm4")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm4");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm4"));
itemMap.put("sc", map.get("sc4"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目5
if (!Util.null2String(map.get("xm5")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm5");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm5"));
itemMap.put("sc", map.get("sc5"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目6
if (!Util.null2String(map.get("xm6")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm6");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm6"));
itemMap.put("sc", map.get("sc6"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目7
if (!Util.null2String(map.get("xm7")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm7");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm7"));
itemMap.put("sc", map.get("sc7"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目8
if (!Util.null2String(map.get("xm8")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm8");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm8"));
itemMap.put("sc", map.get("sc8"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, String>> cqAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealCqDataWithGroup.values()) {
String ry = list.get(0).get("ygid").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = 0;
double time = 0;
//查询考勤项目核算单位:天,小时,分钟,次,即0123
String kqxmSql = "select * from uf_jcl_kq_kqxm where id = " + kqxm;
Map<String,Object> kqxmData = DbTools.getSqlToMap(kqxmSql);
String accountUnit = Util.null2String(kqxmData.get("hsdw"));
//汇总区间数据
for (Map<String, Object> map : list) {
if (!accountUnit.equals("3")) {
num++;
double sc = Util.null2String(map.get("sc")).equals("") ? 0 : Double.parseDouble(map.get("sc").toString());
time += sc;
} else {
num ++;
}
}
//设置出勤汇总子表数据
Map<String, String> itemMap = new HashMap<>();
itemMap.put("mainid", mainId);
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
if (accountUnit.equals("0")) {
itemMap.put("lt", String.valueOf(time));
}
if (accountUnit.equals("1")) {
itemMap.put("ls", String.valueOf(time));
}
if (accountUnit.equals("2")) {
itemMap.put("lf", String.valueOf(time));
}
cqAddList.add(itemMap);
}
return cqAddList;
}
//汇总补打卡表
public List<Map<String, String>> getBdkAddList(String mainId, String startDate, String endDate) {
String bdkSql = "select a.*, b.fbid, b.bm from uf_jcl_kq_bdkjl a left join uf_jcl_kq_cqjg b on a.bdkry = b.ygid and a.dkrq = b.rq where a.dkrq >= '" + startDate +"'" + " and a.dkrq <= '" + endDate +"'";
List<Map<String,Object>> bdkDates = DbTools.getSqlToList(bdkSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealBdkDataWithGroup = new HashMap<>();
for (Map<String,Object> map : bdkDates) {
//补打卡项目
if (!Util.null2String(map.get("bdklx")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("bdkry") + "_" + map.get("bdklx");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("bdkry", map.get("bdkry"));
itemMap.put("xm", map.get("bdklx"));
if (toDealBdkDataWithGroup.get(groupKey) != null) {
toDealBdkDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealBdkDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, String>> bdkAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealBdkDataWithGroup.values()) {
String ry = list.get(0).get("bdkry").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = list.size();
//设置出勤汇总子表数据
Map<String, String> itemMap = new HashMap<>();
itemMap.put("mainid", mainId);
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
bdkAddList.add(itemMap);
}
return bdkAddList;
}
//汇总出勤津贴表
public List<Map<String, String>> getCqjtAddList(String mainId, String startDate, String endDate) {
String cqjtSql = "select a.*, b.fbid, b.bm from uf_jcl_kq_cqjt a left join uf_jcl_kq_cqjg b on a.yg = b.ygid and a.rq = b.rq where a.rq >= '" + startDate +"'" + " and a.rq <= '" + endDate+"'";
List<Map<String,Object>> cqjtDates = DbTools.getSqlToList(cqjtSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealCqjtDataWithGroup = new HashMap<>();
for (Map<String,Object> map : cqjtDates) {
//津贴类型
if (!Util.null2String(map.get("jtlx")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("bdkry") + "_" + map.get("bdklx");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("yg", map.get("yg"));
itemMap.put("xm", map.get("jtlx"));
if (toDealCqjtDataWithGroup.get(groupKey) != null) {
toDealCqjtDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqjtDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, String>> cqjtAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealCqjtDataWithGroup.values()) {
String ry = list.get(0).get("yg").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = list.size();
double time = 0;
//查询考勤项目核算单位:天,小时,分钟,次,即0123
String kqxmSql = "select * from uf_jcl_kq_kqxm where id = " + kqxm;
Map<String,Object> kqxmData = DbTools.getSqlToMap(kqxmSql);
String accountUnit = Util.null2String(kqxmData.get("hsdw"));
//汇总区间数据
for (Map<String, Object> map : list) {
if (!accountUnit.equals("3")) {
double sc = Util.null2String(map.get("sc")).equals("") ? 0 : Double.parseDouble(map.get("sc").toString());
time += sc;
}
}
//设置出勤汇总子表数据
Map<String, String> itemMap = new HashMap<>();
itemMap.put("mainid", mainId);
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
if (accountUnit.equals("0")) {
itemMap.put("lt", String.valueOf(time));
}
if (accountUnit.equals("1")) {
itemMap.put("ls", String.valueOf(time));
}
if (accountUnit.equals("2")) {
itemMap.put("lf", String.valueOf(time));
}
cqjtAddList.add(itemMap);
}
return cqjtAddList;
}
//临时汇总出勤结果表
private List<Map<String, Object>> getTemCqAddList(String startDate, String endDate, String subCompanyIds, String departmentIds, String empIds, String empStatus) {
String cqSql = "select a.* from uf_jcl_kq_cqjg a left join hrmresource b on a.ygid = b.id where b.status = " + empStatus + " and a.rq >= '" + startDate +"'" + " and a.rq <= '" + endDate +"'";
if (!subCompanyIds.equals("")) {
cqSql = cqSql + " and a.fbid in (" + subCompanyIds + ")";
}
if (!departmentIds.equals("")) {
cqSql = cqSql + " and a.bm in (" + departmentIds + ")";
}
if (!empIds.equals("")) {
cqSql = cqSql + " and a.ygid in (" + empIds + ")";
}
List<Map<String,Object>> cqDates = DbTools.getSqlToList(cqSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealCqDataWithGroup = new HashMap<>();
for (Map<String,Object> map : cqDates) {
//出勤状态
String cqzt = Util.null2String(map.get("cqzt"));
if (!cqzt.equals("")) {
//匹配出勤状态对应的考勤项目id
String kqxmId = cqzt.equals("0") ? "1" : "5";
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + kqxmId;
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", kqxmId);
itemMap.put("sc", "1");
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
//日期类型
String rqlx = Util.null2String(map.get("rqlx"));
if (!rqlx.equals("")) {
//匹配日期类型对应的考勤项目id
String kqxmId = null;
if (rqlx.equals("0") || rqlx.equals("4")) {
kqxmId = "2";
} else if (rqlx.equals("2") || rqlx.equals("3")) {
kqxmId = "3";
} else if (rqlx.equals("1")) {
kqxmId = "4";
}
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + kqxmId;
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", kqxmId);
itemMap.put("sc", "1");
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
//项目1
if (!Util.null2String(map.get("xm1")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm1");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm1"));
itemMap.put("sc", map.get("sc1"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目2
if (!Util.null2String(map.get("xm2")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm2");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm2"));
itemMap.put("sc", map.get("sc2"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目3
if (!Util.null2String(map.get("xm3")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm3");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm3"));
itemMap.put("sc", map.get("sc3"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目4
if (!Util.null2String(map.get("xm4")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm4");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm4"));
itemMap.put("sc", map.get("sc4"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目5
if (!Util.null2String(map.get("xm5")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm5");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm5"));
itemMap.put("sc", map.get("sc5"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目6
if (!Util.null2String(map.get("xm6")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm6");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm6"));
itemMap.put("sc", map.get("sc6"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目7
if (!Util.null2String(map.get("xm7")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm7");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm7"));
itemMap.put("sc", map.get("sc7"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
} else {
continue;
}
//项目8
if (!Util.null2String(map.get("xm8")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("ygid") + "_" + map.get("xm8");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("ygid", map.get("ygid"));
itemMap.put("xm", map.get("xm8"));
itemMap.put("sc", map.get("sc8"));
if (toDealCqDataWithGroup.get(groupKey) != null) {
toDealCqDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, Object>> cqAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealCqDataWithGroup.values()) {
String ry = list.get(0).get("ygid").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = 0;
double time = 0;
//查询考勤项目核算单位:天,小时,分钟,次,即0123
String kqxmSql = "select * from uf_jcl_kq_kqxm where id = " + kqxm;
Map<String,Object> kqxmData = DbTools.getSqlToMap(kqxmSql);
String accountUnit = Util.null2String(kqxmData.get("hsdw"));
//汇总区间数据
for (Map<String, Object> map : list) {
if (!accountUnit.equals("3")) {
num++;
double sc = Util.null2String(map.get("sc")).equals("") ? 0 : Double.parseDouble(map.get("sc").toString());
time += sc;
} else {
num ++;
}
}
//设置出勤汇总子表数据
Map<String, Object> itemMap = new HashMap<>();
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
if (accountUnit.equals("0")) {
itemMap.put("lt", String.valueOf(time));
}
if (accountUnit.equals("1")) {
itemMap.put("ls", String.valueOf(time));
}
if (accountUnit.equals("2")) {
itemMap.put("lf", String.valueOf(time));
}
cqAddList.add(itemMap);
}
return cqAddList;
}
//临时汇总补打卡表
private List<Map<String, Object>> getTemBdkAddList(String startDate, String endDate, String subCompanyIds, String departmentIds, String empIds, String empStatus) {
String bdkSql = "select a.*, b.fbid, b.bm from uf_jcl_kq_bdkjl a " +
"left join uf_jcl_kq_cqjg b on a.bdkry = b.ygid and a.dkrq = b.rq " +
"left join hrmresource c on a.bdkry = c.id " +
"where c.status = " + empStatus + " and a.dkrq >= '" + startDate +"'" + " and a.dkrq <= '" + endDate +"'";
if (!subCompanyIds.equals("")) {
bdkSql = bdkSql + " and b.fbid in (" + subCompanyIds + ")";
}
if (!departmentIds.equals("")) {
bdkSql = bdkSql + " and b.bm in (" + departmentIds + ")";
}
if (!empIds.equals("")) {
bdkSql = bdkSql + " and a.bdkry in (" + empIds + ")";
}
List<Map<String,Object>> bdkDates = DbTools.getSqlToList(bdkSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealBdkDataWithGroup = new HashMap<>();
for (Map<String,Object> map : bdkDates) {
//补打卡项目
if (!Util.null2String(map.get("bdklx")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("bdkry") + "_" + map.get("bdklx");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("bdkry", map.get("bdkry"));
itemMap.put("xm", map.get("bdklx"));
if (toDealBdkDataWithGroup.get(groupKey) != null) {
toDealBdkDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealBdkDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, Object>> bdkAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealBdkDataWithGroup.values()) {
String ry = list.get(0).get("bdkry").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = list.size();
//设置出勤汇总子表数据
Map<String, Object> itemMap = new HashMap<>();
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
bdkAddList.add(itemMap);
}
return bdkAddList;
}
//临时汇总出勤津贴表
private List<Map<String, Object>> getTemCqjtAddList(String startDate, String endDate, String subCompanyIds, String departmentIds, String empIds, String empStatus) {
String cqjtSql = "select a.*, b.fbid, b.bm from uf_jcl_kq_cqjt a " +
"left join uf_jcl_kq_cqjg b on a.yg = b.ygid and a.rq = b.rq " +
"left join hrmresource c on a.yg = c.id " +
"where c.status = " + empStatus + " and a.rq >= '" + startDate +"'" + " and a.rq <= '" + endDate +"'";
if (!subCompanyIds.equals("")) {
cqjtSql = cqjtSql + " and b.fbid in (" + subCompanyIds + ")";
}
if (!departmentIds.equals("")) {
cqjtSql = cqjtSql + " and b.bm in (" + departmentIds + ")";
}
if (!empIds.equals("")) {
cqjtSql = cqjtSql + " and a.yg in (" + empIds + ")";
}
List<Map<String,Object>> cqjtDates = DbTools.getSqlToList(cqjtSql);
//先根据分部、部门、人员、项目分组
Map<String, List<Map<String,Object>>> toDealCqjtDataWithGroup = new HashMap<>();
for (Map<String,Object> map : cqjtDates) {
//津贴类型
if (!Util.null2String(map.get("jtlx")).equals("")) {
String groupKey = map.get("fbid") + "_" + map.get("bm") + "_" + map.get("bdkry") + "_" + map.get("bdklx");
Map<String,Object> itemMap = new HashMap<>();
itemMap.put("fbid", map.get("fbid"));
itemMap.put("bm", map.get("bm"));
itemMap.put("yg", map.get("yg"));
itemMap.put("xm", map.get("jtlx"));
if (toDealCqjtDataWithGroup.get(groupKey) != null) {
toDealCqjtDataWithGroup.get(groupKey).add(itemMap);
} else {
List<Map<String,Object>> list = new ArrayList<>();
list.add(itemMap);
toDealCqjtDataWithGroup.put(groupKey, list);
}
}
}
//处理分组好的数据
List<Map<String, Object>> cqjtAddList = new ArrayList<>();
for(List<Map<String,Object>> list : toDealCqjtDataWithGroup.values()) {
String ry = list.get(0).get("yg").toString();
String kqxm = list.get(0).get("xm").toString();
String gsfb = list.get(0).get("fbid").toString();
String gsbm = list.get(0).get("bm").toString();
int num = list.size();
double time = 0;
//查询考勤项目核算单位:天,小时,分钟,次,即0123
String kqxmSql = "select * from uf_jcl_kq_kqxm where id = " + kqxm;
Map<String,Object> kqxmData = DbTools.getSqlToMap(kqxmSql);
String accountUnit = Util.null2String(kqxmData.get("hsdw"));
//汇总区间数据
for (Map<String, Object> map : list) {
if (!accountUnit.equals("3")) {
double sc = Util.null2String(map.get("sc")).equals("") ? 0 : Double.parseDouble(map.get("sc").toString());
time += sc;
}
}
//设置出勤汇总子表数据
Map<String, Object> itemMap = new HashMap<>();
itemMap.put("ry", ry);
itemMap.put("kqxm", kqxm);
itemMap.put("gzfb", gsfb);
itemMap.put("gzbm", gsbm);
itemMap.put("lc", String.valueOf(num));
if (accountUnit.equals("0")) {
itemMap.put("lt", String.valueOf(time));
}
if (accountUnit.equals("1")) {
itemMap.put("ls", String.valueOf(time));
}
if (accountUnit.equals("2")) {
itemMap.put("lf", String.valueOf(time));
}
cqjtAddList.add(itemMap);
}
return cqjtAddList;
}
}