Browse Source

请款优化

24282 2 năm trước cách đây
mục cha
commit
9061ac33a7

+ 29 - 2
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/funds/v2/service/impl/RequestFundsV2FlowServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package com.fjhx.funds.v2.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.fjhx.activiti.SubmitFlowCondition;
@@ -39,6 +40,7 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.constant.AttachmentConstant;
 import org.springblade.common.constant.CurrencyCodeEnum;
+import org.springblade.common.constant.CurrencyTypeEnum;
 import org.springblade.common.enums.YesOrNoEnum;
 import org.springblade.core.launch.constant.FlowConstant;
 import org.springblade.core.log.exception.ServiceException;
@@ -242,9 +244,34 @@ public class RequestFundsV2FlowServiceImpl implements IRequestFundsV2FlowService
             uuid = entity.getId();
         }
 
+
+        // 10:预支,20:报销,30:核销 40:其他付款
+        String paymentRequestType = entity.getPaymentRequestType();
+        String paymentRequestTypeStr;
+        switch (paymentRequestType) {
+            case "10":
+                paymentRequestTypeStr = "预支";
+                break;
+            case "20":
+                paymentRequestTypeStr = "报销";
+                break;
+            case "30":
+                paymentRequestTypeStr = "核销";
+                break;
+            default:
+                paymentRequestTypeStr = "其他付款";
+                break;
+        }
+
         // 流程标题
-        String title = AuthUtil.getUserName() + " 在" +
-                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "发起了 请款审批流程";
+        String title = StrUtil.format("{} 发起的请款审批(类型:{}, 金额:{}{})",
+                AuthUtil.getUserName(),
+                paymentRequestTypeStr,
+                CurrencyTypeEnum.getNameByKey(entity.getCurrencyType()),
+                entity.getRequestedAmount().toString()
+        );
+        // String title = AuthUtil.getUserName() + " 在" +
+        //         new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "发起了 请款审批流程";
 
         ExampleResult exampleResult = null;
         if (StringUtils.isBlank(entity.getProcessInstanceId())) {

+ 26 - 9
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/funds/v2/service/impl/RequestFundsV2ServiceImpl.java

@@ -19,6 +19,7 @@ package com.fjhx.funds.v2.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.activiti.ProcessTaskReferBuilder;
 import com.fjhx.activiti.ProcessTaskResult;
 import com.fjhx.activiti.SubmitFlowCondition;
@@ -57,6 +58,7 @@ import org.springblade.common.constant.AttachmentConstant;
 import org.springblade.common.constant.CurrencyCodeEnum;
 import org.springblade.common.enums.YesOrNoEnum;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BasicsEntity;
 import org.springblade.core.mp.base.BasicsServiceImpl;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -160,11 +162,11 @@ public class RequestFundsV2ServiceImpl extends BasicsServiceImpl<RequestFundsV2M
             Map<String, User> userMap = iUserClient.userInfoByIdsToMap(userIds);
 
             //下个节点审批人ID集合
-            List<String> processInstanceUserIds = list.stream().filter(o -> StringUtils.isNotBlank(o.getProcessInstanceUserId())).map(RequestFundsV2::getProcessInstanceUserId).distinct().collect(Collectors.toList());
+            List<String> processInstanceUserIds = list.stream().map(RequestFundsV2::getProcessInstanceUserId).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
             Map<String, User> processUserMap = iUserClient.userInfoByIdsToMap(processInstanceUserIds);
 
             //打款账号ID集合
-            List<String> accountIds = list.stream().filter(o -> StringUtils.isNotBlank(o.getAccountId())).map(RequestFundsV2::getAccountId).distinct().collect(Collectors.toList());
+            List<String> accountIds = list.stream().map(RequestFundsV2::getAccountId).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
             Map<String, FundAccount> fundAccountsMap = new HashMap<>();
             if (CollectionUtils.isNotEmpty(accountIds)) {
                 List<FundAccount> fundAccounts = iFundAccountService.lambdaQuery().in(FundAccount::getId, accountIds).list();
@@ -173,13 +175,23 @@ public class RequestFundsV2ServiceImpl extends BasicsServiceImpl<RequestFundsV2M
                 }
             }
 
-            //公司ID集合
+            // 公司ID集合
             List<String> companyIds = list.stream().map(RequestFundsV2::getCompanyId).distinct().collect(Collectors.toList());
-            //查询公司信息
+            // 查询公司信息
             Map<String, Company> companyMap = iCompanyService.getByIdsToMap(companyIds);
 
+            List<String> idList = list.stream().filter(item -> Objects.equals("10", item.getPaymentRequestType()))
+                    .map(BasicsEntity::getId).collect(Collectors.toList());
+
+            Map<String, List<RequestFundsV2>> requestFundsV2Map = new HashMap<>();
+            if (idList.size() > 0) {
+                List<RequestFundsV2> requestFundsV2List = this.list(
+                        Wrappers.<RequestFundsV2>lambdaQuery().in(RequestFundsV2::getAdvanceReceiptId, idList));
+                requestFundsV2Map = requestFundsV2List.stream().collect(Collectors.groupingBy(RequestFundsV2::getAdvanceReceiptId));
+            }
+
             for (RequestFundsV2 v2 : list) {
-                //处理请款明细
+                // 处理请款明细
 //                if (MapUtils.isNotEmpty(oldDetailsMap) && CollectionUtils.isNotEmpty(oldDetailsMap.get(v2.getId()))) {
 //                    v2.setOldDetails(oldDetailsMap.get(v2.getId()));
 //                } else {
@@ -213,16 +225,21 @@ public class RequestFundsV2ServiceImpl extends BasicsServiceImpl<RequestFundsV2M
                     v2.setAccountName(account.getName());
                 }
 
