LIVE_YE 6 dní pred
rodič
commit
5e9e2b5872
18 zmenil súbory, kde vykonal 317 pridanie a 25 odobranie
  1. 214 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoQinController.java
  2. 4 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoqinConfigController.java
  3. 12 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoqinRecordController.java
  4. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/qinjia/RecordLeaveController.java
  5. 11 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
  6. 10 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
  7. 24 0
      ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
  8. 2 3
      ruoyi-system/src/main/java/com/ruoyi/system/domain/CardReplacementRecord.java
  9. 11 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordLeave.java
  10. 2 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/KaoqinConfigMapper.java
  11. 2 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IKaoqinConfigService.java
  12. 1 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/IRecordLeaveService.java
  13. 6 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/KaoqinConfigServiceImpl.java
  14. 3 13
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordLeaveServiceImpl.java
  15. 1 1
      ruoyi-system/src/main/resources/mapper/system/CardReplacementRecordMapper.xml
  16. 4 0
      ruoyi-system/src/main/resources/mapper/system/KaoqinConfigMapper.xml
  17. 1 1
      ruoyi-system/src/main/resources/mapper/system/KaoqinRecordMapper.xml
  18. 7 3
      ruoyi-system/src/main/resources/mapper/system/RecordLeaveMapper.xml

+ 214 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoQinController.java

@@ -4,6 +4,8 @@ import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.KaoqinConfig;
 import com.ruoyi.system.domain.KaoqinRecord;
