|
@@ -5,13 +5,19 @@ import com.rongwe.zhsw.system.domain.SwBillManagementUnpaidDo;
|
|
|
import com.rongwe.zhsw.system.domain.SwUserManagementDo;
|
|
|
import com.rongwe.zhsw.system.domain.SwWaterUsageEntryDo;
|
|
|
import com.rongwei.rwcommon.base.BaseDo;
|
|
|
+import com.rongwei.rwcommon.base.exception.CustomException;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
import com.rongwei.zhsw.system.utils.ZHSWCommonUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.TransactionDefinition;
|
|
|
+import org.springframework.transaction.TransactionStatus;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.transaction.support.DefaultTransactionDefinition;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
@@ -37,6 +43,8 @@ public class BillGenerationServiceImpl {
|
|
|
private SwUserManagementServiceImpl swUserManagementService;
|
|
|
@Autowired
|
|
|
private SwBillManagementUnpaidServiceImpl swBillManagementUnpaidService;
|
|
|
+ @Autowired
|
|
|
+ private DataSourceTransactionManager transactionManager;
|
|
|
|
|
|
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
@@ -45,7 +53,7 @@ public class BillGenerationServiceImpl {
|
|
|
return formatter.format(date);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ @Async(value = "customThreadPool")
|
|
|
public void generateBill(List<SwWaterUsageEntryDo> swWaterUsageEntryDoList) {
|
|
|
log.info("开始生成账单信息");
|
|
|
if (swWaterUsageEntryDoList == null || swWaterUsageEntryDoList.isEmpty()) {
|
|
@@ -165,15 +173,26 @@ public class BillGenerationServiceImpl {
|
|
|
* @param userSaveList 用户信息
|
|
|
* @param saveUsageEntryList 抄表记录
|
|
|
*/
|
|
|
- @Transactional(rollbackFor = Exception.class, propagation = REQUIRED)
|
|
|
+
|
|
|
public void dataSave(List<SwBillManagementUnpaidDo> swBillManagementUnpaidDos, List<SwUserManagementDo> userSaveList,
|
|
|
List<SwWaterUsageEntryDo> saveUsageEntryList) {
|
|
|
- // 抄表记录状态更新
|
|
|
- swWaterUsageEntryService.updateBatchById(saveUsageEntryList,4000);
|
|
|
- // 账单保存
|
|
|
- swBillManagementUnpaidService.saveBatch(swBillManagementUnpaidDos, 1000);
|
|
|
- // 更新用户表的本次抄表时间和本次抄表度数
|
|
|
- swUserManagementService.updateBatchById(userSaveList);
|
|
|
+ DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
|
|
+ def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
|
|
|
+ TransactionStatus status = transactionManager.getTransaction(def);
|
|
|
+ try {
|
|
|
+ // 抄表记录状态更新
|
|
|
+ swWaterUsageEntryService.updateBatchById(saveUsageEntryList,4000);
|
|
|
+ // 账单保存
|
|
|
+ swBillManagementUnpaidService.saveBatch(swBillManagementUnpaidDos, 1000);
|
|
|
+ // 更新用户表的本次抄表时间和本次抄表度数
|
|
|
+ swUserManagementService.updateBatchById(userSaveList);
|
|
|
+ // 事务性操作
|
|
|
+ transactionManager.commit(status);
|
|
|
+ } catch (Exception e) {
|
|
|
+ transactionManager.rollback(status);
|
|
|
+ log.error("账单保存异常");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|