|
@@ -1,5 +1,6 @@
|
|
package cn.iocoder.yudao.module.pms.controller.admin.iotbom;
|
|
package cn.iocoder.yudao.module.pms.controller.admin.iotbom;
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
|
@@ -7,11 +8,15 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotbom.vo.*;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotbom.vo.*;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotcommonbommaterial.vo.IotCommonBomMaterialSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotbom.IotBomDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotbom.IotBomDO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotcommonbommaterial.IotCommonBomMaterialDO;
|
|
import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
|
|
import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
|
|
|
|
+import cn.iocoder.yudao.module.pms.service.iotcommonbommaterial.IotCommonBomMaterialService;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
@@ -23,7 +28,8 @@ import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.validation.Valid;
|
|
import javax.validation.Valid;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
-import java.util.List;
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
@@ -36,6 +42,8 @@ public class IotBomController {
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
private IotBomService iotBomService;
|
|
private IotBomService iotBomService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IotCommonBomMaterialService iotCommonBomMaterialService;
|
|
|
|
|
|
@PostMapping("/create")
|
|
@PostMapping("/create")
|
|
@Operation(summary = "创建PMS BOM 关系")
|
|
@Operation(summary = "创建PMS BOM 关系")
|
|
@@ -95,7 +103,31 @@ public class IotBomController {
|
|
return success(CollectionUtil.newArrayList());
|
|
return success(CollectionUtil.newArrayList());
|
|
}
|
|
}
|
|
List<IotBomDO> list = iotBomService.getBomList(reqVO);
|
|
List<IotBomDO> list = iotBomService.getBomList(reqVO);
|
|
- return success(BeanUtils.toBean(list, IotBomRespVO.class));
|
|
|
|
|
|
+ if (CollUtil.isEmpty(list)) {
|
|
|
|
+ return success(Collections.emptyList());
|
|
|
|
+ }
|
|
|
|
+ List<Long> bomNodeIds = list.stream()
|
|
|
|
+ .map(IotBomDO::getId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ IotCommonBomMaterialSaveReqVO bomMaterialSaveReqVO = new IotCommonBomMaterialSaveReqVO();
|
|
|
|
+ bomMaterialSaveReqVO.setBomNodeIds(bomNodeIds);
|
|
|
|
+ // 查询所有bom节点已经绑定的物料列表
|
|
|
|
+ List<IotCommonBomMaterialDO> bomMaterials = iotCommonBomMaterialService.getIotCommonBomMaterials(bomMaterialSaveReqVO);
|
|
|
|
+ Map<Long, Integer> bomMaterialCount = new HashMap<>();
|
|
|
|
+ if (CollUtil.isNotEmpty(bomMaterials)) {
|
|
|
|
+ bomMaterials.forEach(material -> {
|
|
|
|
+ if (bomMaterialCount.containsKey(material.getBomNodeId())) {
|
|
|
|
+ bomMaterialCount.put(material.getBomNodeId(), bomMaterialCount.get(material.getBomNodeId())+1);
|
|
|
|
+ } else {
|
|
|
|
+ bomMaterialCount.put(material.getBomNodeId(), 1);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return success(BeanUtils.toBean(list, IotBomRespVO.class, bom -> {
|
|
|
|
+ Integer materialCount = bomMaterialCount.getOrDefault(bom.getId(), 0);
|
|
|
|
+ bom.setMaterials(materialCount);
|
|
|
|
+ }));
|
|
}
|
|
}
|
|
|
|
|
|
@GetMapping(value = {"/list-all-simple", "/simple-list"})
|
|
@GetMapping(value = {"/list-all-simple", "/simple-list"})
|