Browse Source

经营报表问题处理

zouxuan 2 years ago
parent
commit
3969417616

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/FinancialExpenditureServiceImpl.java

@@ -29,6 +29,8 @@ import com.ym.mec.util.ini.IniFileUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +46,7 @@ import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @Service
@@ -63,6 +66,8 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
     private TeacherDao teacherDao;
     @Autowired
     private FinancialExpenditureService financialExpenditureService;
+    @Autowired
+    private RedissonClient redissonClient;
 
     @Override
     public BaseDAO<Long, FinancialExpenditure> getDAO() {
@@ -225,6 +230,12 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void syncOaPayLog(Integer workOrderId,String fileUrl) throws Exception {
+        //防止幂等
+        String key = "syncOaPayLog:" + workOrderId;
+        RBucket<Object> bucket = redissonClient.getBucket(key);
+        if (!bucket.trySet(workOrderId, 2L, TimeUnit.SECONDS)) {
+            throw new BizException("正在同步oa审批记录,请勿重复操作");
+        }
         PWorkOrderInfo pWorkOrderInfo = financialExpenditureDao.getWorkOrderInfo(workOrderId);
         if (pWorkOrderInfo != null){
             Integer hasFinancial = financialExpenditureDao.findByBatchNoAndProcessNo(workOrderId);
@@ -320,7 +331,7 @@ public class FinancialExpenditureServiceImpl extends BaseServiceImpl<Long, Finan
                                                 financialExpenditure.setAmount(financialExpenditure.getAmount().add(new BigDecimal(Double.parseDouble(o.toString()))));
                                                 continue;
                                             }
-                                        }else if(name.contains("情况说明")){
+                                        }else if(name.contains("情况说明") || name.contains("事由") ){
                                             Object o = hashMap.get(inputDto.getModel());
                                             if(Objects.nonNull(o) && StringUtils.isNotEmpty(o.toString())){
                                                 financialExpenditure.setCause(o.toString());