24282 2 anni fa
parent
commit
c5e9f9b3d6

+ 59 - 0
hx-service-api/syringe-management-api/src/main/java/com/fjhx/entity/material/MaterialEx.java

@@ -0,0 +1,59 @@
+package com.fjhx.entity.material;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 物料拓展表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Data
+public class MaterialEx implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 物料id
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 规格
+     */
+    private String spec;
+
+    /**
+     * 安全库存
+     */
+    private BigDecimal safetyStock;
+
+    /**
+     * 采购周期/天
+     */
+    private Integer cycle;
+
+    /**
+     * 质检比例
+     */
+    private BigDecimal qualityTestingRate;
+
+    /**
+     * 是否卷材
+     */
+    private Integer coiled;
+
+    /**
+     * 头尾损耗
+     */
+    private BigDecimal loss;
+
+
+}

+ 38 - 0
hx-service-api/syringe-management-api/src/main/java/com/fjhx/entity/product/ProductEx.java

@@ -0,0 +1,38 @@
+package com.fjhx.entity.product;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 产品
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Data
+public class ProductEx implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 产品id
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 型号
+     */
+    private String model;
+
+    /**
+     * 生产流程id
+     */
+    private Long workingRouteId;
+
+
+}

+ 5 - 0
hx-service/syringe-management/pom.xml

@@ -28,6 +28,11 @@
             <artifactId>syringe-management-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>library-product</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 65 - 0
hx-service/syringe-management/src/main/java/com/fjhx/controller/material/MaterialExController.java

@@ -0,0 +1,65 @@
+package com.fjhx.controller.material;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.service.material.MaterialExService;
+import com.fjhx.service.MaterialService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 物料拓展表 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@RestController
+@RequestMapping("/material")
+public class MaterialExController {
+
+    @Autowired
+    private MaterialExService materialExService;
+
+    @Autowired
+    private MaterialService materialService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition) {
+        Page<Map<String, Object>> result = materialExService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody Map<String, Object> map) {
+        materialExService.add(map);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody Map<String, Object> map) {
+        materialExService.edit(map);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody Map<String, Object> map) {
+        materialExService.delete(map);
+        return R.success();
+    }
+
+    @PostMapping("getUnitList")
+    public R getUnitList() {
+        List<String> unitList = materialService.getUnitList();
+        return R.success(unitList);
+    }
+
+}
+

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

@@ -0,0 +1,71 @@
+package com.fjhx.controller.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.service.product.ProductExService;
+import com.fjhx.service.ProductService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 产品 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@RestController
+@RequestMapping("/product")
+public class ProductExController {
+
+    @Autowired
+    private ProductExService productExService;
+
+    @Autowired
+    private ProductService productService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition) {
+        Page<Map<String, Object>> result = productExService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody Map<String, Object> map) {
+        productExService.add(map);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody Map<String, Object> map) {
+        productExService.edit(map);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody Map<String, Object> map) {
+        productExService.delete(map);
+        return R.success();
+    }
+
+    @PostMapping("getUnitList")
+    public R getUnitList() {
+        List<String> result = productService.getUnitList();
+        return R.success(result);
+    }
+
+    @PostMapping("list")
+    public R list() {
+        List<Map<String, Object>> result = productExService.getList();
+        return R.success(result);
+    }
+
+}
+

+ 23 - 0
hx-service/syringe-management/src/main/java/com/fjhx/mapper/material/MaterialExMapper.java

@@ -0,0 +1,23 @@
+package com.fjhx.mapper.material;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.material.MaterialEx;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 物料拓展表 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface MaterialExMapper extends BaseMapper<MaterialEx> {
+
+    Page<Map<String, Object>> getPage(@Param("page") Page<MaterialEx> page, @Param("ew") QueryWrapper<?> wrapper);
+
+}

