|
|
|
@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springblade.common.cache.DictBizCache; |
|
|
|
import org.springblade.common.cache.DictBizCache; |
|
|
|
import org.springblade.common.cache.UserCache; |
|
|
|
import org.springblade.common.cache.UserCache; |
|
|
|
import org.springblade.common.constant.BusinessConstant; |
|
|
|
import org.springblade.common.constant.BusinessConstant; |
|
|
|
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
import org.springblade.modules.business.entity.Appeal; |
|
|
|
import org.springblade.modules.business.entity.Appeal; |
|
|
|
import org.springblade.modules.business.entity.AppealVisitor; |
|
|
|
import org.springblade.modules.business.entity.AppealVisitor; |
|
|
|
@ -38,8 +39,10 @@ import org.springblade.modules.system.entity.User; |
|
|
|
import org.springblade.modules.system.service.IDictBizService; |
|
|
|
import org.springblade.modules.system.service.IDictBizService; |
|
|
|
import org.springblade.modules.system.service.IUserService; |
|
|
|
import org.springblade.modules.system.service.IUserService; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import software.amazon.ion.Decimal; |
|
|
|
|
|
|
|
|
|
|
|
import javax.swing.text.html.parser.Entity; |
|
|
|
import javax.swing.text.html.parser.Entity; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
@ -70,9 +73,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
// 化解成功状态数组
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
List<Integer> state = Arrays.asList(BusinessConstant.APPEAL_STATUS_AGREEMENT, BusinessConstant.APPEAL_STATUS_FINISH); |
|
|
|
state.add(2); |
|
|
|
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
// 总化解数
|
|
|
|
// 总化解数
|
|
|
|
@ -131,9 +132,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public List<Appeal> getAppealList(LocalDateTime start, LocalDateTime end) { |
|
|
|
public List<Appeal> getAppealList(LocalDateTime start, LocalDateTime end) { |
|
|
|
// 化解成功状态数组
|
|
|
|
// 化解成功状态数组
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
List<Integer> state = Arrays.asList(BusinessConstant.APPEAL_STATUS_WAITING, BusinessConstant.APPEAL_STATUS_HANDING); |
|
|
|
state.add(0); |
|
|
|
|
|
|
|
state.add(1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
// 待处理、正在处理
|
|
|
|
// 待处理、正在处理
|
|
|
|
@ -162,35 +161,14 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Map<String, List<Object>> getAppealByMon(LocalDateTime start, LocalDateTime end) { |
|
|
|
public Map<String, List<Object>> getAppealByMon(LocalDateTime start, LocalDateTime end) { |
|
|
|
Map<String, List<Object>> map = new HashMap<>(); |
|
|
|
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); |
|
|
|
List<Object> dateList = new ArrayList<>(); |
|
|
|
List<Map<String, Object>> result = appealService.getAppealByMon(start.format(fmt), end.format(fmt)); |
|
|
|
List<Object> handlerCountList = new ArrayList<>(); |
|
|
|
|
|
|
|
List<Object> finishContList = new ArrayList<>(); |
|
|
|
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
|
|
|
|
state.add(2); |
|
|
|
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 当月
|
|
|
|
|
|
|
|
Map<String, List<Object>> map0 = getStartAndEndTime(map, state, 0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 前1个月
|
|
|
|
|
|
|
|
Map<String, List<Object>> map1 = getStartAndEndTime(map0, state, 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 前2个月
|
|
|
|
|
|
|
|
Map<String, List<Object>> map2 = getStartAndEndTime(map1, state, 2); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 前3个月
|
|
|
|
|
|
|
|
Map<String, List<Object>> map3 = getStartAndEndTime(map2, state, 3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 前4个月
|
|
|
|
Map<String, List<Object>> map = new HashMap<>(); |
|
|
|
Map<String, List<Object>> map4 = getStartAndEndTime(map3, state, 4); |
|
|
|
map.put("dateList", result.stream().map(e -> e.get("mon")).collect(Collectors.toList())); |
|
|
|
|
|
|
|
map.put("handlerCountList", result.stream().map(e -> e.get("submit")).collect(Collectors.toList())); |
|
|
|
// 前5个月
|
|
|
|
map.put("finishContList", result.stream().map(e -> e.get("mediation")).collect(Collectors.toList())); |
|
|
|
return getStartAndEndTime(map4, state, 5); |
|
|
|
return map; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
@ -301,9 +279,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
|
|
|
|
// 化解成功状态数组
|
|
|
|
// 化解成功状态数组
|
|
|
|
List<Integer> state = new ArrayList<>(); |
|
|
|
List<Integer> state = Arrays.asList(BusinessConstant.APPEAL_STATUS_AGREEMENT, BusinessConstant.APPEAL_STATUS_FINISH); |
|
|
|
state.add(2); |
|
|
|
|
|
|
|
state.add(3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { |
|
|
|
@ -335,9 +311,11 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
entity.setName(name); |
|
|
|
entity.setName(name); |
|
|
|
entity.setValue(collect.get(name).size()); |
|
|
|
entity.setValue(collect.get(name).size()); |
|
|
|
|
|
|
|
|
|
|
|
String resolveRate = "0"; |
|
|
|
String resolveRate = "0%"; |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
double rate = (entity.getValue() / reportList.get(name).size()) * 100; |
|
|
|
double mediation = entity.getValue().doubleValue(); |
|
|
|
|
|
|
|
double reportNum = new Double(reportList.get(name).size()); |
|
|
|
|
|
|
|
double rate = (mediation / reportNum) * 100; |
|
|
|
resolveRate = calRate(rate); |
|
|
|
resolveRate = calRate(rate); |
|
|
|
} |
|
|
|
} |
|
|
|
entity.setResolveRate(resolveRate); |
|
|
|
entity.setResolveRate(resolveRate); |
|
|
|
@ -380,7 +358,7 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public IPage<Appeal> getImmediateList(String streetId, LocalDateTime start, LocalDateTime end, IPage<Appeal> page) { |
|
|
|
public IPage<Appeal> getImmediateList(String streetId, LocalDateTime start, LocalDateTime end, IPage<Appeal> page) { |
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeId, Appeal::getDisputeName); |
|
|
|
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeId, Appeal::getDisputeName, Appeal::getSkipGrantLevel); |
|
|
|
wrapper.eq(Appeal::getStreetId, streetId); |
|
|
|
wrapper.eq(Appeal::getStreetId, streetId); |
|
|
|
wrapper.eq(Appeal::getSkipGrant, BusinessConstant.CODE_TRUE); |
|
|
|
wrapper.eq(Appeal::getSkipGrant, BusinessConstant.CODE_TRUE); |
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
@ -438,9 +416,11 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
entity.setName(dictBiz.getDictValue()); |
|
|
|
entity.setName(dictBiz.getDictValue()); |
|
|
|
entity.setValue(street.containsKey(dictBizId) ? street.get(dictBizId).size() : 0); |
|
|
|
entity.setValue(street.containsKey(dictBizId) ? street.get(dictBizId).size() : 0); |
|
|
|
String resolveRate = "0"; |
|
|
|
String resolveRate = "0%"; |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
double rate = (entity.getValue() / reportStreetList.get(dictBizId).size()) * 100; |
|
|
|
double mediation = entity.getValue().doubleValue(); |
|
|
|
|
|
|
|
double reportNum = new Double(reportStreetList.get(dictBizId).size()); |
|
|
|
|
|
|
|
double rate = (mediation / reportNum) * 100; |
|
|
|
resolveRate = calRate(rate); |
|
|
|
resolveRate = calRate(rate); |
|
|
|
} |
|
|
|
} |
|
|
|
entity.setResolveRate(resolveRate); |
|
|
|
entity.setResolveRate(resolveRate); |
|
|
|
@ -464,10 +444,12 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
DataEntity entity = new DataEntity(); |
|
|
|
entity.setName(user.getName()); |
|
|
|
entity.setName(user.getName()); |
|
|
|
entity.setValue(town.containsKey(id) ? town.get(id).size() : 0); |
|
|
|
entity.setValue(town.containsKey(id) ? town.get(id).size() : 0); |
|
|
|
String resolveRate = "0"; |
|
|
|
String resolveRate = "0%"; |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
if (entity.getValue() > 0) { |
|
|
|
if (reportTownList.containsKey(id)) { |
|
|
|
if (reportTownList.containsKey(id)) { |
|
|
|
double rate = (entity.getValue() / reportTownList.get(id).size()) * 100; |
|
|
|
double mediation = entity.getValue().doubleValue(); |
|
|
|
|
|
|
|
double reportNum = new Double(reportTownList.get(id).size()); |
|
|
|
|
|
|
|
double rate = (mediation / reportNum) * 100; |
|
|
|
resolveRate = calRate(rate); |
|
|
|
resolveRate = calRate(rate); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
resolveRate = "100%"; |
|
|
|
resolveRate = "100%"; |
|
|
|
@ -520,42 +502,10 @@ public class LargeScreenServiceImpl implements ILargeScreenService { |
|
|
|
return map; |
|
|
|
return map; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) { |
|
|
|
|
|
|
|
List<Object> dateList = map.get("dateList"); |
|
|
|
|
|
|
|
List<Object> handlerCountList = map.get("handlerCountList"); |
|
|
|
|
|
|
|
List<Object> finishContList = map.get("finishContList"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 当月开始时间
|
|
|
|
|
|
|
|
LocalDateTime start = LocalDateTime.of(LocalDate.now().withDayOfMonth(1).minusMonths(month), LocalTime.MIDNIGHT); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 当月结束时间
|
|
|
|
|
|
|
|
LocalDateTime end = start.plusMonths(1).minusSeconds(1); |
|
|
|
|
|
|
|
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 月份:2023-06
|
|
|
|
|
|
|
|
dateList.add(start.format(dateFormatter)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 登记数
|
|
|
|
|
|
|
|
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
|
|
|
handlerCountList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 调解成功数
|
|
|
|
|
|
|
|
wrapper.clear(); |
|
|
|
|
|
|
|
wrapper.in(Appeal::getStatus, state); |
|
|
|
|
|
|
|
wrapper.between(Appeal::getFirstRegTime, start, end); |
|
|
|
|
|
|
|
finishContList.add(appealService.count(wrapper)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("dateList", dateList); |
|
|
|
|
|
|
|
map.put("handlerCountList", handlerCountList); |
|
|
|
|
|
|
|
map.put("finishContList", finishContList); |
|
|
|
|
|
|
|
return map; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String calRate(double rate) { |
|
|
|
private String calRate(double rate) { |
|
|
|
String resolveRate = String.format("%.2f", rate); |
|
|
|
String resolveRate = String.format("%.2f", rate); |
|
|
|
|
|
|
|
|
|
|
|
if ("100.00".equalsIgnoreCase(resolveRate)) { |
|
|
|
if ("100.00".equalsIgnoreCase(resolveRate) || "100.0".equalsIgnoreCase(resolveRate)) { |
|
|
|
resolveRate = "100"; |
|
|
|
resolveRate = "100"; |
|
|
|
} |
|
|
|
} |
|
|
|
if ("0.00".equalsIgnoreCase(resolveRate)) { |
|
|
|
if ("0.00".equalsIgnoreCase(resolveRate)) { |
|
|
|
|