作者 yangfu

fix: format sql name

1 package domainService 1 package domainService
2 2
3 import ( 3 import (
  4 + "bytes"
4 "fmt" 5 "fmt"
5 "github.com/google/uuid" 6 "github.com/google/uuid"
6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 7 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
@@ -191,5 +192,29 @@ func DataField(name string, sqlType string, flag int, index int) *domain.Field { @@ -191,5 +192,29 @@ func DataField(name string, sqlType string, flag int, index int) *domain.Field {
191 } 192 }
192 193
193 func pin(name string) string { 194 func pin(name string) string {
194 - return tool_funs.ToPinYin(name, "_") 195 + pinyin := tool_funs.ToPinYin(name, "_")
  196 + newPinyin := bytes.NewBuffer(nil)
  197 + firstCharIsLetter := false
  198 + for i := range pinyin {
  199 + b := pinyin[i]
  200 + if !firstCharIsLetter {
  201 + firstCharIsLetter = isLetters(b)
  202 + }
  203 + if !firstCharIsLetter {
  204 + continue
  205 + }
  206 + if !(isDigital(b) || isLetters(b) || b == byte('_')) {
  207 + continue
  208 + }
  209 + newPinyin.WriteByte(b)
  210 + }
  211 + return newPinyin.String()
  212 +}
  213 +
  214 +func isDigital(b byte) bool {
  215 + return b >= byte('0') && b <= byte('9')
  216 +}
  217 +
  218 +func isLetters(b byte) bool {
  219 + return (b >= byte('a') && b <= byte('z')) || (b >= byte('A') && b <= byte('Z'))
195 } 220 }
@@ -94,7 +94,12 @@ func (d *FilePreviewDto) Load(fileId int, m *domain.DataLoadDataTable, file *red @@ -94,7 +94,12 @@ func (d *FilePreviewDto) Load(fileId int, m *domain.DataLoadDataTable, file *red
94 d.TableType = domain.ExcelTable.ToString() 94 d.TableType = domain.ExcelTable.ToString()
95 d.Fields = m.Fields 95 d.Fields = m.Fields
96 var fields []*domain.Field 96 var fields []*domain.Field
97 - mapData := domain.ToFieldData(m.Fields, m.Data, true) 97 + mapData := domain.ToFieldData(m.Fields, formatData(m.Data, func(s string) string {
  98 + if s == "<NA>" {
  99 + return ""
  100 + }
  101 + return s
  102 + }), true)
98 d.Data = domain.GripData(mapData, int64(m.Total)) 103 d.Data = domain.GripData(mapData, int64(m.Total))
99 d.PageNumber = m.PageNumber 104 d.PageNumber = m.PageNumber
100 105
@@ -115,6 +120,15 @@ func (ptr *PreviewDataTableService) GetFileId() int { @@ -115,6 +120,15 @@ func (ptr *PreviewDataTableService) GetFileId() int {
115 return ptr.FileId 120 return ptr.FileId
116 } 121 }
117 122
  123 +func formatData(data [][]string, f func(s string) string) [][]string {
  124 + for i := 0; i < len(data); i++ {
  125 + for j := 0; j < len(data[i]); j++ {
  126 + data[i][j] = f(data[i][j])
  127 + }
  128 + }
  129 + return data
  130 +}
  131 +
118 func NewLoadDataTableService(transactionContext *pgTransaction.TransactionContext) (*PreviewDataTableService, error) { 132 func NewLoadDataTableService(transactionContext *pgTransaction.TransactionContext) (*PreviewDataTableService, error) {
119 if transactionContext == nil { 133 if transactionContext == nil {
120 return nil, fmt.Errorf("transactionContext参数不能为nil") 134 return nil, fmt.Errorf("transactionContext参数不能为nil")