From 9bf5e48ad7554b62a27f79f831f1c62d6944f30c Mon Sep 17 00:00:00 2001 From: wangqian <1406304305@qq.com> Date: Thu, 8 Jan 2026 18:23:31 +0800 Subject: [PATCH] app首页接口 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java | 13 +++++++++---- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java | 16 ---------------- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/CommonTaskStatusVo.java | 19 +++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/taskstatistics/TaskStatisticsMapper.java | 38 ++++++++++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/TaskStatisticsJob.java | 28 ++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java | 8 ++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------- urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApi.java | 7 +++++++ urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApiImpl.java | 6 ++++++ 12 files changed, 573 insertions(+), 94 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/CommonTaskStatusVo.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/taskstatistics/TaskStatisticsMapper.java create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/TaskStatisticsJob.java diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java index 1a5c880..8595f0e 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java @@ -10,11 +10,9 @@ import com.zteits.urbanops.module.garden.service.homepage.HomepageSummaryService import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.annotation.security.PermitAll; import jakarta.validation.Valid; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -46,4 +44,11 @@ public class AppHomepageSummaryController { public CommonResult> queryTaskDetails(@Valid @RequestBody AppHomePageSummaryPageReqVO req) { return success(homepageSummaryService.queryTaskDetails(req)); } + @GetMapping("/countTask") + @Operation(summary = "任务待办已办") + @PermitAll + public void countTaskNumberByUserId(String busiDate) { + homepageSummaryService.countTaskNumberByUserId(busiDate); + } + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java index 361ac38..e505f3f 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java @@ -15,20 +15,4 @@ public class AppHomePageSummaryReqVO{ @NotEmpty @Schema(description = "结束时间", example = "2025-12-10") public String endTime; - - public void setBeginTime(String beginTime) { - if (beginTime != null && !beginTime.contains(" ")) { - this.beginTime = beginTime + " 00:00:00"; - } else { - this.beginTime = beginTime; - } - } - - public void setEndTime(String endTime) { - if (endTime != null && !endTime.contains(" ")) { - this.endTime = endTime + " 23:59:59"; - } else { - this.endTime = endTime; - } - } } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/CommonTaskStatusVo.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/CommonTaskStatusVo.java new file mode 100644 index 0000000..cd8295e --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/CommonTaskStatusVo.java @@ -0,0 +1,19 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; + +import lombok.Data; + +/** + * @Classname CommonTaskStatusVo + * @Description TODO + * @Date 2026/1/8 16:42 + * @Created by wangqian + */ +@Data +public class CommonTaskStatusVo { + + private Long userId; + + private Long roleId; + + private Integer totalCount; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java new file mode 100644 index 0000000..10a891f --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java @@ -0,0 +1,92 @@ +package com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; + +/** + * 任务情况统计 DO + * + * @author 超级管理员 + */ +@TableName("garden_task_statistics") +@KeySequence("garden_task_statistics_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaskStatisticsDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 当前日期 + */ + private String busiDate; + /** + * 归属(一级部门id) + */ + private Integer companyId; + /** + * 部门ID(道路负责部门id) + */ + private Long deptId; + /** + * 用户id + */ + private Long userId; + /** + * 用户名称 + */ + private String userName; + /** + * 巡查计划总数 + */ + private Integer inspTotal; + /** + * 巡查计划已完成数 + */ + private Integer inspCompleted; + /** + * 巡查计划未完成数 + */ + private Integer inspUnfinished; + /** + * 养护计划总数 + */ + private Integer mtTotal; + /** + * 养护计划完成数 + */ + private Integer mtCompleted; + /** + * 养护计划未完成数 + */ + private Integer mtUnfinished; + /** + * 工单总数 + */ + private Integer woTotal; + /** + * 工单已完成数 + */ + private Integer woCompleted; + /** + * 工单未完成数 + */ + private Integer woUnfinished; + /** + * 备注 + */ + private String remark; + + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java index 572db05..cae5acd 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java @@ -6,6 +6,7 @@ import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitTask import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.WorkOrderTrendRespVo; +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.CommonTaskStatusVo; import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo; import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO; @@ -138,4 +139,64 @@ public interface HomepageSummaryMapper extends BaseMapperX { */ IPage queryPendingTaskDetails(IPage page, @Param("roleIds") List roleIds, @Param("userId") Long userId); + /** + * @Author wangqian + * @Description 巡查已完成 + * @Date 2026/1/8 12:29 + * @param beginTime + * @param endTime + * @Return java.util.List + */ + List countInspCompletedTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + + /** + * @Author wangqian + * @Description 养护已完成 + * @Date 2026/1/8 12:30 + * @param beginTime + * @param endTime + * @Return java.util.List + */ + List countMtCompletedTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + + /** + * @Author wangqian + * @Description 巡查数量 + * @Date 2026/1/8 12:33 + * @Param userId + * @param beginTime + * @param endTime + * @Return java.util.List + */ + List countInspPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + /** + * @Author wangqian + * @Description 养护数量 + * @Date 2026/1/8 12:33 + * @Param userId + * @param beginTime + * @param endTime + * @Return java.util.List + */ + List countMtPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + + /** + * @Author wangqian + * @Description 按时间查询待完成工单数量 + * @Date 2026/1/8 14:23 + * @Param beginTime + * @param endTime + * @Return java.util.List> + */ + List countWorkOrderPending(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + /** + * @Author wangqian + * @Description 按时间查询已完成工单数 + * @Date 2026/1/8 14:24 + * @Param beginTime + * @param endTime + * @Return java.util.List> + */ + List countWorkOrderCompleted(@Param("beginTime") String beginTime, @Param("endTime") String endTime); + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/taskstatistics/TaskStatisticsMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/taskstatistics/TaskStatisticsMapper.java new file mode 100644 index 0000000..2a6c73a --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/taskstatistics/TaskStatisticsMapper.java @@ -0,0 +1,38 @@ +package com.zteits.urbanops.module.garden.dal.mysql.taskstatistics; + +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics.TaskStatisticsDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 任务情况统计 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface TaskStatisticsMapper extends BaseMapperX { + +// default PageResult selectPage(TaskStatisticsPageReqVO reqVO) { +// return selectPage(reqVO, new LambdaQueryWrapperX() +// .betweenIfPresent(TaskStatisticsDO::getBusiDate, reqVO.getBusiDate()) +// .eqIfPresent(TaskStatisticsDO::getCompanyId, reqVO.getCompanyId()) +// .eqIfPresent(TaskStatisticsDO::getDeptId, reqVO.getDeptId()) +// .eqIfPresent(TaskStatisticsDO::getUserId, reqVO.getUserId()) +// .likeIfPresent(TaskStatisticsDO::getUserName, reqVO.getUserName()) +// .eqIfPresent(TaskStatisticsDO::getInspTotal, reqVO.getInspTotal()) +// .eqIfPresent(TaskStatisticsDO::getInspCompleted, reqVO.getInspCompleted()) +// .eqIfPresent(TaskStatisticsDO::getInspUnfinished, reqVO.getInspUnfinished()) +// .eqIfPresent(TaskStatisticsDO::getMtTotal, reqVO.getMtTotal()) +// .eqIfPresent(TaskStatisticsDO::getMtCompleted, reqVO.getMtCompleted()) +// .eqIfPresent(TaskStatisticsDO::getMtUnfinished, reqVO.getMtUnfinished()) +// .eqIfPresent(TaskStatisticsDO::getWoTotal, reqVO.getWoTotal()) +// .eqIfPresent(TaskStatisticsDO::getWoCompleted, reqVO.getWoCompleted()) +// .eqIfPresent(TaskStatisticsDO::getWoUnfinished, reqVO.getWoUnfinished()) +// .eqIfPresent(TaskStatisticsDO::getRemark, reqVO.getRemark()) +// .likeIfPresent(TaskStatisticsDO::getCreatorName, reqVO.getCreatorName()) +// .betweenIfPresent(TaskStatisticsDO::getCreateTime, reqVO.getCreateTime()) +// .likeIfPresent(TaskStatisticsDO::getUpdaterName, reqVO.getUpdaterName()) +// .orderByDesc(TaskStatisticsDO::getId)); +// } + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/TaskStatisticsJob.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/TaskStatisticsJob.java new file mode 100644 index 0000000..f1a6c86 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/TaskStatisticsJob.java @@ -0,0 +1,28 @@ +package com.zteits.urbanops.module.garden.job.task; + +import com.zteits.urbanops.framework.quartz.core.handler.JobHandler; +import com.zteits.urbanops.module.garden.service.assigntasks.AssignTasksService; +import com.zteits.urbanops.module.garden.service.homepage.HomepageSummaryService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @Classname TaskStatisticsJob + * @Description 首页统计任务 + * @Date 2025/12/25 10:37 + * @Created by wangqian + */ +@Component +@Slf4j +public class TaskStatisticsJob implements JobHandler { + + @Resource + private HomepageSummaryService homepageSummaryService; + + @Override + public String execute(String param) throws Exception { + homepageSummaryService.countTaskNumberByUserId(param); + return "Successfully"; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java index 2013018..a3ab4b9 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java @@ -34,4 +34,12 @@ public interface HomepageSummaryService { * @Return java.util.List */ PageResult queryTaskDetails(AppHomePageSummaryPageReqVO req); + /** + * @Author wangqian + * @Description 定时同步用户任务 + * @Date 2026/1/8 13:50 + * @Param + * @Return void + */ + public void countTaskNumberByUserId(String busiDate); } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java index a97ee57..d3ce4ec 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java @@ -1,21 +1,34 @@ package com.zteits.urbanops.module.garden.service.homepage; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.esotericsoftware.minlog.Log; import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.date.DateUtils; +import com.zteits.urbanops.framework.common.util.date.LocalDateTimeUtils; +import com.zteits.urbanops.framework.mybatis.core.query.QueryWrapperX; import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; -import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryPageReqVO; -import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryReqVO; -import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo; -import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.*; +import com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics.TaskStatisticsDO; import com.zteits.urbanops.module.garden.dal.mysql.homepage.HomepageSummaryMapper; +import com.zteits.urbanops.module.garden.dal.mysql.taskstatistics.TaskStatisticsMapper; +import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.permission.RoleApi; +import com.zteits.urbanops.module.system.api.user.AdminUserApi; +import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -34,42 +47,37 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @Resource private RoleApi roleApi; + + @Resource + private TaskStatisticsMapper taskStatisticsMapper; + + @Resource + private AdminUserApi userApi; + + @Resource + private DeptApi deptApi; + @Override public List taskCompletionSummary(AppHomePageSummaryReqVO req) { Long userId = SecurityFrameworkUtils.getLoginUserId(); - //巡查任务和养护任务已完成,未完成数量统计 - //返回数据初始化 - List days = getDays(req.getBeginTime(), req.getEndTime()); - List respVo = addTaskDefaultData(days); - //查询已完成数量 - List completionDetailList = homepageSummaryMapper.countcompletedTask(userId, req.getBeginTime(), req.getEndTime()); - Map completionMap = completionDetailList.stream() - .collect(Collectors.toMap( - TaskCompletionStatusRspVo::getCommitDate, - TaskCompletionStatusRspVo::getCompletedNum, - (existingValue, newValue) -> existingValue + newValue - )); - //查询未完成数量 - /*1.查询登录用户角色*/ - List roleIds = roleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId()); - List countpendingDetailList = homepageSummaryMapper.countpendingTask(userId,roleIds, req.getBeginTime(), req.getEndTime()); - Map countpendingMap = countpendingDetailList.stream() - .collect(Collectors.toMap( - TaskCompletionStatusRspVo::getCommitDate, - TaskCompletionStatusRspVo::getCountpendingNum, - (existingValue, newValue) -> existingValue + newValue - )); - //返回对象赋值 - respVo.forEach(vo -> { - Integer cmpletedNum = completionMap.get(vo.getCommitDate()); - if (cmpletedNum!= null) { - vo.setCompletedNum(cmpletedNum); - } - Integer countpendingNum = countpendingMap.get(vo.getCommitDate()); - if (countpendingNum != null) { - vo.setCountpendingNum(countpendingNum); - } - }); + List respVo = new ArrayList<>(); + // 优化后的完整代码(含空值判断、泛型指定) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskStatisticsDO::getUserId, userId); + queryWrapper.between(TaskStatisticsDO::getBusiDate, req.getBeginTime(), req.getEndTime()); + queryWrapper.eq(TaskStatisticsDO::getDeleted, 0); + List taskStatisticsDOList = taskStatisticsMapper.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(taskStatisticsDOList)) { + //1、日期赋值 + taskStatisticsDOList.forEach(dayVo->{ + TaskCompletionStatusRspVo vo = new TaskCompletionStatusRspVo(); + vo.setCommitDate(dayVo.getBusiDate()); + vo.setCurrentDate(dayVo.getBusiDate().substring(5).replace("-",".")); + vo.setCompletedNum(dayVo.getMtTotal() + dayVo.getInspTotal() + dayVo.getWoTotal()); + vo.setCountpendingNum(dayVo.getMtUnfinished() + dayVo.getInspUnfinished() +dayVo.getWoUnfinished()); + respVo.add(vo); + }); + } return respVo; } @@ -88,44 +96,163 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); } - private List addTaskDefaultData(List days){ - List newList = new ArrayList<>(); - //1、日期赋值 - days.forEach(dayy->{ - TaskCompletionStatusRspVo vo = new TaskCompletionStatusRspVo(); - vo.setCommitDate(dayy); - vo.setCurrentDate(dayy.substring(5).replace("-",".")); - vo.setCompletedNum(0); - vo.setCountpendingNum(0); - newList.add(vo); - }); - return newList; - } - public static List getDays(String startTime, String endTime) { - - // 返回的日期集合 - List days = new ArrayList(); - DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - try { - Date start = dateFormat.parse(startTime); - Date end = dateFormat.parse(endTime); + /** + * @Author wangqian + * @Description 定时统计当天用户的任务 + * @Date 2026/1/8 13:14 + * @Param + * @Return void + */ + @Override + @Transactional + public void countTaskNumberByUserId(String busiDate) { + //1、 获取前一天日期,格式 yyyy-MM-dd + LocalDateTime yesterday = LocalDateTimeUtils.getYesterday(); + // 4. 格式化为字符串 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + if (StringUtils.isEmpty(busiDate)) { + busiDate = yesterday.format(formatter); + } + String beginTime = busiDate + " 00:00:00"; + String endTime = busiDate + " 23:59:59"; + Log.info("昨天开始时间:" + beginTime); + Log.info("昨天结束时间:" + endTime); + //获取正常用户 + List userList = userApi.getUserList(); + if (CollectionUtils.isEmpty(userList)){ + return; + } + //巡查已完成 + List inspComp = homepageSummaryMapper.countInspCompletedTask(beginTime, endTime); + Map inspCompMap = inspComp.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + CommonTaskStatusVo::getUserId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); + //养护已完成 + List mtComp = homepageSummaryMapper.countMtCompletedTask(beginTime, endTime); + Map mtCmpMap = mtComp.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + CommonTaskStatusVo::getUserId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); - Calendar tempStart = Calendar.getInstance(); - tempStart.setTime(start); + //待完成工单数量 + List woPending = homepageSummaryMapper.countWorkOrderPending(beginTime, endTime); + Map woPendingMap = woPending.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + // Map的key:从VO中提取Long类型的roleId(核心修正点) + CommonTaskStatusVo::getUserId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); + //已完成工单数量 + List woCompleted = homepageSummaryMapper.countWorkOrderCompleted(beginTime, endTime); + Map woCompletedMap = woCompleted.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + // Map的key:从VO中提取Long类型的roleId(核心修正点) + CommonTaskStatusVo::getUserId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); + //巡查计划数 + List inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime); + Map inspTotalMap = inspTotal.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + // Map的key:从VO中提取Long类型的roleId(核心修正点) + CommonTaskStatusVo::getRoleId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); + //养护计划数量 + List mtTotal = homepageSummaryMapper.countMtPendingTask(beginTime, endTime); + Map mtTotalMap = mtTotal.stream() + .filter(vo -> Objects.nonNull(vo)) + .collect(Collectors.toMap( + // Map的key:从VO中提取Long类型的roleId(核心修正点) + CommonTaskStatusVo::getRoleId, + vo -> vo, + (oldVo, newVo) -> newVo, + HashMap::new + )); + List taskStatisticsDOList = new ArrayList<>(); + //根据用户查询任务数量 + for (AdminUserRespDTO adminUserRespDTO : userList) { + Long userId = adminUserRespDTO.getId(); + List roles = roleApi.getRoleIdsByUserId(userId); + if (CollectionUtils.isEmpty(roles)) { + continue; + } + if (roles.contains(1L)) { + continue; + } + if (roles.contains(2L)) { + continue; + } + if (roles.contains(159L)) { + continue; + } + if (roles.contains(168L)) { + continue; + } + //deptApi.get + TaskStatisticsDO statisticsDO = new TaskStatisticsDO(); + statisticsDO.setBusiDate(busiDate); + statisticsDO.setUserId(userId); + statisticsDO.setUserName(statisticsDO.getUserName()); + //statisticsDO.setCompanyId(); + statisticsDO.setDeptId(adminUserRespDTO.getDeptId()); + //2、查询巡查任务数量及已完成数量 + Integer inspTotalCount = 0; + for (Long role : roles) { + CommonTaskStatusVo countVo = inspTotalMap.get(role); + if (null != countVo) { + inspTotalCount = countVo.getTotalCount(); + } + } + statisticsDO.setInspCompleted(inspCompMap.get(userId) == null? 0: inspCompMap.get(userId).getTotalCount()); + statisticsDO.setInspUnfinished(inspTotalCount); + statisticsDO.setInspTotal(statisticsDO.getInspUnfinished() + statisticsDO.getInspCompleted()); - Calendar tempEnd = Calendar.getInstance(); - tempEnd.setTime(end); - tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束) - while (tempStart.before(tempEnd)) { - days.add(dateFormat.format(tempStart.getTime())); - tempStart.add(Calendar.DAY_OF_YEAR, 1); + Integer mtTotalCount = 0; + //3、查询养护计划任务数量 + for (Long role : roles) { + CommonTaskStatusVo countVo = mtTotalMap.get(role); + if (null != countVo) { + mtTotalCount = countVo.getTotalCount(); + } } + statisticsDO.setMtUnfinished(mtTotalCount); + statisticsDO.setMtCompleted(mtCmpMap.get(userId) == null ? 0 : mtCmpMap.get(userId).getTotalCount()); + statisticsDO.setMtTotal(statisticsDO.getMtUnfinished() + statisticsDO.getMtCompleted()); - } catch (ParseException e) { - e.printStackTrace(); - } + //4、工单任务数量 + statisticsDO.setWoCompleted(woCompletedMap.get(userId) == null ? 0 : woCompletedMap.get(userId).getTotalCount()); + statisticsDO.setWoUnfinished(woPendingMap.get(userId) == null ? 0: woPendingMap.get(userId).getTotalCount()); + statisticsDO.setWoTotal(statisticsDO.getWoCompleted() + statisticsDO.getWoUnfinished()); - return days; + statisticsDO.setCreator("1"); + statisticsDO.setCreateTime(LocalDateTime.now()); + statisticsDO.setUpdater("1"); + statisticsDO.setUpdateTime(LocalDateTime.now()); + taskStatisticsDOList.add(statisticsDO); + } + //删除 + taskStatisticsMapper.delete(TaskStatisticsDO::getBusiDate, busiDate); + //批量保存 + taskStatisticsMapper.insertBatch(taskStatisticsDOList); } } diff --git a/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml b/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml index 3760a61..03d1971 100644 --- a/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml @@ -334,8 +334,8 @@ FROM garden_inspection_plan_detail a INNER JOIN garden_inspection_plan_role b ON a.batch_no = b.batch_no - WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期 - AND b.role_id IN + WHERE -- a.finish_state IN (1, 3) -- 1:未完成;3:已过期 + b.role_id IN #{roleId} @@ -356,8 +356,8 @@ FROM garden_maintain_plan_detail a INNER JOIN garden_maintain_plan_role b ON a.batch_no = b.batch_no - WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期 - AND b.role_id IN + WHERE -- a.finish_state IN (1, 3) -- 1:未完成;3:已过期 + b.role_id IN #{roleId} @@ -441,4 +441,108 @@ ) t ORDER BY busiDateTime DESC + + + + + + + + + + + + + + + diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApi.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApi.java index 840046d..804ad58 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApi.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApi.java @@ -92,4 +92,11 @@ public interface AdminUserApi { * @return 业务线列表 */ List getLoginBusiLine(); + + /** + * 通过用户 ID 查询用户们 + * + * @return 用户对象信息 + */ + List getUserList(); } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApiImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApiImpl.java index 5c7e35f..50c79fa 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApiImpl.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/user/AdminUserApiImpl.java @@ -89,4 +89,10 @@ public class AdminUserApiImpl implements AdminUserApi { return userService.getLoginBusiLine(); } + @Override + public List getUserList() { + List users = userService.getUserListByStatus(0); + return BeanUtils.toBean(users, AdminUserRespDTO.class); + } + } -- libgit2 0.21.4