导入导出接口调整及文档优化

master
liuqingkun 3 years ago
parent 56575915c2
commit 61a9e06efd
  1. 10
      doc/api.md
  2. 33
      src/main/java/org/springblade/modules/business/controller/AppealRegController.java
  3. 193
      src/main/java/org/springblade/modules/business/controller/ReportController.java
  4. 5
      src/main/java/org/springblade/modules/business/service/IAppealRegService.java
  5. 3
      src/main/java/org/springblade/modules/business/service/ILargeScreenService.java
  6. 115
      src/main/java/org/springblade/modules/business/service/impl/AppealRegServiceImpl.java
  7. 836
      src/main/java/org/springblade/modules/business/service/impl/LargeScreenServiceImpl.java

@ -395,6 +395,16 @@
} }
``` ```
### 5 导入诉求列表
- 请求地址
`GET` `/blade-business/appealReg/importData`
- 请求参数
|参数名称|参数类型|允许为空|参数说明|
| ---- | ---- | ---- | ---- |
| file | file | N | 诉求状态 |
# 诉求调解 # 诉求调解
### 1. 调解记录列表(点击"调解记录") ### 1. 调解记录列表(点击"调解记录")
- 请求地址 - 请求地址

@ -21,13 +21,18 @@ import io.swagger.annotations.Api;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tenant.annotation.TenantDS; import org.springblade.core.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.business.excel.AppealExcel;
import org.springblade.modules.business.service.IAppealRegService; import org.springblade.modules.business.service.IAppealRegService;
import org.springblade.modules.business.vo.AppealListVO; import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO; import org.springblade.modules.business.vo.AppealRegVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
@ -69,6 +74,17 @@ public class AppealRegController extends BladeController {
return R.data(vos); return R.data(vos);
} }
/**
* 导入
*/
@PostMapping("importData")
public R importAppeal(MultipartFile file) {
List<AppealExcel> excels = ExcelUtil.read(file, AppealExcel.class);
regService.importAppeal(excels);
return R.success("操作成功");
}
/** /**
* 导出 * 导出
* *
@ -78,22 +94,11 @@ public class AppealRegController extends BladeController {
* @param appealType 诉求类型 * @param appealType 诉求类型
* @param windowId 处理窗口ID * @param windowId 处理窗口ID
* @param username 代表姓名 * @param username 代表姓名
* @return
*/ */
@GetMapping("/export") @GetMapping("/export")
public R export(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) { public void exportAppeal(HttpServletResponse response, String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
return null; List<AppealExcel> appealExcels = regService.exportAppeal(appealStatus, startTime, endTime, appealType, windowId, username);
} ExcelUtil.export(response, "纠纷数据" + DateUtil.time(), "纠纷数据表", appealExcels, AppealExcel.class);
/**
* 导出
*
* @param file 诉求状态
* @return
*/
@GetMapping("/importData")
public R importData(String file) {
return null;
} }
/** /**

@ -16,34 +16,21 @@
*/ */
package org.springblade.modules.business.controller; package org.springblade.modules.business.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSort; import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.TenantDS; import org.springblade.core.tenant.annotation.TenantDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.business.excel.AppealExcel;
import org.springblade.modules.business.service.ILargeScreenService; import org.springblade.modules.business.service.ILargeScreenService;
import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.system.excel.UserExcel;
import org.springblade.modules.system.excel.UserImporter;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date;
import java.util.List;
/** /**
* 控制器 * 控制器
@ -58,104 +45,86 @@ import java.util.List;
@Api(value = "统计报表", tags = "统计报表接口") @Api(value = "统计报表", tags = "统计报表接口")
public class ReportController extends BladeController { public class ReportController extends BladeController {
private final ILargeScreenService largeScreenService; private final ILargeScreenService largeScreenService;
/**
* 矛盾纠纷化解统计(左1)
*/
@GetMapping("/getMediateFinish")
public R getMediateFinish() {
return R.data(largeScreenService.getMediateFinish());
}
/**
* 矛盾纠纷上报处理列表(左2)
*/
@GetMapping("/getAppealList")
public R getAppealList() {
return R.data(largeScreenService.getAppealList());
}
/**
* 矛盾纠纷月份趋势统计(左3)
*/
@GetMapping("/getAppealByMon")
public R getAppealByMon() {
return R.data(largeScreenService.getAppealByMon());
}
/**
* 矛盾纠纷类型占比统计(左4)
*/
@GetMapping("/getAppealTypePercent")
public R getAppealTypePercent() {
return R.data(largeScreenService.getAppealTypePercent());
}
/**
* 矛盾纠纷上报统计(中1)
*/
@GetMapping("/getAppealSubmit")
public R getAppealSubmit() {
return R.data(largeScreenService.getAppealSubmit());
}
/**
* 事件上报热力图(中2)
*/
@GetMapping("/getAppealSubmitCountByLoc")
public R getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getAppealSubmitCountByLoc(timeFrame, startTime, endTime));
}
/**
* 矛盾化解热力图(中3)
*/
@GetMapping("/getAppealFinishCountByLoc")
public R getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime));
}
/**
* 越级上报热力图(中4)
*/
@GetMapping("/getImmediateCountByLoc")
public R getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getImmediateCountByLoc(timeFrame, startTime, endTime));
}
/**
* 越级上报事件列表(中5)
*/
@GetMapping("/getImmediateList")
public R getImmediateList(String streetId, Query query) {
return R.data(largeScreenService.getImmediateList(streetId, Condition.getPage(query)));
}
/**
* 矛盾纠纷化解排行街道/部门统计(右1-2)
*/
@GetMapping("/getAppealHot")
public R getAppealHot() {
return R.data(largeScreenService.getAppealHot());
}
/**
* 矛盾纠纷化解统计(左1)
*/
@GetMapping("/getMediateFinish")
public R getMediateFinish() {
return R.data(largeScreenService.getMediateFinish());
}
/**
* 矛盾纠纷上报处理列表(左2)
*/
@GetMapping("/getAppealList")
public R getAppealList() {
return R.data(largeScreenService.getAppealList());
}
/**
* 矛盾纠纷月份趋势统计(左3)
*/
@GetMapping("/getAppealByMon")
public R getAppealByMon() {
return R.data(largeScreenService.getAppealByMon());
}
/**
* 矛盾纠纷类型占比统计(左4)
*/
@GetMapping("/getAppealTypePercent")
public R getAppealTypePercent() {
return R.data(largeScreenService.getAppealTypePercent());
}
/**
* 矛盾纠纷上报统计(中1)
*/
@GetMapping("/getAppealSubmit")
public R getAppealSubmit() {
return R.data(largeScreenService.getAppealSubmit());
}
/**
* 事件上报热力图(中2)
*/
@GetMapping("/getAppealSubmitCountByLoc")
public R getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getAppealSubmitCountByLoc(timeFrame, startTime, endTime));
}
/**
* 矛盾化解热力图(中3)
*/
@GetMapping("/getAppealFinishCountByLoc")
public R getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getAppealFinishCountByLoc(timeFrame, startTime, endTime));
}
/**
* 越级上报热力图(中4)
*/
@GetMapping("/getImmediateCountByLoc")
public R getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
return R.data(largeScreenService.getImmediateCountByLoc(timeFrame, startTime, endTime));
}
/**
* 越级上报事件列表(中5)
*/
@GetMapping("/getImmediateList")
public R getImmediateList(String streetId, Query query) {
return R.data(largeScreenService.getImmediateList(streetId, Condition.getPage(query)));
}
/**
* 矛盾纠纷化解排行街道/部门统计(右1-2)
*/
@GetMapping("/getAppealHot")
public R getAppealHot() {
return R.data(largeScreenService.getAppealHot());
}
/**
* 导入
*/
@PostMapping("importAppeal")
public R importAppeal(MultipartFile file) {
List<AppealExcel> excels = ExcelUtil.read(file, AppealExcel.class);
largeScreenService.importAppeal(excels);
return R.success("操作成功");
}
/**
* 导出
*/
@GetMapping("/exportAppeal")
public void exportAppeal(HttpServletResponse response, String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
List<AppealExcel> appealExcels = largeScreenService.exportAppeal(appealStatus, startTime, endTime, appealType, windowId, username);
ExcelUtil.export(response, "纠纷数据" + DateUtil.time(), "纠纷数据表", appealExcels, AppealExcel.class);
}
} }

