作者 陈志颖

feat:账期结算增加结算功能

@@ -2,6 +2,7 @@ package command @@ -2,6 +2,7 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
5 "reflect" 6 "reflect"
6 "strings" 7 "strings"
7 8
@@ -9,10 +10,14 @@ import ( @@ -9,10 +10,14 @@ import (
9 ) 10 )
10 11
11 type PayCreditAccountCommand struct { 12 type PayCreditAccountCommand struct {
  13 + // 账期结算单ID
  14 + CreditAccountId string `cname:"账期结算单ID" json:"creditAccountId" valid:"Required"`
12 // 账期结算实付金额 15 // 账期结算实付金额
13 ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"` 16 ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"`
14 // 备注 17 // 备注
15 Remarks string `cname:"备注" json:"remarks" valid:"Required"` 18 Remarks string `cname:"备注" json:"remarks" valid:"Required"`
  19 + // 支付凭证附件
  20 + PaymentDocumentAttachment *domain.Attachment `cname:"支付凭证附件" json:"paymentDocumentAttachment" valid:"Required"`
16 // 公司ID,通过集成REST上下文获取 21 // 公司ID,通过集成REST上下文获取
17 CompanyId int64 `cname:"公司ID" json:"companyId,string" valid:"Required"` 22 CompanyId int64 `cname:"公司ID" json:"companyId,string" valid:"Required"`
18 // 组织机构ID 23 // 组织机构ID
@@ -229,10 +229,34 @@ func (creditAccountService *CreditAccountService) PayCreditAccount(payCreditAcco @@ -229,10 +229,34 @@ func (creditAccountService *CreditAccountService) PayCreditAccount(payCreditAcco
229 defer func() { 229 defer func() {
230 _ = transactionContext.RollbackTransaction() 230 _ = transactionContext.RollbackTransaction()
231 }() 231 }()
  232 + // 参数类型转换
  233 + creditAccountId, _ := strconv.ParseInt(payCreditAccountCommand.CreditAccountId, 10, 64)
  234 + var creditAccountRepository domain.CreditAccountRepository
  235 + if value, err := factory.CreateCreditAccountRepository(map[string]interface{}{
  236 + "transactionContext": transactionContext,
  237 + }); err != nil {
  238 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  239 + } else {
  240 + creditAccountRepository = value
  241 + }
  242 + creditAccount, err := creditAccountRepository.FindOne(map[string]interface{}{"creditAccountId": creditAccountId})
  243 + if err != nil {
  244 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  245 + }
  246 + if creditAccount == nil {
  247 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", strconv.FormatInt(creditAccountId, 10)))
  248 + }
  249 + if err := creditAccount.Update(tool_funs.SimpleStructToMap(payCreditAccountCommand)); err != nil {
  250 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  251 + }
  252 + if creditAccount, err := creditAccountRepository.Save(creditAccount); err != nil {
  253 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  254 + } else {
232 if err := transactionContext.CommitTransaction(); err != nil { 255 if err := transactionContext.CommitTransaction(); err != nil {
233 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 256 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
234 } 257 }
235 - return nil, nil 258 + return creditAccount, nil
  259 + }
236 } 260 }
237 261
238 // RemoveCreditAccount 移除账期结算单服务 262 // RemoveCreditAccount 移除账期结算单服务
@@ -42,6 +42,8 @@ type CreditAccount struct { @@ -42,6 +42,8 @@ type CreditAccount struct {
42 DeletedAt time.Time `json:"deletedAt"` 42 DeletedAt time.Time `json:"deletedAt"`
43 // 更新时间 43 // 更新时间
44 UpdatedAt time.Time `json:"updatedAt"` 44 UpdatedAt time.Time `json:"updatedAt"`
  45 + //备注
  46 + Remarks string `json:"remarks"`
45 } 47 }
46 48
47 type CreditAccountRepository interface { 49 type CreditAccountRepository interface {
@@ -68,5 +70,14 @@ func (creditAccount *CreditAccount) Update(data map[string]interface{}) error { @@ -68,5 +70,14 @@ func (creditAccount *CreditAccount) Update(data map[string]interface{}) error {
68 if paymentStatus, ok := data["paymentStatus"]; ok { 70 if paymentStatus, ok := data["paymentStatus"]; ok {
69 creditAccount.PaymentStatus = paymentStatus.(int32) 71 creditAccount.PaymentStatus = paymentStatus.(int32)
70 } 72 }
  73 + if paymentDocumentAttachment, ok := data["paymentDocumentAttachment"]; ok {
  74 + creditAccount.PaymentDocumentAttachment = paymentDocumentAttachment.(*Attachment)
  75 + }
  76 + if remarks, ok := data["remarks"]; ok {
  77 + creditAccount.Remarks = remarks.(string)
  78 + }
  79 + if actuallyPaidAmount, ok := data["actuallyPaidAmount"]; ok {
  80 + creditAccount.ActuallyPaidAmount = actuallyPaidAmount.(float64)
  81 + }
71 return nil 82 return nil
72 } 83 }
@@ -45,4 +45,6 @@ type CreditAccount struct { @@ -45,4 +45,6 @@ type CreditAccount struct {
45 DeletedAt time.Time `comment:"删除时间"` 45 DeletedAt time.Time `comment:"删除时间"`
46 // 更新时间 46 // 更新时间
47 UpdatedAt time.Time `comment:"更新时间"` 47 UpdatedAt time.Time `comment:"更新时间"`
  48 + // 备注
  49 + Remarks string `comment:"备注"`
48 } 50 }
@@ -26,5 +26,6 @@ func TransformToCreditAccountDomainModelFromPgModels(creditAccountModel *models. @@ -26,5 +26,6 @@ func TransformToCreditAccountDomainModelFromPgModels(creditAccountModel *models.
26 CreatedAt: creditAccountModel.CreatedAt, 26 CreatedAt: creditAccountModel.CreatedAt,
27 DeletedAt: creditAccountModel.DeletedAt, 27 DeletedAt: creditAccountModel.DeletedAt,
28 UpdatedAt: creditAccountModel.UpdatedAt, 28 UpdatedAt: creditAccountModel.UpdatedAt,
  29 + Remarks: creditAccountModel.Remarks,
29 }, nil 30 }, nil
30 } 31 }
@@ -46,6 +46,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -46,6 +46,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
46 "created_at", 46 "created_at",
47 "deleted_at", 47 "deleted_at",
48 "updated_at", 48 "updated_at",
  49 + "remarks",
49 } 50 }
50 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) 51 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
51 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) 52 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
@@ -81,6 +82,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -81,6 +82,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
81 &creditAccount.CreatedAt, 82 &creditAccount.CreatedAt,
82 &creditAccount.DeletedAt, 83 &creditAccount.DeletedAt,
83 &creditAccount.UpdatedAt, 84 &creditAccount.UpdatedAt,
  85 + &creditAccount.Remarks,
84 ), 86 ),
85 fmt.Sprintf("INSERT INTO credit_accounts (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet), 87 fmt.Sprintf("INSERT INTO credit_accounts (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
86 creditAccount.CreditAccountId, 88 creditAccount.CreditAccountId,
@@ -100,8 +102,9 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -100,8 +102,9 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
100 creditAccount.Operator, 102 creditAccount.Operator,
101 creditAccount.OperateTime, 103 creditAccount.OperateTime,
102 creditAccount.CreatedAt, 104 creditAccount.CreatedAt,
103 - creditAccount.DeletedAt, 105 + nil,
104 creditAccount.UpdatedAt, 106 creditAccount.UpdatedAt,
  107 + creditAccount.Remarks,
105 ); err != nil { 108 ); err != nil {
106 return creditAccount, err 109 return creditAccount, err
107 } 110 }
@@ -127,6 +130,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -127,6 +130,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
127 &creditAccount.CreatedAt, 130 &creditAccount.CreatedAt,
128 &creditAccount.DeletedAt, 131 &creditAccount.DeletedAt,
129 &creditAccount.UpdatedAt, 132 &creditAccount.UpdatedAt,
  133 + &creditAccount.Remarks,
130 ), 134 ),
131 fmt.Sprintf("UPDATE credit_accounts SET %s WHERE credit_account_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), 135 fmt.Sprintf("UPDATE credit_accounts SET %s WHERE credit_account_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
132 creditAccount.CreditAccountId, 136 creditAccount.CreditAccountId,
@@ -146,8 +150,9 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -146,8 +150,9 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
146 creditAccount.Operator, 150 creditAccount.Operator,
147 creditAccount.OperateTime, 151 creditAccount.OperateTime,
148 creditAccount.CreatedAt, 152 creditAccount.CreatedAt,
149 - creditAccount.DeletedAt, 153 + nil,
150 creditAccount.UpdatedAt, 154 creditAccount.UpdatedAt,
  155 + creditAccount.Remarks,
151 creditAccount.Identify(), 156 creditAccount.Identify(),
152 ); err != nil { 157 ); err != nil {
153 return creditAccount, err 158 return creditAccount, err