|
@@ -2,6 +2,7 @@ package services
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
+ "github.com/mozillazg/go-pinyin"
|
|
|
"github.com/tealeg/xlsx"
|
|
|
"hongze/hongze_data_crawler/models"
|
|
|
"hongze/hongze_data_crawler/utils"
|
|
@@ -36,6 +37,7 @@ func FileCoalJsm() (err error) {
|
|
|
var codeMap = make(map[string]string)
|
|
|
var indexMap = make(map[string]string)
|
|
|
var codeCompanyMap = make(map[string]string)
|
|
|
+ var indexCompanyMap = make(map[string]string)
|
|
|
var items []*models.BaseFromCoalmineMapping
|
|
|
var itemsCompany []*models.BaseFromCoalmineCompanyMapping
|
|
|
var itemsIndex []*models.BaseFromCoalmineIndex
|
|
@@ -63,14 +65,25 @@ func FileCoalJsm() (err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- indexCompanyList, err := models.GetBaseFromCoalmineIndex()
|
|
|
+ indexList, err := models.GetBaseFromCoalmineIndex()
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ utils.FileLog.Info("获取煤炭公司指标失败:", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if len(indexList) > 0 {
|
|
|
+ for _, v := range indexList {
|
|
|
+ indexMap[v.IndexName+v.DataTime] = v.DealValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ indexCompanyList, err := models.GetBaseFromCoalmineCompanyIndex()
|
|
|
if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
utils.FileLog.Info("获取煤炭公司指标失败:", err)
|
|
|
return err
|
|
|
}
|
|
|
if len(indexCompanyList) > 0 {
|
|
|
for _, v := range indexCompanyList {
|
|
|
- indexMap[v.IndexName+v.DataTime] = v.DealValue
|
|
|
+ indexCompanyMap[v.IndexName+v.DataTime] = v.DealValue
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -111,8 +124,38 @@ func FileCoalJsm() (err error) {
|
|
|
if k == 4 {
|
|
|
item := new(models.BaseFromCoalmineMapping)
|
|
|
exchange = text
|
|
|
- item.IndexName = source + "_" + province + "_" + exchange
|
|
|
- item.IndexCode = utils.MD5(item.IndexName)
|
|
|
+
|
|
|
+ exists := ContainsSpecialName(province)
|
|
|
+ var strResult string
|
|
|
+ if exists {
|
|
|
+ abbr := TrimProvinceName(province)
|
|
|
+ //取处理后公司名首字母缩写
|
|
|
+ a := pinyin.NewArgs()
|
|
|
+ rows := pinyin.Pinyin(exchange, a)
|
|
|
+ for i := 0; i < len(rows); i++ {
|
|
|
+ if len(rows[i]) != 0 {
|
|
|
+ str := rows[i][0]
|
|
|
+ pi := str[0:1]
|
|
|
+ strResult += pi
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.IndexCode = abbr + strResult
|
|
|
+ } else {
|
|
|
+ //取处理后公司名首字母缩写
|
|
|
+ a := pinyin.NewArgs()
|
|
|
+ rows := pinyin.Pinyin(province+exchange, a)
|
|
|
+ for i := 0; i < len(rows); i++ {
|
|
|
+ if len(rows[i]) != 0 {
|
|
|
+ str := rows[i][0]
|
|
|
+ pi := str[0:1]
|
|
|
+ strResult += pi
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.IndexCode = strResult
|
|
|
+ }
|
|
|
+
|
|
|
+ item.IndexName = province + exchange
|
|
|
+
|
|
|
item.Exchange = exchange
|
|
|
item.Description = description
|
|
|
item.Province = province
|
|
@@ -130,6 +173,7 @@ func FileCoalJsm() (err error) {
|
|
|
cells := row.Cells
|
|
|
for k, cell := range cells {
|
|
|
text := cell.String()
|
|
|
+ fmt.Println("text:",text)
|
|
|
stamp, _ := time.ParseInLocation("01-02-06", text, time.Now().Location())
|
|
|
if k > 4 {
|
|
|
dateMap[k] = stamp.Format(utils.FormatDate)
|
|
@@ -144,7 +188,7 @@ func FileCoalJsm() (err error) {
|
|
|
text := cell.String()
|
|
|
if k > 4 {
|
|
|
item := new(models.BaseFromCoalmineIndex)
|
|
|
- item.IndexName = source + "_" + province + "_" + exchange
|
|
|
+ item.IndexName = province + exchange
|
|
|
item.IndexCode = codeMap[item.IndexName]
|
|
|
item.Exchange = exchange
|
|
|
item.DealValue = text
|
|
@@ -179,13 +223,33 @@ func FileCoalJsm() (err error) {
|
|
|
if k == 4 {
|
|
|
item := new(models.BaseFromCoalmineCompanyMapping)
|
|
|
group = text
|
|
|
- item.IndexName = source + "_" + province + "_" + city + "_" + companyName
|
|
|
- item.IndexCode = utils.MD5(item.IndexName)
|
|
|
+ item.CompanyName = companyName
|
|
|
+ trimName := TrimCompanyName(companyName)
|
|
|
+ item.IndexName = trimName
|
|
|
+ //取处理后公司名首字母缩写
|
|
|
+ strResult := ""
|
|
|
+ a := pinyin.NewArgs()
|
|
|
+ rows := pinyin.Pinyin(trimName, a)
|
|
|
+ for i := 0; i < len(rows); i++ {
|
|
|
+ if len(rows[i]) != 0 {
|
|
|
+ str := rows[i][0]
|
|
|
+ pi := str[0:1]
|
|
|
+ strResult += pi
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.IndexCode = strResult
|
|
|
+
|
|
|
item.Rank = rank
|
|
|
item.Province = province
|
|
|
item.City = city
|
|
|
- item.CompanyName = companyName
|
|
|
- item.GroupName = group
|
|
|
+
|
|
|
+ //处理无类别名时的情况
|
|
|
+ if group == "无" {
|
|
|
+ item.GroupName = trimName
|
|
|
+ } else {
|
|
|
+ item.GroupName = group
|
|
|
+ }
|
|
|
+
|
|
|
item.Source = source
|
|
|
item.CreateTime = time.Now()
|
|
|
itemsCompany = append(itemsCompany, item)
|
|
@@ -203,7 +267,8 @@ func FileCoalJsm() (err error) {
|
|
|
text := cell.String()
|
|
|
if k > 4 {
|
|
|
item := new(models.BaseFromCoalmineCompanyIndex)
|
|
|
- item.IndexName = source + "_" + province + "_" + city + "_" + companyName
|
|
|
+ companyName = TrimCompanyName(companyName)
|
|
|
+ item.IndexName = companyName
|
|
|
item.IndexCode = codeCompanyMap[item.IndexName]
|
|
|
item.DealValue = text
|
|
|
item.DataTime = dateMap[k]
|
|
@@ -241,7 +306,7 @@ func FileCoalJsm() (err error) {
|
|
|
fmt.Println("新增成功", newId)
|
|
|
}
|
|
|
} else {
|
|
|
- if indexMap[v.IndexName+v.DataTime] == v.IndexName+v.DataTime && indexMap[v.IndexName+v.DataTime] != v.DealValue {
|
|
|
+ if indexMap[v.IndexName+v.DataTime] != v.DealValue && v.DealValue != "" {
|
|
|
err = models.UpdateBaseFromCoalmineIndex(v)
|
|
|
if err != nil {
|
|
|
fmt.Println("修改数据错误错误", err)
|
|
@@ -265,14 +330,63 @@ func FileCoalJsm() (err error) {
|
|
|
}
|
|
|
fmt.Println("公司指标操作完成")
|
|
|
|
|
|
- //for _, v := range itemsCompanyIndex {
|
|
|
- // newId, err := models.AddBaseFromCoalmineCompanyIndex(v)
|
|
|
- // if err != nil {
|
|
|
- // fmt.Println("添加公司数据错误", err)
|
|
|
- //return
|
|
|
- // } else {
|
|
|
- // fmt.Println("新增公司数据成功", newId)
|
|
|
- // }
|
|
|
- //}
|
|
|
+ for _, v := range itemsCompanyIndex {
|
|
|
+ v.IndexCode = codeCompanyMap[v.IndexName]
|
|
|
+ if indexCompanyMap[v.IndexName+v.DataTime] == "" && v.DealValue != "" {
|
|
|
+ newId, err := models.AddBaseFromCoalmineCompanyIndex(v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("添加公司数据错误", err)
|
|
|
+ } else {
|
|
|
+ fmt.Println("新增公司数据成功", newId)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if indexCompanyMap[v.IndexName+v.DataTime] != v.DealValue && v.DealValue != "" {
|
|
|
+ err = models.UpdateBaseFromCoalmineCompanyIndex(v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("修改数据错误错误", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func TrimCompanyName(name string) string {
|
|
|
+ name = strings.Replace(name, "有限", "", -1)
|
|
|
+ name = strings.Replace(name, "股份", "", -1)
|
|
|
+ name = strings.Replace(name, "责任", "", -1)
|
|
|
+ name = strings.Replace(name, "公司", "", -1)
|
|
|
+ name = strings.Replace(name, "(", "", -1)
|
|
|
+ name = strings.Replace(name, ")", "", -1)
|
|
|
+ return name
|
|
|
+}
|
|
|
+
|
|
|
+func ContainsSpecialName(name string) bool {
|
|
|
+ return strings.Contains(name, "陕西") ||
|
|
|
+ strings.Contains(name, "海南") ||
|
|
|
+ strings.Contains(name, "河南") ||
|
|
|
+ strings.Contains(name, "河北") ||
|
|
|
+ strings.Contains(name, "澳门") ||
|
|
|
+ strings.Contains(name, "内蒙古") ||
|
|
|
+ strings.Contains(name, "黑龙江")
|
|
|
+}
|
|
|
+
|
|
|
+func TrimProvinceName(name string) string {
|
|
|
+ name = strings.Replace(name, "陕西省", "sns", -1)
|
|
|
+ name = strings.Replace(name, "陕西", "sn", -1)
|
|
|
+ name = strings.Replace(name, "海南市", "hi", -1)
|
|
|
+ name = strings.Replace(name, "海南", "hi", -1)
|
|
|
+ name = strings.Replace(name, "河南省", "has", -1)
|
|
|
+ name = strings.Replace(name, "河南", "ha", -1)
|
|
|
+ name = strings.Replace(name, "河北省", "hes", -1)
|
|
|
+ name = strings.Replace(name, "河北", "he", -1)
|
|
|
+ name = strings.Replace(name, "澳门", "mo", -1)
|
|
|
+ name = strings.Replace(name, "内蒙古自治区", "nm", -1)
|
|
|
+ name = strings.Replace(name, "内蒙古", "nm", -1)
|
|
|
+ name = strings.Replace(name, "黑龙江", "hl", -1)
|
|
|
+ name = strings.Replace(name, "(", "", -1)
|
|
|
+ name = strings.Replace(name, ")", "", -1)
|
|
|
+ name = strings.Replace(name, "+", "", -1)
|
|
|
+ return name
|
|
|
+}
|