fix: 基础数据更新增加事务控制
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
+55
-9
@@ -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";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user