From 3d5024419b7fa21b75bdc2adf7ac3108a7703171 Mon Sep 17 00:00:00 2001 From: yanhuiqing Date: Mon, 15 Dec 2025 23:46:50 +0800 Subject: [PATCH] APP端待办接口重构 --- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoHasTaskPageReqVO.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java | 23 +++++++++++++++++++---- urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java | 19 +++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AppGardenTaskConvert.java | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java | 10 ++++++++++ urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java | 14 ++++++++++++++ 8 files changed, 562 insertions(+), 4 deletions(-) create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoHasTaskPageReqVO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java create mode 100644 urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoHasTaskPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoHasTaskPageReqVO.java new file mode 100644 index 0000000..28e65de --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoHasTaskPageReqVO.java @@ -0,0 +1,52 @@ +package com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 类描述:工单工作流分页请求 reqVO + * 创建人:yanhuiqing + * 创建时间:2025/12/15 21:41 + * 修改人:yanhuiqing + * 修改时间:2025/12/15 21:41 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Schema(description = "管理后台 - 工单工作流信息分页 Request VO") +@Data +public class MainInfoHasTaskPageReqVO extends PageParam { + @NotNull + @Schema(description = "任务指派人", example = "admin") + private Long userId; + @Schema(description = "流程定义key", example = "quik_local_test") + private String key; + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ") + private String busiLine; + @Schema(description = "工单号") + private String orderNo; + @Schema(description = "工单名称", example = "张三") + private String orderName; + @Schema(description = "工单描述", example = "你说的对") + private String remark; + @Schema(description = "道路名称", example = "王五") + private String roadName; + @Schema(description = "街道名称", example = "芋艿") + private String streetName; + @Schema(description = "养护级别ID", example = "1") + private Integer curingLevelId; +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java index 6f47346..bc58882 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java @@ -104,7 +104,7 @@ public class AppGardenWorkOrderController { } @PutMapping("/return") - @Operation(summary = "退回任务", description = "用于【流程详情】的【退回】按钮") + @Operation(summary = " app - 退回任务", description = "用于【流程详情】的【退回】按钮") //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult returnTask(@Valid @RequestBody AppGardenTaskReturnReqVO reqVO) { gardenService.returnTask(reqVO); @@ -112,7 +112,7 @@ public class AppGardenWorkOrderController { } @PutMapping("/withdraw") - @Operation(summary = "撤回任务") + @Operation(summary = "app - 撤回任务") //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult withdrawTask(@RequestParam("taskId") String taskId) { gardenService.withdrawTask(taskId); @@ -120,7 +120,7 @@ public class AppGardenWorkOrderController { } @PutMapping("/delegate") - @Operation(summary = "委派任务", description = "用于【流程详情】的【委派】按钮") + @Operation(summary = "app - 委派任务", description = "用于【流程详情】的【委派】按钮") //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult delegateTask(@Valid @RequestBody AppGardenTaskDelegateReqVO reqVO) { gardenService.delegateTask(reqVO); @@ -128,7 +128,7 @@ public class AppGardenWorkOrderController { } @PutMapping("/transfer") - @Operation(summary = "转派任务", description = "用于【流程详情】的【转派】按钮") + @Operation(summary = "app - 转派任务", description = "用于【流程详情】的【转派】按钮") //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") public CommonResult transferTask(@Valid @RequestBody AppGardenTaskTransferReqVO reqVO) { gardenService.transferTask(reqVO); @@ -149,4 +149,19 @@ public class AppGardenWorkOrderController { PageResult pageResult = gardenService.getTaskTodoPage(pageVO); return success(pageResult); } + + @GetMapping("doneBuzSimplePage") + @Operation(summary = "app - 获取工单业务已办任务分页") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:query')") + public CommonResult> getTaskDoneBuzSimplePage(@Valid AppGardenWorkOrderPageReqVO pageVO) { + PageResult pageResult = gardenService.getTaskDoneBuzSimplePage(pageVO); + return success(pageResult); + } + @GetMapping("todoBuzSimplePage") + @Operation(summary = "app - 获取工单业务待办任务分页") + //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:query')") + public CommonResult> getTaskTodoBuzSimplePage(@Valid AppGardenWorkOrderPageReqVO pageVO) { + PageResult pageResult = gardenService.getTaskTodoBuzSimplePage(pageVO); + return success(pageResult); + } } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java index 90fba25..f3f0bda 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/vo/AppGardenWorkOrderRespVO.java @@ -4,6 +4,7 @@ import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInf import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; import java.util.List; /** @@ -21,4 +22,22 @@ public class AppGardenWorkOrderRespVO extends MainInfoRespVO { @Schema(description = "处理完成照片", example = "9184") private List completeImgsList; + + @Schema(description = "任务id") + private String taskId; + + @Schema(description = "任务名称") + private String taskName; + + @Schema(description = "流程定义名称") + private String processDefinitionName; + + @Schema(description = "任务开始时间") + private LocalDateTime startTime; + + @Schema(description = "任务结束时间") + private LocalDateTime endTime; + + @Schema(description = "流程定义key") + private String key_; } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AppGardenTaskConvert.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AppGardenTaskConvert.java index b610b39..b943b96 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AppGardenTaskConvert.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/garden/AppGardenTaskConvert.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.workorder.convert.garden; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.util.collection.CollectionUtils; import com.zteits.urbanops.framework.common.util.date.DateUtils; @@ -11,7 +12,12 @@ import com.zteits.urbanops.module.bpm.dal.dataobject.definition.BpmProcessDefini import com.zteits.urbanops.module.bpm.framework.flowable.core.util.FlowableUtils; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.app.garden.vo.AppGardenWorkOrderRespVO; import com.zteits.urbanops.module.workorder.controller.app.garden.vo.task.AppGardenTaskRespVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; +import com.zteits.urbanops.module.workorder.dal.mysql.attachment.AttachmentMapper; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; @@ -19,8 +25,11 @@ import org.flowable.task.api.history.HistoricTaskInstance; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.zteits.urbanops.framework.common.util.collection.MapUtils.findAndThen; @@ -88,4 +97,80 @@ public interface AppGardenTaskConvert { return new PageResult<>(taskVOList, pageResult.getTotal()); } + default PageResult buildBuziTaskPage(PageResult pageResult, AttachmentMapper attachmentMapper){ + // 1. 源分页对象为空,返回空分页 + if (pageResult == null) { + return PageResult.empty(); + } + + // 2. 转换列表数据,保留分页参数(总数、页码、页大小等) + List targetList = convertList(pageResult.getList(), attachmentMapper); + return new PageResult<>(targetList, pageResult.getTotal()); + } + + default List convertList(List sourceList, AttachmentMapper attachmentMapper) { + // 1. 源列表为空,返回空列表(避免NPE) + if (sourceList == null || sourceList.isEmpty()) { + return Collections.emptyList(); + } + + // 2. 遍历源列表,调用单对象转换方法 + return sourceList.stream() + .map(source -> convert(source, attachmentMapper)) + .collect(Collectors.toList()); + } + + /** + * MainInfoExtDO → AppGardenWorkOrderRespVO + * @param source 源对象 + * @param attachmentMapper 附件Mapper,用于查询图片列表 + * @return 目标对象 + */ + default AppGardenWorkOrderRespVO convert(MainInfoExtDO source, AttachmentMapper attachmentMapper) { + // 1. 源对象为空,直接返回null + if (source == null) { + return null; + } + + AppGardenWorkOrderRespVO target = new AppGardenWorkOrderRespVO(); + org.springframework.beans.BeanUtils.copyProperties(source, target); + + // 3. 手动赋值扩展字段:查询问题图片列表和完成图片列表 + List problemImgsList = queryAttachment( + source.getBusiLine(), + BpmCommonConstant.PROBLEM_IMG_GROUP, + source.getOrderNo(), + attachmentMapper + ); + List completeImgsList = queryAttachment( + source.getBusiLine(), + BpmCommonConstant.RESULT_IMG_GROUP, + source.getOrderNo(), + attachmentMapper + ); + target.setProblemImgsList(problemImgsList); + target.setCompleteImgsList(completeImgsList); + + return target; + } + + default List queryAttachment(String busiLine, String busiType, String orderNo, AttachmentMapper attachmentMapper) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(AttachmentDO::getBusiLine, busiLine) + .eq(AttachmentDO::getBusiType, busiType) + .eq(AttachmentDO::getOrderNo, orderNo); + List attachments = attachmentMapper.selectList(queryWrapper); + if (attachments == null || attachments.isEmpty()) { + return List.of(); + } + return attachments.stream() + .map(AttachmentDO::getFileNames) + .filter(s -> s != null && !s.isEmpty()) + .flatMap(s -> Arrays.stream(s.split(",")).map(String::trim)) + .filter(s -> !s.isEmpty()) + .distinct() + .collect(Collectors.toList()); + } + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java new file mode 100644 index 0000000..613b3c4 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/maininfo/MainInfoExtDO.java @@ -0,0 +1,174 @@ +package com.zteits.urbanops.module.workorder.dal.dataobject.maininfo; + +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zteits.urbanops.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 类描述:工单扩展信息,支持工作流任务信息 DO + * 创建人:yanhuiqing + * 创建时间:2025/12/15 17:37 + * 修改人:yanhuiqing + * 修改时间:2025/12/15 17:37 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MainInfoExtDO extends BaseDO { + + /** + * ID + */ + private Long id; + /** + * 业务线:yl 园林,wy 物业,sz 市政 + */ + private String busiLine; + /** + * 工单号 + */ + private String orderNo; + /** + * 工单名称 + */ + private String orderName; + /** + * 来源ID + */ + private Integer sourceId; + /** + * 来源名称 + */ + private String sourceName; + /** + * 道路ID + */ + private Long roadId; + /** + * 道路名称 + */ + private String roadName; + /** + * 街道ID + */ + private String streetId; + /** + * 街道名称 + */ + private String streetName; + /** + * 养护级别ID + */ + private Integer curingLevelId; + /** + * 养护级别 + */ + private String curingLevelName; + /** + * 提交日期 + */ + private LocalDateTime commitDate; + + /** + * 完成时间 + */ + private LocalDateTime finishDate; + /** + * 紧急程度:1:特急;2:紧急;3:一般 + */ + private Integer pressingType; + /** + * 提交用户ID + */ + private Long userId; + /** + * 提交用户名称 + */ + private String userName; + /** + * 部门id + */ + private Long companyId; + /** + * 经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯 + */ + private Integer latLonType; + /** + * 经度 + */ + private BigDecimal lat; + /** + * 维度 + */ + private BigDecimal lon; + /** + * 经纬度地址 + */ + private String lonLatAddress; + /** + * 三方工单ID + */ + private String thirdWorkNo; + /** + * 三方工单结果上报状态:1:待推送;2:推送成功;3:推送失败 + */ + private Integer thirdPushState; + /** + * 业务状态 + */ + private String buzStatus; + /** + * 审批状态 + */ + private Integer status; + /** + * 流程实例的编号 + */ + private String processInstanceId; + /** + * 工单描述 + */ + private String remark; + /** + * 工单完成结果描述 + */ + private String handleResult; + /** + * 任务id + */ + private String taskId; + /** + * 任务名称 + */ + private String taskName; + /** + * 流程定义名称 + */ + private String processDefinitionName; + /** + * 任务开始时间 + */ + private LocalDateTime startTime; + /** + * 任务结束时间 + */ + private LocalDateTime endTime; + /** + * 流程定义key + */ + private String key_; + + +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java new file mode 100644 index 0000000..841d45a --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoExtMapper.java @@ -0,0 +1,189 @@ +package com.zteits.urbanops.module.workorder.dal.mysql.maininfo; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zteits.urbanops.framework.common.pojo.PageParam; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoHasTaskPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoExtDO; +import org.apache.ibatis.annotations.*; + +/** + * 类描述:工单工作流扩展Mapper + * 创建人:yanhuiqing + * 创建时间:2025/12/15 17:27 + * 修改人:yanhuiqing + * 修改时间:2025/12/15 17:27 + * 修改备注: + * + * @author yanhuiqing + * @version 1.0 + */ +@Mapper +public interface MainInfoExtMapper extends BaseMapperX { + @Select("select m.*," + + " t.ID_ AS task_id," + + " t.NAME_ AS task_name," + + " pd.NAME_ AS process_definition_name," + + " t.START_TIME_ ," + + " t.END_TIME_ ," + + " pd.KEY_ " + + " FROM act_hi_taskinst t" + + " LEFT JOIN act_re_procdef pd ON t.PROC_DEF_ID_ = pd.ID_" + + " LEFT JOIN workorder_main_info m ON t.PROC_INST_ID_ = m.process_instance_id" + + " WHERE 1=1" + + " AND t.END_TIME_ IS NOT NULL " + + " AND t.ASSIGNEE_ = #{query.userId} "+ + " AND pd.KEY_ = #{query.key} "+ + " AND m.deleted = 0"+ + " " + + " AND t.START_TIME_ >= #{query.startTime} " + + " " + + " " + + " AND t.END_TIME_ <= #{query.endTime} " + + " " + + " AND m.busi_line = #{query.busiLine} "+ + " AND m.order_no LIKE CONCAT('%', #{query.orderNo}, '%') "+ + " AND m.order_name LIKE CONCAT('%', #{query.orderName}, '%') "+ + " AND m.remark LIKE CONCAT('%', #{query.remark}, '%') "+ + " AND m.road_name LIKE CONCAT('%', #{query.roadName}, '%') "+ + " AND m.order_no = #{query.orderNo} "+ + " AND m.curing_level_id = #{query.curingLevelId} "+ + " ORDER BY t.END_TIME_ desc " + + ) + @Results({ + @Result(column = "id", property = "id"), + @Result(column = "busi_line", property = "busiLine"), + @Result(column = "order_no", property = "orderNo"), + @Result(column = "order_name", property = "orderName"), + @Result(column = "source_id", property = "sourceId"), + @Result(column = "source_name", property = "sourceName"), + @Result(column = "road_id", property = "roadId"), + @Result(column = "road_name", property = "roadName"), + @Result(column = "street_id", property = "streetId"), + @Result(column = "street_name", property = "streetName"), + @Result(column = "curing_level_id", property = "curingLevelId"), + @Result(column = "curing_level_name", property = "curingLevelName"), + @Result(column = "commit_date", property = "commitDate"), + @Result(column = "finish_date", property = "finishDate"), + @Result(column = "pressing_type", property = "pressingType"), + @Result(column = "user_id", property = "userId"), + @Result(column = "user_name", property = "userName"), + @Result(column = "company_id", property = "companyId"), + @Result(column = "lat_lon_type", property = "latLonType"), + @Result(column = "lat", property = "lat"), + @Result(column = "lon", property = "lon"), + @Result(column = "lon_lat_address", property = "lonLatAddress"), + @Result(column = "third_work_no", property = "thirdWorkNo"), + @Result(column = "third_push_state", property = "thirdPushState"), + @Result(column = "buz_status", property = "buzStatus"), + @Result(column = "status", property = "status"), + @Result(column = "process_instance_id", property = "processInstanceId"), + @Result(column = "remark", property = "remark"), + @Result(column = "handle_result", property = "handleResult"), + @Result(column = "creator", property = "creator"), + @Result(column = "create_time", property = "createTime"), + @Result(column = "updater", property = "updater"), + @Result(column = "update_time", property = "updateTime"), + @Result(column = "deleted", property = "deleted"), + + @Result(column = "task_id", property = "taskId"), + @Result(column = "task_name", property = "taskName"), + @Result(column = "process_definition_name", property = "processDefinitionName"), + @Result(column = "START_TIME_", property = "startTime"), + @Result(column = "END_TIME_", property = "endTime"), + @Result(column = "KEY_", property = "key_") + }) + IPage selectDoneExtPage(IPage page, @Param("query") MainInfoHasTaskPageReqVO reqVO); + + default PageResult selectWorkOrderDonePage(PageParam pageParam, @Param("query") MainInfoHasTaskPageReqVO reqVO) { + IPage mpPage = MyBatisUtils.buildPage(pageParam); + mpPage = selectDoneExtPage(mpPage, reqVO); + return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); + } + + @Select("select m.*," + + " t.ID_ AS task_id," + + " t.NAME_ AS task_name," + + " pd.NAME_ AS process_definition_name," + + " t.CREATE_TIME_ as START_TIME_," + + " t.DUE_DATE_ as END_TIME_," + + " pd.KEY_ " + + " FROM act_ru_task t" + + " LEFT JOIN act_re_procdef pd ON t.PROC_DEF_ID_ = pd.ID_" + + " LEFT JOIN workorder_main_info m ON t.PROC_INST_ID_ = m.process_instance_id" + + " WHERE 1=1" + + " AND t.END_TIME_ IS NOT NULL " + + " AND t.ASSIGNEE_ = #{query.userId} "+ + " AND pd.KEY_ = #{query.key} "+ + " AND t.SUSPENSION_STATE_ = 1 "+ + " AND m.deleted = 0"+ + " " + + " AND t.CREATE_TIME_ >= #{query.startTime} " + + " " + + " AND m.busi_line = #{query.busiLine} "+ + " AND m.order_no LIKE CONCAT('%', #{query.orderNo}, '%') "+ + " AND m.order_name LIKE CONCAT('%', #{query.orderName}, '%') "+ + " AND m.remark LIKE CONCAT('%', #{query.remark}, '%') "+ + " AND m.road_name LIKE CONCAT('%', #{query.roadName}, '%') "+ + " AND m.order_no = #{query.orderNo} "+ + " AND m.curing_level_id = #{query.curingLevelId} "+ + " ORDER BY t.CREATE_TIME_ desc " + + ) + @Results({ + @Result(column = "id", property = "id"), + @Result(column = "busi_line", property = "busiLine"), + @Result(column = "order_no", property = "orderNo"), + @Result(column = "order_name", property = "orderName"), + @Result(column = "source_id", property = "sourceId"), + @Result(column = "source_name", property = "sourceName"), + @Result(column = "road_id", property = "roadId"), + @Result(column = "road_name", property = "roadName"), + @Result(column = "street_id", property = "streetId"), + @Result(column = "street_name", property = "streetName"), + @Result(column = "curing_level_id", property = "curingLevelId"), + @Result(column = "curing_level_name", property = "curingLevelName"), + @Result(column = "commit_date", property = "commitDate"), + @Result(column = "finish_date", property = "finishDate"), + @Result(column = "pressing_type", property = "pressingType"), + @Result(column = "user_id", property = "userId"), + @Result(column = "user_name", property = "userName"), + @Result(column = "company_id", property = "companyId"), + @Result(column = "lat_lon_type", property = "latLonType"), + @Result(column = "lat", property = "lat"), + @Result(column = "lon", property = "lon"), + @Result(column = "lon_lat_address", property = "lonLatAddress"), + @Result(column = "third_work_no", property = "thirdWorkNo"), + @Result(column = "third_push_state", property = "thirdPushState"), + @Result(column = "buz_status", property = "buzStatus"), + @Result(column = "status", property = "status"), + @Result(column = "process_instance_id", property = "processInstanceId"), + @Result(column = "remark", property = "remark"), + @Result(column = "handle_result", property = "handleResult"), + @Result(column = "creator", property = "creator"), + @Result(column = "create_time", property = "createTime"), + @Result(column = "updater", property = "updater"), + @Result(column = "update_time", property = "updateTime"), + @Result(column = "deleted", property = "deleted"), + + @Result(column = "task_id", property = "taskId"), + @Result(column = "task_name", property = "taskName"), + @Result(column = "process_definition_name", property = "processDefinitionName"), + @Result(column = "START_TIME_", property = "startTime"), + @Result(column = "END_TIME_", property = "endTime"), + @Result(column = "KEY_", property = "key_") + }) + IPage selectTodoExtPage(IPage page, @Param("query") MainInfoHasTaskPageReqVO reqVO); + + default PageResult selectWorkOrderTodoPage(PageParam pageParam, @Param("query") MainInfoHasTaskPageReqVO reqVO) { + IPage mpPage = MyBatisUtils.buildPage(pageParam); + mpPage = selectTodoExtPage(mpPage, reqVO); + return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); + } +} \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java index 7965090..04e67f9 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java @@ -2,12 +2,14 @@ package com.zteits.urbanops.module.workorder.dal.mysql.maininfo; import java.util.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; import org.apache.ibatis.annotations.Mapper; import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*; +import org.apache.poi.ss.formula.functions.T; /** * 工单信息 Mapper @@ -85,4 +87,12 @@ public interface MainInfoMapper extends BaseMapperX { .orderByDesc(MainInfoDO::getId)); } + default List selectListIn(String field, Collection values) { + // 空集合判断:避免 SQL 中出现 IN () 语法错误 + if (values == null || values.isEmpty()) { + return List.of(); // 返回空列表(JDK9+),也可以用 new ArrayList<>() + } + return selectList(new QueryWrapper().in(field, values)); + } + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java index 005a0c7..0a1d5ab 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java @@ -119,4 +119,18 @@ public interface BpmGardenService { * @return */ AppGardenApprovalDetailRespVO getApprovalDetail(AppGardenApprovalDetailReqVO reqVO); + + /** + * 工单业务已完结 列表 -app 端 + * @param pageVO + * @return + */ + PageResult getTaskDoneBuzSimplePage(AppGardenWorkOrderPageReqVO pageVO); + + /** + * 工单业务待办 列表 -app端 + * @param pageVO + * @return + */ + PageResult getTaskTodoBuzSimplePage(AppGardenWorkOrderPageReqVO pageVO); } -- libgit2 0.21.4