yzc 1 жил өмнө
parent
commit
39fd5403df
24 өөрчлөгдсөн 432 нэмэгдсэн , 327 устгасан
  1. 2 1
      hx-admin/pom.xml
  2. 1 190
      hx-admin/src/main/resources/application-dev.yml
  3. 3 67
      hx-admin/src/main/resources/application-test.yml
  4. 1 1
      hx-admin/src/main/resources/application.yml
  5. 8 0
      hx-mes/src/main/java/com/fjhx/mes/controller/technology/TechnologyController.java
  6. 20 0
      hx-mes/src/main/java/com/fjhx/mes/controller/technology/TechnologyProcessLineController.java
  7. 6 1
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyDto.java
  8. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyProcessLineDto.java
  9. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyProcessLineSelectDto.java
  10. 6 2
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/po/Technology.java
  11. 36 0
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/po/TechnologyProcessLine.java
  12. 17 0
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyProcessLineVo.java
  13. 13 6
      hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyVo.java
  14. 4 2
      hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionProcessesMapper.java
  15. 17 0
      hx-mes/src/main/java/com/fjhx/mes/mapper/technology/TechnologyProcessLineMapper.java
  16. 8 6
      hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionProcessesService.java
  17. 51 4
      hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionProcessesServiceImpl.java
  18. 17 0
      hx-mes/src/main/java/com/fjhx/mes/service/technology/TechnologyProcessLineService.java
  19. 2 0
      hx-mes/src/main/java/com/fjhx/mes/service/technology/TechnologyService.java
  20. 21 0
      hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyProcessLineServiceImpl.java
  21. 148 39
      hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyServiceImpl.java
  22. 7 8
      hx-mes/src/main/resources/mapper/applicable/ApplicableProductsMapper.xml
  23. 6 0
      hx-mes/src/main/resources/mapper/production/ProductionProcessesMapper.xml
  24. 4 0
      hx-mes/src/main/resources/mapper/technology/TechnologyProcessLineMapper.xml

+ 2 - 1
hx-admin/pom.xml

@@ -135,7 +135,8 @@
                 </configuration>
                 </configuration>
             </plugin>
             </plugin>
         </plugins>
         </plugins>
-        <finalName>${project.artifactId}</finalName>
+        <!--        <finalName>${project.artifactId}</finalName>-->
+        <finalName>hx-sanfan</finalName>
     </build>
     </build>
 
 
 </project>
 </project>

+ 1 - 190
hx-admin/src/main/resources/application-dev.yml

@@ -1,124 +1,3 @@
-## 数据源配置
-#spring:
-#    datasource:
-#        dynamic:
-#            strict: true
-#            primary: base
-#            datasource:
-#                victoriatourist:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                common:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                oa:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                mes:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                wms:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                item:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                supply:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                base:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                iot:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                customer:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                purchase:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                account:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                sale:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                mail:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                kd100:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                ehsd:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#                jxst:
-#                    url: jdbc:mysql://110.41.2.116:23063/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-#                    username: bytesailing_db_user
-#                    password: kfG-A93-w7h-qX8
-#
-#    # redis 配置
-#    redis:
-#        # 地址
-#        host: 139.9.102.170
-#        # 端口,默认为6379
-#        port: 9673
-#        # 数据库索引
-#        database: 1
-#        # 密码
-#        password: ss34dsA3DdsF
-#        # 连接超时时间
-#        timeout: 10s
-#        lettuce:
-#            pool:
-#                # 连接池中的最小空闲连接
-#                min-idle: 0
-#                # 连接池中的最大空闲连接
-#                max-idle: 8
-#                # 连接池的最大数据库连接数
-#                max-active: 8
-#                # #连接池最大阻塞等待时间(使用负值表示没有限制)
-#                max-wait: -1ms
-#
-#server:
-#    servlet:
-#        context-path: /prod-api
-#
-#mail:
-#    # 调用邮箱服务url前缀
-#    urlPrefix: http://localhost:8088/mailService/
-#    abroadUrlPrefix:
-#    #abroadUrlPrefix: http://159.138.54.234:8088/mailService/
-#
-#hx:
-#    httpUrl: http://139.159.251.109:81/prod-api/
-#
-## token配置
-#token:
-#    # 令牌自定义标识
-#    header: Authorization
-#    # 令牌密钥
-#    secret: abcdefghijklmnopqrstuvwxyz
-#    # 令牌有效期(默认30分钟)
-#    expireTime: 240
-
 # 数据源配置
 # 数据源配置
 spring:
 spring:
     datasource:
     datasource:
