Переглянути джерело

修改数据同步提醒邮件

hongze 3 роки тому
батько
коміт
d909bf5874

+ 14 - 0
models/data_manage/edb_data_calculate.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"fmt"
 	"rdluck_tools/orm"
 	"time"
 )
@@ -55,4 +56,17 @@ func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, e
 			WHERE a.edb_info_id=? ORDER BY sort ASC `
 	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
 	return
+}
+
+func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfoCalculateDetail, err error) {
+	o := orm.NewOrm()
+	o.Using("data")
+
+	calculateTableName := GetEdbInfoCalculateTableName(source)
+	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM %s AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? ORDER BY sort ASC `
+	sql = fmt.Sprintf(sql, calculateTableName)
+	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	return
 }

+ 29 - 9
models/data_manage/edb_info_calculate_ljzzy.go

@@ -88,8 +88,9 @@ func RefreshCalculateLjzzy(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDa
 	var isAdd bool
 
 	for yk, yv := range yearMap {
-		if _, mok := yv[2]; !mok {
-			//fmt.Println(yk, yv, "continue")
+		_, oneMonthOk := yv[1]
+		_, twoMonthOk := yv[2]
+		if !oneMonthOk && !twoMonthOk {
 			continue
 		}
 		for i := 1; i <= 12; i++ {
@@ -98,13 +99,32 @@ func RefreshCalculateLjzzy(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDa
 			var date string
 			var val float64
 			if i == 1 || i == 2 {
-				dataTwoItem := yv[2]
-				if dataCurrentItem != nil && dataTwoItem != nil {
-					date = dataCurrentItem.DataTime
-					//val = dataTwoItem.Value
-					a := decimal.NewFromFloat(dataTwoItem.Value)
-					b := decimal.NewFromFloat(2.0)
-					val, _ = a.Div(b).Float64()
+				if _, mok := yv[1]; mok { //1月有值
+					if i == 1 {
+						date = dataCurrentItem.DataTime
+						val, _ = decimal.NewFromFloat(dataCurrentItem.Value).Float64() //a.Div(b).Float64()
+					}
+					if i == 2 {
+						dataOneItem := yv[1]
+						date = dataCurrentItem.DataTime
+						twoMonth := decimal.NewFromFloat(dataCurrentItem.Value)
+						oneMonth := decimal.NewFromFloat(dataOneItem.Value)
+						val, _ = twoMonth.Sub(oneMonth).Float64()
+					}
+				} else { //1月无值
+					dataTwoItem := yv[2]
+					if i == 1 {
+						date = strconv.Itoa(yk) + "-01-31"
+						a := decimal.NewFromFloat(dataTwoItem.Value)
+						b := decimal.NewFromFloat(2.0)
+						val, _ = a.Div(b).Float64()
+					}
+					if i == 2 {
+						date = dataCurrentItem.DataTime
+						a := decimal.NewFromFloat(dataTwoItem.Value)
+						b := decimal.NewFromFloat(2.0)
+						val, _ = a.Div(b).Float64()
+					}
 				}
 			} else {
 				dataPreItem := yv[i-1]

+ 1 - 1
models/data_manage/edb_info_calculate_tbz.go

@@ -239,8 +239,8 @@ func RefreshCalculateTbz(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate
 										return err
 									}
 								}
+								break
 							}
-							break
 						}
 						nextDateDay = nextDateDay.AddDate(0, 0, 1)
 						preDateDay = preDateDay.AddDate(0, 0, -1)

+ 2 - 2
models/data_manage/edb_info_calculate_tcz.go

@@ -168,8 +168,8 @@ func RefreshCalculateTcz(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate
 										return err
 									}
 								}
+								break
 							}
-							break
 						}
 					}
 				} else if fromEdbInfo.Frequency == "季度" || fromEdbInfo.Frequency == "年度" {
@@ -238,8 +238,8 @@ func RefreshCalculateTcz(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate
 										return err
 									}
 								}
+								break
 							}
-							break
 						}
 						nextDateDay = nextDateDay.AddDate(0, 0, 1)
 						preDateDay = preDateDay.AddDate(0, 0, -1)

+ 1 - 1
services/data/edb_info.go

