|
@@ -6,9 +6,13 @@ import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.leromro.common.core.domain.entity.SysDept;
|
|
|
+import com.leromro.common.core.domain.entity.SysUser;
|
|
|
+import com.leromro.common.utils.DateUtils;
|
|
|
import com.leromro.common.utils.SecurityUtils;
|
|
|
import com.leromro.core.domain.Address;
|
|
|
import com.leromro.core.domain.SecondOrder;
|
|
@@ -20,7 +24,10 @@ import com.leromro.core.domain.vo.UserSummaryVO;
|
|
|
import com.leromro.core.service.IAddressService;
|
|
|
import com.leromro.core.service.ISecondOrderService;
|
|
|
import com.leromro.core.service.IVolunteerInfoService;
|
|
|
+import com.leromro.framework.web.domain.server.Sys;
|
|
|
+import com.leromro.system.mapper.SysUserMapper;
|
|
|
import com.leromro.system.service.ISysDeptService;
|
|
|
+import com.leromro.system.service.impl.SysUserServiceImpl;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import com.leromro.common.core.domain.R;
|
|
@@ -46,7 +53,7 @@ import com.leromro.common.core.page.TableDataInfo;
|
|
|
|
|
|
/**
|
|
|
* 平台机构数据统计Controller
|
|
|
- *
|
|
|
+ *
|
|
|
* @author ruoyi
|
|
|
* @date 2025-04-30
|
|
|
*/
|
|
@@ -54,8 +61,7 @@ import com.leromro.common.core.page.TableDataInfo;
|
|
|
@Api(tags = "(首页)平台机构数据统计")
|
|
|
@RequiredArgsConstructor
|
|
|
@RequestMapping("/core/org/stat")
|
|
|
-public class OrgStatDataController extends BaseController
|
|
|
-{
|
|
|
+public class OrgStatDataController extends BaseController {
|
|
|
private final IOrgStatDataService orgStatDataService;
|
|
|
|
|
|
private final ISecondOrderService secondOrderService;
|
|
@@ -66,61 +72,100 @@ public class OrgStatDataController extends BaseController
|
|
|
|
|
|
private final ISysDeptService deptService;
|
|
|
|
|
|
+ private final SysUserServiceImpl sysUserServiceImpl;
|
|
|
+ private final SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 订单总览
|
|
|
*/
|
|
|
@ApiOperation(value = "订单总览", notes = "前端计算今日,昨天,本周到startDate字段,全部则传null")
|
|
|
@PostMapping("/orderSummary")
|
|
|
- public R<OrderSummaryVO> orderSummary(@RequestBody HomePageDTO dto)
|
|
|
- {
|
|
|
+ public R<OrderSummaryVO> orderSummary(@RequestBody HomePageDTO dto) {
|
|
|
OrderSummaryVO orderSummaryVO = new OrderSummaryVO();
|
|
|
//根据服务中心进行区分
|
|
|
SysDept sysDept = deptService.selectDeptById(SecurityUtils.getDeptId());
|
|
|
- if (sysDept.getAreaType().equals("4")){
|
|
|
+ if (sysDept.getAreaType().equals("4")) {
|
|
|
dto.setDeptId(SecurityUtils.getDeptId());
|
|
|
}
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ switch (dto.getPageType()) {
|
|
|
+ case "1":
|
|
|
+ //昨天
|
|
|
+ dto.setStartDate(today.minusDays(1));
|
|
|
+ dto.setEndDate(today);
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ //今天
|
|
|
+ dto.setStartDate(today);
|
|
|
+ dto.setEndDate(today.plusDays(1));
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ //本月
|
|
|
+ LocalDate firstDayOfMonth = today.withDayOfMonth(1);
|
|
|
+ LocalDate lastDayOfMonth = today.withDayOfMonth(today.lengthOfMonth());
|
|
|
+ dto.setStartDate(firstDayOfMonth);
|
|
|
+ dto.setEndDate(lastDayOfMonth);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
//获取指定时间范围的订单
|
|
|
List<SecondOrder> list = secondOrderService.getCurrentOrgSecondOrderList(dto);
|
|
|
//订单总量
|
|
|
orderSummaryVO.setOrderTotal(list.size());
|
|
|
//取消单量
|
|
|
- orderSummaryVO.setOrderCancelTotal((int) list.stream().filter(item -> "4".equals(item.getOrderStatus())).count());
|
|
|
+ orderSummaryVO.setOrderCancelTotal((int) list.stream().filter(item -> "4".equals(item.getOrderStatus())).count());
|
|
|
//订单金额
|
|
|
orderSummaryVO.setOrderTotalAmount(BigDecimal.valueOf(list.stream().mapToDouble(item -> item.getServiceTotalPrice().doubleValue()).sum()));
|
|
|
//完成单量
|
|
|
- orderSummaryVO.setOrderFinishTotal((int) list.stream().filter(item -> "2".equals(item.getOrderStatus())).count());
|
|
|
+ orderSummaryVO.setOrderFinishTotal((int) list.stream().filter(item -> "2".equals(item.getOrderStatus())).count());
|
|
|
return R.ok(orderSummaryVO);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 人员总览
|
|
|
*/
|
|
|
- @ApiOperation(value = "人员总览", notes = "前端计算今日,昨天,本周到startDate字段,全部则传null")
|
|
|
+ @ApiOperation(value = "人员总览", notes = "前端传入人员类型")
|
|
|
@PostMapping("/userSummary")
|
|
|
- public R<UserSummaryVO> userSummary(@RequestBody HomePageDTO dto)
|
|
|
- {
|
|
|
+ public R<UserSummaryVO> userSummary(@RequestBody HomePageDTO dto) {
|
|
|
UserSummaryVO userSummaryVO = new UserSummaryVO();
|
|
|
//判断人员类型是否有值
|
|
|
if (ObjectUtil.isNull(dto.getUserType())) {
|
|
|
return R.fail("人员类型不能为空");
|
|
|
}
|
|
|
- //获取当前机构本月记录,并按照日期映射
|
|
|
- List<OrgStatData> statDataList = orgStatDataService.getCurrentOrgMonthStatDataList(dto);
|
|
|
- Map<LocalDate, OrgStatData> statDataMap = statDataList.stream().collect(Collectors.toMap(OrgStatData::getStatDate, l -> l));
|
|
|
- if (dto.getUserType() == 1){
|
|
|
+ //根据服务中心进行区分
|
|
|
+ SysUser sysUser = new SysUser();
|
|
|
+ SysDept sysDept = deptService.selectDeptById(SecurityUtils.getDeptId());
|
|
|
+ if (sysDept.getAreaType().equals("4")) {
|
|
|
+ sysUser.setDeptId(SecurityUtils.getDeptId());
|
|
|
+ }
|
|
|
+ // 获取今天、昨天、本月第一天/最后一天(时间部分为 00:00:00)
|
|
|
+ Date today = DateUtil.beginOfDay(DateUtils.getNowDate());
|
|
|
+ Date yesterday = DateUtil.beginOfDay(DateUtil.offsetDay(today, -1));
|
|
|
+ Date firstDayOfMonth = DateUtil.beginOfDay(DateUtil.beginOfMonth(today));
|
|
|
+ Date lastDayOfMonth = DateUtil.beginOfDay(DateUtil.endOfMonth(today));
|
|
|
+
|
|
|
+ if (dto.getUserType() == 1) {
|
|
|
+ //查看sysUser表 如果是用户,则openId != null user_platform = 0 del_flag = 0
|
|
|
+ List<SysUser> clientList = sysUserServiceImpl.selectClientList(sysUser);
|
|
|
+ //查到所有的用户,然后根据时间分类就好了
|
|
|
+ userSummaryVO.setUserTotal(clientList.size());
|
|
|
+ userSummaryVO.setTodayAdd((int) clientList.stream().filter(user -> DateUtil.beginOfDay(user.getCreateTime()).equals(today)).count());
|
|
|
+ userSummaryVO.setYesterdayAdd((int) clientList.stream().filter(user -> DateUtil.beginOfDay(user.getCreateTime()).equals(yesterday)).count());
|
|
|
+ userSummaryVO.setMonthAdd((int) clientList.stream()
|
|
|
+ .filter(user -> DateUtil.beginOfDay(user.getCreateTime()).after(firstDayOfMonth))
|
|
|
+ .filter(user -> DateUtil.beginOfDay(user.getCreateTime()).before(lastDayOfMonth))
|
|
|
+ .count());
|
|
|
//如果为用户则查看用户地址
|
|
|
- List<Address> addressList = addressService.getCurrentOrgClientList(dto);
|
|
|
- userSummaryVO.setUserTotal(addressList.size());
|
|
|
- userSummaryVO.setTodayAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now()))? addressList.size():(addressList.size() - statDataMap.get(LocalDate.now()).getAllClientTotal()));
|
|
|
- userSummaryVO.setYesterdayAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now().minusDays(1)))? addressList.size():(addressList.size() - statDataMap.get(LocalDate.now().minusDays(1)).getAllClientTotal()));
|
|
|
- userSummaryVO.setMonthAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now().withDayOfMonth(1)))? addressList.size():(addressList.size() - statDataMap.get(LocalDate.now().withDayOfMonth(1)).getAllClientTotal()));
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
//如果为志愿者则查看志愿者审批通过时间
|
|
|
- List<VolunteerInfo> volunteerInfoList = volunteerInfoService.getCurrentOrgVolunteerList(dto);
|
|
|
+ List<VolunteerInfo> volunteerInfoList = volunteerInfoService.selectVolunteerGroupByUserId(sysUser);
|
|
|
userSummaryVO.setUserTotal(volunteerInfoList.size());
|
|
|
- userSummaryVO.setTodayAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now()))? volunteerInfoList.size():(volunteerInfoList.size() - statDataMap.get(LocalDate.now()).getAllVolunteerTotal()));
|
|
|
- userSummaryVO.setYesterdayAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now().minusDays(1)))? volunteerInfoList.size():(volunteerInfoList.size() - statDataMap.get(LocalDate.now().minusDays(1)).getAllVolunteerTotal()));
|
|
|
- userSummaryVO.setMonthAdd(ObjectUtil.isNull(statDataMap.get(LocalDate.now().withDayOfMonth(1)))? volunteerInfoList.size():(volunteerInfoList.size() - statDataMap.get(LocalDate.now().withDayOfMonth(1)).getAllVolunteerTotal()));
|
|
|
+ userSummaryVO.setTodayAdd((int) volunteerInfoList.stream().filter(user -> DateUtil.beginOfDay(user.getCreateTime()).equals(today)).count());
|
|
|
+ userSummaryVO.setYesterdayAdd((int) volunteerInfoList.stream().filter(user -> DateUtil.beginOfDay(user.getCreateTime()).equals(yesterday)).count());
|
|
|
+ userSummaryVO.setMonthAdd((int) volunteerInfoList.stream()
|
|
|
+ .filter(user -> DateUtil.beginOfDay(user.getCreateTime()).after(firstDayOfMonth))
|
|
|
+ .filter(user -> DateUtil.beginOfDay(user.getCreateTime()).before(lastDayOfMonth))
|
|
|
+ .count());
|
|
|
}
|
|
|
return R.ok(userSummaryVO);
|
|
|
}
|
|
@@ -130,17 +175,16 @@ public class OrgStatDataController extends BaseController
|
|
|
*/
|
|
|
@ApiOperation(value = "机构排名", notes = "默认查询所有区县")
|
|
|
@PostMapping("/orgRank")
|
|
|
- public R<OrgRankVO> orgRank(@RequestBody HomePageDTO dto)
|
|
|
- {
|
|
|
+ public R<OrgRankVO> orgRank(@RequestBody HomePageDTO dto) {
|
|
|
OrgRankVO orgRankVO = new OrgRankVO();
|
|
|
//获取今天所有订单
|
|
|
List<SecondOrder> list = secondOrderService.getTodayAllOrderList(dto);
|
|
|
- if (ObjectUtil.isEmpty(list)){
|
|
|
+ if (ObjectUtil.isEmpty(list)) {
|
|
|
return R.ok(orgRankVO);
|
|
|
}
|
|
|
//获取所有区县机构(不含服务中心)
|
|
|
List<SysDept> deptList = deptService.getAllOrgList();
|
|
|
- if (ObjectUtil.isEmpty(deptList)){
|
|
|
+ if (ObjectUtil.isEmpty(deptList)) {
|
|
|
return R.ok(orgRankVO);
|
|
|
}
|
|
|
Map<String, String> codeMapName = deptList.stream().collect(Collectors.toMap(SysDept::getDistrictCode, SysDept::getDeptName));
|