333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import BaseService from "../baseService";
import { FinanceBankBiz } from "../../entity/finance/biz/financeBankBiz";
import { ResultInfo } from "../../public/commonInterface";
import { FinanceBankAccount } from "../../entity/finance/base/financeBankAccount";
import { FinanceFlow } from "../../entity/finance/base/financeFlow";
 
/**
 *账户间存取款
 */
export default class BankBizService extends BaseService {
  //#region 批量审核和编辑页面中审核都是执行此方法
  public async batchAuditing(): Promise<ResultInfo> {
    let { ctx } = this;
    let body = ctx.request.body;
    let userInfo = await ctx.helper.userInfo();
    try {
      let idValues = body.idValues;
      if (!Array.isArray(idValues)) {
        this.info.result = false;
        this.info.msg = "没有可执行的数据";
        return this.info;
      }
      for (var idValue of idValues) {
        let dataInfo = await this.dbRead.findOne(FinanceBankBiz, idValue);
        if (!dataInfo) {
          this.info.result = false;
          this.info.msg = "单据不存在";
          return this.info;
        }
        if (dataInfo.banStatus != "新建") {
          this.info.result = false;
          this.info.msg = "只有新建的单子才允许审核";
          return this.info;
        }
        if (dataInfo.auditing !== 0) {
          this.info.result = false;
          this.info.msg = "只有新建的单子才允许审核";
          return this.info;
        }
        await this.dbWrite.update(
          FinanceBankBiz,
          {
            bankBiz_Id: dataInfo.bankBiz_Id,
            userProduct_Id: userInfo.userProduct_Id
          },
          {
            banStatus: "审核成功",
            auditing: 2,
            auditor: userInfo.userTrueName,
            auditDate: new Date()
          }
        );
        // 账户流水
        await this.dbRead.findOne(FinanceFlow, {
          where: {
            bankAccount_Id: dataInfo.bankAccount_Id || dataInfo.bankAccount_Id_In
          },
          order: {
            bankAccount_Id: "DESC"
          }
        });
        //转入账户
        if (dataInfo.moneyRMB) {
          let bankAccountList_In = await this.dbRead.findOne(FinanceBankAccount, {
            where: {
              //转入id_In
              bankAccount_Id: dataInfo.bankAccount_Id_In
            }
          });
          const currentRMB_In = (bankAccountList_In.currentRMB += dataInfo.moneyRMB);
          await this.dbWrite.update(
            FinanceBankAccount,
            {
              //转入id_In
              bankAccount_Id: dataInfo.bankAccount_Id_In
            },
            {
              currentRMB: currentRMB_In
            }
          );
          //生成转入账户流水
          let newFlow = new FinanceFlow();
          newFlow.flowCode = await this.ctx.service.common.getCodeRegular(1698);
          newFlow.flowName = "转入账户";
          newFlow.bankAccountCode = bankAccountList_In.bankAccountCode;
          newFlow.bankAccountName = bankAccountList_In.bankAccountName;
          newFlow.billCode = bankAccountList_In.bankAccount;
          newFlow.incomeRMB = dataInfo.moneyRMB;
          newFlow.outcomeRMB = 0;
          newFlow.balanceRMB = bankAccountList_In.currentRMB;
          newFlow.sourceType = "转入金额";
 
          newFlow.userTrueName = userInfo.userTrueName;
          newFlow.deptName = userInfo.deptName;
          await this.setAccountInfo(newFlow);
          await this.dbWrite.save(newFlow);
        }
        //转出账户
        let bankAccountList = await this.dbRead.findOne(FinanceBankAccount, {
          where: {
            bankAccount_Id: dataInfo.bankAccount_Id
          }
        });
        if (dataInfo.moneyRMB <= bankAccountList.currentRMB) {
          const currentRMB = (bankAccountList.currentRMB -= dataInfo.moneyRMB);
          await this.dbWrite.update(
            FinanceBankAccount,
            {
              bankAccount_Id: dataInfo.bankAccount_Id
            },
            {
              currentRMB: currentRMB
            }
          );
          // 生成转出流水
          let newFlow = new FinanceFlow();
          newFlow.flowCode = await this.ctx.service.common.getCodeRegular(1698);
          newFlow.flowName = "转出账户";
          newFlow.bankAccountCode = bankAccountList.bankAccountCode;
          newFlow.bankAccountName = bankAccountList.bankAccountName;
          newFlow.billCode = bankAccountList.bankAccount;
          newFlow.incomeRMB = 0;
          newFlow.outcomeRMB = dataInfo.moneyRMB;
          newFlow.balanceRMB = bankAccountList.currentRMB;
          newFlow.sourceType = "转出金额";
 
          newFlow.userTrueName = userInfo.userTrueName;
          newFlow.deptName = userInfo.deptName;
          await this.setAccountInfo(newFlow);
          await this.dbWrite.save(newFlow);
        } else {
          this.info.result = false;
          this.info.msg = "余额不足无法进行转出";
          return this.info;
        }
      }
      this.info.result = true;
      this.info.msg = "审核成功";
    } catch (error) {
      this.info.result = false;
      this.info.msg = "审核失败" + error.message;
    }
    return this.info;
  }
  //#endregion
}