From fb72b31b43ef440e0202b9ae4013e53830550d7d Mon Sep 17 00:00:00 2001 From: zyd Date: Wed, 8 Jun 2022 10:25:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E6=9E=84=E5=BA=95=E5=B1=82?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=E8=A1=A8=E6=95=B0=E6=8D=AE=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=EF=BC=8C=E6=9B=B4=E6=8D=A2=E4=B8=BA=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=88=96=E6=B7=BB=E5=8A=A0=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataSyncServiceImpl.java | 153 ++++++++---------- .../adc/da/sync/service/SyncUserService.java | 28 ++-- 2 files changed, 80 insertions(+), 101 deletions(-) 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 index 1ad2f235..9b301948 100644 --- 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 @@ -9,11 +9,14 @@ 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.constant.ValidFlagEnum; import com.adc.da.sys.entity.UserOrgEO; 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 lombok.extern.log4j.Log4j; +import org.apache.ibatis.jdbc.Null; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -40,14 +43,12 @@ public class DataSyncServiceImpl implements IDataSyncService { @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) - @Override public String dataSync(){ try{ 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); @@ -58,90 +59,76 @@ public class DataSyncServiceImpl implements IDataSyncService { positionMap.put(tsPosition.getName(), tsPosition.getId()); }); } - - /** - * 得到数据时,删除系统表中所有用户信息 - */ - if (res.size()>0){ - tsUserService.deleteUser(); - } + List addUserList = new ArrayList<>(); + List upUserList = new ArrayList<>(); 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())); + JSONObject userData = JSONObject.parseObject(s); + if(userData.containsKey("results")){ + JSONArray jsonArray = userData.getJSONArray("results"); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + String userid = jsonObject.getString("userid"); + TsUser userEO = tsUserService.getById(userid); + String userState = ""; + if(userEO != null){ + userState = "UPDATE"; + }else{ + userState = "ADD"; + userEO = new 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"))){ -// -// //测试数据修改 -// 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); + //先获取岗位以及岗位id + //设置岗位 + 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()); + //放入类中 + userEO.setPositionName(tsPosition.getName()); + userEO.setPositionId(tsPosition.getId()); + } else { + userEO.setPositionName(jsonObject.getString("title").trim()); + userEO.setPositionId(positionMap.get(jsonObject.getString("title").trim())); + } + }else{ + userEO.setPositionId(null); + userEO.setPositionName(null); + } + //设置其他数据 + Timestamp createTime = new Timestamp(new Date().getTime()); + userEO.setState(jsonObject.getString("userStatus")); + userEO.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):""); + userEO.setCreationTime(createTime); + userEO.setUserId(jsonObject.getString("userid")); + userEO.setAccount(jsonObject.getString("userid")); + userEO.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" ); + userEO.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" ); + //2022-05-23:用户同步增加状态标识,将停用的用户过滤掉 + if("1".equals(jsonObject.getString("userStatus"))){ + userEO.setValidFlag(ValidFlagEnum.VALID_FALSE.getValue()+""); + userEO.setDisableFlag(ValidFlagEnum.VALID_FALSE.getValue()+""); + }else{ + userEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()+""); + userEO.setDisableFlag(ValidFlagEnum.VALID_TRUE.getValue()+""); + } + if("ADD".equals(userState)){ + addUserList.add(userEO); + }else { + upUserList.add(userEO); + } + }); + } + } + if(!addUserList.isEmpty()){ + tsUserService.saveBatch(addUserList); + } + if(!upUserList.isEmpty()){ + tsUserService.updateBatchById(upUserList); } - - //测试数据添加 -// 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); - }catch(Exception e){ logger.error(e.getMessage(),e); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); diff --git a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java index 673dd50c..5927b3e0 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncUserService.java @@ -19,10 +19,6 @@ import java.util.Map; @Slf4j public class SyncUserService { - public static void main(String[] args) throws Exception { - SyncUserService syncUserService=new SyncUserService(); - syncUserService.syncFotonUser(); - } /** * 同步福田IDM数据 @@ -46,12 +42,11 @@ public class SyncUserService { System.out.println("RequestBody:" + params.toString()); // 用户测试 String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/users/getUserList", params); - - json.add(rs); - + log.debug(rs); JSONObject responseStr = JSON.parseObject(rs); - System.out.println(rs); - log.info(rs); + if(responseStr.containsKey("status") && responseStr.getBoolean("status")){ + json.add(rs); + } if (responseStr.containsKey("cookie")) { try { JSONArray entries = responseStr.getJSONArray("cookie"); @@ -63,6 +58,7 @@ public class SyncUserService { cookie[i] = (byte) entries.getByte(i); } } catch (Exception e) { + log.error(e.getMessage(),e); if (e.getMessage().contains("is not a JSONArray")) { cookie = null; } @@ -92,13 +88,11 @@ public class SyncUserService { params.put("basedn", "ou=Organizations,o=foton.com.cn,o=isp"); // 组织测试 String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/orgs/getOrgList", params); - json.add(rs); - - - JSONObject responseStr = JSONObject.parseObject(rs); - - System.out.println(responseStr); log.info(rs); + JSONObject responseStr = JSONObject.parseObject(rs); + if(responseStr.containsKey("status") && responseStr.getBoolean("status")){ + json.add(rs); + } if (responseStr.containsKey("cookie")) { try { JSONArray entries = responseStr.getJSONArray("cookie"); @@ -110,14 +104,12 @@ public class SyncUserService { cookie[i] = (byte) entries.getByte(i); } } catch (Exception e) { - System.out.println(e); - e.printStackTrace(); + log.error(e.getMessage(),e); if (e.getMessage().contains("is not a JSONArray")) { cookie = null; } } } - } while (cookie != null); return json; }