东方骏驰 考勤异常统计报表

东方骏驰
Chengliang 5 months ago
parent 48ca746685
commit 358853f9a5

@ -0,0 +1,45 @@
package com.engine.kqsolution.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2024/11/14 10:47 AM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class KqExceptionVo {
private Integer resourceId;
private String lastName;
private String wordcode;
private String subCompanyName;
private String departmentName;
private String jobTitleName;
private Integer belate;
private Integer gravebelate;
private Integer leaveeearly;
private Integer graveleaveearly;
private Integer absenteeism;
private Integer forgotcheck;
private String kqResult;
}

@ -1,6 +1,7 @@
package com.engine.kqsolution.service; package com.engine.kqsolution.service;
import com.engine.kqsolution.entity.CustomSignDataParam; import com.engine.kqsolution.entity.CustomSignDataParam;
import com.engine.kqsolution.entity.KqExceptionVo;
import com.engine.kqsolution.entity.SignDataParams; import com.engine.kqsolution.entity.SignDataParams;
import com.engine.kqsolution.entity.WorkflowDetailVO; import com.engine.kqsolution.entity.WorkflowDetailVO;
@ -42,4 +43,13 @@ public interface SignDataSummaryService {
* @return: java.util.List<com.engine.kqsolution.entity.WorkflowDetailVO> * @return: java.util.List<com.engine.kqsolution.entity.WorkflowDetailVO>
*/ */
List<WorkflowDetailVO> workflowDetail(String ids); List<WorkflowDetailVO> workflowDetail(String ids);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2024/11/14 10:41 AM
* @param: [request2Map]
* @return: j
*/
Map<String, Object> kqExceptionReport(Map<String, Object> request2Map);
} }

@ -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())) {

@ -8,6 +8,8 @@ import weaver.hrm.job.EducationLevelComInfo;
import weaver.hrm.job.JobTitlesComInfo; import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo; import weaver.hrm.resource.ResourceComInfo;
import java.util.Arrays;
/** /**
* @Author liang.cheng * @Author liang.cheng
* @Date 2024/8/28 2:35 PM * @Date 2024/8/28 2:35 PM
@ -74,6 +76,16 @@ public class ResourceSnipUtils {
return "0".equals(sex) ? "男" : "女"; return "0".equals(sex) ? "男" : "女";
} }
/**
*
* @return
*/
public static String selectKqResult(String value) {
boolean flag = Arrays.stream(value.split("/"))
.mapToInt(Integer::parseInt)
.anyMatch(n -> n > 0);
return flag ? "异常" :"正常";
}
/** /**
* *

@ -2,6 +2,7 @@ package com.engine.kqsolution.web;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil; import com.engine.common.util.ServiceUtil;
import com.engine.kqsolution.entity.CustomSignDataParam; import com.engine.kqsolution.entity.CustomSignDataParam;
import com.engine.kqsolution.entity.SignDataParams; import com.engine.kqsolution.entity.SignDataParams;
@ -79,4 +80,23 @@ public class SignDataSummaryAction {
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
} }
@GET
@Path("/kqExceptionReport")
@Produces(MediaType.TEXT_PLAIN)
public String kqExceptionReport(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.put("datas",getService(user).kqExceptionReport(ParamUtil.request2Map(request)));
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
} }

@ -5,7 +5,7 @@ import weaver.common.DateUtil;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/** /**
@ -17,6 +17,11 @@ import java.time.temporal.TemporalAdjusters;
public class MainTest { public class MainTest {
public static void main(String[] args) { public static void main(String[] args) {
String lastDayOfMonthToString = DateUtil.getLastDayOfMonthToString(new Date());
String firstDayOfMonthToString = DateUtil.getFirstDayOfMonthToString(new Date());
System.out.println(lastDayOfMonthToString);
System.out.println(firstDayOfMonthToString);
} }

Loading…
Cancel
Save