浏览代码

添加结汇功能

yzc 1 年之前
父节点
当前提交
09b32591f7

+ 8 - 0
hx-account/src/main/java/com/fjhx/account/controller/account/AccountRunningWaterController.java

@@ -115,4 +115,12 @@ public class AccountRunningWaterController {
         accountRunningWaterService.internalTransfer(dto);
     }
 
+    /**
+     * 结汇
+     */
+    @PostMapping("/exchangeSettlement")
+    public void exchangeSettlement(@RequestBody AccountRunningWaterDto dto) {
+        accountRunningWaterService.exchangeSettlement(dto);
+    }
+
 }

+ 48 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/enums/AccountRunningWaterEnum.java

@@ -0,0 +1,48 @@
+package com.fjhx.account.entity.account.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+//请款审批状态
+public enum AccountRunningWaterEnum {
+    ACCOUNT_PAYMENT("10", "打款"),
+    RECEIVED_PAYMENT("20", "到款登记"),
+    CLAIM("30", "到账认领"),
+    TAX_REFUND("40", "退税"),
+    INTERNAL_TRANSFER("50", "内部转账"),
+    EXCHANGE_SETTLEMENT("60", "结汇"),
+    ;
+    private static Map<String, String> map = new LinkedHashMap<>();
+    private String key;
+    private String value;
+
+    AccountRunningWaterEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (AccountRunningWaterEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/mapper/account/AccountRunningWaterMapper.java

@@ -39,4 +39,9 @@ public interface AccountRunningWaterMapper extends BaseMapper<AccountRunningWate
      * 账户资金流水表分页
      */
     List<AccountRunningWaterVo> getList(@Param("ew") QueryWrapper<Object> wrapper);
+
+    /**
+     * 修改合同结汇状态
+     */
+    void exchangeSettlementByContractId(@Param("contractId") Long contractId, @Param("status") Integer status);
 }

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/service/account/AccountRunningWaterService.java

@@ -76,4 +76,9 @@ public interface AccountRunningWaterService extends BaseService<AccountRunningWa
      * 操作余额
      */
     void changeRemainder(AccountRunningWater accountRunningWater);
+
+    /**
+     * 结汇
+     */
+    void exchangeSettlement(AccountRunningWaterDto dto);
 }

+ 54 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.account.entity.account.bo.AccountRunningWaterBo;
 import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
 import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
+import com.fjhx.account.entity.account.enums.AccountRunningWaterEnum;
 import com.fjhx.account.entity.account.po.AccountManagement;
 import com.fjhx.account.entity.account.po.AccountRemainder;
 import com.fjhx.account.entity.account.po.AccountRunningWater;
@@ -46,6 +47,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -608,4 +610,56 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         Assert.eqTrue(update, "余额操作失败,请重试!!!");
     }
 
+    /**
+     * 结汇
+     */
+    @Override
+    public void exchangeSettlement(AccountRunningWaterDto dto) {
+        dto.setTransactionTime(new Date());
+
+        //生成转出流水
+        dto.setStatus("20");//支出
+        dto.setType(AccountRunningWaterEnum.EXCHANGE_SETTLEMENT.getKey());
+        //操作余额
+        changeRemainder(dto);
+        this.save(dto);
+
+        //如果手续费不为0生成手续费
+        if (ObjectUtil.isNotEmpty(dto.getCommissionAmount()) && dto.getCommissionAmount().compareTo(BigDecimal.ZERO) != 0) {
+            AccountRunningWater commissionAccountRunningWater = new AccountRunningWater();
+            commissionAccountRunningWater.setStatus("20");
+            commissionAccountRunningWater.setType(AccountRunningWaterEnum.EXCHANGE_SETTLEMENT.getKey());
+            commissionAccountRunningWater.setRemarks(dto.getRemarks());
+            commissionAccountRunningWater.setTransactionTime(dto.getTransactionTime());
+            commissionAccountRunningWater.setAccountManagementId(dto.getAccountManagementId());
+            commissionAccountRunningWater.setAmount(dto.getCommissionAmount());
+            Assert.notEmpty(dto.getCommissionCurrency(), "手续费币种不能为空");
+            commissionAccountRunningWater.setCurrency(dto.getCommissionCurrency());
+            commissionAccountRunningWater.setRemarks("结汇手续费");
+            commissionAccountRunningWater.setBusinessId(dto.getBusinessId());
+            //操作余额
+            changeRemainder(commissionAccountRunningWater);
+            this.save(commissionAccountRunningWater);
+        }
+
+        //生成收入流水
+        AccountRunningWater inAccountRunningWater = new AccountRunningWater();
+        inAccountRunningWater.setStatus("10");
+        inAccountRunningWater.setType(AccountRunningWaterEnum.EXCHANGE_SETTLEMENT.getKey());
+        inAccountRunningWater.setRemarks(dto.getRemarks());
+        inAccountRunningWater.setTransactionTime(dto.getTransactionTime());
+        inAccountRunningWater.setAccountManagementId(dto.getInAccountManagementId());
+        inAccountRunningWater.setAmount(dto.getInAmount());
+        Assert.notEmpty(dto.getInCurrency(), "汇入入币种不能为空");
+        inAccountRunningWater.setCurrency(dto.getInCurrency());
+        inAccountRunningWater.setBusinessId(dto.getBusinessId());
+        //操作余额
+        changeRemainder(inAccountRunningWater);
+        this.save(inAccountRunningWater);
+        //修改合同为已结汇
+        DynamicDataSourceContextHolder.push(SourceConstant.SALE);
+        baseMapper.exchangeSettlementByContractId(dto.getBusinessId(), 1);
+        DynamicDataSourceContextHolder.poll();
+    }
+
 }

+ 63 - 52
hx-account/src/main/resources/mapper/account/AccountRunningWaterMapper.xml

@@ -4,29 +4,30 @@
     <!--这段代码正常是不需要跨库查询的。但是一开始封装包的时候分装的不合理,pom里面包是不能互相引用的。account包继承sale包会出现依赖冲突,目前不好改动,只能跨库查询-->
     <select id="getPage" resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
         SELECT arw.*,
-               IF
-                   (
-                           arw.type = 40,
-                           (SELECT GROUP_CONCAT(c.`code`)
-                            FROM tax_refund_details trd
-                                     LEFT JOIN bytesailing_sale.contract c ON c.id = trd.contract_id
-                            WHERE trd.account_running_water_id = arw.id),
-                           IF
-                               (
-                                       arw.type = 30, (SELECT GROUP_CONCAT(clc.contract_code)
-                                                       FROM bytesailing_sale.claim cl
-                                                                LEFT JOIN bytesailing_sale.claim_contract clc ON clc.claim_id = cl.id
-                                                       WHERE cl.business_id = arw.id),
-                                       (SELECT IF
-                                                   (
-                                                           t1.type = 20,
-                                                           (SELECT GROUP_CONCAT(c.`code`)
-                                                            FROM bytesailing_purchase.pay pa
-                                                                     LEFT JOIN bytesailing_purchase.pay_detail pad ON pad.pay_id = pa.id
-                                                               LEFT JOIN bytesailing_purchase.purchase p ON pad.purchase_id = p.id
-                                                               LEFT JOIN bytesailing_sale.contract c ON p.data_resource_id = c.id
-                                                               WHERE
-                                                               t1.business_id = pa.id ),(
+               if(arw.type = 60, (select c.`code` from bytesailing_sale.contract c where c.id = arw.business_id),
+                  IF
+                      (
+                              arw.type = 40,
+                              (SELECT GROUP_CONCAT(c.`code`)
+                               FROM tax_refund_details trd
+                                        LEFT JOIN bytesailing_sale.contract c ON c.id = trd.contract_id
+                               WHERE trd.account_running_water_id = arw.id),
+                              IF
+                                  (
+                                          arw.type = 30, (SELECT GROUP_CONCAT(clc.contract_code)
+                                                          FROM bytesailing_sale.claim cl
+                                                                   LEFT JOIN bytesailing_sale.claim_contract clc ON clc.claim_id = cl.id
+                                                          WHERE cl.business_id = arw.id),
+                                          (SELECT IF
+                                                      (
+                                                              t1.type = 20,
+                                                              (SELECT GROUP_CONCAT(c.`code`)
+                                                               FROM bytesailing_purchase.pay pa
+                                                                        LEFT JOIN bytesailing_purchase.pay_detail pad ON pad.pay_id = pa.id
+                                                                  LEFT JOIN bytesailing_purchase.purchase p ON pad.purchase_id = p.id
+                                                                  LEFT JOIN bytesailing_sale.contract c ON p.data_resource_id = c.id
+                                                                  WHERE
+                                                                  t1.business_id = pa.id ),(
 					SELECT
 						GROUP_CONCAT( t4.`code` )
 					FROM
@@ -37,33 +38,35 @@
 						t1.business_id = t2.id
 					)
 				) contractCodes
-                                        FROM account_payment t1
-                                        WHERE t1.id = arw.business_id)
-                               )
+                                           FROM account_payment t1
+                                           WHERE t1.id = arw.business_id)
+                                  )
+                      )
                    ) AS contractCodes,
-               IF
-                   (
-                           arw.type = 40,
-                           (SELECT GROUP_CONCAT(c.`id`)
-                            FROM tax_refund_details trd
-                                     LEFT JOIN bytesailing_sale.contract c ON c.id = trd.contract_id
-                            WHERE trd.account_running_water_id = arw.id),
-                           IF
-                               (
-                                       arw.type = 30, (SELECT GROUP_CONCAT(clc.contract_id)
-                                                       FROM bytesailing_sale.claim cl
-                                                                LEFT JOIN bytesailing_sale.claim_contract clc ON clc.claim_id = cl.id
-                                                       WHERE cl.business_id = arw.id),
-                                       (SELECT IF
-                                                   (
-                                                           t1.type = 20,
-                                                           (SELECT GROUP_CONCAT(c.`id`)
-                                                            FROM bytesailing_purchase.pay pa
-                                                                     LEFT JOIN bytesailing_purchase.pay_detail pad ON pad.pay_id = pa.id
-                                                               LEFT JOIN bytesailing_purchase.purchase p ON pad.purchase_id = p.id
-                                                               LEFT JOIN bytesailing_sale.contract c ON p.data_resource_id = c.id
-                                                               WHERE
-                                                               t1.business_id = pa.id ),(
+               if(arw.type = 60, (select c.`id` from bytesailing_sale.contract c where c.id = arw.business_id),
+                  IF
+                      (
+                              arw.type = 40,
+                              (SELECT GROUP_CONCAT(c.`id`)
+                               FROM tax_refund_details trd
+                                        LEFT JOIN bytesailing_sale.contract c ON c.id = trd.contract_id
+                               WHERE trd.account_running_water_id = arw.id),
+                              IF
+                                  (
+                                          arw.type = 30, (SELECT GROUP_CONCAT(clc.contract_id)
+                                                          FROM bytesailing_sale.claim cl
+                                                                   LEFT JOIN bytesailing_sale.claim_contract clc ON clc.claim_id = cl.id
+                                                          WHERE cl.business_id = arw.id),
+                                          (SELECT IF
+                                                      (
+                                                              t1.type = 20,
+                                                              (SELECT GROUP_CONCAT(c.`id`)
+                                                               FROM bytesailing_purchase.pay pa
+                                                                        LEFT JOIN bytesailing_purchase.pay_detail pad ON pad.pay_id = pa.id
+                                                                  LEFT JOIN bytesailing_purchase.purchase p ON pad.purchase_id = p.id
+                                                                  LEFT JOIN bytesailing_sale.contract c ON p.data_resource_id = c.id
+                                                                  WHERE
+                                                                  t1.business_id = pa.id ),(
 					SELECT
 						GROUP_CONCAT( t4.`id` )
 					FROM
@@ -74,9 +77,10 @@
 						t1.business_id = t2.id
 					)
 				) contractCodes
-                                        FROM account_payment t1
-                                        WHERE t1.id = arw.business_id)
-                               )
+                                           FROM account_payment t1
+                                           WHERE t1.id = arw.business_id)
+                                  )
+                      )
                    ) AS contractIds,
                am.alias accountManagementName,
                am.corporation_id
@@ -140,4 +144,11 @@
             LIMIT #{size}
     </select>
 
+    <!-- 要切换到sale库才能执行 -->
+    <update id="exchangeSettlementByContractId">
+        update contract
+        set is_exchange_settlement = #{status}
+        where id = #{contractId}
+    </update>
+
 </mapper>

文件差异内容过多而无法显示
+ 0 - 0
hx-sale/src/main/java/com/fjhx/sale/a-json/ContractInvoiceApi.json


文件差异内容过多而无法显示
+ 0 - 0
hx-sale/src/main/java/com/fjhx/sale/a-json/ContractInvoiceDetailsApi.json


+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractSelectDto.java

@@ -48,5 +48,9 @@ public class ContractSelectDto extends BaseSelectDto {
      * 合同类型
      */
     private String contractType;
+    /**
+     * 是否结汇 1是 0不是
+     */
+    private String isExchangeSettlement;
 
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -376,4 +376,9 @@ public class Contract extends BasePo {
      */
     @TableField(exist = false)
     private String createTimeEn;
+
+    /**
+     * 是否结汇 1是 0不是
+     */
+    private String isExchangeSettlement;
 }

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -334,6 +334,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         //过滤合同类型
         wrapper.eq("t1.contract_type", dto.getContractType());
 
+        //过滤是否结汇
+        wrapper.eq("t1", Contract::getIsExchangeSettlement, dto.getIsExchangeSettlement());
+
         Page<ContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ContractVo> list = page.getRecords();
         if (CollectionUtils.isNotEmpty(list)) {

部分文件因为文件数量过多而无法显示