+ 23 - 0
hx-service/syringe-management/src/main/java/com/fjhx/mapper/material/MaterialExMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.material.MaterialExMapper">
+
+    <select id="getPage" resultType="java.util.LinkedHashMap">
+        select m.id,
+               m.type,
+               m.classify_id           classifyId,
+               m.code,
+               m.name,
+               me.spec,
+               me.safety_stock         safetyStock,
+               m.unit,
+               me.cycle,
+               me.quality_testing_rate qualityTestingRate,
+               me.coiled,
+               me.loss,
+               m.introduce
+        from material m
+                 left join material_ex me on m.id = me.id
+            ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 26 - 0
hx-service/syringe-management/src/main/java/com/fjhx/mapper/product/ProductExMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.mapper.product;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.product.ProductEx;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 产品 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface ProductExMapper extends BaseMapper<ProductEx> {
+
+    Page<Map<String, Object>> getPage(@Param("page") Page<ProductEx> page, @Param("ew") QueryWrapper<?> wrapper);
+
+    List<Map<String, Object>> getList(@Param("ew") QueryWrapper<?> wrapper);
+
+}

+ 32 - 0
hx-service/syringe-management/src/main/java/com/fjhx/mapper/product/ProductExMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.product.ProductExMapper">
+
+    <select id="getPage" resultType="java.util.LinkedHashMap">
+        select p.id,
+               p.classify_id classifyId,
+               p.code,
+               p.name,
+               pe.model,
+               p.unit,
+               p.introduce,
+               wr.name       workingRouteName
+        from product p
+                 left join product_ex pe on p.id = pe.id
+                 left join working_route wr on pe.working_route_id = wr.id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getList" resultType="java.util.Map">
+        select p.id,
+               p.code,
+               p.name,
+               wr.id   workingRouteId,
+               wr.name workingRouteName
+        from product p
+                 left join product_ex pe on p.id = pe.id
+                 left join working_route wr on pe.working_route_id = wr.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 27 - 0
hx-service/syringe-management/src/main/java/com/fjhx/service/material/MaterialExService.java

@@ -0,0 +1,27 @@
+package com.fjhx.service.material;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.material.MaterialEx;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 物料拓展表 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface MaterialExService extends BaseService<MaterialEx> {
+
+    Page<Map<String, Object>> getPage(Map<String, String> condition);
+
+    void add(Map<String, Object> map);
+
+    void edit(Map<String, Object> map);
+
+    void delete(Map<String, Object> map);
+
+}

+ 111 - 0
hx-service/syringe-management/src/main/java/com/fjhx/service/material/impl/MaterialExServiceImpl.java

