From 96119ca3973d5ea643db6a87b6a23fe404ddb8cc Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 29 六月 2026 15:35:40 +0800
Subject: [PATCH] feat:合同编号规则调整 出库编号规则调整
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java | 14 -
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java | 3
/dev/null | 40 -----
platformx-boot/src/main/resources/application-dev.yml | 1
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java | 176 ++++++++++++++++++++++---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java | 4
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java | 143 ++++++++++++++++++++
7 files changed, 305 insertions(+), 76 deletions(-)
diff --git a/platformx-boot/src/main/resources/application-dev.yml b/platformx-boot/src/main/resources/application-dev.yml
index 8534025..9290cc8 100644
--- a/platformx-boot/src/main/resources/application-dev.yml
+++ b/platformx-boot/src/main/resources/application-dev.yml
@@ -60,6 +60,7 @@
#erp鎺ㄩ��
erp:
ymj:
+ ymjToken:
smj:
sgb:
jxc:
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
index 2e040df..5502bcc 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
@@ -255,4 +255,7 @@
@Column(columnDefinition = "VARCHAR(32) comment '缁忔祹浜嬮」 bip鎺ㄩ�佸簲鏀剁敤'")
private String economicMatters;
+ @Schema(description = "erp鍚堝悓缂栧彿")
+ @Column(columnDefinition = "VARCHAR(64) comment 'erp鍚堝悓缂栧彿'")
+ private String erpContractNo;
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
index 662ad16..66d2ad7 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
@@ -6,11 +6,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
import com.by4cloud.platformx.business.entity.PlanSubjectMatter;
-import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
import com.by4cloud.platformx.business.service.PlanSubjectMatterService;
-import com.by4cloud.platformx.business.utils.ContractNumberGenerator;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import com.by4cloud.platformx.common.log.annotation.SysLog;
@@ -124,7 +121,6 @@
}
productionPlan.setPartybid(SecurityUtils.getUser().getCompId());
productionPlan.setPartyb(SecurityUtils.getUser().getCompName());
- productionPlan.setProductionPlanNo("p-"+ContractNumberGenerator.generateContractNumber());
productionPlanService.save(productionPlan);
if(productionPlan.getPlanSubjectMatterList()!=null){
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
index f3bd5f8..568ae38 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -7,6 +7,8 @@
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -21,7 +23,6 @@
import com.by4cloud.platformx.business.entity.*;
import com.by4cloud.platformx.business.mapper.*;
import com.by4cloud.platformx.business.service.ContractService;
-import com.by4cloud.platformx.business.utils.ContractNumberGenerator;
import com.by4cloud.platformx.business.utils.ItemGeneratorUtil;
import com.by4cloud.platformx.business.vo.ContractDetailVo;
import com.by4cloud.platformx.common.core.util.R;
@@ -37,6 +38,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.io.IOException;
@@ -71,9 +73,13 @@
private final RemoteDeptService remoteDeptService;
private final ContractDelayOutMapper contractDelayOutMapper;
private final ErpRequestRecordMapper erpRequestRecordMapper;
+ private final StringRedisTemplate redisTemplate;
@Value("${erp.ymj}")
private String ymjErp;
+
+ @Value("${erp.ymjToken}")
+ private String ymjToken;
@Value("${erp.smj}")
private String smjErp;
@@ -107,7 +113,7 @@
Contract contract = BeanUtil.copyProperties(addDTO, Contract.class);
contract.setPartyBId(SecurityUtils.getUser().getCompId());
contract.setPartyB(SecurityUtils.getUser().getCompName());
- contract.setContractNo(ContractNumberGenerator.generateContractNumber());
+
contract.setPaidAmount(new BigDecimal("0"));
contract.setBillingStatus("0");
contract.setErpPushFlag("0");
@@ -127,11 +133,22 @@
}
}
- List<Contract> contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo()));
- while (ArrayUtil.isNotEmpty(contracts.toArray())) {
- contract.setContractNo(ContractNumberGenerator.generateContractNumber());
- contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo()));
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ contract.setContractNo(generateSMJContractNo());
}
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ contract.setContractNo(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ contract.setContractNo(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ contract.setContractNo(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ contract.setContractNo(generateJXCContractNo());
+ }
+
baseMapper.insert(contract);
if (ArrayUtil.isNotEmpty(addDTO.getContractSubjectMatter())) {
@@ -213,15 +230,23 @@
return R.failed("褰撳墠鐘舵�佹棤娉曚慨鏀瑰悎鍚�");
}
Contract contract = BeanUtil.copyProperties(updateDTO, Contract.class);
- contract.setContractNo(ContractNumberGenerator.generateContractNumber());
contract.setBillingStatus("0");
contract.setErpPushFlag("0");
contract.setPaidAmount(new BigDecimal("0"));
- List<Contract> contracts;
- contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo()));
- while (ArrayUtil.isNotEmpty(contracts.toArray())) {
- contract.setContractNo(ContractNumberGenerator.generateContractNumber());
- contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo()));
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ contract.setContractNo(generateSMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ contract.setContractNo(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ contract.setContractNo(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ contract.setContractNo(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ contract.setContractNo(generateJXCContractNo());
}
if (ObjUtil.isNotNull(updateDTO.getDeliveryCycle())){
contract.setExpirationDate(DateUtil.offsetDay(updateDTO.getSignDate(),updateDTO.getDeliveryCycle()));
@@ -572,10 +597,14 @@
request.put("details",subjectMatter);
}
log.info("涓�鐓ゆ満鍚堝悓鎺ㄩ�乪rp鍏ュ弬锛歿}",request.toJSONString());
- String result = HttpUtil.post(ymjErp,request.toJSONString());
- log.info("涓�鐓ゆ満鍚堝悓鎺ㄩ�乪rp鍥炲弬锛歿}",result);
+ HttpResponse response = HttpRequest.post(ymjErp)
+ .header("token", ymjToken) // 娣诲姞璁よ瘉澶�
+ .header("Content-Type", "application/json") // 璁剧疆鍐呭绫诲瀷
+ .body(request.toJSONString()) // 璁剧疆璇锋眰浣�
+ .execute(); // 鎵ц璇锋眰.post(ymjErp,request.toJSONString());
+ log.info("涓�鐓ゆ満鍚堝悓鎺ㄩ�乪rp鍥炲弬锛歿}",response.body());
//淇濆瓨璇锋眰璁板綍
- saveErpRequestRecord("ymj",request.toJSONString(),result);
+ saveErpRequestRecord("ymj",request.toJSONString(),response.body());
//鏇存柊鍚堝悓erp鎺ㄩ�佹爣璇�
contract.setErpPushFlag("1");
baseMapper.updateById(contract);
@@ -770,16 +799,24 @@
public R copyNewContract(Long id) {
Contract oldContract = baseMapper.selectById(id);
Contract newContract = BeanUtil.copyProperties(oldContract, Contract.class, "id", "createTime");
- newContract.setContractNo(ContractNumberGenerator.generateContractNumber());
newContract.setPaidAmount(new BigDecimal("0"));
newContract.setBillingStatus("0");
newContract.setErpPushFlag("0");
newContract.setContractStatus(0);
- List<Contract> contracts;
- contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, newContract.getContractNo()));
- while (ArrayUtil.isNotEmpty(contracts.toArray())) {
- newContract.setContractNo(ContractNumberGenerator.generateContractNumber());
- contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, newContract.getContractNo()));
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ newContract.setContractNo(generateSMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ newContract.setContractNo(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ newContract.setContractNo(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ newContract.setContractNo(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ newContract.setContractNo(generateJXCContractNo());
}
baseMapper.insert(newContract);
List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery().eq(ContractSubjectMatter::getContractId, id));
@@ -1412,6 +1449,7 @@
return R.failed("浠樻闃舵姣斾緥寮傚父");
}
Contract contract = BeanUtil.copyProperties(addDTO, Contract.class);
+ contract.setErpContractNo(contract.getContractNo());
contract.setPartyBId(SecurityUtils.getUser().getCompId());
contract.setPartyB(SecurityUtils.getUser().getCompName());
contract.setContractStatus(2);
@@ -1421,6 +1459,9 @@
if (ObjUtil.isNotNull(addDTO.getDeliveryCycle())){
contract.setExpirationDate(DateUtil.offsetDay(addDTO.getSignDate(),addDTO.getDeliveryCycle()));
}
+
+ contract.setContractNo(generateGYBContractNo());
+
if (!StrUtil.equals(addDTO.getContractCategory(), "water_house")){
// 鍋囪 list 鏄綘鐨� List<ContractSubjectMatterAddDTO>
Optional<ContractSubjectMatterAddDTO> maxDateObj = addDTO.getContractSubjectMatter().stream()
@@ -1636,4 +1677,97 @@
return VALID_STAGES.equals(actualStageSet);
}
+ /**
+ * 鐢熸垚鏍煎紡涓�: yyyyMMdd + 4浣嶅簭鍒楀彿 (渚嬪: 20260629000001)
+ */
+ public String generateSMJContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-SMJ:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-SMJ-"+dateStr + seqStr;
+ }
+
+ public String generateYMJContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-YMJ:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-YMJ-"+dateStr + seqStr;
+ }
+
+ public String generateJXCContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-JXC:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-JXC-"+dateStr + seqStr;
+ }
+
+ public String generateTFContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-TF:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-TF-"+dateStr + seqStr;
+ }
+
+ public String generateGYBContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-GYB:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-GYB-"+dateStr + seqStr;
+ }
+
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
index 954cc14..05fb704 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
@@ -17,6 +17,8 @@
import com.by4cloud.platformx.common.security.util.SecurityUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -41,6 +43,22 @@
private final ContractPaymentScheduleProcessMapper scheduleProcessMapper;
private final ContractOutBoundMapper contractOutBoundMapper;
private final DeliveryOverdueMapper deliveryOverdueMapper;
+ private final StringRedisTemplate redisTemplate;
+
+ @Value("${dept.smj}")
+ private String smj;
+
+ @Value("${dept.sgb}")
+ private String sgb;
+
+ @Value("${dept.jxc}")
+ private String jxc;
+
+ @Value("${dept.tfgs}")
+ private String tfgs;
+
+ @Value("${dept.ymj}")
+ private String ymj;
@Override
public R add(OutBoundAddDTO addDTO) {
@@ -82,7 +100,21 @@
//鍑哄簱
addDTO.getSubjectMatterList().stream().forEach(outSubjectMatterAddDTO -> {
OutBound outBound = BeanUtil.copyProperties(outSubjectMatterAddDTO, OutBound.class);
- outBound.setBatchNumber(batchNumber);
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ outBound.setBatchNumber(generateSMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ outBound.setBatchNumber(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ outBound.setBatchNumber(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ outBound.setBatchNumber(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ outBound.setBatchNumber(generateJXCContractNo());
+ }
outBound.setBusGuestName(addDTO.getBusGuestName());
outBound.setBusGuestId(addDTO.getBusGuestId());
outBound.setOutBoundTime(addDTO.getOutBoundTime());
@@ -451,7 +483,21 @@
contractSubjectMatterMapper.updateById(subjectMatter);
//
OutBound outBound = new OutBound();
- outBound.setBatchNumber(batchNumber);
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ outBound.setBatchNumber(generateSMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ outBound.setBatchNumber(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ outBound.setBatchNumber(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ outBound.setBatchNumber(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ outBound.setBatchNumber(generateJXCContractNo());
+ }
outBound.setOutBoundNum(outSubjectMatterAddDTO.getOutBoundNum());
outBound.setOutBoundAttNames(addDTO.getOutBoundAttNames());
outBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
@@ -676,4 +722,97 @@
}
return R.ok();
}
+
+ /**
+ * 鐢熸垚鏍煎紡涓�: yyyyMMdd + 4浣嶅簭鍒楀彿 (渚嬪: 20260629000001)
+ */
+ public String generateSMJContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-SMJ-CK:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-SMJ-CK-"+dateStr + seqStr;
+ }
+
+ public String generateYMJContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-YMJ-CK:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-YMJ-CK-"+dateStr + seqStr;
+ }
+
+ public String generateJXCContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-JXC-CK:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-JXC-CK-"+dateStr + seqStr;
+ }
+
+ public String generateTFContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-TF-CK:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-TF-CK-"+dateStr + seqStr;
+ }
+
+ public String generateGYBContractNo() {
+ // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
+ String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
+
+ // 2. 鏋勫缓 Redis Key锛屾寜澶╅殧绂伙紝渚嬪: order:no:20260629
+ String key = "ZB-GYB-CK:" + dateStr;
+
+ // 3. Redis 鍘熷瓙閫掑锛岃缃繃鏈熸椂闂翠负2澶╋紙闃叉Key鍫嗙Н锛屽悓鏃惰鐩栬法澶╄竟鐣屾儏鍐碉級
+ Long sequence = redisTemplate.opsForValue().increment(key, 1);
+ redisTemplate.expire(key, 1, java.util.concurrent.TimeUnit.DAYS);
+
+ // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼笉瓒�6浣嶅墠琛�0
+ String seqStr = String.format("%04d", sequence);
+
+ // 5. 鎷兼帴杩斿洖
+ return "ZB-GYB-CK-"+dateStr + seqStr;
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
index 86ae44f..72ead27 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
@@ -1,29 +1,21 @@
package com.by4cloud.platformx.business.service.impl;
-import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.dto.ProductQueryDTO;
import com.by4cloud.platformx.business.entity.Product;
-import com.by4cloud.platformx.business.entity.TaxCode;
import com.by4cloud.platformx.business.mapper.ProductMapper;
import com.by4cloud.platformx.business.service.ProductService;
import com.by4cloud.platformx.business.vo.ProductSelectVo;
-import com.by4cloud.platformx.business.vo.ProductTreeVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.data.datascope.DataScope;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jakarta.validation.constraints.NotNull;
-import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
-import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
@@ -104,6 +96,10 @@
// .eq(StrUtil.isNotEmpty(queryDTO.getParentId()),Product::getParentId,queryDTO.getParentId())
// .in(StrUtil.isNotEmpty(queryDTO.getContractCategory())&&StrUtil.equals(queryDTO.getContractCategory(), "water_house"),
// Product::getErpCode,erpCodes);
- return R.ok(baseMapper.getProductListByParentId(queryDTO, Arrays.asList(erpCodes),DataScope.of("comp_id")));
+ List<ProductSelectVo> selectVos = baseMapper.getProductListByParentId(queryDTO, Arrays.asList(erpCodes),DataScope.of("comp_id"));
+ if (selectVos.size()>2000){
+ return R.ok(selectVos.subList(0,1999));
+ }
+ return R.ok(selectVos);
}
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/utils/ContractNumberGenerator.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/utils/ContractNumberGenerator.java
deleted file mode 100644
index 5961933..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/utils/ContractNumberGenerator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.by4cloud.platformx.business.utils;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-public class ContractNumberGenerator {
-
- // 鐢ㄤ簬瀛樺偍姣忓ぉ鐨勫簭鍒楀彿璁℃暟鍣紝Key涓烘棩鏈熷瓧绗︿覆锛孷alue涓哄師瀛愭暣鏁�
- private static final ConcurrentHashMap<String, AtomicInteger> counterMap = new ConcurrentHashMap<>();
-
- // 鏃ユ湡鏍煎紡鍖栧櫒锛屾牸寮忎负 yyyyMMdd
- private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
-
- /**
- * 鐢熸垚鍚堝悓缂栧彿
- * 鏍煎紡: yyyyMMdd-XXXX (XXXX涓哄綋鏃ヨ嚜澧炲簭鍒楋紝涓嶈冻4浣嶈ˉ0)
- *
- * @return 鍚堝悓缂栧彿瀛楃涓�
- */
- public static String generateContractNumber() {
- // 1. 鑾峰彇褰撳墠鏃ユ湡瀛楃涓�
- String dateStr = LocalDate.now().format(DATE_FORMATTER);
-
- // 2. 鑾峰彇鎴栧垱寤哄綋澶╃殑璁℃暟鍣�
- // computeIfAbsent 淇濊瘉鍘熷瓙鎬э紝濡傛灉key涓嶅瓨鍦ㄥ垯鍒涘缓鏂扮殑AtomicInteger(0)
- AtomicInteger counter = counterMap.computeIfAbsent(dateStr, k -> new AtomicInteger(0));
-
- // 3. 閫掑骞惰幏鍙栧綋鍓嶅簭鍒楀彿
- int sequence = counter.incrementAndGet();
-
- // 4. 鏍煎紡鍖栧簭鍒楀彿锛屼緥濡� 1 -> "0001"
- String formattedSequence = String.format("%04d", sequence);
-
- // 5. 缁勫悎杩斿洖
- return dateStr + "-" + formattedSequence;
- }
-
-}
--
Gitblit v1.9.1