Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

caozj 2 tahun lalu
induk
melakukan
8eeacc66fb
16 mengubah file dengan 228 tambahan dan 80 penghapusan
  1. 0 17
      hx-common/product-library/src/main/java/com/fjhx/params/ClassifyEx.java
  2. 0 17
      hx-common/product-library/src/main/java/com/fjhx/params/MaterialEx.java
  3. 0 17
      hx-common/product-library/src/main/java/com/fjhx/params/ProductEx.java
  4. 1 1
      hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/product/ProductEx.java
  5. 3 1
      hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/production/ProductionLine.java
  6. 18 0
      hx-service-api/iot-management-api/src/main/java/com/fjhx/params/working/WorkingRouteEx.java
  7. 13 0
      hx-service-api/iot-management-api/src/main/java/com/fjhx/params/working/WorkingRouteVo.java
  8. 2 2
      hx-service/iot-management/src/main/java/com/fjhx/material/service/impl/MaterialExServiceImpl.java
  9. 1 1
      hx-service/iot-management/src/main/java/com/fjhx/product/mapper/ProductExMapper.java
  10. 5 5
      hx-service/iot-management/src/main/java/com/fjhx/product/mapper/ProductExMapper.xml
  11. 10 1
      hx-service/iot-management/src/main/java/com/fjhx/product/service/impl/ProductExServiceImpl.java
  12. 13 7
      hx-service/iot-management/src/main/java/com/fjhx/working/controller/WorkingRouteController.java
  13. 6 0
      hx-service/iot-management/src/main/java/com/fjhx/working/mapper/WorkingRouteMapper.java
  14. 14 0
      hx-service/iot-management/src/main/java/com/fjhx/working/mapper/WorkingRouteMapper.xml
  15. 4 1
      hx-service/iot-management/src/main/java/com/fjhx/working/service/WorkingRouteService.java
  16. 138 10
      hx-service/iot-management/src/main/java/com/fjhx/working/service/impl/WorkingRouteServiceImpl.java

+ 0 - 17
hx-common/product-library/src/main/java/com/fjhx/params/ClassifyEx.java

@@ -1,17 +0,0 @@
-package com.fjhx.params;
-
-import com.fjhx.entity.Classify;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 分类
- *
- * @author ${author}
- * @since 2022-07-06
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ClassifyEx extends Classify {
-
-}

+ 0 - 17
hx-common/product-library/src/main/java/com/fjhx/params/MaterialEx.java

@@ -1,17 +0,0 @@
-package com.fjhx.params;
-
-import com.fjhx.entity.Material;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 物料
- *
- * @author ${author}
- * @since 2022-07-06
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class MaterialEx extends Material {
-
-}

+ 0 - 17
hx-common/product-library/src/main/java/com/fjhx/params/ProductEx.java

@@ -1,17 +0,0 @@
-package com.fjhx.params;
-
-import com.fjhx.entity.Product;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 产品
- *
- * @author ${author}
- * @since 2022-07-06
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ProductEx extends Product {
-
-}

+ 1 - 1
hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/product/ProductEx.java

@@ -32,7 +32,7 @@ public class ProductEx implements Serializable {
     /**
      * 生产流程id
      */
-    private Long productionProcessId;
+    private Long workingRouteId;
 
 
 }

+ 3 - 1
hx-service-api/iot-management-api/src/main/java/com/fjhx/entity/production/ProductionLine.java

@@ -7,6 +7,8 @@ import com.fjhx.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 生产线
@@ -33,7 +35,7 @@ public class ProductionLine extends BaseEntity {
     /**
      * 产能
      */
-    private Integer capacity;
+    private BigDecimal capacity;
 
     /**
      * 产线说明

+ 18 - 0
hx-service-api/iot-management-api/src/main/java/com/fjhx/params/working/WorkingRouteEx.java

@@ -1,9 +1,12 @@
 package com.fjhx.params.working;
 
 import com.fjhx.entity.working.WorkingRoute;
+import com.fjhx.entity.working.WorkingRouteProcedure;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 工艺路线
  *
@@ -14,4 +17,19 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class WorkingRouteEx extends WorkingRoute {
 
+    /**
+     * 工艺路线工序关联表
+     */
+    private List<WorkingRouteProcedure> workingRouteProcedureList;
+
+    /**
+     * 工艺路线拼接
+     */
+    private String workingProcedureGroup;
+
+    /**
+     * 适用产品拼接
+     */
+    private String productGroup;
+
 }