@@ -12,8 +14,11 @@ import com.ruoyi.system.service.IKaoqinConfigService;
 import com.ruoyi.system.service.IKaoqinRecordService;
 import com.ruoyi.system.service.ISysDictDataService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -38,12 +43,16 @@ public class KaoQinController extends BaseController {
     @Autowired
     private ISysDictDataService dictDataService;
 
+    @Autowired
+    private RedisCache redisCache;
+
     /**
      * 定位打卡提供计算参数
      *
      * @param kaoqinConfig
      * @return
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:daKa:param')")
     @GetMapping(value = "/daKa")
     public AjaxResult daKa(KaoqinConfig kaoqinConfig) {
         //先去 根据当前人员的部门id查询是否有规则,没有再去查祖籍列表
@@ -83,6 +92,7 @@ public class KaoQinController extends BaseController {
      * 包括所有异常的数量
      * 本月考勤记录的异常分类数量
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:statistics:abnormal')")
     @GetMapping("/abnormal")
     public AjaxResult abnormal(KaoqinRecord kaoqinRecord) {
         //传入userId/年 和 月份 设置查询异常的考勤
@@ -133,6 +143,7 @@ public class KaoQinController extends BaseController {
     /**
      * 考勤日历
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:statistics:calendar')")
     @GetMapping("/calendar")
     public AjaxResult calendar(KaoqinRecord kaoqinRecord) {
         //根据打卡人id和月份去找对应的打卡记录
@@ -262,4 +273,207 @@ public class KaoQinController extends BaseController {
         }
         return AjaxResult.success(list);
     }
+
+    /**
+     * 查询考勤异常数据信息
+     * 包括所有异常的数量
+     * 今日打卡统计
+     */
+    @PreAuthorize("@ss.hasPermi('kaoqin:statistics:dayAbnormal')")
+    @GetMapping("/day/abnormal")
+    public AjaxResult dayAbnormal(KaoqinRecord kaoqinRecord) {
+        if(StringUtils.isEmpty(kaoqinRecord.getKaTime())){
+            kaoqinRecord.setKaTime(DateUtils.getDate());
+        }
+        Map<String, Object> map = new HashMap();
+        //查询当天考勤数据
+        Map<String, Long> todayMap = day(kaoqinRecord);
+        //查询昨天考勤数据
+       //获取昨天日期
+        String  yesterday = DateUtils.getYesterday(kaoqinRecord.getKaTime());
+        kaoqinRecord.setKaTime(yesterday);
+        Map<String, Long> yesterdayMap = day(kaoqinRecord);
+        for (String s : todayMap.keySet()) {
+            Map<String, Object> mapZj = new HashMap();
+            String zz = "0%";
+            //1:正,2负
+            String zt = "1";
+            mapZj.put("num", todayMap.get(s));
+
+            BigDecimal todayBd = new BigDecimal(todayMap.get(s));
+            BigDecimal yesterdayBd = new BigDecimal(yesterdayMap.get(s));
+            BigDecimal fz = todayBd.subtract(yesterdayBd);
+            BigDecimal percentage = fz.multiply(new BigDecimal("100"))
+                    .divide(yesterdayBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
+                    .setScale(1, RoundingMode.HALF_UP);     // 再设置为一位小数
+            zz = percentage.toString() + "%";
+            if(percentage.compareTo(BigDecimal.ZERO) < 0){
+                zt = "2";
+                zz = (percentage.multiply(new BigDecimal("-1"))).toString()+ "%";;
+            }
+            mapZj.put("bfb", zz);
+            mapZj.put("zf",zt);
+            map.put(s,mapZj);
+        }
+
+
+        return AjaxResult.success(map);
+    }
+
+    /**
+     * 查询考勤异常数据信息
+     * 包括所有异常的数量
+     * 月打卡统计
+     */
+    @PreAuthorize("@ss.hasPermi('kaoqin:statistics:monthyAbnormal')")
+    @GetMapping("/month/abnormal")
+    public AjaxResult monthAbnormal(KaoqinRecord kaoqinRecord) {
+        Map<String, Object> mapTj = new HashMap();
+        Map<String, Long> mapCount = new HashMap();
+        List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
+        //外勤打卡次数
+        Long wq= 0L;
+        //迟到打卡次数
+        Long cd= 0L;
+        //早退打卡次数
+        Long zt= 0L;
+        //缺卡打卡次数
+        Long qk= 0L;
+        //记录该月有多少次异常总数
+        Long count = 0L;
+        SysDictData dictData = new SysDictData();
+        dictData.setDictType("kaoqin_abnormal");
+        List<SysDictData> sysDictData = dictDataService.selectDictDataList(dictData);
+        Map<String, Long> map = new HashMap();
+        for (SysDictData sysDictDatum : sysDictData) {
+            //获取异常的值
+            String dictValue = sysDictDatum.getDictValue();
+            if (!"1".equals(dictValue)) {
+                Long aLong = 0L;
+                map.put(dictValue, aLong);
+            }
+        }
+        for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
+            String kaTypeAmIn = kaoQinRecord.getKaTypeAmIn();
+            String kaTypeAmOut = kaoQinRecord.getKaTypeAmOut();
+            String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
+            String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
+            if (!"1".equals(kaTypeAmIn) && StringUtils.isNotBlank(kaTypeAmIn)) {
+                Long aLong = map.get(kaTypeAmIn);
+                map.put(kaTypeAmIn, aLong + 1);
+                count = count + 1;
+            }  if (!"1".equals(kaTypeAmOut) && StringUtils.isNotBlank(kaTypeAmOut)) {
+                Long aLong = map.get(kaTypeAmOut);
+                map.put(kaTypeAmOut, aLong + 1);
+                count = count + 1;
+            }  if (!"1".equals(kaTypePmIn) && StringUtils.isNotBlank(kaTypePmIn)) {
+                Long aLong = map.get(kaTypePmIn);
+                map.put(kaTypePmIn, aLong + 1);
+                count = count + 1;
+            }  if (!"1".equals(kaTypePmOut) && StringUtils.isNotBlank(kaTypePmOut)) {
+                Long aLong = map.get(kaTypePmOut);
+                map.put(kaTypePmOut, aLong + 1);
+                count = count + 1;
+            }
+        }
+        wq = map.get("3");
+        cd = map.get("2");
+        zt = map.get("4");
+        qk = map.get("5");
+
+        mapCount.put("wq",wq);
+        mapCount.put("cd",cd);
+        mapCount.put("zt",zt);
+        mapCount.put("qk",qk);
+        for (String s : mapCount.keySet()) {
+            Map<String, Object> mapZj = new HashMap();
+            mapZj.put("num", mapCount.get(s));
+            String zz = "0%";
+            BigDecimal countBd = new BigDecimal(count);
+            BigDecimal num = new BigDecimal(mapCount.get(s));
+            BigDecimal percentage = num.multiply(new BigDecimal("100"))
+                    .divide(countBd, 3, RoundingMode.HALF_UP) // 先计算百分比并保留三位小数以处理可能的精度问题
+                    .setScale(1, RoundingMode.HALF_UP);     // 再设置为一位小数
+            zz = percentage.toString() + "%";
+            mapZj.put("bfb",zz);
+            mapTj.put(s, mapZj);
+        }
+        return AjaxResult.success(map);
+    }
+
+
+
+    public Map<String, Long> day(KaoqinRecord kaoqinRecord) {
+
+        Map<String, Long> map = new HashMap();
+        //传入日期设置查询异常的考勤
+        //kaoqinRecord.setKaStatus("2");
+        //查找最新的考勤规则
+        KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigBynew();
+        List<KaoqinRecord> kaoQinRecords = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
+        //正常打卡次数
+        Long zc= 0L;
+        //外勤打卡次数
+        Long wq= 0L;
+        //迟到打卡次数
+        Long cd= 0L;
+        //早退打卡次数
+        Long zt= 0L;
+        //缺卡打卡次数
+        Long qk= 0L;
+        //记录该月有多少次异常总数
+        Long count = 0L;
+        SysDictData dictData = new SysDictData();
+        dictData.setDictType("kaoqin_abnormal");
+        List<SysDictData> sysDictData = dictDataService.selectDictDataList(dictData);
+        Map<String, Long> todayMap = new HashMap();
+        for (SysDictData sysDictDatum : sysDictData) {
+            //获取异常的值
+            String dictValue = sysDictDatum.getDictValue();
+            Long aLong = 0L;
+            todayMap.put(dictValue, aLong);
+
+        }
+        for (KaoqinRecord kaoQinRecord : kaoQinRecords) {
+            String kaTypeAmIn = kaoQinRecord.getKaTypeAmIn();
+            String kaTypeAmOut = kaoQinRecord.getKaTypeAmOut();
+            String kaTypePmIn = kaoQinRecord.getKaTypePmIn();
+            String kaTypePmOut = kaoQinRecord.getKaTypePmOut();
+            if (StringUtils.isNotBlank(kaTypeAmIn)) {
+                Long aLong = todayMap.get(kaTypeAmIn);
+                todayMap.put(kaTypeAmIn, aLong + 1);
+                count = count + 1;
+            }
+            //如果只配置了两次打卡,中间两次打卡不计入统计
+            if("4".equals(kaoqinConfigDept.getKaNum())){
+                if (StringUtils.isNotBlank(kaTypeAmOut)) {
+                    Long aLong = todayMap.get(kaTypeAmOut);
+                    todayMap.put(kaTypeAmOut, aLong + 1);
+                    count = count + 1;
+                }
+                if (StringUtils.isNotBlank(kaTypePmIn)) {
+                    Long aLong = todayMap.get(kaTypePmIn);
+                    todayMap.put(kaTypePmIn, aLong + 1);
+                    count = count + 1;
+                }
+            }
+            if (StringUtils.isNotBlank(kaTypePmOut)) {
+                Long aLong = todayMap.get(kaTypePmOut);
+                todayMap.put(kaTypePmOut, aLong + 1);
+                count = count + 1;
+            }
+        }
+        zc = todayMap.get("1");
+        wq = todayMap.get("3");
+        cd = todayMap.get("2");
+        zt = todayMap.get("4");
+        qk = todayMap.get("5");
+
+        map.put("zc",zc);
+        map.put("wq",wq);
+        map.put("cd",cd);
+        map.put("zt",zt);
+        map.put("qk",qk);
+        return map;
+    }
 }

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoqinConfigController.java

