Commit 5ce060da authored by tianyiming's avatar tianyiming

气瓶下钻页面功能-修改

parent b3d7dc54
......@@ -42,6 +42,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.math.BigDecimal;
......@@ -511,21 +512,30 @@ public class CylinderDPStatisticsServiceImpl {
public Map<String, Object> getFillingSubChart(DPFilterParamForDetailDto dpFilterParamForDetailDto) {
List<RegionModel> regionModels = stCommonService.setRegionIfRootParentAndNoAccessIf3Level(dpFilterParamForDetailDto.getCityCode());
List<String> xdata = stCommonService.buildXData(regionModels);
List<Long> fillingQuantitys = new ArrayList<>();
List<Long> offloadingVolumes = new ArrayList<>();
String startTime, endTime;
List<Double> fillingQuantitys = new ArrayList<>();
List<Double> offloadingVolumes = new ArrayList<>();
String fillingStartTime, fillingEndTime;
if (ObjectUtils.isEmpty(dpFilterParamForDetailDto.getTimeSearchOne().getBeginDate())) {
startTime = LocalDate.now().minusDays(29).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
endTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
fillingStartTime = LocalDate.now().minusDays(29).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " 00:00:00";
fillingEndTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " 23:59:59";
} else {
startTime = dpFilterParamForDetailDto.getTimeSearchOne().getBeginDate();
endTime = dpFilterParamForDetailDto.getTimeSearchOne().getBeginDate();
fillingStartTime = dpFilterParamForDetailDto.getTimeSearchOne().getBeginDate() + " 00:00:00";
fillingEndTime = dpFilterParamForDetailDto.getTimeSearchOne().getBeginDate() + " 23:59:59";
}
String cylinderVarietyName = CylinderTypeEnum.of(dpFilterParamForDetailDto.getTreeValue());
List<Map<String,Object>> list = getFillingQuantity(dpFilterParamForDetailDto, fillingStartTime, fillingEndTime);
regionModels.forEach(r -> {
long fillingQuantity = cylinderInfoMapper.queryFillingRecordByOrgCode(r.getRegionCode().toString(), startTime, endTime).stream().map(e->e.getFillingQuantity()).collect(Collectors.toList()).stream().count();
long offloadingVolume = cylinderInfoMapper.queryoffloadingByOrgCode(r.getRegionCode().toString(), startTime, endTime).stream().map(e->e.getOffloadingVolume()).collect(Collectors.toList()).stream().count();
//充装量和
List<Map<String, Object>> regionCode = list.stream().filter(e -> e.get("regionCode").toString().contains(r.getRegionCode().toString())).collect(Collectors.toList());
Double fillingQuantity = 0.0d;
if (!CollectionUtils.isEmpty(regionCode)) {
fillingQuantity = regionCode.stream().mapToDouble(e -> Double.valueOf(e.get("fillingQuantity").toString())).sum();
}
//卸液量和
String orgCode = stCommonService.getAndSetOrgCode(r.getRegionCode().toString());
List<String> collect1 = cylinderInfoMapper.queryoffloadingByOrgCode(orgCode, fillingStartTime, fillingEndTime).stream().map(e -> e.getOffloadingVolume()).collect(Collectors.toList());
Double offloadingVolume = collect1.stream().mapToDouble(Double::valueOf).sum();
fillingQuantitys.add(fillingQuantity);
offloadingVolumes.add(offloadingVolume);
});
......@@ -548,10 +558,68 @@ public class CylinderDPStatisticsServiceImpl {
result.put("fillingQuantity", fillingQuantitys);
result.put("offloadingVolume", offloadingVolumes);
result.put("legendData", legendData);
return result;
}
private List<Map<String, Object>> getFillingQuantity(DPFilterParamForDetailDto dpFilterParamForDetailDto, String fillingStartTime, String fillingEndTime) {
SearchRequest request = new SearchRequest();
request.indices("cylinder_filling");
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
// 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("regionCode", "*" + dpFilterParamForDetailDto.getCityCode() + "*"));
//匹配气瓶类型
if (!ObjectUtils.isEmpty(dpFilterParamForDetailDto.getTreeValue()) && !CylinderTypeEnum.CYLINDER.getCode().equals(dpFilterParamForDetailDto.getTreeValue())) {
BoolQueryBuilder query = QueryBuilders.boolQuery();
// 是车用气瓶,进行in查询(特种气瓶包含以下三个)
if (CylinderTypeEnum.SPECIAL_CYLINDER.getCode().equals(dpFilterParamForDetailDto.getTreeValue())) {
Collection<String> collections = new ArrayList<>();
collections.add("缠绕气瓶");
collections.add("绝热气瓶");
collections.add("内装填料气瓶");
query.must(QueryBuilders.termsQuery("cylinderVarietyName", collections.toArray()));
} else {
String cylinderVarietyName = CylinderTypeEnum.of(dpFilterParamForDetailDto.getTreeValue());
query.must(QueryBuilders.wildcardQuery("cylinderVarietyName", "*" + cylinderVarietyName + "*"));
}
boolMust.must(query);
}
SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN);
//充装时间
if (!ObjectUtils.isEmpty(fillingStartTime) && !ObjectUtils.isEmpty(fillingStartTime) ) {
BoolQueryBuilder query = QueryBuilders.boolQuery();
try {
query.must(QueryBuilders.rangeQuery("inspectionDateMs").gte(sdf.parse(fillingStartTime).getTime()));
query.must(QueryBuilders.rangeQuery("inspectionDateAfterMS").lte(sdf.parse(fillingEndTime).getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
boolMust.must(query);
}
builder.query(boolMust);
builder.sort("inspectionDateMs",SortOrder.DESC);
builder.sort("sequenceNbr",SortOrder.DESC);
builder.trackTotalHits(true);
request.source(builder);
List<Map<String, Object>> list = new LinkedList<>();
try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
for (org.elasticsearch.search.SearchHit hit : response.getHits()) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit);
Map<String,Object> map = JSONObject.toJavaObject(jsonObject.getJSONObject("sourceAsMap"), Map.class);
list.add(map);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return list;
}
public Page<ESCylinderFillingRecordDto> getFillingSubPage(DPFilterParamForDetailDto dpFilterParamForDetailDto) {
int current = dpFilterParamForDetailDto.getCurrent();
int pageSize = dpFilterParamForDetailDto.getSize();
......@@ -583,7 +651,7 @@ public class CylinderDPStatisticsServiceImpl {
}
//匹配气瓶类型
if (ObjectUtils.isEmpty(dpFilterParamForDetailDto.getTreeValue()) && !CylinderTypeEnum.CYLINDER.getCode().equals(dpFilterParamForDetailDto.getTreeValue())) {
if (!ObjectUtils.isEmpty(dpFilterParamForDetailDto.getTreeValue()) && !CylinderTypeEnum.CYLINDER.getCode().equals(dpFilterParamForDetailDto.getTreeValue())) {
flag = false;
BoolQueryBuilder query = QueryBuilders.boolQuery();
// 是车用气瓶,进行in查询(特种气瓶包含以下三个)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment