diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
index 2655cf63b4a43015b6225391ebad6a697c32eb54..f66ef1bce2902a60f1c92d13e18691bc6f0412c4 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
@@ -37,4 +37,15 @@ public class EffectSaveReq extends BaseReq {
      * 鎶撴媿鍥剧墖
      */
     private String snapPath;
+
+    /**
+     * 鍞竴鏍囪瘑
+     */
+    private String ext;
+
+    /**
+     * 鍚嶇О
+     */
+    private String staffName;
+
 }
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
index 0e6e8f6f5ced4599923fb079470d622888b6352e..d07b9204b2ec3f6b170416f2559274305945bcab 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
@@ -170,7 +170,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
     @PostMapping("effect/save")
     @UnAuth
     public Rest<Void> effectSave(@RequestBody EffectSaveReq req) {
-         log.info("web Api req==>{}", JSON.toJSONString(req));
+        log.info("web Api req==>{}", JSON.toJSONString(req));
         String busiDesc = "澶栭儴鏁堣兘鏂板";
         Rest rest = Rest.ok(busiDesc + "鎴愬姛锛�");
         try {
@@ -405,7 +405,6 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
         //鏁堣兘淇濆瓨
         StaffEntity staffEntity = getStaff(req.getPhone());
         PerformRulesEntity rule = getRule(req.getRuleCode());
-        checkStaffAutoConf(staffEntity, rule);
         PerformEffectRecordEntity recordEntity = new PerformEffectRecordEntity();
         recordEntity.initAttrValue();
         recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue());
@@ -426,6 +425,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
         recordEntity.setDeductPerson("绯荤粺绠$悊鍛�");
         recordEntity.setDeductTime(new Date());
         recordEntity.setWorkNum(staffEntity.getWorkNum());
+        recordEntity.setRemark(req.getExt());
 
         recordEntity.setWindowNum(req.getWindowNum());
 
@@ -506,13 +506,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
         PerformRulesEntity rule = rulesService.getCache(ruleCode);
         if (ObjectUtils.isEmpty(rule))
             throw new AppException(String.format("褰撳墠鎵嬫満鍙风爜鏈壘鍒板尮閰嶇殑鍛樺伐锛乺ule:%s", ruleCode));
-
         return rule;
     }
 
     private StaffEntity getStaff(String phone) {
         StaffEntity staffEntity = staffService.selectOne(new StaffQuery().phoneNumber(phone));
-        if (ObjectUtils.isEmpty(staffEntity)){
+        if (ObjectUtils.isEmpty(staffEntity)) {
             throw new AppException(String.format("褰撳墠鎵嬫満鍙风爜鏈壘鍒板尮閰嶇殑鍛樺伐锛乸hone:%s", phone));
         }
 
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/ParamKey.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/ParamKey.java
index 0f8fdaf7a66aa5f88ddb3bd84a84923fc479cf9e..da9857a528dc09233fc922d121bd65e33a3e757c 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/ParamKey.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/ParamKey.java
@@ -29,4 +29,6 @@ public class ParamKey {
 
     public static String SYS_PARAM_BELONG = "belong";
 
+    public static String SYS_PARAM_XNJC_URL = "xnjc_url";
+
 }
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java
index 8ee6d48db638f7af17b1a1dd8ccf8cad94c0f074..0ef40d55b5bb3fd42493b0be9ef55b99970c12e4 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java
@@ -1,29 +1,38 @@
 package com.mortals.xhx.module.perform.service.impl;
 
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.mortals.framework.ap.GlobalSysInfo;
+import com.mortals.framework.common.Rest;
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.model.Context;
+import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
+import com.mortals.xhx.busiz.h5.req.EffectSaveReq;
+import com.mortals.xhx.busiz.h5.rsp.ApiResp;
 import com.mortals.xhx.common.code.*;
 import com.mortals.xhx.common.utils.BeanUtil;
 import com.mortals.xhx.module.check.model.CheckEffectRecordEntity;
 import com.mortals.xhx.module.check.service.CheckEffectRecordService;
-import com.mortals.xhx.module.perform.model.PerformComplainRecordEntity;
-import com.mortals.xhx.module.perform.model.PerformEffectRecordQuery;
-import com.mortals.xhx.module.perform.model.PerformRulesEntity;
-import com.mortals.xhx.module.perform.service.PerformRulesService;
-import com.mortals.xhx.module.perform.service.PerformStaffConfService;
+import com.mortals.xhx.module.perform.dao.PerformEffectRecordDao;
+import com.mortals.xhx.module.perform.model.*;
+import com.mortals.xhx.module.perform.service.*;
 import com.mortals.xhx.module.staff.model.StaffEntity;
+import com.mortals.xhx.module.staff.model.StaffQuery;
 import com.mortals.xhx.module.staff.service.StaffService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
-import com.mortals.framework.exception.AppException;
-import com.mortals.framework.model.Context;
-import com.mortals.xhx.module.perform.dao.PerformEffectRecordDao;
-import com.mortals.xhx.module.perform.model.PerformEffectRecordEntity;
-import com.mortals.xhx.module.perform.service.PerformEffectRecordService;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.ObjectUtils;
 
-import java.util.Date;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+import static com.mortals.xhx.common.key.ParamKey.SYS_PARAM_XNJC_URL;
 
 /**
  * PerformEffectRecordService
@@ -38,22 +47,27 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
 
     @Autowired
     private CheckEffectRecordService checkEffectRecordService;
-
+    @Autowired
+    private PerformRulesCategoryService categoryService;
     @Autowired
     private PerformRulesService rulesService;
     @Autowired
     private StaffService staffService;
     @Autowired
     private PerformStaffConfService performStaffConfService;
+    @Autowired
+    private PerformStaffConfDetailService performStaffConfDetailService;
+    @Autowired
+    private PerformErrorRecordService errorRecordService;
 
     @Override
     protected void saveBefore(PerformEffectRecordEntity entity, Context context) throws AppException {
-        updateStaffRuleNames(entity,context);
+        updateStaffRuleNames(entity, context);
     }
 
     @Override
     protected void updateBefore(PerformEffectRecordEntity entity, Context context) throws AppException {
-        updateStaffRuleNames(entity,context);
+        updateStaffRuleNames(entity, context);
     }
 
 
@@ -69,7 +83,7 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
             entity.setDeptName(staffCache == null ? "" : staffCache.getDeptName());
         }
         entity.setDeductTime(new Date());
-        if(ObjectUtils.isEmpty(entity.getDeductPerson())){
+        if (ObjectUtils.isEmpty(entity.getDeductPerson())) {
             entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName());
         }
     }
@@ -81,15 +95,15 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
         BeanUtils.copyProperties(entity, checkEffectRecordEntity, BeanUtil.getNullPropertyNames(entity));
         checkEffectRecordEntity.setId(null);
         checkEffectRecordEntity.setRecordId(entity.getId());
-        if(performStaffConfService.checkRules(entity.getStaffId(),entity.getDeptId(),entity.getRuleId())){
+        if (performStaffConfService.checkRules(entity.getStaffId(), entity.getDeptId(), entity.getRuleId())) {
             checkEffectRecordEntity.setCheckStatus(CheckStatusEnum.宸插鐞�.getValue());
-            if(checkEffectRecordEntity.getSubAddType()== SubAddTypeEnum.澧炲姞.getValue()){
+            if (checkEffectRecordEntity.getSubAddType() == SubAddTypeEnum.澧炲姞.getValue()) {
                 checkEffectRecordEntity.setCheckResult(CheckResultAddEnum.鏍告煡鍔犲垎.getValue());
-            }else {
+            } else {
                 checkEffectRecordEntity.setCheckResult(CheckResultSubEnum.鏍告煡鎵e垎.getValue());
             }
             checkEffectRecordEntity.setUpdateTime(new Date());
-        }else {
+        } else {
             checkEffectRecordEntity.setCheckStatus(CheckStatusEnum.鏈鐞�.getValue());      //闈炶嚜鍔ㄦ墸鍒嗙浉璁剧疆涓烘湭澶勭悊
         }
         checkEffectRecordService.save(checkEffectRecordEntity, context);
@@ -116,7 +130,133 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
 
     @Override
     public void syncEffectRecord(PerformEffectRecordQuery query, Context context) {
+        log.info("鍚屾鏁堣兘缁╂晥璁板綍寮€濮�");
+        String phpInUrl = GlobalSysInfo.getParamValue(SYS_PARAM_XNJC_URL, "http://127.0.0.1:11039/zwfw_api_xnjc");
+        String xnjcUrl = phpInUrl + "/api/kq_alert/leaveList";
+        Map<String, Object> params = new HashMap<>();
+        params.put("start", query.getHappenTimeStart());
+        params.put("end", query.getHappenTimeEnd());
+
+        String resp = null;
+        try {
+            resp = HttpUtil.createPost(xnjcUrl).form(params).timeout(60000).execute().body();
+            if (ObjectUtils.isEmpty(resp)) throw new AppException("璇锋眰澶辫触锛�");
+            ApiResp<List<EffectSaveReq>> rest = JSON.parseObject(resp, new TypeReference<ApiResp<List<EffectSaveReq>>>() {
+            });
+            //璁板綍淇濆瓨
+            if (rest.getCode() == 0) {
+                List<EffectSaveReq> list = rest.getData();
+                for (EffectSaveReq effectSaveReq : list) {
+                    boolean isMobile = Validator.isMobile(effectSaveReq.getPhone());
+                    if (!isMobile) continue;
+                    if (ObjectUtils.isEmpty(effectSaveReq.getRuleCode())) continue;
+                    if (ObjectUtils.isEmpty(effectSaveReq.getPhone())) {
+                        //閫氳繃鍚嶇О鏌ヨ鍛樺伐锛屽啀鐪嬫槸鍚︽湁鍖归厤鐨�
+                        if (!ObjectUtils.isEmpty(effectSaveReq.getStaffName())) {
+                            StaffQuery staffQuery = new StaffQuery();
+                            staffQuery.setName(effectSaveReq.getStaffName());
+                            StaffEntity staffEntity = staffService.selectOne(staffQuery);
+                            if (!ObjectUtils.isEmpty(staffEntity)) {
+                                effectSaveReq.setPhone(staffEntity.getPhoneNumber());
+                            }
+                        } else {
+                            continue;
+                        }
+                    }
+                    Long ruleId = null;
+                    PerformRulesEntity rule = rulesService.getCache(effectSaveReq.getRuleCode());
+                    if (ObjectUtils.isEmpty(rule)) {
+                        ruleId = rule.getId();
+                    }
+                    //鏌ヨ鏄惁瀛樺湪 濡傛灉娌℃湁 鍒欎繚瀛�
+                    PerformEffectRecordQuery effectRecordQuery = new PerformEffectRecordQuery();
+                    effectRecordQuery.setHappenTime(effectSaveReq.getHappenTime());
+                    effectRecordQuery.setWindowNum(effectSaveReq.getWindowNum());
+                    if (!ObjectUtils.isEmpty(ruleId)) {
+                        effectRecordQuery.setRuleId(ruleId);
+                    }
+                    //  effectRecordQuery.setRemark(effectSaveReq.getExt());
+                    int count = this.count(effectRecordQuery, context);
+                    if (count > 0) continue;
+                    //淇濆瓨
+                    effect(effectSaveReq);
+                }
+            }
+        } catch (Exception e) {
+            log.error("寮傚父:", e);
+        }
+
+
+    }
+
+
+    private boolean effect(EffectSaveReq req) throws AppException {
+        //鏁堣兘淇濆瓨
+        StaffEntity staffEntity = getStaff(req.getPhone());
+        PerformRulesEntity rule = getRule(req.getRuleCode());
+
+        PerformEffectRecordEntity recordEntity = new PerformEffectRecordEntity();
+        recordEntity.initAttrValue();
+        recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue());
+        BeanUtils.copyProperties(req, recordEntity);
+        recordEntity.setStaffId(staffEntity.getId());
+        recordEntity.setStaffName(staffEntity.getName());
+        recordEntity.setWorkNum(staffEntity.getWorkNum());
+        recordEntity.setDeptId(staffEntity.getDeptId());
+        recordEntity.setDeptName(staffEntity.getDeptName());
+        recordEntity.setSalaId(staffEntity.getSalaId());
+        recordEntity.setSalaName(staffEntity.getSalaName());
+        recordEntity.setSubAddType(rule.getSubAddType());
+        recordEntity.setScore(rule.getScore());
+        recordEntity.setRuleId(rule.getId());
+        recordEntity.setRuleName(rule.getName());
+        recordEntity.setCategoryId(rule.getCategoryId());
+        recordEntity.setCategoryName(rule.getCategoryName());
+        recordEntity.setDeductPerson("绯荤粺绠$悊鍛�");
+        recordEntity.setDeductTime(new Date());
+        recordEntity.setWorkNum(staffEntity.getWorkNum());
+        recordEntity.setRemark(req.getExt());
+        recordEntity.setWindowNum(req.getWindowNum());
+        recordEntity.setCreateUserId(1L);
+        recordEntity.setCreateTime(new Date());
+        PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId());
+        recordEntity.setCategoryName(categoryEntity == null ? "" : categoryEntity.getName());
+        PerformEffectRecordEntity save = this.save(recordEntity);
+        return save.newEntity();
+    }
+
+
+    private void checkStaffAutoConf(StaffEntity staffEntity, PerformRulesEntity rule) {
+        Boolean rulePass = false;
+        //鏍¢獙褰撳墠鍛樺伐鏄惁瀛樺湪鑷姩瑙勫垯涓�
+        List<PerformStaffConfEntity> performStaffConfEntities = performStaffConfService.find(new PerformStaffConfQuery());
+        for (PerformStaffConfEntity performStaffConfEntity : performStaffConfEntities) {
+            String staffIds = performStaffConfEntity.getStaffIds();
+            Set<String> split = StrUtil.split(staffIds, ",").stream().collect(Collectors.toSet());
+            if (split.contains(staffEntity.getId().toString())) {
+                //鏌ヨ褰撳墠瑙勫垯
+                List<PerformStaffConfDetailEntity> staffConfDetailEntities = performStaffConfDetailService.find(new PerformStaffConfDetailQuery().staffConfId(performStaffConfEntity.getId()));
+                for (PerformStaffConfDetailEntity staffConfDetailEntity : staffConfDetailEntities) {
+                    if (staffConfDetailEntity.getRuleId() == rule.getId()) {
+                        rulePass = true;
+                        break;
+                    }
+                }
+            }
+            if (rulePass) break;
+        }
+        if (rulePass) throw new AppException("褰撳墠鐢ㄦ埛涓庣哗鏁堣鍒欐湭閰嶇疆鑷姩鏍告煡锛岃鍦ㄥ悗鍙伴厤缃悗鍐嶆柊澧烇紒");
+    }
+
+
+    private PerformRulesEntity getRule(String ruleCode) {
+        PerformRulesEntity rule = rulesService.getCache(ruleCode);
+        return rule;
+    }
 
+    private StaffEntity getStaff(String phone) {
+        StaffEntity staffEntity = staffService.selectOne(new StaffQuery().phoneNumber(phone));
+        return staffEntity;
     }
 
 }
\ No newline at end of file
diff --git a/attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml b/attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml
index 0dcbd52e02d63b84a0253a4849c1c823590e6181..f327b4cec6ecde9ff913284783ee3e8ea1736ac7 100644
--- a/attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml
+++ b/attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml
@@ -13,8 +13,8 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND errorTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND errorTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
         SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime,deductTime,4 AS checkType ,'effect' AS performType,updateTime FROM mortals_xhx_check_effect_record WHERE 1=1
@@ -24,8 +24,8 @@
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND happenTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND happenTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
         SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,6 AS checkType ,'complain' AS performType,updateTime FROM mortals_xhx_check_complain_record WHERE 1=1
@@ -35,8 +35,8 @@
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND complainTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND complainTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
         SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName, subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,3 AS checkType ,'gowork' AS performType,updateTime FROM mortals_xhx_check_gowork_record WHERE 1=1
@@ -46,8 +46,8 @@
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND goworkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND goworkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
         SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,2 AS checkType ,'review' AS performType,updateTime FROM mortals_xhx_check_review_record WHERE 1=1
@@ -58,8 +58,8 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND reviewTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND reviewTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
         SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,5 AS checkType ,'other' AS performType,updateTime FROM mortals_xhx_check_other_record WHERE 1=1
@@ -70,8 +70,8 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND happenTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND happenTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         ) AS a
         where 1=1
@@ -94,7 +94,7 @@
 
     <select id="getListCount" parameterType="com.mortals.xhx.module.check.model.CheckAllRecordQuery" resultType="int">
         SELECT count(1) FROM (
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime,subAddType,score,subMethod,checkTime, deductTime,1 AS checkType ,'attend' AS performType,updateTime FROM mortals_xhx_check_attend_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime,deductTime,1 AS checkType ,'attend' AS performType,updateTime FROM mortals_xhx_check_attend_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
@@ -102,47 +102,44 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND errorTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND errorTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime,subAddType,score,subMethod,checkTime, deductTime,4 AS checkType ,'effect' AS performType,updateTime FROM mortals_xhx_check_effect_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime,deductTime,4 AS checkType ,'effect' AS performType,updateTime FROM mortals_xhx_check_effect_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND happenTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND happenTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime,subAddType,score,subMethod,checkTime,deductTime,6 AS checkType ,'complain' AS performType,updateTime FROM mortals_xhx_check_complain_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,6 AS checkType ,'complain' AS performType,updateTime FROM mortals_xhx_check_complain_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND complainTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND complainTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime,subAddType,score,subMethod,checkTime, deductTime,3 AS checkType ,'gowork' AS performType,updateTime FROM mortals_xhx_check_gowork_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName, subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,3 AS checkType ,'gowork' AS performType,updateTime FROM mortals_xhx_check_gowork_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
         <if test="staffId != null and staffId!=''"> AND staffId = #{staffId} </if>
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
-
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND goworkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND goworkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime, subAddType,score,subMethod,checkTime, deductTime,2 AS checkType ,'review' AS performType,updateTime FROM mortals_xhx_check_review_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,2 AS checkType ,'review' AS performType,updateTime FROM mortals_xhx_check_review_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
@@ -150,11 +147,11 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND reviewTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND reviewTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         UNION
-        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,createTime,subAddType,score,subMethod,checkTime, deductTime,5 AS checkType ,'other' AS performType,updateTime FROM mortals_xhx_check_other_record WHERE 1=1
+        SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,auditStatus,createTime,score,subMethod,checkTime, deductTime,5 AS checkType ,'other' AS performType,updateTime FROM mortals_xhx_check_other_record WHERE 1=1
         <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
         <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
         <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
@@ -162,8 +159,8 @@
         <if test="createTimeStart != null and createTimeStart!=''"> AND createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createTimeEnd != null and createTimeEnd!=''"> AND createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
 
-        <if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
-        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeStart != null and checkTimeStart!=''"> AND happenTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
+        <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND happenTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
         <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
         ) AS a
         where 1=1
diff --git a/attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http b/attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http
index 1ca805fa09cb78e8ce251f5e2487b38814ce2743..e79ac14186a53a8a55f20dbcda48e0276f881f12 100644
--- a/attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http
+++ b/attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http
@@ -86,7 +86,7 @@ Content-Type: application/json
 POST {{baseUrl}}/staff/perform/summary/summary
 Content-Type: application/json
 
-{"checkTimeStart":"2024-02-01","checkTimeEnd":"2024-02-29"}
+{"checkTimeStart":"2024-02-01","checkTimeEnd":"2024-02-29","checkType":4}
 
 ###鑰冨嫟鎵撳崱璁板綍寮傚父淇℃伅鍒楄〃
 POST {{baseUrl}}/attendance/record/error/doReprocess