Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
Kivii.Finances.Addons.V4.5
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Kivii.Finances.Addons.V4.5
Commits
2e30fc6a
Commit
2e30fc6a
authored
Jan 11, 2024
by
陶然
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增ICBC模板读取接口
parent
8488c713
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
163 additions
and
32 deletions
+163
-32
Finances.Payment.Receipt.ICBC.xlsx
Src/Content/Templates/Finances.Payment.Receipt.ICBC.xlsx
+0
-0
Kivii.Finances.Addons.V4.5.csproj
Src/Kivii.Finances.Addons.V4.5.csproj
+1
-0
AssemblyInfo.cs
Src/Properties/AssemblyInfo.cs
+2
-2
RestfulReadExcel.cs
Src/RestfulReadExcel.cs
+160
-30
No files found.
Src/Content/Templates/Finances.Payment.Receipt.ICBC.xlsx
0 → 100644
View file @
2e30fc6a
File added
Src/Kivii.Finances.Addons.V4.5.csproj
View file @
2e30fc6a
...
@@ -67,6 +67,7 @@
...
@@ -67,6 +67,7 @@
<EmbeddedResource
Include=
"Content\Templates\Finances.InvoiceTitle.xlsx"
/>
<EmbeddedResource
Include=
"Content\Templates\Finances.InvoiceTitle.xlsx"
/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<EmbeddedResource
Include=
"Content\Templates\Finances.Payment.Receipt.ICBC.xlsx"
/>
<None
Include=
"packages.config"
/>
<None
Include=
"packages.config"
/>
</ItemGroup>
</ItemGroup>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
...
...
Src/Properties/AssemblyInfo.cs
View file @
2e30fc6a
...
@@ -19,5 +19,5 @@ using System.Runtime.InteropServices;
...
@@ -19,5 +19,5 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("Kivii,K5")]
[assembly: AssemblyTrademark("Kivii,K5")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyVersion("5.4.202
3.1026
0")]
[assembly: AssemblyVersion("5.4.202
4.111
0")]
[assembly: AssemblyFileVersion("5.4.202
3.1026
0")]
[assembly: AssemblyFileVersion("5.4.202
4.111
0")]
Src/RestfulReadExcel.cs
View file @
2e30fc6a
...
@@ -15,6 +15,69 @@ namespace Kivii.Finances.Addons
...
@@ -15,6 +15,69 @@ namespace Kivii.Finances.Addons
public
bool
success
{
get
;
set
;
}
public
bool
success
{
get
;
set
;
}
}
}
[
Api
(
Description
=
"读取Excel发票抬头"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
InvoiceTitleReadExcel
:
RestfulExecution
<
InvoiceTitle
>
{
public
override
object
OnExecution
(
IRequest
req
,
IResponse
res
)
{
(
Request
.
Files
.
Count
()
<
1
||
Request
.
Files
==
null
).
ThrowIfTrue
(
"未找到excel文件!"
);
var
httpFile
=
Request
.
Files
[
0
];
ExcelPackage
package
=
new
ExcelPackage
(
Request
.
Files
[
0
].
InputStream
);
(
package
.
Workbook
.
Worksheets
.
Count
==
0
).
ThrowIfTrue
(
"未找到Sheet!"
);
var
rtns
=
new
ReadExcelResponse
<
InvoiceTitle
>();
rtns
.
Results
=
new
List
<
InvoiceTitle
>();
try
{
var
sheet
=
package
.
Workbook
.
Worksheets
[
1
];
var
end
=
sheet
.
Dimension
.
End
.
Row
;
for
(
int
i
=
2
;
i
<=
end
;
i
++)
{
#
region
格式化
Excel
中每行数据
,
必填项若不符合验证条件就抛出异常
var
eCompanyName
=
sheet
.
Cells
[
i
,
2
].
Value
;
if
(
eCompanyName
==
null
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第2列不可为空,请传入不重复的名称!"
);
}
var
companyName
=
eCompanyName
.
ToString
();
var
eTaxNumber
=
sheet
.
Cells
[
i
,
3
].
Value
;
if
(
eTaxNumber
==
null
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第3列不可为空,请传入不重复的税号!"
);
}
var
taxNumber
=
eTaxNumber
.
ToString
();
var
eCompanyAddress
=
sheet
.
Cells
[
i
,
4
].
Value
;
var
companyAddress
=
eCompanyAddress
==
null
?
string
.
Empty
:
eCompanyAddress
.
ToString
();
var
ePhone
=
sheet
.
Cells
[
i
,
5
].
Value
;
var
phone
=
ePhone
==
null
?
string
.
Empty
:
ePhone
.
ToString
();
var
eBankName
=
sheet
.
Cells
[
i
,
6
].
Value
;
var
bankName
=
eBankName
==
null
?
string
.
Empty
:
eBankName
.
ToString
();
var
eBankAccount
=
sheet
.
Cells
[
i
,
7
].
Value
;
var
bankAccount
=
eBankAccount
==
null
?
string
.
Empty
:
eBankAccount
.
ToString
();
#
endregion
var
invoiceTitle
=
new
InvoiceTitle
();
invoiceTitle
.
CompanyName
=
companyName
;
invoiceTitle
.
TaxNumber
=
taxNumber
;
invoiceTitle
.
CompanyAddress
=
companyAddress
;
invoiceTitle
.
Phone
=
phone
;
invoiceTitle
.
BankName
=
bankName
;
invoiceTitle
.
BankAccount
=
bankAccount
;
if
(!
rtns
.
Results
.
Exists
(
o
=>
o
.
CompanyName
==
invoiceTitle
.
CompanyName
))
rtns
.
Results
.
Add
(
invoiceTitle
);
}
}
catch
(
Exception
ex
)
{
throw
ex
;
}
rtns
.
Total
=
rtns
.
Results
.
Count
;
rtns
.
success
=
true
;
return
rtns
;
}
}
[
Api
(
Description
=
"读取Excel收款流水"
)]
[
Api
(
Description
=
"读取Excel收款流水"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
PaymentReadReceiptExcel
:
RestfulExecution
<
Payment
>
public
class
PaymentReadReceiptExcel
:
RestfulExecution
<
Payment
>
...
@@ -143,9 +206,9 @@ namespace Kivii.Finances.Addons
...
@@ -143,9 +206,9 @@ namespace Kivii.Finances.Addons
}
}
}
}
[
Api
(
Description
=
"读取
Excel发票抬头
"
)]
[
Api
(
Description
=
"读取
工行Excel收款流水
"
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
[
RequiresAnyRole
(
SystemRoles
.
Everyone
)]
public
class
InvoiceTitleReadExcel
:
RestfulExecution
<
InvoiceTitle
>
public
class
PaymentReadIcbcReceiptExcel
:
RestfulExecution
<
Payment
>
{
{
public
override
object
OnExecution
(
IRequest
req
,
IResponse
res
)
public
override
object
OnExecution
(
IRequest
req
,
IResponse
res
)
{
{
...
@@ -154,46 +217,113 @@ namespace Kivii.Finances.Addons
...
@@ -154,46 +217,113 @@ namespace Kivii.Finances.Addons
ExcelPackage
package
=
new
ExcelPackage
(
Request
.
Files
[
0
].
InputStream
);
ExcelPackage
package
=
new
ExcelPackage
(
Request
.
Files
[
0
].
InputStream
);
(
package
.
Workbook
.
Worksheets
.
Count
==
0
).
ThrowIfTrue
(
"未找到Sheet!"
);
(
package
.
Workbook
.
Worksheets
.
Count
==
0
).
ThrowIfTrue
(
"未找到Sheet!"
);
var
rtns
=
new
ReadExcelResponse
<
InvoiceTitle
>();
var
rtns
=
new
ReadExcelResponse
<
Payment
>();
rtns
.
Results
=
new
List
<
InvoiceTitle
>();
rtns
.
Results
=
new
List
<
Payment
>();
try
try
{
{
var
sheet
=
package
.
Workbook
.
Worksheets
[
1
];
var
sheet
=
package
.
Workbook
.
Worksheets
[
1
];
var
end
=
sheet
.
Dimension
.
End
.
Row
;
var
end
=
sheet
.
Dimension
.
End
.
Row
;
for
(
int
i
=
2
;
i
<=
end
;
i
++)
for
(
int
i
=
3
;
i
<=
end
;
i
++)
{
{
#
region
格式化
Excel
中每行数据
,
必填项若不符合验证条件就抛出异常
#
region
格式化
Excel
中每行数据
,
必填项若不符合验证条件就抛出异常
var
e
CompanyName
=
sheet
.
Cells
[
i
,
2
].
Value
;
var
e
SerialNumber
=
sheet
.
Cells
[
i
,
1
].
Value
;
if
(
e
CompanyName
==
null
)
if
(
e
SerialNumber
==
null
)
{
{
throw
new
Exception
(
$"Excel第
{
i
}
行第
2列不可为空,请传入不重复的名称
!"
);
throw
new
Exception
(
$"Excel第
{
i
}
行第
1列不可为空,请传入不重复的流水号
!"
);
}
}
var
companyName
=
eCompanyName
.
ToString
();
var
serialNumber
=
eSerialNumber
.
ToString
();
var
e
TaxNumber
=
sheet
.
Cells
[
i
,
3
].
Value
;
var
e
PayerName
=
sheet
.
Cells
[
i
,
3
].
Value
;
if
(
e
TaxNumber
==
null
)
if
(
e
PayerName
==
null
)
{
{
throw
new
Exception
(
$"Excel第
{
i
}
行第3列不可为空,请传入
不重复的税号
!"
);
throw
new
Exception
(
$"Excel第
{
i
}
行第3列不可为空,请传入
付款单位
!"
);
}
}
var
taxNumber
=
eTaxNumber
.
ToString
();
var
payerName
=
ePayerName
.
ToString
();
var
type
=
PaymentType
.
Bank
;
var
eCompanyAddress
=
sheet
.
Cells
[
i
,
4
].
Value
;
//var eType = sheet.Cells[i, 4].Value;
var
companyAddress
=
eCompanyAddress
==
null
?
string
.
Empty
:
eCompanyAddress
.
ToString
();
//if (eType == null)
var
ePhone
=
sheet
.
Cells
[
i
,
5
].
Value
;
//{
var
phone
=
ePhone
==
null
?
string
.
Empty
:
ePhone
.
ToString
();
// eType = PaymentType.Bank;
var
eBankName
=
sheet
.
Cells
[
i
,
6
].
Value
;
// //throw new Exception($"Excel第{i}行第4列不可为空,请选择指定类型!");
var
bankName
=
eBankName
==
null
?
string
.
Empty
:
eBankName
.
ToString
();
//}
var
eBankAccount
=
sheet
.
Cells
[
i
,
7
].
Value
;
//if (!Enum.TryParse(eType.ToString(), true, out PaymentType type))
var
bankAccount
=
eBankAccount
==
null
?
string
.
Empty
:
eBankAccount
.
ToString
();
//{
// throw new Exception($"Excel第{i}行第4列类型不正确,请选择指定类型!");
//}
if
(
type
!=
PaymentType
.
Bank
&&
type
!=
PaymentType
.
Cash
&&
type
!=
PaymentType
.
Pos
&&
type
!=
PaymentType
.
AliPay
&&
type
!=
PaymentType
.
WeChat
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第4列类型不正确,请选择指定类型!"
);
}
var
eAmount
=
sheet
.
Cells
[
i
,
4
].
Value
;
if
(
eAmount
==
null
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第4列不可为空,请传入发生金额!"
);
}
if
(!
Decimal
.
TryParse
(
eAmount
.
ToString
(),
out
var
amount
))
{
throw
new
Exception
(
$"Excel第
{
i
}
行第4列金额格式不正确!"
);
}
if
(
amount
<=
0
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第4列金额不能小于等于零!"
);
}
var
currency
=
CurrencyUnit
.
CNY
;
//var eCurrency = sheet.Cells[i, 6].Value;
//if (eCurrency == null)
//{
// eCurrency = CurrencyUnit.CNY;
// //throw new Exception($"Excel第{i}行第6列不可为空,请传入货币单位!");
//}
//if (!Enum.TryParse(eCurrency.ToString(), true, out CurrencyUnit currency))
//{
// throw new Exception($"Excel第{i}行第6列货币单位格式不正确!");
//}
if
(
currency
!=
CurrencyUnit
.
CNY
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第6列货币单位格式不正确,请选择指定货币单位!"
);
}
var
eOperateDate
=
sheet
.
Cells
[
i
,
2
].
Value
;
if
(
eOperateDate
==
null
)
{
throw
new
Exception
(
$"Excel第
{
i
}
行第2列不可为空,请传入交易日期!"
);
}
//string operate = string.Empty;
//var eOperateTime = sheet.Cells[i, 8].Value;
//if (eOperateTime == null)
//{
// operate = eOperateDate.ToString();
// //throw new Exception($"Excel第{i}行第8列不可为空,请传入交易时间!");
//}
//else
//{
// operate = $"{eOperateDate} {eOperateTime}";
//}
if
(!
DateTime
.
TryParse
(
eOperateDate
.
ToString
(),
out
DateTime
operateTime
))
{
throw
new
Exception
(
$"Excel第
{
i
}
行第2列交易日期格式不正确!"
);
}
var
eBank
=
sheet
.
Cells
[
i
,
6
].
Value
;
var
bank
=
eBank
==
null
?
string
.
Empty
:
eBank
.
ToString
();
var
eBankNumber
=
sheet
.
Cells
[
i
,
5
].
Value
;
var
bankNumber
=
eBankNumber
==
null
?
string
.
Empty
:
eBankNumber
.
ToString
();
var
eSummary
=
sheet
.
Cells
[
i
,
10
].
Value
;
var
summary
=
eSummary
==
null
?
string
.
Empty
:
eSummary
.
ToString
();
var
eRemark
=
sheet
.
Cells
[
i
,
12
].
Value
;
var
remark
=
eRemark
==
null
?
string
.
Empty
:
eRemark
.
ToString
();
#
endregion
#
endregion
var
invoiceTitle
=
new
InvoiceTitle
();
var
payment
=
new
Payment
();
invoiceTitle
.
CompanyName
=
companyName
;
payment
.
Metadata
=
new
Dictionary
<
string
,
string
>();
invoiceTitle
.
TaxNumber
=
taxNumber
;
payment
.
SerialNumber
=
serialNumber
;
invoiceTitle
.
CompanyAddress
=
companyAddress
;
payment
.
Type
=
type
;
invoiceTitle
.
Phone
=
phone
;
payment
.
Currency
=
currency
;
invoiceTitle
.
BankName
=
bankName
;
payment
.
OperateTime
=
operateTime
;
invoiceTitle
.
BankAccount
=
bankAccount
;
payment
.
Amount
=
amount
;
if
(!
rtns
.
Results
.
Exists
(
o
=>
o
.
CompanyName
==
invoiceTitle
.
CompanyName
))
rtns
.
Results
.
Add
(
invoiceTitle
);
payment
.
PayerName
=
payerName
;
payment
.
PayerAccountName
=
bank
;
payment
.
PayerAccountSerialNumber
=
bankNumber
;
payment
.
Summary
=
summary
;
payment
.
Remark
=
remark
;
rtns
.
Results
.
Add
(
payment
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment