|
|
@ -13,6 +13,7 @@ import com.epmet.service.stats.DimCustomerPartymemberService; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
@ -49,7 +50,7 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
@Override |
|
|
|
public void extractGridPioneerData(String customerId, String dateId) { |
|
|
|
//查询客户下所有的网格,初始数据值为0
|
|
|
|
List<ScreenPioneerDataEntity> gridList = screenPioneerDataService.initPioneerDataList(customerId, "grid", StrConstant.EPMETY_STR); |
|
|
|
List<ScreenPioneerDataEntity> gridList = screenPioneerDataService.initPioneerDataList(customerId, "grid"); |
|
|
|
if (CollectionUtils.isEmpty(gridList)) { |
|
|
|
return; |
|
|
|
} |
|
|
@ -63,25 +64,25 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
|
|
|
|
|
|
|
|
//网格内的党员集合
|
|
|
|
List<String> partyMemberUserIds = dimCustomerPartymemberService.getPartyMemberUserIds(customerId, "grid",gridId); |
|
|
|
List<String> partyMemberUserIds = dimCustomerPartymemberService.getPartyMemberUserIds(customerId, "grid", gridId); |
|
|
|
|
|
|
|
|
|
|
|
//3、党员发布话题:
|
|
|
|
entity.setTopicTotal(getTopicTotal(customerId, partyMemberUserIds)); |
|
|
|
entity.setTopicTotal(getTopicTotal(customerId, partyMemberUserIds, gridId, null)); |
|
|
|
//4、党员发布话题占比: 网格内注册党员发布的话题总数占 网格内话题总数的 比率
|
|
|
|
if (entity.getTopicTotal() == NumConstant.ZERO) { |
|
|
|
entity.setTopicRatio(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
//当前网格内所有话题总数
|
|
|
|
int gridTopicTotal = getGridOrCommunityTopicTotal(customerId, gridId,null); |
|
|
|
int gridTopicTotal = getGridOrCommunityTopicTotal(customerId, gridId, null); |
|
|
|
entity.setTopicRatio(gridTopicTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getTopicTotal() / gridTopicTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
//当前网格内所有议题总数
|
|
|
|
int gridIssueTotal = getGridOrCommunityIssueTotal(customerId, gridId,null); |
|
|
|
int gridIssueTotal = getGridOrCommunityIssueTotal(customerId, gridId, null); |
|
|
|
if (gridIssueTotal != NumConstant.ZERO) { |
|
|
|
//5、党员发布议题
|
|
|
|
entity.setPublishIssueTotal(getParyPublishIssueTotal(customerId, partyMemberUserIds)); |
|
|
|
entity.setPublishIssueTotal(getParyPublishIssueTotal(customerId, partyMemberUserIds, gridId, null)); |
|
|
|
//6、党员发布议题占比 : 占网格内所有议题的比率
|
|
|
|
if (entity.getPublishIssueTotal() == NumConstant.ZERO) { |
|
|
|
entity.setPublishIssueRatio(BigDecimal.ZERO); |
|
|
@ -89,29 +90,29 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
entity.setPublishIssueRatio(gridIssueTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getPublishIssueTotal() / gridIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
//7、议题转项目数
|
|
|
|
entity.setShiftProjectTotal(getGridOrCommunityShiftProjectTotal(customerId, gridId,null)); |
|
|
|
entity.setShiftProjectTotal(getGridOrCommunityShiftProjectTotal(customerId, gridId, null)); |
|
|
|
//8、议题转项目占比 : 占网格内议题总数的比率
|
|
|
|
entity.setShiftProjectRatio(entity.getShiftProjectTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getShiftProjectTotal() / gridIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 9、已解决项目
|
|
|
|
entity.setResolvedProjectTotal(getGridOrCommunityClosedProjectTotal(customerId,gridId,null,"resolved")); |
|
|
|
if(entity.getResolvedProjectTotal()==NumConstant.ZERO){ |
|
|
|
entity.setResolvedProjectTotal(getGridOrCommunityClosedProjectTotal(customerId, gridId, null, "resolved")); |
|
|
|
if (entity.getResolvedProjectTotal() == NumConstant.ZERO) { |
|
|
|
entity.setResolvedProjectRatio(BigDecimal.ZERO); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
// 10、占总结项目
|
|
|
|
int closedProjectTotal=getGridOrCommunityClosedProjectTotal(customerId,gridId,null,null); |
|
|
|
entity.setResolvedProjectRatio(closedProjectTotal==NumConstant.ZERO?BigDecimal.ZERO:new BigDecimal(entity.getResolvedProjectTotal()/closedProjectTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
int closedProjectTotal = getGridOrCommunityClosedProjectTotal(customerId, gridId, null, null); |
|
|
|
entity.setResolvedProjectRatio(closedProjectTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getResolvedProjectTotal() / closedProjectTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
}); |
|
|
|
screenPioneerDataService.delAndSavePioneerData(customerId, "grid", dateId, IndexCalConstant.DELETE_SIZE, gridList); |
|
|
|
screenPioneerDataService.delAndSavePioneerData(customerId, "grid", IndexCalConstant.DELETE_SIZE, gridList); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void extractCommunityPioneerData(String customerId, String dateId) { |
|
|
|
//查询客户下所有的社区,初始数据值为0
|
|
|
|
List<ScreenPioneerDataEntity> communityList = screenPioneerDataService.initPioneerDataList(customerId, "agency", "community"); |
|
|
|
List<ScreenPioneerDataEntity> communityList = screenPioneerDataService.initPioneerDataList(customerId, "community"); |
|
|
|
if (CollectionUtils.isEmpty(communityList)) { |
|
|
|
return; |
|
|
|
} |
|
|
@ -124,25 +125,25 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
entity.setIssueRatio(BigDecimal.ZERO); |
|
|
|
|
|
|
|
//社区内的党员集合
|
|
|
|
List<String> partyMemberUserIds = dimCustomerPartymemberService.getPartyMemberUserIds(customerId, "community",communityId); |
|
|
|
List<String> partyMemberUserIds = dimCustomerPartymemberService.getPartyMemberUserIds(customerId, "community", communityId); |
|
|
|
|
|
|
|
|
|
|
|
//3、党员发布话题:
|
|
|
|
entity.setTopicTotal(getTopicTotal(customerId, partyMemberUserIds)); |
|
|
|
//4、党员发布话题占比: 网格内注册党员发布的话题总数占 网格内话题总数的 比率
|
|
|
|
entity.setTopicTotal(getTopicTotal(customerId, partyMemberUserIds, null, communityId)); |
|
|
|
//4、党员发布话题占比: 社区内注册党员发布的话题总数占 社区内话题总数的 比率
|
|
|
|
if (entity.getTopicTotal() == NumConstant.ZERO) { |
|
|
|
entity.setTopicRatio(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
//当前社区内所有话题总数
|
|
|
|
int communityTopicTotal = getGridOrCommunityTopicTotal(customerId, null,communityId); |
|
|
|
int communityTopicTotal = getGridOrCommunityTopicTotal(customerId, null, communityId); |
|
|
|
entity.setTopicRatio(communityTopicTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getTopicTotal() / communityTopicTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
//当前社区内所有议题总数
|
|
|
|
int communityIssueTotal = getGridOrCommunityIssueTotal(customerId, null,communityId); |
|
|
|
int communityIssueTotal = getGridOrCommunityIssueTotal(customerId, null, communityId); |
|
|
|
if (communityIssueTotal != NumConstant.ZERO) { |
|
|
|
//5、党员发布议题
|
|
|
|
entity.setPublishIssueTotal(getParyPublishIssueTotal(customerId, partyMemberUserIds)); |
|
|
|
entity.setPublishIssueTotal(getParyPublishIssueTotal(customerId, partyMemberUserIds, null, communityId)); |
|
|
|
//6、党员发布议题占比 : 占社区内所有议题的比率
|
|
|
|
if (entity.getPublishIssueTotal() == NumConstant.ZERO) { |
|
|
|
entity.setPublishIssueRatio(BigDecimal.ZERO); |
|
|
@ -150,42 +151,135 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
entity.setPublishIssueRatio(communityIssueTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getPublishIssueTotal() / communityIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
//7、议题转项目数
|
|
|
|
entity.setShiftProjectTotal(getGridOrCommunityShiftProjectTotal(customerId,null, communityId)); |
|
|
|
//8、议题转项目占比 : 占网格内议题总数的比率
|
|
|
|
entity.setShiftProjectTotal(getGridOrCommunityShiftProjectTotal(customerId, null, communityId)); |
|
|
|
//8、议题转项目占比 : 占社区内议题总数的比率
|
|
|
|
entity.setShiftProjectRatio(entity.getShiftProjectTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getShiftProjectTotal() / communityIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 9、已解决项目
|
|
|
|
entity.setResolvedProjectTotal(getGridOrCommunityClosedProjectTotal(customerId,null,communityId,"resolved")); |
|
|
|
if(entity.getResolvedProjectTotal()==NumConstant.ZERO){ |
|
|
|
entity.setResolvedProjectTotal(getGridOrCommunityClosedProjectTotal(customerId, null, communityId, "resolved")); |
|
|
|
if (entity.getResolvedProjectTotal() == NumConstant.ZERO) { |
|
|
|
entity.setResolvedProjectRatio(BigDecimal.ZERO); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
// 10、占总结项目
|
|
|
|
int closedProjectTotal=getGridOrCommunityClosedProjectTotal(customerId,null,communityId,null); |
|
|
|
entity.setResolvedProjectRatio(closedProjectTotal==NumConstant.ZERO?BigDecimal.ZERO:new BigDecimal(entity.getResolvedProjectTotal()/closedProjectTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
int closedProjectTotal = getGridOrCommunityClosedProjectTotal(customerId, null, communityId, null); |
|
|
|
entity.setResolvedProjectRatio(closedProjectTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getResolvedProjectTotal() / closedProjectTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
}); |
|
|
|
screenPioneerDataService.delAndSavePioneerData(customerId, "agency", dateId, IndexCalConstant.DELETE_SIZE, communityList); |
|
|
|
screenPioneerDataService.delAndSavePioneerData(customerId, "agency", IndexCalConstant.DELETE_SIZE, communityList); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void extractexceptCommunityPioneerData(String customerId, String dateId) { |
|
|
|
public void extractExceptCommunityPioneerData(String customerId, String dateId) { |
|
|
|
//查询客户下所有的社区,初始数据值为0
|
|
|
|
List<ScreenPioneerDataEntity> agencyList = screenPioneerDataService.initPioneerDataList(customerId, "agency"); |
|
|
|
if (CollectionUtils.isEmpty(agencyList)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
agencyList.forEach(entity -> { |
|
|
|
entity.setDataEndTime(dateId); |
|
|
|
String agencyId = entity.getOrgId(); |
|
|
|
//1、党员参与议事 todo
|
|
|
|
entity.setIssueTotal(NumConstant.ZERO); |
|
|
|
//2、党员参与议事占比 todo
|
|
|
|
entity.setIssueRatio(BigDecimal.ZERO); |
|
|
|
if (StringUtils.isEmpty(entity.getPid()) || NumConstant.ZERO_STR.equals(entity.getPid())) { |
|
|
|
entity.setAgencyPath(entity.getOrgId()); |
|
|
|
} else { |
|
|
|
entity.setAgencyPath(entity.getAgencyPids().concat(StrConstant.COLON).concat(entity.getOrgId())); |
|
|
|
} |
|
|
|
//组织内党员集合
|
|
|
|
List<String> partyMemberUserIds = dimCustomerPartymemberService.getPartyMemberUserIds(customerId, "agency", entity.getAgencyPath()); |
|
|
|
|
|
|
|
|
|
|
|
//3、党员发布话题:
|
|
|
|
entity.setTopicTotal(getAgencyPartyTopicTotal(customerId, partyMemberUserIds, entity.getAgencyPath())); |
|
|
|
//4、党员发布话题占比: 组织内注册党员发布的话题总数占 组织内话题总数的 比率
|
|
|
|
if (entity.getTopicTotal() == NumConstant.ZERO) { |
|
|
|
entity.setTopicRatio(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
//当前组织内所有话题总数
|
|
|
|
int agencyTopicTotal = getAgencyTopicTotal(customerId, entity.getAgencyPath()); |
|
|
|
entity.setTopicRatio(agencyTopicTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getTopicTotal() / agencyTopicTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
//当前组织内所有议题总数
|
|
|
|
int agencyIssueTotal = getAgencyIssueTotal(customerId, entity.getAgencyPath()); |
|
|
|
if (agencyIssueTotal != NumConstant.ZERO) { |
|
|
|
//5、党员发布议题
|
|
|
|
entity.setPublishIssueTotal(getAgencyParyPublishIssueTotal(customerId, partyMemberUserIds, entity.getAgencyPath())); |
|
|
|
//6、党员发布议题占比 : 占社区内所有议题的比率
|
|
|
|
if (entity.getPublishIssueTotal() == NumConstant.ZERO) { |
|
|
|
entity.setPublishIssueRatio(BigDecimal.ZERO); |
|
|
|
} |
|
|
|
entity.setPublishIssueRatio(agencyIssueTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getPublishIssueTotal() / agencyIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
//7、议题转项目数
|
|
|
|
entity.setShiftProjectTotal(getAgencyShiftProjectTotal(customerId, entity.getAgencyPath())); |
|
|
|
//8、议题转项目占比 : 占网格内议题总数的比率
|
|
|
|
entity.setShiftProjectRatio(entity.getShiftProjectTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getShiftProjectTotal() / agencyIssueTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 9、已解决项目
|
|
|
|
entity.setResolvedProjectTotal(getAgencyClosedProjectTotal(customerId, entity.getAgencyPath(), "resolved")); |
|
|
|
if (entity.getResolvedProjectTotal() == NumConstant.ZERO) { |
|
|
|
entity.setResolvedProjectRatio(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
// 10、占总结项目
|
|
|
|
int closedProjectTotal = getAgencyClosedProjectTotal(customerId, entity.getAgencyPath(), null); |
|
|
|
entity.setResolvedProjectRatio(closedProjectTotal == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(entity.getResolvedProjectTotal() / closedProjectTotal).setScale(NumConstant.SIX, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
}); |
|
|
|
screenPioneerDataService.delAndSavePioneerData(customerId, "agency", IndexCalConstant.DELETE_SIZE, agencyList); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private int getAgencyClosedProjectTotal(String customerId, String agencyPath, String resolved) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
private Integer getAgencyShiftProjectTotal(String customerId, String agencyPath) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
private Integer getAgencyParyPublishIssueTotal(String customerId, List<String> partyMemberUserIds, String agencyPath) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
private int getAgencyIssueTotal(String customerId, String agencyPath) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
private int getAgencyTopicTotal(String customerId, String agencyPath) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
private Integer getAgencyPartyTopicTotal(String customerId, List<String> partyMemberUserIds, String agencyPath) { |
|
|
|
//todo
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* @return java.lang.Integer |
|
|
|
* @param customerId |
|
|
|
* @param gridId |
|
|
|
* @param communityId |
|
|
|
* @param closedStatus 结案状态:已解决 resolved,未解决 unresolved |
|
|
|
* @return java.lang.Integer |
|
|
|
* @author yinzuomei |
|
|
|
* @description 网格内已解决项目 |
|
|
|
* @Date 2020/9/23 16:24 |
|
|
|
**/ |
|
|
|
private Integer getGridOrCommunityClosedProjectTotal(String customerId, String gridId,String communityId,String closedStatus) { |
|
|
|
return factOriginProjectMainDailyService.getGridOrCommunityClosedProjectTotal(customerId,gridId,communityId,closedStatus); |
|
|
|
private Integer getGridOrCommunityClosedProjectTotal(String customerId, String gridId, String communityId, String closedStatus) { |
|
|
|
return factOriginProjectMainDailyService.getGridOrCommunityClosedProjectTotal(customerId, gridId, communityId, closedStatus); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -196,12 +290,12 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
* @description 党员发布的话题总数 |
|
|
|
* @Date 2020/9/23 13:44 |
|
|
|
**/ |
|
|
|
private int getTopicTotal(String customerId, List<String> partyMemberUserIds) { |
|
|
|
private int getTopicTotal(String customerId, List<String> partyMemberUserIds, String gridId, String agencyId) { |
|
|
|
if (CollectionUtils.isEmpty(partyMemberUserIds)) { |
|
|
|
//如果网格内没有党员,直接返回0
|
|
|
|
return NumConstant.ZERO; |
|
|
|
} |
|
|
|
return factOriginTopicMainDailyService.calPublishedByPartyTopicCount(customerId, partyMemberUserIds); |
|
|
|
return factOriginTopicMainDailyService.calPublishedByPartyTopicCount(customerId, partyMemberUserIds, gridId, agencyId); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -212,11 +306,11 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
* @description 党员发布的议题总数 |
|
|
|
* @Date 2020/9/23 14:39 |
|
|
|
**/ |
|
|
|
private int getParyPublishIssueTotal(String customerId, List<String> partyMemberUserIds) { |
|
|
|
private int getParyPublishIssueTotal(String customerId, List<String> partyMemberUserIds, String gridId, String agencyId) { |
|
|
|
if (CollectionUtils.isEmpty(partyMemberUserIds)) { |
|
|
|
return NumConstant.ZERO; |
|
|
|
} |
|
|
|
return factOriginIssueMainDailyService.getParyPublishIssueTotal(customerId, partyMemberUserIds); |
|
|
|
return factOriginIssueMainDailyService.getParyPublishIssueTotal(customerId, partyMemberUserIds, gridId, agencyId); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -232,18 +326,16 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* @return int |
|
|
|
* @param customerId |
|
|
|
* @param communityId |
|
|
|
* @return int |
|
|
|
* @author yinzuomei |
|
|
|
* @description |
|
|
|
* @Date 2020/9/24 10:44 |
|
|
|
**/ |
|
|
|
private int getGridOrCommunityIssueTotal(String customerId, String gridId,String communityId) { |
|
|
|
return factOriginIssueMainDailyService.getGridOrCommunityIssueTotal(customerId, gridId,communityId); |
|
|
|
private int getGridOrCommunityIssueTotal(String customerId, String gridId, String communityId) { |
|
|
|
return factOriginIssueMainDailyService.getGridOrCommunityIssueTotal(customerId, gridId, communityId); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -258,19 +350,4 @@ public class PioneerDataExtractServiceImpl implements PioneerDataExtractService |
|
|
|
return factOriginTopicMainDailyService.calGridOrCommunityTopicTotal(customerId, gridId, communityId); |
|
|
|
} |
|
|
|
|
|
|
|
/*@Override |
|
|
|
public void extractStreetPioneerData(String customerId, String dateId) { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void extractDistrictPioneerData(String customerId, String dateId) { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void extractCityPioneerData(String customerId, String dateId) { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void extractProvincePioneerData(String customerId, String dateId) { |
|
|
|
}*/ |
|
|
|
} |
|
|
|