Browse Source

物料产品库常规字段与业务字段剥离

home 2 years ago
parent
commit
c8925f72f2
18 changed files with 511 additions and 144 deletions
  1. 0 30
      hx-common/product-library/src/main/java/com/fjhx/entity/Material.java
  2. 0 5
      hx-common/product-library/src/main/java/com/fjhx/entity/Product.java
  3. 1 3
      hx-common/product-library/src/main/java/com/fjhx/service/MaterialService.java
  4. 1 1
      hx-common/product-library/src/main/java/com/fjhx/service/ProductService.java
  5. 22 47
      hx-common/product-library/src/main/java/com/fjhx/service/impl/MaterialServiceImpl.java
  6. 19 25
      hx-common/product-library/src/main/java/com/fjhx/service/impl/ProductServiceImpl.java
  7. 59 0
      hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/material/MaterialEx.java
  8. 38 0
      hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/product/ProductEx.java
  9. 16 17
      hx-service/iot-management/src/main/java/com/fjhx/material/controller/MaterialExController.java
  10. 23 0
      hx-service/iot-management/src/main/java/com/fjhx/material/mapper/MaterialExMapper.java
  11. 23 0
      hx-service/iot-management/src/main/java/com/fjhx/material/mapper/MaterialExMapper.xml
  12. 27 0
      hx-service/iot-management/src/main/java/com/fjhx/material/service/MaterialExService.java
  13. 111 0
      hx-service/iot-management/src/main/java/com/fjhx/material/service/impl/MaterialExServiceImpl.java
  14. 15 16
      hx-service/iot-management/src/main/java/com/fjhx/product/controller/ProductExController.java
  15. 23 0
      hx-service/iot-management/src/main/java/com/fjhx/product/mapper/ProductExMapper.java
  16. 20 0
      hx-service/iot-management/src/main/java/com/fjhx/product/mapper/ProductExMapper.xml
  17. 27 0
      hx-service/iot-management/src/main/java/com/fjhx/product/service/ProductExService.java
  18. 86 0
      hx-service/iot-management/src/main/java/com/fjhx/product/service/impl/ProductExServiceImpl.java

+ 0 - 30
hx-common/product-library/src/main/java/com/fjhx/entity/Material.java

