Skip to content

Commit 21af1e3

Browse files
authored
Create optimize.java
code review
1 parent 9a1552a commit 21af1e3

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

optimize.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
我优化的后的代码
2+
protected void setScanRangeV2(CrsDivisionDTO scanDivision, T detail,TagInfo tagInfo) {
3+
List<DealerDivisionRelationDTO> dealerDivisionRelations = getCrsDealerSaleAreaUsesDto(detail,tagInfo);
4+
[log.info](http://log.info/)("扫码人关联的经销的行政区划信息:{} \n 扫码人的行政区划信息:{}",JsonUtil.toJson(dealerDivisionRelations),JsonUtil.toJson(scanDivision));
5+
detail.setScanRange(checkManagementFence(scanDivision,dealerDivisionRelations) ? IN_RANGE : OUT_OF_RANGE);
6+
}
7+
private boolean checkManagementFence(CrsDivisionDTO scanDivision, List<DealerDivisionRelationDTO> dealerDivisionRelationDTOList) {
8+
return dealerDivisionRelationDTOList.stream()
9+
.anyMatch(dealerDivisionRelationDTO -> isEqualConditional(dealerDivisionRelationDTO, scanDivision));
10+
}
11+
private boolean isEqualConditional(DealerDivisionRelationDTO dealerDivisionRelationDTO, CrsDivisionDTO scanDivision) {
12+
return isEqualConditionalHelper(dealerDivisionRelationDTO.getProvinceCode(), scanDivision.getProvinceCode(), dealerDivisionRelationDTO.getCityCode()) ||
13+
isEqualConditionalHelper(dealerDivisionRelationDTO.getCityCode(), scanDivision.getCityCode(), dealerDivisionRelationDTO.getCountyCode()) ||
14+
isEqualConditionalHelper(dealerDivisionRelationDTO.getCountyCode(), scanDivision.getCountyCode(), dealerDivisionRelationDTO.getStreetCode()) ||
15+
isEqualConditionalHelper(dealerDivisionRelationDTO.getStreetCode(), scanDivision.getStreetCode(), "");
16+
}
17+
private boolean isEqualConditionalHelper(String field1, String field2, String field3) {
18+
return StringUtils.isNotBlank(field1) && field1.equals(field2) && StringUtils.isBlank(field3);
19+
}
20+
21+
优化之前的代码
22+
public static void judgeSalesAreaIfMatch(List<SaleAreaDTO> scanSalesAreaDTOList, CrsDealerSaleAreaUsesDto crsDealerSaleAreaUsesDto) {
23+
[log.info](http://log.info/)("流向分类(销售五段)判定saleAreaDTOList:{},crsDealerSaleAreaUsesDto:{}", scanSalesAreaDTOList, crsDealerSaleAreaUsesDto);
24+
List<SaleAreaUsesDto> saleAreaDTOList = crsDealerSaleAreaUsesDto.getSaleAreaUsesDtoList();
25+
if (CollectionUtils.isEmpty(scanSalesAreaDTOList)) {
26+
return;
27+
}
28+
Set<String> l2DealerSalesAreaSet = saleAreaDTOList.stream().map(SaleAreaUsesDto::getL2SaleAreaCode).collect(Collectors.toSet());
29+
Set<String> l2ScanSalesAreaSet = scanSalesAreaDTOList.stream().map(SaleAreaDTO::getL2SaleAreaCode).collect(Collectors.toSet());
30+
boolean res1 = matchByLevel(l2DealerSalesAreaSet, l2ScanSalesAreaSet);
31+
//跨大区
32+
if (!res1) {
33+
FlowDirectionJudgmentTool.getContext().setSaleAreaClassify(FlowDirectionSalesAreaEnum.CROSS_BIG_REGION);
34+
return;
35+
}
36+
Set<String> l3DealerSalesAreaSet = saleAreaDTOList.stream().map(SaleAreaUsesDto::getL3SaleAreaCode).collect(Collectors.toSet());
37+
Set<String> l3ScanSalesAreaSet = scanSalesAreaDTOList.stream().map(SaleAreaDTO::getL3SaleAreaCode).collect(Collectors.toSet());
38+
boolean res2 = matchByLevel(l3DealerSalesAreaSet, l3ScanSalesAreaSet);
39+
//跨区域
40+
if (!res2) {
41+
FlowDirectionJudgmentTool.getContext().setSaleAreaClassify(FlowDirectionSalesAreaEnum.CROSS_AREA);
42+
return;
43+
}
44+
Set<String> l4DealerSalesAreaSet = saleAreaDTOList.stream().map(SaleAreaUsesDto::getL4SaleAreaCode).collect(Collectors.toSet());
45+
Set<String> l4ScanSalesAreaSet = scanSalesAreaDTOList.stream().map(SaleAreaDTO::getL4SaleAreaCode).collect(Collectors.toSet());
46+
boolean res3 = matchByLevel(l4DealerSalesAreaSet, l4ScanSalesAreaSet);
47+
//跨区域
48+
if (!res3) {
49+
FlowDirectionJudgmentTool.getContext().setSaleAreaClassify(FlowDirectionSalesAreaEnum.CROSS_CITY_GROUP);
50+
return;
51+
}
52+
Set<String> l5DealerSalesAreaSet = saleAreaDTOList.stream().map(SaleAreaUsesDto::getL5SaleAreaCode).collect(Collectors.toSet());
53+
Set<String> l5ScanSalesAreaSet = scanSalesAreaDTOList.stream().map(SaleAreaDTO::getL5SaleAreaCode).collect(Collectors.toSet());
54+
boolean res4 = matchByLevel(l5DealerSalesAreaSet, l5ScanSalesAreaSet);
55+
//跨区域
56+
if (!res4) {
57+
FlowDirectionJudgmentTool.getContext().setSaleAreaClassify(FlowDirectionSalesAreaEnum.CROSS_CITY);
58+
return;
59+
}
60+
FlowDirectionJudgmentTool.getContext().setSaleAreaClassify(FlowDirectionSalesAreaEnum.NORMAL);
61+
62+
private static boolean matchByLevel(Set<String> dealerSalesAreaSet, Set<String> scanSalesAreaSet) {
63+
Set<String> resSet = scanSalesAreaSet.stream().filter(dealerSalesAreaSet::contains).collect(Collectors.toSet());
64+
//这一段没有匹配的数据
65+
return !CollectionUtils.isEmpty(resSet);
66+
}
67+
}

0 commit comments

Comments
 (0)