Commit 7f3938776dc92877a642b4976e2e9cd3f5da5c24
1 parent
8a638185
app首页统计
Showing
14 changed files
with
371 additions
and
14 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java
| ... | ... | @@ -2,10 +2,7 @@ package com.zteits.urbanops.module.garden.controller.app.homepage; |
| 2 | 2 | |
| 3 | 3 | import com.zteits.urbanops.framework.common.pojo.CommonResult; |
| 4 | 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; | |
| 5 | +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.*; | |
| 9 | 6 | import com.zteits.urbanops.module.garden.service.homepage.HomepageSummaryService; |
| 10 | 7 | import io.swagger.v3.oas.annotations.Operation; |
| 11 | 8 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -15,7 +12,6 @@ import jakarta.validation.Valid; |
| 15 | 12 | import org.springframework.web.bind.annotation.*; |
| 16 | 13 | |
| 17 | 14 | import java.util.List; |
| 18 | -import java.util.Map; | |
| 19 | 15 | |
| 20 | 16 | import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; |
| 21 | 17 | |
| ... | ... | @@ -51,4 +47,9 @@ public class AppHomepageSummaryController { |
| 51 | 47 | homepageSummaryService.countTaskNumberByUserId(busiDate); |
| 52 | 48 | } |
| 53 | 49 | |
| 50 | + @PostMapping("/iWorkOrderSummary") | |
| 51 | + @Operation(summary = "工单情况统计") | |
| 52 | + public CommonResult<List<AppWorkOrderSummaryRspVo>> iWorkOrderSummary(@Valid @RequestBody AppWorkOrderSummaryReqVo req) { | |
| 53 | + return success(homepageSummaryService.iWorkOrderSummary(req)); | |
| 54 | + } | |
| 54 | 55 | } | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppWorkOrderSummaryReqVo.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; | |
| 2 | + | |
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 4 | +import jakarta.validation.constraints.NotEmpty; | |
| 5 | +import lombok.Data; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * @Classname AppWorkOrderSummaryReqVo | |
| 9 | + * @Description 全域工单统计 | |
| 10 | + * @Date 2026/5/26 23:42 | |
| 11 | + * @Created by wangqian | |
| 12 | + */ | |
| 13 | +@Data | |
| 14 | +public class AppWorkOrderSummaryReqVo { | |
| 15 | + | |
| 16 | + @NotEmpty | |
| 17 | + @Schema(description = "查询类型", example = "0:全部工单 1:全域工单") | |
| 18 | + public String queryType; | |
| 19 | + @NotEmpty | |
| 20 | + @Schema(description = "开始时间", example = "2025-01-01") | |
| 21 | + public String beginTime; | |
| 22 | + /*结束时间*/ | |
| 23 | + @NotEmpty | |
| 24 | + @Schema(description = "结束时间", example = "2025-12-10") | |
| 25 | + public String endTime; | |
| 26 | +} | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppWorkOrderSummaryRspVo.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.app.homepage.vo; | |
| 2 | + | |
| 3 | +import lombok.Data; | |
| 4 | + | |
| 5 | +import java.util.List; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * @Classname TaskCompletionStatusRspVo | |
| 9 | + * @Description 任务完成情况 | |
| 10 | + * @Date 2026/1/7 9:44 | |
| 11 | + * @Created by wangqian | |
| 12 | + */ | |
| 13 | +@Data | |
| 14 | +public class AppWorkOrderSummaryRspVo { | |
| 15 | + /*单位名称列表*/ | |
| 16 | + private List<String> legend; | |
| 17 | + /*总条数*/ | |
| 18 | + private String totalNum; | |
| 19 | + /*占比*/ | |
| 20 | + private List<Integer> percents; | |
| 21 | + /*单位工单统计*/ | |
| 22 | + private List<AppWorkOrderSummaryVo> table; | |
| 23 | + | |
| 24 | +} | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/vo/AppWorkOrderSummaryVo.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 AppWorkOrderSummaryVo { | |
| 13 | + | |
| 14 | + /*公司ID*/ | |
| 15 | + private Long companyId; | |
| 16 | + /*公司名称*/ | |
| 17 | + private String companyName; | |
| 18 | + /*总工单数量*/ | |
| 19 | + private Integer total; | |
| 20 | + /* 已完成数量*/ | |
| 21 | + private Integer finish; | |
| 22 | + /*待完成数量*/ | |
| 23 | + private Integer ongoing; | |
| 24 | +} | ... | ... |
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 |
| 6 | 6 | import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; |
| 7 | 7 | import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo; |
| 8 | 8 | import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.WorkOrderTrendRespVo; |
| 9 | +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppWorkOrderSummaryVo; | |
| 9 | 10 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.CommonTaskStatusVo; |
| 10 | 11 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo; |
| 11 | 12 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; |
| ... | ... | @@ -206,4 +207,13 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { |
| 206 | 207 | * @Date 2026/1/12 0:45 |
| 207 | 208 | */ |
| 208 | 209 | List<TaskStatisticsDO> getUserAll(@Param("busiDate") String busiDate); |
| 210 | + | |
| 211 | + /** | |
| 212 | + * @Author wangqian | |
| 213 | + * @Description 按单位+时间统计工单数量 总量 | 已完成| | |
| 214 | + * @Date 2026/5/26 22:46 | |
| 215 | + * @Param null | |
| 216 | + * @Return | |
| 217 | + */ | |
| 218 | + List<AppWorkOrderSummaryVo> countWorkOrder(@Param("queryType") String queryType, @Param("beginTime") String beginTime, @Param("endTime") String endTime); | |
| 209 | 219 | } | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryService.java
| 1 | 1 | package com.zteits.urbanops.module.garden.service.homepage; |
| 2 | 2 | |
| 3 | 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; | |
| 4 | +import com.zteits.urbanops.module.garden.controller.app.homepage.vo.*; | |
| 8 | 5 | |
| 9 | 6 | import java.util.List; |
| 10 | -import java.util.Map; | |
| 11 | 7 | |
| 12 | 8 | /** |
| 13 | 9 | * @Classname HomepageSummaryService |
| ... | ... | @@ -42,4 +38,14 @@ public interface HomepageSummaryService { |
| 42 | 38 | * @Return void |
| 43 | 39 | */ |
| 44 | 40 | public void countTaskNumberByUserId(String busiDate); |
| 41 | + /** | |
| 42 | + * @Author wangqian | |
| 43 | + * @Description 工单情况统计 | |
| 44 | + * @Date 2026/5/26 22:34 | |
| 45 | + * @Param req | |
| 46 | + * @Return java.util.List<WorkOrderStatisticsRspVo> | |
| 47 | + */ | |
| 48 | + List<AppWorkOrderSummaryRspVo> iWorkOrderSummary(AppWorkOrderSummaryReqVo req); | |
| 49 | + | |
| 50 | + | |
| 45 | 51 | } | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java
| ... | ... | @@ -5,9 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 5 | 5 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 6 | 6 | import com.esotericsoftware.minlog.Log; |
| 7 | 7 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 8 | -import com.zteits.urbanops.framework.common.util.date.DateUtils; | |
| 9 | 8 | import com.zteits.urbanops.framework.common.util.date.LocalDateTimeUtils; |
| 10 | -import com.zteits.urbanops.framework.mybatis.core.query.QueryWrapperX; | |
| 11 | 9 | import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; |
| 12 | 10 | import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; |
| 13 | 11 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.*; |
| ... | ... | @@ -17,7 +15,6 @@ import com.zteits.urbanops.module.garden.dal.mysql.taskstatistics.TaskStatistics |
| 17 | 15 | import com.zteits.urbanops.module.system.api.dept.DeptApi; |
| 18 | 16 | import com.zteits.urbanops.module.system.api.permission.RoleApi; |
| 19 | 17 | import com.zteits.urbanops.module.system.api.user.AdminUserApi; |
| 20 | -import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; | |
| 21 | 18 | import jakarta.annotation.Resource; |
| 22 | 19 | import org.apache.commons.collections4.CollectionUtils; |
| 23 | 20 | import org.apache.commons.lang3.StringUtils; |
| ... | ... | @@ -28,7 +25,6 @@ import java.text.DateFormat; |
| 28 | 25 | import java.text.ParseException; |
| 29 | 26 | import java.text.SimpleDateFormat; |
| 30 | 27 | import java.time.LocalDateTime; |
| 31 | -import java.time.LocalTime; | |
| 32 | 28 | import java.time.format.DateTimeFormatter; |
| 33 | 29 | import java.util.*; |
| 34 | 30 | import java.util.stream.Collectors; |
| ... | ... | @@ -287,6 +283,56 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 287 | 283 | //批量保存 |
| 288 | 284 | taskStatisticsMapper.insertBatch(taskStatisticsDOList); |
| 289 | 285 | } |
| 286 | + | |
| 287 | + @Override | |
| 288 | + public List<AppWorkOrderSummaryRspVo> iWorkOrderSummary(AppWorkOrderSummaryReqVo req) { | |
| 289 | + // 1. 创建返回对象 | |
| 290 | + AppWorkOrderSummaryRspVo respVo = new AppWorkOrderSummaryRspVo(); | |
| 291 | + | |
| 292 | + // 2. 查询工单列表 | |
| 293 | + List<AppWorkOrderSummaryVo> workOrderList = homepageSummaryMapper.countWorkOrder( | |
| 294 | + req.getQueryType(), | |
| 295 | + req.getBeginTime(), | |
| 296 | + req.getEndTime() | |
| 297 | + ); | |
| 298 | + | |
| 299 | + // 3. 提取公司名称列表(修复:toList() 或 toList()) | |
| 300 | + List<String> companyNameList = workOrderList.stream() | |
| 301 | + .map(AppWorkOrderSummaryVo::getCompanyName) | |
| 302 | + .collect(Collectors.toList()); | |
| 303 | + | |
| 304 | + // 4. 总数量求和 | |
| 305 | + int totalNum = workOrderList.stream() | |
| 306 | + .mapToInt(AppWorkOrderSummaryVo::getTotal) | |
| 307 | + .sum(); | |
| 308 | + | |
| 309 | + List<Integer> percents; | |
| 310 | + if (totalNum <= 0) { | |
| 311 | + percents = Collections.singletonList(0); | |
| 312 | + } else { | |
| 313 | + // 3. 先计算四舍五入占比 | |
| 314 | + List<Integer> tempPercents = workOrderList.stream() | |
| 315 | + .map(vo -> (int) Math.round((vo.getTotal() * 100.0) / totalNum)) | |
| 316 | + .collect(Collectors.toList()); | |
| 317 | + | |
| 318 | + // 4. 核心:修正总和 = 100%(把差值补到最后一项) | |
| 319 | + int sum = tempPercents.stream().mapToInt(Integer::intValue).sum(); | |
| 320 | + int diff = 100 - sum; | |
| 321 | + if (diff != 0 && !tempPercents.isEmpty()) { | |
| 322 | + int lastIndex = tempPercents.size() - 1; | |
| 323 | + tempPercents.set(lastIndex, tempPercents.get(lastIndex) + diff); | |
| 324 | + } | |
| 325 | + percents = tempPercents; | |
| 326 | + } | |
| 327 | + // 6. 封装返回数据 | |
| 328 | + respVo.setLegend(companyNameList); | |
| 329 | + respVo.setTable(workOrderList); | |
| 330 | + respVo.setTotalNum(String.valueOf(totalNum)); // 转字符串 | |
| 331 | + respVo.setPercents(percents); //占比 | |
| 332 | + // 7. 包装成 List 返回(因为方法声明返回 List) | |
| 333 | + return List.of(respVo); | |
| 334 | + } | |
| 335 | + | |
| 290 | 336 | /** |
| 291 | 337 | * @Author wangqian |
| 292 | 338 | * @Description 初始化对象集合 | ... | ... |
urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml
| ... | ... | @@ -587,4 +587,30 @@ |
| 587 | 587 | INNER JOIN dept_recursive dr ON u.dept_id = dr.id |
| 588 | 588 | GROUP BY u.id, u.nickname, u.dept_id, u.busi_line, dr.companyId, dr.companyName; |
| 589 | 589 | </select> |
| 590 | + | |
| 591 | + <!--app工单数量汇总--> | |
| 592 | + <select id="countWorkOrder" resultType="com.zteits.urbanops.module.garden.controller.app.homepage.vo.AppWorkOrderSummaryVo"> | |
| 593 | + SELECT | |
| 594 | + w.worker_company_id AS companyId, | |
| 595 | + d.name AS companyName, | |
| 596 | + COUNT(*) AS total, | |
| 597 | + SUM(CASE WHEN w.status = 2 THEN 1 ELSE 0 END) AS finish, | |
| 598 | + SUM(CASE WHEN w.status != 2 THEN 1 ELSE 0 END) AS ongoing | |
| 599 | + FROM system_dept d | |
| 600 | + LEFT JOIN workorder_main_info w ON w.worker_company_id = d.id | |
| 601 | + WHERE w.order_type !='Q' | |
| 602 | + <!-- queryType = 1 时,才拼接 督察工单(IWO开头)条件 --> | |
| 603 | + <if test='queryType != null and queryType == "1"'> | |
| 604 | + AND w.order_no LIKE 'IWO%' | |
| 605 | + </if> | |
| 606 | + <if test="beginTime != null and beginTime != ''"> | |
| 607 | + AND w.create_time >= #{beginTime} | |
| 608 | + </if> | |
| 609 | + <if test="endTime != null and endTime != ''"> | |
| 610 | + AND w.create_time <= #{endTime} | |
| 611 | + </if> | |
| 612 | + GROUP BY w.worker_company_id, d.name | |
| 613 | + </select> | |
| 614 | + | |
| 615 | + | |
| 590 | 616 | </mapper> | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoPageReqVO.java
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/AppMainInfoController.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.controller.app.maininfo; | |
| 2 | + | |
| 3 | +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; | |
| 4 | +import com.zteits.urbanops.framework.common.pojo.CommonResult; | |
| 5 | +import com.zteits.urbanops.framework.common.pojo.PageParam; | |
| 6 | +import com.zteits.urbanops.framework.common.pojo.PageResult; | |
| 7 | +import com.zteits.urbanops.framework.common.util.object.BeanUtils; | |
| 8 | +import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | |
| 9 | +import com.zteits.urbanops.module.system.api.user.AdminUserApi; | |
| 10 | +import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; | |
| 11 | +import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; | |
| 12 | +import com.zteits.urbanops.module.system.service.dept.DeptService; | |
| 13 | +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.AdminMainInfoRespVO; | |
| 14 | +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; | |
| 15 | +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; | |
| 16 | +import com.zteits.urbanops.module.workorder.convert.maininfo.MainInfoConvert; | |
| 17 | +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; | |
| 18 | +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; | |
| 19 | +import com.zteits.urbanops.module.workorder.dto.MainInfoRespVO; | |
| 20 | +import com.zteits.urbanops.module.workorder.service.attachment.AttachmentService; | |
| 21 | +import com.zteits.urbanops.module.workorder.service.maininfo.MainInfoService; | |
| 22 | +import io.swagger.v3.oas.annotations.Operation; | |
| 23 | +import io.swagger.v3.oas.annotations.Parameter; | |
| 24 | +import io.swagger.v3.oas.annotations.tags.Tag; | |
| 25 | +import jakarta.annotation.Resource; | |
| 26 | +import jakarta.servlet.http.HttpServletResponse; | |
| 27 | +import jakarta.validation.Valid; | |
| 28 | +import org.apache.commons.collections4.CollectionUtils; | |
| 29 | +import org.springframework.security.access.prepost.PreAuthorize; | |
| 30 | +import org.springframework.validation.annotation.Validated; | |
| 31 | +import org.springframework.web.bind.annotation.GetMapping; | |
| 32 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 33 | +import org.springframework.web.bind.annotation.RequestParam; | |
| 34 | +import org.springframework.web.bind.annotation.RestController; | |
| 35 | + | |
| 36 | +import java.io.IOException; | |
| 37 | +import java.util.*; | |
| 38 | +import java.util.stream.Collectors; | |
| 39 | + | |
| 40 | +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT; | |
| 41 | +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; | |
| 42 | + | |
| 43 | +@Tag(name = "app - 工单信息") | |
| 44 | +@RestController | |
| 45 | +@RequestMapping("/workorder/main-info") | |
| 46 | +@Validated | |
| 47 | +public class AppMainInfoController { | |
| 48 | + | |
| 49 | + @Resource | |
| 50 | + private MainInfoService mainInfoService; | |
| 51 | + | |
| 52 | + @Resource | |
| 53 | + private AttachmentService attachmentService; | |
| 54 | + | |
| 55 | + @Resource | |
| 56 | + private DeptService deptService; | |
| 57 | + @Resource | |
| 58 | + private AdminUserApi adminUserApi; | |
| 59 | + | |
| 60 | + @GetMapping("/get") | |
| 61 | + @Operation(summary = "获得工单信息") | |
| 62 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | |
| 63 | + @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") | |
| 64 | + public CommonResult<AdminMainInfoRespVO> getMainInfo(@RequestParam("id") Long id) { | |
| 65 | + MainInfoDO mainInfo = mainInfoService.getMainInfo(id); | |
| 66 | + | |
| 67 | + // 若订单号列表非空,查询附件;否则跳过 | |
| 68 | + Map<String, AttachmentDO> attachmentMap = Collections.emptyMap(); | |
| 69 | + if (mainInfo != null) { | |
| 70 | + List<AttachmentDO> attachmentDOList = attachmentService.getAttachmentByOrderNo(Arrays.asList(mainInfo.getOrderNo())); | |
| 71 | + // 构建订单号→附件对象的映射(处理重复key,取第一个对象) | |
| 72 | + if (!CollectionUtils.isEmpty(attachmentDOList)) { | |
| 73 | + attachmentMap = attachmentDOList.stream() | |
| 74 | + .filter(attachmentDO -> "01".equals(attachmentDO.getBusiType())) | |
| 75 | + .collect(Collectors.toMap( | |
| 76 | + AttachmentDO::getOrderNo, // key:订单号 | |
| 77 | + attachmentDO -> attachmentDO, // value:附件对象 | |
| 78 | + (existing, replacement) -> existing // 重复key时保留已有值 | |
| 79 | + )); | |
| 80 | + } | |
| 81 | + } | |
| 82 | + | |
| 83 | + String companyName = ""; | |
| 84 | + if (mainInfo.getWorkerCompanyId() != null) { | |
| 85 | + DeptDO dept = deptService.getDept(mainInfo.getWorkerCompanyId()); | |
| 86 | + if (dept != null) { | |
| 87 | + companyName = dept.getName(); | |
| 88 | + } | |
| 89 | + } | |
| 90 | + | |
| 91 | + Set<Long> userIds = new HashSet<>(); | |
| 92 | + if (mainInfo.getCoHandlers() != null) { | |
| 93 | + mainInfo.getCoHandlers().stream() | |
| 94 | + .filter(Objects::nonNull) // 过滤null ID | |
| 95 | + .forEach(userIds::add); | |
| 96 | + } | |
| 97 | + userIds.add(mainInfo.getUserId()); | |
| 98 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds); | |
| 99 | + return success(MainInfoConvert.INSTANCE.buildMainInfo(mainInfo, attachmentMap, companyName, userMap)); | |
| 100 | + } | |
| 101 | + | |
| 102 | + @GetMapping("/page") | |
| 103 | + @Operation(summary = "获得工单信息分页") | |
| 104 | + @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") | |
| 105 | + public CommonResult<PageResult<AdminMainInfoRespVO>> getMainInfoPage(@Valid AppMainInfoPageReqVO pageReqVO) { | |
| 106 | + | |
| 107 | + PageResult<MainInfoDO> pageResult = mainInfoService.selectPageExcludeQuickOrder(pageReqVO); | |
| 108 | + // 6. 转换并返回结果 | |
| 109 | + return success(MainInfoConvert.INSTANCE.buildMainInfoPage(pageResult, null, null, null)); | |
| 110 | + } | |
| 111 | + | |
| 112 | + @GetMapping("/export-excel") | |
| 113 | + @Operation(summary = "导出工单信息 Excel") | |
| 114 | + @PreAuthorize("@ss.hasPermission('workorder:main-info:export')") | |
| 115 | + @ApiAccessLog(operateType = EXPORT) | |
| 116 | + public void exportMainInfoExcel(@Valid MainInfoPageReqVO pageReqVO, | |
| 117 | + HttpServletResponse response) throws IOException { | |
| 118 | + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); | |
| 119 | + List<MainInfoDO> list = mainInfoService.getMainInfoPage(pageReqVO).getList(); | |
| 120 | + // 导出 Excel | |
| 121 | + ExcelUtils.write(response, "工单信息.xls", "数据", MainInfoRespVO.class, | |
| 122 | + BeanUtils.toBean(list, MainInfoRespVO.class)); | |
| 123 | + } | |
| 124 | + | |
| 125 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/maininfo/vo/AppMainInfoPageReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.workorder.controller.app.maininfo.vo; | |
| 2 | + | |
| 3 | +import com.zteits.urbanops.framework.common.pojo.PageParam; | |
| 4 | +import io.swagger.v3.oas.annotations.media.Schema; | |
| 5 | +import lombok.Data; | |
| 6 | +import org.springframework.format.annotation.DateTimeFormat; | |
| 7 | + | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | + | |
| 10 | +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | |
| 11 | + | |
| 12 | +@Schema(description = "APP - 工单信息分页 Request VO") | |
| 13 | +@Data | |
| 14 | +public class AppMainInfoPageReqVO extends PageParam { | |
| 15 | + | |
| 16 | + @Schema(description = "工单号") | |
| 17 | + private String orderNo; | |
| 18 | + | |
| 19 | + @Schema(description = "工单名称", example = "张三") | |
| 20 | + private String orderName; | |
| 21 | + | |
| 22 | + @Schema(description = "审批状态", example = "2") | |
| 23 | + private Integer status; | |
| 24 | + | |
| 25 | + @Schema(description = "创建时间") | |
| 26 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 27 | + private LocalDateTime[] createTime; | |
| 28 | + | |
| 29 | + @Schema(description = "实施人员部门id", example = "12") | |
| 30 | + private Long workerCompanyId; | |
| 31 | + | |
| 32 | +} | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java
| ... | ... | @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | 6 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 7 | 7 | import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 8 | 8 | import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; |
| 9 | +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; | |
| 9 | 10 | import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; |
| 10 | 11 | import org.apache.ibatis.annotations.Mapper; |
| 11 | 12 | import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*; |
| ... | ... | @@ -135,4 +136,24 @@ public interface MainInfoMapper extends BaseMapperX<MainInfoDO> { |
| 135 | 136 | return selectList(new QueryWrapper<MainInfoDO>().in(field, values)); |
| 136 | 137 | } |
| 137 | 138 | |
| 139 | + /** | |
| 140 | + * 获得工单信息分页 不查询快速工单 | |
| 141 | + * | |
| 142 | + * @param reqVO 分页查询 | |
| 143 | + * @return 工单信息分页 | |
| 144 | + */ | |
| 145 | + default PageResult<MainInfoDO> selectPageExcludeQuickOrder(AppMainInfoPageReqVO reqVO) { | |
| 146 | + | |
| 147 | + LambdaQueryWrapperX<MainInfoDO> queryWrapper = new LambdaQueryWrapperX<>(); | |
| 148 | + // 不查询快速工单 → 订单类型 != "Q" | |
| 149 | + queryWrapper.ne(MainInfoDO::getOrderType, "Q"); | |
| 150 | + queryWrapper.eqIfPresent(MainInfoDO::getWorkerCompanyId, reqVO.getWorkerCompanyId()) | |
| 151 | + .likeIfPresent(MainInfoDO::getOrderNo, reqVO.getOrderNo()) | |
| 152 | + .likeIfPresent(MainInfoDO::getOrderName, reqVO.getOrderName()) | |
| 153 | + .eqIfPresent(MainInfoDO::getStatus, reqVO.getStatus()) | |
| 154 | + .betweenIfPresent(MainInfoDO::getCreateTime, reqVO.getCreateTime()) | |
| 155 | + .orderByDesc(MainInfoDO::getId); | |
| 156 | + return selectPage(reqVO, queryWrapper); | |
| 157 | + } | |
| 158 | + | |
| 138 | 159 | } | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoService.java
| 1 | 1 | package com.zteits.urbanops.module.workorder.service.maininfo; |
| 2 | 2 | |
| 3 | 3 | import java.util.*; |
| 4 | + | |
| 5 | +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; | |
| 4 | 6 | import jakarta.validation.*; |
| 5 | 7 | import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*; |
| 6 | 8 | import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; |
| ... | ... | @@ -67,4 +69,12 @@ public interface MainInfoService { |
| 67 | 69 | */ |
| 68 | 70 | MainInfoDO getMainInfoByOrderNo(String orderNo); |
| 69 | 71 | |
| 72 | + /** | |
| 73 | + * 获得工单信息分页 | |
| 74 | + * | |
| 75 | + * @param pageReqVO 分页查询 | |
| 76 | + * @return 工单信息分页 | |
| 77 | + */ | |
| 78 | + PageResult<MainInfoDO> selectPageExcludeQuickOrder(AppMainInfoPageReqVO pageReqVO); | |
| 79 | + | |
| 70 | 80 | } | ... | ... |
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/maininfo/MainInfoServiceImpl.java
| ... | ... | @@ -4,6 +4,7 @@ import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 4 | 4 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 5 | 5 | import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; |
| 6 | 6 | import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoSaveReqVO; |
| 7 | +import com.zteits.urbanops.module.workorder.controller.app.maininfo.vo.AppMainInfoPageReqVO; | |
| 7 | 8 | import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; |
| 8 | 9 | import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; |
| 9 | 10 | import jakarta.annotation.Resource; |
| ... | ... | @@ -82,4 +83,8 @@ public class MainInfoServiceImpl implements MainInfoService { |
| 82 | 83 | return mainInfoMapper.selectOne(MainInfoDO::getOrderNo, orderNo); |
| 83 | 84 | } |
| 84 | 85 | |
| 86 | + public PageResult<MainInfoDO> selectPageExcludeQuickOrder(AppMainInfoPageReqVO pageReqVO) { | |
| 87 | + return mainInfoMapper.selectPageExcludeQuickOrder(pageReqVO); | |
| 88 | + } | |
| 89 | + | |
| 85 | 90 | } | ... | ... |