@ -20,6 +20,7 @@ import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.modules.business.entity.AppealReg; import org.springblade.modules.business.entity.AppealReg;
import org.springblade.modules.business.excel.AppealExcel;
import org.springblade.modules.business.vo.AppealListVO; import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO; import org.springblade.modules.business.vo.AppealRegVO;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -68,4 +69,8 @@ public interface IAppealRegService extends BaseService<AppealReg> {
* @return * @return
*/ */
AppealReg getLastReg(@Param("appealId") String appealId); AppealReg getLastReg(@Param("appealId") String appealId);
void importAppeal(List<AppealExcel> excels);
List<AppealExcel> exportAppeal(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username);
} }

@ -54,7 +54,4 @@ public interface ILargeScreenService {
IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page); IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page);
void importAppeal(List<AppealExcel> excels);
List<AppealExcel> exportAppeal(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username);
} }

@ -16,8 +16,12 @@
*/ */
package org.springblade.modules.business.service.impl; package org.springblade.modules.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.BusinessConstant; import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
@ -26,17 +30,28 @@ 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.AppealReg; import org.springblade.modules.business.entity.AppealReg;
import org.springblade.modules.business.entity.AppealVisitor; import org.springblade.modules.business.entity.AppealVisitor;
import org.springblade.modules.business.excel.AppealExcel;
import org.springblade.modules.business.mapper.AppealMapper; import org.springblade.modules.business.mapper.AppealMapper;
import org.springblade.modules.business.mapper.AppealRegMapper; import org.springblade.modules.business.mapper.AppealRegMapper;
import org.springblade.modules.business.mapper.AppealVisitorMapper; import org.springblade.modules.business.mapper.AppealVisitorMapper;
import org.springblade.modules.business.service.IAppealRegService; import org.springblade.modules.business.service.IAppealRegService;
import org.springblade.modules.business.service.IAppealService;
import org.springblade.modules.business.service.IAppealVisitorService; import org.springblade.modules.business.service.IAppealVisitorService;
import org.springblade.modules.business.vo.AppealListVO; import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO; import org.springblade.modules.business.vo.AppealRegVO;
import org.springblade.modules.system.entity.DictBiz;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IDictBizService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 服务实现类 * 服务实现类
@ -51,6 +66,10 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
private final AppealMapper appealMapper; private final AppealMapper appealMapper;
private final AppealVisitorMapper visitorMapper; private final AppealVisitorMapper visitorMapper;
private final IAppealService appealService;
private final IUserService userService;
private final IDictBizService dictBizService;
@Override @Override
public List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) { public List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
return baseMapper.getList(appealStatus, startTime, endTime, appealType, windowId, username); return baseMapper.getList(appealStatus, startTime, endTime, appealType, windowId, username);
@ -126,4 +145,100 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
public AppealReg getLastReg(String appealId) { public AppealReg getLastReg(String appealId) {
return baseMapper.getLastReg(appealId); return baseMapper.getLastReg(appealId);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void importAppeal(List<AppealExcel> excels) {
if (CollectionUtils.isNotEmpty(excels)) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<Appeal> appeals = new ArrayList<>();
List<AppealVisitor> visitors = new ArrayList<>();
excels.forEach(excel -> {
if (StringUtils.isNotBlank(excel.getDisputeName())) {
Appeal appeal = Objects.requireNonNull(BeanUtil.copy(excel, Appeal.class));
appeal.setId(IdWorker.getId());
// 所属街道字典id
if (StringUtils.isNotBlank(excel.getStreetId())) {
List<DictBiz> street = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "street").like(DictBiz::getDictValue, excel.getStreetId()));
if (CollectionUtils.isNotEmpty(street)) {
appeal.setStreetId(street.get(0).getId());
}
}
// 纠纷字典id
if (StringUtils.isNotBlank(appeal.getDisputeName())) {
List<DictBiz> values = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "dispute_type").like(DictBiz::getDictValue, appeal.getDisputeName()));
if (CollectionUtils.isNotEmpty(values)) {
appeal.setDisputeId(values.get(0).getId());
}
}
// 数据录入时, 处理部门
if (StringUtils.isNotBlank(excel.getHandleDept())) {
List<User> users = userService.list(new LambdaQueryWrapper<User>().like(User::getName, excel.getHandleDept()));
if (CollectionUtils.isNotEmpty(users)) {
appeal.setHandleDept(users.get(0).getId());
}
}
// 纠纷等级(事件等级), 0:简单, 1:一般, 2:重大, 3:疑难
if (StringUtils.isNotBlank(excel.getDisputeLevel())) {
if ("简单".equals(excel.getDisputeLevel())) {
appeal.setDisputeLevel(0);
} else if ("一般".equals(excel.getDisputeLevel())) {
appeal.setDisputeLevel(1);
} else if ("重大".equals(excel.getDisputeLevel())) {
appeal.setDisputeLevel(2);
} else if ("疑难".equals(excel.getDisputeLevel())) {
appeal.setDisputeLevel(3);
}
}
// 首次登记时间
if (StringUtils.isNotBlank(excel.getFirstRegTime())) {
try {
appeal.setFirstRegTime(dateFormat.parse(excel.getFirstRegTime()));
} catch (ParseException e) {
e.printStackTrace();
}
}
// 诉求状态(办理状态)
if (StringUtils.isNotBlank(excel.getStatus())) {
if ("正在处理".equals(excel.getStatus())) {
appeal.setStatus(1);
} else if ("达成协议".equals(excel.getStatus())) {
appeal.setStatus(2);
} else if ("调解成功".equals(excel.getStatus()) || "完成归档".equals(excel.getStatus())) {
appeal.setStatus(3);
}
}
// 是否越级上报
appeal.setSkipGrant(0);
// 数据来源 0:系统添加, 1:数据导入
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_IMPORT);
// 上访人员
if (StringUtils.isNotBlank(excel.getUsername())) {
AppealVisitor visitor = new AppealVisitor();
visitor.setAppealId(appeal.getId());
visitor.setSort(1);
visitor.setUsername(excel.getUsername());
visitors.add(visitor);
}
appeals.add(appeal);
}
});
appealService.saveBatch(appeals);
visitorService.saveBatch(visitors);
}
}
@Override
public List<AppealExcel> exportAppeal(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
List<AppealExcel> excels = appealMapper.exportAppeal(appealStatus, startTime, endTime, appealType, windowId, username);
return excels;
}
} }

