|
@@ -1415,6 +1415,237 @@ func (this *CoalMineDataController) Inland() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// @Title 内陆数据
|
|
|
+// @Description 刷新内陆数据接口
|
|
|
+// @Param request body models.CoalMineDataReq true "type json string"
|
|
|
+// @Success 200 {object} models.EdbClassify
|
|
|
+// @router /firm [post]
|
|
|
+func (this *CoalMineDataController) Firm() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ var req models.CoalMineDataReq
|
|
|
+
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var year, month, day string
|
|
|
+ var yearMap = make(map[int]string)
|
|
|
+ var monthMap = make(map[int]string)
|
|
|
+ var dateMap = make(map[int]string)
|
|
|
+ var mappingItems []*models.BaseFromCoalmineMapping
|
|
|
+ var indexItems []*models.BaseFromCoalmineFirmIndex
|
|
|
+ var codeMap = make(map[string]string)
|
|
|
+ var indexMap = make(map[string]string)
|
|
|
+ var groupName string
|
|
|
+ codeList, err := models.GetBaseFromCoalmineMapping()
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ utils.FileLog.Info("获取煤炭指标失败:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(codeList) > 0 {
|
|
|
+ for _, v := range codeList {
|
|
|
+ codeMap[v.IndexName] = v.IndexCode
|
|
|
+ }
|
|
|
+ }
|
|
|
+ indexCompanyList, err := models.GetBaseFromCoalmineFirmIndex()
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ utils.FileLog.Info("获取煤炭公司指标失败:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(indexCompanyList) > 0 {
|
|
|
+ for _, v := range indexCompanyList {
|
|
|
+ indexMap[v.IndexName+v.DataTime] = v.DealValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, sheet := range req.SheetData {
|
|
|
+ //遍历行读取
|
|
|
+ maxRow := sheet.MaxRow
|
|
|
+ for i := 0; i < maxRow; i++ {
|
|
|
+ //获取年份
|
|
|
+ //if i == 2 {
|
|
|
+ // row := sheet.Row(i)
|
|
|
+ // cells := row.Cells
|
|
|
+ // for k, cell := range cells {
|
|
|
+ // text := cell.String()
|
|
|
+ // if k > 0 && text != "" {
|
|
|
+ // year = text
|
|
|
+ // fmt.Println("year:",year)
|
|
|
+ // fmt.Println("k:",k)
|
|
|
+ // yearMap[k] = year
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //获取月份和年度
|
|
|
+ if i == 3 {
|
|
|
+ row := sheet.Rows[i]
|
|
|
+ cells := row.Cells
|
|
|
+ for k, cell := range cells {
|
|
|
+ text := cell.Value
|
|
|
+ if k > 0 && text != "" {
|
|
|
+ month = text
|
|
|
+ month = utils.ConvertToFormatDay(month)
|
|
|
+ time, _ := time.Parse(utils.FormatDate, month)
|
|
|
+ yearInt := time.Year()
|
|
|
+ monthInt := int(time.Month())
|
|
|
+ year = strconv.Itoa(yearInt)
|
|
|
+ yearMap[k] = year
|
|
|
+ month = strconv.Itoa(monthInt)
|
|
|
+ monthMap[k] = month
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取旬度
|
|
|
+ if i == 4 {
|
|
|
+ row := sheet.Rows[i]
|
|
|
+ cells := row.Cells
|
|
|
+ for k, cell := range cells {
|
|
|
+ text := cell.Value
|
|
|
+ if k > 0 && text != "" {
|
|
|
+ if yearMap[k] != "" {
|
|
|
+ year = yearMap[k]
|
|
|
+ }
|
|
|
+ if monthMap[k] != "" {
|
|
|
+ month = monthMap[k]
|
|
|
+ }
|
|
|
+ day = text
|
|
|
+ dateMap[k] = year + "年" + month + "月" + day
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取企业或地区名及信息
|
|
|
+ if i > 4 {
|
|
|
+ row := sheet.Rows[i]
|
|
|
+ cells := row.Cells
|
|
|
+ var companyName string
|
|
|
+ for k, cell := range cells {
|
|
|
+ if k == 0 {
|
|
|
+ companyName = cell.Value
|
|
|
+
|
|
|
+ //省名
|
|
|
+ if !strings.Contains(companyName, " ") {
|
|
|
+ groupName = companyName
|
|
|
+ }
|
|
|
+ if groupName == "全国合计" {
|
|
|
+ groupName = "全国"
|
|
|
+ }
|
|
|
+ //若有下面四个名称要拼上省名不然会重复
|
|
|
+ if companyName == " 地方合计" || companyName == " 地方国有" ||
|
|
|
+ companyName == " 地方乡镇" || companyName == " 国有重点" {
|
|
|
+ companyName = groupName + companyName
|
|
|
+ }
|
|
|
+ companyName = strings.Replace(companyName, " ", "", -1)
|
|
|
+ var item models.BaseFromCoalmineMapping
|
|
|
+ //生成code
|
|
|
+ exists := ContainsSpecialName(companyName)
|
|
|
+ var code string
|
|
|
+ if exists {
|
|
|
+ abbr := trimProvinceName(companyName)
|
|
|
+ //取处理后公司名首字母缩写
|
|
|
+ a := pinyin.NewArgs()
|
|
|
+ rows := pinyin.Pinyin(companyName[9:], a)
|
|
|
+ for i := 0; i < len(rows); i++ {
|
|
|
+ if len(rows[i]) != 0 {
|
|
|
+ str := rows[i][0]
|
|
|
+ pi := str[0:1]
|
|
|
+ code += pi
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.IndexCode = abbr[:2] + code + "firm"
|
|
|
+
|
|
|
+ } else {
|
|
|
+ a := pinyin.NewArgs()
|
|
|
+ rows := pinyin.Pinyin(companyName, a)
|
|
|
+ for i := 0; i < len(rows); i++ {
|
|
|
+ if len(rows[i]) != 0 {
|
|
|
+ str := rows[i][0]
|
|
|
+ pi := str[0:1]
|
|
|
+ code += pi
|
|
|
+ }
|
|
|
+ }
|
|
|
+ item.IndexCode = code + "firm"
|
|
|
+ }
|
|
|
+ item.IndexName = companyName
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ mappingItems = append(mappingItems, &item)
|
|
|
+ } else {
|
|
|
+ dealValue := cell.Value
|
|
|
+
|
|
|
+ item := models.BaseFromCoalmineFirmIndex{
|
|
|
+ IndexName: companyName,
|
|
|
+ IndexCode: codeMap[companyName],
|
|
|
+ DataTime: dateMap[k],
|
|
|
+ DealValue: dealValue,
|
|
|
+ GroupName: groupName,
|
|
|
+ Source: "全国分企业",
|
|
|
+ Unit: "万吨",
|
|
|
+ Frequency: "旬度",
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+
|
|
|
+ indexItems = append(indexItems, &item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //添加数据到数据库
|
|
|
+ for _, v := range mappingItems {
|
|
|
+ if codeMap[v.IndexName] == "" {
|
|
|
+ codeMap[v.IndexName] = v.IndexCode
|
|
|
+ newId, err := models.AddBaseFromCoalmineMapping(v)
|
|
|
+ if err != nil {
|
|
|
+ for i := 0; i < 10; i++ {
|
|
|
+ v.IndexCode = v.IndexCode + strconv.Itoa(i)
|
|
|
+ codeMap[v.IndexName] = v.IndexCode
|
|
|
+ newId, err := models.AddBaseFromCoalmineMapping(v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("再次添加公司指标名称错误", err)
|
|
|
+ continue
|
|
|
+ } else {
|
|
|
+ fmt.Println("新增公司成功", newId)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ fmt.Println("新增公司成功", newId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fmt.Println("指标操作完成")
|
|
|
+
|
|
|
+ //给indexItem中的code赋值并插入index表
|
|
|
+ for _, v := range indexItems {
|
|
|
+ v.IndexCode = codeMap[v.IndexName]
|
|
|
+ if indexMap[v.IndexName+v.DataTime] == "" && v.DealValue != "" {
|
|
|
+ newId, err := models.AddBaseFromCoalFirmIndex(v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("添加数据错误", err)
|
|
|
+ } else {
|
|
|
+ fmt.Println("新增成功", newId)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if indexMap[v.IndexName+v.DataTime] != v.DealValue && v.DealValue != "" {
|
|
|
+ err = models.UpdateBaseFromCoalFirmIndex(v)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("修改数据错误错误", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
func ttrimProvinceName(name string) string {
|
|
|
name = strings.Replace(name, "陕西省", "sn", -1)
|
|
|
name = strings.Replace(name, "陕西", "sn", -1)
|