diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialinventory/MaterialInventoryController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialinventory/MaterialInventoryController.java index 620489a..4f9c8f5 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialinventory/MaterialInventoryController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/materialinventory/MaterialInventoryController.java @@ -112,4 +112,44 @@ public class MaterialInventoryController { return success(count); } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-耗材类型List") + @GetMapping(value = "/getMaterialBigTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getInfo() { + return success(materialInventoryService.queryMaterialBigType(null)); + } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-类别List") + @GetMapping(value = "/getMaterialMidTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialMidTypeList(@RequestParam("materialTypeId") Long materialTypeId) { + return success(materialInventoryService.queryMaterialMidType(materialTypeId)); + } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料类型基础表-类别List") + @GetMapping(value = "/getMaterialDetailTypeList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialDetailTypeList(@RequestParam("typeId") Long typeId) { + return success(materialInventoryService.queryMaterialDetailType(typeId)); + } + + /** + * 获取物料类型详细信息 + */ + @Operation(summary ="物料-类别List") + @GetMapping(value = "/getMaterialList") + @PreAuthorize("@ss.hasPermission('garden:material-type:query')") + public CommonResult getMaterialList(@RequestParam("typeDetailId") Long typeDetailId) { + return success(materialInventoryService.getMaterialInventorList(typeDetailId)); + } } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryService.java index 5e4bf5c..50c1b73 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryService.java @@ -1,6 +1,8 @@ package com.zteits.urbanops.module.garden.service.materialinventory; import java.util.*; + +import com.zteits.urbanops.module.garden.controller.admin.materialtype.vo.MaterialTypeResp; import jakarta.validation.*; import com.zteits.urbanops.module.garden.controller.admin.materialinventory.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.materialinventory.MaterialInventoryDO; @@ -107,4 +109,12 @@ public interface MaterialInventoryService { */ MaterialInventoryDO selectMaterialInventoryByMaterialId(Long materialId); + List queryMaterialBigType(Long materialTypeId); + + List queryMaterialMidType(Long materialTypeId); + + List queryMaterialDetailType(Long typeId); + + List getMaterialInventorList(Long typeDetailId); + } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryServiceImpl.java index 4f3a0c3..22f8529 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventory/MaterialInventoryServiceImpl.java @@ -1,14 +1,13 @@ package com.zteits.urbanops.module.garden.service.materialinventory; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.module.garden.controller.admin.materialinventory.vo.MaterialInventoryPageReqVO; import com.zteits.urbanops.module.garden.controller.admin.materialinventory.vo.MaterialInventorySaveReqVO; +import com.zteits.urbanops.module.garden.controller.admin.materialtype.vo.MaterialTypeResp; import com.zteits.urbanops.module.garden.dal.dataobject.materialinventory.MaterialInventoryDO; import com.zteits.urbanops.module.garden.dal.mysql.materialinventory.MaterialInventoryMapper; import com.zteits.urbanops.module.system.api.dept.DeptApi; @@ -17,13 +16,16 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getCompanyId; -import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; +import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.MATERIAL_INVENTORY_NOT_EXISTS; /** * 物料库存 Service 实现类 @@ -176,4 +178,88 @@ public class MaterialInventoryServiceImpl implements MaterialInventoryService { queryWrapper.eq(MaterialInventoryDO::getMaterialId, materialId); return materialInventoryMapper.selectOne(queryWrapper); } + + @Override + public List queryMaterialBigType(Long materialTypeId) { + List list; + // 入参为空时查询所有,非空时按ID查询 + if (materialTypeId == null) { + list = materialInventoryMapper.selectList(); + } else { + list = materialInventoryMapper.selectList(MaterialInventoryDO::getMaterialTypeId, materialTypeId); + } + + // 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getMaterialTypeId()); + resp.setLabel(doObj.getMaterialTypeName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); + } + + @Override + public List queryMaterialMidType(Long materialTypeId) { + List list = materialInventoryMapper.selectList(MaterialInventoryDO::getMaterialTypeId, materialTypeId); + // 2. 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getTypeId()); + resp.setLabel(doObj.getTypeName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); + } + + @Override + public List queryMaterialDetailType(Long typeId) { + List list = materialInventoryMapper.selectList(MaterialInventoryDO::getTypeId, typeId); + // 2. 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getTypeDetailId()); + resp.setLabel(doObj.getTypeDetailName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); + } + + @Override + public List getMaterialInventorList(Long typeDetailId) { + List list = materialInventoryMapper.selectList(MaterialInventoryDO::getTypeDetailId, typeDetailId); + // 2. 空列表判断,避免空指针 + if (list == null || list.isEmpty()) { + return List.of(); // 返回空列表而非null,更符合Java规范 + } + Set seenIds = new HashSet<>(); + return list.stream() + .map(doObj -> { + MaterialTypeResp resp = new MaterialTypeResp(); + resp.setValue(doObj.getMaterialId()); + resp.setLabel(doObj.getMaterialName()); + return resp; + }) + .filter(resp -> seenIds.add(resp.getValue())) // add成功返回true(未重复) + .collect(Collectors.toList()); + } } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java index 1a91283..9a904b8 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/maininfo/MainInfoController.java @@ -1,5 +1,6 @@ package com.zteits.urbanops.module.workorder.controller.admin.maininfo; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.zteits.urbanops.framework.apilog.core.annotation.ApiAccessLog; import com.zteits.urbanops.framework.common.pojo.CommonResult; import com.zteits.urbanops.framework.common.pojo.PageParam; @@ -27,6 +28,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.io.IOException; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; @@ -86,7 +88,23 @@ public class MainInfoController { @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") public CommonResult getMainInfo(@RequestParam("id") Long id) { MainInfoDO mainInfo = mainInfoService.getMainInfo(id); - return success(BeanUtils.toBean(mainInfo, MainInfoRespVO.class)); + + // 若订单号列表非空,查询附件;否则跳过 + Map attachmentMap = Collections.emptyMap(); + if (mainInfo != null) { + List attachmentDOList = attachmentService.getAttachmentByOrderNo(Arrays.asList(mainInfo.getOrderNo())); + // 构建订单号→附件对象的映射(处理重复key,取第一个对象) + if (!CollectionUtils.isEmpty(attachmentDOList)) { + attachmentMap = attachmentDOList.stream() + .filter(attachmentDO -> "01".equals(attachmentDO.getBusiType())) + .collect(Collectors.toMap( + AttachmentDO::getOrderNo, // key:订单号 + attachmentDO -> attachmentDO, // value:附件对象 + (existing, replacement) -> existing // 重复key时保留已有值 + )); + } + } + return success(MainInfoConvert.INSTANCE.buildMainInfo(mainInfo, attachmentMap)); } @GetMapping("/page") @@ -94,6 +112,10 @@ public class MainInfoController { @PreAuthorize("@ss.hasPermission('workorder:main-info:query')") public CommonResult> getMainInfoPage(@Valid MainInfoPageReqVO pageReqVO) { PageResult pageResult = mainInfoService.getMainInfoPage(pageReqVO); + + if (pageResult == null) { + return success(PageResult.empty()); + } // 2. 初始化附件映射(默认空Map,避免后续空指针) Map attachmentMap = Collections.emptyMap(); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java index aa9ea4f..a409301 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/convert/maininfo/MainInfoConvert.java @@ -32,4 +32,13 @@ public interface MainInfoConvert { }); return new PageResult<>(mainInfoVOList, pageResult.getTotal()); } + + default MainInfoRespVO buildMainInfo(MainInfoDO mainInfoDO, Map attachmentMap) { + MainInfoRespVO mainInfoVo = BeanUtils.toBean(mainInfoDO, MainInfoRespVO.class); + if (mainInfoDO != null) { + AttachmentDO attachmentDO = attachmentMap.get(mainInfoDO.getOrderNo()); + mainInfoVo.setFileNames(attachmentDO.getFileNames()); + } + return mainInfoVo; + } }