From 862028f5d3433aecec6bf0cfd8bd015dc722b9df Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 06 六月 2025 14:09:50 +0800
Subject: [PATCH] 销售合同号/部门新增编号

---
 src/main/resources/mapper/sales/SalesLedgerMapper.xml                        |    4 ++--
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java          |    3 ++-
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   14 ++++++++------
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java       |   16 ++++++++++++++--
 src/main/java/com/ruoyi/project/system/domain/SysDept.java                   |   11 +++++++++++
 src/main/resources/mapper/system/SysDeptMapper.xml                           |    6 +++++-
 6 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/project/system/domain/SysDept.java b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
index 0e9e75e..e2c6b2b 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysDept.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
@@ -51,6 +51,9 @@
 
     /** 鐖堕儴闂ㄥ悕绉� */
     private String parentName;
+
+    /** 閮ㄩ棬缂栧彿 */
+    private String deptNick;
     
     /** 瀛愰儴闂� */
     private List<SysDept> children = new ArrayList<SysDept>();
@@ -181,6 +184,14 @@
         this.children = children;
     }
 
+    public String getDeptNick() {
+        return deptNick;
+    }
+
+    public void setDeptNick(String deptNick) {
+        this.deptNick = deptNick;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index db32be5..3fb150a 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.mapper.ProductMapper;
@@ -11,7 +12,9 @@
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.basic.pojo.SupplierManage;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
 import com.ruoyi.project.system.domain.SysUser;
@@ -97,10 +100,6 @@
     public int addOrEditPurchase(PurchaseLedgerDto purchaseLedgerDto) throws IOException {
 
         SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId());
-
-        if (salesLedger == null) {
-            throw new BaseException("閿�鍞彴璐︿笉瀛樺湪");
-        }
         //褰曞叆浜�
         SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId());
 
@@ -109,8 +108,11 @@
         // DTO杞珽ntity
         PurchaseLedger purchaseLedger = new PurchaseLedger();
         BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger);
-        purchaseLedger.setTenantId(salesLedger.getTenantId());
-        purchaseLedger.setSalesContractNo(salesLedger.getSalesContractNo());
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if(ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) {
+            purchaseLedger.setTenantId(loginUser.getTenantId().longValue());
+        }
+        purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : null);
         purchaseLedger.setSupplierName(supplierManage.getSupplierName());
         purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
         purchaseLedger.setRecorderName(sysUser.getNickName());
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index c7b7ccf..4b3aaf6 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.sales.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -44,7 +45,7 @@
      * 鏌ヨ閿�鍞彴璐﹀垪琛�
      */
     @GetMapping("/list")
-    public TableDataInfo list(SalesLedgerDto salesLedgerDto) {
+    public TableDataInfo list(Page page, SalesLedgerDto salesLedgerDto) {
         startPage();
         List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedgerDto);
         // 璁$畻宸插紑绁ㄩ噾棰�/鏈紑绁ㄩ噾棰�(宸插~鍐欏彂绁ㄩ噾棰濅负鍑�)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 837245e..4256f17 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -3,14 +3,18 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.sales.dto.MonthlyAmountDto;
 import com.ruoyi.sales.dto.SalesLedgerDto;
 import com.ruoyi.sales.mapper.*;
@@ -69,7 +73,7 @@
     private final InvoiceLedgerMapper invoiceLedgerMapper;
 
     @Autowired
-    private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+    private SysDeptMapper sysDeptMapper;
 
     @Value("${file.upload-dir}")
     private String uploadDir;
@@ -492,7 +496,15 @@
                 throw new RuntimeException("鑾峰彇鍚堝悓缂栧彿鐢熸垚閿佸け璐ワ細瓒呮椂");
             }
 
-            // 2. 鏌ヨ褰撳ぉ宸插瓨鍦ㄧ殑搴忓垪鍙凤紙涓庡師閫昏緫涓�鑷达級
+            // 2. 鏌ヨ褰撳ぉ/鍏徃宸插瓨鍦ㄧ殑搴忓垪鍙凤紙涓庡師閫昏緫涓�鑷达級
+            Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
+            if(null != tenantId){
+                //鑾峰彇鍏徃缂栧彿
+                SysDept sysDept = sysDeptMapper.selectDeptById(tenantId.longValue());
+                if(!ObjectUtils.isEmpty(sysDept)){
+                    datePart = (StringUtils.isEmpty(sysDept.getDeptNick()) ? "" : sysDept.getDeptNick()) + datePart;
+                }
+            }
             List<Integer> existingSequences = salesLedgerMapper.selectSequencesByDate(datePart);
             int nextSequence = findFirstMissingSequence(existingSequences);
 
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index b2b8889..bd80e3f 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -5,9 +5,9 @@
 <mapper namespace="com.ruoyi.sales.mapper.SalesLedgerMapper">
 
     <select id="selectSequencesByDate" resultType="java.lang.Integer">
-        SELECT CAST(SUBSTR(sales_contract_no, 9, 3) AS SIGNED)
+        SELECT CAST(SUBSTR(sales_contract_no,LENGTH(#{datePart})+1 , 3) AS SIGNED)
         FROM sales_ledger
-        WHERE SUBSTR(sales_contract_no, 1, 8) = #{datePart}
+        WHERE sales_contract_no LIKE CONCAT('%',#{datePart},'%')
     </select>
     <select id="getSalesNo" resultType="com.ruoyi.sales.pojo.SalesLedger">
         
diff --git a/src/main/resources/mapper/system/SysDeptMapper.xml b/src/main/resources/mapper/system/SysDeptMapper.xml
index 5a7052d..efebac7 100644
--- a/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -60,7 +60,8 @@
     
     <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
 		select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
-			(select dept_name from sys_dept where dept_id = d.parent_id) parent_name
+			(select dept_name from sys_dept where dept_id = d.parent_id) parent_name,
+			d.dept_nick
 		from sys_dept d
 		where d.dept_id = #{deptId}
 	</select>
@@ -97,6 +98,7 @@
  			<if test="leader != null and leader != ''">leader,</if>
  			<if test="phone != null and phone != ''">phone,</if>
  			<if test="email != null and email != ''">email,</if>
+		    <if test="deptNick != null and deptNick != ''">dept_nick,</if>
  			<if test="status != null">status,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			create_time
@@ -109,6 +111,7 @@
  			<if test="leader != null and leader != ''">#{leader},</if>
  			<if test="phone != null and phone != ''">#{phone},</if>
  			<if test="email != null and email != ''">#{email},</if>
+		    <if test="deptNick != null and deptNick != '' ">#{deptNick},</if>
  			<if test="status != null">#{status},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			sysdate()
@@ -125,6 +128,7 @@
  			<if test="leader != null">leader = #{leader},</if>
  			<if test="phone != null">phone = #{phone},</if>
  			<if test="email != null">email = #{email},</if>
+			<if test="deptNick != null and deptNick != '' ">dept_nick = #{deptNick},</if>
  			<if test="status != null and status != ''">status = #{status},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			update_time = sysdate()

--
Gitblit v1.9.3