|
|
@ -3,33 +3,35 @@ package com.engine.kqsolution.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
|
|
|
import com.cloudstore.eccom.constant.WeaBoolAttr;
|
|
|
|
|
|
|
|
import com.cloudstore.eccom.pc.table.WeaTable;
|
|
|
|
|
|
|
|
import com.cloudstore.eccom.pc.table.WeaTableColumn;
|
|
|
|
|
|
|
|
import com.cloudstore.eccom.pc.table.WeaTableType;
|
|
|
|
|
|
|
|
import com.cloudstore.eccom.result.WeaResultMsg;
|
|
|
|
import com.engine.core.impl.Service;
|
|
|
|
import com.engine.core.impl.Service;
|
|
|
|
import com.engine.kq.biz.KQShiftManagementComInfo;
|
|
|
|
import com.engine.kq.biz.KQShiftManagementComInfo;
|
|
|
|
import com.engine.kq.biz.KQWorkTime;
|
|
|
|
import com.engine.kq.biz.KQWorkTime;
|
|
|
|
import com.engine.kq.entity.WorkTimeEntity;
|
|
|
|
import com.engine.kq.entity.WorkTimeEntity;
|
|
|
|
import com.engine.kqsolution.entity.CustomSignDataParam;
|
|
|
|
import com.engine.kqsolution.entity.*;
|
|
|
|
import com.engine.kqsolution.entity.SignDataPO;
|
|
|
|
|
|
|
|
import com.engine.kqsolution.entity.SignDataParams;
|
|
|
|
|
|
|
|
import com.engine.kqsolution.entity.WorkflowDetailVO;
|
|
|
|
|
|
|
|
import com.engine.kqsolution.service.SignDataSummaryService;
|
|
|
|
import com.engine.kqsolution.service.SignDataSummaryService;
|
|
|
|
import dm.jdbc.util.StringUtil;
|
|
|
|
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
|
|
|
|
import weaver.common.DateUtil;
|
|
|
|
|
|
|
|
import weaver.common.StringUtil;
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
import weaver.conn.RecordSetTrans;
|
|
|
|
import weaver.conn.RecordSetTrans;
|
|
|
|
import weaver.general.BaseBean;
|
|
|
|
import weaver.general.BaseBean;
|
|
|
|
|
|
|
|
import weaver.general.PageIdConst;
|
|
|
|
import weaver.general.Util;
|
|
|
|
import weaver.general.Util;
|
|
|
|
import weaver.hrm.resource.ResourceComInfo;
|
|
|
|
import weaver.hrm.resource.ResourceComInfo;
|
|
|
|
|
|
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
import java.time.YearMonth;
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
@ -155,6 +157,85 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
|
|
|
|
return data;
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public Map<String, Object> kqExceptionReport(Map<String, Object> params) {
|
|
|
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
Map<String, Object> resultMap = new HashMap<>(4);
|
|
|
|
|
|
|
|
String date = Util.null2String(params.get("date"));
|
|
|
|
|
|
|
|
String subCompanyId = Util.null2String(params.get("subCompanyId"));
|
|
|
|
|
|
|
|
String departmentId = Util.null2String(params.get("departmentId"));
|
|
|
|
|
|
|
|
String resourceId = Util.null2String(params.get("resourceId"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String firstDay = firstDayOfMonth(date);
|
|
|
|
|
|
|
|
String lastDay = lastDayOfMonth(date);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WeaTable table = new WeaTable();
|
|
|
|
|
|
|
|
String pageId = "1f44e9bc-70e0-4f8b-abb5-fcd2ada5bd98";
|
|
|
|
|
|
|
|
table.setPageID(pageId);
|
|
|
|
|
|
|
|
table.setPageUID(String.format("%s_%s",pageId,user.getUID()));
|
|
|
|
|
|
|
|
String pageSize = PageIdConst.getPageSize(pageId, user.getUID());
|
|
|
|
|
|
|
|
table.setPagesize(pageSize);
|
|
|
|
|
|
|
|
String fields = "a.resourceid,b.workcode,b.subcompanyid1,b.departmentid,b.jobtitle," +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(belate), 0) AS VARCHAR) + '/' + \n" +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(gravebelate), 0) AS VARCHAR) + '/' + \n" +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(leaveeearly), 0) AS VARCHAR) + '/' + \n" +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(graveleaveearly), 0) AS VARCHAR) + '/' + \n" +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(absenteeism), 0) AS VARCHAR) + '/' + \n" +
|
|
|
|
|
|
|
|
" CAST(ISNULL(SUM(forgotcheck), 0) AS VARCHAR) AS result\n ";
|
|
|
|
|
|
|
|
table.setBackfields(fields);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String fromSql = " from kq_format_total a left join hrmresource b on a.resourceid = b.id";
|
|
|
|
|
|
|
|
table.setSqlform(fromSql);
|
|
|
|
|
|
|
|
String sqlWhere = " where kqdate >= '"+firstDay+"' and kqdate <= '"+lastDay+"' ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(subCompanyId)) {
|
|
|
|
|
|
|
|
sqlWhere += " and b.subcompanyid1 in ("+subCompanyId+")";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(departmentId)) {
|
|
|
|
|
|
|
|
sqlWhere += " and b.departmentid in ("+departmentId+")";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(resourceId)) {
|
|
|
|
|
|
|
|
sqlWhere += " and a.resourceid in ("+resourceId+")";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sqlWhere += " group by a.resourceid,b.workcode,b.subcompanyid1,b.departmentid,b.jobtitle";
|
|
|
|
|
|
|
|
table.setSqlwhere(sqlWhere);
|
|
|
|
|
|
|
|
table.setSqlprimarykey("a.resourceid");
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "姓名", "resourceid").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectResourceName"));
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "工号", "workcode"));
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "分部", "subcompanyid1").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectSubCompanyName"));
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "部门", "departmentid").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectDeptName"));
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "岗位", "jobtitle").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectJobName"));
|
|
|
|
|
|
|
|
table.getColumns().add(new WeaTableColumn("10%", "考勤结果", "result").setTransmethod("com.engine.kqsolution.util.ResourceSnipUtils.selectKqResult"));
|
|
|
|
|
|
|
|
table.setTableType(WeaTableType.NONE);
|
|
|
|
|
|
|
|
WeaResultMsg result = new WeaResultMsg(false);
|
|
|
|
|
|
|
|
result.putAll(table.makeDataResult());
|
|
|
|
|
|
|
|
result.success();
|
|
|
|
|
|
|
|
resultMap.putAll(result.getResultMap());
|
|
|
|
|
|
|
|
return resultMap;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String firstDayOfMonth(String yearMonthStr) {
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
|
|
|
|
|
|
|
|
YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter);
|
|
|
|
|
|
|
|
LocalDate firstDayOfMonth = yearMonth.atDay(1);
|
|
|
|
|
|
|
|
return firstDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String lastDayOfMonth(String yearMonthStr) {
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
|
|
|
|
|
|
|
|
YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter);
|
|
|
|
|
|
|
|
LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
|
|
|
|
|
|
|
|
return lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@SneakyThrows
|
|
|
|
@SneakyThrows
|
|
|
|
private Map<String, Object> saveSignData(List<SignDataPO> list,SignDataParams signDataParams){
|
|
|
|
private Map<String, Object> saveSignData(List<SignDataPO> list,SignDataParams signDataParams){
|
|
|
|
Map<String,Object> data = new HashMap<>(4);
|
|
|
|
Map<String,Object> data = new HashMap<>(4);
|
|
|
@ -251,7 +332,7 @@ public class SignDataSummaryServiceImpl extends Service implements SignDataSumma
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
List<SignDataPO> pos = new ArrayList<>();
|
|
|
|
List<SignDataPO> pos = new ArrayList<>();
|
|
|
|
String formatYearMonth = getFormatLocalDate(LocalDate.now(),MONTH_FORMATTER_PATTERN);
|
|
|
|
String formatYearMonth = getFormatLocalDate(LocalDate.now(),MONTH_FORMATTER_PATTERN);
|
|
|
|
if (StringUtil.isNotEmpty(signDataParams.getAttendanceDate())) {
|
|
|
|
if (StringUtils.isNotEmpty(signDataParams.getAttendanceDate())) {
|
|
|
|
formatYearMonth = signDataParams.getAttendanceDate().substring(0,7);
|
|
|
|
formatYearMonth = signDataParams.getAttendanceDate().substring(0,7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (CollectionUtils.isNotEmpty(signDataParams.getIds())) {
|
|
|
|
if (CollectionUtils.isNotEmpty(signDataParams.getIds())) {
|
|
|
|