@@ -127,77 +6,9 @@ spring:
             primary: base
             primary: base
             datasource:
             datasource:
                 base:
                 base:
-                    url: jdbc:mysql://121.37.194.75:30102/new_base_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://121.37.194.75:30102/sanfan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     username: root
                     password: 5fWD*oa^nso@kmKa
                     password: 5fWD*oa^nso@kmKa
-    #                victoriatourist:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                common:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                oa:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                mes:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                wms:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                item:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                supply:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                base:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                iot:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                customer:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                purchase:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                account:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                sale:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                mail:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                kd100:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                ehsd:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
-    #                jxst:
-    #                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-    #                    username: root
-    #                    password: 5fWD*oa^nso@kmKa
 
 
     # redis 配置
     # redis 配置
     redis:
     redis:

+ 3 - 67
hx-admin/src/main/resources/application-test.yml

@@ -5,72 +5,8 @@ spring:
             strict: true
             strict: true
             primary: base
             primary: base
             datasource:
             datasource:
-                victoriatourist:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                common:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                oa:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                mes:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                wms:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                item:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                supply:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
                 base:
                 base:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                iot:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                customer:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                purchase:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                account:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                sale:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                mail:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                kd100:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                ehsd:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_ehsd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: root
-                    password: 5fWD*oa^nso@kmKa
-                jxst:
-                    url: jdbc:mysql://121.37.194.75:30102/bytesailing_jxst?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://121.37.194.75:30102/sanfan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: root
                     username: root
                     password: 5fWD*oa^nso@kmKa
                     password: 5fWD*oa^nso@kmKa
 
 
@@ -98,13 +34,13 @@ spring:
                 max-wait: -1ms
                 max-wait: -1ms
 
 
 server:
 server:
-    port: 9901
+    port: 20015
     servlet:
     servlet:
         context-path: /test-api
         context-path: /test-api
 
 
 mail:
 mail:
     # 调用邮箱服务url前缀
     # 调用邮箱服务url前缀
-    urlPrefix: http://localhost:8089/mailService/
+    urlPrefix:
     abroadUrlPrefix:
     abroadUrlPrefix:
 
 
 hx:
 hx:

+ 1 - 1
hx-admin/src/main/resources/application.yml

@@ -1,7 +1,7 @@
 # 项目相关配置
 # 项目相关配置
 ruoyi:
 ruoyi:
   # 名称
   # 名称
-  name: ehsd
+  name: sanfan
   # 版本
   # 版本
   version: 3.8.5
   version: 3.8.5
   # 版权年份
   # 版权年份

+ 8 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/technology/TechnologyController.java

@@ -61,6 +61,14 @@ public class TechnologyController {
     }
     }
 
 
     /**
     /**
+     * 工艺适用产品修改
+     */
+    @PostMapping("/editProduct")
+    public void editProduct(@RequestBody TechnologyDto technologyDto) {
+        technologyService.editProduct(technologyDto);
+    }
+
+    /**
      * 工艺删除
      * 工艺删除
      */
      */
     @PostMapping("/delete")
     @PostMapping("/delete")

+ 20 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/technology/TechnologyProcessLineController.java

@@ -0,0 +1,20 @@
+package com.fjhx.mes.controller.technology;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 工艺线路 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/technologyProcessLine")
+public class TechnologyProcessLineController {
+
+
+}

+ 6 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyDto.java

@@ -1,8 +1,8 @@
 package com.fjhx.mes.entity.technology.dto;
 package com.fjhx.mes.entity.technology.dto;
 
 
-import com.fjhx.file.entity.ObsFile;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.technology.po.Technology;
 import com.fjhx.mes.entity.technology.po.Technology;
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
@@ -28,4 +28,9 @@ public class TechnologyDto extends Technology {
      */
      */
     private List<String> processRouteList;
     private List<String> processRouteList;
 
 
+    /**
+     * 工艺线路连线列表
+     */
+    private List<TechnologyProcessLine> technologyProcessLineList;
+
 }
 }

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyProcessLineDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.technology.dto;
+
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工艺线路新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class TechnologyProcessLineDto extends TechnologyProcessLine {
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/technology/dto/TechnologyProcessLineSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.technology.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工艺线路列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class TechnologyProcessLineSelectDto extends BaseSelectDto {
+
+}

+ 6 - 2
hx-mes/src/main/java/com/fjhx/mes/entity/technology/po/Technology.java

@@ -2,7 +2,6 @@ package com.fjhx.mes.entity.technology.po;
 
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BasePo;
-import java.util.Date;
 import lombok.Getter;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
@@ -11,7 +10,7 @@ import lombok.Setter;
  * 工艺
  * 工艺
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-03-28
  * @since 2023-03-28
  */
  */
 @Getter
 @Getter
@@ -34,4 +33,9 @@ public class Technology extends BasePo {
      */
      */
     private String remarks;
     private String remarks;
 
 
+    /**
+     * 工艺线路 流程图JSON
+     */
+    private String nodeObject;
+
 }
 }

+ 36 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/technology/po/TechnologyProcessLine.java

@@ -0,0 +1,36 @@
+package com.fjhx.mes.entity.technology.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 工艺线路
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("technology_process_line")
+public class TechnologyProcessLine extends BasePo {
+
+    /**
+     * 工艺id
+     */
+    private Long technologyId;
+
+    /**
+     * 来源工序id
+     */
+    private Long sourceProcessesId;
+
+    /**
+     * 目标工序id
+     */
+    private Long targetProcessesId;
+
+}

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyProcessLineVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.entity.technology.vo;
+
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工艺线路列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class TechnologyProcessLineVo extends TechnologyProcessLine {
+
+}

+ 13 - 6
hx-mes/src/main/java/com/fjhx/mes/entity/technology/vo/TechnologyVo.java

@@ -7,28 +7,35 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.Setter;
 
 
 import java.util.List;
 import java.util.List;
-import java.util.Map;
 
 
 /**
 /**
  * 工艺列表查询返回值实体
  * 工艺列表查询返回值实体
  *
  *
- * @author 
+ * @author
  * @since 2023-03-28
  * @since 2023-03-28
  */
  */
 @Getter
 @Getter
 @Setter
 @Setter
 public class TechnologyVo extends Technology {
 public class TechnologyVo extends Technology {
 
 
-    /**工艺线路名列表*/
+    /**
+     * 工艺线路名列表
+     */
     private List<String> processRouteNameList;
     private List<String> processRouteNameList;
 
 
-    /**适用商品名列表*/
+    /**
+     * 适用商品名列表
+     */
     private List<String> applicableProductsNameList;
     private List<String> applicableProductsNameList;
 
 
-    /**工艺线路列表*/
+    /**
+     * 工艺线路列表
+     */
     private List<ProductionProcesses> processRouteList;
     private List<ProductionProcesses> processRouteList;
 
 
-    /**适用商品列表*/
+    /**
+     * 适用商品列表
+     */
     private List<ProductInfo> applicableProductsList;
     private List<ProductInfo> applicableProductsList;
 
 
 }
 }

+ 4 - 2
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionProcessesMapper.java

@@ -1,8 +1,8 @@
 package com.fjhx.mes.mapper.production;
 package com.fjhx.mes.mapper.production;
 
 
-import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Param;
  * 工序 Mapper 接口
  * 工序 Mapper 接口
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-03-28
  * @since 2023-03-28
  */
  */
 public interface ProductionProcessesMapper extends BaseMapper<ProductionProcesses> {
 public interface ProductionProcessesMapper extends BaseMapper<ProductionProcesses> {
@@ -23,4 +23,6 @@ public interface ProductionProcessesMapper extends BaseMapper<ProductionProcesse
      */
      */
     Page<ProductionProcessesVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductionProcesses> wrapper);
     Page<ProductionProcessesVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductionProcesses> wrapper);
 
 
+    void updateFileName(@Param("id") Long id, @Param("fileName") String fileName);
+
 }
 }

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/technology/TechnologyProcessLineMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.mapper.technology;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
+
+
+/**
+ * <p>
+ * 工艺线路 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface TechnologyProcessLineMapper extends BaseMapper<TechnologyProcessLine> {
+
+}

+ 8 - 6
hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionProcessesService.java

@@ -1,13 +1,14 @@
 package com.fjhx.mes.service.production;
 package com.fjhx.mes.service.production;
 
 
-import com.fjhx.mes.entity.production.po.ProductionProcesses;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
-import com.fjhx.mes.entity.production.dto.ProductionProcessesSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesDto;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesDto;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.multipart.MultipartFile;
+import com.fjhx.mes.entity.production.dto.ProductionProcessesSelectDto;
+import com.fjhx.mes.entity.production.po.ProductionProcesses;
+import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
+import com.fjhx.mes.entity.work.po.WorkOrder;
+import com.ruoyi.common.core.service.BaseService;
+
+import java.util.List;
 
 
 
 
 /**
 /**
@@ -45,4 +46,5 @@ public interface ProductionProcessesService extends BaseService<ProductionProces
      */
      */
     void delete(Long id);
     void delete(Long id);
 
 
