Commit 0e8d66b7c91a98b49a64b65e41b964bc04105aaa

Authored by 颜惠青
2 parents 22ed3cee 95c98968

Merge remote-tracking branch 'origin/dev' into dev

urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.controller.app.homepage;
  2 +
  3 +import com.zteits.urbanops.framework.common.pojo.CommonResult;
  4 +import com.zteits.urbanops.framework.common.pojo.PageResult;
  5 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryPageReqVO;
  6 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryReqVO;
  7 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo;
  8 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo;
  9 +import com.zteits.urbanops.module.garden.service.homepage.HomepageSummaryService;
  10 +import io.swagger.v3.oas.annotations.Operation;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
  12 +import jakarta.annotation.Resource;
  13 +import jakarta.validation.Valid;
  14 +import org.springframework.web.bind.annotation.PostMapping;
  15 +import org.springframework.web.bind.annotation.RequestBody;
  16 +import org.springframework.web.bind.annotation.RequestMapping;
  17 +import org.springframework.web.bind.annotation.RestController;
  18 +
  19 +import java.util.List;
  20 +import java.util.Map;
  21 +
  22 +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
  23 +
  24 +/**
  25 + * @Classname HomepageSummaryController
  26 + * @Description app首页
  27 + * @Date 2026/1/6 17:04
  28 + * @Created by wangqian
  29 + */
  30 +@Tag(name = "app - 首页汇总")
  31 +@RestController
  32 +@RequestMapping("/homePage/summary")
  33 +public class AppHomepageSummaryController {
  34 +
  35 + @Resource
  36 + private HomepageSummaryService homepageSummaryService;
  37 +
  38 + @PostMapping("/taskCompletionSummary")
  39 + @Operation(summary = "任务完成情况统计")
  40 + public CommonResult<List<TaskCompletionStatusRspVo>> taskCompletionSummary(@Valid @RequestBody AppHomePageSummaryReqVO req) {
  41 + return success(homepageSummaryService.taskCompletionSummary(req));
  42 + }
  43 +
  44 + @PostMapping("/taskDetails")
  45 + @Operation(summary = "任务完成情况统计")
  46 + public CommonResult<PageResult<TaskDetailsRspVo>> queryTaskDetails(@Valid @RequestBody AppHomePageSummaryPageReqVO req) {
  47 + return success(homepageSummaryService.queryTaskDetails(req));
  48 + }
  49 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryPageReqVO.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.controller.app.homepage.vo;
  2 +
  3 +import com.zteits.urbanops.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import jakarta.validation.constraints.NotEmpty;
  6 +import jakarta.validation.constraints.NotNull;
  7 +import lombok.Data;
  8 +
  9 +@Data
  10 +public class AppHomePageSummaryPageReqVO extends PageParam {
  11 +
  12 + @Schema(description = "查询类型:1-待办,2-已办", example = "1")
  13 + @NotNull
  14 + public Integer queryType;
  15 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppHomePageSummaryReqVO.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.controller.app.homepage.vo;
  2 +
  3 +import com.zteits.urbanops.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import jakarta.validation.constraints.NotEmpty;
  6 +import lombok.Data;
  7 +
  8 +@Data
  9 +public class AppHomePageSummaryReqVO{
  10 +
  11 + @NotEmpty
  12 + @Schema(description = "开始时间", example = "2025-01-01")
  13 + public String beginTime;
  14 + /*结束时间*/
  15 + @NotEmpty
  16 + @Schema(description = "结束时间", example = "2025-12-10")
  17 + public String endTime;
  18 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskCompletionStatusRspVo.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.controller.app.homepage.vo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + * @Classname TaskCompletionStatusRspVo
  7 + * @Description 任务完成情况
  8 + * @Date 2026/1/7 9:44
  9 + * @Created by wangqian
  10 + */
  11 +@Data
  12 +public class TaskCompletionStatusRspVo {
  13 +
  14 + private String currentDate;
  15 + private String commitDate;
  16 + /* 已完成数量*/
  17 + private Integer completedNum;
  18 + /*待完成数量*/
  19 + private Integer countpendingNum;
  20 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/TaskDetailsRspVo.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.controller.app.homepage.vo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.time.LocalDateTime;
  6 +
  7 +/**
  8 + * @Classname TaskCompletionStatusRspVo
  9 + * @Description 任务完成情况
  10 + * @Date 2026/1/7 9:44
  11 + * @Created by wangqian
  12 + */
  13 +@Data
  14 +public class TaskDetailsRspVo {
  15 +
  16 + /*任务名称*/
  17 + private String taskName;
  18 + /*创建时间或完成时间*/
  19 + private LocalDateTime busiDateTime;
  20 + /**
  21 + * 紧急程度:1:特急;2:紧急;3:一般
  22 + */
  23 + private Integer pressingType;
  24 +
  25 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java
1 1 package com.zteits.urbanops.module.garden.dal.mysql.homepage;
2 2  
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
3 4 import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX;
4 5 import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitTaskStatisticsRespVo;
5 6 import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo;
6 7 import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo;
7 8 import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.WorkOrderTrendRespVo;
  9 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo;
  10 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo;
8 11 import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
9 12 import org.apache.ibatis.annotations.Mapper;
10 13 import org.apache.ibatis.annotations.Param;
... ... @@ -95,4 +98,36 @@ public interface HomepageSummaryMapper extends BaseMapperX&lt;DepartmentCostDO&gt; {
95 98 * @Date 2025/12/30 23:40
96 99 */
97 100 List<WorkOrderTrendRespVo> countWorkOrderTrend(@Param("companyId") Long companyId, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("queryState") String queryState);
  101 +
  102 + /**
  103 + * @Author wangqian
  104 + * @Description 已完成任务数
  105 + * @Date 2026/1/7 9:28
  106 + * @Param userId
  107 + * @param beginTime
  108 + * @param endTime
  109 + * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  110 + */
  111 + List<TaskCompletionStatusRspVo> countcompletedTask(@Param("userId") Long userId, @Param("beginTime") String beginTime, @Param("endTime") String endTime);
  112 + /**
  113 + * @Author wangqian
  114 + * @Description 未完成任务数
  115 + * @Date 2026/1/7 9:28
  116 + * @Param userId
  117 + * @param beginTime
  118 + * @param endTime
  119 + * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  120 + */
  121 + List<TaskCompletionStatusRspVo> countpendingTask(@Param("userId") Long userId, @Param("roleIds") List<Long> roleIds, @Param("beginTime") String beginTime, @Param("endTime") String endTime);
  122 + /**
  123 + * @Author wangqian
  124 + * @Description 已完成任务
  125 + * @Date 2026/1/7 11:15
  126 + * @Param userId
  127 + * @Return java.util.List<com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo>
  128 + */
  129 + IPage<TaskDetailsRspVo> queryCompletedTaskDetails(IPage<TaskDetailsRspVo> page, @Param("userId") Long userId);
  130 +
  131 + IPage<TaskDetailsRspVo> queryPendingTaskDetails(IPage<TaskDetailsRspVo> page, @Param("roleIds") List<Long> roleIds);
  132 +
98 133 }
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.service.homepage;
  2 +
  3 +import com.zteits.urbanops.framework.common.pojo.PageResult;
  4 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryPageReqVO;
  5 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryReqVO;
  6 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo;
  7 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo;
  8 +
  9 +import java.util.List;
  10 +import java.util.Map;
  11 +
  12 +/**
  13 + * @Classname HomepageSummaryService
  14 + * @Description 首页统计
  15 + * @Date 2026/1/6 17:13
  16 + * @Created by wangqian
  17 + */
  18 +public interface HomepageSummaryService {
  19 +
  20 +
  21 + /**
  22 + * @Author wangqian
  23 + * @Description 任务完成情况统计
  24 + * @Date 2026/1/6 17:11
  25 + * @Param
  26 + * @Return java.util.Map<java.lang.String,java.lang.Object>
  27 + */
  28 + List<TaskCompletionStatusRspVo> taskCompletionSummary(AppHomePageSummaryReqVO req);
  29 + /**
  30 + * @Author wangqian
  31 + * @Description 任务详情
  32 + * @Date 2026/1/7 10:58
  33 + * @Param req
  34 + * @Return java.util.List<TaskDetailsRspVo>
  35 + */
  36 + PageResult<TaskDetailsRspVo> queryTaskDetails(AppHomePageSummaryPageReqVO req);
  37 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java 0 → 100644
  1 +package com.zteits.urbanops.module.garden.service.homepage;
  2 +
  3 +import com.baomidou.mybatisplus.core.metadata.IPage;
  4 +import com.zteits.urbanops.framework.common.pojo.PageResult;
  5 +import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils;
  6 +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils;
  7 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryPageReqVO;
  8 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppHomePageSummaryReqVO;
  9 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo;
  10 +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo;
  11 +import com.zteits.urbanops.module.garden.dal.mysql.homepage.HomepageSummaryMapper;
  12 +import com.zteits.urbanops.module.system.api.permission.RoleApi;
  13 +import jakarta.annotation.Resource;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.text.DateFormat;
  17 +import java.text.ParseException;
  18 +import java.text.SimpleDateFormat;
  19 +import java.util.*;
  20 +import java.util.stream.Collectors;
  21 +
  22 +/**
  23 + * @Classname HomepageSummaryServiceImpl
  24 + * @Description 首页统计实现
  25 + * @Date 2026/1/6 17:13
  26 + * @Created by wangqian
  27 + */
  28 +@Service
  29 +public class HomepageSummaryServiceImpl implements HomepageSummaryService{
  30 +
  31 +
  32 + @Resource
  33 + private HomepageSummaryMapper homepageSummaryMapper;
  34 +
  35 + @Resource
  36 + private RoleApi roleApi;
  37 + @Override
  38 + public List<TaskCompletionStatusRspVo> taskCompletionSummary(AppHomePageSummaryReqVO req) {
  39 + Long userId = SecurityFrameworkUtils.getLoginUserId();
  40 + //巡查任务和养护任务已完成,未完成数量统计
  41 + //返回数据初始化
  42 + List<String> days = getDays(req.getBeginTime(), req.getEndTime());
  43 + List<TaskCompletionStatusRspVo> respVo = addTaskDefaultData(days);
  44 + //查询已完成数量
  45 + List<TaskCompletionStatusRspVo> completionDetailList = homepageSummaryMapper.countcompletedTask(userId, req.getBeginTime(), req.getEndTime());
  46 + Map<String, Integer> completionMap = completionDetailList.stream()
  47 + .collect(Collectors.toMap(
  48 + TaskCompletionStatusRspVo::getCommitDate,
  49 + TaskCompletionStatusRspVo::getCompletedNum,
  50 + (existingValue, newValue) -> existingValue + newValue
  51 + ));
  52 + //查询未完成数量
  53 + /*1.查询登录用户角色*/
  54 + List<Long> roleIds = roleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId());
  55 + List<TaskCompletionStatusRspVo> countpendingDetailList = homepageSummaryMapper.countpendingTask(userId,roleIds, req.getBeginTime(), req.getEndTime());
  56 + Map<String, Integer> countpendingMap = countpendingDetailList.stream()
  57 + .collect(Collectors.toMap(
  58 + TaskCompletionStatusRspVo::getCommitDate,
  59 + TaskCompletionStatusRspVo::getCountpendingNum,
  60 + (existingValue, newValue) -> existingValue + newValue
  61 + ));
  62 + //返回对象赋值
  63 + respVo.forEach(vo -> {
  64 + Integer cmpletedNum = completionMap.get(vo.getCommitDate());
  65 + if (cmpletedNum!= null) {
  66 + vo.setCompletedNum(cmpletedNum);
  67 + }
  68 + Integer countpendingNum = countpendingMap.get(vo.getCommitDate());
  69 + if (countpendingNum != null) {
  70 + vo.setCountpendingNum(countpendingNum);
  71 + }
  72 + });
  73 + return respVo;
  74 + }
  75 +
  76 + @Override
  77 + public PageResult<TaskDetailsRspVo> queryTaskDetails(AppHomePageSummaryPageReqVO req) {
  78 + Long userId = SecurityFrameworkUtils.getLoginUserId();
  79 + IPage<TaskDetailsRspVo> mpPage = MyBatisUtils.buildPage(req);
  80 + if (req.getQueryType() == 2) {
  81 + //已完成
  82 + mpPage = homepageSummaryMapper.queryCompletedTaskDetails(mpPage,userId);
  83 + } else {
  84 + //待办
  85 + List<Long> roleIds = roleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId());
  86 + mpPage = homepageSummaryMapper.queryPendingTaskDetails(mpPage,roleIds);
  87 + }
  88 + return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
  89 + }
  90 +
  91 + private List<TaskCompletionStatusRspVo> addTaskDefaultData(List<String> days){
  92 + List<TaskCompletionStatusRspVo> newList = new ArrayList<>();
  93 + //1、日期赋值
  94 + days.forEach(dayy->{
  95 + TaskCompletionStatusRspVo vo = new TaskCompletionStatusRspVo();
  96 + vo.setCommitDate(dayy);
  97 + vo.setCurrentDate(dayy.substring(5).replace("-","."));
  98 + vo.setCompletedNum(0);
  99 + vo.setCountpendingNum(0);
  100 + newList.add(vo);
  101 + });
  102 + return newList;
  103 + }
  104 + public static List<String> getDays(String startTime, String endTime) {
  105 +
  106 + // 返回的日期集合
  107 + List<String> days = new ArrayList<String>();
  108 +
  109 + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  110 + try {
  111 + Date start = dateFormat.parse(startTime);
  112 + Date end = dateFormat.parse(endTime);
  113 +
  114 + Calendar tempStart = Calendar.getInstance();
  115 + tempStart.setTime(start);
  116 +
  117 + Calendar tempEnd = Calendar.getInstance();
  118 + tempEnd.setTime(end);
  119 + //tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
  120 + while (tempStart.before(tempEnd)) {
  121 + days.add(dateFormat.format(tempStart.getTime()));
  122 + tempStart.add(Calendar.DAY_OF_YEAR, 1);
  123 + }
  124 +
  125 + } catch (ParseException e) {
  126 + e.printStackTrace();
  127 + }
  128 +
  129 + return days;
  130 + }
  131 +}
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java
... ... @@ -507,7 +507,7 @@ public class MaintainSummaryServiceImpl implements MaintainSummaryService {
507 507 private Map<String, List<WorkOrderTrendRespVo>> addDefaultData(HomePageSummaryReqVO req){
508 508 Map<String, List<WorkOrderTrendRespVo>> respMap = new HashMap<>();
509 509 List<WorkOrderTrendRespVo> newList = new ArrayList<>();
510   - List<String> days = getDays(req.beginTime, req.endTime);
  510 + List<String> days = getDays(req.getBeginTime(), req.getEndTime());
511 511 List<DeptRespVO> companyList = deptApi.getCompanyList();
512 512 days.forEach(dayy->{
513 513 companyList.forEach(resp ->{
... ...
urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml
... ... @@ -285,4 +285,134 @@
285 285 group by v.date_value,t.busi_line,t.worker_company_id
286 286 </select>
287 287  
  288 + <!--已完成任务数量-->
  289 + <select id="countcompletedTask" resultType="com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo">
  290 + -- 按日期分组,汇总巡检+养护计划提交总数
  291 + SELECT
  292 + commit_date AS commitDate,
  293 + SUM(commit_count) AS completedNum
  294 + FROM (
  295 + SELECT
  296 + DATE_FORMAT(finish_time,'%Y-%m-%d') AS commit_date,
  297 + COUNT(id) AS commit_count
  298 + FROM garden_inspection_plan_commit
  299 + WHERE user_id = #{userId}
  300 + <if test="beginTime != null and beginTime != ''">
  301 + AND finish_time >= #{beginTime}
  302 + </if>
  303 + <if test="endTime != null and endTime != ''">
  304 + AND finish_time &lt; #{endTime}
  305 + </if>
  306 + GROUP BY DATE_FORMAT(finish_time,'%Y-%m-%d')
  307 + UNION ALL
  308 + SELECT
  309 + DATE_FORMAT(finish_time,'%Y-%m-%d') AS commit_date,
  310 + COUNT(id) AS commit_count
  311 + FROM garden_maintain_plan_commit
  312 + WHERE user_id = #{userId}
  313 + <if test="beginTime != null and beginTime != ''">
  314 + AND finish_time >= #{beginTime}
  315 + </if>
  316 + <if test="endTime != null and endTime != ''">
  317 + AND finish_time &lt; #{endTime}
  318 + </if>
  319 + GROUP BY DATE_FORMAT(finish_time,'%Y-%m-%d')
  320 + ) AS temp_total
  321 + GROUP BY commit_date
  322 + ORDER BY commit_date;
  323 + </select>
  324 + <!--未完成任务数量-->
  325 + <select id="countpendingTask" resultType="com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo" >
  326 + -- 按日期分组,汇总巡检+养护计划未完成/已过期任务总数
  327 + SELECT
  328 + commit_date AS commitDate,
  329 + SUM(unfinished_count) AS countpendingNum
  330 + FROM (
  331 + SELECT
  332 + DATE_FORMAT(a.begin_time, '%Y-%m-%d') AS commit_date,
  333 + COUNT(*) AS unfinished_count
  334 + FROM
  335 + garden_inspection_plan_detail a
  336 + INNER JOIN garden_inspection_plan_role b ON a.batch_no = b.batch_no
  337 + WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期
  338 + AND b.role_id IN
  339 + <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','>
  340 + #{roleId}
  341 + </foreach>
  342 + <if test="beginTime != null and beginTime != ''">
  343 + AND a.begin_time >= #{beginTime}
  344 + </if>
  345 + <if test="endTime != null and endTime != ''">
  346 + AND a.end_time &lt; #{endTime}
  347 + </if>
  348 + GROUP BY
  349 + DATE_FORMAT(a.begin_time, '%Y-%m-%d')
  350 +
  351 + UNION ALL
  352 +
  353 + SELECT
  354 + DATE_FORMAT(a.begin_time, '%Y-%m-%d') AS commit_date,
  355 + COUNT(*) AS unfinished_count
  356 + FROM
  357 + garden_maintain_plan_detail a
  358 + INNER JOIN garden_maintain_plan_role b ON a.batch_no = b.batch_no
  359 + WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期
  360 + AND b.role_id IN
  361 + <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','>
  362 + #{roleId}
  363 + </foreach>
  364 + <if test="beginTime != null and beginTime != ''">
  365 + AND a.begin_time >= #{beginTime}
  366 + </if>
  367 + <if test="endTime != null and endTime != ''">
  368 + AND a.end_time &lt; #{endTime}
  369 + </if>
  370 + GROUP BY
  371 + DATE_FORMAT(a.begin_time, '%Y-%m-%d')
  372 + ) AS temp_total
  373 + GROUP BY
  374 + commit_date
  375 + ORDER BY
  376 + commit_date;
  377 + </select>
  378 + <!--已完成任务详情-->
  379 + <select id="queryCompletedTaskDetails" resultType="com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo" >
  380 + -- 巡查已办理
  381 + SELECT taskName, busiDateTime
  382 + FROM (
  383 + SELECT B.plan_name as taskName,A.finish_time as busiDateTime
  384 + from garden_inspection_plan_commit a , garden_inspection_plan b
  385 + where a.batch_no=b.batch_no and user_id = #{userId}
  386 + union all
  387 + -- 养护已办理
  388 + SELECT b.plan_name as taskName,a.finish_time as busiDateTime
  389 + from garden_maintain_plan_commit a , garden_maintain_plan b
  390 + where a.batch_no=b.batch_no and user_id = #{userId}
  391 + ) t
  392 + ORDER BY busiDateTime DESC
  393 + </select>
  394 + <!--待办任务详情-->
  395 + <select id="queryPendingTaskDetails" resultType="com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo" >
  396 + SELECT taskName, busiDateTime
  397 + FROM (
  398 + SELECT a.plan_name as taskName,a.begin_time as busiDateTime
  399 + from garden_inspection_plan a
  400 + INNER JOIN garden_inspection_plan_role b on a.batch_no=b.batch_no
  401 + where a.finish_state in(1,3)
  402 + AND b.role_id IN
  403 + <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','>
  404 + #{roleId}
  405 + </foreach>
  406 + union all
  407 + SELECT a.plan_name as taskName,a.begin_time as busiDateTime
  408 + from garden_maintain_plan a
  409 + INNER JOIN garden_maintain_plan_role b on a.batch_no=b.batch_no
  410 + where a.finish_state in(1,3)
  411 + AND b.role_id IN
  412 + <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','>
  413 + #{roleId}
  414 + </foreach>
  415 + ) t
  416 + ORDER BY busiDateTime DESC
  417 + </select>
288 418 </mapper>
... ...