feat: 单号生成添加日期参数作为上下文, 支持用户录入历史单据时生成单号

This commit is contained in:
2024-11-23 21:31:03 +08:00
parent 8792b4746b
commit 5962b09d66
5 changed files with 43 additions and 23 deletions

View File

@@ -5,10 +5,7 @@ import cn.lihongjie.coal.annotation.SysLog;
import cn.lihongjie.coal.base.dto.CommonQuery;
import cn.lihongjie.coal.base.dto.IdRequest;
import cn.lihongjie.coal.base.dto.R;
import cn.lihongjie.coal.orderNoRule.dto.CreateOrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.OrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.UpdateOrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.UpdateOrderSeqRequest;
import cn.lihongjie.coal.orderNoRule.dto.*;
import cn.lihongjie.coal.orderNoRule.service.OrderNoRuleService;
import lombok.extern.slf4j.Slf4j;
@@ -60,8 +57,8 @@ public class OrderNoRuleController {
return true;
}
@PostMapping("/genOrderNo")
public R<String> genOrderNo(@RequestBody IdRequest request) {
return R.success(this.service.genOrderNo(request.getId()));
public R<String> genOrderNo(@RequestBody GenOrderNoRequest request) {
return R.success(this.service.genOrderNo(request));
}
@PostMapping("/updateOrderSeq")

View File

@@ -0,0 +1,14 @@
package cn.lihongjie.coal.orderNoRule.dto;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.*;
@Data
public class GenOrderNoRequest {
private String ruleCode;
private LocalDateTime time;
}

View File

@@ -1,5 +1,6 @@
package cn.lihongjie.coal.orderNoRule.service;
import cn.lihongjie.coal.orderNoRule.dto.GenOrderNoRequest;
import cn.lihongjie.coal.orderNoRule.entity.OrderNoRuleEntity;
import jakarta.persistence.criteria.CriteriaBuilder;
@@ -27,26 +28,26 @@ public class OrderNoGenService {
@Autowired private OrderNoRuleService orderNoRuleService;
public String genOrderNo(String ruleCode, String orgId) {
public String genOrderNo(GenOrderNoRequest request, String orgId) {
log.info("生成订单号, 规则编码: {}, 机构: {}", ruleCode, orgId);
log.info("生成订单号, 规则编码: {}, 机构: {}", request.getRuleCode(), orgId);
OrderNoRuleEntity rule = getOrderNoRuleEntity(ruleCode, orgId);
OrderNoRuleEntity rule = getOrderNoRuleEntity(request.getRuleCode(), orgId);
if (rule == null) return null;
String ruleTemplate = rule.getRuleTemplate();
return genOrderNo(ruleCode, orgId, ruleTemplate);
return genOrderNo(request, orgId, ruleTemplate);
}
public @NotNull String genOrderNo(String ruleCode, String orgId, String ruleTemplate) {
public @NotNull String genOrderNo(GenOrderNoRequest request, String orgId, String ruleTemplate) {
RuleTemplateUtils.ResolveContext context = new RuleTemplateUtils.ResolveContext();
context.setDateTime(LocalDateTime.now());
context.setDateTime(request.getTime());
return RuleTemplateUtils.genNo(
ruleTemplate,
RuleTemplateUtils.CompositePlaceholderResolver.of(
@@ -62,7 +63,7 @@ public class OrderNoGenService {
String current = context.get("current").toString();
String key = orgId + ":" + ruleCode + ":" + current;
String key = orgId + ":" + request.getRuleCode() + ":" + current;
Long seq = redissonClient.getAtomicLong(key).incrementAndGet();

View File

@@ -6,10 +6,7 @@ import cn.lihongjie.coal.base.service.BaseService;
import cn.lihongjie.coal.common.Ctx;
import cn.lihongjie.coal.dbFunctions.DbFunctionService;
import cn.lihongjie.coal.exception.BizException;
import cn.lihongjie.coal.orderNoRule.dto.CreateOrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.OrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.UpdateOrderNoRuleDto;
import cn.lihongjie.coal.orderNoRule.dto.UpdateOrderSeqRequest;
import cn.lihongjie.coal.orderNoRule.dto.*;
import cn.lihongjie.coal.orderNoRule.entity.OrderNoRuleEntity;
import cn.lihongjie.coal.orderNoRule.mapper.OrderNoRuleMapper;
import cn.lihongjie.coal.orderNoRule.repository.OrderNoRuleRepository;
@@ -24,6 +21,8 @@ import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
@Service
@Slf4j
@Transactional
@@ -85,20 +84,23 @@ public class OrderNoRuleService extends BaseService<OrderNoRuleEntity, OrderNoRu
private OrderNoGenService orderNoGenService;
public String genOrderNo(String ruleCode) {
public String genOrderNo(GenOrderNoRequest ruleCode) {
return genOrderNo(ruleCode, Ctx.currentUser().getOrganizationId());
}
public String previewOrderNo(OrderNoRuleDto ruleCode) {
GenOrderNoRequest request = new GenOrderNoRequest();
request.setRuleCode(ruleCode.getCode());
request.setTime(LocalDateTime.now());
return orderNoGenService.genOrderNo(
ruleCode.getCode(),
request,
Ctx.currentUser().getOrganizationId() + "-preview",
ruleCode.getRuleTemplate());
}
public String genOrderNo(String ruleCode, String organizationId) {
public String genOrderNo(GenOrderNoRequest ruleCode, String organizationId) {
return orderNoGenService.genOrderNo(ruleCode, organizationId);
}

View File

@@ -10,6 +10,7 @@ import cn.lihongjie.coal.common.FreeMakerUtils;
import cn.lihongjie.coal.common.JpaUtils;
import cn.lihongjie.coal.common.NumberUtils;
import cn.lihongjie.coal.exception.BizException;
import cn.lihongjie.coal.orderNoRule.dto.GenOrderNoRequest;
import cn.lihongjie.coal.orderNoRule.service.OrderNoRuleService;
import cn.lihongjie.coal.orderNoRule.service.RuleCodeConstant;
import cn.lihongjie.coal.warehouseGoods.dto.GoodsCountRequest;
@@ -183,9 +184,12 @@ public class WarehouseReceiptService
.map(WarehouseReceiptDetailEntity::getAmount)
.reduce(0.0, Double::sum)));
GenOrderNoRequest request = new GenOrderNoRequest();
request.setRuleCode(RuleCodeConstant.KF_RKD);
request.setTime(receipt0.getReceiptDate());
receipt0.setReceiptNo(
orderNoRuleService.genOrderNo(
RuleCodeConstant.KF_RKD, Ctx.currentUser().getOrganizationId()));
request, Ctx.currentUser().getOrganizationId()));
entity.setReceipt0(receipt0);
this.warehouseReceiptDetailRepository.saveAll(receipt0.getDetail());
@@ -205,10 +209,12 @@ public class WarehouseReceiptService
receipt1.getDetail().stream()
.map(WarehouseReceiptDetailEntity::getAmount)
.reduce(0.0, Double::sum)));
GenOrderNoRequest request = new GenOrderNoRequest();
request.setRuleCode(RuleCodeConstant.KF_CKD);
request.setTime(receipt1.getReceiptDate());
receipt1.setReceiptNo(
orderNoRuleService.genOrderNo(
RuleCodeConstant.KF_CKD, Ctx.currentUser().getOrganizationId()));
request, Ctx.currentUser().getOrganizationId()));
entity.setReceipt1(receipt1);
this.save(receipt1);