From 103f52ade0f77e420dec306ea3b51d0a3c0ac3ee Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 19 三月 2025 13:23:12 +0800
Subject: [PATCH] art: 设备管理-系统业务编码生成,工艺参数维护功能修改

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysBusinessCodeSeqMapper.java             |   14 ++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysBusinessCodeRuleController.java    |    3 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamProcessParametersController.java                         |    9 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeRuleService.java         |    7 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeRule.java                  |    8 -
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeSeq.java                   |   71 +++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamProcessParameters.java                                       |   11 -
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeRuleServiceImpl.java |  111 ++++++++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysBusinessCodeSeqMapper.xml          |    5 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeSeqService.java          |   23 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeSeqServiceImpl.java  |   58 +++++++++
 11 files changed, 306 insertions(+), 14 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamProcessParametersController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamProcessParametersController.java
index d5aefc7..42b8a38 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamProcessParametersController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamProcessParametersController.java
@@ -9,6 +9,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.util.oConvertUtils;
@@ -20,6 +21,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -48,6 +50,9 @@
 public class EamProcessParametersController extends JeecgController<EamProcessParameters, IEamProcessParametersService> {
 	@Autowired
 	private IEamProcessParametersService eamProcessParametersService;
+
+	@Autowired
+	private ISysBusinessCodeRuleService businessCodeRuleService;
 	
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
@@ -66,6 +71,7 @@
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 		QueryWrapper<EamProcessParameters> queryWrapper = QueryGenerator.initQueryWrapper(eamProcessParameters, req.getParameterMap());
+		queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0);
 		Page<EamProcessParameters> page = new Page<EamProcessParameters>(pageNo, pageSize);
 		IPage<EamProcessParameters> pageList = eamProcessParametersService.page(page, queryWrapper);
 		return Result.OK(pageList);
@@ -81,6 +87,9 @@
 	@ApiOperation(value="宸ュ簭鍙傛暟缁存姢-娣诲姞", notes="宸ュ簭鍙傛暟缁存姢-娣诲姞")
 	@PostMapping(value = "/add")
 	public Result<?> add(@RequestBody EamProcessParameters eamProcessParameters) {
+		String codeSeq = businessCodeRuleService.generateBusinessCodeSeq("ProcessParametersRule");
+		eamProcessParameters.setParameterCode(codeSeq);
+		eamProcessParameters.setDelFlag(CommonConstant.DEL_FLAG_0);
 		eamProcessParametersService.save(eamProcessParameters);
 		return Result.OK("娣诲姞鎴愬姛锛�");
 	}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamProcessParameters.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamProcessParameters.java
index c817b17..f313c9f 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamProcessParameters.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamProcessParameters.java
@@ -8,6 +8,7 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.io.Serializable;
@@ -30,34 +31,32 @@
     @ApiModelProperty(value = "涓婚敭")
 	private String id;
 	/**鍒涘缓浜�*/
-	@Excel(name = "鍒涘缓浜�", width = 15)
     @ApiModelProperty(value = "鍒涘缓浜�")
 	private String createBy;
 	/**鍒涘缓鏃堕棿*/
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
 	private Date createTime;
 	/**鏇存柊浜�*/
-	@Excel(name = "鏇存柊浜�", width = 15)
     @ApiModelProperty(value = "鏇存柊浜�")
 	private String updateBy;
 	/**鏇存柊鏃堕棿*/
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
 	private Date updateTime;
 	/**鍒犻櫎鏍囪*/
-	@Excel(name = "鍒犻櫎鏍囪", width = 15)
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
 	private Integer delFlag;
 	/**鍙傛暟缂栫爜*/
-	@Excel(name = "鍙傛暟缂栫爜", width = 15)
+	@Excel(name = "鍙傛暟缂栫爜", width = 25)
     @ApiModelProperty(value = "鍙傛暟缂栫爜")
 	private String parameterCode;
 	/**鍙傛暟鍚嶇О*/
-	@Excel(name = "鍙傛暟鍚嶇О", width = 15)
+	@Excel(name = "鍙傛暟鍚嶇О", width = 25)
     @ApiModelProperty(value = "鍙傛暟鍚嶇О")
 	private String parameterName;
 	/**鍙傛暟鍒嗙被*/