@@ -36,6 +36,7 @@ public class KaoqinConfigController extends BaseController
     /**
      * 查询考勤规则配置列表
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:config:list')")
     @GetMapping("/list")
     public TableDataInfo list(KaoqinConfig kaoqinConfig)
     {
@@ -60,6 +61,7 @@ public class KaoqinConfigController extends BaseController
     /**
      * 获取考勤规则配置详细信息
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:config:query')")
     @GetMapping(value = "/{kaoqinId}")
     public AjaxResult getInfo(@PathVariable("kaoqinId") Long kaoqinId)
     {
@@ -69,6 +71,7 @@ public class KaoqinConfigController extends BaseController
     /**
      * 新增考勤规则配置
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:config:add')")
     @Log(title = "考勤规则配置", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody KaoqinConfig kaoqinConfig)
@@ -79,6 +82,7 @@ public class KaoqinConfigController extends BaseController
     /**
      * 修改考勤规则配置
      */
+    @PreAuthorize("@ss.hasPermi('kaoqin:config:edit')")
     @Log(title = "考勤规则配置", businessType = BusinessType.UPDATE)
     @PostMapping("/put")
     public AjaxResult edit(@RequestBody KaoqinConfig kaoqinConfig)

+ 12 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/kaoqin/KaoqinRecordController.java