@@ -0,0 +1,111 @@
+package com.fjhx.service.material.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.Material;
+import com.fjhx.entity.material.MaterialEx;
+import com.fjhx.mapper.material.MaterialExMapper;
+import com.fjhx.service.ClassifyService;
+import com.fjhx.service.MaterialService;
+import com.fjhx.service.material.MaterialExService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 物料拓展表 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Service
+public class MaterialExServiceImpl extends ServiceImpl<MaterialExMapper, MaterialEx> implements MaterialExService {
+
+    @Autowired
+    private MaterialService materialService;
+
+    @Autowired
+    private ClassifyService classifyService;
+
+    @Override
+    public Page<Map<String, Object>> getPage(Map<String, String> condition) {
+        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
+                .keyword("m.code", "m.name")
+                .eqTenantId("m")
+                .getWrapper();
+
+        // 编码正序
+        wrapper.orderByAsc("m.code");
+
+        // 如果传入分类id,查询分类已经分类下级
+        String classifyId = condition.get("classifyId");
+        if (ObjectUtil.isNotEmpty(classifyId)) {
+            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId));
+            wrapper.in("m.classify_id", childrenIdList);
+        }
+
+        return baseMapper.getPage(createPage(condition), wrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(Map<String, Object> map) {
+
+        Material material = BeanUtil.toBean(map, Material.class);
+        MaterialEx materialEx = BeanUtil.toBean(map, MaterialEx.class);
+
+        Integer coiled = materialEx.getCoiled();
+        Assert.notEmpty(coiled, "是否卷材判断字段不能为空");
+
+        if (ObjectUtil.isEmpty(materialEx.getSafetyStock())) {
+            materialEx.setSafetyStock(BigDecimal.ZERO);
+        }
+
+        if (ObjectUtil.isEmpty(materialEx.getCycle())) {
+            materialEx.setCycle(0);
+        }
+
+        if (ObjectUtil.isEmpty(materialEx.getQualityTestingRate())) {
+            materialEx.setQualityTestingRate(BigDecimal.ZERO);
+        }
+
+        if (ObjectUtil.isEmpty(materialEx.getLoss()) || coiled.equals(StatusConstant.NO)) {
+            materialEx.setLoss(BigDecimal.ZERO);
+        }
+
+        materialService.add(material);
+
+        materialEx.setId(material.getId());
+        save(materialEx);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(Map<String, Object> map) {
+        Material material = BeanUtil.toBean(map, Material.class);
+        MaterialEx materialEx = BeanUtil.toBean(map, MaterialEx.class);
+
+        materialService.edit(material);
+        updateById(materialEx);
+    }
+
+    @Override
+    public void delete(Map<String, Object> map) {
+        Material material = BeanUtil.toBean(map, Material.class);
+
+        materialService.delete(material);
+    }
+
+}

+ 30 - 0
hx-service/syringe-management/src/main/java/com/fjhx/service/product/ProductExService.java

@@ -0,0 +1,30 @@
+package com.fjhx.service.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.product.ProductEx;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 产品 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface ProductExService extends BaseService<ProductEx> {
+
+    Page<Map<String, Object>> getPage(Map<String, String> condition);
+
+    void add(Map<String, Object> map);
+
+    void edit(Map<String, Object> map);
+
+    void delete(Map<String, Object> map);
+
+    List<Map<String, Object>> getList();
+    
+}

+ 100 - 0
hx-service/syringe-management/src/main/java/com/fjhx/service/product/impl/ProductExServiceImpl.java

@@ -0,0 +1,100 @@
+package com.fjhx.service.product.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.entity.Product;
+import com.fjhx.entity.product.ProductEx;
+import com.fjhx.mapper.product.ProductExMapper;
+import com.fjhx.service.ClassifyService;
+import com.fjhx.service.ProductService;
+import com.fjhx.service.product.ProductExService;
+import com.fjhx.utils.WrapperUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 产品 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Service
+public class ProductExServiceImpl extends ServiceImpl<ProductExMapper, ProductEx> implements ProductExService {
+
+    @Autowired
+    private ProductService productService;
+
+    @Autowired
+    private ClassifyService classifyService;
+
+    @Override
+    public Page<Map<String, Object>> getPage(Map<String, String> condition) {
+
+        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
+                .keyword("p.name", "p.code")
+                .eqTenantId("p")
+                .notDelete("p")
+                .getWrapper();
+
+        // 编码正序
+        wrapper.orderByAsc("p.code");
+
+        // 如果传入分类id,查询分类已经分类下级
+        String classifyId = condition.get("classifyId");
+        if (ObjectUtil.isNotEmpty(classifyId)) {
+            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId));
+            wrapper.in("p.classify_id", childrenIdList);
+        }
+
+        return baseMapper.getPage(createPage(condition), wrapper);
+    }
+
+    @Override
+    public void add(Map<String, Object> map) {
+        Product productVo = BeanUtil.toBean(map, Product.class);
+        ProductEx productEx = BeanUtil.toBean(map, ProductEx.class);
+
+        productService.add(productVo);
+
+        productEx.setId(productVo.getId());
+        save(productEx);
+    }
+
+    @Override
+    public void edit(Map<String, Object> map) {
+        Product productVo = BeanUtil.toBean(map, Product.class);
+        ProductEx productEx = BeanUtil.toBean(map, ProductEx.class);
+
+        productService.edit(productVo);
+        updateById(productEx);
+    }
+
+    @Override
+    public void delete(Map<String, Object> map) {
+        Product productVo = BeanUtil.toBean(map, Product.class);
+
+        productService.delete(productVo);
+    }
+
+    @Override
+    public List<Map<String, Object>> getList() {
+        QueryWrapper<?> wrapper = WrapperUtil.init()
+                .eqTenantId("p")
+                .notDelete("p")
+                .getWrapper();
+
+        // 编码正序
+        wrapper.orderByAsc("p.code");
+
+        return baseMapper.getList(wrapper);
+    }
+
+}

+ 37 - 32
hx-service/syringe-management/src/main/java/com/fjhx/service/working/impl/WorkingRouteServiceImpl.java

@@ -7,12 +7,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.base.BaseEntity;
+import com.fjhx.entity.product.ProductEx;
 import com.fjhx.entity.working.WorkingProcedure;
 import com.fjhx.entity.working.WorkingRoute;
 import com.fjhx.entity.working.WorkingRouteProcedure;
 import com.fjhx.mapper.working.WorkingRouteMapper;
 import com.fjhx.params.working.WorkingRouteEx;
 import com.fjhx.params.working.WorkingRouteVo;