+ 13 - 0
hx-service-api/iot-management-api/src/main/java/com/fjhx/params/working/WorkingRouteVo.java

@@ -1,9 +1,12 @@
 package com.fjhx.params.working;
 
 import com.fjhx.entity.working.WorkingRoute;
+import com.fjhx.entity.working.WorkingRouteProcedure;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 工艺路线
  *
@@ -14,4 +17,14 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class WorkingRouteVo extends WorkingRoute {
 
+    /**
+     * 工序集合
+     */
+    private List<WorkingRouteProcedure> workingRouteProcedureList;
+
+    /**
+     * 产品id集合
+     */
+    private List<Long> productIdList;
+
 }

+ 2 - 2
hx-service/iot-management/src/main/java/com/fjhx/material/service/impl/MaterialExServiceImpl.java

@@ -59,7 +59,7 @@ public class MaterialExServiceImpl extends ServiceImpl<MaterialExMapper, Materia
         return baseMapper.getPage(createPage(condition), wrapper);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(Map<String, Object> map) {
 
@@ -91,7 +91,7 @@ public class MaterialExServiceImpl extends ServiceImpl<MaterialExMapper, Materia
         save(materialEx);
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(Map<String, Object> map) {
         MaterialVo material = BeanUtil.toBean(map, MaterialVo.class);

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

@@ -21,6 +21,6 @@ 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();
+    List<Map<String, Object>> getList(@Param("ew") QueryWrapper<?> wrapper);
 
 }

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

@@ -10,10 +10,10 @@
                pe.model,
                p.unit,
                p.introduce,
-               pp.name       productionProcessName
+               wr.name       workingRouteName
         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
+                 left join working_route wr on pe.working_route_id = wr.id
             ${ew.customSqlSegment}
     </select>
 
@@ -21,11 +21,11 @@
         select p.id,
                p.code,
                p.name,
-               pe.production_process_id productionProcessId,
-               pp.name                  productionProcessName
+               wr.id   workingRouteId,
+               wr.name workingRouteName
         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
+                 left join working_route wr on pe.working_route_id = wr.id
             ${ew.customSqlSegment}
     </select>
 

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

@@ -41,6 +41,7 @@ public class ProductExServiceImpl extends ServiceImpl<ProductExMapper, ProductEx
         QueryWrapper<?> wrapper = WrapperUtil.init(condition)
                 .keyword("p.name", "p.code")
                 .eqTenantId("p")
+                .notDelete("p")
                 .getWrapper();
 
         // 编码正序
@@ -85,7 +86,15 @@ public class ProductExServiceImpl extends ServiceImpl<ProductExMapper, ProductEx
 
     @Override
     public List<Map<String, Object>> getList() {
-        return baseMapper.getList();
+        QueryWrapper<?> wrapper = WrapperUtil.init()
+                .eqTenantId("p")
+                .notDelete("p")
+                .getWrapper();
+
+        // 编码正序
+        wrapper.orderByAsc("p.code");
+
+        return baseMapper.getList(wrapper);
     }
 
 }

+ 13 - 7
hx-service/iot-management/src/main/java/com/fjhx/working/controller/WorkingRouteController.java

@@ -1,10 +1,10 @@
 package com.fjhx.working.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
-import com.fjhx.entity.working.WorkingRoute;
+import com.fjhx.params.working.WorkingRouteEx;
 import com.fjhx.params.working.WorkingRouteVo;
 import com.fjhx.working.service.WorkingRouteService;