@@ -2,6 +2,9 @@ package com.ruoyi.web.controller.kaoqin;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.domain.KaoqinConfig;
+import com.ruoyi.system.service.IKaoqinConfigService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -34,15 +37,21 @@ public class KaoqinRecordController extends BaseController
     @Autowired
     private IKaoqinRecordService kaoqinRecordService;
 
+    @Autowired
+    private IKaoqinConfigService kaoqinConfigService;
+
+
     /**
      * 查询考勤记录列表
      */
+    @PreAuthorize("@ss.hasPermi('system:record:list')")
     @GetMapping("/list")
     public TableDataInfo list(KaoqinRecord kaoqinRecord)
     {
         startPage();
         List<KaoqinRecord> list = kaoqinRecordService.selectKaoqinRecordList(kaoqinRecord);
-        return getDataTable(list);
+        KaoqinConfig kaoqinConfigDept = kaoqinConfigService.selectKaoqinConfigBynew();
+        return getDataTableNum(list,kaoqinConfigDept.getKaNum());
     }
 
     /**
@@ -71,6 +80,7 @@ public class KaoqinRecordController extends BaseController
     /**
      * 新增考勤记录
      */
+    @PreAuthorize("@ss.hasPermi('system:record:add')")
     @Log(title = "考勤记录", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody KaoqinRecord kaoqinRecord)
@@ -81,6 +91,7 @@ public class KaoqinRecordController extends BaseController
     /**
      * 修改考勤记录
      */
+    @PreAuthorize("@ss.hasPermi('system:record:edit')")
     @Log(title = "考勤记录", businessType = BusinessType.UPDATE)
     @PostMapping("/put")
     public AjaxResult edit(@RequestBody KaoqinRecord kaoqinRecord)

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/qinjia/RecordLeaveController.java

@@ -111,9 +111,9 @@ public class RecordLeaveController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:leave:audit')")
     @GetMapping(value = "/audit")
-    public AjaxResult audit(Long id, String isPass)
+    public AjaxResult audit(RecordLeave recordLeave)
     {
-        return toAjax(recordLeaveService.audit(id,isPass));
+        return toAjax(recordLeaveService.audit(recordLeave));
     }
 
     /**

+ 11 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java

@@ -90,6 +90,17 @@ public class BaseController
         return rspData;
     }
 
+    protected TableDataInfo getDataTableNum(List<?> list,String num)
+    {
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setNum(num);
+        rspData.setTotal(new PageInfo(list).getTotal());
+        return rspData;
+    }
+
     /**
      * 返回成功
      */

+ 10 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java

@@ -24,6 +24,8 @@ public class TableDataInfo implements Serializable
     /** 消息内容 */
     private String msg;
 
+    private String num;
+
     /**
      * 表格数据对象
      */
@@ -82,4 +84,12 @@ public class TableDataInfo implements Serializable
     {
         this.msg = msg;
     }
+
+    public String getNum() {
+        return num;
+    }
+
+    public void setNum(String num) {
+        this.num = num;
+    }
 }

+ 24 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -213,4 +213,28 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
     }
 
+    /***
+     * 获取传入日期的前一天日期
+     * @param dateTime
+     * @return
+     */
+    public static String getYesterday(String dateTime) {
+        SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
+        Date date = null;
+        try {
+            date = sdf.parse(dateTime);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+
+        // 往前一天
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DATE, -1);
+        Date dateMinusOneDay = calendar.getTime();
+        String dateMinusOneDayStr = sdf.format(dateMinusOneDay);
+        System.out.println("往前一天的日期: " + dateMinusOneDayStr);
+        return dateMinusOneDayStr;
+    }
+
 }

+ 2 - 3
ruoyi-system/src/main/java/com/ruoyi/system/domain/CardReplacementRecord.java

@@ -37,8 +37,8 @@ public class CardReplacementRecord extends BaseEntity
 
 
     /** 申请时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date applicationTime;
 
     /** 补卡理由 */
@@ -59,7 +59,6 @@ public class CardReplacementRecord extends BaseEntity
     /** 当前所属部门id合集 */
     private List<Long> deptIds;
 
-
     public void setId(Long id) 
     {
         this.id = id;

+ 11 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/RecordLeave.java

@@ -40,6 +40,9 @@ public class RecordLeave extends BaseEntity
     @Excel(name = "请假理由")
     private String reason;
 
+    /** 请假照片地址 */
+    private String photo;
+
     /** 部门id */
     private Long deptId;
 
@@ -235,6 +238,14 @@ public class RecordLeave extends BaseEntity
         this.reject = reject;
     }
 
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/KaoqinConfigMapper.java

