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 f5a0e5b6..c117d5bf 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 @@ -50,7 +50,7 @@ public class DataSyncController { @ApiOperation("同步组织机构") @PostMapping("/importOrgData") public String importOrgData() throws Exception { - return iDataSyncService.orgDataSync(); + return iDataSyncService.orgDataSync2(); } @ApiOperation("同步组织机构,添加参数") 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 index 8ba11071..3b1c3942 100644 --- 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 @@ -8,8 +8,10 @@ public interface IDataSyncService { public String dataSync(); public String dataSync2(Long chuo); - + // 定时增量同步 public String orgDataSync(); + // 手动全量同步 + public String orgDataSync2(); public String updateByOrgs(); } 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 2c23db83..9a852a50 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 @@ -469,7 +469,7 @@ public class DataSyncServiceImpl implements IDataSyncService { } - + // 增量同步部门数据 @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) public String orgDataSync(){ try{ @@ -532,7 +532,7 @@ public class DataSyncServiceImpl implements IDataSyncService { tsInstitutionService.updateBatchById(updateTsInstitutionList); } //需要删除的数据 - // 先行注释,会删除所有部门 + // 增量同步,不作删除 // if(!delTsInstitutionList.isEmpty()){ // logger.debug("本次删除的组织机构为:"+JSONObject.toJSONString(delTsInstitutionList)); // List delIdList = new ArrayList<>(); @@ -562,6 +562,99 @@ public class DataSyncServiceImpl implements IDataSyncService { return "1"; } + // 手动全量同步部门信息 + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + public String orgDataSync2(){ + try{ + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonOrg2(); + if(res!=null && !res.isEmpty()){ + res.forEach(each -> logger.info("同步部门数据:"+each)); + //获取到所有用户数据 + 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")); + }); + } + List allTsInstitutionList = tsInstitutionService.list(); + List addTsInstitutionList = new ArrayList<>(); + List updateTsInstitutionList = new ArrayList<>(); + List delTsInstitutionList = new ArrayList<>(); + Set syncAllIdList = new HashSet<>(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + if(jsonArray!=null){ + 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); + } + } + //需要新增的数据 + if(!addTsInstitutionList.isEmpty()){ + logger.debug("本次新增的组织机构为:"+JSONObject.toJSONString(addTsInstitutionList)); + tsInstitutionService.saveBatch(addTsInstitutionList); + } + //需要更新的数据 + if(!updateTsInstitutionList.isEmpty()){ + logger.debug("本次更新的组织机构为:"+JSONObject.toJSONString(updateTsInstitutionList)); + tsInstitutionService.updateBatchById(updateTsInstitutionList); + } + //需要删除的数据 + // 先行注释,会删除所有部门 + if(!delTsInstitutionList.isEmpty()){ + logger.debug("本次删除的组织机构为:"+JSONObject.toJSONString(delTsInstitutionList)); + List delIdList = new ArrayList<>(); + for(TsInstitution data : delTsInstitutionList){ + delIdList.add(data.getId()); + } + tsInstitutionService.removeByIds(delIdList); + } + //全部部门 + List allTsInstitutionListForPids = new ArrayList<>(addTsInstitutionList); + allTsInstitutionListForPids.addAll(updateTsInstitutionList); + for (TsInstitution tsInstitution : allTsInstitutionListForPids){ + List parentIds = new ArrayList<>(); + getParentTaxCompanyIds(allTsInstitutionListForPids, tsInstitution.getId(), parentIds); + tsInstitution.setParentIds(String.join(",",parentIds)); + } + if (! allTsInstitutionListForPids.isEmpty()) { + tsInstitutionService.updateBatchById(allTsInstitutionListForPids); + } + }else{ + logger.info("本次获取组织机构的数据为空,原因有2种:1、没有同步数据 2、请求接口报错"); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return "1"; + } + public String updateByOrgs(){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.ne("id",""); diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index 96474c70..cd783eb7 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -5029,27 +5029,35 @@ public class SarBussionessStandServiceImpl extends ServiceImpl onlineFileLogWrapper = new QueryWrapper<>(); onlineFileLogWrapper.eq("ATT_FILE_ID",sarBussStandFiles.get(0).getOriAttId()); List onlineFileLogs = onlineFileLogDao.selectList(onlineFileLogWrapper); + QueryWrapper webFileWrapper = new QueryWrapper<>(); + webFileWrapper.eq("ORI_ATT_ID", sarBussStandFiles.get(0).getAttId()); + webFileWrapper.eq("USE_MODEL", "WEB_FILE"); + webFileWrapper.eq("VALID_FLAG","0"); + List webFile = sarBussStandFileEODao.selectList(webFileWrapper); + if (!webFile.isEmpty()){ + continue; + } if(!onlineFileLogs.isEmpty()){ //在线编辑的情况下,判断是否有web - QueryWrapper objectQueryWrapperSarBussStandFile = new QueryWrapper<>(); - objectQueryWrapperSarBussStandFile.eq("ORI_ATT_ID", sarBussStandFiles.get(0).getOriAttId()); - objectQueryWrapperSarBussStandFile.eq("USE_MODEL", "WEB_FILE"); - List sarBussStandFilesList = sarBussStandFileEODao.selectList(objectQueryWrapperSarBussStandFile); - if(!sarBussStandFilesList.isEmpty()){ +// QueryWrapper objectQueryWrapperSarBussStandFile = new QueryWrapper<>(); +// objectQueryWrapperSarBussStandFile.eq("ORI_ATT_ID", sarBussStandFiles.get(0).getAttId()); +// objectQueryWrapperSarBussStandFile.eq("USE_MODEL", "WEB_FILE"); +// List sarBussStandFilesList = sarBussStandFileEODao.selectList(objectQueryWrapperSarBussStandFile); +// if(!sarBussStandFilesList.isEmpty()){ //删除当前pdf文件 - AttFileEO fileInfo = attFileEOService.getFileInfo(sarBussStandFilesList.get(0).getAttId()); - logger.info("要删除的文件ID:{},文件名:{},文件路径:{}",fileInfo.getId(),fileInfo.getFileName(),fileInfo.getFilePath()); - if(fileInfo!=null) { - File file = new File(filePath + fileInfo.getFilePath() + fileInfo.getFileName()); - if(file.exists()){ - logger.info("删除PDF文件,文件路径:" + file.getAbsolutePath()); - boolean deleted = file.delete(); - logger.info("删除结果:{}", deleted); - } - attFileEOService.deleteById(sarBussStandFilesList.get(0).getAttId()); - sarBussStandFileEODao.deleteById(sarBussStandFilesList.get(0).getId()); - } - } +// AttFileEO fileInfo = attFileEOService.getFileInfo(sarBussStandFilesList.get(0).getAttId()); +// logger.info("要删除的文件ID:{},文件名:{},文件路径:{}",fileInfo.getId(),fileInfo.getFileName(),fileInfo.getFilePath()); +// if(fileInfo!=null) { +// File file = new File(filePath + fileInfo.getFilePath() + fileInfo.getFileName()); +// if(file.exists()){ +// logger.info("删除PDF文件,文件路径:" + file.getAbsolutePath()); +// boolean deleted = file.delete(); +// logger.info("删除结果:{}", deleted); +// } +// attFileEOService.deleteById(sarBussStandFilesList.get(0).getAttId()); +// sarBussStandFileEODao.deleteById(sarBussStandFilesList.get(0).getId()); +// } +// } if(StringUtils.isNotBlank(onlineFileLogs.get(0).getOLdFileName()) && StringUtils.isNotBlank(onlineFileLogs.get(0).getFilekey()) && StringUtils.isNotBlank(onlineFileLogs.get(0).getFilePath())){ try { logger.info("======================================远程调用转换开始启动================================="); 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 8184a61e..32754671 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 @@ -131,7 +131,6 @@ public class SyncUserService { Calendar calendar = Calendar.getInstance(); String timestamp = sdf.format(calendar.getTime()); params.put("timestamp", timestamp); - // 组织参数 params.put("filter", "(orgNumber=*)"); params.put("basedn", "ou=Organizations,o=foton.com.cn,o=isp"); @@ -162,4 +161,47 @@ public class SyncUserService { } while (cookie != null); return json; } + // 不添加时间戳,全量同步部门信息 + public List syncFotonOrg2()throws Exception{ + String appuser = "app_slrs"; + String appkey = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe"; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + AuthUtils util = new AuthUtils(appuser, appkey, null); + + byte[] cookie = null; + List json=new ArrayList<>(); + do { + Map params = new HashMap(); + params.put("cookie", Base64.encodeBase64String(cookie)); + params.put("timestamp",""); + // 组织参数 + params.put("filter", "(orgNumber=*)"); + params.put("basedn", "ou=Organizations,o=foton.com.cn,o=isp"); + // 组织测试 + String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/orgs/getOrgList", params); + 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"); + if(entries==null){ + break; + } + cookie = new byte[entries.size()]; + for (int i = 0; i < entries.size(); i++) { + cookie[i] = (byte) entries.getByte(i); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + if (e.getMessage().contains("is not a JSONArray")) { + cookie = null; + } + } + } + } while (cookie != null); + return json; + } }