From 64a91dc0c19b32a3f04380eb8401e9dd0987714f Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 14 七月 2025 17:23:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pim_yys'

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java      |   22 ++++++++++
 src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java      |    4 +
 src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java   |    5 --
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java                         |    2 
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java |   11 ++++-
 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java                         |    2 +
 src/main/java/com/ruoyi/framework/security/service/SysLoginService.java          |   12 ++++++
 src/main/resources/mapper/system/SysUserMapper.xml                               |    1 
 src/main/java/com/ruoyi/framework/security/service/TokenService.java             |   18 +++++---
 9 files changed, 61 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 57bfdb1..8ede335 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -84,7 +84,7 @@
     private Date approveOverTime;
 
     /**
-     * 瀹℃壒鐘舵�侊細0寰呭鏍革紝1瀹℃牳涓紝2瀹℃牳瀹屾垚 3瀹℃牳鏈�氳繃
+     * 瀹℃壒鐘舵�侊細0寰呭鏍革紝1瀹℃牳涓紝2瀹℃牳瀹屾垚 3瀹℃牳鏈�氳繃 4宸查噸鏂版彁浜�
      */
     private Integer approveStatus;
 
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
index b081070..659f4aa 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.ApproveNodeMapper;
 import com.ruoyi.approve.mapper.ApproveProcessMapper;
 import com.ruoyi.approve.pojo.ApproveNode;
 import com.ruoyi.approve.pojo.ApproveProcess;
@@ -92,6 +93,12 @@
                 .collect(Collectors.toList())
                 .get(0)
                 .getNickName());
+        // 璁剧疆鐘舵�佷负閲嶆柊鎻愪氦
+        if(approveProcessVO.getId() != null){
+            ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId());
+            approveProcess1.setApproveStatus(4);
+            approveProcessMapper.updateById(approveProcess1);
+        }
         save(approveProcess);
         //鍒濆鍖栧鎵硅妭鐐�
         approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId());
@@ -138,6 +145,8 @@
         return one;
     }
 
+    private final ApproveNodeMapper approveNodeMapper;
+
     @Override
     public void updateApproveProcessStatus(ApproveNode approveNode,Integer status) {
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -147,13 +156,24 @@
                 .last("limit 1");
         ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
         if(approveProcess == null) throw new RuntimeException("瀹℃壒涓嶅瓨鍦�");
+        LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveNode.getApproveProcessId())
+                .eq(ApproveNode::getApproveNodeOrder, approveNode.getApproveNodeOrder() + 1)
+                .eq(ApproveNode::getDeleteFlag, 0)
+                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
+                .last("limit 1");
+        ApproveNode approveNode1 = approveNodeMapper.selectOne(approveNodeLambdaQueryWrapper);
         approveProcess.setApproveStatus(status);
+        if(approveNode1 != null){
+            approveProcess.setApproveUserCurrentId(approveNode.getApproveNodeUserId());
+            approveProcess.setApproveUserCurrentName(approveNode1.getApproveNodeUser());
+        }
         updateById(approveProcess);
     }
 
     @Override
     public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