-	@Excel(name = "鍙傛暟鍒嗙被", width = 15)
+	@Excel(name = "鍙傛暟鍒嗙被", width = 15, dicCode = "process_parameters_category")
     @ApiModelProperty(value = "鍙傛暟鍒嗙被")
+	@Dict(dicCode = "process_parameters_category")
 	private String parameterCategory;
 	/**璁¢噺鍗曚綅*/
 	@Excel(name = "璁¢噺鍗曚綅", width = 15)
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysBusinessCodeRuleController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysBusinessCodeRuleController.java
index c662045..32a4845 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysBusinessCodeRuleController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysBusinessCodeRuleController.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.system.entity.SysBusinessCodeRule;
@@ -48,6 +49,7 @@
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 		QueryWrapper<SysBusinessCodeRule> queryWrapper = QueryGenerator.initQueryWrapper(sysBusinessCodeRule, req.getParameterMap());
+		queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0);
 		Page<SysBusinessCodeRule> page = new Page<SysBusinessCodeRule>(pageNo, pageSize);
 		IPage<SysBusinessCodeRule> pageList = sysBusinessCodeRuleService.page(page, queryWrapper);
 		return Result.OK(pageList);
@@ -63,6 +65,7 @@
 	@ApiOperation(value="涓氬姟缂栫爜瑙勫垯-娣诲姞", notes="涓氬姟缂栫爜瑙勫垯-娣诲姞")
 	@PostMapping(value = "/add")
 	public Result<?> add(@RequestBody SysBusinessCodeRule sysBusinessCodeRule) {
+		sysBusinessCodeRule.setDelFlag(CommonConstant.DEL_FLAG_0);
 		sysBusinessCodeRuleService.save(sysBusinessCodeRule);
 		return Result.OK("娣诲姞鎴愬姛锛�");
 	}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeRule.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeRule.java
index d87f243..4e1806d 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeRule.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeRule.java
@@ -69,15 +69,11 @@
     @ApiModelProperty(value = "鏈堜唤缂栫爜鏍煎紡")
 	private String monthFormat;
 	/**澶� 缂栫爜鏍煎紡*/
-	@Excel(name = "澶� 缂栫爜鏍煎紡", width = 15)
-    @ApiModelProperty(value = "澶� 缂栫爜鏍煎紡")
+	@Excel(name = "澶╃紪鐮佹牸寮�", width = 15)
+    @ApiModelProperty(value = "澶╃紪鐮佹牸寮�")
 	private String dayFormat;
 	/**搴忓彿闀垮害*/
 	@Excel(name = "搴忓彿闀垮害", width = 15)
     @ApiModelProperty(value = "搴忓彿闀垮害")
 	private Integer seqLength;
