mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
完善单号生成规则
This commit is contained in:
@@ -65,8 +65,8 @@ public class OrderNoRuleController {
|
||||
|
||||
|
||||
@PostMapping("/previewOrderNo")
|
||||
public R<String> previewOrderNo(@RequestBody IdRequest request) {
|
||||
return R.success(this.service.previewOrderNo(request.getId()));
|
||||
public R<String> previewOrderNo(@RequestBody OrderNoRuleDto request) {
|
||||
return R.success(this.service.previewOrderNo(request));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import jakarta.persistence.criteria.Root;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -34,14 +35,21 @@ public class OrderNoGenService {
|
||||
OrderNoRuleEntity rule = getOrderNoRuleEntity(ruleCode, orgId);
|
||||
if (rule == null) return null;
|
||||
|
||||
|
||||
|
||||
String ruleTemplate = rule.getRuleTemplate();
|
||||
return genOrderNo(ruleCode, orgId, ruleTemplate);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public @NotNull String genOrderNo(String ruleCode, String orgId, String ruleTemplate) {
|
||||
|
||||
RuleTemplateUtils.ResolveContext context = new RuleTemplateUtils.ResolveContext();
|
||||
context.setDateTime(LocalDateTime.now());
|
||||
|
||||
RuleTemplateUtils.genNo(
|
||||
rule.getRuleTemplate(),
|
||||
return RuleTemplateUtils.genNo(
|
||||
ruleTemplate,
|
||||
RuleTemplateUtils.CompositePlaceholderResolver.of(
|
||||
RuleTemplateUtils.DatePlaceholderResolver.INSTANCE,
|
||||
RuleTemplateUtils.RandomPlaceholderResolver.INSTANCE,
|
||||
new RuleTemplateUtils.PlaceholderResolver() {
|
||||
@Override
|
||||
public Boolean support(String placeholder) {
|
||||
@@ -54,18 +62,16 @@ public class OrderNoGenService {
|
||||
|
||||
String current = context.get("current").toString();
|
||||
|
||||
|
||||
String key = orgId + ":" + ruleCode + ":" + current;
|
||||
|
||||
Long seq = redissonClient.getAtomicLong(key).incrementAndGet();
|
||||
|
||||
return String.format("%0" + placeholder.substring(4) + "d", seq);
|
||||
}
|
||||
|
||||
}),
|
||||
},
|
||||
RuleTemplateUtils.DatePlaceholderResolver.INSTANCE,
|
||||
RuleTemplateUtils.RandomPlaceholderResolver.INSTANCE),
|
||||
context);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private @Nullable OrderNoRuleEntity getOrderNoRuleEntity(String ruleCode, String orgId) {
|
||||
|
||||
@@ -89,8 +89,11 @@ public class OrderNoRuleService extends BaseService<OrderNoRuleEntity, OrderNoRu
|
||||
}
|
||||
|
||||
|
||||
public String previewOrderNo(String ruleCode) {
|
||||
return genOrderNo(ruleCode, Ctx.currentUser().getOrganizationId() + "-preview" );
|
||||
public String previewOrderNo(OrderNoRuleDto ruleCode) {
|
||||
return orderNoGenService.genOrderNo(
|
||||
ruleCode.getCode(),
|
||||
Ctx.currentUser().getOrganizationId() + "-preview",
|
||||
ruleCode.getRuleTemplate());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user