-                //处理公司名称
+                // 处理公司名称
                 if (MapUtils.isNotEmpty(companyMap) && Func.isNotEmpty(companyMap.get(v2.getCompanyId()))) {
                     Company company = companyMap.get(v2.getCompanyId());
                     v2.setCompanyName(company.getNameChinese());
                 }
 
-                //核销状态显示
-                if(v2.getPaymentRequestType().equals("10")){
-                    v2.setVerificationStatus("预支(待核销)");
+                // 核销状态显示
+                if (v2.getPaymentRequestType().equals("10")) {
+                    String id = v2.getId();
+                    List<RequestFundsV2> requestFundsV2List = requestFundsV2Map.get(id);
+                    if (ObjectUtil.isNotEmpty(requestFundsV2List)) {
+                        v2.setVerificationList(requestFundsV2List);
+                    }
                 }
+
             }
         }
         return list;

+ 2 - 6
bladex-saas-project/saas-business-tradeerp/src/main/java/com/fjhx/track/service/impl/TrackServiceImpl.java

@@ -17,10 +17,8 @@
 package com.fjhx.track.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.attachment.IAttachmentApi;
-import com.fjhx.contract.entity.Contract;
 import com.fjhx.contract.service.IContractService;
 import com.fjhx.message.enums.MessageNoticeEnum;
 import com.fjhx.message.service.IMessageNoticeService;
@@ -29,7 +27,6 @@ import com.fjhx.purchase.service.IPurchaseContractService;
 import com.fjhx.track.entity.Track;
 import com.fjhx.track.mapper.TrackMapper;
 import com.fjhx.track.service.ITrackService;
-import com.fjhx.tracknode.service.ITrackNodeService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.constant.AttachmentConstant;
@@ -38,14 +35,13 @@ import org.springblade.common.enums.YesOrNoEnum;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.system.attachment.entity.Attachment;
-import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
@@ -121,7 +117,7 @@ public class TrackServiceImpl extends ServiceImpl<TrackMapper, Track> implements
         String msg = purchaseContract.getContractCode()+" 合同有新的跟进记录(节点:"+iDictBizClientValue.getData()+"),请及时查看";
         String createUser = contractService.getById(purchaseContract.getContractId()).getCreateUser();
         // 发送消息通知
-        iMessageNoticeService.send(track.getId(), Arrays.asList(createUser), msg, MessageNoticeEnum.MESSAGE_NOTICE_TYPE_26.getKey());
+        iMessageNoticeService.send(track.getId(), Collections.singletonList(createUser), msg, MessageNoticeEnum.MESSAGE_NOTICE_TYPE_26.getKey());
         return true;
     }
 

+ 7 - 7
bladex-saas-project/saas-entity/src/main/java/com/fjhx/funs/v2/RequestFundsV2.java

@@ -53,7 +53,7 @@ public class RequestFundsV2 extends BasicsEntity {
     private String advanceReceiptId;
 
     /**
-     * 请款类型 : 10:预支,1:报销,2:核销
+     * 请款类型: 10:预支,20:报销,30:核销 40:其他付款
      */
     private String paymentRequestType;
 
@@ -73,7 +73,7 @@ public class RequestFundsV2 extends BasicsEntity {
     private BigDecimal differenceAmount;
 
     /**
-     * 货币类型。 1:人民币  2:美元    3:欧元
+     * 货币类型。 1:人民币  2:美元 3:欧元 4:英镑
      */
     private String currencyType;
 
@@ -264,13 +264,13 @@ public class RequestFundsV2 extends BasicsEntity {
     @TableField(exist = false)
     private String capitalMatter;
 
-    /**
-     * 核销状态
-     */
     @TableField(exist = false)
-    private String verificationStatus;
+    private Integer type;
 
+    /**
+     * 核销列表
+     */
     @TableField(exist = false)
-    private Integer type;
+    private List<RequestFundsV2> verificationList;
 
 }

+ 11 - 35
bladex/blade-common/src/main/java/org/springblade/common/constant/CurrencyTypeEnum.java

@@ -1,13 +1,13 @@
 package org.springblade.common.constant;
 
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.StringUtils;
+import lombok.Getter;
 
 import java.util.LinkedHashMap;
 
 /**
  * 货币类型枚举
  */
+@Getter
 public enum CurrencyTypeEnum {
     CURRENCY_TYPE_USD("1", "¥"),// 人民币
     CURRENCY_TYPE_RMB("2", "$"),// 美元
@@ -15,52 +15,28 @@ public enum CurrencyTypeEnum {
     CURRENCY_TYPE_STERLING("4", "£"),// 欧元
     ;
 
-    private String key;
+    private final String key;
 
-    private String value;
+    private final String value;
 
-    private static LinkedHashMap<String, String> map = new LinkedHashMap<>();
+    private static final LinkedHashMap<String, String> map = new LinkedHashMap<>();
 
-    CurrencyTypeEnum(String key, String value) {
-        this.key = key;
-        this.value = value;
-    }
-
-    /**
-     * 获取枚举map
-     *
-     * @return
-     */
-    public static LinkedHashMap<String, String> getMap() {
-        if (MapUtils.isNotEmpty(map)) {
-            return map;
-        }
+    static {
         for (CurrencyTypeEnum ms : values()) {
             map.put(ms.key, ms.value);
         }
-        return map;
+    }
+
+    CurrencyTypeEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
     }
 
     /**
      * 通过key获取名称
-     *
-     * @param key
-     * @return
      */
     public static String getNameByKey(String key) {
-        if (StringUtils.isBlank(key)) {
-            return "";
-        }
-        LinkedHashMap<String, String> map = getMap();
         return map.getOrDefault(key, "");
     }
 
-    public String getKey() {
-        return key;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
 }