Explorar el Código

应付账款模块bug修复

1. 查询出来的账户数据不对, 把其他租户家的数据也查询出来了
2. 应付概览-上面的统计数据也把不同租户的数据混淆了
3. 应付账款-应付概览	查询条件查询汇总数据报错
4. 应付账款-应付概览	按照统计日期进行查询的时候报错
lipf hace 4 meses
padre
commit
69b9f0f89a

+ 6 - 3
commons/src/main/java/com/jzg/commons/entity/dto/SysUserAccountPageParam.java

@@ -4,9 +4,12 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 
+
+@EqualsAndHashCode(callSuper = true)
 @Schema(description = "用户账户分页查询dto")
 @Data
 public class SysUserAccountPageParam extends PageRequest {
@@ -19,9 +22,9 @@ public class SysUserAccountPageParam extends PageRequest {
 
     @Schema(description = "统计日期开始")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime createTimeStart;
+    private LocalDate createTimeStart;
 
     @Schema(description = "统计日期结束")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime createTimeEnd;
+    private LocalDate createTimeEnd;
 }

+ 3 - 3
commons/src/main/java/com/jzg/commons/entity/dto/SysUserAccountParam.java

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 
 @Schema(description = "应付统计查询dto")
 @Data
@@ -18,10 +18,10 @@ public class SysUserAccountParam {
 
     @Schema(description = "统计日期开始")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime createTimeStart;
+    private LocalDate createTimeStart;
 
     @Schema(description = "统计日期结束")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDateTime createTimeEnd;
+    private LocalDate createTimeEnd;
 
 }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/controller/AccountCardController.java

@@ -37,7 +37,7 @@ public class AccountCardController extends BaseController {
      */
     @PostMapping("/cardList")
     @Operation(summary = "账户列表分页")
-    public HttpResult cardList(@RequestBody AccountCardParam param){
+    public HttpResult<Page<AccountCardVo>> cardList(@RequestBody AccountCardParam param){
         Page<AccountCardVo> result = accountCardService.queryPage(param);
         return HttpResult.ok(result);
     }

+ 14 - 5
tenant/organization/src/main/java/com/jzg/organization/controller/AmountAuditingController.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.controller;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
@@ -11,6 +12,8 @@ import com.jzg.commons.entity.vo.AmountAuditVo;
 import com.jzg.organization.service.SysAmountAuditingService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -20,17 +23,21 @@ import java.math.BigDecimal;
 @RestController
 @RequestMapping("/amountAuditing")
 public class AmountAuditingController extends BaseController {
+    private static final Logger log = LoggerFactory.getLogger(AmountAuditingController.class);
 
     @Autowired
     private SysAmountAuditingService sysAmountAuditingService;
+    @Autowired
+    private BaseController baseController;
 
     /**
      * 提现申请列表分页
-     * @return
+     * @return HttpResult<Page<AmountAuditVo>> 提现申请
      */
     @PostMapping("/auditList")
     @Operation(summary = "提现申请列表分页")
-    public HttpResult auditList(@RequestBody AmountAuditParam param){
+    public HttpResult<Page<AmountAuditVo>> auditList(@RequestBody AmountAuditParam param){
+        log.info("应付账款-体现申请-查询:param=[{}]", JSONUtil.toJsonStr(param));
         Page<AmountAuditVo> result = sysAmountAuditingService.queryPage(param);
         return HttpResult.ok(result);
     }
@@ -68,8 +75,10 @@ public class AmountAuditingController extends BaseController {
      */
     @PostMapping("/auditReceive")
     @Operation(summary = "领取提现申请")
-    public HttpResult auditReceive(@RequestParam("id") String id){
-        sysAmountAuditingService.auditReceive(id);
+    public HttpResult<String> auditReceive(@RequestParam("id") String id){
+        String userName = baseController.getUserName();
+        log.info("用户[{}]领取序号为[{}]的体现申请", userName, id);
+        sysAmountAuditingService.auditReceive(id, userName);
         return HttpResult.ok();
     }
 
@@ -108,7 +117,7 @@ public class AmountAuditingController extends BaseController {
 
     @PostMapping("/myPayment")
     @Operation(summary = "我的付款")
-    public HttpResult myPayment(@RequestBody AmountAuditParam param){
+    public HttpResult<Page<AmountAuditVo>> myPayment(@RequestBody AmountAuditParam param){
         Page<AmountAuditVo> amountAuditVoPage = sysAmountAuditingService.myPayment(param);
         return HttpResult.ok(amountAuditVoPage);
     }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/InvAccountCardService.java

@@ -18,7 +18,7 @@ public interface InvAccountCardService extends IService<InvAccountCard> {
     /**
      * 账户管理列表分页
      * @param param
-     * @return
+     * @return Page<AccountCardVo> 付款账户列表
      */
     Page<AccountCardVo> queryPage(AccountCardParam param);
 

+ 4 - 3
tenant/organization/src/main/java/com/jzg/organization/service/SysAmountAuditingService.java

@@ -35,9 +35,10 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditing> {
     /**
      * 领取提现申请
      *
-     * @param id
+     * @param id 提现申请的序号
+     * @param receiveUser 领取人
      */
-    void auditReceive(String id);
+    void auditReceive(String id, String receiveUser);
 
     /**
      * 放弃领取提现申请
@@ -67,7 +68,7 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditing> {
     /**
      * 我的付款
      * @param param
-     * @return
+     * @return Page<AmountAuditVo>
      */
     Page<AmountAuditVo> myPayment(AmountAuditParam param);
 

+ 2 - 3
tenant/organization/src/main/java/com/jzg/organization/service/impl/InvAccountCardServiceImpl.java

@@ -32,9 +32,8 @@ public class InvAccountCardServiceImpl extends ServiceImpl<InvAccountCardMapper,
 
     @Override
     public Page<AccountCardVo> queryPage(AccountCardParam param) {
-        log.info("财务中心-账户管理-查询:param=[{}]", JSONUtil.toJsonStr(param));
-        Page<AccountCardVo> page = baseMapper.queryPage(param.getPage(), param);
-        return page;
+        log.info("财务中心-账户管理-查询付款账户列表:param=[{}]", JSONUtil.toJsonStr(param));
+        return baseMapper.queryPage(param.getPage(), param);
     }
 
     @Override

+ 42 - 29
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -24,6 +25,8 @@ import com.jzg.organization.state.AuditState;
 import com.jzg.organization.state.listener.AuditStateListener;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,11 +41,12 @@ import java.util.concurrent.TimeUnit;
 /**
 * @author dongxin
 * @description 针对表【sys_amount_auditing(提现申请表)】的数据库操作Service实现
-* @createDate 2025-07-11 11:05:25
+* @date 2025-07-11 11:05:25
 */
 @Service
 public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditing>
     implements SysAmountAuditingService {
+    private static final Logger log = LoggerFactory.getLogger(SysAmountAuditingServiceImpl.class);
 
     @Autowired
     private BaseController baseController;
@@ -88,8 +92,14 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         return bigDecimal;
     }
 
+    /**
+     * 领取提现申请
+     *
+     * @param id 提现申请的序号
+     * @param receiveUser 领取人
+     */
     @Override
-    public void auditReceive(String id) {
+    public void auditReceive(String id, String receiveUser) {
         SysAmountAuditing audit = this.getById(id);
         if(audit.getAuditingStatus() > 0){
             if(audit.getAuditingStatus() == 1){
@@ -97,33 +107,30 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
             }else{
                 AssertionUtils.isFail(true, "提现已驳回请刷新列表");
             }
-            // 未审核
+        }
+        // 未审核
+        if(StringUtils.isNotBlank(audit.getReceiveUser())){
+            if(receiveUser.equals(audit.getReceiveUser())){
+                // redis 锁定按钮
+                RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
+                bucket.set(1, 10, TimeUnit.MINUTES);
+            }else{
+                AssertionUtils.isFail(true, "提现申请已被" + audit.getReceiveUser() + "领取!");
+            }
         }else{
-            String userName = baseController.getUserName();
-            if(StringUtils.isNotBlank(audit.getReceiveUser())){
-                if(userName.equals(audit.getReceiveUser())){
-                    // redis 锁定按钮
-                    RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
-                    bucket.set(1, 10, TimeUnit.MINUTES);
-                }else{
-                    AssertionUtils.isFail(true, "提现申请已被" + audit.getReceiveUser() + "领取!");
-                }
+            LambdaQueryWrapper<SysAmountAuditing> wrapper = new LambdaQueryWrapper<>();
+            wrapper.like(SysAmountAuditing::getReceiveUser, receiveUser);
+            long count = this.count(wrapper);
+            if(count >= 10){
+                AssertionUtils.isFail(true, "超出10次领取限制,请先审核后再领取订单!");
             }else{
-                LambdaQueryWrapper<SysAmountAuditing> wrapper = new LambdaQueryWrapper<>();
-                wrapper.like(SysAmountAuditing::getReceiveUser, userName);
-                long count = this.count(wrapper);
-                if(count >= 10){
-                    AssertionUtils.isFail(true, "超出10次领取限制,请先审核后再领取订单!");
-                }else{
-                    // 领取订单
-                    audit.setReceiveUser(userName);
-                    audit.setReceiveTime(LocalDateTime.now());
-                    this.updateById(audit);
-
-                    // redis 锁定按钮
-                    RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
-                    bucket.set(1, 10, TimeUnit.MINUTES);
-                }
+                // 领取订单
+                audit.setReceiveUser(receiveUser);
+                audit.setReceiveTime(LocalDateTime.now());
+                this.updateById(audit);
+                // redis 锁定按钮
+                RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
+                bucket.set(1, 10, TimeUnit.MINUTES);
             }
         }
     }
@@ -156,6 +163,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void verifyAmount(AmountAuditEditParam param) {
+        String userName = baseController.getUserName();
+        log.info("用户开始进行付款操作。userName=[{}],param=[{}]",userName,JSONUtil.toJsonStr(param));
         SysAmountAuditing audit = this.getById(param.getId());
         if(audit.getAuditingStatus() > 0){
             if(audit.getAuditingStatus() == 1){
@@ -167,7 +176,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         if(StringUtils.isBlank(audit.getReceiveUser())){
             AssertionUtils.isFail(true, "请领取提现申请后再进行付款,返回待付款提现申请列表!");
         }
-        String userName = baseController.getUserName();
+
         if (!userName.equals(audit.getReceiveUser())) {
             AssertionUtils.isFail(true, "申请已被"+audit.getReceiveUser()+"领取返回待付款提现申请列表!");
         }
@@ -185,6 +194,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
                 AssertionUtils.isFail(audit.getAmount().compareTo(audit.getBalanceAmount()) > 0, "提现金额大于账户余额!");
 
                 if(userAccount.getSumAmount().compareTo(audit.getAmount()) < 0){
+                    log.info("账户金额少于提现金额,请审核账户。 userId=[{}}], userAccount.getSumAmount()=[{}],audit.getAmount()=[{}]",userAccount.getUserId(), userAccount.getSumAmount(), audit.getAmount());
                     throw new SystemException("账户金额少于提现金额,请审核账户");
                 }
                 userAccount.setSumAmount(userAccount.getSumAmount().subtract(audit.getAmount()));
@@ -202,6 +212,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
 
     @Override
     public void rejectAmount(AmountAuditRejectParam param) {
+        String userName = baseController.getUserName();
+        log.info("用户[{}]驳回体现申请. param=[{}]",userName,JSONUtil.toJsonStr(param));
         SysAmountAuditing audit = this.getById(param.getId());
         if(audit.getAuditingStatus() > 0){
             if(audit.getAuditingStatus() == 1){
@@ -213,7 +225,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         if(StringUtils.isBlank(audit.getReceiveUser())){
             AssertionUtils.isFail(true, "请领取任务后再进行审核关闭弹窗,刷新列表");
         }
-        String userName = baseController.getUserName();
+
         if (!userName.equals(audit.getReceiveUser())) {
             AssertionUtils.isFail(true, "申请已被"+audit.getReceiveUser()+"领取返回待付款提现申请列表!");
         }
@@ -234,6 +246,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
 
     @Override
     public Page<AmountAuditVo> myPayment(AmountAuditParam param) {
+        log.info("应付账款-我的付款。param=[{}]", JSONUtil.toJsonStr(param));
         Page<AmountAuditVo> amountAuditVoPage = baseMapper.queryPaymentPage(param.getPage(), param, baseController.getUserName());
         return amountAuditVoPage;
     }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -80,7 +80,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
      */
     @Override
     public Page<SysUserAccountVo> accountList(SysUserAccountPageParam param) {
-        log.info("查询账户列表:param=[{}]", JSONUtil.toJsonStr(param));
+        log.info("查询账户列表(应付概览页面):param=[{}]", JSONUtil.toJsonStr(param));
         return baseMapper.accountList(param.getPage(), param);
     }
 

+ 4 - 2
tenant/organization/src/main/resources/mapper/SysUserAccountMapper.xml

@@ -31,7 +31,8 @@
             ROUND(SUM(sua.sum_amount_unpaid), 2) AS notPaidSum                   -- 未付总计
         FROM
             sys_user_account sua
-            LEFT JOIN sys_user_jzg_info suji on suji.user_id = sua.user_id
+            INNER JOIN sys_user_jzg_info suji on suji.user_id = sua.user_id
+            INNER JOIN sys_user su on su.id = suji.user_id
         <where>
             <if test="param.salesman != null and param.salesman != ''">
                 and (su.username = #{param.salesman} or su.mobile = #{param.salesman})
@@ -47,7 +48,7 @@
     </select>
     <select id="accountList" resultType="com.jzg.commons.entity.vo.SysUserAccountVo">
         SELECT
-        sua.id,suji.name,su.mobile, suji.type_attr as attrType, so.name as organizationName,
+        sua.id, suji.user_id , suji.system_code, suji.name,su.mobile, suji.type_attr as attrType, so.name as organizationName,
         sd.name as deptName, sua.sum_amount as sumAmount, sua.sum_amount_paid as sumAmountPaid,
         sua.sum_amount_unpaid as sumAmountUnpaid, suji.work_number as workNumber,
         ( select uu.name from sys_user_jzg_info uu where uu.id = suji.leader_id ) as leaderName
@@ -59,6 +60,7 @@
         LEFT JOIN sys_organization_user_link soul on soul.user_id = suji.user_id
         LEFT JOIN sys_organization so on soul.organization_id = so.id
         <where>
+            suji.system_code is not null
             <if test="param.salesman != null and param.salesman != ''">
                 and (su.username = #{param.salesman} or su.mobile = #{param.salesman})
             </if>