fix: 基础数据更新增加事务控制

This commit is contained in:
zhangyanduan
2022-06-02 14:08:09 +08:00
parent 096132126d
commit 577c6c5a82
3 changed files with 148 additions and 102 deletions
@@ -27,7 +27,7 @@ public class ScheduledSync {
@Scheduled(cron="0 0 2 * * ?") @Scheduled(cron="0 0 2 * * ?")
@Async @Async
public void syncSchedulingTasks() throws Exception { public void syncSchedulingTasks() {
iDataSyncService.orgDataSync(); //时间短 iDataSyncService.orgDataSync(); //时间短
iDataSyncService.dataSync(); //时间长 iDataSyncService.dataSync(); //时间长
} }
@@ -2,7 +2,7 @@ package com.adc.da.slrs.DataSync.service;
public interface IDataSyncService { public interface IDataSyncService {
public String dataSync() throws Exception; public String dataSync();
public String orgDataSync() throws Exception; public String orgDataSync();
} }
@@ -1,5 +1,6 @@
package com.adc.da.slrs.DataSync.service.impl; package com.adc.da.slrs.DataSync.service.impl;
import com.adc.da.login.util.UserUtils;
import com.adc.da.slrs.DataSync.service.IDataSyncService; import com.adc.da.slrs.DataSync.service.IDataSyncService;
import com.adc.da.slrs.sarInstitution.entity.TsInstitution; import com.adc.da.slrs.sarInstitution.entity.TsInstitution;
import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService;
@@ -12,8 +13,13 @@ import com.adc.da.sys.entity.UserOrgEO;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.log4j.Log4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.*; import java.util.*;
@@ -29,11 +35,14 @@ public class DataSyncServiceImpl implements IDataSyncService {
@Autowired @Autowired
ITsInstitutionService tsInstitutionService; ITsInstitutionService tsInstitutionService;
private static Logger logger = LoggerFactory.getLogger(DataSyncServiceImpl.class);
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
@Override @Override
public String dataSync() throws Exception { public String dataSync(){
try{
SyncUserService syncUserService = new SyncUserService(); SyncUserService syncUserService = new SyncUserService();
List<String> res = syncUserService.syncFotonUser(); List<String> res = syncUserService.syncFotonUser();
//存放岗位信息 //存放岗位信息
@@ -132,19 +141,24 @@ public class DataSyncServiceImpl implements IDataSyncService {
// //
// List<TsUser> addUserList = Arrays.asList(addUser); // List<TsUser> addUserList = Arrays.asList(addUser);
// tsUserService.saveBatch(addUserList); // tsUserService.saveBatch(addUserList);
}catch(Exception e){
logger.error(e.getMessage(),e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return "1"; return "1";
} }
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
public String orgDataSync() throws Exception { public String orgDataSync(){
try{
SyncUserService syncUserService = new SyncUserService(); SyncUserService syncUserService = new SyncUserService();
List<String> res = syncUserService.syncFotonOrg(); List<String> res = syncUserService.syncFotonOrg();
//获取到所有用户数据 //获取到所有用户数据
List<String> strings=new ArrayList<>(); List<String> strings=new ArrayList<>();
//tsInstitutionService.clearData();
tsInstitutionService.clearData();
for (String s : res) { for (String s : res) {
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
jsonArray.forEach(object -> { jsonArray.forEach(object -> {
@@ -152,8 +166,12 @@ public class DataSyncServiceImpl implements IDataSyncService {
strings.add(jsonObject.getString("parentOrgNumber")); strings.add(jsonObject.getString("parentOrgNumber"));
}); });
} }
List<TsInstitution> allTsInstitutionList = tsInstitutionService.list();
for (String s : res) { for (String s : res) {
List<TsInstitution> tsInstitutions = new ArrayList<>(); List<TsInstitution> addTsInstitutionList = new ArrayList<>();
List<TsInstitution> updateTsInstitutionList = new ArrayList<>();
List<TsInstitution> delTsInstitutionList = new ArrayList<>();
Set<String> syncAllIdList = new HashSet<>();
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
jsonArray.forEach(object -> { jsonArray.forEach(object -> {
JSONObject jsonObject = JSONObject.parseObject(object.toString()); JSONObject jsonObject = JSONObject.parseObject(object.toString());
@@ -164,10 +182,38 @@ public class DataSyncServiceImpl implements IDataSyncService {
tsInstitution.setParentId(jsonObject.getString("parentOrgNumber")); tsInstitution.setParentId(jsonObject.getString("parentOrgNumber"));
//部门为"null"的数据不保存 //部门为"null"的数据不保存
if (!"null".equals(jsonObject.getString("orgName"))){ if (!"null".equals(jsonObject.getString("orgName"))){
tsInstitutions.add(tsInstitution); TsInstitution institution = tsInstitutionService.getById(tsInstitution.getId());
if(institution!=null){
updateTsInstitutionList.add(tsInstitution);
}else{
addTsInstitutionList.add(tsInstitution);
}
syncAllIdList.add(tsInstitution.getId());
} }
}); });
tsInstitutionService.saveBatch(tsInstitutions); //遍历出来需要删除的数据
for(TsInstitution data :allTsInstitutionList){
if(!syncAllIdList.contains(data.getId())){
delTsInstitutionList.add(data);
}
}
//需要新增的数据
if(!addTsInstitutionList.isEmpty()){
tsInstitutionService.saveBatch(addTsInstitutionList);
}
//需要更新的数据
if(!updateTsInstitutionList.isEmpty()){
tsInstitutionService.updateBatchById(updateTsInstitutionList);
}
//需要删除的数据
if(!delTsInstitutionList.isEmpty()){
tsInstitutionService.updateBatchById(delTsInstitutionList);
}
}
}catch(Exception e){
logger.error(e.getMessage(),e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
return "1"; return "1";
} }