From 4863b97248b8af690d816cf33f9346bf3f42e841 Mon Sep 17 00:00:00 2001 From: ludj Date: Thu, 16 Mar 2023 17:51:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GenCodeServiceImpl.java | 145 +++++++++--------- .../org/nl/modules/system/util/CodeUtil.java | 17 +- .../src/main/resources/logback-spring.xml | 4 +- 3 files changed, 86 insertions(+), 80 deletions(-) diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java index 522acba..7bbdfe5 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java @@ -15,6 +15,8 @@ import org.nl.wql.util.WqlUtil; import org.springframework.cache.annotation.CacheConfig; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.HashMap; @@ -80,79 +82,80 @@ public class GenCodeServiceImpl implements GenCodeService { } @Override + @Transactional(propagation= Propagation.REQUIRES_NEW) public String codeDemo(Map form) { String code = (String) form.get("code"); - String id = this.queryIdByCode(code); - //如果flag=1就执行更新数据库的操作 - String flag = (String) form.get("flag"); - WQLObject wo = WQLObject.getWQLObject("sys_code_rule_detail"); - JSONArray ja = wo.query("code_rule_id = '" + id + "' order by sort_num,type").getResultJSONArray(0); - String demo = ""; - boolean is_same = true; - for (int i = 0; i < ja.size(); i++) { - String value = ""; - JSONObject jo = ja.getJSONObject(i); - //固定直接取值 - if (jo.optString("type").equals("01")) { - value = jo.optString("init_value"); - } - //日期判断数据库的值与当前值是否相同来决定顺序的值 - if (jo.optString("type").equals("02")) { - String current_value = jo.optString("current_value"); - Date date = DateUtil.date(); - String format = jo.optString("format"); - String now_date = DateUtil.format(date, format); - if (!now_date.equals(current_value)) { - is_same = false; - } - if (flag.equals("1")) { - jo.put("init_value", now_date); - jo.put("current_value", now_date); - } - value = now_date; - } - //顺序的值:如果日期一样就+步长,等于最大值就归为初始值;日期不一样就归为初始值 - if (jo.optString("type").equals("03")) { - String num_value = ""; - int step = jo.optInt("step"); - int max_value = jo.optInt("max_value"); - if (!is_same || (jo.optInt("current_value") + step > max_value)) { - num_value = jo.optString("init_value"); - } else { - num_value = (jo.optInt("current_value") + step) + ""; - } - int size = num_value.length(); - int length = jo.optInt("length"); - String fillchar = jo.optString("fillchar"); - for (int m = 0; m < (length - size); m++) { - value += fillchar; - } - value += num_value; - if (flag.equals("1")) { - if (!is_same) { - int init_value = jo.optInt("init_value"); - if (StrUtil.isEmpty((init_value + ""))) { - throw new BadRequestException("请完善编码数值的初始值!"); - } - jo.put("current_value", init_value + ""); - } else { - int num_curr = jo.optInt("current_value"); - if (num_curr >= max_value) { - num_curr = jo.optInt("init_value"); - jo.put("current_value", num_curr + ""); - }else{ - jo.put("current_value", (num_curr + step) + ""); - } - } - } - } - demo += value; - if (flag.equals("1")) { - wo.update(jo); - } - } - return demo; - } + String id = this.queryIdByCode(code); + //如果flag=1就执行更新数据库的操作 + String flag = (String) form.get("flag"); + WQLObject wo = WQLObject.getWQLObject("sys_code_rule_detail"); + JSONArray ja = wo.query("code_rule_id = '" + id + "' order by sort_num,type").getResultJSONArray(0); + String demo = ""; + boolean is_same = true; + for (int i = 0; i < ja.size(); i++) { + String value = ""; + JSONObject jo = ja.getJSONObject(i); + //固定直接取值 + if (jo.optString("type").equals("01")) { + value = jo.optString("init_value"); + } + //日期判断数据库的值与当前值是否相同来决定顺序的值 + if (jo.optString("type").equals("02")) { + String current_value = jo.optString("current_value"); + Date date = DateUtil.date(); + String format = jo.optString("format"); + String now_date = DateUtil.format(date, format); + if (!now_date.equals(current_value)) { + is_same = false; + } + if (flag.equals("1")) { + jo.put("init_value", now_date); + jo.put("current_value", now_date); + } + value = now_date; + } + //顺序的值:如果日期一样就+步长,等于最大值就归为初始值;日期不一样就归为初始值 + if (jo.optString("type").equals("03")) { + String num_value = ""; + int step = jo.optInt("step"); + int max_value = jo.optInt("max_value"); + if (!is_same || (jo.optInt("current_value") + step > max_value)) { + num_value = jo.optString("init_value"); + } else { + num_value = (jo.optInt("current_value") + step) + ""; + } + int size = num_value.length(); + int length = jo.optInt("length"); + String fillchar = jo.optString("fillchar"); + for (int m = 0; m < (length - size); m++) { + value += fillchar; + } + value += num_value; + if (flag.equals("1")) { + if (!is_same) { + int init_value = jo.optInt("init_value"); + if (StrUtil.isEmpty((init_value + ""))) { + throw new BadRequestException("请完善编码数值的初始值!"); + } + jo.put("current_value", init_value + ""); + } else { + int num_curr = jo.optInt("current_value"); + if (num_curr >= max_value) { + num_curr = jo.optInt("init_value"); + jo.put("current_value", num_curr + ""); + }else{ + jo.put("current_value", (num_curr + step) + ""); + } + } + } + } + demo += value; + if (flag.equals("1")) { + wo.update(jo); + } + } + return demo; + } @Override public String queryIdByCode(String code) { diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java index 982cd1b..e32a965 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java @@ -7,13 +7,16 @@ import java.util.HashMap; public class CodeUtil { - public static synchronized String getNewCode(String ruleCode){ - GenCodeService service=new GenCodeServiceImpl(); - String flag = "1"; - HashMap map = new HashMap<>(); - map.put("flag",flag); - map.put("code",ruleCode); - return service.codeDemo(map); + public static String getNewCode(String ruleCode) { + synchronized (ruleCode) { + GenCodeService service = new GenCodeServiceImpl(); + String flag = "1"; + HashMap map = new HashMap<>(); + map.put("flag", flag); + map.put("code", ruleCode); + return service.codeDemo(map); + } + } } diff --git a/wms/hd/nladmin-system/src/main/resources/logback-spring.xml b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml index 7169ebb..dc03376 100644 --- a/wms/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -21,7 +21,7 @@ https://juejin.cn/post/6844903775631572999 ${log.pattern} - ${log.charset} + @@ -105,7 +105,7 @@ https://juejin.cn/post/6844903775631572999 - +