@@ -233,7 +233,7 @@ func RefreshDataFromCalculateAll() (err error) {
 	condition += " AND edb_type=? "
 	pars = append(pars, 2)
 	//condition += " AND edb_info_id=? "
-	//pars = append(pars, 100344)
+	//pars = append(pars, 100341)
 
 	items, err := data_manage.GetEdbInfoByCondition(condition, pars, 0)
 	if err != nil {

+ 65 - 38
services/data/edb_info_notice.go

@@ -35,19 +35,11 @@ func RefreshNotice() (err error) {
 		<td>频度</td>
         <td>指标数据最后日期</td>
         <td>指标数据更新日期</td>
+		<td>依赖指标</td>
     </tr>
     </thead>`
 	dayTableBody := `<tbody>`
-	dayDate := time.Now().AddDate(0, 0, -3)
-	for _, v := range items {
-		if v.Frequency == "日度" && v.EndDate.Before(dayDate) {
-			dayTableBody += getTableTr(v)
-		}
-	}
-	dayTable += dayTableBody
-	dayTable += ` </tbody></table></div>`
-	noticeSendBody := dayDiv + dayTable
-	noticeSendBody += `<br/>`
+
 	//周度
 	weekDiv := `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>周度指标,超过7天未更新:</div>`
 	weekTable := `<table border="1" style="border-collapse: collapse;">
@@ -59,20 +51,11 @@ func RefreshNotice() (err error) {
 		<td>频度</td>
         <td>指标数据最后日期</td>
         <td>指标数据更新日期</td>
+ 		<td>依赖指标</td>
     </tr>
     </thead>`
 	weekTableBody := `<tbody>`
-	weekDate := time.Now().AddDate(0, 0, -7)
-	for _, v := range items {
-		if v.Frequency == "周度" && v.EndDate.Before(weekDate) {
-			weekTableBody += getTableTr(v)
-		}
-	}
-	weekTable += weekTableBody
-	weekTable += ` </tbody></table></div>`
-	noticeSendBody += weekDiv + weekTable
-	noticeSendBody += `<br/>`
-	//月度
+
 	monthDiv := `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>月度指标,超过一个月未更新:</div>`
 	monthTable := `<table border="1" style="border-collapse: collapse;">
     <thead>
@@ -83,20 +66,11 @@ func RefreshNotice() (err error) {
 		<td>频度</td>
         <td>指标数据最后日期</td>
         <td>指标数据更新日期</td>
+ 		<td>依赖指标</td>
     </tr>
     </thead>`
 	monthTableBody := `<tbody>`
-	monthDate := time.Now().AddDate(0, -1, 0)
-	for _, v := range items {
-		if v.Frequency == "月度" && v.EndDate.Before(monthDate) {
-			monthTableBody += getTableTr(v)
-		}
-	}
-	monthTable += monthTableBody
-	monthTable += ` </tbody></table></div>`
-	noticeSendBody += monthDiv + monthTable
-	noticeSendBody += `<br/>`
-	//所有指标
+
 	allDiv := `<hr style="color: red">`
 	allDiv = `<div style="margin-bottom: 20px;min-width: 1000px;overflow-x: scroll;"><div>当前所有指标,按数据日期升序排列:</div>`
 	allTable := `<table border="1" style="border-collapse: collapse;">
@@ -111,19 +85,52 @@ func RefreshNotice() (err error) {
     </tr>
     </thead>`
 	allTableBody := `<tbody>`
+
+	dayDate := time.Now().AddDate(0, 0, -3)
+	weekDate := time.Now().AddDate(0, 0, -7)
+	//月度
+	monthDate := time.Now().AddDate(0, -1, 0)
+
 	for _, v := range items {
-		allTableBody += getTableTr(v)
+		if v.Frequency == "日度" && v.EndDate.Before(dayDate) {
+			dayTableBody += getTableTr(v, 1)
+		}
+
+		if v.Frequency == "周度" && v.EndDate.Before(weekDate) {
+			weekTableBody += getTableTr(v, 2)
+		}
+
+		if v.Frequency == "月度" && v.EndDate.Before(monthDate) {
+			monthTableBody += getTableTr(v, 3)
+		}
+
+		allTableBody += getTableTr(v, 4)
 	}
+	dayTable += dayTableBody
+	dayTable += ` </tbody></table></div>`
+	noticeSendBody := dayDiv + dayTable
+	noticeSendBody += `<br/>`
+
+	weekTable += weekTableBody
+	weekTable += ` </tbody></table></div>`
+	noticeSendBody += weekDiv + weekTable
+	noticeSendBody += `<br/>`
+
+	monthTable += monthTableBody
+	monthTable += ` </tbody></table></div>`
+	noticeSendBody += monthDiv + monthTable
+	noticeSendBody += `<br/>`
+
 	allTable += allTableBody
 	allTable += ` </tbody></table></div>`
 	noticeSendBody += allDiv + allTable
 
-	utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, utils.RefreshEdbInfoEmailSendToUsers, "", "")
-	//utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, "317699326@qq.com", "", "")
+	//utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, utils.RefreshEdbInfoEmailSendToUsers, "", "")
+	utils.SendEmailByHongze("指标更新情况通知", noticeSendBody, "317699326@qq.com", "", "")
 	return
 }
 
-func getTableTr(item *data_manage.EdbInfoList) string {
+func getTableTr(item *data_manage.EdbInfoList, tableType int) string {
 	if item != nil {
 		trHtml := ` <tr>
         <td>` + item.EdbCode + `</td>
@@ -131,8 +138,28 @@ func getTableTr(item *data_manage.EdbInfoList) string {
         <td>` + item.SourceName + `</td>
 		<td>` + item.Frequency + `</td>
         <td>` + item.EndDate.Format(utils.FormatDate) + `</td>
-        <td>` + item.ModifyTime + `</td>
-    </tr>`
+        <td>` + item.ModifyTime + `</td>`
+		if item.Source == utils.DATA_SOURCE_CALCULATE ||
+			item.Source == utils.DATA_SOURCE_CALCULATE_LJZZY ||
+			item.Source == utils.DATA_SOURCE_CALCULATE_TBZ ||
+			item.Source == utils.DATA_SOURCE_CALCULATE_TCZ ||
+			item.Source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS {
+			//获取依赖指标信息
+			if tableType != 4 {
+				//获取依赖指标
+				mapList, _ := data_manage.GetEdbInfoCalculateMap(item.EdbInfoId, item.Source)
+				mapStr:=""
+				for _,v:=range mapList{
+					mapStr+="<p>指标编码:"+v.FromEdbCode+" 来源:"+v.FromSourceName+" 更新日期:"+v.EndDate+"</p>"
+				}
+				trHtml += `<td>` + mapStr + `</td>`
+			}
+		} else {
+			if tableType != 4 {
+				trHtml += `<td></td>`
+			}
+		}
+		trHtml += `</tr>`
 		return trHtml
 	} else {
 		return ""