diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/web/FeedbackApiController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/web/FeedbackApiController.java
index 3a7f22699e79399a3c42bcac1d0f582c40997c14..c3797ea987fb38923c31023b2b08babe5c422bbb 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/web/FeedbackApiController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/web/FeedbackApiController.java
@@ -182,7 +182,6 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
         model.put(PAGEINFO_KEY, pageInfo);
     }
 
-
     public static void main(String[] args) {
 
     }
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/SubMethodEnum.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/SubMethodEnum.java
index 3b32292dc01d096af6d12a99fe14d66b7a819e97..613b0b9e855cc83bb2fafa40b4265f6373072d2e 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/SubMethodEnum.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/SubMethodEnum.java
@@ -11,7 +11,8 @@ import java.util.Map;
 public enum SubMethodEnum {
     绯荤粺鑷姩(1, "绯荤粺鑷姩"),
     浜哄伐娣诲姞(2, "浜哄伐娣诲姞"),
-    澶у巺宸℃煡(3, "澶у巺宸℃煡");
+    澶у巺宸℃煡(3, "澶у巺宸℃煡"),
+    鐢宠瘔鍐查攢(4, "鐢宠瘔鍐查攢");
     private Integer value;
     private String desc;
 
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAttendRecordEntity.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAttendRecordEntity.java
index f0906f9db994a4e3a14cde93cedafef289ccfd3c..beb204f49071cebddcb56b3a88f810be98af0e6d 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAttendRecordEntity.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAttendRecordEntity.java
@@ -110,7 +110,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
     */
     private Integer checkStatus;
     /**
-    * 鎵e垎鏂瑰紡(1.绯荤粺鑷姩,2.浜哄伐娣诲姞,3.澶у巺宸℃煡)
+    * 鎵e垎鏂瑰紡(1.绯荤粺鑷姩,2.浜哄伐娣诲姞,3.澶у巺宸℃煡,4.鐢宠瘔鍐查攢)
     */
     private Integer subMethod;
     /**
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/PerformAttendAppealService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/PerformAttendAppealService.java
index 5150a6df51831558cfd7a0d8f3cf8d49c07d2451..167ec6ead317480b1491224eadbd50782e3030b2 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/PerformAttendAppealService.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/PerformAttendAppealService.java
@@ -1,16 +1,24 @@
 package com.mortals.xhx.module.perform.service;
+
+import com.mortals.framework.common.Rest;
+import com.mortals.framework.model.Context;
 import com.mortals.framework.service.ICRUDService;
 import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
 import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao;
+
 /**
-* PerformAttendAppealService
-*
-* 缁╂晥璁板綍鐢宠瘔淇℃伅 service鎺ュ彛
-*
-* @author zxfei
-* @date 2023-07-12
-*/
-public interface PerformAttendAppealService extends ICRUDService<PerformAttendAppealEntity,Long>{
+ * PerformAttendAppealService
+ * <p>
+ * 缁╂晥璁板綍鐢宠瘔淇℃伅 service鎺ュ彛
+ *
+ * @author zxfei
+ * @date 2023-07-12
+ */
+public interface PerformAttendAppealService extends ICRUDService<PerformAttendAppealEntity, Long> {
 
     PerformAttendAppealDao getDao();
+
+
+    Rest<Void> audit(PerformAttendAppealEntity appeal, Context context);
+
 }
\ No newline at end of file
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java
index ab36a82acc90f8a61fb5e5dfff316e769ebcd45d..5ab878de6a834cd1fc457113c6ccbb66439bb043 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java
@@ -1,4 +1,11 @@
 package com.mortals.xhx.module.perform.service.impl;
+
+import com.mortals.framework.common.Rest;
+import com.mortals.xhx.common.code.*;
+import com.mortals.xhx.common.utils.BeanUtil;
+import com.mortals.xhx.module.check.model.*;
+import com.mortals.xhx.module.check.service.*;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
 import com.mortals.framework.exception.AppException;
@@ -11,27 +18,140 @@ import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity;
 import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesQuery;
 import com.mortals.xhx.module.perform.service.PerformAttendAppealFilesService;
 import org.springframework.util.ObjectUtils;
+
 import java.util.Date;
 import java.util.Arrays;
 import java.util.List;
+
 import lombok.extern.slf4j.Slf4j;
+
 /**
-* PerformAttendAppealService
-* 缁╂晥璁板綍鐢宠瘔淇℃伅 service瀹炵幇
-*
-* @author zxfei
-* @date 2023-07-12
-*/
+ * PerformAttendAppealService
+ * 缁╂晥璁板綍鐢宠瘔淇℃伅 service瀹炵幇
+ *
+ * @author zxfei
+ * @date 2023-07-12
+ */
 @Service("performAttendAppealService")
 @Slf4j
 public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<PerformAttendAppealDao, PerformAttendAppealEntity, Long> implements PerformAttendAppealService {
+
+    @Autowired
+    private CheckAttendRecordService checkAttendRecordService;
+    @Autowired
+    private CheckReviewRecordService checkReviewRecordService;
+    @Autowired
+    private CheckComplainRecordService checkComplainRecordService;
+    @Autowired
+    private CheckEffectRecordService checkEffectRecordService;
+    @Autowired
+    private CheckGoworkRecordService checkGoworkRecordService;
+    @Autowired
+    private CheckOtherRecordService checkOtherRecordService;
+
     @Autowired
     private PerformAttendAppealFilesService performAttendAppealFilesService;
-    
+
+
+    @Override
+    public Rest<Void> audit(PerformAttendAppealEntity appeal, Context context) {
+        PerformAttendAppealEntity appealEntity = this.get(appeal.getId(), context);
+        if (appealEntity.getProcessStatus() == ProcessStatusEnum.宸插鐞�.getValue()) {
+            throw new AppException("褰撳墠鐢宠瘔宸插鏍革紒");
+        }
+
+        appealEntity.setProcessStatus(ProcessStatusEnum.宸插鐞�.getValue());
+        appealEntity.setAppealDesc(appeal.getAppealDesc());
+        appealEntity.setAppealResult(appeal.getAppealResult());
+        appealEntity.setAppealTime(new Date());
+        appealEntity.setUpdateUserId(context.getUser().getId());
+        appealEntity.setUpdateTime(new Date());
+        this.getDao().update(appealEntity);
+
+        String appealMsg = "鐢宠瘔鎴愬姛锛岃繑鍥炴墍鎵e垎鏁帮紝鐢宠瘔ID:" + appeal.getId().toString();
+        if (appeal.getAppealResult() == AppealResultEnum.閫氳繃.getValue()) {
+            if (appeal.getSubAddType() == SubAddTypeEnum.鎵i櫎.getValue()) {
+                //闇€澧炰竴鏉¤褰曞悗 鍐查攢鐩稿叧鏍告煡鐨勮褰�
+                if (PerformTypeEnum.鑰冨嫟缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckAttendRecordEntity checkEntity = checkAttendRecordService.get(appeal.getId(), context);
+
+                    CheckAttendRecordEntity checkAttendRecordEntity = new CheckAttendRecordEntity();
+                    checkAttendRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkAttendRecordEntity, new String[]{"id", "recordId"});
+                    checkAttendRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkAttendRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkAttendRecordEntity.setRemark(appealMsg);
+                    checkAttendRecordService.save(checkAttendRecordEntity, context);
+                } else if (PerformTypeEnum.璇勪环宸瘎缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckReviewRecordEntity checkEntity = checkReviewRecordService.get(appeal.getId(), context);
+                    CheckReviewRecordEntity checkRecordEntity = new CheckReviewRecordEntity();
+                    checkRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
+                    checkRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkRecordEntity.setRemark(appealMsg);
+                    checkRecordEntity.setCreateTime(new Date());
+                    checkRecordEntity.setCreateUserId(this.getContextUserId(context));
+                    checkReviewRecordService.save(checkRecordEntity, context);
+                } else if (PerformTypeEnum.璇勪环鎶曡瘔缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckComplainRecordEntity checkEntity = checkComplainRecordService.get(appeal.getId(), context);
+
+                    CheckComplainRecordEntity checkRecordEntity = new CheckComplainRecordEntity();
+                    checkRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
+                    checkRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkRecordEntity.setRemark(appealMsg);
+                    checkRecordEntity.setCreateTime(new Date());
+                    checkRecordEntity.setCreateUserId(this.getContextUserId(context));
+                    checkComplainRecordService.save(checkRecordEntity, context);
+
+                } else if (PerformTypeEnum.鍔炰欢缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckGoworkRecordEntity checkEntity = checkGoworkRecordService.get(appeal.getId(), context);
+                    CheckGoworkRecordEntity checkRecordEntity = new CheckGoworkRecordEntity();
+                    checkRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
+                    checkRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkRecordEntity.setRemark(appealMsg);
+                    checkRecordEntity.setCreateTime(new Date());
+                    checkRecordEntity.setCreateUserId(this.getContextUserId(context));
+                    checkGoworkRecordService.save(checkRecordEntity, context);
+
+                } else if (PerformTypeEnum.鏁堣兘缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckEffectRecordEntity checkEntity = checkEffectRecordService.get(appeal.getId(), context);
+                    CheckEffectRecordEntity checkRecordEntity = new CheckEffectRecordEntity();
+                    checkRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
+                    checkRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkRecordEntity.setRemark(appealMsg);
+                    checkRecordEntity.setCreateTime(new Date());
+                    checkRecordEntity.setCreateUserId(this.getContextUserId(context));
+                    checkEffectRecordService.save(checkRecordEntity, context);
+
+                } else if (PerformTypeEnum.鍏跺畠缁╂晥.getValue().equals(appeal.getPerformType())) {
+                    CheckOtherRecordEntity checkEntity = checkOtherRecordService.get(appeal.getId(), context);
+                    CheckOtherRecordEntity checkRecordEntity = new CheckOtherRecordEntity();
+                    checkRecordEntity.initAttrValue();
+                    BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
+                    checkRecordEntity.setSubAddType(SubAddTypeEnum.澧炲姞.getValue());
+                    checkRecordEntity.setSubMethod(SubMethodEnum.鐢宠瘔鍐查攢.getValue());
+                    checkRecordEntity.setRemark(appealMsg);
+                    checkRecordEntity.setCreateTime(new Date());
+                    checkRecordEntity.setCreateUserId(this.getContextUserId(context));
+                    checkOtherRecordService.save(checkRecordEntity, context);
+                }
+            }
+        }
+        return Rest.ok();
+    }
+
+
     @Override
     protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException {
-        if(!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())){
-            entity.getPerformAttendAppealFilesList().stream().peek(item->{
+        if (!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())) {
+            entity.getPerformAttendAppealFilesList().stream().peek(item -> {
                 item.setAppealId(entity.getId());
                 item.setCreateUserId(this.getContextUserId(context));
                 item.setCreateTime(new Date());
@@ -43,10 +163,10 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
 
     @Override
     protected void updateAfter(PerformAttendAppealEntity entity, Context context) throws AppException {
-        if(!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())){
+        if (!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())) {
             Long[] performAttendAppealFilesIds = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealId(entity.getId())).stream().map(PerformAttendAppealFilesEntity::getId).toArray(Long[]::new);
-            performAttendAppealFilesService.remove(performAttendAppealFilesIds,context);
-            entity.getPerformAttendAppealFilesList().stream().peek(item ->{
+            performAttendAppealFilesService.remove(performAttendAppealFilesIds, context);
+            entity.getPerformAttendAppealFilesList().stream().peek(item -> {
                 item.setAppealId(entity.getId());
                 item.setCreateUserId(this.getContextUserId(context));
                 item.setCreateTime(new Date());
@@ -61,7 +181,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
     @Override
     protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
         List<PerformAttendAppealFilesEntity> performAttendAppealFileslist = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealIdList(Arrays.asList(ids)));
-        performAttendAppealFilesService.removeList(performAttendAppealFileslist,context);
+        performAttendAppealFilesService.removeList(performAttendAppealFileslist, context);
         super.removeAfter(ids, context, result);
     }
+
 }
\ No newline at end of file
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java
index d2d20e2721a45567327bcddcdfab06513654e418..2545d1bccd671308d684530a62a1b9ec1db8b581 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java
@@ -1,57 +1,93 @@
 package com.mortals.xhx.module.perform.web;
+
+import com.mortals.framework.common.Rest;
+import com.mortals.framework.exception.AppException;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.xhx.base.system.param.service.ParamService;
+import com.mortals.xhx.common.code.EnabledEnum;
+import com.mortals.xhx.common.code.YesNoEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.*;
 import com.mortals.framework.model.Context;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
 import com.mortals.xhx.module.perform.service.PerformAttendAppealService;
 import org.apache.commons.lang3.ArrayUtils;
 import com.mortals.framework.util.StringUtils;
+
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+
 import com.alibaba.fastjson.JSONObject;
+
 import java.util.Arrays;
+
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
 import static com.mortals.framework.ap.SysConstains.*;
+
 /**
-*
-* 缁╂晥璁板綍鐢宠瘔淇℃伅
-*
-* @author zxfei
-* @date 2023-07-12
-*/
+ * 缁╂晥璁板綍鐢宠瘔淇℃伅
+ *
+ * @author zxfei
+ * @date 2023-07-12
+ */
 @RestController
 @RequestMapping("perform/attend/appeal")
-public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingController<PerformAttendAppealService,PerformAttendAppealEntity,Long> {
+public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingController<PerformAttendAppealService, PerformAttendAppealEntity, Long> {
 
     @Autowired
     private ParamService paramService;
 
-    public PerformAttendAppealController(){
-        super.setModuleDesc( "缁╂晥璁板綍鐢宠瘔淇℃伅");
+    public PerformAttendAppealController() {
+        super.setModuleDesc("缁╂晥璁板綍鐢宠瘔淇℃伅");
     }
 
     @Override
     protected void init(Map<String, Object> model, Context context) {
-        this.addDict(model, "subMethod", paramService.getParamBySecondOrganize("PerformAttendAppeal","subMethod"));
-        this.addDict(model, "subAddType", paramService.getParamBySecondOrganize("PerformAttendAppeal","subAddType"));
-        this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("PerformAttendAppeal","processStatus"));
-        this.addDict(model, "appealResult", paramService.getParamBySecondOrganize("PerformAttendAppeal","appealResult"));
-        this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal","reviewResult"));
-        this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal","reviewSource"));
-        this.addDict(model, "irregularType", paramService.getParamBySecondOrganize("PerformAttendAppeal","irregularType"));
-        this.addDict(model, "irregularOtherType", paramService.getParamBySecondOrganize("PerformAttendAppeal","irregularOtherType"));
+        this.addDict(model, "subMethod", paramService.getParamBySecondOrganize("PerformAttendAppeal", "subMethod"));
+        this.addDict(model, "subAddType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "subAddType"));
+        this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("PerformAttendAppeal", "processStatus"));
+        this.addDict(model, "appealResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "appealResult"));
+        this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewResult"));
+        this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewSource"));
+        this.addDict(model, "irregularType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "irregularType"));
+        this.addDict(model, "irregularOtherType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "irregularOtherType"));
         super.init(model, context);
     }
 
 
+    /**
+     * 鐢宠瘔瀹℃牳
+     */
+    @PostMapping(value = "audit")
+    public String appealAudit(@RequestBody PerformAttendAppealEntity appeal) {
+        JSONObject jsonObject = new JSONObject();
+        Map<String, Object> model = new HashMap<>();
+        String busiDesc = this.getModuleDesc() + "瀹℃牳";
+        try {
+            Rest<Void> audit = this.service.audit(appeal, getContext());
+            if (audit.getCode() == YesNoEnum.NO.getValue()) {
+                throw new AppException("鐢宠瘔瀹℃牳寮傚父锛�");
+            }
+            recordSysLog(request, busiDesc + " 銆愭垚鍔熴€�");
+            jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
+        } catch (Exception e) {
+            log.error("鐢宠瘔瀹℃牳", e);
+            jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
+            jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
+        }
+        return jsonObject.toJSONString();
+    }
+
+
 }
\ No newline at end of file