@@ -42,41 +42,11 @@ public class Material extends BaseEntity {
     private String name;
 
     /**
-     * 规格
-     */
-    private String spec;
-
-    /**
      * 单位
      */
     private String unit;
 
     /**
-     * 安全库存
-     */
-    private BigDecimal safetyStock;
-
-    /**
-     * 采购周期/天
-     */
-    private Integer cycle;
-
-    /**
-     * 质检比例
-     */
-    private BigDecimal qualityTestingRate;
-
-    /**
-     * 是否卷材
-     */
-    private Integer coiled;
-
-    /**
-     * 头尾损耗
-     */
-    private BigDecimal loss;
-
-    /**
      * 物料说明
      */
     private String introduce;

+ 0 - 5
hx-common/product-library/src/main/java/com/fjhx/entity/Product.java

@@ -39,11 +39,6 @@ public class Product extends BaseEntity {
     private String name;
 
     /**
-     * 型号
-     */
-    private String model;
-
-    /**
      * 单位
      */
     private String unit;

+ 1 - 3
hx-common/product-library/src/main/java/com/fjhx/service/MaterialService.java

@@ -1,12 +1,10 @@
 package com.fjhx.service;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
 import com.fjhx.entity.Material;
 import com.fjhx.params.MaterialVo;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -18,7 +16,7 @@ import java.util.Map;
  */
 public interface MaterialService extends BaseService<Material> {
 
-    Page<Material> getPage(Map<String, String> condition);
+//    Page<Material> getPage(Map<String, String> condition);
 
     void add(MaterialVo materialVo);
 

+ 1 - 1
hx-common/product-library/src/main/java/com/fjhx/service/ProductService.java

@@ -18,7 +18,7 @@ import java.util.Map;
  */
 public interface ProductService extends BaseService<Product> {
 
-    Page<Product> getPage(Map<String, String> condition);
+//    Page<Product> getPage(Map<String, String> condition);
 
     void add(ProductVo productVo);
 

+ 22 - 47
hx-common/product-library/src/main/java/com/fjhx/service/impl/MaterialServiceImpl.java

@@ -1,29 +1,21 @@
 package com.fjhx.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-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.constant.ProductLibraryLockConstant;
 import com.fjhx.constants.ErrorMsgConstant;
-import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.Material;
 import com.fjhx.mapper.MaterialMapper;
 import com.fjhx.params.MaterialVo;
-import com.fjhx.service.ClassifyService;
 import com.fjhx.service.MaterialService;
 import com.fjhx.utils.Assert;
-import com.fjhx.utils.WrapperUtil;
 import lombok.RequiredArgsConstructor;
 import org.springblade.core.redis.lock.RedisLockClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -37,54 +29,37 @@ import java.util.Map;
 @RequiredArgsConstructor
 public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService {
 
-    private final ClassifyService classifyService;
+//    private final ClassifyService classifyService;
 
     private final RedisLockClient redisLockClient;
 
-    @Override
-    public Page<Material> getPage(Map<String, String> condition) {
-
-        QueryWrapper<Material> wrapper = Wrappers.query();
-
-        WrapperUtil.init(condition, wrapper)
-                .keyword("code", "name")
-                .eqTenantId();
-
-        // 编码正序
-        wrapper.orderByAsc("code");
-
-        // 如果传入分类id,查询分类已经分类下级
-        String classifyId = condition.get("classifyId");
-        if (ObjectUtil.isNotEmpty(classifyId)) {
-            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId));
-            wrapper.in("classify_id", childrenIdList);
-        }
-
-        return page(condition, wrapper);
-    }
+//    @Override
+//    public Page<Material> getPage(Map<String, String> condition) {
+//
+//        QueryWrapper<Material> wrapper = Wrappers.query();
+//
+//        WrapperUtil.init(condition, wrapper)
+//                .keyword("code", "name")
+//                .eqTenantId();
+//
+//        // 编码正序
+//        wrapper.orderByAsc("code");
+//
+//        // 如果传入分类id,查询分类已经分类下级
+//        String classifyId = condition.get("classifyId");
+//        if (ObjectUtil.isNotEmpty(classifyId)) {
+//            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId));
+//            wrapper.in("classify_id", childrenIdList);
+//        }
+//
+//        return page(condition, wrapper);
+//    }
 
     @Override
     public void add(MaterialVo materialVo) {
         Assert.notEmpty(materialVo.getName(), "物料名称不能为空");
         Assert.notEmpty(materialVo.getCode(), "物料编码不能为空");
-        Integer coiled = materialVo.getCoiled();
-        Assert.notEmpty(coiled, "是否卷材判断字段不能为空");
-
-        if (ObjectUtil.isEmpty(materialVo.getSafetyStock())) {
-            materialVo.setSafetyStock(BigDecimal.ZERO);
-        }
-
-        if (ObjectUtil.isEmpty(materialVo.getCycle())) {
-            materialVo.setCycle(0);
-        }
-
-        if (ObjectUtil.isEmpty(materialVo.getQualityTestingRate())) {
-            materialVo.setQualityTestingRate(BigDecimal.ZERO);
-        }
 
-        if (ObjectUtil.isEmpty(materialVo.getLoss()) || coiled.equals(StatusConstant.No)) {
-            materialVo.setLoss(BigDecimal.ZERO);
-        }
 
         String tenantId = AuthUtil.getTenantId();
 

+ 19 - 25
hx-common/product-library/src/main/java/com/fjhx/service/impl/ProductServiceImpl.java

@@ -1,9 +1,6 @@
 package com.fjhx.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-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.constant.ProductLibraryLockConstant;
@@ -11,17 +8,14 @@ import com.fjhx.constants.ErrorMsgConstant;
 import com.fjhx.entity.Product;
 import com.fjhx.mapper.ProductMapper;
 import com.fjhx.params.ProductVo;
-import com.fjhx.service.ClassifyService;
 import com.fjhx.service.ProductService;
 import com.fjhx.utils.Assert;
-import com.fjhx.utils.WrapperUtil;
 import lombok.RequiredArgsConstructor;
 import org.springblade.core.redis.lock.RedisLockClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -35,28 +29,28 @@ import java.util.Map;
 @RequiredArgsConstructor
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
 
-    private final ClassifyService classifyService;
+//    private final ClassifyService classifyService;
 
     private final RedisLockClient redisLockClient;
 
-    @Override
-    public Page<Product> getPage(Map<String, String> condition) {
-
-        QueryWrapper<Product> wrapper = Wrappers.query();
-
-        WrapperUtil.init(condition, wrapper)
-                .keyword("code", "name")
-                .eqTenantId();
-
-        // 如果传入分类id,查询分类已经分类下级
-        Object classifyId = condition.get("classifyId");
-        if (ObjectUtil.isNotEmpty(classifyId)) {
-            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId.toString()));
-            wrapper.in("classify_id", childrenIdList);
-        }
-
-        return page(condition, wrapper);
-    }
+//    @Override
+//    public Page<Product> getPage(Map<String, String> condition) {
+//
+//        QueryWrapper<Product> wrapper = Wrappers.query();
+//
+//        WrapperUtil.init(condition, wrapper)
+//                .keyword("code", "name")
+//                .eqTenantId();
+//
+//        // 如果传入分类id,查询分类已经分类下级
+//        Object classifyId = condition.get("classifyId");
+//        if (ObjectUtil.isNotEmpty(classifyId)) {
+//            List<Long> childrenIdList = classifyService.getChildrenIdList(Long.valueOf(classifyId.toString()));
+//            wrapper.in("classify_id", childrenIdList);
+//        }
+//
+//        return page(condition, wrapper);
+//    }
 
     @Override
     public void add(ProductVo productVo) {

+ 59 - 0
hx-service-api/iot-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/iot-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 productionProcessId;
+
+
+}

+ 16 - 17
hx-common/product-library/src/main/java/com/fjhx/controller/MaterialController.java → hx-service/iot-management/src/main/java/com/fjhx/material/controller/MaterialExController.java

@@ -1,8 +1,7 @@
-package com.fjhx.controller;
+package com.fjhx.material.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.Material;
-import com.fjhx.params.MaterialVo;
+import com.fjhx.material.service.MaterialExService;
 import com.fjhx.service.MaterialService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,47 +15,47 @@ import java.util.Map;
 
 /**
  * <p>
- * 物料 前端控制器
+ * 物料拓展表 前端控制器
  * </p>
  *
  * @author ${author}
- * @since 2022-07-06
+ * @since 2022-07-14
  */
 @RestController
 @RequestMapping("/material")
-public class MaterialController {
+public class MaterialExController {
+
+    @Autowired
+    private MaterialExService materialExService;
 
     @Autowired
     private MaterialService materialService;
 
     @PostMapping("/page")
     public R page(@RequestBody Map<String, String> condition) {
-        Page<Material> result = materialService.getPage(condition);
+        Page<Map<String, Object>> result = materialExService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody MaterialVo materialVo) {
-        materialService.add(materialVo);
+    public R add(@RequestBody Map<String, Object> map) {
+        materialExService.add(map);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody MaterialVo materialVo) {
-        materialService.edit(materialVo);
+    public R edit(@RequestBody Map<String, Object> map) {
+        materialExService.edit(map);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody MaterialVo materialVo) {
-        materialService.delete(materialVo);
+    public R delete(@RequestBody Map<String, Object> map) {
+        materialExService.delete(map);
         return R.success();
     }
 
-    /**
-     * 获取租户添加过的物料单位集合
-     */
-    @PostMapping("/getUnitList")
+    @PostMapping("getUnitList")
     public R getUnitList() {
         List<String> unitList = materialService.getUnitList();
         return R.success(unitList);

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

@@ -0,0 +1,23 @@
+package com.fjhx.material.mapper;
+
+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/iot-management/src/main/java/com/fjhx/material/mapper/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.material.mapper.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>

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

@@ -0,0 +1,27 @@
+package com.fjhx.material.service;
+
+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/iot-management/src/main/java/com/fjhx/material/service/impl/MaterialExServiceImpl.java

@@ -0,0 +1,111 @@
+package com.fjhx.material.service.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.MaterialEx;
+import com.fjhx.material.mapper.MaterialExMapper;
+import com.fjhx.material.service.MaterialExService;
+import com.fjhx.params.MaterialVo;
+import com.fjhx.service.ClassifyService;
+import com.fjhx.service.MaterialService;
+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
+    @Override
+    public void add(Map<String, Object> map) {
+
+        MaterialVo material = BeanUtil.toBean(map, MaterialVo.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
+    @Override
+    public void edit(Map<String, Object> map) {
+        MaterialVo material = BeanUtil.toBean(map, MaterialVo.class);
+        MaterialEx materialEx = BeanUtil.toBean(map, MaterialEx.class);
+
+        materialService.edit(material);
+        updateById(materialEx);
+    }
+
+    @Override
+    public void delete(Map<String, Object> map) {
+        MaterialVo material = BeanUtil.toBean(map, MaterialVo.class);
+
+        materialService.delete(material);
+    }
+
+}

+ 15 - 16
hx-common/product-library/src/main/java/com/fjhx/controller/ProductController.java → hx-service/iot-management/src/main/java/com/fjhx/product/controller/ProductExController.java

@@ -1,8 +1,7 @@
-package com.fjhx.controller;
+package com.fjhx.product.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.Product;
-import com.fjhx.params.ProductVo;
+import com.fjhx.product.service.ProductExService;
 import com.fjhx.service.ProductService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,43 +19,43 @@ import java.util.Map;
  * </p>
  *
  * @author ${author}
- * @since 2022-07-06
+ * @since 2022-07-14
  */
 @RestController
 @RequestMapping("/product")
-public class ProductController {
+public class ProductExController {
+
+    @Autowired
+    private ProductExService productExService;
 
     @Autowired
     private ProductService productService;
 
     @PostMapping("/page")
     public R page(@RequestBody Map<String, String> condition) {
-        Page<Product> result = productService.getPage(condition);
+        Page<Map<String, Object>> result = productExService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody ProductVo productVo) {
-        productService.add(productVo);
+    public R add(@RequestBody Map<String, Object> map) {
+        productExService.add(map);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody ProductVo productVo) {
-        productService.edit(productVo);
+    public R edit(@RequestBody Map<String, Object> map) {
+        productExService.edit(map);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody ProductVo productVo) {
-        productService.delete(productVo);
+    public R delete(@RequestBody Map<String, Object> map) {
+        productExService.delete(map);
         return R.success();
     }
 
-    /**
-     * 获取租户添加过的物料单位集合
-     */
-    @PostMapping("/getUnitList")
+    @PostMapping("getUnitList")
     public R getUnitList() {
         List<String> unitList = productService.getUnitList();
         return R.success(unitList);

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

@@ -0,0 +1,23 @@
+package com.fjhx.product.mapper;
+
+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.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);
+
+}

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

@@ -0,0 +1,20 @@
+<?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.product.mapper.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,
+               pp.name       productionProcessName
+        from product p
+                 left join product_ex pe on p.id = pe.id
+                 left join production_process pp on pe.production_process_id = pp.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 27 - 0
hx-service/iot-management/src/main/java/com/fjhx/product/service/ProductExService.java

@@ -0,0 +1,27 @@
+package com.fjhx.product.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.product.ProductEx;
+
+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);
+
+}

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

@@ -0,0 +1,86 @@
+package com.fjhx.product.service.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.ProductEx;
+import com.fjhx.params.ProductVo;
+import com.fjhx.product.mapper.ProductExMapper;
+import com.fjhx.product.service.ProductExService;
+import com.fjhx.service.ClassifyService;
+import com.fjhx.service.ProductService;
+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")
+                .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) {
+        ProductVo productVo = BeanUtil.toBean(map, ProductVo.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) {
+        ProductVo productVo = BeanUtil.toBean(map, ProductVo.class);
+        ProductEx productEx = BeanUtil.toBean(map, ProductEx.class);
+
+        productService.edit(productVo);
+        updateById(productEx);
+    }
+
+    @Override
+    public void delete(Map<String, Object> map) {
+        ProductVo productVo = BeanUtil.toBean(map, ProductVo.class);
+
+        productService.delete(productVo);
+    }
+
+}