소스 검색

fix:社保申报添加锁

ly 10 달 전
부모
커밋
1f49031855
1개의 변경된 파일37개의 추가작업 그리고 25개의 파일을 삭제
  1. 37 25
      src/main/java/cn/ezhizao/project/business/socialSecurity/controller/SocialSecurityConfirmController.java

+ 37 - 25
src/main/java/cn/ezhizao/project/business/socialSecurity/controller/SocialSecurityConfirmController.java

@@ -6,6 +6,8 @@ import cn.ezhizao.common.utils.poi.ExcelUtil;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+import cn.ezhizao.framework.lock.DistributionLock;
+import cn.ezhizao.framework.lock.LockKey;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.framework.web.page.TableDataInfo;
@@ -216,33 +218,43 @@ public class SocialSecurityConfirmController extends BaseController {
     @PostMapping("/verify")
     @ResponseBody
     public AjaxResult verify(@RequestBody BizSocialSecurityConfirmDetail detail) {
-        if (detail.getStatus().equals(3)) {
-            QueryWrapper<BizSocialSecurityDeclare> qw = new QueryWrapper<>();
-            qw.eq("company_id", detail.getCompanyId());
-
-            BizSocialSecurityDeclare financialSocialSecurityDeclare = socialSecurityDeclareService.getOne(qw);
-            if (financialSocialSecurityDeclare != null) {
-                QueryWrapper<BizSocialSecurityDeclareDetail> kqw = new QueryWrapper<>();
-                kqw.eq("social_security_declare_id", financialSocialSecurityDeclare.getId());
-                kqw.eq("year", detail.getYear());
-                kqw.eq("month", detail.getMonth());
-                BizSocialSecurityDeclareDetail financialSocialSecurityDeclareDetail =
-                        socialSecurityDeclareDetailService.getOne(kqw);
-                if (financialSocialSecurityDeclareDetail == null) {
-                    financialSocialSecurityDeclareDetail = new BizSocialSecurityDeclareDetail();
-                }
-                financialSocialSecurityDeclareDetail.setSocialSecurityDeclareId(financialSocialSecurityDeclare.getId());
-                financialSocialSecurityDeclareDetail.setYear(detail.getYear());
-                financialSocialSecurityDeclareDetail.setMonth(detail.getMonth());
-                financialSocialSecurityDeclareDetail.setCompanyId(detail.getCompanyId());
-                financialSocialSecurityDeclareDetail.setStatus(financialSocialSecurityDeclareDetail.getStatus() != null && financialSocialSecurityDeclareDetail.getStatus() > 1 ? financialSocialSecurityDeclareDetail.getStatus() : 1);
-
-                if (financialSocialSecurityDeclareDetail.getId() == null) {
-                    socialSecurityDeclareDetailService.save(financialSocialSecurityDeclareDetail);
-                } else {
-                    socialSecurityDeclareDetailService.updateById(financialSocialSecurityDeclareDetail);
+        String join = LockKey.join(LockKey.REPORTTAXNONZERODETAIL,detail.getSocialSecurityConfirmId(),detail.getYear(),detail.getMonth(),detail.getCompanyId());
+        DistributionLock lock = new DistributionLock(join);
+        try {
+            lock.lock();
+            if (detail.getStatus().equals(3)) {
+                QueryWrapper<BizSocialSecurityDeclare> qw = new QueryWrapper<>();
+                qw.eq("company_id", detail.getCompanyId());
+
+                BizSocialSecurityDeclare financialSocialSecurityDeclare = socialSecurityDeclareService.getOne(qw);
+                if (financialSocialSecurityDeclare != null) {
+                    QueryWrapper<BizSocialSecurityDeclareDetail> kqw = new QueryWrapper<>();
+                    kqw.eq("social_security_declare_id", financialSocialSecurityDeclare.getId());
+                    kqw.eq("year", detail.getYear());
+                    kqw.eq("month", detail.getMonth());
+                    BizSocialSecurityDeclareDetail financialSocialSecurityDeclareDetail =
+                            socialSecurityDeclareDetailService.getOne(kqw);
+                    if (financialSocialSecurityDeclareDetail == null) {
+                        financialSocialSecurityDeclareDetail = new BizSocialSecurityDeclareDetail();
+                    }
+                    financialSocialSecurityDeclareDetail.setSocialSecurityDeclareId(financialSocialSecurityDeclare.getId());
+                    financialSocialSecurityDeclareDetail.setYear(detail.getYear());
+                    financialSocialSecurityDeclareDetail.setMonth(detail.getMonth());
+                    financialSocialSecurityDeclareDetail.setCompanyId(detail.getCompanyId());
+                    financialSocialSecurityDeclareDetail.setStatus(financialSocialSecurityDeclareDetail.getStatus() != null && financialSocialSecurityDeclareDetail.getStatus() > 1 ? financialSocialSecurityDeclareDetail.getStatus() : 1);
+
+                    if (financialSocialSecurityDeclareDetail.getId() == null) {
+                        socialSecurityDeclareDetailService.save(financialSocialSecurityDeclareDetail);
+                    } else {
+                        socialSecurityDeclareDetailService.updateById(financialSocialSecurityDeclareDetail);
+                    }
                 }
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error("审核失败,请不要同时审核");
+        } finally {
+            lock.unlock();
         }
         return socialSecurityConfirmDetailService.updateById(detail) ? success() : error();
     }