forked from free-lancers/electricity_bill_calc_service
refactor(changes):暂时删除全部内容,并完成基本数据库连接的创建。
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model"
|
||||
"electricity_bill_calc/tools"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
@@ -19,7 +18,6 @@ import (
|
||||
type ExcelTemplateGenerator interface {
|
||||
Close()
|
||||
WriteTo(w io.Writer) (int64, error)
|
||||
WriteMeterData(meters []model.EndUserDetail) error
|
||||
}
|
||||
|
||||
type ColumnRecognizer struct {
|
||||
|
@@ -1,35 +0,0 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model"
|
||||
"io"
|
||||
)
|
||||
|
||||
var (
|
||||
endUserNonPVRecognizers = []*ColumnRecognizer{
|
||||
{Pattern: []string{"电表编号"}, Tag: "meterId", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"上期", "(总)"}, Tag: "lastPeriodOverall", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"本期", "(总)"}, Tag: "currentPeriodOverall", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"退补", "(总)"}, Tag: "adjustOverall", MatchIndex: -1, MustFill: true},
|
||||
}
|
||||
endUserPVRecognizers = append(
|
||||
endUserNonPVRecognizers,
|
||||
&ColumnRecognizer{Pattern: []string{"上期", "(尖峰)"}, Tag: "lastPeriodCritical", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"上期", "(峰)"}, Tag: "lastPeriodPeak", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"上期", "(谷)"}, Tag: "lastPeriodValley", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"本期", "(尖峰)"}, Tag: "currentPeriodCritical", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"本期", "(峰)"}, Tag: "currentPeriodPeak", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"本期", "(谷)"}, Tag: "currentPeriodValley", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"退补", "(尖峰)"}, Tag: "adjustCritical", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"退补", "(峰)"}, Tag: "adjustPeak", MatchIndex: -1},
|
||||
&ColumnRecognizer{Pattern: []string{"退补", "(谷)"}, Tag: "adjustValley", MatchIndex: -1},
|
||||
)
|
||||
)
|
||||
|
||||
func NewEndUserNonPVExcelAnalyzer(file io.Reader) (*ExcelAnalyzer[model.EndUserImport], error) {
|
||||
return NewExcelAnalyzer[model.EndUserImport](file, endUserNonPVRecognizers)
|
||||
}
|
||||
|
||||
func NewEndUserPVExcelAnalyzer(file io.Reader) (*ExcelAnalyzer[model.EndUserImport], error) {
|
||||
return NewExcelAnalyzer[model.EndUserImport](file, endUserPVRecognizers)
|
||||
}
|
@@ -1,21 +0,0 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model"
|
||||
"io"
|
||||
)
|
||||
|
||||
var meter04kVExcelRecognizers = []*ColumnRecognizer{
|
||||
{Pattern: []string{"表号"}, Tag: "code", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"户名"}, Tag: "name", MatchIndex: -1},
|
||||
{Pattern: []string{"户址"}, Tag: "address", MatchIndex: -1},
|
||||
{Pattern: []string{"联系人"}, Tag: "contact", MatchIndex: -1},
|
||||
{Pattern: []string{"电话"}, Tag: "phone", MatchIndex: -1},
|
||||
{Pattern: []string{"倍率"}, Tag: "ratio", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"序号"}, Tag: "seq", MatchIndex: -1, MustFill: true},
|
||||
{Pattern: []string{"公用设备"}, Tag: "public", MatchIndex: -1, MustFill: true},
|
||||
}
|
||||
|
||||
func NewMeterArchiveExcelAnalyzer(file io.Reader) (*ExcelAnalyzer[model.Meter04KV], error) {
|
||||
return NewExcelAnalyzer[model.Meter04KV](file, meter04kVExcelRecognizers)
|
||||
}
|
@@ -1,90 +0,0 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model"
|
||||
"io"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
type MeterNonPVExcelTemplateGenerator struct {
|
||||
file *excelize.File
|
||||
}
|
||||
|
||||
// 生成峰谷计量抄表Excel模板
|
||||
func NewMeterNonPVExcelTemplateGenerator() *MeterNonPVExcelTemplateGenerator {
|
||||
return &MeterNonPVExcelTemplateGenerator{
|
||||
file: excelize.NewFile(),
|
||||
}
|
||||
}
|
||||
|
||||
func (MeterNonPVExcelTemplateGenerator) titles() []interface{} {
|
||||
return []interface{}{
|
||||
"序号",
|
||||
"用户名称",
|
||||
"户址",
|
||||
"电表编号",
|
||||
"倍率",
|
||||
"上期表底(总)",
|
||||
"本期表底(总)",
|
||||
"退补电量(总)",
|
||||
}
|
||||
}
|
||||
|
||||
func (t *MeterNonPVExcelTemplateGenerator) Close() {
|
||||
t.file.Close()
|
||||
}
|
||||
|
||||
func (t MeterNonPVExcelTemplateGenerator) WriteTo(w io.Writer) (int64, error) {
|
||||
return t.file.WriteTo(w)
|
||||
}
|
||||
|
||||
func (t *MeterNonPVExcelTemplateGenerator) WriteMeterData(meters []model.EndUserDetail) error {
|
||||
defaultSheet := t.file.GetSheetName(0)
|
||||
stream, err := t.file.NewStreamWriter(defaultSheet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
firstCell, err := excelize.CoordinatesToCellName(1, 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
stream.SetColWidth(2, 4, 20)
|
||||
stream.SetColWidth(6, 8, 15)
|
||||
stream.SetRow(firstCell, t.titles(), excelize.RowOpts{Height: 20})
|
||||
|
||||
for index, meter := range meters {
|
||||
firstCell, err := excelize.CoordinatesToCellName(1, index+2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
customerName := ""
|
||||
if meter.CustomerName != nil {
|
||||
customerName = *meter.CustomerName
|
||||
}
|
||||
customerAddress := ""
|
||||
if meter.Address != nil {
|
||||
customerAddress = *meter.Address
|
||||
}
|
||||
if err = stream.SetRow(
|
||||
firstCell,
|
||||
[]interface{}{
|
||||
meter.Seq,
|
||||
customerName,
|
||||
customerAddress,
|
||||
meter.MeterId,
|
||||
meter.Ratio,
|
||||
meter.LastPeriodOverall,
|
||||
meter.CurrentPeriodOverall,
|
||||
meter.AdjustOverall,
|
||||
},
|
||||
excelize.RowOpts{Height: 15},
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err = stream.Flush(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
@@ -1,108 +0,0 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model"
|
||||
"io"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
type MeterPVExcelTemplateGenerator struct {
|
||||
file *excelize.File
|
||||
}
|
||||
|
||||
// 生成峰谷计量抄表Excel模板
|
||||
func NewMeterPVExcelTemplateGenerator() *MeterPVExcelTemplateGenerator {
|
||||
return &MeterPVExcelTemplateGenerator{
|
||||
file: excelize.NewFile(),
|
||||
}
|
||||
}
|
||||
|
||||
func (MeterPVExcelTemplateGenerator) titles() []interface{} {
|
||||
return []interface{}{
|
||||
"序号",
|
||||
"用户名称",
|
||||
"户址",
|
||||
"电表编号",
|
||||
"倍率",
|
||||
"上期表底(总)",
|
||||
"本期表底(总)",
|
||||
"上期表底(尖峰)",
|
||||
"本期表底(尖峰)",
|
||||
"上期表底(峰)",
|
||||
"本期表底(峰)",
|
||||
"上期表底(谷)",
|
||||
"本期表底(谷)",
|
||||
"退补电量(总)",
|
||||
"退补电量(尖峰)",
|
||||
"退补电量(峰)",
|
||||
"退补电量(谷)",
|
||||
}
|
||||
}
|
||||
|
||||
func (t *MeterPVExcelTemplateGenerator) Close() {
|
||||
t.file.Close()
|
||||
}
|
||||
|
||||
func (t MeterPVExcelTemplateGenerator) WriteTo(w io.Writer) (int64, error) {
|
||||
return t.file.WriteTo(w)
|
||||
}
|
||||
|
||||
func (t *MeterPVExcelTemplateGenerator) WriteMeterData(meters []model.EndUserDetail) error {
|
||||
defaultSheet := t.file.GetSheetName(0)
|
||||
stream, err := t.file.NewStreamWriter(defaultSheet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
firstCell, err := excelize.CoordinatesToCellName(1, 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
stream.SetColWidth(2, 4, 20)
|
||||
stream.SetColWidth(6, 17, 15)
|
||||
stream.SetRow(firstCell, t.titles(), excelize.RowOpts{Height: 20})
|
||||
|
||||
for index, meter := range meters {
|
||||
firstCell, err := excelize.CoordinatesToCellName(1, index+2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
customerName := ""
|
||||
if meter.CustomerName != nil {
|
||||
customerName = *meter.CustomerName
|
||||
}
|
||||
customerAddress := ""
|
||||
if meter.Address != nil {
|
||||
customerAddress = *meter.Address
|
||||
}
|
||||
if err = stream.SetRow(
|
||||
firstCell,
|
||||
[]interface{}{
|
||||
meter.Seq,
|
||||
customerName,
|
||||
customerAddress,
|
||||
meter.MeterId,
|
||||
meter.Ratio,
|
||||
meter.LastPeriodOverall,
|
||||
meter.CurrentPeriodOverall,
|
||||
meter.LastPeriodCritical,
|
||||
meter.CurrentPeriodCritical,
|
||||
meter.LastPeriodPeak,
|
||||
meter.CurrentPeriodPeak,
|
||||
meter.LastPeriodValley,
|
||||
meter.CurrentPeriodValley,
|
||||
meter.AdjustOverall,
|
||||
meter.AdjustCritical,
|
||||
meter.AdjustPeak,
|
||||
meter.AdjustValley,
|
||||
},
|
||||
excelize.RowOpts{Height: 15},
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err = stream.Flush(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user