Просмотр исходного кода

fix:工艺路查询接口补充详细质检方案、删除设备或质检方案前先检查是否被工艺引用

lumaojun 1 месяц назад
Родитель
Сommit
b92a05525f

+ 19 - 82
easydo-mes/src/main/java/easydo/technology/controller/DeviceController.java

@@ -1,8 +1,7 @@
 package easydo.technology.controller;
 package easydo.technology.controller;
 
 
-import easydo.technology.components.JdbcClient;
 import easydo.technology.model.Device;
 import easydo.technology.model.Device;
-import easydo.technology.service.FlowNoService;
+import easydo.technology.service.DeviceService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -11,10 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.sql.DataSource;
-import java.sql.Connection;
 import java.util.HashMap;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 @RestController
 @RestController
@@ -22,100 +18,41 @@ import java.util.Map;
 public class DeviceController {
 public class DeviceController {
 
 
     @Resource
     @Resource
-    private JdbcClient jdbcClient;
-
-    @Resource
-    private DataSource dataSource;
-
-    @Resource
-    FlowNoService flowNoService;
+    private DeviceService deviceService;
 
 
     @PostMapping(value = "/getPage")
     @PostMapping(value = "/getPage")
-    public Object getPage(@RequestBody(required = false) Map<String, Object> map) {
-        try {
-            if (map == null) {
-                map = new HashMap<>();
-            }
-            // 分页查询设备信息
-            Map<String, Object> page = jdbcClient.getJdbcPage(map, Device.class);
-            if (page.get("records") == null) {
-                page.put("records", new java.util.ArrayList<>());
-            }
-            return new ResponseEntity<>(page, HttpStatus.OK);
-        } catch (Exception e) {
-            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+    public Object getPage(@RequestBody(required = false) Map<String, Object> map) throws Exception {
+        if (map == null) {
+            map = new HashMap<>();
         }
         }
+        Object page = deviceService.getPage(map);
+        return new ResponseEntity<>(page, HttpStatus.OK);
     }
     }
 
 
     @PostMapping(value = "/getList")
     @PostMapping(value = "/getList")
-    public Object getList(@RequestBody(required = false) Map<String, Object> map) {
-        try {
-            if (map == null) {
-                map = new HashMap<>();
-            }
-            // 全量查询设备信息
-            List<Device> list = jdbcClient.getJdbcList(map, Device.class);
-            return new ResponseEntity<>(list, HttpStatus.OK);
-        } catch (Exception e) {
-            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+    public Object getList(@RequestBody(required = false) Map<String, Object> map) throws Exception {
+        if (map == null) {
+            map = new HashMap<>();
         }
         }
+        Object list = deviceService.getList(map);
+        return new ResponseEntity<>(list, HttpStatus.OK);
     }
     }
 
 
     @PostMapping(value = "/save")
     @PostMapping(value = "/save")
     public Object save(@RequestBody Device model) throws Exception {
     public Object save(@RequestBody Device model) throws Exception {
-        Connection connection = dataSource.getConnection();
-        try {
-            connection.setAutoCommit(false); // 开启事务
-
-            // 对齐 Go 逻辑:直接新增记录,不处理自动编码生成
-            jdbcClient.jdbcInsert(model, connection);
-
-            connection.commit(); // 提交事务
-            return new ResponseEntity<>(model, HttpStatus.OK);
-        } catch (Exception e) {
-            if (connection != null) {
-                connection.rollback(); // 异常回滚
-            }
-            throw e;
-        } finally {
-            if (connection != null) {
-                connection.close();
-            }
-        }
+        Object result = deviceService.save(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 
 
     @PostMapping(value = "/update")
     @PostMapping(value = "/update")
-    public Object update(@RequestBody Device model) {
-        try {
-            // 根据ID修改设备信息
-            jdbcClient.jdbcUpdateById(model);
-            return new ResponseEntity<>(model, HttpStatus.OK);
-        } catch (Exception e) {
-            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
-        }
+    public Object update(@RequestBody Device model) throws Exception {
+        Object result = deviceService.update(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 
 
     @PostMapping(value = "/remove")
     @PostMapping(value = "/remove")
     public Object remove(@RequestBody Device model) throws Exception {
     public Object remove(@RequestBody Device model) throws Exception {
-        Connection connection = dataSource.getConnection();
-        try {
-            connection.setAutoCommit(false); // 开启事务 (对齐Go版)
-
-            // 根据ID删除设备记录
-            jdbcClient.jdbcRemoveById(model, connection);
-
-            connection.commit(); // 提交事务
-            return new ResponseEntity<>(model, HttpStatus.OK);
-        } catch (Exception e) {
-            if (connection != null) {
-                connection.rollback();
-            }
-            throw e;
-        } finally {
-            if (connection != null) {
-                connection.close();
-            }
-        }
+        Object result = deviceService.remove(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 }
 }
-

+ 13 - 80
easydo-mes/src/main/java/easydo/technology/controller/QualityInspectProgramController.java

@@ -1,12 +1,7 @@
 package easydo.technology.controller;
 package easydo.technology.controller;
 
 
-import easydo.technology.components.JdbcClient;
-import easydo.technology.enums.MESEnum;
-import easydo.technology.exception.BizException;
 import easydo.technology.model.QualityInspectProgram;
 import easydo.technology.model.QualityInspectProgram;
-import easydo.technology.service.FlowNoService;
-import easydo.technology.system.model.SysUser;
-import easydo.technology.utils.StringUtil;
+import easydo.technology.service.QualityInspectProgramService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -14,104 +9,42 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 @RestController
 @RestController
 @RequestMapping("/qualityInspectProgram")
 @RequestMapping("/qualityInspectProgram")
 public class QualityInspectProgramController {
 public class QualityInspectProgramController {
+
     @Resource
     @Resource
-    JdbcClient jdbcClient;
-    @Resource
-    DataSource dataSource;
-    @Resource
-    FlowNoService flowNoService;
+    QualityInspectProgramService qualityInspectProgramService;
 
 
     @RequestMapping(value = "/getList")
     @RequestMapping(value = "/getList")
     public Object getList(@RequestBody Map<String, Object> map) throws Exception {
     public Object getList(@RequestBody Map<String, Object> map) throws Exception {
-        List<QualityInspectProgram> list = jdbcClient.getJdbcList(map, QualityInspectProgram.class);
+        Object list = qualityInspectProgramService.getList(map);
         return new ResponseEntity<>(list, HttpStatus.OK);
         return new ResponseEntity<>(list, HttpStatus.OK);
     }
     }
 
 
     @RequestMapping(value = "/getPage")
     @RequestMapping(value = "/getPage")
     public Object getPage(@RequestBody Map<String, Object> map) throws Exception {
     public Object getPage(@RequestBody Map<String, Object> map) throws Exception {
-        Connection connection = dataSource.getConnection();
-        try {
-            Map<String, Object> recordsPage = jdbcClient.getJdbcPage(map, QualityInspectProgram.class, connection);
-            List<QualityInspectProgram> records = (List<QualityInspectProgram>) recordsPage.get("records");
-            for (QualityInspectProgram model : records) {
-                jdbcClient.getMinioFile(model, connection);
-
-                SysUser inspectUser = new SysUser();
-                inspectUser.setId(model.getInspectUserId());
-                inspectUser = jdbcClient.getJdbcModelById(inspectUser,connection);
-                model.setInspectUserName(inspectUser.getNickName());
-
-                SysUser reviewUser = new SysUser();
-                reviewUser.setId(model.getReviewUserId());
-                reviewUser = jdbcClient.getJdbcModelById(reviewUser, connection);
-                model.setReviewUserName(reviewUser.getNickName());
-            }
-            return new ResponseEntity<>(recordsPage, HttpStatus.OK);
-        } catch (Exception e) {
-            throw new BizException(e.getMessage());
-        } finally {
-            connection.close();
-        }
+        Object page = qualityInspectProgramService.getPage(map);
+        return new ResponseEntity<>(page, HttpStatus.OK);
     }
     }
 
 
-
     @RequestMapping(value = "/save")
     @RequestMapping(value = "/save")
-    public Object add(@RequestBody QualityInspectProgram model) throws Exception {
-        Connection connection = dataSource.getConnection();
-        try {
-            connection.setAutoCommit(false);
-            model.setCode(flowNoService.generateQualityCode(model, connection));
-            jdbcClient.jdbcInsert(model, connection);
-            connection.commit();
-            return new ResponseEntity<>(model, HttpStatus.OK);
-        } catch (Exception e) {
-            connection.rollback();
-            throw new BizException(e.getMessage());
-        } finally {
-            connection.close();
-        }
+    public Object save(@RequestBody QualityInspectProgram model) throws Exception {
+        Object result = qualityInspectProgramService.save(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 
 
-
     @RequestMapping(value = "/update")
     @RequestMapping(value = "/update")
     public Object update(@RequestBody QualityInspectProgram model) throws Exception {
     public Object update(@RequestBody QualityInspectProgram model) throws Exception {
-        jdbcClient.jdbcUpdateById(model);
-        return new ResponseEntity<>(HttpStatus.OK);
+        Object result = qualityInspectProgramService.update(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 
 
     @RequestMapping(value = "/remove")
     @RequestMapping(value = "/remove")
     public Object remove(@RequestBody QualityInspectProgram model) throws Exception {
     public Object remove(@RequestBody QualityInspectProgram model) throws Exception {
-        jdbcClient.jdbcRemoveById(model);
-        return new ResponseEntity<>(HttpStatus.OK);
-    }
-
-    private synchronized void generateCode(QualityInspectProgram model, Connection connection) throws Exception {
-        if (StringUtil.isEmpty(model.getCode())) {
-            while (true) {
-                String flowNo = flowNoService.getFlowNo(MESEnum.FLOW_NO_TYPE_QUALITY_INSPECT_PROGRAM.getValue(), connection);
-                QualityInspectProgram param = new QualityInspectProgram();
-                param.setCode(flowNo);
-                int count = jdbcClient.getJdbcCount(param, connection);
-                if (count == 0) {
-                    model.setCode(flowNo);
-                    break;
-                }
-            }
-        } else {
-            QualityInspectProgram param = new QualityInspectProgram();
-            param.setCode(model.getCode());
-            int count = jdbcClient.getJdbcCount(param, connection);
-            if (count > 0) {
-                throw new BizException("编号已存在,请重新填写");
-            }
-        }
+        Object result = qualityInspectProgramService.remove(model);
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
     }
 }
 }

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/model/QualityInspectProgram.java

@@ -23,6 +23,7 @@ public class QualityInspectProgram extends CommonModel{
     private Integer sampleRate;
     private Integer sampleRate;
     private Integer passedRate;
     private Integer passedRate;
     private String tenantId;
     private String tenantId;
+    private Long createId;
 
 
     @NotTableField
     @NotTableField
     private String inspectUserName;
     private String inspectUserName;

+ 13 - 0
easydo-mes/src/main/java/easydo/technology/service/DeviceService.java

@@ -0,0 +1,13 @@
+package easydo.technology.service;
+
+import easydo.technology.model.Device;
+import java.util.Map;
+
+public interface DeviceService {
+    Object getPage(Map<String, Object> map) throws Exception;
+    Object getList(Map<String, Object> map) throws Exception;
+    Object save(Device model) throws Exception;
+    Object update(Device model) throws Exception;
+    Object remove(Device model) throws Exception;
+}
+

+ 13 - 0
easydo-mes/src/main/java/easydo/technology/service/QualityInspectProgramService.java

@@ -0,0 +1,13 @@
+package easydo.technology.service;
+
+import easydo.technology.model.QualityInspectProgram;
+import java.util.Map;
+
+public interface QualityInspectProgramService {
+    Object getList(Map<String, Object> map) throws Exception;
+    Object getPage(Map<String, Object> map) throws Exception;
+    Object save(QualityInspectProgram model) throws Exception;
+    Object update(QualityInspectProgram model) throws Exception;
+    Object remove(QualityInspectProgram model) throws Exception;
+}
+

+ 87 - 0
easydo-mes/src/main/java/easydo/technology/service/impl/DeviceServiceImpl.java

@@ -0,0 +1,87 @@
+package easydo.technology.service.impl;
+
+import easydo.technology.components.JdbcClient;
+import easydo.technology.exception.BizException;
+import easydo.technology.model.Device;
+import easydo.technology.service.DeviceService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+    @Resource
+    private JdbcClient jdbcClient;
+
+    @Resource
+    private DataSource dataSource;
+
+    @Override
+    public Object getPage(Map<String, Object> map) throws Exception {
+        return jdbcClient.getJdbcPage(map, Device.class);
+    }
+
+    @Override
+    public Object getList(Map<String, Object> map) throws Exception {
+        return jdbcClient.getJdbcList(map, Device.class);
+    }
+
+    @Override
+    public Object save(Device model) throws Exception {
+        Connection connection = dataSource.getConnection();
+        try {
+            connection.setAutoCommit(false);
+            jdbcClient.jdbcInsert(model, connection);
+            connection.commit();
+            return model;
+        } catch (Exception e) {
+            if (connection != null) connection.rollback();
+            throw e;
+        } finally {
+            if (connection != null) connection.close();
+        }
+    }
+
+    @Override
+    public Object update(Device model) throws Exception {
+        jdbcClient.jdbcUpdateById(model);
+        return model;
+    }
+
+    @Override
+    public Object remove(Device model) throws Exception {
+        Connection connection = dataSource.getConnection();
+        try {
+            connection.setAutoCommit(false);
+
+            // 校验:工艺路线明细是否关联此设备 (device_list 存储为 ["id1", "id2"])
+            // 利用 ResultSetUtil 的 _like 后缀实现包含查询: device_list like '%"ID"%'
+            Map<String, Object> checkMap = new HashMap<>();
+            checkMap.put("deviceList_like", "\"" + model.getId() + "\"");
+            
+            // 注意:这里需要指定表名或通过已有模型 ProcessRouteDetail 统计
+            // 由于 JdbcClient.getJdbcCountByMap 接收 Class,我们直接查 ProcessRouteDetail.class
+            int count = jdbcClient.getJdbcCountByMap(checkMap, easydo.technology.model.ProcessRouteDetail.class, connection);
+            
+            if (count > 0) {
+                throw new BizException("当前设备已被工艺路线引用,不允许删除");
+            }
+
+            jdbcClient.jdbcRemoveById(model, connection);
+            connection.commit();
+            return model;
+        } catch (Exception e) {
+            if (connection != null) connection.rollback();
+            throw e;
+        } finally {
+            if (connection != null) connection.close();
+        }
+    }
+}
+

+ 33 - 1
easydo-mes/src/main/java/easydo/technology/service/impl/ProcessRouteServiceImpl.java

@@ -3,6 +3,7 @@ package easydo.technology.service.impl;
 import easydo.technology.components.JdbcClient;
 import easydo.technology.components.JdbcClient;
 import easydo.technology.enums.MESEnum;
 import easydo.technology.enums.MESEnum;
 import easydo.technology.model.*;
 import easydo.technology.model.*;
+import easydo.technology.system.model.SysUser;
 import easydo.technology.service.FlowNoService;
 import easydo.technology.service.FlowNoService;
 import easydo.technology.service.ProcessRouteService;
 import easydo.technology.service.ProcessRouteService;
 import easydo.technology.utils.SecurityUtils;
 import easydo.technology.utils.SecurityUtils;
@@ -101,7 +102,38 @@ public class ProcessRouteServiceImpl implements ProcessRouteService {
         if (StringUtil.isNotEmpty(model.getInspectProgramId())) {
         if (StringUtil.isNotEmpty(model.getInspectProgramId())) {
             QualityInspectProgram inspectProgram = new QualityInspectProgram();
             QualityInspectProgram inspectProgram = new QualityInspectProgram();
             inspectProgram.setId(model.getInspectProgramId());
             inspectProgram.setId(model.getInspectProgramId());
-            model.setInspectProgram(jdbcClient.getJdbcModelById(inspectProgram, connection));
+            inspectProgram = jdbcClient.getJdbcModelById(inspectProgram, connection);
+
+            if (inspectProgram != null) {
+                if (inspectProgram.getInspectUserId() != null) {
+                    SysUser inspectUser = new SysUser();
+                    inspectUser.setId(inspectProgram.getInspectUserId());
+                    inspectUser = jdbcClient.getJdbcModelById(inspectUser, connection);
+                    if (inspectUser != null) {
+                        inspectProgram.setInspectUserName(inspectUser.getNickName());
+                    }
+                }
+
+                if (inspectProgram.getReviewUserId() != null) {
+                    SysUser reviewUser = new SysUser();
+                    reviewUser.setId(inspectProgram.getReviewUserId());
+                    reviewUser = jdbcClient.getJdbcModelById(reviewUser, connection);
+                    if (reviewUser != null) {
+                        inspectProgram.setReviewUserName(reviewUser.getNickName());
+                    }
+                }
+
+                // 补齐质检方案自身的附件回填(质检方案可能已被删除或 id 为空,避免 NPE)
+                try {
+                    if (StringUtil.isNotEmpty(inspectProgram.getId())) {
+                        jdbcClient.getMinioFile(inspectProgram, connection);
+                    }
+                } catch (Exception ignore) {
+                    // 忽略附件回填异常
+                }
+            }
+
+            model.setInspectProgram(inspectProgram);
         }
         }
     }
     }
 
 

+ 92 - 0
easydo-mes/src/main/java/easydo/technology/service/impl/QualityInspectProgramServiceImpl.java

@@ -0,0 +1,92 @@
+package easydo.technology.service.impl;
+
+import easydo.technology.components.JdbcClient;
+import easydo.technology.exception.BizException;
+import easydo.technology.model.ProcessRoute;
+import easydo.technology.model.QualityInspectProgram;
+import easydo.technology.service.FlowNoService;
+import easydo.technology.service.QualityInspectProgramService;
+import easydo.technology.utils.SecurityUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class QualityInspectProgramServiceImpl implements QualityInspectProgramService {
+
+    @Resource
+    JdbcClient jdbcClient;
+    @Resource
+    DataSource dataSource;
+    @Resource
+    FlowNoService flowNoService;
+
+    @Override
+    public Object getList(Map<String, Object> map) throws Exception {
+        return jdbcClient.getJdbcList(map, QualityInspectProgram.class);
+    }
+
+    @Override
+    public Object getPage(Map<String, Object> map) throws Exception {
+        Connection connection = dataSource.getConnection();
+        try {
+            return jdbcClient.getJdbcPage(map, QualityInspectProgram.class, connection);
+        } finally {
+            connection.close();
+        }
+    }
+
+    @Override
+    public Object save(QualityInspectProgram model) throws Exception {
+        Connection connection = dataSource.getConnection();
+        try {
+            connection.setAutoCommit(false);
+            model.setCreateId(SecurityUtils.getCurrentUserId());
+            model.setCode(flowNoService.generateQualityCode(model, connection));
+            jdbcClient.jdbcInsert(model, connection);
+            connection.commit();
+            return model;
+        } catch (Exception e) {
+            connection.rollback();
+            throw e;
+        } finally {
+            connection.close();
+        }
+    }
+
+    @Override
+    public Object update(QualityInspectProgram model) throws Exception {
+        jdbcClient.jdbcUpdateById(model);
+        return model;
+    }
+
+    @Override
+    public Object remove(QualityInspectProgram model) throws Exception {
+        Connection connection = dataSource.getConnection();
+        try {
+            connection.setAutoCommit(false);
+
+            // 校验:工艺路线是否关联
+            ProcessRoute route = new ProcessRoute();
+            route.setInspectProgramId(model.getId());
+            int count = jdbcClient.getJdbcCount(route, connection);
+            if (count > 0) {
+                throw new BizException("当前质检方案已被工艺路线引用,不允许删除");
+            }
+
+            jdbcClient.jdbcRemoveById(model, connection);
+            connection.commit();
+            return model;
+        } catch (Exception e) {
+            connection.rollback();
+            throw e;
+        } finally {
+            connection.close();
+        }
+    }
+}
+