ly 1 an în urmă
părinte
comite
5901193463

+ 5 - 1
src/main/java/cn/ezhizao/framework/lock/LockKey.java

@@ -1,5 +1,7 @@
 package cn.ezhizao.framework.lock;
 
+import cn.ezhizao.project.business.finance.IndividualIncomeTax.domain.BizFinancialIndividualIncomeTaxDetail;
+
 public class LockKey {
 
     public static String join(String prefix, Object... vars) {
@@ -17,6 +19,8 @@ public class LockKey {
     public static final String DEMO = "lock:demo";
 
     public static final String SALARYZERO = "lock:salaryZero";
-
+    public static final String SALARY = "lock:salary";
+    public static final String INCOMETAX = "lock:incomeTax";
+    public static final String INCOMETAXZero = "lock:incomeTaxZero";
 
 }

+ 46 - 34
src/main/java/cn/ezhizao/project/business/finance/IndividualIncomeTax/controller/BizFinancialIndividualIncomeTaxDetailController.java

@@ -5,6 +5,8 @@ import cn.ezhizao.common.utils.StringUtils;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
 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;
@@ -117,18 +119,18 @@ public class BizFinancialIndividualIncomeTaxDetailController extends BaseControl
     @GetMapping(value = "/{id}/{year}/{month}")
     public AjaxResult getInfo(@PathVariable("id") Long financialIndividualIncomeTaxId, @PathVariable("year") String year, @PathVariable("month") String month) {
         int nowYear = LocalDate.now().getYear();
-        int nowMonth = LocalDate.now().getMonthValue()-1;
+        int nowMonth = LocalDate.now().getMonthValue() - 1;
         String formattedMonth = String.format("%02d", nowMonth);
         BizFinancialIndividualIncomeTaxDetail biz = bizFinancialIndividualIncomeTaxDetailService.getOne(new LambdaQueryWrapper<BizFinancialIndividualIncomeTaxDetail>()
                 .eq(BizFinancialIndividualIncomeTaxDetail::getFinancialIndividualIncomeTaxId, financialIndividualIncomeTaxId)
                 .eq(BizFinancialIndividualIncomeTaxDetail::getYear, year)
                 .eq(BizFinancialIndividualIncomeTaxDetail::getMonth, month));
-        String s1= year+month;
-        String s2 = nowYear+ formattedMonth;
-        if(s1.equals(s2) && biz == null){
+        String s1 = year + month;
+        String s2 = nowYear + formattedMonth;
+        if (s1.equals(s2) && biz == null) {
             return success(new BizFinancialIndividualIncomeTaxDetail());
         }
-        if (biz==null  ) {
+        if (biz == null) {
             return error("当前月未找到数据");
         }
         List<SysFileStorage> files = bizFinancialIndividualIncomeTaxDetailService.getFiles(biz.getId());
@@ -175,36 +177,46 @@ public class BizFinancialIndividualIncomeTaxDetailController extends BaseControl
     @PostMapping()
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult saveDetail(@RequestBody BizFinancialIndividualIncomeTaxDetail bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException {
-        String status = "";
-        bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
-        bizFinancialIndividualIncomeTaxDetail.setVerifierTime(new Date());
-        boolean bool = bizFinancialIndividualIncomeTaxDetailService.saveOrUpdate(bizFinancialIndividualIncomeTaxDetail);
-        switch (bizFinancialIndividualIncomeTaxDetail.getStatus()) {
-            case 0:
-                status = "个税未开始";
-                break;
-            case 1:
-                status = "个税进行中";
-                break;
-            case 3:
-                status = "个税已完成";
-                break;
+        String join = LockKey.join(LockKey.INCOMETAX, getUserId());
+        DistributionLock lock = new DistributionLock(join);
+        try {
+            lock.lock();
+            String status = "";
+            bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
+            bizFinancialIndividualIncomeTaxDetail.setVerifierTime(new Date());
+            boolean bool = bizFinancialIndividualIncomeTaxDetailService.saveOrUpdate(bizFinancialIndividualIncomeTaxDetail);
+            switch (bizFinancialIndividualIncomeTaxDetail.getStatus()) {
+                case 0:
+                    status = "个税未开始";
+                    break;
+                case 1:
+                    status = "个税进行中";
+                    break;
+                case 3:
+                    status = "个税已完成";
+                    break;
+            }
+            bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
+            List<SysFileStorage> fileStorages = bizFinancialIndividualIncomeTaxDetail.getReportFiles();
+            bool = bool && checkDeduction(bizFinancialIndividualIncomeTaxDetail);
+            fileStorages.forEach(l -> {
+                l.setMasterId(bizFinancialIndividualIncomeTaxDetail.getId());
+                l.setMasterTableName("biz_financial_individual_income_tax_detail");
+            });
+            SysFileStorage delConditions = new SysFileStorage();
+            delConditions.setMasterId(bizFinancialIndividualIncomeTaxDetail.getId());
+            delConditions.setMasterTableName("biz_financial_individual_income_tax_detail");
+            fileStorageService.physicalDelete(delConditions);
+            bool = bool && (fileStorages.isEmpty() || fileStorageService.saveOrUpdateBatch(fileStorages));
+
+            return toAjax(addRecord(bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
+                    bizFinancialIndividualIncomeTaxDetail.getYear(), bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(), status) && bool);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error("保存失败");
+        } finally {
+            lock.unlock();
         }
-        bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
-        List<SysFileStorage> fileStorages = bizFinancialIndividualIncomeTaxDetail.getReportFiles();
-        bool = bool && checkDeduction(bizFinancialIndividualIncomeTaxDetail);
-        fileStorages.forEach(l -> {
-            l.setMasterId(bizFinancialIndividualIncomeTaxDetail.getId());
-            l.setMasterTableName("biz_financial_individual_income_tax_detail");
-        });
-        SysFileStorage delConditions = new SysFileStorage();
-        delConditions.setMasterId(bizFinancialIndividualIncomeTaxDetail.getId());
-        delConditions.setMasterTableName("biz_financial_individual_income_tax_detail");
-        fileStorageService.physicalDelete(delConditions);
-        bool = bool && (fileStorages.isEmpty() || fileStorageService.saveOrUpdateBatch(fileStorages));
-
-        return toAjax(addRecord(bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
-                bizFinancialIndividualIncomeTaxDetail.getYear(), bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(), status) && bool);
     }
 
 

+ 44 - 35
src/main/java/cn/ezhizao/project/business/finance/IndividualIncomeTaxIsZero/controller/BizFinancialIndividualIncomeTaxDetailIsZeroController.java

@@ -6,6 +6,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.ezhizao.common.utils.SecurityUtils;
+import cn.ezhizao.framework.lock.DistributionLock;
+import cn.ezhizao.framework.lock.LockKey;
 import cn.ezhizao.project.business.finance.IndividualIncomeTaxIsZero.domain.BizFinancialIndividualIncomeTaxDetailIsZero;
 import cn.ezhizao.project.business.finance.IndividualIncomeTaxIsZero.domain.BizFinancialIndividualIncomeTaxIsZero;
 import cn.ezhizao.project.business.finance.IndividualIncomeTaxIsZero.service.IBizFinancialIndividualIncomeTaxIsZeroService;
@@ -36,8 +38,7 @@ import cn.ezhizao.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/business/individualIncomeTaxDetailIsZero")
-public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseController
-{
+public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseController {
     @Resource
     private IBizFinancialIndividualIncomeTaxDetailIsZeroService bizFinancialIndividualIncomeTaxDetailService;
 
@@ -53,8 +54,7 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
      */
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:list')")
     @GetMapping("/list")
-    public TableDataInfo list(BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException
-    {
+    public TableDataInfo list(BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizFinancialIndividualIncomeTaxDetail);
         startPage();
         List<BizFinancialIndividualIncomeTaxDetailIsZero> list = bizFinancialIndividualIncomeTaxDetailService.getList(bizFinancialIndividualIncomeTaxDetail);
@@ -67,8 +67,7 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:export')")
     @Log(title = "个税详情", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException
-    {
+    public void export(HttpServletResponse response, BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizFinancialIndividualIncomeTaxDetail);
         List<BizFinancialIndividualIncomeTaxDetailIsZero> list = bizFinancialIndividualIncomeTaxDetailService.getList(bizFinancialIndividualIncomeTaxDetail);
         ExcelUtil<BizFinancialIndividualIncomeTaxDetailIsZero> util = new ExcelUtil<BizFinancialIndividualIncomeTaxDetailIsZero>(BizFinancialIndividualIncomeTaxDetailIsZero.class);
@@ -80,8 +79,7 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
      */
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(bizFinancialIndividualIncomeTaxDetailService.getById(id));
     }
 
@@ -91,28 +89,40 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:saveDetail')")
     @Log(title = "个税详情", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException
-    {
-        String status = "";
-        switch (bizFinancialIndividualIncomeTaxDetail.getStatus()) {
-            case 0:
-                status = "个税未开始";
-                break;
-            case 1:
-                status = "个税进行中";
-                break;
-            case 3:
-                status = "个税已完成";
-                break;
-
+    public AjaxResult add(@RequestBody BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException {
+
+        String join = LockKey.join(LockKey.INCOMETAXZero, getUserId());
+        DistributionLock lock = new DistributionLock(join);
+
+        try {
+            lock.lock();
+            String status = "";
+            switch (bizFinancialIndividualIncomeTaxDetail.getStatus()) {
+                case 0:
+                    status = "个税未开始";
+                    break;
+                case 1:
+                    status = "个税进行中";
+                    break;
+                case 3:
+                    status = "个税已完成";
+                    break;
+
+            }
+            bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
+            bizFinancialIndividualIncomeTaxDetail.setVerifierTime(new Date());
+            return toAjax(bizFinancialIndividualIncomeTaxDetailService.save(bizFinancialIndividualIncomeTaxDetail) && addRecord(bizFinancialIndividualIncomeTaxDetail.getCompanyId(), bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
+
+                    bizFinancialIndividualIncomeTaxDetail.getYear(), bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(), status));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error("保存失败");
+        } finally {
+            lock.unlock();
         }
-        bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
-        bizFinancialIndividualIncomeTaxDetail.setVerifierTime(new Date());
-        return toAjax(bizFinancialIndividualIncomeTaxDetailService.save(bizFinancialIndividualIncomeTaxDetail)&&addRecord(bizFinancialIndividualIncomeTaxDetail.getCompanyId(),bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
 
-                bizFinancialIndividualIncomeTaxDetail.getYear(),bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(),status));
-    }
 
+    }
 
 
     /**
@@ -121,8 +131,7 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:saveDetail')")
     @Log(title = "个税详情", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException
-    {
+    public AjaxResult edit(@RequestBody BizFinancialIndividualIncomeTaxDetailIsZero bizFinancialIndividualIncomeTaxDetail) throws NoSuchFieldException, IllegalAccessException {
 
         String status = "";
         switch (bizFinancialIndividualIncomeTaxDetail.getStatus()) {
@@ -139,9 +148,9 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
         }
         bizFinancialIndividualIncomeTaxDetail.setVerifierId(getUserId());
         bizFinancialIndividualIncomeTaxDetail.setVerifierTime(new Date());
-        return toAjax(bizFinancialIndividualIncomeTaxDetailService.updateById(bizFinancialIndividualIncomeTaxDetail)&&addRecord(bizFinancialIndividualIncomeTaxDetail.getCompanyId(),bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
+        return toAjax(bizFinancialIndividualIncomeTaxDetailService.updateById(bizFinancialIndividualIncomeTaxDetail) && addRecord(bizFinancialIndividualIncomeTaxDetail.getCompanyId(), bizFinancialIndividualIncomeTaxDetail.getFinancialIndividualIncomeTaxId(),
 
-                bizFinancialIndividualIncomeTaxDetail.getYear(),bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(),status));
+                bizFinancialIndividualIncomeTaxDetail.getYear(), bizFinancialIndividualIncomeTaxDetail.getMonth(), SecurityUtils.getUserId(), status));
     }
 
 
@@ -150,12 +159,12 @@ public class BizFinancialIndividualIncomeTaxDetailIsZeroController extends BaseC
      */
     @PreAuthorize("@ss.hasPermi('business:individualIncomeTaxDetail:remove')")
     @Log(title = "个税详情", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(bizFinancialIndividualIncomeTaxDetailService.removeBatchByIds(ids));
     }
-    private boolean addRecord(Long companyId,Long bizFinancialSalaryId, String year, String month, Long recorderId, String description) {
+
+    private boolean addRecord(Long companyId, Long bizFinancialSalaryId, String year, String month, Long recorderId, String description) {
         // 获取个税任务信息
         BizFinancialIndividualIncomeTaxIsZero bizFinancialSalary = bizFinancialIndividualIncomeTaxService.getById(bizFinancialSalaryId);
 

+ 34 - 21
src/main/java/cn/ezhizao/project/business/salary/controller/BizFinancialSalaryController.java

@@ -21,6 +21,8 @@ import cn.ezhizao.common.utils.PdfUtil;
 import cn.ezhizao.common.utils.SecurityUtils;
 import cn.ezhizao.common.utils.StringUtils;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.lock.DistributionLock;
+import cn.ezhizao.framework.lock.LockKey;
 import cn.ezhizao.project.business.company.domain.BizCompany;
 import cn.ezhizao.project.business.company.service.IBizCompanyService;
 import cn.ezhizao.project.business.finance.IndividualIncomeTaxIsZero.domain.BizFinancialIndividualIncomeTaxDetailIsZero;
@@ -120,7 +122,6 @@ public class BizFinancialSalaryController extends BaseController {
     private IBizFinancialKeepAccountDetailService financialKeepAccountDetailService;
 
 
-
     /**
      * 查询工资列表
      */
@@ -137,13 +138,13 @@ public class BizFinancialSalaryController extends BaseController {
 
         List<BizFinancialSalary> list = bizFinancialSalaryService.getList(bizFinancialSalary);
         if (!list.isEmpty()) {
-            if (!chooseYear.equals(nwoYear)){
-                List<BizFinancialSalaryDetail> details = bizFinancialSalaryDetailService.query().in("financial_salary_id", list.stream().map(BizFinancialSalary::getId).collect(Collectors.toList())).eq("year",chooseYear).list();
+            if (!chooseYear.equals(nwoYear)) {
+                List<BizFinancialSalaryDetail> details = bizFinancialSalaryDetailService.query().in("financial_salary_id", list.stream().map(BizFinancialSalary::getId).collect(Collectors.toList())).eq("year", chooseYear).list();
                 list.forEach(l -> {
                     l.setDetails(details.stream().filter(v -> v.getFinancialSalaryId().equals(l.getId())).collect(Collectors.toList()));
                 });
-            }else{
-                List<BizFinancialSalaryDetail> details = bizFinancialSalaryDetailService.query().in("financial_salary_id", list.stream().map(BizFinancialSalary::getId).collect(Collectors.toList())).eq("year",bizFinancialSalary.getYear()).list();
+            } else {
+                List<BizFinancialSalaryDetail> details = bizFinancialSalaryDetailService.query().in("financial_salary_id", list.stream().map(BizFinancialSalary::getId).collect(Collectors.toList())).eq("year", bizFinancialSalary.getYear()).list();
                 list.forEach(l -> {
                     l.setDetails(details.stream().filter(v -> v.getFinancialSalaryId().equals(l.getId())).collect(Collectors.toList()));
                 });
@@ -170,9 +171,9 @@ public class BizFinancialSalaryController extends BaseController {
         List<BizFinancialSalary> list = bizFinancialSalaryService.getList2(bizFinancialSalary);
         //优化
         Map<String, BizFinancialSalaryDetail> detailMap = bizFinancialSalaryDetailService
-                .list(new LambdaQueryWrapper<BizFinancialSalaryDetail>().eq(BizFinancialSalaryDetail::getDeleted,0))
+                .list(new LambdaQueryWrapper<BizFinancialSalaryDetail>().eq(BizFinancialSalaryDetail::getDeleted, 0))
                 .stream().collect(Collectors.toMap(d -> d.getFinancialSalaryId() + d.getYear() + d.getMonth(),
-                Function.identity(), (d1, d2) -> d1));
+                        Function.identity(), (d1, d2) -> d1));
         List<SysUser> sysUsers = sysUserMapper.selectUserList(new SysUser());
         Map<Long, SysUser> userMap = sysUsers.stream().collect(Collectors.toMap(user -> user.getUserId(), Function.identity()));
 
@@ -191,7 +192,7 @@ public class BizFinancialSalaryController extends BaseController {
 //            if (bizFinancialSalaryDetails.size() == 0 ) {
 //                salaryDetail.setStatus(0);
 //                salary.setServiceName("");
-            if (detailMap.get(query) == null ) {
+            if (detailMap.get(query) == null) {
                 salaryDetail.setStatus(0);
                 salary.setServiceName("");
             } else {
@@ -236,18 +237,20 @@ public class BizFinancialSalaryController extends BaseController {
         ExcelUtil<BizFinancialSalaryDetailEmployee> util = new ExcelUtil<BizFinancialSalaryDetailEmployee>(BizFinancialSalaryDetailEmployee.class);
         util.importTemplateExcel(response, "工资模板");
     }
+
     @Log(title = "导出工资模板2", businessType = BusinessType.EXPORT)
     @PostMapping("/exportSalaryTemplateNotCompany")
     public void exportSalaryTemplateNotCompany(HttpServletResponse response) throws NoSuchFieldException, IllegalAccessException {
         ExcelUtil<BizFinancialSalaryDetailEmployeeNotCompany> util = new ExcelUtil<BizFinancialSalaryDetailEmployeeNotCompany>(BizFinancialSalaryDetailEmployeeNotCompany.class);
         util.importTemplateExcel(response, "工资模板");
     }
+
     @Log(title = "工资导入", businessType = BusinessType.IMPORT)
     @PreAuthorize("@ss.hasPermi('business:salary:import')")
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file, @RequestParam String year, @RequestParam String month, @RequestParam(required = false) String companyId) throws Exception {
         List<BizFinancialSalaryDetailEmployee> detailList = new ArrayList<>();
-        List<BizFinancialSalaryDetailEmployeeNotCompany> detailListNotCompany=new ArrayList<>();
+        List<BizFinancialSalaryDetailEmployeeNotCompany> detailListNotCompany = new ArrayList<>();
         List<String> excelHeaders = null;
         List<String> names = null;
         if (StringUtils.isNotEmpty(companyId)) {
@@ -255,7 +258,7 @@ public class BizFinancialSalaryController extends BaseController {
             ExcelUtil<BizFinancialSalaryDetailEmployeeNotCompany> util = new ExcelUtil<>(BizFinancialSalaryDetailEmployeeNotCompany.class);
             detailListNotCompany = util.importExcel(file.getInputStream());
             for (BizFinancialSalaryDetailEmployeeNotCompany item : detailListNotCompany) {
-               item.setCompanyName(company.getName());
+                item.setCompanyName(company.getName());
                 BizFinancialSalaryDetailEmployee bizFinancialSalaryDetailEmployee = new BizFinancialSalaryDetailEmployee();
                 BeanUtils.copyProperties(item, bizFinancialSalaryDetailEmployee);
                 detailList.add(bizFinancialSalaryDetailEmployee);
@@ -270,7 +273,7 @@ public class BizFinancialSalaryController extends BaseController {
             // 获取 入Excel 表头字段
             excelHeaders = util.readExcelHeaders(file.getInputStream());
             //获取实体类字段
-             names = getExcelAnnotatedFields(BizFinancialSalaryDetailEmployee.class);
+            names = getExcelAnnotatedFields(BizFinancialSalaryDetailEmployee.class);
             //如果不存在模板中的字段,返回错误
         }
         if (!excelHeaders.containsAll(names)) {
@@ -331,7 +334,7 @@ public class BizFinancialSalaryController extends BaseController {
     @Log(title = "工资", businessType = BusinessType.DELETE)
     @DeleteMapping("/physical/{ids}")
     public AjaxResult remove(@PathVariable List<Long> ids) {
-        if (ids.isEmpty()){
+        if (ids.isEmpty()) {
             return null;
         }
         return toAjax(bizFinancialSalaryService.physicalDeleteIds(ids));
@@ -369,15 +372,25 @@ public class BizFinancialSalaryController extends BaseController {
     @Log(title = "生产管理-工资非零申报-新增", businessType = BusinessType.INSERT)
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult saveDetail(@RequestBody BizFinancialSalaryDetail bizFinancialSalaryDetail) {
-        // 判断之前是否有保存一个明细
-        BizFinancialSalaryDetail conditions = new BizFinancialSalaryDetail();
-        conditions.setFinancialSalaryId(bizFinancialSalaryDetail.getFinancialSalaryId());
-        conditions.setYear(bizFinancialSalaryDetail.getYear());
-        conditions.setMonth(bizFinancialSalaryDetail.getMonth());
-        if (!bizFinancialSalaryDetailService.getList(conditions).isEmpty()) {
-            return error("该月已添加工资信息,请刷新列表。");
+        String join = LockKey.join(LockKey.SALARYZERO, getUserId());
+        DistributionLock lock = new DistributionLock(join);
+        try {
+            lock.lock();
+            // 判断之前是否有保存一个明细
+            BizFinancialSalaryDetail conditions = new BizFinancialSalaryDetail();
+            conditions.setFinancialSalaryId(bizFinancialSalaryDetail.getFinancialSalaryId());
+            conditions.setYear(bizFinancialSalaryDetail.getYear());
+            conditions.setMonth(bizFinancialSalaryDetail.getMonth());
+            if (!bizFinancialSalaryDetailService.getList(conditions).isEmpty()) {
+                return error("该月已添加工资信息,请刷新列表。");
+            }
+            return toAjax(bizFinancialSalaryDetailService.save(bizFinancialSalaryDetail) && addRecord(bizFinancialSalaryDetail.getFinancialSalaryId(), bizFinancialSalaryDetail.getYear(), bizFinancialSalaryDetail.getMonth(), SecurityUtils.getUserId(), "填写工资信息"));
+        }catch (Exception e){
+            e.printStackTrace();
+            return error("保存失败");
+        }finally {
+            lock.unlock();
         }
-        return toAjax(bizFinancialSalaryDetailService.save(bizFinancialSalaryDetail) && addRecord(bizFinancialSalaryDetail.getFinancialSalaryId(), bizFinancialSalaryDetail.getYear(), bizFinancialSalaryDetail.getMonth(), SecurityUtils.getUserId(), "填写工资信息"));
     }
 
     @Log(title = "生产管理-工资非零申报-更新", businessType = BusinessType.UPDATE)
@@ -429,7 +442,7 @@ public class BizFinancialSalaryController extends BaseController {
             bool = bool && addRecord(bizFinancialSalaryDetail.getFinancialSalaryId(), bizFinancialSalaryDetail.getYear(), bizFinancialSalaryDetail.getMonth(), SecurityUtils.getUserId(), "工资审核不通过");
         }
         bizFinancialSalaryDetail.setVerifierTime(new Date());
-        bool = bool && bizFinancialSalaryDetailService.updateById(bizFinancialSalaryDetail,true);
+        bool = bool && bizFinancialSalaryDetailService.updateById(bizFinancialSalaryDetail, true);
         return toAjax(bool);
     }
 

+ 1 - 1
src/main/java/cn/ezhizao/project/business/workOrder/controller/OnceWorkOrderProductionController.java

@@ -88,7 +88,7 @@ public class OnceWorkOrderProductionController extends BaseController {
     /**
      * 导出划款列表
      */
-    @PreAuthorize("@ss.hasPermi('business:entrust:workOrder:current:export')")
+    @PreAuthorize("@ss.hasPermi('business:production:onceexport')")
     @Log(title = "单次任务", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, BizWorkOrder conditions) throws NoSuchFieldException, IllegalAccessException {