+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;
@@ -29,28 +29,34 @@ public class WorkingRouteController {
     private WorkingRouteService workingRouteService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, String> condition){
-        Page<WorkingRoute> result = workingRouteService.getPage(condition);
+    public R page(@RequestBody Map<String, String> condition) {
+        Page<WorkingRouteEx> result = workingRouteService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody WorkingRouteVo workingRouteVo){
+    public R add(@RequestBody WorkingRouteVo workingRouteVo) {
         workingRouteService.add(workingRouteVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody WorkingRouteVo workingRouteVo){
+    public R edit(@RequestBody WorkingRouteVo workingRouteVo) {
         workingRouteService.edit(workingRouteVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody WorkingRouteVo workingRouteVo){
+    public R delete(@RequestBody WorkingRouteVo workingRouteVo) {
         workingRouteService.delete(workingRouteVo);
         return R.success();
     }
 
+    @PostMapping("/details")
+    public R details(@RequestBody WorkingRouteVo workingRouteVo) {
+        WorkingRouteEx result = workingRouteService.details(workingRouteVo);
+        return R.success(result);
+    }
+
 }
 

+ 6 - 0
hx-service/iot-management/src/main/java/com/fjhx/working/mapper/WorkingRouteMapper.java

@@ -1,7 +1,11 @@
 package com.fjhx.working.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.working.WorkingRoute;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.params.working.WorkingRouteEx;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface WorkingRouteMapper extends BaseMapper<WorkingRoute> {
 
+    Page<WorkingRouteEx> getPage(@Param("page") Page<WorkingRoute> page, @Param("ew") QueryWrapper<?> wrapper);
+
 }

+ 14 - 0
hx-service/iot-management/src/main/java/com/fjhx/working/mapper/WorkingRouteMapper.xml

@@ -2,4 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.working.mapper.WorkingRouteMapper">
 
+    <select id="getPage" resultType="com.fjhx.params.working.WorkingRouteEx">
+        select wr.id,
+               wr.name,
+               wr.introduce,
+               group_concat(distinct wp.name separator ' > ') workingProcedureGroup,
+               group_concat(distinct p.name)                productGroup
+        from working_route wr
+                 left join working_route_procedure wrp on wr.id = wrp.working_route_id
+                 left join working_procedure wp on wrp.working_procedure_id = wp.id
+                 left join product_ex pe on wr.id = pe.working_route_id
+                 left join product p on p.id = pe.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 4 - 1
hx-service/iot-management/src/main/java/com/fjhx/working/service/WorkingRouteService.java

@@ -2,6 +2,7 @@ package com.fjhx.working.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.working.WorkingRoute;
+import com.fjhx.params.working.WorkingRouteEx;
 import com.fjhx.params.working.WorkingRouteVo;
 import com.fjhx.base.BaseService;
 
@@ -17,7 +18,7 @@ import java.util.Map;
  */
 public interface WorkingRouteService extends BaseService<WorkingRoute> {
 
-    Page<WorkingRoute> getPage(Map<String, String> condition);
+    Page<WorkingRouteEx> getPage(Map<String, String> condition);
 
     void add(WorkingRouteVo workingRouteVo);
 
@@ -25,4 +26,6 @@ public interface WorkingRouteService extends BaseService<WorkingRoute> {
 
     void delete(WorkingRouteVo workingRouteVo);
 
+    WorkingRouteEx details(WorkingRouteVo workingRouteVo);
+
 }

+ 138 - 10
hx-service/iot-management/src/main/java/com/fjhx/working/service/impl/WorkingRouteServiceImpl.java

@@ -1,17 +1,30 @@
 package com.fjhx.working.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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.utils.WrapperUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BaseEntity;
+import com.fjhx.entity.product.ProductEx;
 import com.fjhx.entity.working.WorkingRoute;
+import com.fjhx.entity.working.WorkingRouteProcedure;
+import com.fjhx.params.working.WorkingRouteEx;
 import com.fjhx.params.working.WorkingRouteVo;
+import com.fjhx.product.service.ProductExService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.WrapperUtil;
 import com.fjhx.working.mapper.WorkingRouteMapper;
+import com.fjhx.working.service.WorkingRouteProcedureService;
 import com.fjhx.working.service.WorkingRouteService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -24,32 +37,147 @@ import java.util.Map;
 @Service
 public class WorkingRouteServiceImpl extends ServiceImpl<WorkingRouteMapper, WorkingRoute> implements WorkingRouteService {
 
+    @Autowired
+    private WorkingRouteProcedureService workingRouteProcedureService;
+
+    @Autowired
+    private ProductExService productExService;
+
     @Override
-    public Page<WorkingRoute> getPage(Map<String, String> condition) {
+    public Page<WorkingRouteEx> getPage(Map<String, String> condition) {
+
+        QueryWrapper<?> wrapper = WrapperUtil.init(condition)
+                .eqTenantId("wr")
+                .keyword("wr.name", "wr.introduce")
+                .notDelete("wr", "wrp", "wp", "p")
+                .createTimeDesc("wr")
+                .getWrapper();
+
+        wrapper.orderByAsc("wrp.sort");
+        wrapper.groupBy("wr.id");
 
-        QueryWrapper<WorkingRoute> wrapper = Wrappers.query();
+        String keyword = condition.get("keyword");
 
-        WrapperUtil.init(condition, wrapper)
-                .eqTenantId()
-                .createTimeDesc();
+        wrapper.having(ObjectUtil.isNotEmpty(keyword), "instr( workingProcedureGroup, {0} )> 0 " +
+                "OR instr( productGroup, {0} )> 0 ", keyword);
 
-        Page<WorkingRoute> page = page(condition, wrapper);
-        return page;
+        return baseMapper.getPage(createPage(condition), wrapper);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(WorkingRouteVo workingRouteVo) {
         save(workingRouteVo);
+
+        Long id = workingRouteVo.getId();
+
+        // 工艺路线关联工序
+        List<WorkingRouteProcedure> workingProcedureList = workingRouteVo.getWorkingRouteProcedureList();
+        if (workingProcedureList.size() > 0) {
+            for (int i = 0; i < workingProcedureList.size(); i++) {
+                WorkingRouteProcedure workingRouteProcedure = workingProcedureList.get(i);
+                workingRouteProcedure.setSort(i);
+                workingRouteProcedure.setWorkingRouteId(id);
+            }
+            workingRouteProcedureService.saveBatch(workingProcedureList);
+        }
+
+        // 工艺路线适用产品
+        List<Long> productIdList = workingRouteVo.getProductIdList();
+        if (productIdList.size() > 0) {
+            workingRouteProduct(productIdList, id);
+        }
+
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(WorkingRouteVo workingRouteVo) {
         updateById(workingRouteVo);
+
+        Long id = workingRouteVo.getId();
+
+        Assert.notEmpty(id, "工艺路线id不能为空");
+
+        // 工艺路线关联工序
+        List<WorkingRouteProcedure> workingProcedureList = workingRouteVo.getWorkingRouteProcedureList();
+        if (workingProcedureList.size() > 0) {
+            for (int i = 0; i < workingProcedureList.size(); i++) {
+                WorkingRouteProcedure workingRouteProcedure = workingProcedureList.get(i);
+                workingRouteProcedure.setSort(i);
+                workingRouteProcedure.setWorkingRouteId(id);
+            }
+            workingRouteProcedureService.saveOrUpdateBatch(workingProcedureList);
+
+            List<Long> workingProcedureIdList = workingProcedureList.stream().map(BaseEntity::getId).collect(Collectors.toList());
+            workingRouteProcedureService.remove(Wrappers.<WorkingRouteProcedure>lambdaQuery()
+                    .eq(WorkingRouteProcedure::getWorkingRouteId, id)
+                    .notIn(workingProcedureIdList.size() > 0, BaseEntity::getId, workingProcedureIdList));
+        }
+
+        // 工艺路线适用产品
+        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));
+        }
+
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(WorkingRouteVo workingRouteVo) {
-        removeById(workingRouteVo.getId());
+        Long id = workingRouteVo.getId();
+
+        removeById(id);
+
+        // 去除这个工艺路线已关联的产品
+        productExService.update(Wrappers.<ProductEx>lambdaUpdate()
+                .eq(ProductEx::getWorkingRouteId, id)
+                .set(ProductEx::getWorkingRouteId, null));
+
+        // 去除工艺路线关联工序
+        workingRouteProcedureService.remove(WorkingRouteProcedure::getWorkingRouteId, id);
+
+    }
+
+    @Override
+    public WorkingRouteEx details(WorkingRouteVo workingRouteVo) {
+        Long id = workingRouteVo.getId();
+        WorkingRoute workingRoute = getById(id);
+        WorkingRouteEx result = BeanUtil.toBean(workingRoute, WorkingRouteEx.class);
+
+        List<WorkingRouteProcedure> list = workingRouteProcedureService.lambdaQuery()
+                .select(WorkingRouteProcedure::getWorkingProcedureId, WorkingRouteProcedure::getAutomaticCirculation)
+                .eq(WorkingRouteProcedure::getWorkingRouteId, id)
+                .orderByAsc(WorkingRouteProcedure::getSort)
+                .list();
+
+        result.setWorkingRouteProcedureList(list);
+
+        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);
     }
 
+
 }