|
@@ -8,8 +8,17 @@ import com.persagy.apm.energy.report.common.utils.DataUtils;
|
|
|
import com.persagy.apm.energy.report.common.utils.DateUtils;
|
|
|
import com.persagy.apm.energy.report.monthly.detail.business.model.Platform;
|
|
|
import com.persagy.apm.energy.report.workorder.client.WorkOrderWebClient;
|
|
|
+import com.persagy.apm.energy.report.workorder.model.WorkOrder;
|
|
|
import com.persagy.apm.energy.report.workorder.model.dto.QueryWorkOrderListByParamDTO;
|
|
|
+import com.persagy.apm.energy.report.workorder.repository.WorkOrderRepository;
|
|
|
import com.persagy.apm.energy.report.workorder.service.IWorkOrderWebService;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
+import org.elasticsearch.index.query.QueryBuilders;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
|
|
|
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
@@ -27,6 +36,8 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
|
|
|
private WorkOrderWebClient workOrderWebClient;
|
|
|
@Resource
|
|
|
private CommonService commonService;
|
|
|
+ @Autowired
|
|
|
+ private WorkOrderRepository workOrderRepository;
|
|
|
|
|
|
@Override
|
|
|
public void getPjWorkOrderRate(QueryPjPlatformParamDTO queryPjPlatformParamDTO, Platform platform) {
|
|
@@ -34,7 +45,7 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
|
|
|
Date reportDate = queryPjPlatformParamDTO.getReportDate();
|
|
|
Date startDate = DateUtils.getFirstDayOfYear(reportDate);
|
|
|
while (startDate.before(DateUtils.getMonthOff(reportDate, 1))) {
|
|
|
- date_rateMap.put(startDate, getWorkOrderCompleteRate(queryPjPlatformParamDTO.getProjectId(), startDate, queryPjPlatformParamDTO.getUserId()));
|
|
|
+ date_rateMap.put(startDate, getWorkOrderCompleteRate(queryPjPlatformParamDTO.getProjectId(), startDate));
|
|
|
startDate = DateUtils.getMonthOff(startDate, 1);
|
|
|
}
|
|
|
List<Double> monthlySummaries = date_rateMap.values().stream().collect(Collectors.toList());
|
|
@@ -65,6 +76,64 @@ public class IWorkOrderWebServiceImpl implements IWorkOrderWebService {
|
|
|
return completeRate;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private Double getWorkOrderCompleteRate(String projectId, Date reportDate) {
|
|
|
+ Double completeRate = null;
|
|
|
+ try {
|
|
|
+ Integer workCount = getWorkOrderNumByParam(projectId, reportDate, "ask_end_time");
|
|
|
+ Integer dealCount = getWorkOrderNumByParam(projectId, reportDate, "create_time");
|
|
|
+ if (null != workCount && workCount != 0) {
|
|
|
+ completeRate = Double.valueOf(dealCount) / workCount * 100;
|
|
|
+ }
|
|
|
+ return completeRate;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return completeRate;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer getWorkOrderNumByParam(String projectId, Date reportDate, String timeType) {
|
|
|
+ try {
|
|
|
+ String startTime = DateUtils.date2Str(reportDate, DateUtils.SDFSECOND);
|
|
|
+ String endTime = DateUtils.date2Str(DateUtils.getMonthOff(reportDate, 1), DateUtils.SDFSECOND);
|
|
|
+ BoolQueryBuilder queryOrderNumBuilder = createQueryParam(projectId, timeType, startTime, endTime);
|
|
|
+ NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
|
|
|
+ nativeSearchQueryBuilder.withQuery(queryOrderNumBuilder);
|
|
|
+ NativeSearchQuery query = nativeSearchQueryBuilder.build();
|
|
|
+ Page<WorkOrder> resultList = workOrderRepository.search(query);
|
|
|
+ if (null != resultList) {
|
|
|
+ return resultList.getSize();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private BoolQueryBuilder createQueryParam(String pjId, String timeType, String startTime, String endTime) {
|
|
|
+ BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
|
|
|
+ queryBuilder.must(QueryBuilders.matchQuery("project_id", pjId));
|
|
|
+ //时间查询
|
|
|
+ if (StringUtils.isNotBlank(timeType)) {
|
|
|
+ if (StringUtils.isNotBlank(startTime)) {
|
|
|
+ if ("create_time".equals(timeType)) {
|
|
|
+ queryBuilder.must(QueryBuilders.rangeQuery("create_time").gte(startTime));
|
|
|
+ } else if ("ask_end_time".equals(timeType)) {
|
|
|
+ queryBuilder.must(QueryBuilders.rangeQuery("ask_end_time").gte(startTime));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(endTime)) {
|
|
|
+ if ("create_time".equals(timeType)) {
|
|
|
+ queryBuilder.must(QueryBuilders.rangeQuery("create_time").lt(endTime));
|
|
|
+ } else if ("ask_end_time".equals(timeType)) {
|
|
|
+ queryBuilder.must(QueryBuilders.rangeQuery("ask_end_time").lt(endTime));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return queryBuilder;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public void getAreaWorkOrderRate(QueryAreaPlatformParamDTO queryAreaPlatformParamDTO, Platform platform) {
|
|
|
// 合格标准
|