|
|
|
|
@ -19,6 +19,7 @@ package org.springblade.modules.business.controller; |
|
|
|
|
import com.github.xiaoymin.knife4j.annotations.ApiSort; |
|
|
|
|
import io.swagger.annotations.Api; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.springblade.common.cache.DictBizCache; |
|
|
|
|
import org.springblade.common.constant.BusinessConstant; |
|
|
|
|
import org.springblade.common.constant.CommonConstant; |
|
|
|
|
@ -27,17 +28,21 @@ import org.springblade.core.mp.support.Condition; |
|
|
|
|
import org.springblade.core.mp.support.Query; |
|
|
|
|
import org.springblade.core.tenant.annotation.TenantDS; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
|
import org.springblade.modules.business.entity.Appeal; |
|
|
|
|
import org.springblade.modules.business.entity.DataEntity; |
|
|
|
|
import org.springblade.modules.business.service.ILargeScreenService; |
|
|
|
|
import org.springblade.modules.business.utils.LocalDateTimeUtils; |
|
|
|
|
import org.springblade.modules.system.entity.DictBiz; |
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping; |
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
|
|
|
|
|
|
import java.text.ParseException; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 控制器 |
|
|
|
|
@ -75,7 +80,24 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getAppealList") |
|
|
|
|
public R getAppealList(Integer timeFrame, String startTime, String endTime) { |
|
|
|
|
return R.data(largeScreenService.getAppealList()); |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return R.data(largeScreenService.getAppealList(start, end)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -83,7 +105,23 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getAppealByMon") |
|
|
|
|
public R getAppealByMon(Integer timeFrame, String startTime, String endTime) { |
|
|
|
|
return R.data(largeScreenService.getAppealByMon()); |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
return R.data(largeScreenService.getAppealByMon(start, end)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -91,7 +129,23 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getAppealTypePercent") |
|
|
|
|
public R getAppealTypePercent(Integer timeFrame, String startTime, String endTime) { |
|
|
|
|
return R.data(largeScreenService.getAppealTypePercent()); |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
return R.data(largeScreenService.getAppealTypePercent(start, end)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -108,7 +162,7 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getAppealFinishCountByLoc") |
|
|
|
|
public R getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { |
|
|
|
|
Map<String, Object> dataList = largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime); |
|
|
|
|
List<DataEntity> dataList = largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime); |
|
|
|
|
return R.data(getSortAndData(dataList)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -126,7 +180,23 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getImmediateList") |
|
|
|
|
public R getImmediateList(String streetId, Integer timeFrame, String startTime, String endTime, Query query) { |
|
|
|
|
return R.data(largeScreenService.getImmediateList(streetId, Condition.getPage(query))); |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
return R.data(largeScreenService.getImmediateList(streetId, start, end, Condition.getPage(query))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -134,7 +204,88 @@ public class ReportController extends BladeController { |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/getAppealHot") |
|
|
|
|
public R getAppealHot(Integer timeFrame, String startTime, String endTime) { |
|
|
|
|
return R.data(largeScreenService.getAppealHot()); |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
return R.data(largeScreenService.getAppealHot(start, end)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@GetMapping("getReportSort") |
|
|
|
|
public R getReportSort(Integer timeFrame, String startTime, String endTime) { |
|
|
|
|
LocalDateTime start = null; |
|
|
|
|
LocalDateTime end = null; |
|
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
|
start = LocalDateTime.parse(startTime, fmt); |
|
|
|
|
end = LocalDateTime.parse(endTime, fmt); |
|
|
|
|
} else if (timeFrame == 1) { |
|
|
|
|
start = LocalDateTimeUtils.monthStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.monthEndTime(); |
|
|
|
|
} else if (timeFrame == 2) { |
|
|
|
|
start = LocalDateTimeUtils.quarterStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.quarterEndTime(); |
|
|
|
|
} else { |
|
|
|
|
start = LocalDateTimeUtils.yearStartTime(); |
|
|
|
|
end = LocalDateTimeUtils.yearEndTime(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return R.data(largeScreenService.getReportSort(start, end)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<String, Object> getSortAndData(List<DataEntity> list) { |
|
|
|
|
// 获取全部街道
|
|
|
|
|
List<DictBiz> streetDictList = DictBizCache.getList(BusinessConstant.DICT_KEY_STREET); |
|
|
|
|
|
|
|
|
|
// 先将数据根据value做个排名
|
|
|
|
|
list.sort((o1, o2) -> o2.getValue() - o1.getValue()); |
|
|
|
|
|
|
|
|
|
// 构建返回数据
|
|
|
|
|
Map<String, Object> levelMap = new HashMap<>(); |
|
|
|
|
List<DataEntity> dataList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
for (int idx = 0; idx < list.size(); idx++) { |
|
|
|
|
String streetName = list.get(idx).getName(); |
|
|
|
|
Object streetValue = list.get(idx).getValue(); |
|
|
|
|
if (idx < 4) { |
|
|
|
|
levelMap.put(streetName, 3); |
|
|
|
|
} else if (idx < 8) { |
|
|
|
|
levelMap.put(streetName, 2); |
|
|
|
|
} else { |
|
|
|
|
levelMap.put(streetName, 1); |
|
|
|
|
} |
|
|
|
|
dataList.add(list.get(idx)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 遍历全部街道列表, 将未添加的街道数据添加上
|
|
|
|
|
streetDictList.forEach(street -> { |
|
|
|
|
String streetName = street.getDictValue(); |
|
|
|
|
if (!levelMap.containsKey(streetName)) { |
|
|
|
|
levelMap.put(streetName, 1); |
|
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
|
entity.setName(streetName); |
|
|
|
|
entity.setValue(0); |
|
|
|
|
entity.setResolveRate("0"); |
|
|
|
|
dataList.add(entity); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
Map<String, Object> resultMap = new HashMap<>(); |
|
|
|
|
resultMap.put("levelList", levelMap); |
|
|
|
|
resultMap.put("dataList", dataList); |
|
|
|
|
return resultMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<String, Map<String, Object>> getSortAndData(Map<String, Object> dataList) { |
|
|
|
|
|