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 new file mode 100644 index 0000000..56d7e0c --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java @@ -0,0 +1,49 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageResult; +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.service.homepage.HomepageSummaryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +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 java.util.List; +import java.util.Map; + +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +/** + * @Classname HomepageSummaryController + * @Description app首页 + * @Date 2026/1/6 17:04 + * @Created by wangqian + */ +@Tag(name = "app - 首页汇总") +@RestController +@RequestMapping("/homePage/summary") +public class AppHomepageSummaryController { + + @Resource + private HomepageSummaryService homepageSummaryService; + + @PostMapping("/taskCompletionSummary") + @Operation(summary = "任务完成情况统计") + public CommonResult> taskCompletionSummary(@Valid @RequestBody AppHomePageSummaryReqVO req) { + return success(homepageSummaryService.taskCompletionSummary(req)); + } + + @PostMapping("/taskDetails") + @Operation(summary = "任务完成情况统计") + public CommonResult> queryTaskDetails(@Valid @RequestBody AppHomePageSummaryPageReqVO req) { + return success(homepageSummaryService.queryTaskDetails(req)); + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryPageReqVO.java new file mode 100644 index 0000000..02ea057 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryPageReqVO.java @@ -0,0 +1,15 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class AppHomePageSummaryPageReqVO extends PageParam { + + @Schema(description = "查询类型:1-待办,2-已办", example = "1") + @NotNull + public Integer queryType; +} 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 new file mode 100644 index 0000000..e505f3f --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java @@ -0,0 +1,18 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Data +public class AppHomePageSummaryReqVO{ + + @NotEmpty + @Schema(description = "开始时间", example = "2025-01-01") + public String beginTime; + /*结束时间*/ + @NotEmpty + @Schema(description = "结束时间", example = "2025-12-10") + public String endTime; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskCompletionStatusRspVo.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskCompletionStatusRspVo.java new file mode 100644 index 0000000..3fd4474 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskCompletionStatusRspVo.java @@ -0,0 +1,20 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; + +import lombok.Data; + +/** + * @Classname TaskCompletionStatusRspVo + * @Description 任务完成情况 + * @Date 2026/1/7 9:44 + * @Created by wangqian + */ +@Data +public class TaskCompletionStatusRspVo { + + private String currentDate; + private String commitDate; + /* 已完成数量*/ + private Integer completedNum; + /*待完成数量*/ + private Integer countpendingNum; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskDetailsRspVo.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskDetailsRspVo.java new file mode 100644 index 0000000..d4634ad --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskDetailsRspVo.java @@ -0,0 +1,25 @@ +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @Classname TaskCompletionStatusRspVo + * @Description 任务完成情况 + * @Date 2026/1/7 9:44 + * @Created by wangqian + */ +@Data +public class TaskDetailsRspVo { + + /*任务名称*/ + private String taskName; + /*创建时间或完成时间*/ + private LocalDateTime busiDateTime; + /** + * 紧急程度:1:特急;2:紧急;3:一般 + */ + private Integer pressingType; + +} 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 8d90e62..c9e9f1c 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 @@ -1,10 +1,13 @@ package com.zteits.urbanops.module.garden.dal.mysql.homepage; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitTaskStatisticsRespVo; 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.TaskCompletionStatusRspVo; +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -95,4 +98,36 @@ public interface HomepageSummaryMapper extends BaseMapperX { * @Date 2025/12/30 23:40 */ List countWorkOrderTrend(@Param("companyId") Long companyId, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("queryState") String queryState); + + /** + * @Author wangqian + * @Description 已完成任务数 + * @Date 2026/1/7 9:28 + * @Param userId + * @param beginTime + * @param endTime + * @Return java.util.List> + */ + List countcompletedTask(@Param("userId") Long userId, @Param("beginTime") String beginTime, @Param("endTime") String endTime); + /** + * @Author wangqian + * @Description 未完成任务数 + * @Date 2026/1/7 9:28 + * @Param userId + * @param beginTime + * @param endTime + * @Return java.util.List> + */ + List countpendingTask(@Param("userId") Long userId, @Param("roleIds") List roleIds, @Param("beginTime") String beginTime, @Param("endTime") String endTime); + /** + * @Author wangqian + * @Description 已完成任务 + * @Date 2026/1/7 11:15 + * @Param userId + * @Return java.util.List + */ + IPage queryCompletedTaskDetails(IPage page, @Param("userId") Long userId); + + IPage queryPendingTaskDetails(IPage page, @Param("roleIds") List roleIds); + } 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 new file mode 100644 index 0000000..2013018 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java @@ -0,0 +1,37 @@ +package com.zteits.urbanops.module.garden.service.homepage; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +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 java.util.List; +import java.util.Map; + +/** + * @Classname HomepageSummaryService + * @Description 首页统计 + * @Date 2026/1/6 17:13 + * @Created by wangqian + */ +public interface HomepageSummaryService { + + + /** + * @Author wangqian + * @Description 任务完成情况统计 + * @Date 2026/1/6 17:11 + * @Param + * @Return java.util.Map + */ + List taskCompletionSummary(AppHomePageSummaryReqVO req); + /** + * @Author wangqian + * @Description 任务详情 + * @Date 2026/1/7 10:58 + * @Param req + * @Return java.util.List + */ + PageResult queryTaskDetails(AppHomePageSummaryPageReqVO req); +} 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 new file mode 100644 index 0000000..5bcfc73 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java @@ -0,0 +1,131 @@ +package com.zteits.urbanops.module.garden.service.homepage; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zteits.urbanops.framework.common.pojo.PageResult; +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.dal.mysql.homepage.HomepageSummaryMapper; +import com.zteits.urbanops.module.system.api.permission.RoleApi; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Classname HomepageSummaryServiceImpl + * @Description 首页统计实现 + * @Date 2026/1/6 17:13 + * @Created by wangqian + */ +@Service +public class HomepageSummaryServiceImpl implements HomepageSummaryService{ + + + @Resource + private HomepageSummaryMapper homepageSummaryMapper; + + @Resource + private RoleApi roleApi; + @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); + } + }); + return respVo; + } + + @Override + public PageResult queryTaskDetails(AppHomePageSummaryPageReqVO req) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + IPage mpPage = MyBatisUtils.buildPage(req); + if (req.getQueryType() == 2) { + //已完成 + mpPage = homepageSummaryMapper.queryCompletedTaskDetails(mpPage,userId); + } else { + //待办 + List roleIds = roleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId()); + mpPage = homepageSummaryMapper.queryPendingTaskDetails(mpPage,roleIds); + } + 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); + + Calendar tempStart = Calendar.getInstance(); + tempStart.setTime(start); + + 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); + } + + } catch (ParseException e) { + e.printStackTrace(); + } + + return days; + } +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java index 4f03c92..ec7d734 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java @@ -507,7 +507,7 @@ public class MaintainSummaryServiceImpl implements MaintainSummaryService { private Map> addDefaultData(HomePageSummaryReqVO req){ Map> respMap = new HashMap<>(); List newList = new ArrayList<>(); - List days = getDays(req.beginTime, req.endTime); + List days = getDays(req.getBeginTime(), req.getEndTime()); List companyList = deptApi.getCompanyList(); days.forEach(dayy->{ companyList.forEach(resp ->{ 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 0e74f1c..c7bda31 100644 --- a/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml @@ -285,4 +285,134 @@ group by v.date_value,t.busi_line,t.worker_company_id + + + + + + + +