Commit d50eeebe57897d6c60562f7b7e1be7181fe6bc7a

Authored by 王彪总
2 parents d5fe99c8 b228e0d8

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

urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java
1 1 package com.zteits.urbanops.module.workorder.controller.admin.maininfo;
2 2  
3   -import org.springframework.web.bind.annotation.*;
4   -import jakarta.annotation.Resource;
5   -import org.springframework.validation.annotation.Validated;
6   -import org.springframework.security.access.prepost.PreAuthorize;
7   -import io.swagger.v3.oas.annotations.tags.Tag;
8   -import io.swagger.v3.oas.annotations.Parameter;
9   -import io.swagger.v3.oas.annotations.Operation;
10   -
11   -import jakarta.validation.constraints.*;
12   -import jakarta.validation.*;
13   -import jakarta.servlet.http.*;
14   -import java.util.*;
15   -import java.io.IOException;
16   -
  3 +import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog;
  4 +import com.zteits.urbanops.framework.common.pojo.CommonResult;
17 5 import com.zteits.urbanops.framework.common.pojo.PageParam;
18 6 import com.zteits.urbanops.framework.common.pojo.PageResult;
19   -import com.zteits.urbanops.framework.common.pojo.CommonResult;
20 7 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
21   -import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
22   -
23 8 import com.zteits.urbanops.framework.excel.core.util.ExcelUtils;
24   -
25   -import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog;
26   -import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.*;
27   -
28   -import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.*;
  9 +import com.zteits.urbanops.module.workorder.controller.admin.attachment.vo.AttachmentReqVO;
  10 +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO;
  11 +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoRespVO;
  12 +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoSaveReqVO;
  13 +import com.zteits.urbanops.module.workorder.convert.maininfo.MainInfoConvert;
  14 +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO;
29 15 import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO;
  16 +import com.zteits.urbanops.module.workorder.service.attachment.AttachmentService;
30 17 import com.zteits.urbanops.module.workorder.service.maininfo.MainInfoService;
  18 +import io.swagger.v3.oas.annotations.Operation;
  19 +import io.swagger.v3.oas.annotations.Parameter;
  20 +import io.swagger.v3.oas.annotations.tags.Tag;
  21 +import jakarta.annotation.Resource;
  22 +import jakarta.servlet.http.HttpServletResponse;
  23 +import jakarta.validation.Valid;
  24 +import org.apache.commons.collections4.CollectionUtils;
  25 +import org.springframework.security.access.prepost.PreAuthorize;
  26 +import org.springframework.validation.annotation.Validated;
  27 +import org.springframework.web.bind.annotation.*;
  28 +
  29 +import java.io.IOException;
  30 +import java.util.Collections;
  31 +import java.util.List;
  32 +import java.util.Map;
  33 +import java.util.stream.Collectors;
  34 +
  35 +import static com.zteits.urbanops.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
  36 +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
31 37  
32 38 @Tag(name = "管理后台 - 工单信息")
33 39 @RestController
... ... @@ -38,6 +44,9 @@ public class MainInfoController {
38 44 @Resource
39 45 private MainInfoService mainInfoService;
40 46  
  47 + @Resource
  48 + private AttachmentService attachmentService;
  49 +
41 50 @PostMapping("/create")
42 51 @Operation(summary = "创建工单信息")
43 52 @PreAuthorize("@ss.hasPermission('workorder:main-info:create')")
... ... @@ -85,7 +94,34 @@ public class MainInfoController {
85 94 @PreAuthorize("@ss.hasPermission('workorder:main-info:query')")
86 95 public CommonResult<PageResult<MainInfoRespVO>> getMainInfoPage(@Valid MainInfoPageReqVO pageReqVO) {
87 96 PageResult<MainInfoDO> pageResult = mainInfoService.getMainInfoPage(pageReqVO);
88   - return success(BeanUtils.toBean(pageResult, MainInfoRespVO.class));
  97 + // 2. 初始化附件映射(默认空Map,避免后续空指针)
  98 + Map<String, AttachmentDO> attachmentMap = Collections.emptyMap();
  99 +
  100 + // 3. 空值防护:分页结果非空且列表非空时,才查询附件
  101 + if (pageResult != null && !CollectionUtils.isEmpty(pageResult.getList())) {
  102 + // 提取订单号列表
  103 + List<String> orderNoList = pageResult.getList().stream()
  104 + .map(MainInfoDO::getOrderNo)
  105 + .filter(orderNo -> orderNo != null && !orderNo.isBlank())
  106 + .collect(Collectors.toList());
  107 +
  108 + // 若订单号列表非空,查询附件;否则跳过
  109 + if (!CollectionUtils.isEmpty(orderNoList)) {
  110 + List<AttachmentDO> attachmentDOList = attachmentService.getAttachmentByOrderNo(orderNoList);
  111 + // 构建订单号→附件对象的映射(处理重复key,取第一个对象)
  112 + if (!CollectionUtils.isEmpty(attachmentDOList)) {
  113 + attachmentMap = attachmentDOList.stream()
  114 + .filter(attachmentDO -> "01".equals(attachmentDO.getBusiType()))
  115 + .collect(Collectors.toMap(
  116 + AttachmentDO::getOrderNo, // key:订单号
  117 + attachmentDO -> attachmentDO, // value:附件对象
  118 + (existing, replacement) -> existing // 重复key时保留已有值
  119 + ));
  120 + }
  121 + }
  122 + }
  123 + // 4. 转换并返回结果
  124 + return success(MainInfoConvert.INSTANCE.buildMainInfoPage(pageResult, attachmentMap));
89 125 }
90 126  
91 127 @GetMapping("/export-excel")
... ... @@ -101,4 +137,4 @@ public class MainInfoController {
101 137 BeanUtils.toBean(list, MainInfoRespVO.class));
102 138 }
103 139  
104   -}
105 140 \ No newline at end of file
  141 +}