-	/**褰撳墠搴忓彿*/
-	@Excel(name = "褰撳墠搴忓彿", width = 15)
-    @ApiModelProperty(value = "褰撳墠搴忓彿")
-	private Integer currentNum;
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeSeq.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeSeq.java
new file mode 100644
index 0000000..0217956
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysBusinessCodeSeq.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 涓氬姟缂栫爜鐢熸垚搴忓垪
+ * @Author: jeecg-boot
+ * @Date:   2025-03-19
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_business_code_seq")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sys_business_code_seq瀵硅薄", description="涓氬姟缂栫爜鐢熸垚搴忓垪")
+public class SysBusinessCodeSeq implements Serializable {
+    
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+	private String id;
+	/**鍒涘缓浜�*/
+	@Excel(name = "鍒涘缓浜�", width = 15)
+    @ApiModelProperty(value = "鍒涘缓浜�")
+	private String createBy;
+	/**鍒涘缓鏃堕棿*/
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+	private Date createTime;
+	/**鏇存柊浜�*/
+	@Excel(name = "鏇存柊浜�", width = 15)
+    @ApiModelProperty(value = "鏇存柊浜�")
+	private String updateBy;
+	/**鏇存柊鏃堕棿*/
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+	private Date updateTime;
+	/**瑙勫垯缂栫爜*/
+	@Excel(name = "瑙勫垯缂栫爜", width = 15)
+    @ApiModelProperty(value = "瑙勫垯缂栫爜")
+	private String ruleId;
+	/**鍓嶇紑*/
+	@Excel(name = "鍓嶇紑", width = 15)
+    @ApiModelProperty(value = "鍓嶇紑")
+	private String prefix;
+	/**褰撳墠骞翠唤*/
+	@Excel(name = "褰撳墠骞翠唤", width = 15)
+    @ApiModelProperty(value = "褰撳墠骞翠唤")
+	private String currentYear;
+	/**褰撳墠鏈堜唤*/
+	@Excel(name = "褰撳墠鏈堜唤", width = 15)
+    @ApiModelProperty(value = "褰撳墠鏈堜唤")
+	private String currentMonth;
+	/**褰撳墠澶�*/
+	@Excel(name = "褰撳墠澶�", width = 15)
+    @ApiModelProperty(value = "褰撳墠澶�")
+	private String currentDay;
+	/**褰撳墠搴忓垪鍊�*/
+	@Excel(name = "褰撳墠搴忓垪鍊�", width = 15)
+    @ApiModelProperty(value = "褰撳墠搴忓垪鍊�")
+	private Integer currentSeq;
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysBusinessCodeSeqMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysBusinessCodeSeqMapper.java
new file mode 100644
index 0000000..eed233e
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysBusinessCodeSeqMapper.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.system.entity.SysBusinessCodeSeq;
+
+/**
+ * @Description: 涓氬姟缂栫爜鐢熸垚搴忓垪
+ * @Author: jeecg-boot
+ * @Date:   2025-03-19
+ * @Version: V1.0
+ */
+public interface SysBusinessCodeSeqMapper extends BaseMapper<SysBusinessCodeSeq> {
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysBusinessCodeSeqMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysBusinessCodeSeqMapper.xml
new file mode 100644
index 0000000..e7feff9
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysBusinessCodeSeqMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.system.mapper.SysBusinessCodeSeqMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeRuleService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeRuleService.java
index f1179ee..7e2ab06 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeRuleService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeRuleService.java
@@ -10,5 +10,10 @@
  * @Version: V1.0
  */
 public interface ISysBusinessCodeRuleService extends IService<SysBusinessCodeRule> {
-
+    /**
+     * 鐢熸垚涓氬姟缂栫爜瀵瑰簲鐨勬祦姘村彿
+     * @param businessCode 涓氬姟缂栫爜
+     * @return
+     */
+    String generateBusinessCodeSeq(String businessCode);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeSeqService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeSeqService.java
new file mode 100644
index 0000000..5c26ba4
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysBusinessCodeSeqService.java
@@ -0,0 +1,23 @@
+package org.jeecg.modules.system.service;
+
+import org.jeecg.modules.system.entity.SysBusinessCodeSeq;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 涓氬姟缂栫爜鐢熸垚搴忓垪
+ * @Author: jeecg-boot
+ * @Date:   2025-03-19
+ * @Version: V1.0
+ */
+public interface ISysBusinessCodeSeqService extends IService<SysBusinessCodeSeq> {
+    /**
+     * 鑾峰彇褰撳墠搴忓垪鐢熸垚璁板綍
+     * @param ruleId 瑙勫垯Id
+     * @param prefix 鍓嶇紑
+     * @param yearValue 骞翠唤
+     * @param monthValue 鏈堜唤
+     * @param dayValue 澶�
+     * @return
+     */
+    SysBusinessCodeSeq queryByParams(String ruleId, String prefix, String yearValue, String monthValue, String dayValue);
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeRuleServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeRuleServiceImpl.java
index 3a3505e..ea9e380 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeRuleServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeRuleServiceImpl.java
@@ -1,19 +1,128 @@
 package org.jeecg.modules.system.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.system.entity.SysBusinessCodeRule;
+import org.jeecg.modules.system.entity.SysBusinessCodeSeq;
 import org.jeecg.modules.system.mapper.SysBusinessCodeRuleMapper;
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
+import org.jeecg.modules.system.service.ISysBusinessCodeSeqService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * @Description: 涓氬姟缂栫爜瑙勫垯
  * @Author: jeecg-boot
- * @Date:   2025-03-17
+ * @Date: 2025-03-17
  * @Version: V1.0
  */
 @Service
 public class SysBusinessCodeRuleServiceImpl extends ServiceImpl<SysBusinessCodeRuleMapper, SysBusinessCodeRule> implements ISysBusinessCodeRuleService {
 
+    @Resource
+    private SysBusinessCodeRuleMapper businessCodeRuleMapper;
+
+    @Autowired
+    private ISysBusinessCodeSeqService businessCodeSeqService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String generateBusinessCodeSeq(String businessCode) {
+        //鏌ヨ鐢熸垚瑙勫垯
+        LambdaQueryWrapper<SysBusinessCodeRule> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysBusinessCodeRule::getBusinessCode, businessCode);
+        queryWrapper.eq(SysBusinessCodeRule::getDelFlag, CommonConstant.DEL_FLAG_0);
+        List<SysBusinessCodeRule> list = businessCodeRuleMapper.selectList(queryWrapper);
+        if (CollectionUtil.isEmpty(list)) {
+            throw new JeecgBootException("鏈煡璇㈠埌閰嶇疆鐨勪笟鍔$紪鐮佺敓鎴愯鍒欙紝璇疯仈绯荤鐞嗗憳妫�鏌ワ紒");
+        }
+        if (list.size() > 1) {
+            throw new JeecgBootException("鏌ヨ鍒板涓厤缃殑涓氬姟缂栫爜鐢熸垚瑙勫垯锛岃鑱旂郴绠$悊鍛樻鏌ワ紒");
+        }
+        SysBusinessCodeRule businessCodeRule = list.get(0);
+        String prefix = businessCodeRule.getPrefix();
+        String yearFormat = businessCodeRule.getYearFormat() == null ? "" : businessCodeRule.getYearFormat().trim();
+        String monthFormat = businessCodeRule.getMonthFormat() == null ? "" : businessCodeRule.getMonthFormat().trim();
+        String dayFormat = businessCodeRule.getDayFormat() == null ? "" : businessCodeRule.getDayFormat().trim();
+        Integer seqLength = businessCodeRule.getSeqLength();
+        String formatter = yearFormat + "-" + monthFormat + "-" + dayFormat;
+        //杞崲褰撳墠鏃ユ湡瀵瑰簲鐨勭敓鎴愬簭鍒�
+        String[] currentDate = LocalDate.now().format(DateTimeFormatter.ofPattern(formatter)).split("-");
+        int i = 0;
+        if (StringUtils.isNotBlank(yearFormat)) {
+            yearFormat = currentDate[i];
+            i++;
+        }else {
+            yearFormat = null;
+        }
+        if (StringUtils.isNotBlank(monthFormat)) {
+            monthFormat = currentDate[i];
+            i++;
+        }else {
+            monthFormat = null;
+        }
+        if (StringUtils.isNotBlank(dayFormat)) {
+            dayFormat = currentDate[i];
+        }else {
+            dayFormat = null;
+        }
+        //鏌ヨ鐢熸垚搴忓垪
+        SysBusinessCodeSeq sysBusinessCodeSeq = businessCodeSeqService.queryByParams(businessCodeRule.getId(), prefix, yearFormat, monthFormat, dayFormat);
+        if(sysBusinessCodeSeq == null){
+            //鏂板鐢熸垚搴忓垪
+            sysBusinessCodeSeq = new SysBusinessCodeSeq();
+            sysBusinessCodeSeq.setRuleId(businessCodeRule.getId());
+            sysBusinessCodeSeq.setPrefix(prefix);
+            sysBusinessCodeSeq.setCurrentYear(yearFormat);
+            sysBusinessCodeSeq.setCurrentMonth(monthFormat);
+            sysBusinessCodeSeq.setCurrentDay(dayFormat);
+            sysBusinessCodeSeq.setCurrentSeq(1);
+            businessCodeSeqService.save(sysBusinessCodeSeq);
+        }else {
+            //鏇存柊鐢熸垚搴忓垪
+            sysBusinessCodeSeq.setCurrentSeq(sysBusinessCodeSeq.getCurrentSeq() + 1);
+            businessCodeSeqService.updateById(sysBusinessCodeSeq);
+        }
+        //杩斿洖鐢熸垚鐨勫簭鍒�
+        return appendPrefix(prefix, yearFormat, monthFormat, dayFormat, seqLength, sysBusinessCodeSeq.getCurrentSeq());
+    }
+
+    /**
+     * 鎷兼帴涓氬姟娴佹按鍙�
+     * @param prefix 鍓嶇紑
+     * @param yearFormat 骞翠唤
+     * @param monthFormat 鏈堜唤
+     * @param dayFormat 澶�
+     * @param seqLength 搴忓彿闀垮害
+     * @param currentSeq 褰撳墠搴忓彿
+     * @return
+     */
+    private String appendPrefix(String prefix, String yearFormat, String monthFormat, String dayFormat, Integer seqLength, Integer currentSeq) {
+        StringBuilder sb = new StringBuilder();
+        if(StringUtils.isNotBlank(prefix)){
+            sb.append(prefix);
+        }
+        if(StringUtils.isNotBlank(yearFormat)){
+            sb.append(yearFormat);
+        }
+        if(StringUtils.isNotBlank(monthFormat)){
+            sb.append(monthFormat);
+        }
+        if(StringUtils.isNotBlank(dayFormat)){
+            sb.append(dayFormat);
+        }
+        sb.append(StringUtils.leftPad(currentSeq.toString(), seqLength, '0'));
+        return sb.toString();
+    }
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeSeqServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeSeqServiceImpl.java
new file mode 100644
index 0000000..26c1e8b
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBusinessCodeSeqServiceImpl.java
@@ -0,0 +1,58 @@
+package org.jeecg.modules.system.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.modules.system.entity.SysBusinessCodeSeq;
+import org.jeecg.modules.system.mapper.SysBusinessCodeSeqMapper;
+import org.jeecg.modules.system.service.ISysBusinessCodeSeqService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: 涓氬姟缂栫爜鐢熸垚搴忓垪
+ * @Author: jeecg-boot
+ * @Date:   2025-03-19
+ * @Version: V1.0
+ */
+@Service
+public class SysBusinessCodeSeqServiceImpl extends ServiceImpl<SysBusinessCodeSeqMapper, SysBusinessCodeSeq> implements ISysBusinessCodeSeqService {
+
+    @Override
+    public SysBusinessCodeSeq queryByParams(String ruleId, String prefix, String yearValue, String monthValue, String dayValue) {
+        LambdaQueryWrapper<SysBusinessCodeSeq> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysBusinessCodeSeq::getRuleId, ruleId);
+        queryWrapper.orderByDesc(SysBusinessCodeSeq::getCreateTime);
+        if(StringUtils.isNotBlank(prefix)){
+            queryWrapper.eq(SysBusinessCodeSeq::getPrefix, prefix);
+        }else {
+            queryWrapper.isNull(SysBusinessCodeSeq::getPrefix);
+        }
+
+        if(StringUtils.isNotBlank(yearValue)){
+            queryWrapper.eq(SysBusinessCodeSeq::getCurrentYear, yearValue);
+        }else {
+            queryWrapper.isNull(SysBusinessCodeSeq::getCurrentYear);
+        }
+
+        if(StringUtils.isNotBlank(monthValue)){
+            queryWrapper.eq(SysBusinessCodeSeq::getCurrentMonth, monthValue);
+        }else {
+            queryWrapper.isNull(SysBusinessCodeSeq::getCurrentMonth);
+        }
+
+        if(StringUtils.isNotBlank(dayValue)){
+            queryWrapper.eq(SysBusinessCodeSeq::getCurrentDay, dayValue);
+        }else {
+            queryWrapper.isNull(SysBusinessCodeSeq::getCurrentDay);
+        }
+        List<SysBusinessCodeSeq> list = super.list(queryWrapper);
+        if(CollectionUtil.isEmpty(list)){
+            return null;
+        }
+        return list.get(0);
+    }
+}

--
Gitblit v1.9.3