@ -62,472 +62,374 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class LargeScreenServiceImpl implements ILargeScreenService { public class LargeScreenServiceImpl implements ILargeScreenService {
private final IAppealService appealService; private final IAppealService appealService;
private final AppealMapper appealMapper; private final IAppealVisitorService appealVisitorService;
private final IAppealVisitorService appealVisitorService; private final IUserService userService;
private final IUserService userService;
@Override
private final IDictBizService dictBizService; public Map<String, Object> getMediateFinish() {
Map<String, Object> map = new HashMap<>();
@Override
public Map<String, Object> getMediateFinish() { // 化解成功状态数组
Map<String, Object> map = new HashMap<>(); List<Integer> state = new ArrayList<>();
state.add(2);
// 化解成功状态数组 state.add(3);
List<Integer> state = new ArrayList<>();
state.add(2); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
state.add(3); // 总化解数
wrapper.in(Appeal::getStatus, state);
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); map.put("all", appealService.count(wrapper));
// 总化解数 wrapper.clear();
wrapper.in(Appeal::getStatus, state);
map.put("all", appealService.count(wrapper)); // 本年度化解数
wrapper.clear(); wrapper.in(Appeal::getStatus, state);
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
// 本年度化解数 map.put("year", appealService.count(wrapper));
wrapper.in(Appeal::getStatus, state); wrapper.clear();
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
map.put("year", appealService.count(wrapper)); // 本季度化解数
wrapper.clear(); wrapper.in(Appeal::getStatus, state);
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
// 本季度化解数 map.put("quarterly", appealService.count(wrapper));
wrapper.in(Appeal::getStatus, state); wrapper.clear();
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
map.put("quarterly", appealService.count(wrapper)); // 本月化解数
wrapper.clear(); wrapper.in(Appeal::getStatus, state);
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime());
// 本月化解数 map.put("mon", appealService.count(wrapper));
wrapper.in(Appeal::getStatus, state);
wrapper.between(Appeal::getFinishTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); return map;
map.put("mon", appealService.count(wrapper)); }
return map; @Override
} public Map<String, Object> getAppealSubmit() {
Map<String, Object> map = new HashMap<>();
@Override
public Map<String, Object> getAppealSubmit() { LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
Map<String, Object> map = new HashMap<>(); // 总化解数
map.put("all", appealService.count(wrapper));
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); wrapper.clear();
// 总化解数
map.put("all", appealService.count(wrapper)); // 本年度化解数
wrapper.clear(); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
map.put("year", appealService.count(wrapper));
// 本年度化解数 wrapper.clear();
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
map.put("year", appealService.count(wrapper)); // 本季度化解数
wrapper.clear(); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
map.put("quarterly", appealService.count(wrapper));
// 本季度化解数 wrapper.clear();
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
map.put("quarterly", appealService.count(wrapper)); // 本月化解数
wrapper.clear(); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime());
map.put("mon", appealService.count(wrapper));
// 本月化解数
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); return map;
map.put("mon", appealService.count(wrapper)); }
return map; @Override
} public List<Appeal> getAppealList() {
// 化解成功状态数组
@Override List<Integer> state = new ArrayList<>();
public List<Appeal> getAppealList() { state.add(0);
// 化解成功状态数组 state.add(1);
List<Integer> state = new ArrayList<>();
state.add(0); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
state.add(1); // 只查这几个字段值
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
// 只查这几个字段值
// wrapper.select(Appeal::getId, Appeal::getDisputeName, Appeal::getFirstRegTime, Appeal::getStatus, Appeal::getStreetId); // wrapper.select(Appeal::getId, Appeal::getDisputeName, Appeal::getFirstRegTime, Appeal::getStatus, Appeal::getStreetId);
// 待处理、正在处理 // 待处理、正在处理
wrapper.in(Appeal::getStatus, state); wrapper.in(Appeal::getStatus, state);
// 根据登记时间倒序 // 根据登记时间倒序
wrapper.orderByDesc(Appeal::getFirstRegTime); wrapper.orderByDesc(Appeal::getFirstRegTime);
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appeals = appealService.list(wrapper);
// 获取前50条 // 获取前50条
List<Appeal> appealList = appeals.stream().limit(50).collect(Collectors.toList()); List<Appeal> appealList = appeals.stream().limit(50).collect(Collectors.toList());
// 所属街道赋字典值 // 所属街道赋字典值
appealList.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); appealList.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()));
return appealList; return appealList;
} }
@Override @Override
public Map<String, List<Object>> getAppealByMon() { public Map<String, List<Object>> getAppealByMon() {
Map<String, List<Object>> map = new HashMap<>(); Map<String, List<Object>> map = new HashMap<>();
List<Object> dateList = new ArrayList<>(); List<Object> dateList = new ArrayList<>();
List<Object> handlerCountList = new ArrayList<>(); List<Object> handlerCountList = new ArrayList<>();
List<Object> finishContList = new ArrayList<>(); List<Object> finishContList = new ArrayList<>();
map.put("dateList", dateList); map.put("dateList", dateList);
map.put("handlerCountList", handlerCountList); map.put("handlerCountList", handlerCountList);
map.put("finishContList", finishContList); map.put("finishContList", finishContList);
List<Integer> state = new ArrayList<>(); List<Integer> state = new ArrayList<>();
state.add(2); state.add(2);
state.add(3); state.add(3);
// 当月 // 当月
Map<String, List<Object>> map0 = getStartAndEndTime(map, state, 0); Map<String, List<Object>> map0 = getStartAndEndTime(map, state, 0);
// 前1个月 // 前1个月
Map<String, List<Object>> map1 = getStartAndEndTime(map0, state, 1); Map<String, List<Object>> map1 = getStartAndEndTime(map0, state, 1);
// 前2个月 // 前2个月
Map<String, List<Object>> map2 = getStartAndEndTime(map1, state, 2); Map<String, List<Object>> map2 = getStartAndEndTime(map1, state, 2);
// 前3个月 // 前3个月
Map<String, List<Object>> map3 = getStartAndEndTime(map2, state, 3); Map<String, List<Object>> map3 = getStartAndEndTime(map2, state, 3);
// 前4个月 // 前4个月
Map<String, List<Object>> map4 = getStartAndEndTime(map3, state, 4); Map<String, List<Object>> map4 = getStartAndEndTime(map3, state, 4);
// 前5个月 // 前5个月
return getStartAndEndTime(map4, state, 5); return getStartAndEndTime(map4, state, 5);
} }
@Override @Override
public Map<String, Object> getAppealTypePercent() { public Map<String, Object> getAppealTypePercent() {
// 先查所有 // 先查所有
List<Appeal> appeals = appealService.list(); List<Appeal> appeals = appealService.list();
// 根据纠纷类型分组 // 根据纠纷类型分组
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getDisputeName)); Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getDisputeName));
Set<String> names = collect.keySet(); Set<String> names = collect.keySet();
// 纠纷类型对应的数量 // 纠纷类型对应的数量
Map<String, Integer> map = new HashMap<>(); Map<String, Integer> map = new HashMap<>();
for (String name : names) { for (String name : names) {
map.put(name, collect.get(name).size()); map.put(name, collect.get(name).size());
} }
// 根据数量排序 // 根据数量排序
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
list.sort((o1, o2) -> o2.getValue() - o1.getValue()); list.sort((o1, o2) -> o2.getValue() - o1.getValue());
Map<String, Object> hashMap = new HashMap<>(); Map<String, Object> hashMap = new HashMap<>();
DecimalFormat df = new DecimalFormat("#0.0"); DecimalFormat df = new DecimalFormat("#0.0");
// 如果类型小于5,正常计算 // 如果类型小于5,正常计算
if (list.size() <= 5) { if (list.size() <= 5) {
for (Map.Entry<String, Integer> entry : list) { for (Map.Entry<String, Integer> entry : list) {
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%");
} }
} }
// 如果类型大于5,前五正常计算,其余全部按照其他纠纷计算 // 如果类型大于5,前五正常计算,其余全部按照其他纠纷计算
else { else {
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
Map.Entry<String, Integer> entry = list.get(i); Map.Entry<String, Integer> entry = list.get(i);
hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%"); hashMap.put(entry.getKey(), df.format((double) entry.getValue() / (double) appeals.size() * 100) + "%");
} }
int size = 0; int size = 0;
for (int i = 5; i < list.size(); i++) { for (int i = 5; i < list.size(); i++) {
Map.Entry<String, Integer> entry = list.get(i); Map.Entry<String, Integer> entry = list.get(i);
size += entry.getValue(); size += entry.getValue();
} }
hashMap.put("其他纠纷", df.format((double) size / (double) appeals.size() * 100) + "%"); hashMap.put("其他纠纷", df.format((double) size / (double) appeals.size() * 100) + "%");
} }
return hashMap; return hashMap;
} }
@Override @Override
public Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { public Map<String, Object> getAppealSubmitCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime));
} else if (timeFrame == 1) { } else if (timeFrame == 1) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime());
} else if (timeFrame == 2) { } else if (timeFrame == 2) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
} else if (timeFrame == 3) { } else if (timeFrame == 3) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
} }
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appeals = appealService.list(wrapper);
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()));
// 根据街道分组 // 根据街道分组
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Set<String> names = collect.keySet(); Set<String> names = collect.keySet();
// 街道对应的数量 // 街道对应的数量
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
for (String name : names) { for (String name : names) {
map.put(name, collect.get(name).size()); map.put(name, collect.get(name).size());
} }
return map; return map;
} }
@Override @Override
public Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { public Map<String, Object> getAppealFinishCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
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 = new ArrayList<>();
state.add(2); state.add(2);
state.add(3); state.add(3);
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Appeal::getStatus, state); wrapper.in(Appeal::getStatus, state);
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime));
} else if (timeFrame == 1) { } else if (timeFrame == 1) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime());
} else if (timeFrame == 2) { } else if (timeFrame == 2) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
} else if (timeFrame == 3) { } else if (timeFrame == 3) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
} }
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appeals = appealService.list(wrapper);
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()));
// 根据街道分组 // 根据街道分组
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Set<String> names = collect.keySet(); Set<String> names = collect.keySet();
// 街道对应的数量 // 街道对应的数量
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
for (String name : names) { for (String name : names) {
map.put(name, collect.get(name).size()); map.put(name, collect.get(name).size());
} }
return map; return map;
} }
@Override @Override
public Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException { public Map<String, Object> getImmediateCountByLoc(Integer timeFrame, String startTime, String endTime) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Appeal::getSkipGrant, 1); wrapper.eq(Appeal::getSkipGrant, 1);
if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime)); wrapper.between(Appeal::getFirstRegTime, dateFormat.parse(startTime), dateFormat.parse(endTime));
} else if (timeFrame == 1) { } else if (timeFrame == 1) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.monthStartTime(), LocalDateTimeUtils.monthEndTime());
} else if (timeFrame == 2) { } else if (timeFrame == 2) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.quarterStartTime(), LocalDateTimeUtils.quarterEndTime());
} else if (timeFrame == 3) { } else if (timeFrame == 3) {
wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime()); wrapper.between(Appeal::getFirstRegTime, LocalDateTimeUtils.yearStartTime(), LocalDateTimeUtils.yearEndTime());
} }
List<Appeal> appeals = appealService.list(wrapper); List<Appeal> appeals = appealService.list(wrapper);
appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue())); appeals.forEach(appeal -> appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue()));
// 根据街道分组 // 根据街道分组
Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet)); Map<String, List<Appeal>> collect = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Set<String> names = collect.keySet(); Set<String> names = collect.keySet();
// 街道对应的数量 // 街道对应的数量
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
for (String name : names) { for (String name : names) {
map.put(name, collect.get(name).size()); map.put(name, collect.get(name).size());
} }
return map; return map;
} }
@Override @Override
public IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page) { public IPage<Appeal> getImmediateList(String streetId, IPage<Appeal> page) {
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeName); wrapper.select(Appeal::getId, Appeal::getFirstRegTime, Appeal::getDisputeName);
wrapper.eq(Appeal::getStreetId, streetId); wrapper.eq(Appeal::getStreetId, streetId);
wrapper.eq(Appeal::getSkipGrant, 1); wrapper.eq(Appeal::getSkipGrant, 1);
wrapper.orderByDesc(Appeal::getCreateTime); wrapper.orderByDesc(Appeal::getCreateTime);
IPage<Appeal> iPage = appealService.page(page, wrapper); IPage<Appeal> iPage = appealService.page(page, wrapper);
// 给每条数据赋值来访人姓名 // 给每条数据赋值来访人姓名
List<Appeal> records = iPage.getRecords(); List<Appeal> records = iPage.getRecords();
if (CollectionUtils.isNotEmpty(records)) { if (CollectionUtils.isNotEmpty(records)) {
for (Appeal record : records) { for (Appeal record : records) {
// 获取sort=1的来访人 // 获取sort=1的来访人
AppealVisitor visitor = appealVisitorService.getOne(new LambdaQueryWrapper<AppealVisitor>().eq(AppealVisitor::getAppealId, record.getId()).eq(AppealVisitor::getSort, 1)); AppealVisitor visitor = appealVisitorService.getOne(new LambdaQueryWrapper<AppealVisitor>().eq(AppealVisitor::getAppealId, record.getId()).eq(AppealVisitor::getSort, 1));
if (visitor != null) { if (visitor != null) {
record.setUsername(visitor.getUsername()); record.setUsername(visitor.getUsername());
} }
} }
iPage.setRecords(records); iPage.setRecords(records);
} }
return iPage; return iPage;
} }
@Override
@Transactional(rollbackFor = Exception.class) @Override
public void importAppeal(List<AppealExcel> excels) { public Map<String, List<DataEntity>> getAppealHot() {
if (CollectionUtils.isNotEmpty(excels)) { Map<String, List<DataEntity>> map = new HashMap();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 化解成功状态数组
List<Appeal> appeals = new ArrayList<>(); List<Integer> state = new ArrayList<>();
List<AppealVisitor> visitors = new ArrayList<>(); state.add(2);
excels.forEach(excel -> { state.add(3);
if (StringUtils.isNotBlank(excel.getDisputeName())) {
Appeal appeal = Objects.requireNonNull(BeanUtil.copy(excel, Appeal.class)); LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
appeal.setId(IdWorker.getId()); wrapper.in(Appeal::getStatus, state);
// 所属街道字典id List<Appeal> appeals = appealService.list(wrapper);
if (StringUtils.isNotBlank(excel.getStreetId())) { appeals.forEach(appeal -> {
List<DictBiz> street = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "street").like(DictBiz::getDictValue, excel.getStreetId())); appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue());
if (CollectionUtils.isNotEmpty(street)) { appeal.setName(userService.getById(appeal.getHandleDept()).getName());
appeal.setStreetId(street.get(0).getId()); });
}
} // 根据街道分组
Map<String, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet));
// 纠纷字典id Set<String> names = street.keySet();
if (StringUtils.isNotBlank(appeal.getDisputeName())) {
List<DictBiz> values = dictBizService.list(new LambdaQueryWrapper<DictBiz>().eq(DictBiz::getCode, "dispute_type").like(DictBiz::getDictValue, appeal.getDisputeName())); // 封装到数据对象
if (CollectionUtils.isNotEmpty(values)) { List<DataEntity> strees = new ArrayList<>();
appeal.setDisputeId(values.get(0).getId()); for (String name : names) {
} DataEntity entity = new DataEntity();
} entity.setName(name);
entity.setNum(street.get(name).size());
// 数据录入时, 处理部门 strees.add(entity);
if (StringUtils.isNotBlank(excel.getHandleDept())) { }
List<User> users = userService.list(new LambdaQueryWrapper<User>().like(User::getName, excel.getHandleDept())); // 倒序
if (CollectionUtils.isNotEmpty(users)) { List<DataEntity> streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList());
appeal.setHandleDept(users.get(0).getId()); map.put("street", streeList);
}
} // 根据部门分组
Map<String, List<Appeal>> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getName));
// 纠纷等级(事件等级), 0:简单, 1:一般, 2:重大, 3:疑难 Set<String> depts = town.keySet();
if (StringUtils.isNotBlank(excel.getDisputeLevel())) {
if ("简单".equals(excel.getDisputeLevel())) { // 封装到数据对象
appeal.setDisputeLevel(0); List<DataEntity> towns = new ArrayList<>();
} else if ("一般".equals(excel.getDisputeLevel())) { for (String name : depts) {
appeal.setDisputeLevel(1); DataEntity entity = new DataEntity();
} else if ("重大".equals(excel.getDisputeLevel())) { entity.setName(name);
appeal.setDisputeLevel(2); entity.setNum(town.get(name).size());
} else if ("疑难".equals(excel.getDisputeLevel())) { towns.add(entity);
appeal.setDisputeLevel(3); }
} // 倒序
} List<DataEntity> townList = towns.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList());
map.put("town", townList);
// 首次登记时间
if (StringUtils.isNotBlank(excel.getFirstRegTime())) { return map;
try { }
appeal.setFirstRegTime(dateFormat.parse(excel.getFirstRegTime()));
} catch (ParseException e) { private Map<String, List<Object>> getStartAndEndTime(Map<String, List<Object>> map, List<Integer> state, Integer month) {
e.printStackTrace(); List<Object> dateList = map.get("dateList");
} List<Object> handlerCountList = map.get("handlerCountList");
} List<Object> finishContList = map.get("finishContList");
// 诉求状态(办理状态) // 当月开始时间
if (StringUtils.isNotBlank(excel.getStatus())) { LocalDateTime start = LocalDateTime.of(LocalDate.now().withDayOfMonth(1).minusMonths(month), LocalTime.MIDNIGHT);
if ("正在处理".equals(excel.getStatus())) {
appeal.setStatus(1); // 当月结束时间
} else if ("达成协议".equals(excel.getStatus())) { LocalDateTime end = start.plusMonths(1).minusSeconds(1);
appeal.setStatus(2); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
} else if ("调解成功".equals(excel.getStatus()) || "完成归档".equals(excel.getStatus())) {
appeal.setStatus(3); // 月份:2023-06
} dateList.add(start.format(dateFormatter));
}
// 登记数
// 是否越级上报 LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
appeal.setSkipGrant(0); wrapper.between(Appeal::getFirstRegTime, start, end);
handlerCountList.add(appealService.count(wrapper));
// 数据来源 0:系统添加, 1:数据导入
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_IMPORT); // 调解成功数
wrapper.clear();
// 上访人员 wrapper.in(Appeal::getStatus, state);
if (StringUtils.isNotBlank(excel.getUsername())) { wrapper.between(Appeal::getFirstRegTime, start, end);
AppealVisitor visitor = new AppealVisitor(); finishContList.add(appealService.count(wrapper));
visitor.setAppealId(appeal.getId());
visitor.setSort(1); map.put("dateList", dateList);
visitor.setUsername(excel.getUsername()); map.put("handlerCountList", handlerCountList);
visitors.add(visitor); map.put("finishContList", finishContList);
} return map;
appeals.add(appeal);
} }
});
appealService.saveBatch(appeals);
appealVisitorService.saveBatch(visitors);
}
}
@Override
public List<AppealExcel> exportAppeal(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
List<AppealExcel> excels = appealMapper.exportAppeal(appealStatus, startTime, endTime, appealType, windowId, username);
return excels;
}
@Override
public Map<String, List<DataEntity>> getAppealHot() {
Map<String, List<DataEntity>> map = new HashMap();
// 化解成功状态数组
List<Integer> state = new ArrayList<>();
state.add(2);
state.add(3);
LambdaQueryWrapper<Appeal> wrapper = new LambdaQueryWrapper<>();
wrapper.in(Appeal::getStatus, state);
List<Appeal> appeals = appealService.list(wrapper);
appeals.forEach(appeal -> {
appeal.setStreet(DictBizCache.getById(appeal.getStreetId()).getDictValue());
appeal.setName(userService.getById(appeal.getHandleDept()).getName());
});
// 根据街道分组
Map<String, List<Appeal>> street = appeals.stream().collect(Collectors.groupingBy(Appeal::getStreet));
Set<String> names = street.keySet();
// 封装到数据对象
List<DataEntity> strees = new ArrayList<>();
for (String name : names) {
DataEntity entity = new DataEntity();
entity.setName(name);
entity.setNum(street.get(name).size());
strees.add(entity);
}
// 倒序
List<DataEntity> streeList = strees.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList());
map.put("street", streeList);
// 根据部门分组
Map<String, List<Appeal>> town = appeals.stream().collect(Collectors.groupingBy(Appeal::getName));
Set<String> depts = town.keySet();
// 封装到数据对象
List<DataEntity> towns = new ArrayList<>();
for (String name : depts) {
DataEntity entity = new DataEntity();
entity.setName(name);
entity.setNum(town.get(name).size());
towns.add(entity);
}
// 倒序
List<DataEntity> townList = towns.stream().sorted(Comparator.comparing(DataEntity::getNum).reversed()).collect(Collectors.toList());
map.put("town", townList);
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;
}
} }

Loading…
Cancel
Save