+import com.fjhx.service.product.ProductExService;
 import com.fjhx.service.working.WorkingProcedureService;
 import com.fjhx.service.working.WorkingRouteProcedureService;
 import com.fjhx.service.working.WorkingRouteService;
@@ -44,6 +46,9 @@ public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, Wor
     @Autowired
     private WorkingProcedureService workingProcedureService;
 
+    @Autowired
+    private ProductExService productExService;
+
     @Override
     public Page<WorkingRouteEx> getPage(Map<String, String> condition) {
 
@@ -84,10 +89,10 @@ public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, Wor
         }
 
         // 工艺路线适用产品
-        // List<Long> productIdList = workingRouteVo.getProductIdList();
-        // if (productIdList.size() > 0) {
-        //     workingRouteProduct(productIdList, id);
-        // }
+        List<Long> productIdList = workingRouteVo.getProductIdList();
+        if (productIdList.size() > 0) {
+            workingRouteProduct(productIdList, id);
+        }
 
     }
 
@@ -118,15 +123,15 @@ public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, Wor
 
         // 工艺路线适用产品
         List<Long> productIdList = workingRouteVo.getProductIdList();
-        // if (productIdList.size() > 0) {
-        // workingRouteProduct(productIdList, id);
-        //
-        // // 去除这个工艺路线已关联的其他产品
-        // productExService.update(Wrappers.<ProductEx>lambdaUpdate()
-        //         .eq(ProductEx::getWorkingRouteId, id)
-        //         .notIn(productIdList.size() > 0, ProductEx::getId, productIdList)
-        //         .set(ProductEx::getWorkingRouteId, null));
-        // }
+        if (productIdList.size() > 0) {
+            workingRouteProduct(productIdList, id);
+
+            // 去除这个工艺路线已关联的其他产品
+            productExService.update(Wrappers.<ProductEx>lambdaUpdate()
+                    .eq(ProductEx::getWorkingRouteId, id)
+                    .notIn(productIdList.size() > 0, ProductEx::getId, productIdList)
+                    .set(ProductEx::getWorkingRouteId, null));
+        }
 
     }
 
@@ -137,10 +142,10 @@ public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, Wor
 
         removeById(id);
 
-        // // 去除这个工艺路线已关联的产品
-        // productExService.update(Wrappers.<ProductEx>lambdaUpdate()
-        //         .eq(ProductEx::getWorkingRouteId, id)
-        //         .set(ProductEx::getWorkingRouteId, null));
+        // 去除这个工艺路线已关联的产品
+        productExService.update(Wrappers.<ProductEx>lambdaUpdate()
+                .eq(ProductEx::getWorkingRouteId, id)
+                .set(ProductEx::getWorkingRouteId, null));
 
         // 去除工艺路线关联工序
         workingRouteProcedureService.remove(WorkingRouteProcedure::getWorkingRouteId, id);
@@ -179,20 +184,20 @@ public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, Wor
         return result;
     }
 
-    // /**
-    //  * 产品关联工艺路线
-    //  *
-    //  * @param productIdList  产品id
-    //  * @param workingRouteId 工艺路线id
-    //  */
-    // private void workingRouteProduct(List<Long> productIdList, Long workingRouteId) {
-    //     List<ProductEx> productExList = productIdList.stream().map(item -> {
-    //         ProductEx productEx = new ProductEx();
-    //         productEx.setId(item);
-    //         productEx.setWorkingRouteId(workingRouteId);
-    //         return productEx;
-    //     }).collect(Collectors.toList());
-    //     productExService.updateBatchById(productExList);
-    // }
+    /**
+     * 产品关联工艺路线
+     *
+     * @param productIdList  产品id
+     * @param workingRouteId 工艺路线id
+     */
+    private void workingRouteProduct(List<Long> productIdList, Long workingRouteId) {
+        List<ProductEx> productExList = productIdList.stream().map(item -> {
+            ProductEx productEx = new ProductEx();
+            productEx.setId(item);
+            productEx.setWorkingRouteId(workingRouteId);
+            return productEx;
+        }).collect(Collectors.toList());
+        productExService.updateBatchById(productExList);
+    }
 
 }