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/ContractServiceImpl.java | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 155 insertions(+), 21 deletions(-)
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;
+ }
+
}
--
Gitblit v1.9.1