From b33d2da29d35eafa3e26a299b95d4375ee3df057 Mon Sep 17 00:00:00 2001 From: "zhaokaiyao@91isoft.com" <6922339zky> Date: Thu, 14 Oct 2021 14:40:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E7=94=A8=E6=88=B7=E5=90=8C?= =?UTF-8?q?=E6=AD=A5,=E5=92=8C=E7=BB=84=E7=BB=87=E6=9C=BA=E6=9E=84?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/adc/da/scheduled/ScheduledSync.java | 33 ++++ .../da/slrs/DataSync/DataSyncController.java | 108 +---------- .../DataSync/service/IDataSyncService.java | 8 + .../service/impl/DataSyncServiceImpl.java | 173 ++++++++++++++++++ .../adc/da/slrs/sarUser/dao/TsUserDao.java | 8 +- .../slrs/sarUser/service/ITsUserService.java | 1 + .../service/impl/TsUserServiceImpl.java | 5 + 7 files changed, 232 insertions(+), 104 deletions(-) create mode 100644 adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java new file mode 100644 index 00000000..343902b9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java @@ -0,0 +1,33 @@ +package com.adc.da.scheduled; + +import com.adc.da.slrs.DataSync.DataSyncController; +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.sun.org.apache.bcel.internal.generic.NEW; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + + +/** + * 定时同步用户和组织机构信息 + */ +@EnableScheduling +@Component +@Slf4j +public class ScheduledSync { + + @Autowired + private IDataSyncService iDataSyncService; + + + @Scheduled(cron = "0 */40 * * * ?") //40分钟执行同步一次 +// @Scheduled(cron="*/5 * * * * ?") + @Async + public void syncSchedulingTasks() throws Exception { + iDataSyncService.orgDataSync(); //时间短 + iDataSyncService.dataSync(); //时间长 + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java index 24bed50b..8dc9b5ee 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java @@ -1,5 +1,6 @@ package com.adc.da.slrs.DataSync; +import com.adc.da.slrs.DataSync.service.IDataSyncService; import com.adc.da.slrs.sarInstitution.entity.TsInstitution; import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; import com.adc.da.slrs.sarInstitution.service.impl.TsInstitutionServiceImpl; @@ -17,9 +18,11 @@ import com.adc.da.sys.service.IOrgEOService; import com.adc.da.sys.service.impl.OrgEOServiceImpl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -33,117 +36,22 @@ import java.util.*; @RequestMapping("/DataSync") public class DataSyncController { + + @Autowired - ITsPositionService tsPositionService; - @Autowired - ITsUserService tsUserService; - @Autowired - ITsInstitutionService tsInstitutionService; + private IDataSyncService iDataSyncService; @ApiOperation("同步用户数据") @PostMapping("/importUserData") public String importUserData() throws Exception { - SyncUserService syncUserService = new SyncUserService(); - List res = syncUserService.syncFotonUser(); - //存放岗位信息 - Map positionMap = new HashMap<>(); - Map useDistinct = new HashMap<>(); - TsPosition position = new TsPosition(); - position.setCurrent(1); - position.setPageSize(100000); - IPage iPage = tsPositionService.getPosition(position); - List positions=iPage.getRecords(); - if (!positions.isEmpty()) { - positions.forEach(tsPosition -> { - positionMap.put(tsPosition.getName(), tsPosition.getId()); - }); - } - for (String s : res) { - //获取到所有用户数据 - List 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())); - } - } - //设置其他数据 - 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"):"" ); - if (null == useDistinct.get(jsonObject.getString("userid"))) { - tsUsers.add(tsUser); - - } - useDistinct.put(tsUser.getUserId(),tsUser.getUserId()); - }); - tsUserService.saveBatch(tsUsers); - } - - return "1"; + return iDataSyncService.dataSync(); } @ApiOperation("同步组织机构") @PostMapping("/importOrgData") public String importOrgData() throws Exception { - SyncUserService syncUserService = new SyncUserService(); - List res = syncUserService.syncFotonOrg(); - - //获取到所有用户数据 - List 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 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); - } - }); - tsInstitutionService.saveBatch(tsInstitutions); - } - return "1"; + return iDataSyncService.orgDataSync(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java new file mode 100644 index 00000000..555eb715 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.DataSync.service; + +public interface IDataSyncService { + + public String dataSync() throws Exception; + + public String orgDataSync() throws Exception; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java new file mode 100644 index 00000000..501ddc10 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java @@ -0,0 +1,173 @@ +package com.adc.da.slrs.DataSync.service.impl; + +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sync.service.SyncUserService; +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.*; + +@Service +public class DataSyncServiceImpl implements IDataSyncService { + + + @Autowired + ITsPositionService tsPositionService; + @Autowired + ITsUserService tsUserService; + @Autowired + ITsInstitutionService tsInstitutionService; + + + + + @Override + public String dataSync() throws Exception { + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonUser(); + //存放岗位信息 + Map positionMap = new HashMap<>(); + Map useDistinct = new HashMap<>(); + TsPosition position = new TsPosition(); + position.setCurrent(1); + position.setPageSize(100000); + IPage iPage = tsPositionService.getPosition(position); + List 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 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())); + } + } + //设置其他数据 + 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"):"" ); + if (null == useDistinct.get(jsonObject.getString("userid"))) { + tsUsers.add(tsUser); + + } + +// //测试数据删除 +// if (! "anbin".equals(jsonObject.getString("userid"))){ +// +// //测试数据修改 +// if ("anbing".equals(jsonObject.getString("userid"))){ +// tsUser.setUname("DDDDDD"); +// tsUsers.add(tsUser); +// } else if (null == useDistinct.get(jsonObject.getString("userid"))) { +// tsUsers.add(tsUser); +// +// } +// } + useDistinct.put(tsUser.getUserId(),tsUser.getUserId()); + }); + tsUserService.saveBatch(tsUsers); + } + + //测试数据添加 +// TsUser addUser = new TsUser(); +// addUser.setState("FFFFFFF"); +// addUser.setUname("zhaokaiyao"); +// addUser.setValidFlag("0"); +// addUser.setDisableFlag("0"); +// addUser.setCreationTime(new Timestamp(new Date().getTime())); +// addUser.setUserId("FFFFFFF"); +// addUser.setAccount("zhaokaiyao"); +// addUser.setInstitutionId("10022745"); +// addUser.setInstitutionName("福田营销其他"); +// +// List addUserList = Arrays.asList(addUser); +// tsUserService.saveBatch(addUserList); + return "1"; + } + + + + public String orgDataSync() throws Exception { + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonOrg(); + + //获取到所有用户数据 + List 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 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); + } + }); + tsInstitutionService.saveBatch(tsInstitutions); + } + return "1"; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java index d53fd821..012cc4e8 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java @@ -3,10 +3,7 @@ package com.adc.da.slrs.sarUser.dao; import com.adc.da.http.ResponseMessage; import com.adc.da.slrs.sarUser.entity.TsUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; import java.util.List; @@ -20,6 +17,9 @@ import java.util.List; */ public interface TsUserDao extends BaseMapper { + @Update("truncate table ts_user") + void deleteUser(); + /** * 查询用户已经绑定的岗位ID */ diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java index af98fb3d..3703d472 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java @@ -21,6 +21,7 @@ import java.util.List; */ public interface ITsUserService extends IService { + void deleteUser(); /** * 通过机构ID查询人员 diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java index 634e028f..02e66521 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java @@ -62,6 +62,11 @@ public class TsUserServiceImpl extends ServiceImpl implements @Autowired private TsPositionDao tsPositionDao; + + public void deleteUser(){ + tsUserDao.deleteUser(); + }; + /** * 通过机构ID查询人员 * @return List