@@ -63,4 +63,6 @@ public interface KaoqinConfigMapper
      * @return 结果
      */
     public int deleteKaoqinConfigByKaoqinIds(Long[] kaoqinIds);
+
+    KaoqinConfig selectKaoqinConfigBynew();
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IKaoqinConfigService.java

@@ -61,4 +61,6 @@ public interface IKaoqinConfigService
      * @return 结果
      */
     public int deleteKaoqinConfigByKaoqinId(Long kaoqinId);
+
+    KaoqinConfig selectKaoqinConfigBynew();
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/IRecordLeaveService.java

@@ -61,7 +61,7 @@ public interface IRecordLeaveService
      */
     public int deleteRecordLeaveById(Long id);
 
-    int audit(Long id, String isPass);
+    int audit(RecordLeave recordLeave);
 
     List<RecordLeave> presentList(RecordLeave recordLeave);
 }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/KaoqinConfigServiceImpl.java

@@ -70,6 +70,7 @@ public class KaoqinConfigServiceImpl implements IKaoqinConfigService
             return 0;
         }
         kaoqinConfig.setCreateTime(DateUtils.getNowDate());
+        kaoqinConfig.setUpdateTime(DateUtils.getNowDate());
         return kaoqinConfigMapper.insertKaoqinConfig(kaoqinConfig);
     }
 
@@ -120,4 +121,9 @@ public class KaoqinConfigServiceImpl implements IKaoqinConfigService
     {
         return kaoqinConfigMapper.deleteKaoqinConfigByKaoqinId(kaoqinId);
     }
+
+    @Override
+    public KaoqinConfig selectKaoqinConfigBynew() {
+        return kaoqinConfigMapper.selectKaoqinConfigBynew();
+    }
 }

+ 3 - 13
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordLeaveServiceImpl.java

@@ -79,14 +79,8 @@ public class RecordLeaveServiceImpl implements IRecordLeaveService
         recordLeave.setDeptId(user.getDeptId());
         recordLeave.setDeptName(user.getDept().getDeptName());
         recordLeave.setSubmitTime(DateUtils.getNowDate());
-        int i = recordLeaveMapper.insertRecordLeave(recordLeave);
-        List<RecordLeaveFj> recordLeaveFjList = recordLeave.getRecordLeaveFjList();
-        for (RecordLeaveFj recordLeaveFj : recordLeaveFjList) {
-            recordLeaveFj.setRecordId(String.valueOf(recordLeave.getId()));
-            recordLeaveFjMapper.insertRecordLeaveFj(recordLeaveFj);
-        }
 
