|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.constant.ScreenConstant; |
|
|
|
import com.epmet.dto.extract.form.ExtractScreenFormDTO; |
|
|
|
import com.epmet.dto.extract.form.ScreenExtractFormDTO; |
|
|
|
import com.epmet.dto.extract.form.ScreenPartyBranchDataFormDTO; |
|
|
|
import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO; |
|
|
@ -64,7 +65,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
* @date 2020/9/24 5:10 下午 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public Boolean partyGuideExtract(ScreenExtractFormDTO screenExtractFormDTO) { |
|
|
|
public Boolean partyGuideExtract(ExtractScreenFormDTO screenExtractFormDTO) { |
|
|
|
int pageNo = NumConstant.ONE; |
|
|
|
int pageSize = NumConstant.ONE_HUNDRED; |
|
|
|
List<String> customerIds = new ArrayList<>(); |
|
|
@ -181,14 +182,18 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
*/ |
|
|
|
public void disPoseParty(List<CustomerAgencyInfoResultDTO> agencyIdList, Boolean isGrid, String customerId, String monthId) { |
|
|
|
List<ScreenPartyLinkMassesDataFormDTO> result = new ArrayList<>(); |
|
|
|
// 判断当前级别agency是否为空
|
|
|
|
if (!CollectionUtils.isEmpty(agencyIdList)){ |
|
|
|
// 获取agencyIds
|
|
|
|
List<String> orgIds = agencyIdList.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); |
|
|
|
if (isGrid == true){ |
|
|
|
agencyIdList.forEach(agency -> { |
|
|
|
// 计算社区级别的下级(实际就是网格)
|
|
|
|
GridPartyGuideDTO gridPartyGuideDTO = communityLevelSubGrid(customerId, monthId, agency); |
|
|
|
orgIds.addAll(gridPartyGuideDTO.getOrgIds()); |
|
|
|
result.addAll(gridPartyGuideDTO.getResult()); |
|
|
|
}); |
|
|
|
// 根据agencyId分组,计算各个社区的
|
|
|
|
Map<String, List<ScreenPartyLinkMassesDataFormDTO>> groupByAgency = result.stream().collect(Collectors.groupingBy(ScreenPartyLinkMassesDataFormDTO::getParentId)); |
|
|
|
groupByAgency.forEach((agencyId,gridList) -> { |
|
|
|
ScreenPartyLinkMassesDataFormDTO form = new ScreenPartyLinkMassesDataFormDTO(); |
|
|
@ -224,6 +229,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
// 不为空 存在直属网格
|
|
|
|
if (!CollectionUtils.isEmpty(disGridIds)){ |
|
|
|
List<ScreenPartyLinkMassesDataFormDTO> gridResult = new ArrayList<>(); |
|
|
|
// 查询党员创建组,组内成员数
|
|
|
|
List<ScreenPartyLinkMassesDataFormDTO> partyLinkMassesDataList = groupMainService.selectPartyCreateGroupInfo(customerId, monthId, disGridIds); |
|
|
|
List<OrgNameResultDTO> orgNameList = agencyService.selectOrgNameGrid(partyLinkMassesDataList.stream().map(m -> m.getOrgId()).collect(Collectors.toList())); |
|
|
|
if (!CollectionUtils.isEmpty(partyLinkMassesDataList)){ |
|
|
@ -239,6 +245,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
} |
|
|
|
delAndInsertLink(gridResult,customerId,monthId,disGridIds); |
|
|
|
} |
|
|
|
// 查询直属网格的信息 + 下级机关的信息 = agency的机关信息
|
|
|
|
List<ScreenPartyLinkMassesDataFormDTO> screenPartyLinkMassesDataGrid = groupMainService.selectPartyCreateGroupInfo(customerId, monthId, disGridIds); |
|
|
|
List<ScreenPartyLinkMassesDataFormDTO> screenPartyLinkMassesDataList = linkMassesDataService.selectPartyLinkMassesInfo(customerId, monthId, agencyId); |
|
|
|
screenPartyLinkMassesDataList.addAll(screenPartyLinkMassesDataGrid); |
|
|
@ -262,6 +269,12 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 处理【参与人数,组织次数】 |
|
|
|
* eg:假设 组织A:A1 组织的直属网格:A1-G1 |
|
|
|
* 统计 A1的参与人数、组织次数应为 |
|
|
|
* |
|
|
|
* 组织次数:以A1的名义组织活动次数 + 以A1-G1的名义组织活动次数 = A1组织活动总次数 |
|
|
|
* 参与人数:以A1的名义组织活动参与人数和 + 以A1-G1的名义组织活动参与人数和 = A1组织活动参与人数总数 |
|
|
|
* |
|
|
|
* @Param agencyIdList |
|
|
|
* @Param isGrid |
|
|
|
* @Param customerId |
|
|
@ -271,7 +284,9 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
*/ |
|
|
|
public void disPoseOrganize(List<CustomerAgencyInfoResultDTO> agencyIdList, Boolean isGrid, String customerId, String monthId){ |
|
|
|
if (!CollectionUtils.isEmpty(agencyIdList)){ |
|
|
|
// 包括 gridId 和 agencyId
|
|
|
|
List<String> orgIds = new ArrayList<>(); |
|
|
|
// orgIdsAgency 客户下某个级别的所有agencyId
|
|
|
|
List<String> orgIdsAgency = agencyIdList.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); |
|
|
|
orgIds.addAll(orgIdsAgency); |
|
|
|
orgIdsAgency.forEach(orgId -> { |
|
|
@ -283,8 +298,11 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
if (isGrid == false){ |
|
|
|
orgIds.addAll(directGridIds.stream().map(m -> m.getGridId()).collect(Collectors.toList())); |
|
|
|
} |
|
|
|
// 查询客户下所有机关,网格下的参与人数
|
|
|
|
List<JoinUserCountResultDTO> joinUserCountList = actUserRelationService.selectJoinUserCount(customerId, monthId, null); |
|
|
|
// 查询机关界别的组织次数
|
|
|
|
List<ScreenPartyBranchDataFormDTO> screenPartyBranchDataByAgencyList = actInfoService.selectActInfo(customerId, monthId, ScreenConstant.AGENCY, orgIds); |
|
|
|
// 查询客户下所有网格和所有机关
|
|
|
|
List<ScreenPartyBranchDataFormDTO> screenPartyBranchData = agencyService.selectAllAgencyIdToOrganize(customerId, monthId); |
|
|
|
List<ScreenPartyBranchDataFormDTO> screenPartyBranchDataListAgencyAll = gridService.selectAllGridIdToOrganize(customerId, monthId); |
|
|
|
screenPartyBranchDataListAgencyAll.addAll(screenPartyBranchData); |
|
|
@ -296,10 +314,10 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
// 查询所有机关、网格组织次数
|
|
|
|
List<ScreenPartyBranchDataFormDTO> screenPartyBranchDataList = actInfoService.selectActInfo(customerId, monthId, null, orgIds); |
|
|
|
if (isGrid == true){ |
|
|
|
agencyIdList.forEach(agency -> { |
|
|
|
|
|
|
|
finalResult.forEach(fl -> { |
|
|
|
screenPartyBranchDataList.forEach(sp -> { |
|
|
|
if (fl.getOrgId().equals(sp.getOrgId())){ |
|
|
@ -324,6 +342,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
if (fl.getOrgId().equals(agencyId)){ |
|
|
|
fl.setOrganizeCount(actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount))); |
|
|
|
fl.setJoinUserCount(actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getJoinUserCount))); |
|
|
|
// 如果存在本级名义的, 下级机关 + 本级
|
|
|
|
screenPartyBranchDataByAgencyList.forEach(organize -> { |
|
|
|
if (organize.getOrgId().equals(agencyId)){ |
|
|
|
fl.setOrganizeCount(calAdd(organize.getOrganizeCount(),actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount)))); |
|
|
@ -377,6 +396,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
if (form.getOrgId().equals(agencyId)) { |
|
|
|
form.setJoinUserCount(screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getJoinUserCount))); |
|
|
|
form.setOrganizeCount(screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount))); |
|
|
|
// 如果存在本级名义的, 下级机关 + 本级
|
|
|
|
screenPartyBranchDataByParentList.forEach(organize -> { |
|
|
|
if (organize.getOrgId().equals(agencyId)) { |
|
|
|
form.setOrganizeCount(calAdd(organize.getOrganizeCount(), screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount)))); |
|
|
@ -397,6 +417,13 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 加法运算 |
|
|
|
* @Param a |
|
|
|
* @Param b |
|
|
|
* @author zxc |
|
|
|
* @date 2020/9/28 3:17 下午 |
|
|
|
*/ |
|
|
|
public Integer calAdd(Integer a, Integer b){ |
|
|
|
if (null != a && null != b){ |
|
|
|
return a + b; |
|
|
@ -473,7 +500,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description |
|
|
|
* @Description 【组织次数,参与人数】添加 |
|
|
|
* @Param result |
|
|
|
* @Param customerId |
|
|
|
* @Param monthId |
|
|
@ -489,6 +516,14 @@ public class PartyGuideServiceImpl implements PartyGuideService { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 【组织次数,参与人数】旧纪录删除 |
|
|
|
* @Param customerId |
|
|
|
* @Param monthId |
|
|
|
* @Param orgIds |
|
|
|
* @author zxc |
|
|
|
* @date 2020/9/28 3:18 下午 |
|
|
|
*/ |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delOrganize(String customerId, String monthId, List<String> orgIds){ |
|
|
|
Integer delNum; |
|
|
|