... ...
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/vo/MainInfoRespVO.java
... ... @@ -32,7 +32,7 @@ public class MainInfoRespVO {
32 32 private String orderName;
33 33  
34 34 @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1828")
35   - @ExcelProperty("来源ID")
  35 + @ExcelProperty("来源ID 问题来源 1、巡查,2、游客居民,3、12345,4、网格 5、大区经理")
36 36 private Integer sourceId;
37 37  
38 38 @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
... ... @@ -135,4 +135,6 @@ public class MainInfoRespVO {
135 135 @ExcelProperty("创建时间")
136 136 private LocalDateTime createTime;
137 137  
138   -}
139 138 \ No newline at end of file
  139 + @Schema(description = "文件名称")
  140 + private String fileNames;
  141 +}
... ...
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java 0 → 100644
  1 +package com.zteits.urbanops.module.workorder.convert.maininfo;
  2 +
  3 +import com.zteits.urbanops.framework.common.pojo.PageResult;
  4 +import com.zteits.urbanops.framework.common.util.collection.CollectionUtils;
  5 +import com.zteits.urbanops.framework.common.util.object.BeanUtils;
  6 +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoRespVO;
  7 +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO;
  8 +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO;
  9 +import org.mapstruct.Mapper;
  10 +import org.mapstruct.factory.Mappers;
  11 +
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +
  15 +/**
  16 + * @Classname MainInfoConvert
  17 + * @Description 工单转换
  18 + * @Date 2025/12/16 22:57
  19 + * @Created by wangqian
  20 + */
  21 +@Mapper
  22 +public interface MainInfoConvert {
  23 +
  24 + MainInfoConvert INSTANCE = Mappers.getMapper(MainInfoConvert.class);
  25 +
  26 + default PageResult<MainInfoRespVO> buildMainInfoPage(PageResult<MainInfoDO> pageResult, Map<String, AttachmentDO> attachmentMap) {
  27 + List<MainInfoRespVO> mainInfoVOList = CollectionUtils.convertList(pageResult.getList(), mainInfoDO -> {
  28 + MainInfoRespVO mainInfoVo = BeanUtils.toBean(mainInfoDO, MainInfoRespVO.class);
  29 + AttachmentDO attachmentDO = attachmentMap.get(mainInfoDO.getOrderNo());
  30 + mainInfoVo.setFileNames(attachmentDO.getFileNames());
  31 + return mainInfoVo;
  32 + });
  33 + return new PageResult<>(mainInfoVOList, pageResult.getTotal());
  34 + }
  35 +}
... ...
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentService.java
... ... @@ -66,5 +66,11 @@ public interface AttachmentService {
66 66 * @return 工单附件信息
67 67 */
68 68 List<AttachmentDO> getAttachmentByCondition(AttachmentReqVO reqVO);
69   -
  69 + /**
  70 + * 获得工单附件信息
  71 + *
  72 + * @param orderNolist 编号
  73 + * @return 工单附件信息
  74 + */
  75 + List<AttachmentDO> getAttachmentByOrderNo(List<String> orderNolist);
70 76 }
... ...
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/attachment/AttachmentServiceImpl.java
... ... @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.workorder.service.attachment;
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 5 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  6 +import org.apache.commons.collections4.CollectionUtils;
6 7 import org.springframework.stereotype.Service;
7 8 import jakarta.annotation.Resource;
8 9 import org.springframework.validation.annotation.Validated;
... ... @@ -98,4 +99,14 @@ public class AttachmentServiceImpl implements AttachmentService {
98 99 }
99 100 return attachmentMapper.selectList(queryWrapper);
100 101 }
  102 +
  103 + @Override
  104 + public List<AttachmentDO> getAttachmentByOrderNo(List<String> orderNolist) {
  105 + if (CollectionUtils.isEmpty(orderNolist)) {
  106 + throw exception0(BAD_REQUEST.getCode(),"工单号不能为空");
  107 + }
  108 + LambdaQueryWrapper<AttachmentDO> queryWrapper = new LambdaQueryWrapper<>();
  109 + queryWrapper.in(AttachmentDO::getOrderNo, orderNolist);
  110 + return attachmentMapper.selectList(queryWrapper);
  111 + }
101 112 }
... ...
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java
... ... @@ -119,6 +119,13 @@ public class MaterialDetailServiceImpl implements MaterialDetailService {
119 119 throw exception0(BAD_REQUEST.getCode(),"订单号"+materialDetailDO.getOrderNo()+"不存在");
120 120 }
121 121 }
  122 + //已登记
  123 + for (MaterialDetailDO materialDetailDO : materialDetailList) {
  124 + MaterialDetailDO materialDetailDO1 = materialDetailMapper.selectOne(MaterialDetailDO::getMaterialId, materialDetailDO.getMaterialId());
  125 + if (materialDetailDO1 != null) {
  126 + throw exception0(BAD_REQUEST.getCode(),materialDetailDO.getMaterialName()+"已登记");
  127 + }
  128 + }
122 129 //耗材出库
123 130 for (MaterialDetailDO materialDetailDO : materialDetailList) {
124 131 MaterialInventoryOutDto outDto = new MaterialInventoryOutDto();
... ...