|
@@ -1,13 +1,18 @@
|
|
package com.ruoyi.web.controller.kaoqin;
|
|
package com.ruoyi.web.controller.kaoqin;
|
|
|
|
|
|
|
|
+import com.ruoyi.common.annotation.Log;
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
|
|
|
+import com.ruoyi.common.enums.BusinessType;
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
+import com.ruoyi.common.utils.MapToObjectUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
+import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
import com.ruoyi.system.domain.*;
|
|
import com.ruoyi.system.domain.*;
|
|
|
|
+import com.ruoyi.system.domain.vo.BaobiaoVo;
|
|
import com.ruoyi.system.mapper.BusinessTripMapper;
|
|
import com.ruoyi.system.mapper.BusinessTripMapper;
|
|
import com.ruoyi.system.mapper.CardReplacementRecordMapper;
|
|
import com.ruoyi.system.mapper.CardReplacementRecordMapper;
|
|
import com.ruoyi.system.mapper.RecordLeaveMapper;
|
|
import com.ruoyi.system.mapper.RecordLeaveMapper;
|
|
@@ -19,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -70,7 +76,7 @@ public class KaoQinController extends BaseController {
|
|
public AjaxResult daKa(KaoqinConfig kaoqinConfig) {
|
|
public AjaxResult daKa(KaoqinConfig kaoqinConfig) {
|
|
//先去 根据当前人员的部门id查询是否有规则,没有再去查祖籍列表
|
|
//先去 根据当前人员的部门id查询是否有规则,没有再去查祖籍列表
|
|
KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigByDeptId(kaoqinConfig.getDeptId());
|
|
KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigByDeptId(kaoqinConfig.getDeptId());
|
|
- if (kaoqinConfigDept == null){
|
|
|
|
|
|
+ if (kaoqinConfigDept == null) {
|
|
//根据部门祖籍列表,查询该部门考勤范围 ,经纬度
|
|
//根据部门祖籍列表,查询该部门考勤范围 ,经纬度
|
|
List<KaoqinConfig> kaoqinConfigs = kaoqinConfigService.selectKaoqinConfigList(kaoqinConfig);
|
|
List<KaoqinConfig> kaoqinConfigs = kaoqinConfigService.selectKaoqinConfigList(kaoqinConfig);
|
|
if (kaoqinConfigs != null && kaoqinConfigs.size() > 1) {
|
|
if (kaoqinConfigs != null && kaoqinConfigs.size() > 1) {
|
|
@@ -109,7 +115,7 @@ public class KaoQinController extends BaseController {
|
|
@GetMapping("/abnormal")
|
|
@GetMapping("/abnormal")
|
|
public AjaxResult abnormal(KaoqinRecord kaoqinRecord) {
|
|
public AjaxResult abnormal(KaoqinRecord kaoqinRecord) {
|
|
//传入userId/年 和 月份 设置查询异常的考勤
|
|
//传入userId/年 和 月份 设置查询异常的考勤
|
|
- kaoqinRecord.setKaStatus("2");
|
|
|
|
|
|
+ //kaoqinRecord.setKaStatus("2");
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
//记录该月有多少次异常总数
|
|
//记录该月有多少次异常总数
|
|
Long count = 0L;
|
|
Long count = 0L;
|
|
@@ -121,8 +127,10 @@ public class KaoQinController extends BaseController {
|
|
//获取异常的值
|
|
//获取异常的值
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
if (!"1".equals(dictValue)) {
|
|
if (!"1".equals(dictValue)) {
|
|
|
|
+ //获取异常名称
|
|
|
|
+ String dictLabel = dictToString(sysDictDatum.getDictValue());
|
|
Long aLong = 0L;
|
|
Long aLong = 0L;
|
|
- map.put("num"+dictValue, aLong);
|
|
|
|
|
|
+ map.put(dictLabel, aLong);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
|
|
for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
|
|
@@ -131,20 +139,27 @@ public class KaoQinController extends BaseController {
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
- Long aLong = map.get("num"+kaTypeAmIn);
|
|
|
|
- map.put("num"+kaTypeAmIn, aLong + 1);
|
|
|
|
|
|
+ //获取异常名称
|
|
|
|
+ String dictLabel = dictToString(kaTypeAmIn);
|
|
|
|
+ map.compute(dictLabel, (k, aLong) -> aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypeAmOut);
|
|
|
|
- map.put("num"+kaTypeAmOut, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
+ //获取异常名称
|
|
|
|
+ String dictLabel = dictToString(kaTypeAmOut);
|
|
|
|
+ map.compute(dictLabel, (k, aLong) -> aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypePmIn);
|
|
|
|
- map.put("num"+kaTypePmIn, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
+ //获取异常名称
|
|
|
|
+ String dictLabel = dictToString(kaTypePmIn);
|
|
|
|
+ map.compute(dictLabel, (k, aLong) -> aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypePmOut);
|
|
|
|
- map.put("num"+kaTypePmOut, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
+ //获取异常名称
|
|
|
|
+ String dictLabel = dictToString(kaTypePmOut);
|
|
|
|
+ map.compute(dictLabel, (k, aLong) -> aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -164,22 +179,22 @@ public class KaoQinController extends BaseController {
|
|
//查询传入月补卡信息
|
|
//查询传入月补卡信息
|
|
CardReplacementRecord cardReplacementRecord = new CardReplacementRecord();
|
|
CardReplacementRecord cardReplacementRecord = new CardReplacementRecord();
|
|
cardReplacementRecord.setUserId(kaoqinRecord.getUserId());
|
|
cardReplacementRecord.setUserId(kaoqinRecord.getUserId());
|
|
- String qDate = kaoqinRecord.getKaYear()+"-"+kaoqinRecord.getKaMonth()+"-01";
|
|
|
|
|
|
+ String qDate = kaoqinRecord.getKaYear() + "-" + kaoqinRecord.getKaMonth() + "-01";
|
|
cardReplacementRecord.setApplicationDate(qDate);
|
|
cardReplacementRecord.setApplicationDate(qDate);
|
|
List<CardReplacementRecord> cardReplacementRecordList = cardReplacementRecordMapper.selectCardReplacementRecordList(cardReplacementRecord);
|
|
List<CardReplacementRecord> cardReplacementRecordList = cardReplacementRecordMapper.selectCardReplacementRecordList(cardReplacementRecord);
|
|
Map<String, List<CardReplacementRecord>> cardReplacementCollect = cardReplacementRecordList.stream().collect(Collectors.groupingBy(CardReplacementRecord::getApplicationDate));
|
|
Map<String, List<CardReplacementRecord>> cardReplacementCollect = cardReplacementRecordList.stream().collect(Collectors.groupingBy(CardReplacementRecord::getApplicationDate));
|
|
//查询传入月请假信息
|
|
//查询传入月请假信息
|
|
RecordLeave recordLeave = new RecordLeave();
|
|
RecordLeave recordLeave = new RecordLeave();
|
|
- String month = kaoqinRecord.getKaYear()+"-"+kaoqinRecord.getKaMonth();
|
|
|
|
- recordLeave.setStartTime(DateUtils.convertStringToDate(month+"-"+"01 00:00:00"));
|
|
|
|
|
|
+ String month = kaoqinRecord.getKaYear() + "-" + kaoqinRecord.getKaMonth();
|
|
|
|
+ recordLeave.setStartTime(DateUtils.convertStringToDate(month + "-" + "01 00:00:00"));
|
|
String fin = DateUtils.getLastDayOfMonth(Integer.parseInt(kaoqinRecord.getKaYear()), Integer.parseInt(kaoqinRecord.getKaMonth()));
|
|
String fin = DateUtils.getLastDayOfMonth(Integer.parseInt(kaoqinRecord.getKaYear()), Integer.parseInt(kaoqinRecord.getKaMonth()));
|
|
- recordLeave.setEndTime(DateUtils.convertStringToDate(fin+" 23:59:59"));
|
|
|
|
|
|
+ recordLeave.setEndTime(DateUtils.convertStringToDate(fin + " 23:59:59"));
|
|
recordLeave.setAbsenteeId(String.valueOf(kaoqinRecord.getUserId()));
|
|
recordLeave.setAbsenteeId(String.valueOf(kaoqinRecord.getUserId()));
|
|
List<RecordLeave> recordLeaves = recordLeaveMapper.selectRecordLeaveList(recordLeave);
|
|
List<RecordLeave> recordLeaves = recordLeaveMapper.selectRecordLeaveList(recordLeave);
|
|
//查询传入月出差信息
|
|
//查询传入月出差信息
|
|
BusinessTrip businessTrip = new BusinessTrip();
|
|
BusinessTrip businessTrip = new BusinessTrip();
|
|
- businessTrip.setStartTime(DateUtils.convertStringToDate(month+"-"+"01 00:00:00"));
|
|
|
|
- businessTrip.setEndTime(DateUtils.convertStringToDate(fin+" 23:59:59"));
|
|
|
|
|
|
+ businessTrip.setStartTime(DateUtils.convertStringToDate(month + "-" + "01 00:00:00"));
|
|
|
|
+ businessTrip.setEndTime(DateUtils.convertStringToDate(fin + " 23:59:59"));
|
|
businessTrip.setUserId(kaoqinRecord.getUserId());
|
|
businessTrip.setUserId(kaoqinRecord.getUserId());
|
|
List<BusinessTrip> businessTrips = businessTripMapper.selectBusinessTripListLb(businessTrip);
|
|
List<BusinessTrip> businessTrips = businessTripMapper.selectBusinessTripListLb(businessTrip);
|
|
|
|
|
|
@@ -192,14 +207,14 @@ public class KaoQinController extends BaseController {
|
|
List<BusinessTrip> businessList = new ArrayList<>();
|
|
List<BusinessTrip> businessList = new ArrayList<>();
|
|
//请假信息
|
|
//请假信息
|
|
for (RecordLeave recordLeaf : recordLeaves) {
|
|
for (RecordLeave recordLeaf : recordLeaves) {
|
|
- if(DateUtils.isDateBetween(DateUtils.convertStringToDate(date), recordLeaf.getStartTime(), recordLeaf.getEndTime())) {
|
|
|
|
|
|
+ if (DateUtils.isDateBetween(DateUtils.convertStringToDate(date), recordLeaf.getStartTime(), recordLeaf.getEndTime())) {
|
|
recordList.add(recordLeaf);
|
|
recordList.add(recordLeaf);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
//出差信息
|
|
//出差信息
|
|
for (BusinessTrip trip : businessTrips) {
|
|
for (BusinessTrip trip : businessTrips) {
|
|
- if(DateUtils.isDateBetween(DateUtils.convertStringToDate(date), trip.getStartTime(), trip.getEndTime())) {
|
|
|
|
|
|
+ if (DateUtils.isDateBetween(DateUtils.convertStringToDate(date), trip.getStartTime(), trip.getEndTime())) {
|
|
businessList.add(trip);
|
|
businessList.add(trip);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -264,9 +279,19 @@ public class KaoQinController extends BaseController {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@PostMapping("/clockRecord")
|
|
@PostMapping("/clockRecord")
|
|
- public AjaxResult clockRecord(@RequestBody KaoqinRecord kaoqinRecord) {
|
|
|
|
|
|
+ public AjaxResult clockRecord(KaoqinRecord kaoqinRecord) {
|
|
|
|
+
|
|
|
|
+ List<Map<String, Object>> list = kqRecord(kaoqinRecord);
|
|
|
|
+ return AjaxResult.success(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<Map<String, Object>> kqRecord(KaoqinRecord kaoqinRecord) {
|
|
|
|
+ if (StringUtils.isEmpty(kaoqinRecord.getKaMonth())) {
|
|
|
|
+ kaoqinRecord.setKaYear(DateUtils.getYear());
|
|
|
|
+ kaoqinRecord.setKaMonth(DateUtils.justMonth());
|
|
|
|
+ }
|
|
//定义返回值
|
|
//定义返回值
|
|
- List list = new ArrayList();
|
|
|
|
|
|
+ List<Map<String, Object>> list = new ArrayList();
|
|
//根据部门id查询考勤数据
|
|
//根据部门id查询考勤数据
|
|
List<KaoqinRecord> kaoqinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
List<KaoqinRecord> kaoqinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
if (kaoqinRecords != null) {
|
|
if (kaoqinRecords != null) {
|
|
@@ -276,18 +301,16 @@ public class KaoQinController extends BaseController {
|
|
dictData.setDictType("kaoqin_abnormal");
|
|
dictData.setDictType("kaoqin_abnormal");
|
|
//找到所有的异常
|
|
//找到所有的异常
|
|
List<SysDictData> sysDictData = dictDataService.selectDictDataList(dictData);
|
|
List<SysDictData> sysDictData = dictDataService.selectDictDataList(dictData);
|
|
- Map<String, String> map = new HashMap<>();
|
|
|
|
|
|
+ /*Map<String, String> map = new HashMap<>();
|
|
if (sysDictData != null) {
|
|
if (sysDictData != null) {
|
|
for (SysDictData sysDictDatum : sysDictData) {
|
|
for (SysDictData sysDictDatum : sysDictData) {
|
|
//获取异常名称
|
|
//获取异常名称
|
|
String dictLabel = sysDictDatum.getDictLabel();
|
|
String dictLabel = sysDictDatum.getDictLabel();
|
|
//获取异常的值
|
|
//获取异常的值
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
- if (!"1".equals(dictValue)) {
|
|
|
|
- map.put(dictValue, dictLabel);
|
|
|
|
- }
|
|
|
|
|
|
+ map.put(dictValue, dictValue);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
|
|
|
|
for (List<KaoqinRecord> value : kaoQinRecords.values()) {
|
|
for (List<KaoqinRecord> value : kaoQinRecords.values()) {
|
|
if (value != null) {
|
|
if (value != null) {
|
|
@@ -296,32 +319,38 @@ public class KaoQinController extends BaseController {
|
|
userMap.put("userName", value.get(0).getUserName());
|
|
userMap.put("userName", value.get(0).getUserName());
|
|
userMap.put("deptName", value.get(0).getDeptName());
|
|
userMap.put("deptName", value.get(0).getDeptName());
|
|
userMap.put("list", value);
|
|
userMap.put("list", value);
|
|
- for (String dictValue : map.keySet()) {
|
|
|
|
- String dictLabel = map.get(dictValue);
|
|
|
|
- userMap.put(dictLabel, 0);
|
|
|
|
|
|
+
|
|
|
|
+ for (SysDictData sysDictDatum : sysDictData) {
|
|
|
|
+ //获取异常的值
|
|
|
|
+ String dictValue = dictToString(sysDictDatum.getDictValue());
|
|
|
|
+ userMap.put(dictValue, 0);
|
|
}
|
|
}
|
|
|
|
+
|
|
for (KaoqinRecord kaoQinRecord : value) {
|
|
for (KaoqinRecord kaoQinRecord : value) {
|
|
String kaTypeAmIn = kaoQinRecord.getKaTypeAmIn();
|
|
String kaTypeAmIn = kaoQinRecord.getKaTypeAmIn();
|
|
String kaTypeAmOut = kaoQinRecord.getKaTypeAmOut();
|
|
String kaTypeAmOut = kaoQinRecord.getKaTypeAmOut();
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
- if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
//获取异常的名称
|
|
//获取异常的名称
|
|
- String dictLabel = map.get(kaTypeAmIn);
|
|
|
|
|
|
+ String dictLabel = dictToString(kaTypeAmIn);
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
userMap.put(dictLabel, num + 1);
|
|
userMap.put(dictLabel, num + 1);
|
|
- } if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
- String dictLabel = map.get(kaTypeAmOut);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
+ String dictLabel = dictToString(kaTypeAmOut);
|
|
//获取异常的名称
|
|
//获取异常的名称
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
userMap.put(dictLabel, num + 1);
|
|
userMap.put(dictLabel, num + 1);
|
|
- } if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
- String dictLabel = map.get(kaTypePmIn);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
+ String dictLabel = dictToString(kaTypePmIn);
|
|
//获取异常的名称
|
|
//获取异常的名称
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
userMap.put(dictLabel, num + 1);
|
|
userMap.put(dictLabel, num + 1);
|
|
- } if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
- String dictLabel = map.get(kaTypePmOut);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
+ String dictLabel = dictToString(kaTypePmOut);
|
|
//获取异常的名称
|
|
//获取异常的名称
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
Integer num = (Integer) userMap.get(dictLabel);
|
|
userMap.put(dictLabel, num + 1);
|
|
userMap.put(dictLabel, num + 1);
|
|
@@ -331,7 +360,7 @@ public class KaoQinController extends BaseController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return AjaxResult.success(list);
|
|
|
|
|
|
+ return list;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -342,15 +371,15 @@ public class KaoQinController extends BaseController {
|
|
@PreAuthorize("@ss.hasPermi('kaoqin:statistics:dayAbnormal')")
|
|
@PreAuthorize("@ss.hasPermi('kaoqin:statistics:dayAbnormal')")
|
|
@GetMapping("/day/abnormal")
|
|
@GetMapping("/day/abnormal")
|
|
public AjaxResult dayAbnormal(KaoqinRecord kaoqinRecord) {
|
|
public AjaxResult dayAbnormal(KaoqinRecord kaoqinRecord) {
|
|
- if(StringUtils.isEmpty(kaoqinRecord.getKaTime())){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(kaoqinRecord.getKaTime())) {
|
|
kaoqinRecord.setKaTime(DateUtils.getDate());
|
|
kaoqinRecord.setKaTime(DateUtils.getDate());
|
|
}
|
|
}
|
|
Map<String, Object> map = new HashMap();
|
|
Map<String, Object> map = new HashMap();
|
|
//查询当天考勤数据
|
|
//查询当天考勤数据
|
|
Map<String, Long> todayMap = day(kaoqinRecord);
|
|
Map<String, Long> todayMap = day(kaoqinRecord);
|
|
//查询昨天考勤数据
|
|
//查询昨天考勤数据
|
|
- //获取昨天日期
|
|
|
|
- String yesterday = DateUtils.getYesterday(kaoqinRecord.getKaTime());
|
|
|
|
|
|
+ //获取昨天日期
|
|
|
|
+ String yesterday = DateUtils.getYesterday(kaoqinRecord.getKaTime());
|
|
kaoqinRecord.setKaTime(yesterday);
|
|
kaoqinRecord.setKaTime(yesterday);
|
|
Map<String, Long> yesterdayMap = day(kaoqinRecord);
|
|
Map<String, Long> yesterdayMap = day(kaoqinRecord);
|
|
for (String s : todayMap.keySet()) {
|
|
for (String s : todayMap.keySet()) {
|
|
@@ -364,23 +393,24 @@ public class KaoQinController extends BaseController {
|
|
BigDecimal yesterdayBd = new BigDecimal(yesterdayMap.get(s));
|
|
BigDecimal yesterdayBd = new BigDecimal(yesterdayMap.get(s));
|
|
BigDecimal fz = todayBd.subtract(yesterdayBd);
|
|
BigDecimal fz = todayBd.subtract(yesterdayBd);
|
|
if (fz.compareTo(BigDecimal.ZERO) != 0) {
|
|
if (fz.compareTo(BigDecimal.ZERO) != 0) {
|
|
- BigDecimal percentage = BigDecimal.ZERO;
|
|
|
|
|
|
+ BigDecimal percentage = BigDecimal.ZERO;
|
|
//昨天数据>0
|
|
//昨天数据>0
|
|
- if (yesterdayBd.compareTo(BigDecimal.ZERO)>0) {
|
|
|
|
- percentage = fz.multiply(new BigDecimal("100"))
|
|
|
|
|
|
+ if (yesterdayBd.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ percentage = fz.multiply(new BigDecimal("100"))
|
|
.divide(yesterdayBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.divide(yesterdayBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
}
|
|
}
|
|
zz = percentage + "%";
|
|
zz = percentage + "%";
|
|
zt = "1";
|
|
zt = "1";
|
|
- if(percentage.compareTo(BigDecimal.ZERO) < 0){
|
|
|
|
|
|
+ if (percentage.compareTo(BigDecimal.ZERO) < 0) {
|
|
zt = "2";
|
|
zt = "2";
|
|
- zz = (percentage.multiply(new BigDecimal("-1")))+ "%";;
|
|
|
|
|
|
+ zz = (percentage.multiply(new BigDecimal("-1"))) + "%";
|
|
|
|
+ ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
mapZj.put("bfb", zz);
|
|
mapZj.put("bfb", zz);
|
|
- mapZj.put("zf",zt);
|
|
|
|
- map.put(s,mapZj);
|
|
|
|
|
|
+ mapZj.put("zf", zt);
|
|
|
|
+ map.put(s, mapZj);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -395,7 +425,7 @@ public class KaoQinController extends BaseController {
|
|
@PreAuthorize("@ss.hasPermi('kaoqin:statistics:monthCount')")
|
|
@PreAuthorize("@ss.hasPermi('kaoqin:statistics:monthCount')")
|
|
@GetMapping("/month/count")
|
|
@GetMapping("/month/count")
|
|
public AjaxResult monthCount(KaoqinRecord kaoqinRecord) {
|
|
public AjaxResult monthCount(KaoqinRecord kaoqinRecord) {
|
|
- if(StringUtils.isEmpty(kaoqinRecord.getKaMonth())){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(kaoqinRecord.getKaMonth())) {
|
|
kaoqinRecord.setKaYear(DateUtils.getYear());
|
|
kaoqinRecord.setKaYear(DateUtils.getYear());
|
|
kaoqinRecord.setKaMonth(DateUtils.justMonth());
|
|
kaoqinRecord.setKaMonth(DateUtils.justMonth());
|
|
}
|
|
}
|
|
@@ -404,9 +434,9 @@ public class KaoQinController extends BaseController {
|
|
Map<String, Long> todayMap = day(kaoqinRecord);
|
|
Map<String, Long> todayMap = day(kaoqinRecord);
|
|
//查询昨天考勤数据
|
|
//查询昨天考勤数据
|
|
//获取上个月
|
|
//获取上个月
|
|
- kaoqinRecord.setKaMonth(String.valueOf(Integer.parseInt(kaoqinRecord.getKaMonth())-1));
|
|
|
|
- if("01".equals(kaoqinRecord.getKaMonth())){
|
|
|
|
- kaoqinRecord.setKaYear(String.valueOf(Integer.parseInt(kaoqinRecord.getKaYear())-1));
|
|
|
|
|
|
+ kaoqinRecord.setKaMonth(String.valueOf(Integer.parseInt(kaoqinRecord.getKaMonth()) - 1));
|
|
|
|
+ if ("01".equals(kaoqinRecord.getKaMonth())) {
|
|
|
|
+ kaoqinRecord.setKaYear(String.valueOf(Integer.parseInt(kaoqinRecord.getKaYear()) - 1));
|
|
kaoqinRecord.setKaMonth("12");
|
|
kaoqinRecord.setKaMonth("12");
|
|
}
|
|
}
|
|
Map<String, Long> yesterdayMap = day(kaoqinRecord);
|
|
Map<String, Long> yesterdayMap = day(kaoqinRecord);
|
|
@@ -421,23 +451,24 @@ public class KaoQinController extends BaseController {
|
|
BigDecimal yesterdayBd = new BigDecimal(yesterdayMap.get(s));
|
|
BigDecimal yesterdayBd = new BigDecimal(yesterdayMap.get(s));
|
|
BigDecimal fz = todayBd.subtract(yesterdayBd);
|
|
BigDecimal fz = todayBd.subtract(yesterdayBd);
|
|
if (fz.compareTo(BigDecimal.ZERO) != 0) {
|
|
if (fz.compareTo(BigDecimal.ZERO) != 0) {
|
|
- BigDecimal percentage = BigDecimal.ZERO;
|
|
|
|
|
|
+ BigDecimal percentage = BigDecimal.ZERO;
|
|
//昨天数据>0
|
|
//昨天数据>0
|
|
- if (yesterdayBd.compareTo(BigDecimal.ZERO)>0) {
|
|
|
|
|
|
+ if (yesterdayBd.compareTo(BigDecimal.ZERO) > 0) {
|
|
percentage = fz.multiply(new BigDecimal("100"))
|
|
percentage = fz.multiply(new BigDecimal("100"))
|
|
.divide(yesterdayBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.divide(yesterdayBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
}
|
|
}
|
|
zz = percentage + "%";
|
|
zz = percentage + "%";
|
|
zt = "1";
|
|
zt = "1";
|
|
- if(percentage.compareTo(BigDecimal.ZERO) < 0){
|
|
|
|
|
|
+ if (percentage.compareTo(BigDecimal.ZERO) < 0) {
|
|
zt = "2";
|
|
zt = "2";
|
|
- zz = (percentage.multiply(new BigDecimal("-1")))+ "%";;
|
|
|
|
|
|
+ zz = (percentage.multiply(new BigDecimal("-1"))) + "%";
|
|
|
|
+ ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
mapZj.put("bfb", zz);
|
|
mapZj.put("bfb", zz);
|
|
- mapZj.put("zf",zt);
|
|
|
|
- map.put(s,mapZj);
|
|
|
|
|
|
+ mapZj.put("zf", zt);
|
|
|
|
+ map.put(s, mapZj);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -457,13 +488,13 @@ public class KaoQinController extends BaseController {
|
|
Map<String, Long> mapCount = new HashMap();
|
|
Map<String, Long> mapCount = new HashMap();
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
//外勤打卡次数
|
|
//外勤打卡次数
|
|
- Long wq= 0L;
|
|
|
|
|
|
+ Long wq = 0L;
|
|
//迟到打卡次数
|
|
//迟到打卡次数
|
|
- Long cd= 0L;
|
|
|
|
|
|
+ Long cd = 0L;
|
|
//早退打卡次数
|
|
//早退打卡次数
|
|
- Long zt= 0L;
|
|
|
|
|
|
+ Long zt = 0L;
|
|
//缺卡打卡次数
|
|
//缺卡打卡次数
|
|
- Long qk= 0L;
|
|
|
|
|
|
+ Long qk = 0L;
|
|
//记录该月有多少次异常总数
|
|
//记录该月有多少次异常总数
|
|
Long count = 0L;
|
|
Long count = 0L;
|
|
SysDictData dictData = new SysDictData();
|
|
SysDictData dictData = new SysDictData();
|
|
@@ -475,7 +506,7 @@ public class KaoQinController extends BaseController {
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
String dictValue = sysDictDatum.getDictValue();
|
|
if (!"1".equals(dictValue)) {
|
|
if (!"1".equals(dictValue)) {
|
|
Long aLong = 0L;
|
|
Long aLong = 0L;
|
|
- map.put("num"+dictValue, aLong);
|
|
|
|
|
|
+ map.put("num" + dictValue, aLong);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
|
|
for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
|
|
@@ -484,20 +515,23 @@ public class KaoQinController extends BaseController {
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
|
|
if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
|
|
- Long aLong = map.get("num"+kaTypeAmIn);
|
|
|
|
- map.put("num"+kaTypeAmIn, aLong + 1);
|
|
|
|
|
|
+ Long aLong = map.get("num" + kaTypeAmIn);
|
|
|
|
+ map.put("num" + kaTypeAmIn, aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypeAmOut);
|
|
|
|
- map.put("num"+kaTypeAmOut, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
|
|
+ Long aLong = map.get("num" + kaTypeAmOut);
|
|
|
|
+ map.put("num" + kaTypeAmOut, aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypePmIn);
|
|
|
|
- map.put("num"+kaTypePmIn, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
|
|
|
|
+ Long aLong = map.get("num" + kaTypePmIn);
|
|
|
|
+ map.put("num" + kaTypePmIn, aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
- } if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
- Long aLong = map.get("num"+kaTypePmOut);
|
|
|
|
- map.put("num"+kaTypePmOut, aLong + 1);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
|
|
|
|
+ Long aLong = map.get("num" + kaTypePmOut);
|
|
|
|
+ map.put("num" + kaTypePmOut, aLong + 1);
|
|
count = count + 1;
|
|
count = count + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -506,10 +540,10 @@ public class KaoQinController extends BaseController {
|
|
zt = map.get("num4");
|
|
zt = map.get("num4");
|
|
qk = map.get("num5");
|
|
qk = map.get("num5");
|
|
|
|
|
|
- mapCount.put("wq",wq);
|
|
|
|
- mapCount.put("cd",cd);
|
|
|
|
- mapCount.put("zt",zt);
|
|
|
|
- mapCount.put("qk",qk);
|
|
|
|
|
|
+ mapCount.put("wq", wq);
|
|
|
|
+ mapCount.put("cd", cd);
|
|
|
|
+ mapCount.put("zt", zt);
|
|
|
|
+ mapCount.put("qk", qk);
|
|
for (String s : mapCount.keySet()) {
|
|
for (String s : mapCount.keySet()) {
|
|
Map<String, Object> mapZj = new HashMap();
|
|
Map<String, Object> mapZj = new HashMap();
|
|
mapZj.put("num", mapCount.get(s));
|
|
mapZj.put("num", mapCount.get(s));
|
|
@@ -520,14 +554,13 @@ public class KaoQinController extends BaseController {
|
|
.divide(countBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.divide(countBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
.setScale(1, RoundingMode.HALF_UP); // 再设置为一位小数
|
|
zz = percentage + "%";
|
|
zz = percentage + "%";
|
|
- mapZj.put("bfb",zz);
|
|
|
|
|
|
+ mapZj.put("bfb", zz);
|
|
mapTj.put(s, mapZj);
|
|
mapTj.put(s, mapZj);
|
|
}
|
|
}
|
|
return AjaxResult.success(mapTj);
|
|
return AjaxResult.success(mapTj);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
public Map<String, Long> day(KaoqinRecord kaoqinRecord) {
|
|
public Map<String, Long> day(KaoqinRecord kaoqinRecord) {
|
|
|
|
|
|
Map<String, Long> map = new HashMap();
|
|
Map<String, Long> map = new HashMap();
|
|
@@ -537,15 +570,15 @@ public class KaoQinController extends BaseController {
|
|
KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigBynew();
|
|
KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigBynew();
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
|
|
//正常打卡次数
|
|
//正常打卡次数
|
|
- Long zc= 0L;
|
|
|
|
|
|
+ Long zc = 0L;
|
|
//外勤打卡次数
|
|
//外勤打卡次数
|
|
- Long wq= 0L;
|
|
|
|
|
|
+ Long wq = 0L;
|
|
//迟到打卡次数
|
|
//迟到打卡次数
|
|
- Long cd= 0L;
|
|
|
|
|
|
+ Long cd = 0L;
|
|
//早退打卡次数
|
|
//早退打卡次数
|
|
- Long zt= 0L;
|
|
|
|
|
|
+ Long zt = 0L;
|
|
//缺卡打卡次数
|
|
//缺卡打卡次数
|
|
- Long qk= 0L;
|
|
|
|
|
|
+ Long qk = 0L;
|
|
//记录该月打卡总人数
|
|
//记录该月打卡总人数
|
|
Long count = Long.valueOf(kaoQinRecords.size());
|
|
Long count = Long.valueOf(kaoQinRecords.size());
|
|
SysDictData dictData = new SysDictData();
|
|
SysDictData dictData = new SysDictData();
|
|
@@ -569,7 +602,7 @@ public class KaoQinController extends BaseController {
|
|
todayMap.put(kaTypeAmIn, aLong + 1);
|
|
todayMap.put(kaTypeAmIn, aLong + 1);
|
|
}
|
|
}
|
|
//如果只配置了两次打卡,中间两次打卡不计入统计
|
|
//如果只配置了两次打卡,中间两次打卡不计入统计
|
|
- if("4".equals(kaoqinConfigDept.getKaNum())){
|
|
|
|
|
|
+ if ("4".equals(kaoqinConfigDept.getKaNum())) {
|
|
if (StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
if (StringUtils.isNotBlank(kaTypeAmOut)) {
|
|
Long aLong = todayMap.get(kaTypeAmOut);
|
|
Long aLong = todayMap.get(kaTypeAmOut);
|
|
todayMap.put(kaTypeAmOut, aLong + 1);
|
|
todayMap.put(kaTypeAmOut, aLong + 1);
|
|
@@ -590,15 +623,31 @@ public class KaoQinController extends BaseController {
|
|
zt = todayMap.get("4");
|
|
zt = todayMap.get("4");
|
|
qk = todayMap.get("5");
|
|
qk = todayMap.get("5");
|
|
|
|
|
|
- map.put("zs",count);
|
|
|
|
- map.put("zc",zc);
|
|
|
|
- map.put("wq",wq);
|
|
|
|
- map.put("cd",cd);
|
|
|
|
- map.put("zt",zt);
|
|
|
|
- map.put("qk",qk);
|
|
|
|
|
|
+ map.put("zs", count);
|
|
|
|
+ map.put("zc", zc);
|
|
|
|
+ map.put("wq", wq);
|
|
|
|
+ map.put("cd", cd);
|
|
|
|
+ map.put("zt", zt);
|
|
|
|
+ map.put("qk", qk);
|
|
return map;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public String dictToString(String value) {
|
|
|
|
+ String str = "";
|
|
|
|
+ if ("1".equals(value)) {
|
|
|
|
+ str = "ydk";
|
|
|
|
+ } else if ("2".equals(value)) {
|
|
|
|
+ str = "cd";
|
|
|
|
+ } else if ("3".equals(value)) {
|
|
|
|
+ str = "wq";
|
|
|
|
+ } else if ("4".equals(value)) {
|
|
|
|
+ str = "zt";
|
|
|
|
+ } else if ("5".equals(value)) {
|
|
|
|
+ str = "qk";
|
|
|
|
+ }
|
|
|
|
+ return str;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 本周补卡统计
|
|
* 本周补卡统计
|
|
*/
|
|
*/
|
|
@@ -615,13 +664,13 @@ public class KaoQinController extends BaseController {
|
|
List<Integer> nums = new ArrayList<>();
|
|
List<Integer> nums = new ArrayList<>();
|
|
for (int i = 0; i < weekDates.size(); i++) {
|
|
for (int i = 0; i < weekDates.size(); i++) {
|
|
int num = 0;
|
|
int num = 0;
|
|
- if (cardMap.get(weekDates.get(i))!=null && !cardMap.get(weekDates.get(i)).isEmpty()) {
|
|
|
|
|
|
+ if (cardMap.get(weekDates.get(i)) != null && !cardMap.get(weekDates.get(i)).isEmpty()) {
|
|
num = cardMap.get(weekDates.get(i)).size();
|
|
num = cardMap.get(weekDates.get(i)).size();
|
|
}
|
|
}
|
|
nums.add(num);
|
|
nums.add(num);
|
|
}
|
|
}
|
|
- map.put("x",weekName);
|
|
|
|
- map.put("y",nums);
|
|
|
|
|
|
+ map.put("x", weekName);
|
|
|
|
+ map.put("y", nums);
|
|
return AjaxResult.success(map);
|
|
return AjaxResult.success(map);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -641,14 +690,41 @@ public class KaoQinController extends BaseController {
|
|
List<Integer> nums = new ArrayList<>();
|
|
List<Integer> nums = new ArrayList<>();
|
|
for (int i = 0; i < weekDates.size(); i++) {
|
|
for (int i = 0; i < weekDates.size(); i++) {
|
|
int num = 0;
|
|
int num = 0;
|
|
- RecordLeave recordLeave = recordLeaves.get(i);
|
|
|
|
- if(DateUtils.isDateBetween(DateUtils.convertStringToDate(weekDates.get(i)), recordLeave.getStartTime(), recordLeave.getEndTime())) {
|
|
|
|
- num++;
|
|
|
|
|
|
+ if (recordLeaves != null && !recordLeaves.isEmpty()) {
|
|
|
|
+ for (RecordLeave recordLeaf : recordLeaves) {
|
|
|
|
+ if (DateUtils.isDateBetween(DateUtils.convertStringToDate(weekDates.get(i)), recordLeaf.getStartTime(), recordLeaf.getEndTime())) {
|
|
|
|
+ num++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
nums.add(num);
|
|
nums.add(num);
|
|
}
|
|
}
|
|
- map.put("x",weekName);
|
|
|
|
- map.put("y",nums);
|
|
|
|
|
|
+ map.put("x", weekName);
|
|
|
|
+ map.put("y", nums);
|
|
return AjaxResult.success(map);
|
|
return AjaxResult.success(map);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 导出人员打卡情况报表
|
|
|
|
+ */
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('kaoqin:statistics:export')")
|
|
|
|
+ @Log(title = "导出人员打卡情况报表", businessType = BusinessType.EXPORT)
|
|
|
|
+ @PostMapping("/export")
|
|
|
|
+ public void export(HttpServletResponse response, KaoqinRecord kaoqinRecord) {
|
|
|
|
+ List<Map<String, Object>> maps = kqRecord(kaoqinRecord);
|
|
|
|
+ List<BaobiaoVo> baobiaoVoList = new ArrayList<>();
|
|
|
|
+ try {
|
|
|
|
+ for (Map<String, Object> map : maps) {
|
|
|
|
+
|
|
|
|
+ BaobiaoVo baobiaoVo = MapToObjectUtils.populate(map, BaobiaoVo.class);
|
|
|
|
+ baobiaoVoList.add(baobiaoVo);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
+ }
|
|
|
|
+ ExcelUtil<BaobiaoVo> util = new ExcelUtil<BaobiaoVo>(BaobiaoVo.class);
|
|
|
|
+ util.exportExcel(response, baobiaoVoList, "考勤统计数据");
|
|
|
|
+ }
|
|
}
|
|
}
|