完善单号生成规则

This commit is contained in:
2024-10-31 21:33:01 +08:00
parent f291bdceba
commit fdf227a794
3 changed files with 23 additions and 14 deletions

View File

@@ -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));
}
}

View File

@@ -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) {

View File

@@ -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());
}