Pārlūkot izejas kodu

解决计划导入时报错的问题

QuYueTing 6 mēneši atpakaļ
vecāks
revīzija
724cd0aed5

+ 0 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/PlanController.java

@@ -56,7 +56,6 @@ public class PlanController {
     }
 
     @RequestMapping("/addOrUpdatePlan")
-    @Transactional
     public HttpRespMsg addOrUpdatePlan(Plan plan){
         return planService.addOrUpdatePlan(plan);
     }

+ 5 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -25,6 +25,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
@@ -313,6 +314,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public HttpRespMsg addOrUpdatePlan(Plan plan) {
         User user = userMapper.selectById(request.getHeader("token"));
         boolean isNew=true;
@@ -492,7 +494,9 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 planProcedureTotals.add(p);
             }
         }
-        planProcedureTotalService.saveOrUpdateBatch(planProcedureTotals);
+        if (planProcedureTotals.size() > 0) {
+            planProcedureTotalService.saveOrUpdateBatch(planProcedureTotals);
+        }
         List<PlanProcedureTotal> totals = planProcedureTotals.stream().filter(ps -> ps.getPlanId().equals(plan.getId())).collect(Collectors.toList());
         if(totals.size()>0){
             double sum = totals.stream().filter(t->t.getTotalWages()!=null).mapToDouble(PlanProcedureTotal::getTotalWages).sum();