fix: 基础数据更新增加事务控制
This commit is contained in:
@@ -27,7 +27,7 @@ public class ScheduledSync {
|
||||
@Scheduled(cron="0 0 2 * * ?")
|
||||
|
||||
@Async
|
||||
public void syncSchedulingTasks() throws Exception {
|
||||
public void syncSchedulingTasks() {
|
||||
iDataSyncService.orgDataSync(); //时间短
|
||||
iDataSyncService.dataSync(); //时间长
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.adc.da.slrs.DataSync.service;
|
||||
|
||||
public interface IDataSyncService {
|
||||
|
||||
public String dataSync() throws Exception;
|
||||
public String dataSync();
|
||||
|
||||
public String orgDataSync() throws Exception;
|
||||
public String orgDataSync();
|
||||
}
|
||||
|
||||
+145
-99
@@ -1,5 +1,6 @@
|
||||
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.sarInstitution.entity.TsInstitution;
|
||||
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.JSONObject;
|
||||
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.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.*;
|
||||
@@ -29,77 +35,80 @@ public class DataSyncServiceImpl implements IDataSyncService {
|
||||
@Autowired
|
||||
ITsInstitutionService tsInstitutionService;
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(DataSyncServiceImpl.class);
|
||||
|
||||
|
||||
|
||||
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
|
||||
@Override
|
||||
public String dataSync() throws Exception {
|
||||
SyncUserService syncUserService = new SyncUserService();
|
||||
List<String> res = syncUserService.syncFotonUser();
|
||||
//存放岗位信息
|
||||
Map<String, String> positionMap = new HashMap<>();
|
||||
Map<String, String> useDistinct = new HashMap<>();
|
||||
TsPosition position = new TsPosition();
|
||||
position.setCurrent(1);
|
||||
position.setPageSize(100000);
|
||||
IPage<TsPosition> iPage = tsPositionService.getPosition(position);
|
||||
List<TsPosition> positions=iPage.getRecords();
|
||||
if (!positions.isEmpty()) {
|
||||
positions.forEach(tsPosition -> {
|
||||
positionMap.put(tsPosition.getName(), tsPosition.getId());
|
||||
});
|
||||
}
|
||||
public String dataSync(){
|
||||
try{
|
||||
SyncUserService syncUserService = new SyncUserService();
|
||||
List<String> res = syncUserService.syncFotonUser();
|
||||
//存放岗位信息
|
||||
Map<String, String> positionMap = new HashMap<>();
|
||||
Map<String, String> useDistinct = new HashMap<>();
|
||||
TsPosition position = new TsPosition();
|
||||
position.setCurrent(1);
|
||||
position.setPageSize(100000);
|
||||
IPage<TsPosition> iPage = tsPositionService.getPosition(position);
|
||||
List<TsPosition> positions=iPage.getRecords();
|
||||
if (!positions.isEmpty()) {
|
||||
positions.forEach(tsPosition -> {
|
||||
positionMap.put(tsPosition.getName(), tsPosition.getId());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到数据时,删除系统表中所有用户信息
|
||||
*/
|
||||
if (res.size()>0){
|
||||
tsUserService.deleteUser();
|
||||
}
|
||||
for (String s : res) {
|
||||
//获取到所有用户数据
|
||||
List<TsUser> tsUsers = new ArrayList<>();
|
||||
/**
|
||||
* 得到数据时,删除系统表中所有用户信息
|
||||
*/
|
||||
if (res.size()>0){
|
||||
tsUserService.deleteUser();
|
||||
}
|
||||
for (String s : res) {
|
||||
//获取到所有用户数据
|
||||
List<TsUser> tsUsers = new ArrayList<>();
|
||||
|
||||
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
|
||||
jsonArray.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
//先获取岗位以及岗位id
|
||||
TsUser tsUser = new TsUser();
|
||||
UserOrgEO userOrgEO = new UserOrgEO();
|
||||
//设置岗位
|
||||
if (null != jsonObject.getString("title")) {
|
||||
//通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增
|
||||
if (null == positionMap.get(jsonObject.getString("title"))) {
|
||||
TsPosition tsPosition = new TsPosition();
|
||||
tsPosition.setId(String.valueOf(UUID.randomUUID()));
|
||||
tsPosition.setName(jsonObject.getString("title"));
|
||||
tsPositionService.addPosition(tsPosition);
|
||||
//放入岗位的map集合中
|
||||
positionMap.put(tsPosition.getName(), tsPosition.getId());
|
||||
//放入类中
|
||||
tsUser.setPositionName(tsPosition.getName());
|
||||
tsUser.setPositionId(tsPosition.getId());
|
||||
} else {
|
||||
tsUser.setPositionName(jsonObject.getString("title").trim());
|
||||
tsUser.setPositionId(positionMap.get(jsonObject.getString("title").trim()));
|
||||
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
|
||||
jsonArray.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
//先获取岗位以及岗位id
|
||||
TsUser tsUser = new TsUser();
|
||||
UserOrgEO userOrgEO = new UserOrgEO();
|
||||
//设置岗位
|
||||
if (null != jsonObject.getString("title")) {
|
||||
//通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增
|
||||
if (null == positionMap.get(jsonObject.getString("title"))) {
|
||||
TsPosition tsPosition = new TsPosition();
|
||||
tsPosition.setId(String.valueOf(UUID.randomUUID()));
|
||||
tsPosition.setName(jsonObject.getString("title"));
|
||||
tsPositionService.addPosition(tsPosition);
|
||||
//放入岗位的map集合中
|
||||
positionMap.put(tsPosition.getName(), tsPosition.getId());
|
||||
//放入类中
|
||||
tsUser.setPositionName(tsPosition.getName());
|
||||
tsUser.setPositionId(tsPosition.getId());
|
||||
} else {
|
||||
tsUser.setPositionName(jsonObject.getString("title").trim());
|
||||
tsUser.setPositionId(positionMap.get(jsonObject.getString("title").trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
//设置其他数据
|
||||
Timestamp createTime = new Timestamp(new Date().getTime());
|
||||
tsUser.setState(jsonObject.getString("userStatus"));
|
||||
tsUser.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):"");
|
||||
tsUser.setValidFlag("0");
|
||||
tsUser.setDisableFlag("0");
|
||||
tsUser.setCreationTime(createTime);
|
||||
tsUser.setUserId(jsonObject.getString("userid"));
|
||||
tsUser.setAccount(jsonObject.getString("userid"));
|
||||
tsUser.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" );
|
||||
tsUser.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" );
|
||||
//2022-05-23:用户同步增加状态标识,将停用的用户过滤掉
|
||||
if (null == useDistinct.get(jsonObject.getString("userid")) && "1".equals(jsonObject.getString("userStatus"))) {
|
||||
tsUsers.add(tsUser);
|
||||
//设置其他数据
|
||||
Timestamp createTime = new Timestamp(new Date().getTime());
|
||||
tsUser.setState(jsonObject.getString("userStatus"));
|
||||
tsUser.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):"");
|
||||
tsUser.setValidFlag("0");
|
||||
tsUser.setDisableFlag("0");
|
||||
tsUser.setCreationTime(createTime);
|
||||
tsUser.setUserId(jsonObject.getString("userid"));
|
||||
tsUser.setAccount(jsonObject.getString("userid"));
|
||||
tsUser.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" );
|
||||
tsUser.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" );
|
||||
//2022-05-23:用户同步增加状态标识,将停用的用户过滤掉
|
||||
if (null == useDistinct.get(jsonObject.getString("userid")) && "1".equals(jsonObject.getString("userStatus"))) {
|
||||
tsUsers.add(tsUser);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// //测试数据删除
|
||||
// if (! "anbin".equals(jsonObject.getString("userid"))){
|
||||
@@ -113,12 +122,12 @@ public class DataSyncServiceImpl implements IDataSyncService {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
useDistinct.put(tsUser.getUserId(),tsUser.getUserId());
|
||||
});
|
||||
tsUserService.saveBatch(tsUsers);
|
||||
}
|
||||
useDistinct.put(tsUser.getUserId(),tsUser.getUserId());
|
||||
});
|
||||
tsUserService.saveBatch(tsUsers);
|
||||
}
|
||||
|
||||
//测试数据添加
|
||||
//测试数据添加
|
||||
// TsUser addUser = new TsUser();
|
||||
// addUser.setState("FFFFFFF");
|
||||
// addUser.setUname("zhaokaiyao");
|
||||
@@ -132,42 +141,79 @@ public class DataSyncServiceImpl implements IDataSyncService {
|
||||
//
|
||||
// List<TsUser> addUserList = Arrays.asList(addUser);
|
||||
// tsUserService.saveBatch(addUserList);
|
||||
|
||||
}catch(Exception e){
|
||||
logger.error(e.getMessage(),e);
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
}
|
||||
return "1";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String orgDataSync() throws Exception {
|
||||
SyncUserService syncUserService = new SyncUserService();
|
||||
List<String> res = syncUserService.syncFotonOrg();
|
||||
|
||||
//获取到所有用户数据
|
||||
List<String> strings=new ArrayList<>();
|
||||
|
||||
tsInstitutionService.clearData();
|
||||
for (String s : res) {
|
||||
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
|
||||
jsonArray.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
strings.add(jsonObject.getString("parentOrgNumber"));
|
||||
});
|
||||
}
|
||||
for (String s : res) {
|
||||
List<TsInstitution> tsInstitutions = new ArrayList<>();
|
||||
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
|
||||
jsonArray.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
TsInstitution tsInstitution=new TsInstitution();
|
||||
tsInstitution.setId(jsonObject.getString("orgNumber"));
|
||||
tsInstitution.setName(jsonObject.getString("orgName"));
|
||||
tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0");
|
||||
tsInstitution.setParentId(jsonObject.getString("parentOrgNumber"));
|
||||
//部门为"null"的数据不保存
|
||||
if (!"null".equals(jsonObject.getString("orgName"))){
|
||||
tsInstitutions.add(tsInstitution);
|
||||
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
|
||||
public String orgDataSync(){
|
||||
try{
|
||||
SyncUserService syncUserService = new SyncUserService();
|
||||
List<String> res = syncUserService.syncFotonOrg();
|
||||
//获取到所有用户数据
|
||||
List<String> strings=new ArrayList<>();
|
||||
//tsInstitutionService.clearData();
|
||||
for (String s : res) {
|
||||
JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results"));
|
||||
jsonArray.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
strings.add(jsonObject.getString("parentOrgNumber"));
|
||||
});
|
||||
}
|
||||
List<TsInstitution> allTsInstitutionList = tsInstitutionService.list();
|
||||
for (String s : res) {
|
||||
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.forEach(object -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(object.toString());
|
||||
TsInstitution tsInstitution=new TsInstitution();
|
||||
tsInstitution.setId(jsonObject.getString("orgNumber"));
|
||||
tsInstitution.setName(jsonObject.getString("orgName"));
|
||||
tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0");
|
||||
tsInstitution.setParentId(jsonObject.getString("parentOrgNumber"));
|
||||
//部门为"null"的数据不保存
|
||||
if (!"null".equals(jsonObject.getString("orgName"))){
|
||||
TsInstitution institution = tsInstitutionService.getById(tsInstitution.getId());
|
||||
if(institution!=null){
|
||||
updateTsInstitutionList.add(tsInstitution);
|
||||
}else{
|
||||
addTsInstitutionList.add(tsInstitution);
|
||||
}
|
||||
syncAllIdList.add(tsInstitution.getId());
|
||||
}
|
||||
});
|
||||
//遍历出来需要删除的数据
|
||||
for(TsInstitution data :allTsInstitutionList){
|
||||
if(!syncAllIdList.contains(data.getId())){
|
||||
delTsInstitutionList.add(data);
|
||||
}
|
||||
}
|
||||
});
|
||||
tsInstitutionService.saveBatch(tsInstitutions);
|
||||
//需要新增的数据
|
||||
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";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user