diff --git a/nxgx-ifsm-base/src/main/java/com/rootcloud/common/util/OrderNumberUtils.java b/nxgx-ifsm-base/src/main/java/com/rootcloud/common/util/OrderNumberUtils.java index b5517c8..a8e6be0 100644 --- a/nxgx-ifsm-base/src/main/java/com/rootcloud/common/util/OrderNumberUtils.java +++ b/nxgx-ifsm-base/src/main/java/com/rootcloud/common/util/OrderNumberUtils.java @@ -2,23 +2,39 @@ package com.rootcloud.common.util; import java.text.SimpleDateFormat; import java.util.Date; +import javax.annotation.Resource; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +@Component public class OrderNumberUtils { - private static int callCount = 0; - private static String lastDate = ""; - public static String generateOrderNumber() { - String currentDate = new SimpleDateFormat("yyyyMMdd").format(new Date()); + @Resource + private RedisTemplate redisTemplate; - if (!currentDate.equals(lastDate)) { - callCount = 0; - lastDate = currentDate; - } - - callCount++; - - return currentDate + String.format("%03d", callCount); + public String generateOrderNumber() { + /* 由于之前人员将订单seq数据存储在内存中,服务重启后seq失效清零,导致后续订单从0开始,编码重复,现存入redis中 + * 逻辑修改为:每次自然天增加后,重置seq为0,且将seq,自然天等数据存入redis + * */ + int callCount = (int) (redisTemplate.opsForValue().get("orderSeq") == null ? 0 : + redisTemplate.opsForValue().get("orderSeq")); + // 当前日期 + String currentDate = + new SimpleDateFormat("yyyyMMdd").format(new Date()); + // 上次日期 + String lastDate = + (String) (redisTemplate.opsForValue().get("orderLastDate") == null ? currentDate : + redisTemplate.opsForValue().get("orderLastDate")); + redisTemplate.opsForValue().set("orderLastDate", currentDate); + if (!currentDate.equals(lastDate)) { + callCount = 0; + redisTemplate.opsForValue().set("orderLastDate", currentDate); } + callCount++; + redisTemplate.opsForValue().set("orderSeq", callCount); + return currentDate + String.format("%03d", callCount); + } + } diff --git a/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/order/OrderServiceImpl.java b/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/order/OrderServiceImpl.java index 4101964..bcc1e44 100644 --- a/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/order/OrderServiceImpl.java +++ b/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/order/OrderServiceImpl.java @@ -1058,7 +1058,7 @@ public class OrderServiceImpl extends ServiceImpl order.setOrderServicetypeCode(ServicePlanEnums.MessageType.TRANSFORMATION.getCode()); order.setOrderServicetypeName(ServicePlanEnums.MessageType.TRANSFORMATION.getDesc()); } - orderNum.append(OrderNumberUtils.generateOrderNumber()); + orderNum.append(orderNumberUtils.generateOrderNumber()); order.setOrderOrdernumber(orderNum.toString()); order.setOrderSource("app"); order.setOrderDevicecode(deviceDataVo.getSblbSbbm()); @@ -1245,7 +1245,7 @@ public class OrderServiceImpl extends ServiceImpl order.setOrderServicetypeCode(ServicePlanEnums.MessageType.INSPECTION.getCode()); order.setOrderServicetypeName(ServicePlanEnums.MessageType.INSPECTION.getDesc()); } - orderNum.append(OrderNumberUtils.generateOrderNumber()); + orderNum.append(orderNumberUtils.generateOrderNumber()); order.setOrderOrdernumber(orderNum.toString()); order.setOrderSource("app"); order.setOrderDevicecode(deviceDataVo.getSblbSbbm()); @@ -1369,6 +1369,8 @@ public class OrderServiceImpl extends ServiceImpl return JsonResult.success(); } + @Resource + OrderNumberUtils orderNumberUtils; @Override public JsonResult createOrder3(OrderParam param) throws Exception { String deviceIds = param.getDeviceIds(); @@ -1442,7 +1444,7 @@ public class OrderServiceImpl extends ServiceImpl order.setOrderServicetypeCode(ServicePlanEnums.MessageType.INSPECTION.getCode()); order.setOrderServicetypeName(ServicePlanEnums.MessageType.INSPECTION.getDesc()); } - orderNum.append(OrderNumberUtils.generateOrderNumber()); + orderNum.append(orderNumberUtils.generateOrderNumber()); order.setOrderOrdernumber(orderNum.toString()); order.setOrderSource("app"); order.setOrderDevicecode(deviceDataVo.getSblbSbbm()); diff --git a/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/sp/impl/ServicePlanServiceImpl.java b/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/sp/impl/ServicePlanServiceImpl.java index e2abd10..a86a0ea 100644 --- a/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/sp/impl/ServicePlanServiceImpl.java +++ b/nxgx-ifsm-base/src/main/java/com/rootcloud/domain/service/sp/impl/ServicePlanServiceImpl.java @@ -1359,6 +1359,8 @@ public class ServicePlanServiceImpl extends ServiceImpl propertyIds = new ArrayList<>();