diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java index 56285e73..23860bf1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java @@ -24,6 +24,8 @@ public interface GenCodeService { public String codeDemo(Map form); + public String taskCode(Map form); + public String codeDemo2(Map form); public String queryIdByCode(String code); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java index 7085fbab..8ffd3b99 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java +++ b/mes/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; @@ -166,6 +168,81 @@ public class GenCodeServiceImpl implements GenCodeService { } return demo; } + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public String taskCode(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 + "'", " sort_num,type FOR UPDATE").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.getString("type").equals("01")) { + value = jo.getString("init_value"); + } + //日期判断数据库的值与当前值是否相同来决定顺序的值 + if (jo.getString("type").equals("02")) { + String current_value = jo.getString("current_value"); + Date date = DateUtil.date(); + String format = jo.getString("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.getString("type").equals("03")) { + String num_value = ""; + int step = jo.getInteger("step"); + Long max_value = jo.getLong("max_value"); + if (!is_same || (jo.getLongValue("current_value") + step > max_value)) { + num_value = jo.getString("init_value"); + } else { + num_value = (jo.getInteger("current_value") + step) + ""; + } + int size = num_value.length(); + int length = jo.getInteger("length"); + String fillchar = jo.getString("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.getInteger("init_value"); + if (StrUtil.isEmpty((init_value + ""))) { + throw new BadRequestException("请完善编码数值的初始值!"); + } + jo.put("current_value", init_value + ""); + } else { + int num_curr = jo.getInteger("current_value"); + if (num_curr >= max_value) { + num_curr = jo.getInteger("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 codeDemo2(Map form) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java index 3a8b570d..01ea0087 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java @@ -2,18 +2,24 @@ package org.nl.modules.system.util; import org.nl.modules.system.service.GenCodeService; import org.nl.modules.system.service.impl.GenCodeServiceImpl; +import org.nl.utils.SpringContextHolder; import java.util.HashMap; public class CodeUtil { public static 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); + if ("TASK_CODE".equals(ruleCode)){ + GenCodeServiceImpl service = SpringContextHolder.getBean(GenCodeServiceImpl.class); + return service.taskCode(map); + }else { + GenCodeService service=new GenCodeServiceImpl(); + return service.codeDemo(map); + } } public static String getNewCode2(String ruleCode){