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 f3cfe90c..31d7d7b2 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 @@ -66,5 +66,11 @@ public class DataSyncController { return iDataSyncService.orgDataSync(); } + @ApiOperation("同步组织机构,添加参数") + @PostMapping("/updateByOrgs") + public String updateByOrgs() throws Exception { + return iDataSyncService.updateByOrgs(); + } + } 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 8091c730..5b174abe 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,4 +8,6 @@ public interface IDataSyncService { public String dataSync(); public String orgDataSync(); + + 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 d825281f..a65524ea 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 @@ -6,6 +6,7 @@ import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarInstitution.dao.TsInstitutionDao; import com.adc.da.slrs.sarInstitution.entity.TsInstitution; import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; import com.adc.da.slrs.sarPosition.entity.TsPosition; @@ -51,6 +52,8 @@ public class DataSyncServiceImpl implements IDataSyncService { @Autowired ITsInstitutionService tsInstitutionService; @Autowired + TsInstitutionDao tsInstitutionDao; + @Autowired private ISarStandardsInfoService iSarStandardsInfoService; @Autowired private ISarBussionessStandService iSarBussionessStandService; @@ -354,6 +357,7 @@ public class DataSyncServiceImpl implements IDataSyncService { } + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) public String orgDataSync(){ try{ @@ -423,6 +427,15 @@ public class DataSyncServiceImpl implements IDataSyncService { } 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)); + } + tsInstitutionService.updateBatchById(allTsInstitutionListForPids); }else{ logger.info("本次获取组织机构的数据为空,原因有2种:1、没有同步数据 2、请求接口报错"); } @@ -432,4 +445,39 @@ public class DataSyncServiceImpl implements IDataSyncService { } return "1"; } + + public String updateByOrgs(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("id",""); + List tsInstitutions = tsInstitutionDao.selectList(queryWrapper); + //全部部门 + List allTsInstitutionListForPids = new ArrayList<>(tsInstitutions); +// allTsInstitutionListForPids.addAll(updateTsInstitutionList); + for (TsInstitution tsInstitution : allTsInstitutionListForPids){ + List parentIds = new ArrayList<>(); + getParentTaxCompanyIds(allTsInstitutionListForPids, tsInstitution.getId(), parentIds); + tsInstitution.setParentIds(String.join(",",parentIds)); + logger.info(String.valueOf(tsInstitution)); + } + tsInstitutionService.updateBatchById(allTsInstitutionListForPids); + return allTsInstitutionListForPids.toString(); + } + + /** + * 递归获取父级ids + * @param taxCompanyList + * @param id + */ + private void getParentTaxCompanyIds(List taxCompanyList, String id, List parentIds) { + for (TsInstitution taxCompany : taxCompanyList) { + if (StringUtils.isEmpty(taxCompany.getParentId())) { + continue; + } + //判断是否有父节点 + if (id.equals(taxCompany.getId())) { + parentIds.add(taxCompany.getParentId()); + getParentTaxCompanyIds(taxCompanyList, taxCompany.getParentId(), parentIds); + } + } + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java index 8889a405..c47640b6 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java @@ -38,6 +38,8 @@ public class TsInstitution extends BaseEntity { @ApiModelProperty(value = "上级机构") private String parentId; + private String parentIds; + @ApiModelProperty(value = "机构层级") private Integer level; 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 e1c7977b..f8ec0b0a 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 @@ -460,29 +460,29 @@ public class TsUserServiceImpl extends ServiceImpl implements public IPage getAllUsers(TsUser tsUser) { List ids=new ArrayList<>(); ids.add(tsUser.getInstitutionId()); - List middle=new ArrayList<>(); - middle.addAll(ids); - boolean flag=true; - while (flag){ - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.in("parent_id",middle); - List tsmiddle=tsInstitutionService.list(queryWrapper); - if (tsmiddle.size()>0){ - tsmiddle.forEach(tsInstitution -> { - middle.add(tsInstitution.getId()); - }); - middle.removeAll(ids); - ids.addAll(middle); - }else { - tsmiddle.forEach(tsInstitution -> { - middle.add(tsInstitution.getId()); - }); - middle.removeAll(ids); - ids.addAll(middle); - flag=false; - } - } - ids.removeIf(s -> null==s); +// List middle=new ArrayList<>(); +// middle.addAll(ids); +// boolean flag=true; +// while (flag){ +// QueryWrapper queryWrapper=new QueryWrapper<>(); +// queryWrapper.in("parent_id",middle); +// List tsmiddle=tsInstitutionService.list(queryWrapper); +// if (tsmiddle.size()>0){ +// tsmiddle.forEach(tsInstitution -> { +// middle.add(tsInstitution.getId()); +// }); +// middle.removeAll(ids); +// ids.addAll(middle); +// }else { +// tsmiddle.forEach(tsInstitution -> { +// middle.add(tsInstitution.getId()); +// }); +// middle.removeAll(ids); +// ids.addAll(middle); +// flag=false; +// } +// } +// ids.removeIf(s -> null==s); Page tsUserPage = new Page<>(); tsUserPage.setCurrent(tsUser.getCurrent()); tsUserPage.setSize(tsUser.getSize()); diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml index 5950d26a..f32be093 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml @@ -82,6 +82,8 @@ on u.usid=up.user_id left join ts_position p on up.position_id=p.id + left join ts_institution ti + on ti.id = u.INSTITUTION_ID where 1=1 and (u.uname like concat('%',#{TsUser.uname},'%') or u.ACCOUNT like concat(#{TsUser.uname},'%')) @@ -90,9 +92,9 @@ and u.email like concat('%',#{TsUser.email},'%') - and INSTITUTION_ID in - - #{id} + and + + ti.parent_ids like concat('%',#{id},'%') ORDER BY p.id is null,p.create_time @@ -105,6 +107,8 @@ on u.usid=up.user_id left join ts_position p on up.position_id=p.id + left join ts_institution ti + on ti.id = u.INSTITUTION_ID where 1=1 and u.uname like concat('%',#{TsUser.uname},'%') @@ -113,9 +117,9 @@ and u.email like concat('%',#{TsUser.email},'%') - and INSTITUTION_ID in - - #{id} + and + + ti.parent_ids like concat('%',#{id},'%')