+    List<ProductionProcesses> getBaseProductionProcessesList(WorkOrder workOrder);
 }
 }

+ 51 - 4
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionProcessesServiceImpl.java

@@ -8,12 +8,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.file.entity.ObsFile;
 import com.fjhx.file.entity.ObsFile;
 import com.fjhx.file.service.FileInfoService;
 import com.fjhx.file.service.FileInfoService;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesDto;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesDto;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesSelectDto;
 import com.fjhx.mes.entity.production.dto.ProductionProcessesSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
 import com.fjhx.mes.entity.production.vo.ProductionProcessesVo;
+import com.fjhx.mes.entity.technology.po.Technology;
+import com.fjhx.mes.entity.work.po.WorkOrder;
 import com.fjhx.mes.mapper.production.ProductionProcessesMapper;
 import com.fjhx.mes.mapper.production.ProductionProcessesMapper;
+import com.fjhx.mes.service.applicable.ApplicableProductsService;
 import com.fjhx.mes.service.production.ProductionProcessesService;
 import com.fjhx.mes.service.production.ProductionProcessesService;
+import com.fjhx.mes.service.technology.TechnologyService;
+import com.fjhx.mes.service.work.WorkOrderProductionProcessesService;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -33,7 +40,14 @@ import java.util.List;
 public class ProductionProcessesServiceImpl extends ServiceImpl<ProductionProcessesMapper, ProductionProcesses> implements ProductionProcessesService {
 public class ProductionProcessesServiceImpl extends ServiceImpl<ProductionProcessesMapper, ProductionProcesses> implements ProductionProcessesService {
 
 
     @Autowired
     @Autowired
-    FileInfoService fileInfoService;
+    private FileInfoService fileInfoService;
+    @Autowired
+    private WorkOrderProductionProcessesService workOrderProductionProcessesService;
+    @Autowired
+    private ApplicableProductsService applicableProductsService;
+    @Autowired
+    private TechnologyService technologyService;
+
 
 
     @Override
     @Override
     public Page<ProductionProcessesVo> getPage(ProductionProcessesSelectDto dto) {
     public Page<ProductionProcessesVo> getPage(ProductionProcessesSelectDto dto) {
@@ -54,8 +68,9 @@ public class ProductionProcessesServiceImpl extends ServiceImpl<ProductionProces
     @DSTransactional
     @DSTransactional
     @Override
     @Override
     public void add(ProductionProcessesDto productionProcessesDto) {
     public void add(ProductionProcessesDto productionProcessesDto) {
+//        Assert.notEmpty(productionProcessesDto.getRoleId(),"角色id不能为空");
         List<ObsFile> fileList = productionProcessesDto.getFileList();
         List<ObsFile> fileList = productionProcessesDto.getFileList();
-        if(ObjectUtil.isNotEmpty(fileList)){
+        if (ObjectUtil.isNotEmpty(fileList)) {
             ObsFile obsFile = productionProcessesDto.getFileList().get(0);
             ObsFile obsFile = productionProcessesDto.getFileList().get(0);
             productionProcessesDto.setFileName(obsFile.getFileName());
             productionProcessesDto.setFileName(obsFile.getFileName());
         }
         }
@@ -66,9 +81,16 @@ public class ProductionProcessesServiceImpl extends ServiceImpl<ProductionProces
     @DSTransactional
     @DSTransactional
     @Override
     @Override
     public void edit(ProductionProcessesDto productionProcessesDto) {
     public void edit(ProductionProcessesDto productionProcessesDto) {
-        ObsFile obsFile = productionProcessesDto.getFileList().get(0);
-        productionProcessesDto.setFileName(obsFile.getFileName());
+//        Assert.notEmpty(productionProcessesDto.getRoleId(),"角色id不能为空");
+        List<ObsFile> fileList = productionProcessesDto.getFileList();
+        if (fileList.size() > 0) {
+            ObsFile obsFile = fileList.get(0);
+            productionProcessesDto.setFileName(obsFile.getFileName());
+        } else {
+            productionProcessesDto.setFileName(null);
+        }
         this.updateById(productionProcessesDto);
         this.updateById(productionProcessesDto);
+        baseMapper.updateFileName(productionProcessesDto.getId(), productionProcessesDto.getFileName());
         ObsFileUtil.editFile(productionProcessesDto.getFileList(), productionProcessesDto.getId());
         ObsFileUtil.editFile(productionProcessesDto.getFileList(), productionProcessesDto.getId());
     }
     }
 
 
@@ -79,4 +101,29 @@ public class ProductionProcessesServiceImpl extends ServiceImpl<ProductionProces
         ObsFileUtil.removeFile(id);
         ObsFileUtil.removeFile(id);
     }
     }
 
 
+    /**
+     * 根据工单详细获取基本工序
+     */
+    @Override
+    public List<ProductionProcesses> getBaseProductionProcessesList(WorkOrder workOrder) {
+        ApplicableProducts applicableProducts = applicableProductsService.getOne(q -> q.eq(ApplicableProducts::getProductId, workOrder.getProductId()));
+        if (ObjectUtil.isEmpty(applicableProducts)) {
+            throw new ServiceException("未找到适用于该产品的工艺信息");
+        }
+        Technology technology = technologyService.getById(applicableProducts.getTechnologyId());
+        if (ObjectUtil.isEmpty(technology)) {
+            throw new ServiceException("工艺信息不存在");
+        }
+        String processRoute = technology.getProcessRoute();
+        if (ObjectUtil.isEmpty(processRoute)) {
+            throw new ServiceException("工艺线路为空");
+        }
+        String[] split = processRoute.split(",");
+        //查询工序并自定义排序
+        IWrapper<ProductionProcesses> wrapper = IWrapper.getWrapper();
+        wrapper.in(ProductionProcesses::getId, split);
+        wrapper.orderByAsc("FIELD( id, " + processRoute + ")");
+        return this.list(wrapper);
+    }
+
 }
 }

+ 17 - 0
hx-mes/src/main/java/com/fjhx/mes/service/technology/TechnologyProcessLineService.java

@@ -0,0 +1,17 @@
+package com.fjhx.mes.service.technology;
+
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 工艺线路 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface TechnologyProcessLineService extends BaseService<TechnologyProcessLine> {
+
+}

+ 2 - 0
hx-mes/src/main/java/com/fjhx/mes/service/technology/TechnologyService.java

@@ -38,6 +38,8 @@ public interface TechnologyService extends BaseService<Technology> {
      */
      */
     void edit(TechnologyDto technologyDto);
     void edit(TechnologyDto technologyDto);
 
 
+    void editProduct(TechnologyDto dto);
+
     /**
     /**
      * 工艺删除
      * 工艺删除
      */
      */

+ 21 - 0
hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyProcessLineServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.mes.service.technology.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
+import com.fjhx.mes.mapper.technology.TechnologyProcessLineMapper;
+import com.fjhx.mes.service.technology.TechnologyProcessLineService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 工艺线路 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class TechnologyProcessLineServiceImpl extends ServiceImpl<TechnologyProcessLineMapper, TechnologyProcessLine> implements TechnologyProcessLineService {
+
+}

+ 148 - 39
hx-mes/src/main/java/com/fjhx/mes/service/technology/impl/TechnologyServiceImpl.java

@@ -2,10 +2,12 @@ package com.fjhx.mes.service.technology.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
@@ -13,20 +15,18 @@ import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.technology.dto.TechnologyDto;
 import com.fjhx.mes.entity.technology.dto.TechnologyDto;
 import com.fjhx.mes.entity.technology.dto.TechnologySelectDto;
 import com.fjhx.mes.entity.technology.dto.TechnologySelectDto;
 import com.fjhx.mes.entity.technology.po.Technology;
 import com.fjhx.mes.entity.technology.po.Technology;
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
 import com.fjhx.mes.entity.technology.vo.TechnologyVo;
 import com.fjhx.mes.entity.technology.vo.TechnologyVo;
 import com.fjhx.mes.mapper.technology.TechnologyMapper;
 import com.fjhx.mes.mapper.technology.TechnologyMapper;
 import com.fjhx.mes.service.applicable.ApplicableProductsService;
 import com.fjhx.mes.service.applicable.ApplicableProductsService;
 import com.fjhx.mes.service.production.ProductionProcessesService;
 import com.fjhx.mes.service.production.ProductionProcessesService;
+import com.fjhx.mes.service.technology.TechnologyProcessLineService;
 import com.fjhx.mes.service.technology.TechnologyService;
 import com.fjhx.mes.service.technology.TechnologyService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 
 
@@ -38,7 +38,6 @@ import java.util.stream.Collectors;
  * @author
  * @author
  * @since 2023-03-28
  * @since 2023-03-28
  */
  */
-//@DS(SourceConstant.MES)
 @Service
 @Service
 public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technology> implements TechnologyService {
 public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technology> implements TechnologyService {
 
 
@@ -48,6 +47,8 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
     ApplicableProductsService applicableProductsService;
     ApplicableProductsService applicableProductsService;
     @Autowired
     @Autowired
     ProductInfoService productInfoService;
     ProductInfoService productInfoService;
+    @Autowired
+    private TechnologyProcessLineService technologyProcessLineService;
 
 
     @Override
     @Override
     public Page<TechnologyVo> getPage(TechnologySelectDto dto) {
     public Page<TechnologyVo> getPage(TechnologySelectDto dto) {
@@ -69,11 +70,11 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
                 for (TechnologyVo technologyVo : records) {
                 for (TechnologyVo technologyVo : records) {
                     //处理适用产品列表
                     //处理适用产品列表
                     List<String> productNameList = new ArrayList<>();
                     List<String> productNameList = new ArrayList<>();
-                    List<ApplicableProducts> applicableProductsList1 = applicableProductsMap.get(technologyVo.getId());
+                    List<ApplicableProducts> applicableProductsList1 = applicableProductsMap.getOrDefault(technologyVo.getId(), new ArrayList<>());
                     for (ApplicableProducts applicableProducts : applicableProductsList1) {
                     for (ApplicableProducts applicableProducts : applicableProductsList1) {
                         ProductInfo productInfo = productInfoMap.get(applicableProducts.getProductId());
                         ProductInfo productInfo = productInfoMap.get(applicableProducts.getProductId());
                         if (ObjectUtil.isNotEmpty(productInfo)) {
                         if (ObjectUtil.isNotEmpty(productInfo)) {
-                            productNameList.add(productInfo.getName());
+                            productNameList.add(productInfo.getName() + "(" + productInfo.getSpec() + ")");
                         } else {
                         } else {
                             productNameList.add("未知商品:" + applicableProducts.getProductId());
                             productNameList.add("未知商品:" + applicableProducts.getProductId());
                         }
                         }
@@ -118,60 +119,168 @@ public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technol
 
 
     @Override
     @Override
     public TechnologyVo detail(Long id) {
     public TechnologyVo detail(Long id) {
-        Technology Technology = this.getById(id);
-        TechnologyVo result = BeanUtil.toBean(Technology, TechnologyVo.class);
+        Technology technology = this.getById(id);
+        TechnologyVo result = BeanUtil.toBean(technology, TechnologyVo.class);
         //获取适用产品信息
         //获取适用产品信息
         List<ApplicableProducts> list = applicableProductsService.list(q -> q.eq(ApplicableProducts::getTechnologyId, result.getId()));
         List<ApplicableProducts> list = applicableProductsService.list(q -> q.eq(ApplicableProducts::getTechnologyId, result.getId()));
         List<Long> productList = list.stream().map(ApplicableProducts::getProductId).collect(Collectors.toList());
         List<Long> productList = list.stream().map(ApplicableProducts::getProductId).collect(Collectors.toList());
-        List<ProductInfo> productInfos = productInfoService.listByIds(productList);
-        result.setApplicableProductsList(productInfos);
-        //获取工艺线路信息
-        List<String> processRouteIds = Arrays.asList(result.getProcessRoute().split(","));
-        List<ProductionProcesses> productionProcessesList = productionProcessesService.listByIds(processRouteIds);
-        Map<Long, ProductionProcesses> productionProcessesMap = productionProcessesList.stream()
-                .collect(Collectors.groupingBy(ProductionProcesses::getId,
-                        Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
-        //对工艺线路排序必须按照前端提交的顺序排序
-        List<ProductionProcesses> newProductionProcessesList = new ArrayList<>();
-        for (String processRouteId : processRouteIds) {
-            newProductionProcessesList.add(productionProcessesMap.get(Long.parseLong(processRouteId)));
+        if (ObjectUtil.isNotEmpty(productList)) {
+            List<ProductInfo> productInfos = productInfoService.listByIds(productList);
+            result.setApplicableProductsList(productInfos);
+        } else {
+            result.setApplicableProductsList(new ArrayList<>());
         }
         }
-        result.setProcessRouteList(newProductionProcessesList);
         return result;
         return result;
     }
     }
 
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @Override
     @Override
     public void add(TechnologyDto technologyDto) {
     public void add(TechnologyDto technologyDto) {
-        String join = String.join(",", technologyDto.getProcessRouteList());
-        technologyDto.setProcessRoute(join);
         this.save(technologyDto);
         this.save(technologyDto);
         List<ApplicableProducts> productList = technologyDto.getProductList();
         List<ApplicableProducts> productList = technologyDto.getProductList();
-        for (ApplicableProducts applicableProducts : productList) {
-            applicableProducts.setTechnologyId(technologyDto.getId());
+        if (ObjectUtil.isNotEmpty(productList)) {
+            for (ApplicableProducts applicableProducts : productList) {
+                applicableProducts.setTechnologyId(technologyDto.getId());
+            }
         }
         }
         applicableProductsService.saveBatch(productList);
         applicableProductsService.saveBatch(productList);
+
+        //保存工艺线路列表
+        String processRoute;
+        List<TechnologyProcessLine> technologyProcessLines = analysisJsonData(technologyDto);
+        if (ObjectUtil.isNotEmpty(technologyProcessLines)) {
+            technologyProcessLineService.saveBatch(technologyProcessLines);
+            List<Long> processLineIds = recursionTechnologyProcessLine(technologyProcessLines, Collections.singletonList(1L));
+            processRoute = processLineIds.stream().map(Objects::toString).collect(Collectors.joining(","));
+        } else {
+            processRoute = null;
+        }
+
+        this.update(q -> q.eq(Technology::getId, technologyDto.getId()).set(Technology::getProcessRoute, processRoute));
     }
     }
 
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @Override
     @Override
     public void edit(TechnologyDto technologyDto) {
     public void edit(TechnologyDto technologyDto) {
-        String join = String.join(",", technologyDto.getProcessRouteList());
-        technologyDto.setProcessRoute(join);
         this.updateById(technologyDto);
         this.updateById(technologyDto);
-        List<ApplicableProducts> productList = technologyDto.getProductList();
-        applicableProductsService.remove(q -> q.eq(ApplicableProducts::getTechnologyId, technologyDto.getId()));
-        for (ApplicableProducts applicableProducts : productList) {
-            applicableProducts.setTechnologyId(technologyDto.getId());
+
+        //修改工艺线路列表,只能全删了再创建
+        String processRoute;
+        technologyProcessLineService.remove(q -> q.eq(TechnologyProcessLine::getTechnologyId, technologyDto.getId()));
+        List<TechnologyProcessLine> technologyProcessLines = analysisJsonData(technologyDto);
+        if (ObjectUtil.isNotEmpty(technologyProcessLines)) {
+            technologyProcessLineService.saveBatch(technologyProcessLines);
+            List<Long> processLineIds = recursionTechnologyProcessLine(technologyProcessLines, Collections.singletonList(1L));
+            processRoute = processLineIds.stream().map(Objects::toString).collect(Collectors.joining(","));
+        } else {
+            processRoute = null;
         }
         }
-        applicableProductsService.saveBatch(productList);
+
+        this.update(q -> q.eq(Technology::getId, technologyDto.getId()).set(Technology::getProcessRoute, processRoute));
     }
     }
 
 
-    @Transactional(rollbackFor = Exception.class)
+    /**
+     * 修改工艺适用产品
+     */
+    @Override
+    public void editProduct(TechnologyDto dto) {
+        Long technologyId = dto.getId();
+        Assert.notEmpty(technologyId, "工艺id不能为空");
+        List<ApplicableProducts> productList = dto.getProductList();
+        if (ObjectUtil.isEmpty(productList)) {
+            productList = new ArrayList<>();
+        }
+        productList.forEach(item -> item.setTechnologyId(technologyId));
+        applicableProductsService.editLinked(productList, ApplicableProducts::getTechnologyId, technologyId);
+    }
+
+    /**
+     * 遍历工艺线路
+     *
+     * @return
+     */
+    private List<Long> recursionTechnologyProcessLine(List<TechnologyProcessLine> technologyProcessLines, List<Long> sourceProcessesIds) {
+        List<Long> processIds = new ArrayList<>();
+
+        List<Long> targetProcessesIds = technologyProcessLines.stream()
+                .filter(item -> sourceProcessesIds.contains(item.getSourceProcessesId()))
+                .map(TechnologyProcessLine::getTargetProcessesId)
+                .collect(Collectors.toList());
+
+        if (ObjectUtil.isNotEmpty(targetProcessesIds)) {
+            //过滤掉结束节点
+            List<Long> collect = targetProcessesIds.stream().filter(item -> !Objects.equals(item, 99L)).collect(Collectors.toList());
+            if (ObjectUtil.isNotEmpty(collect)) {
+                processIds.addAll(collect);
+            }
+            processIds.addAll(recursionTechnologyProcessLine(technologyProcessLines, targetProcessesIds));
+        }
+        //去重
+        processIds = processIds.stream().distinct().collect(Collectors.toList());
+        return processIds;
+    }
+
+    @DSTransactional
     @Override
     @Override
     public void delete(Long id) {
     public void delete(Long id) {
         this.removeById(id);
         this.removeById(id);
         applicableProductsService.remove(q -> q.eq(ApplicableProducts::getTechnologyId, id));
         applicableProductsService.remove(q -> q.eq(ApplicableProducts::getTechnologyId, id));
     }
     }
 
 
+    /**
+     * 处理流程图JSON
+     */
+    private List<TechnologyProcessLine> analysisJsonData(TechnologyDto technologyDto) {
+        //读取流程图json信息
+        JSONArray nodeObject = JSONArray.parseArray(technologyDto.getNodeObject());
+        //遍历信息
+        Map<String, JSONObject> nodeMap = new HashMap<>();
+        List<JSONObject> lineList = new ArrayList<>();
+        for (int i = 0; i < nodeObject.size(); i++) {
+            JSONObject json = nodeObject.getJSONObject(i);
+            String shape = json.getString("shape");
+            //节点
+            if (shape.equals("handle-btn")) {
+                nodeMap.put(json.getString("id"), json);
+            }
+            //线
+            if (shape.equals("edge")) {
+                lineList.add(json);
+            }
+        }
+
+        List<TechnologyProcessLine> technologyProcessLineList = new ArrayList<>();
+
+        for (JSONObject jsonObject : lineList) {
+            JSONObject source = jsonObject.getJSONObject("source");
+            String sourceCell = source.getString("cell");
+            JSONObject target = jsonObject.getJSONObject("target");
+            String targetCell = target.getString("cell");
+
+            TechnologyProcessLine technologyProcessLine = new TechnologyProcessLine();
+            //读取源节点信息
+            if (sourceCell.equals("1") || sourceCell.equals("99")) {
+                technologyProcessLine.setSourceProcessesId(Long.parseLong(sourceCell));
+            } else {
+                JSONObject from = nodeMap.get(sourceCell);
+                Assert.notEmpty(from, "查询不到节点信息:" + sourceCell);
+                technologyProcessLine.setSourceProcessesId(from.getLong("productionId"));
+            }
+            //读取目标节点信息
+            if (targetCell.equals("1") || targetCell.equals("99")) {
+                technologyProcessLine.setTargetProcessesId(Long.parseLong(targetCell));
+            } else {
+                JSONObject to = nodeMap.get(targetCell);
+                Assert.notEmpty(to, "查询不到节点信息:" + targetCell);
+                technologyProcessLine.setTargetProcessesId(to.getLong("productionId"));
+            }
+
+            technologyProcessLine.setTechnologyId(technologyDto.getId());
+
+            technologyProcessLineList.add(technologyProcessLine);
+        }
+
+        return technologyProcessLineList;
+    }
+
 }
 }

+ 7 - 8
hx-mes/src/main/resources/mapper/applicable/ApplicableProductsMapper.xml

@@ -2,14 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mes.mapper.applicable.ApplicableProductsMapper">
 <mapper namespace="com.fjhx.mes.mapper.applicable.ApplicableProductsMapper">
     <select id="getPage" resultType="com.fjhx.mes.entity.applicable.vo.ApplicableProductsVo">
     <select id="getPage" resultType="com.fjhx.mes.entity.applicable.vo.ApplicableProductsVo">
-        select
-            ap.id,
-            ap.technology_id,
-            ap.product_id,
-            ap.create_user,
-            ap.create_time,
-            ap.update_user,
-            ap.update_time
+        select ap.id,
+               ap.technology_id,
+               ap.product_id,
+               ap.create_user,
+               ap.create_time,
+               ap.update_user,
+               ap.update_time
         from applicable_products ap
         from applicable_products ap
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>

+ 6 - 0
hx-mes/src/main/resources/mapper/production/ProductionProcessesMapper.xml

@@ -15,4 +15,10 @@
             ${ew.customSqlSegment}
             ${ew.customSqlSegment}
     </select>
     </select>
 
 
+    <update id="updateFileName">
+        update production_processes
+        set file_name = #{fileName}
+        where id = #{id}
+    </update>
+
 </mapper>
 </mapper>

+ 4 - 0
hx-mes/src/main/resources/mapper/technology/TechnologyProcessLineMapper.xml

@@ -0,0 +1,4 @@
+<?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.mes.mapper.technology.TechnologyProcessLineMapper">
+</mapper>