From cfa51be0ceb9a04a1e20b4fba3b4f897c60b611b Mon Sep 17 00:00:00 2001
From: 刘小明 <liuxm_a@163.com>
Date: 星期三, 19 六月 2024 09:49:39 +0800
Subject: [PATCH] 工站编码自动生成

---
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java        |    4 ++--
 pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java |   47 ++++++++++++++++++++++++++++++++++++++++-------
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java   |    2 ++
 pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml                |    3 +++
 4 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java
index da96e81..eadc2a7 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPlt/PltStationMapper.java
@@ -30,4 +30,6 @@
     int deleteLogicById(Long id);
 
     List<PltStation> selectAll();
+
+    String selectMaxCode();
 }
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java
index 3798a85..ebdd309 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPlt/PltStation.java
@@ -41,8 +41,8 @@
     /**
      * 缂栧彿
      */
-    @NotEmpty(message = "缂栧彿涓嶈兘涓虹┖")
-    @Length(message = "缂栧彿蹇呴』{max}浣嶆暟鎹�", min = 4, max = 4)
+//    @NotEmpty(message = "缂栧彿涓嶈兘涓虹┖")
+//    @Length(message = "缂栧彿蹇呴』{max}浣嶆暟鎹�", min = 4, max = 4)
     public String code;
 
     /**
diff --git a/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml
index 3f19405..5e4c28c 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/PltStationMapper.xml
@@ -119,6 +119,9 @@
         <include refid="Base_Column_List" />
         from plt_station where deleted!=1
     </select>
+    <select id="selectMaxCode" resultType="java.lang.String">
+        select max(code) from plt_station
+    </select>
 
     <update id="deleteLogicById" parameterType="java.lang.Long">
         update plt_station set deleted = 1
diff --git a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java
index f3c52cd..3890a5a 100644
--- a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java
+++ b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java
@@ -1,6 +1,7 @@
 package com.dy.pmsPlatform.station;
 
 import cn.hutool.core.codec.Base64;
+import com.alibaba.excel.util.StringUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pmsGlobal.daoPlt.PltStationMapper;
 import com.dy.pmsGlobal.pojoPlt.PltProduct;
@@ -10,6 +11,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -23,6 +25,8 @@
 
     private PltStationMapper dao;
     private static final String stationPrefix = "103" ;
+    private static final String DEFAULT_CODE = "0001";
+    private static final String CODE_FORMAT = "%04d";
 
     @Autowired
     public void setDao(PltStationMapper dao) {
@@ -31,11 +35,40 @@
 
     @Transactional
     public int save(PltStation station) throws RuntimeException {
-        if(dao.selectByCodeId(station.id,station.code)>0){
-            throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�");
-        }
-        int count = dao.insertSelective(station);
+
+//        if(dao.selectByCodeId(station.id,station.code)>0){
+//            throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�");
+//        }
+        int count = 0;
+        int flag=0;
+        do {
+            station.code = getNextCode();
+            try {
+                count = dao.insertSelective(station);
+                return count;
+            } catch (DuplicateKeyException e) {
+                // 濡傛灉鍑虹幇鍞竴绾︽潫杩濆弽寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode骞堕噸璇�
+                log.warn("鎻掑叆宸ョ珯鏃堕亣鍒板敮涓�绾︽潫寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode", e);
+            }
+            flag++;
+        } while (flag<5);
+
         return count;
+    }
+
+    private String getNextCode(){
+        log.info("鑾峰彇宸ョ珯缂栧彿");
+        String maxCode = dao.selectMaxCode();
+        if (StringUtils.isBlank(maxCode)) {
+            return DEFAULT_CODE;
+        } else {
+            int nextCode = Integer.parseInt(maxCode) + 1;
+            // 妫�鏌ユ孩鍑�
+            if (nextCode > 9999) {
+                throw new RuntimeException("宸ョ珯缂栧彿婧㈠嚭");
+            }
+            return String.format(CODE_FORMAT, nextCode);
+        }
     }
 
     /**
@@ -52,9 +85,9 @@
 
     @Transactional
     public int update(PltStation station) throws RuntimeException {
-        if(dao.selectByCodeId(station.id,station.code)>0){
-            throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�");
-        }
+//        if(dao.selectByCodeId(station.id,station.code)>0){
+//            throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�");
+//        }
         int count = dao.updateByPrimaryKeySelective(station);
         return count;
     }

--
Gitblit v1.8.0