Jelajahi Sumber

针筒管理

24282 2 tahun lalu
induk
melakukan
00b9b76890

+ 17 - 2
hx-service-api/syringe-management-api/src/main/java/com/fjhx/params/bom/BomEx.java

@@ -16,14 +16,29 @@ import lombok.EqualsAndHashCode;
 public class BomEx extends Bom {
 
     /**
-     * 更新人名称
+     * 最近维护人
      */
     private String updateUserName;
 
     /**
+     * 产品类型
+     */
+    private Integer productType;
+
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
      * 分类名称
      */
-    private String classifName;
+    private String classifyName;
 
     /**
      * 文件信息

+ 1 - 1
hx-service-api/syringe-management-api/src/main/java/com/fjhx/params/production/ProductWorkingProcedure.java

@@ -21,7 +21,7 @@ public class ProductWorkingProcedure {
     private Integer whetherPacking;
 
     /**
-     * 关联id
+     * 工艺路线工序关联id
      */
     private Long linkId;
 

+ 22 - 9
hx-service/syringe-management/src/main/java/com/fjhx/controller/bom/BomController.java

@@ -1,9 +1,11 @@
 package com.fjhx.controller.bom;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.service.bom.BomService;
+import com.fjhx.entity.bom.Bom;
 import com.fjhx.params.bom.BomEx;
 import com.fjhx.params.bom.BomVo;
+import com.fjhx.service.bom.BomService;
+import com.fjhx.utils.Assert;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -62,13 +64,24 @@ public class BomController {
         return R.success(result);
     }
 
-    // /**
-    //  * 获取bom中工序关联物料
-    //  */
-    // @PostMapping("/getBomRelationProductClassify")
-    // public R getBomRelationProductClassify() {
-    //     List<Map<String, Object>> result = bomService.getBomRelationProductClassify();
-    //     return R.success(result);
-    // }
+    /**
+     * 获取产品bom版本列表
+     */
+    @PostMapping("/getVersionList")
+    public R getVersionList(@RequestBody Bom bom) {
+        Assert.notEmpty(bom.getProductId(), "产品id不能为空");
+        List<Bom> list = bomService.list(q -> q.eq(Bom::getProductId, bom.getProductId()));
+        return R.success(list);
+    }
+
+    /**
+     * 更新产品bom版本
+     */
+    @PostMapping("/updateVersion")
+    public R updateVersion(@RequestBody Bom bom) {
+        bomService.updateVersion(bom);
+        return R.success();
+    }
+
 
 }

+ 2 - 2
hx-service/syringe-management/src/main/java/com/fjhx/controller/product/ProductExController.java

@@ -74,8 +74,8 @@ public class ProductExController {
      */
     @PostMapping("getWorkingRoute")
     public R getWorkingRoute(@RequestBody Product product) {
-        ProductWorkingRoute list = productExService.getWorkingRoute(product.getId());
-        return R.success(list);
+        ProductWorkingRoute productWorkingRoute = productExService.getWorkingRoute(product.getId());
+        return R.success(productWorkingRoute);
     }
 
 }

+ 2 - 1
hx-service/syringe-management/src/main/java/com/fjhx/mapper/bom/BomMapper.xml

@@ -7,9 +7,10 @@
                b.edition,
                b.update_user,
                b.update_time,
-               p.id   productId,
+               b.product_id,
                p.name productName,
                p.code productCode,
+               p.type productType,
                c.name classifyName
         from bom b
                  inner join product p on b.product_id = p.id

+ 5 - 0
hx-service/syringe-management/src/main/java/com/fjhx/service/bom/BomService.java

@@ -32,4 +32,9 @@ public interface BomService extends BaseService<Bom> {
      */
     List<Map<String, Object>> getBomRelationProductClassify();
 
+    /**
+     * 更新产品bom版本
+     */
+    void updateVersion(Bom bom);
+
 }

+ 28 - 4
hx-service/syringe-management/src/main/java/com/fjhx/service/bom/impl/BomServiceImpl.java

@@ -10,10 +10,12 @@ import com.fjhx.constants.IotManagementLockConstant;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.FileInfo;
 import com.fjhx.entity.bom.Bom;
+import com.fjhx.entity.bom.BomDetails;
 import com.fjhx.enums.bom.BomTypeEnum;
 import com.fjhx.mapper.bom.BomMapper;
 import com.fjhx.params.bom.BomEx;
 import com.fjhx.params.bom.BomVo;
+import com.fjhx.service.bom.BomDetailsService;
 import com.fjhx.service.bom.BomService;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.FileClientUtil;
@@ -42,11 +44,13 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
 
     private final RedisLockClient redisLockClient;
 
+    private final BomDetailsService bomDetailsService;
+
     @Override
     public Page<BomEx> getPage(Map<String, String> condition) {
 
-        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
-                .eq("p.classify_id", "classifyId") // 分类查询
+        QueryWrapper<?> wrapper = WrapperUtil.init(condition).eq("p.classify_id", "classifyId") // 产品分类id
+                .eq("p.type", "productType") // 产品类型
                 .keyword("p.name", "p.code") // 关键字查询
                 .getWrapper();
 
@@ -61,8 +65,8 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
         Map<Long, String> userNameMap = UserClientUtil.getUserNameMap(records, Bom::getUpdateUser);
 
         // 文件信息
-        Map<Long, FileInfo> fileInfoMap = FileClientUtil.getFileInfoMap(
-                records.stream().map(BaseEntity::getId).collect(Collectors.toList()));
+        List<Long> fileInfoIdList = records.stream().map(BaseEntity::getId).collect(Collectors.toList());
+        Map<Long, FileInfo> fileInfoMap = FileClientUtil.getFileInfoMap(fileInfoIdList);
 
         records.forEach(item -> {
             item.setUpdateUserName(userNameMap.get(item.getUpdateUser()));
@@ -128,6 +132,7 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
     @Override
     public void delete(BomVo bomVo) {
         removeById(bomVo.getId());
+        bomDetailsService.remove(q -> q.eq(BomDetails::getBomId, bomVo.getId()));
         FileClientUtil.relieveBindingFile(bomVo.getId());
     }
 
@@ -136,4 +141,23 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
         return baseMapper.getBomRelationProductClassify();
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updateVersion(Bom bom) {
+
+        Long productId = bom.getProductId();
+        Assert.notEmpty(productId, "产品id不能为空");
+
+        Long id = bom.getId();
+        Assert.notEmpty(id, "启用bom版本id不能为空");
+
+        // 保证一个产品只有一个bom是启用状态
+        Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId, () -> {
+            update(q -> q.eq(Bom::getProductId, productId).set(Bom::getCurrentEdition, StatusConstant.NO));
+            update(q -> q.eq(BaseEntity::getId, id).set(Bom::getCurrentEdition, StatusConstant.YES));
+            return true;
+        });
+        Assert.eqTrue(flag, ErrorMsgConstant.SYSTEM_BUSY_ERROR);
+    }
+
 }