-        return i;
+        return recordLeaveMapper.insertRecordLeave(recordLeave);
     }
 
     /**
@@ -99,7 +93,7 @@ public class RecordLeaveServiceImpl implements IRecordLeaveService
     public int updateRecordLeave(RecordLeave recordLeave)
     {
         RecordLeave recordLeave1 = recordLeaveMapper.selectRecordLeaveById(recordLeave.getId());
-        if("0".equals(recordLeave1.getIsPass())){
+        if(!"0".equals(recordLeave1.getIsPass())){
             throw new ServiceException("当前补卡已处理,无法修改");
         }
         recordLeave.setSubmitTime(DateUtils.getNowDate());
@@ -131,15 +125,11 @@ public class RecordLeaveServiceImpl implements IRecordLeaveService
     }
 
     @Override
-    public int audit(Long id, String isPass) {
+    public int audit(RecordLeave recordLeave) {
         //获取当前人员信息
         SysUser user = SecurityUtils.getLoginUser().getUser();
-
-        RecordLeave recordLeave = new RecordLeave();
-        recordLeave.setId(id);
         recordLeave.setExaminersId(user.getUserId());
         recordLeave.setExaminersName(user.getNickName());
-        recordLeave.setIsPass(isPass);
         return recordLeaveMapper.updateRecordLeave(recordLeave);
     }
 

+ 1 - 1
ruoyi-system/src/main/resources/mapper/system/CardReplacementRecordMapper.xml

@@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userName != null  and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
             <if test="deptId != null  and deptId != 0"> and dept_id = #{deptId}</if>
             <if test="deptName != null  and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
-            <if test="applicationTime != null "> and application_time = #{applicationTime}</if>
+            <if test="applicationTime != null "> and date_format(application_time,'%y%m%d') = date_format(#{applicationTime},'%y%m%d') </if>
             <if test="reason != null  and reason != ''"> and reason = #{reason}</if>
             <if test="examinersName != null  and examinersName != ''"> and examiners_name like concat('%', #{examinersName}, '%')</if>
             <if test="isPass != null  and isPass != ''"> and is_pass = #{isPass}</if>

+ 4 - 0
ruoyi-system/src/main/resources/mapper/system/KaoqinConfigMapper.xml

@@ -58,6 +58,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null and deptId != ''"> and dept_id = #{deptId}</if>
         </where>
     </select>
+    <select id="selectKaoqinConfigBynew" parameterType="Long" resultMap="KaoqinConfigResult">
+        <include refid="selectKaoqinConfigVo"/>
+        order by update_time desc limit 1
+    </select>
 
     <insert id="insertKaoqinConfig" parameterType="KaoqinConfig" useGeneratedKeys="true" keyProperty="kaoqinId">
         insert into kaoqin_config

+ 1 - 1
ruoyi-system/src/main/resources/mapper/system/KaoqinRecordMapper.xml

@@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="kaMonth != null  and kaMonth != ''"> and ka_month = #{kaMonth}</if>
             <if test="kaDay != null  and kaDay != ''"> and ka_day = #{kaDay}</if>
             <if test="kaWeek != null  and kaWeek != ''"> and ka_week = #{kaWeek}</if>
-
+            <if test="kaTime != null  and kaTime != ''"> and ka_time = #{kaTime}</if>
             <if test="startTime != null and startTime != ''"><!-- 开始时间检索 -->
                 and date_format(kaTime,'%Y%m%d') &gt;= date_format(#{startTime},'%Y%m%d')
             </if>

+ 7 - 3
ruoyi-system/src/main/resources/mapper/system/RecordLeaveMapper.xml

@@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="startTime"    column="start_time"    />
         <result property="endTime"    column="end_time"    />
         <result property="reason"    column="reason"    />
+        <result property="photo"    column="photo"    />
         <result property="deptId"    column="dept_id"    />
         <result property="deptName"    column="dept_name"    />
         <result property="absenteeId"    column="absentee_id"    />
@@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectRecordLeaveVo">
-        select id, type, start_time, end_time, reason, dept_id, dept_name, absentee_id, absentee_name, examiners_id, examiners_name, category, is_pass,reject, submit_time from record_leave
+        select id, type, start_time, end_time, reason,photo, dept_id, dept_name, absentee_id, absentee_name, examiners_id, examiners_name, category, is_pass,reject, submit_time from record_leave
     </sql>
 
     <select id="selectRecordLeaveList" parameterType="RecordLeave" resultMap="RecordLeaveResult">
@@ -35,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="examinersName != null  and examinersName != ''"> and examiners_name like concat('%', #{examinersName}, '%')</if>
             <if test="category != null  and category != ''"> and category = #{category}</if>
             <if test="isPass != null  and isPass != ''"> and is_pass = #{isPass}</if>
-            <if test="submitTime != null "> and submit_time = #{submitTime}</if>
+            <if test="submitTime != null "> and date_format(submit_time,'%y%m%d') = date_format(#{submitTime},'%y%m%d')</if>
             <if test="deptIds!=null and deptIds.size() >0">
                 and dept_id in
                 <foreach item="deptId" collection="deptIds" open="(" separator="," close=")">
@@ -43,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
         </where>
-        order by isPass,submitTime desc
+        order by is_pass,submit_time desc
     </select>
     
     <select id="selectRecordLeaveById" parameterType="Long" resultMap="RecordLeaveResult">
@@ -58,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">start_time,</if>
             <if test="endTime != null">end_time,</if>
             <if test="reason != null">reason,</if>
+            <if test="photo != null">photo,</if>
             <if test="deptId != null">dept_id,</if>
             <if test="deptName != null">dept_name,</if>
             <if test="absenteeId != null">absentee_id,</if>
@@ -74,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">#{startTime},</if>
             <if test="endTime != null">#{endTime},</if>
             <if test="reason != null">#{reason},</if>
+            <if test="photo != null">#{photo},</if>
             <if test="deptId != null">#{deptId},</if>
             <if test="deptName != null">#{deptName},</if>
             <if test="absenteeId != null">#{absenteeId},</if>
@@ -94,6 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="startTime != null">start_time = #{startTime},</if>
             <if test="endTime != null">end_time = #{endTime},</if>
             <if test="reason != null">reason = #{reason},</if>
+            <if test="photo != null">photo = #{photo},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="deptName != null">dept_name = #{deptName},</if>
             <if test="absenteeId != null">absentee_id = #{absenteeId},</if>