@@ -32,7 +32,13 @@ public class GovBusinessStrip implements Serializable { | |||||
private Long updateBy; | private Long updateBy; | ||||
/** | |||||
* 条线code | |||||
*/ | |||||
private String businessStripCode; | private String businessStripCode; | ||||
/** | |||||
* 条线名称 | |||||
*/ | |||||
private String businessStripName; | private String businessStripName; | ||||
} | } |
@@ -0,0 +1,22 @@ | |||||
package com.ningdatech.pmapi.organization.helper; | |||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
import java.util.List; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/3/8 下午3:23 | |||||
*/ | |||||
public interface GovBusinessStripHelper { | |||||
/** | |||||
* 获取上级条线单位 | |||||
* | |||||
* @param organizationCode | |||||
* @return | |||||
*/ | |||||
List<DingOrganization> getSupGovBusinessStrip(String organizationCode); | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package com.ningdatech.pmapi.organization.helper.impl; | |||||
import com.ningdatech.pmapi.organization.helper.GovBusinessStripHelper; | |||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
import com.ningdatech.pmapi.organization.service.IDingOrganizationService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.ArrayList; | |||||
import java.util.HashSet; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/3/8 下午3:34 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class GovBusinessStripHelperImpl implements GovBusinessStripHelper { | |||||
private final IDingOrganizationService organizationService; | |||||
@Override | |||||
public List<DingOrganization> getSupGovBusinessStrip(String organizationCode) { | |||||
List<DingOrganization> supGovBusinessStripList = new ArrayList<>(); | |||||
DingOrganization dingOrganization = organizationService.getByOrgCode(organizationCode); | |||||
if (Objects.isNull(dingOrganization)) { | |||||
return null; | |||||
} | |||||
String businessStripCodes = dingOrganization.getBusinessStripCodes(); | |||||
if (StringUtils.isNotBlank(businessStripCodes)) { | |||||
String[] businessStripCodeList = businessStripCodes.split("|"); | |||||
for (String businessStripCode : businessStripCodeList) { | |||||
DingOrganization supGovBusinessStrip = getSupGovBusinessStrip(dingOrganization.getOrganizationCode(), businessStripCode); | |||||
if (Objects.nonNull(supGovBusinessStrip)) { | |||||
supGovBusinessStripList.add(supGovBusinessStrip); | |||||
} | |||||
} | |||||
} | |||||
return supGovBusinessStripList; | |||||
} | |||||
private DingOrganization getSupGovBusinessStrip(String organizationCode, String businessStripCode) { | |||||
String tempParentOrgCode = organizationCode; | |||||
HashSet<String> tempParentOrgCodeSet = new HashSet<>(); | |||||
while (true) { | |||||
if (StringUtils.isBlank(tempParentOrgCode)) { | |||||
return null; | |||||
} | |||||
// 防止脏数据导致死循环 | |||||
if (!tempParentOrgCodeSet.add(tempParentOrgCode)) { | |||||
return null; | |||||
} | |||||
DingOrganization parentOrganization = organizationService.getParentOrganization(tempParentOrgCode); | |||||
if (Objects.isNull(parentOrganization)) { | |||||
return null; | |||||
} | |||||
String businessStripCodes = parentOrganization.getBusinessStripCodes(); | |||||
if (StringUtils.isNotBlank(businessStripCode) && businessStripCodes.contains(businessStripCode)) { | |||||
return parentOrganization; | |||||
} | |||||
tempParentOrgCode = parentOrganization.getParentCode(); | |||||
} | |||||
} | |||||
} |
@@ -1,11 +1,11 @@ | |||||
package com.ningdatech.pmapi.organization.service; | package com.ningdatech.pmapi.organization.service; | ||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* 服务类 | |||||
* 服务类 | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author Lierbao | * @author Lierbao | ||||
@@ -13,4 +13,17 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
*/ | */ | ||||
public interface IDingOrganizationService extends IService<DingOrganization> { | public interface IDingOrganizationService extends IService<DingOrganization> { | ||||
/** | |||||
* 根据组织code查询组织信息 | |||||
* @param orgCode | |||||
* @return | |||||
*/ | |||||
DingOrganization getByOrgCode(String orgCode); | |||||
/** | |||||
* 根据组织code查询父组织信息 | |||||
* @param orgCode | |||||
* @return | |||||
*/ | |||||
DingOrganization getParentOrganization(String orgCode); | |||||
} | } |
@@ -1,14 +1,16 @@ | |||||
package com.ningdatech.pmapi.organization.service.impl; | package com.ningdatech.pmapi.organization.service.impl; | ||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.ningdatech.pmapi.organization.mapper.DingOrganizationMapper; | import com.ningdatech.pmapi.organization.mapper.DingOrganizationMapper; | ||||
import com.ningdatech.pmapi.organization.model.entity.DingOrganization; | |||||
import com.ningdatech.pmapi.organization.service.IDingOrganizationService; | import com.ningdatech.pmapi.organization.service.IDingOrganizationService; | ||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
/** | /** | ||||
* <p> | * <p> | ||||
* 服务实现类 | |||||
* 服务实现类 | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author Lierbao | * @author Lierbao | ||||
@@ -17,4 +19,22 @@ import org.springframework.stereotype.Service; | |||||
@Service | @Service | ||||
public class DingOrganizationServiceImpl extends ServiceImpl<DingOrganizationMapper, DingOrganization> implements IDingOrganizationService { | public class DingOrganizationServiceImpl extends ServiceImpl<DingOrganizationMapper, DingOrganization> implements IDingOrganizationService { | ||||
@Override | |||||
public DingOrganization getByOrgCode(String orgCode) { | |||||
if (StringUtils.isBlank(orgCode)) { | |||||
return null; | |||||
} | |||||
return this.getOne(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getOrganizationCode, orgCode)); | |||||
} | |||||
@Override | |||||
public DingOrganization getParentOrganization(String orgCode) { | |||||
DingOrganization dingOrganization = getByOrgCode(orgCode); | |||||
if (dingOrganization == null) { | |||||
return null; | |||||
} | |||||
String parentCode = dingOrganization.getParentCode(); | |||||
return getByOrgCode(parentCode); | |||||
} | |||||
} | } |