-        ApproveProcess approve = getApproveById(approveGetAndUpdateVo.getId());
+        ApproveProcess approve = approveProcessMapper.selectById(approveGetAndUpdateVo.getId());
         approve.setApproveReason(approveGetAndUpdateVo.getApproveReason());
         updateById(approve);
     }
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index 7885247..8d793d8 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -7,6 +7,8 @@
 @Data
 public class ApproveProcessVO {
 
+    private Long id;
+
 
     private Long approveDeptId;
 
diff --git a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
index c2174ca..f379b7f 100644
--- a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
+++ b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
@@ -3,6 +3,7 @@
 import javax.annotation.Resource;
 
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -218,6 +219,9 @@
         return loginUser.getUserId();
     }
 
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
     /**
      * 鐧诲綍楠岃瘉
      *
@@ -265,6 +269,14 @@
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
+        // 鏇存柊鐢ㄦ埛淇℃伅锛屼慨鏀瑰綋鍓嶉�変腑鍏徃
+        SysUser user = loginUser.getUser();
+        if(factoryId != null){
+            user.setTenantId(factoryId);
+        }else{
+            user.setTenantId(tokenService.getDeptIdsByUserId(user.getUserId())[0]);
+        }
+        sysUserMapper.updateUser(user);
         // 鐢熸垚token
         return tokenService.createToken(loginUser);
     }
diff --git a/src/main/java/com/ruoyi/framework/security/service/TokenService.java b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
index 5b7cf11..3ac2035 100644
--- a/src/main/java/com/ruoyi/framework/security/service/TokenService.java
+++ b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
@@ -159,18 +159,22 @@
     {
         loginUser.setLoginTime(System.currentTimeMillis());
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
-        LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, loginUser.getUserId());
-        List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper);
-        if(!CollectionUtils.isEmpty(sysUserDept)){
-            List<Long> collect = sysUserDept.stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
-            loginUser.setDeptId(collect.toArray(new Long[0]));
-        }
+        loginUser.setDeptIds(getDeptIdsByUserId(loginUser.getUserId()));
         // 鏍规嵁uuid灏唋oginUser缂撳瓨
         String userKey = getTokenKey(loginUser.getToken());
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
     }
 
+    public Long[] getDeptIdsByUserId(Long userId){
+        LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, userId);
+        List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty(sysUserDept)){
+            return null;
+        }
+        return sysUserDept.stream().map(SysUserDept::getDeptId).toArray(Long[]::new);
+    }
+
     /**
      * 璁剧疆鐢ㄦ埛浠g悊淇℃伅
      * 
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
index fd9752b..16eef79 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -77,14 +77,16 @@
         if (salesLedgerProduct != null) {
             salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getFutureTicketsAmount().add(productRecord.getTicketsAmount()).subtract(productRecordDto.getTicketsAmount()));
             salesLedgerProduct.setFutureTickets(salesLedgerProduct.getFutureTickets().add(productRecord.getTicketsNum().subtract(productRecordDto.getTicketsNum())));
+            salesLedgerProduct.setTicketsAmount(productRecordDto.getTicketsAmount());
+            salesLedgerProduct.setTicketsNum(productRecordDto.getTicketsNum());
             salesLedgerProductMapper.updateById(salesLedgerProduct);
-
         }
         PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(productRecord.getPurchaseLedgerId());
         if (purchaseLedger != null) {
             purchaseLedger.setReceiptPaymentAmount(purchaseLedger.getReceiptPaymentAmount());
         }
         BeanUtils.copyProperties(productRecordDto,productRecord);
+        productRecord.setFutureTicketsAmount(productRecord.getFutureTickets().multiply(productRecord.getTaxInclusiveUnitPrice()));
         productRecordMapper.updateById(productRecord);
 
         return AjaxResult.success("淇敼鎴愬姛");
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index 4c85afb..7e76aa9 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -264,8 +264,14 @@
 
         // 淇敼浜у搧淇℃伅
         for (ProductRecord productRecord : productRecords) {
-            ticketRegistrations.get(0).setInvoiceAmount(ticketRegistrations.get(0).getInvoiceAmount().subtract(productRecords.get(0).getTicketsAmount()));
-            ticketRegistrationMapper.updateById(ticketRegistrations.get(0));
+            BigDecimal subtract = ticketRegistrations.get(0).getInvoiceAmount().subtract(productRecords.get(0).getTicketsAmount());
+            // 灏忎簬绛変簬0鍒犻櫎 锛屽ぇ浜�0淇敼
+            if(subtract.compareTo(BigDecimal.ZERO) <= 0){
+                ticketRegistrationMapper.deleteById(ticketRegistrations.get(0));
+            }else if(subtract.compareTo(BigDecimal.ZERO) > 0){
+                ticketRegistrations.get(0).setInvoiceAmount(subtract);
+                ticketRegistrationMapper.updateById(ticketRegistrations.get(0));
+            }
             LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>();
             salesLedgerProductLambdaQueryWrapper.eq(SalesLedgerProduct::getId, productRecord.getSaleLedgerProjectId())
                     .eq(SalesLedgerProduct::getType, 2);
@@ -353,6 +359,7 @@
 
             if (ticketRegistration.getStatus()) {
                 ticketRegistrationIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getUnPaymentAmountTotal()));
+                ticketRegistrationIPage.setTotal(ticketRegistrationIPage.getRecords().size());
             }
         }
         return ticketRegistrationIPage;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
index c0d4ebd..56003b7 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -64,10 +64,7 @@
             for (SalesLedgerProduct productDatum : productData) {
                 // 濡傛灉寮�绁ㄦ暟涓�0 璺宠繃
                 BigDecimal currentInvoiceNum = productDatum.getCurrentInvoiceNum();
-                if (null == currentInvoiceNum) {
-                    continue;
-                }
-                if(BigDecimal.ZERO.compareTo(currentInvoiceNum) == 0){
+                if(null == currentInvoiceNum || BigDecimal.ZERO.compareTo(currentInvoiceNum) == 0){
                     continue;
                 }
                 invoiceAmountTotal = invoiceAmountTotal.add(currentInvoiceNum);
diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml
index 52ec0a3..e1a12c6 100644
--- a/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/src/main/resources/mapper/system/SysUserMapper.xml
@@ -207,6 +207,7 @@
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			<if test="remark != null">remark = #{remark},</if>
+			<if test="tenantId != null">tenant_id = #{tenantId},</if>
  			update_time = sysdate()
  		</set>
  		where user_id = #{userId}

--
Gitblit v1.9.3