|
@@ -18,7 +18,7 @@ import (
|
|
|
)
|
|
|
|
|
|
// AddBalanceExcelChart 添加平衡表图表
|
|
|
-func AddBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanceTableChartReq, sysUser *system.Admin) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+func AddBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanceTableChartReq, sysUser *system.Admin, dataListMap map[int][]*data_manage.EdbDataList) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
|
|
|
/*// 操作权限校验, 增加协作人判断
|
|
|
{
|
|
@@ -61,7 +61,7 @@ func AddBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanc
|
|
|
return
|
|
|
}
|
|
|
chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
|
|
|
- for _, chartEdb := range req.ChartEdbInfoList {
|
|
|
+ for k, chartEdb := range req.ChartEdbInfoList {
|
|
|
excelEdb := new(excelModel.ExcelChartEdb)
|
|
|
excelEdb.EdbName = chartEdb.EdbName
|
|
|
randStr := utils.GetRandDigit(4)
|
|
@@ -82,23 +82,28 @@ func AddBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanc
|
|
|
excelEdb.CreateTime = time.Now()
|
|
|
excelEdb.ModifyTime = time.Now()
|
|
|
excelEdb.ChartWidth = 1
|
|
|
- var dateList []string
|
|
|
- var dataList []float64
|
|
|
+ var dataList []*excelModel.ExcelChartData
|
|
|
if excelInfo.BalanceType == 1 {
|
|
|
- // 如果是静态表,则直接使用前端传输的数据落到数据库里
|
|
|
- /*dateList, dataList, err, errMsg = utils.HandleEdbSequenceVal(chartEdb.DateSequenceVal, chartEdb.DataSequenceVal)
|
|
|
- if err != nil {
|
|
|
- errMsg = "时间序列或数据序列异常!"
|
|
|
- err = fmt.Errorf("时间序列或数据序列异常!%s", err.Error())
|
|
|
+ tmpList, ok := dataListMap[k]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "查询图表数据失败!"
|
|
|
+ err = fmt.Errorf("查询图表数据失败!%s", err.Error())
|
|
|
return
|
|
|
- }*/
|
|
|
+ }
|
|
|
+ for _, l := range tmpList {
|
|
|
+ tmp := &excelModel.ExcelChartData{
|
|
|
+ DataTime: l.DataTime,
|
|
|
+ Value: l.Value,
|
|
|
+ DataTimestamp: l.DataTimestamp,
|
|
|
+ }
|
|
|
+ dataList = append(dataList, tmp)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 处理日期列表和值列表
|
|
|
addItem := &excelModel.AddChartEdbAndDataItem{
|
|
|
ChartEdb: excelEdb,
|
|
|
- DateList: dateList,
|
|
|
- ValList: dataList,
|
|
|
+ DataList: dataList,
|
|
|
}
|
|
|
chartEdbList = append(chartEdbList, addItem)
|
|
|
}
|
|
@@ -267,7 +272,7 @@ func addBalanceExcelChart(req request.AddBalanceTableChartReq, sysUserId int, sy
|
|
|
}
|
|
|
|
|
|
// EditBalanceExcelChart 添加平衡表图表
|
|
|
-func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanceTableChartReq, sysUser *system.Admin) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalanceTableChartReq, sysUser *system.Admin, dataListMap map[int][]*data_manage.EdbDataList) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
if len(req.ChartEdbInfoList) == 0 {
|
|
|
errMsg = "图表数据不能为空!"
|
|
|
err = fmt.Errorf("图表数据不能为空!%s", err.Error())
|
|
@@ -322,7 +327,7 @@ func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalan
|
|
|
|
|
|
// 查询edbIds
|
|
|
chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
|
|
|
- for _, chartEdb := range req.ChartEdbInfoList {
|
|
|
+ for k, chartEdb := range req.ChartEdbInfoList {
|
|
|
if _, ok := deleteMap[chartEdb.ExcelChartEdbId]; ok {
|
|
|
delete(deleteMap, chartEdb.ExcelChartEdbId)
|
|
|
}
|
|
@@ -363,23 +368,29 @@ func EditBalanceExcelChart(excelInfo *excelModel.ExcelInfo, req request.AddBalan
|
|
|
excelEdb.LeadValue = chartEdb.LeadValue
|
|
|
excelEdb.LeadUnit = chartEdb.LeadUnit
|
|
|
excelEdb.ModifyTime = time.Now()
|
|
|
- var dateList []string
|
|
|
- var dataList []float64
|
|
|
+ var dataList []*excelModel.ExcelChartData
|
|
|
if excelInfo.BalanceType == 1 {
|
|
|
// 如果是静态表,则直接使用前端传输的数据落到数据库里
|
|
|
- /*dateList, dataList, err, errMsg = utils.HandleEdbSequenceVal(chartEdb.DateSequenceVal, chartEdb.DataSequenceVal)
|
|
|
- if err != nil {
|
|
|
- errMsg = "时间序列或数据序列异常!"
|
|
|
- err = fmt.Errorf("时间序列或数据序列异常!%s", err.Error())
|
|
|
+ tmpList, ok := dataListMap[k]
|
|
|
+ if !ok {
|
|
|
+ errMsg = "查询图表数据失败!"
|
|
|
+ err = fmt.Errorf("查询图表数据失败!%s", err.Error())
|
|
|
return
|
|
|
- }*/
|
|
|
+ }
|
|
|
+ for _, l := range tmpList {
|
|
|
+ tmp := &excelModel.ExcelChartData{
|
|
|
+ DataTime: l.DataTime,
|
|
|
+ Value: l.Value,
|
|
|
+ DataTimestamp: l.DataTimestamp,
|
|
|
+ }
|
|
|
+ dataList = append(dataList, tmp)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 处理日期列表和值列表
|
|
|
addItem := &excelModel.AddChartEdbAndDataItem{
|
|
|
ChartEdb: excelEdb,
|
|
|
- DateList: dateList,
|
|
|
- ValList: dataList,
|
|
|
+ DataList: dataList,
|
|
|
}
|
|
|
chartEdbList = append(chartEdbList, addItem)
|
|
|
}
|
|
@@ -421,8 +432,6 @@ func editBalanceExcelChart(req request.AddBalanceTableChartReq) (chartInfo *data
|
|
|
err = errors.New("获取图表信息失败,Err:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- // todo 查找默认主题设置
|
|
|
- // todo 查找默认主题设置
|
|
|
// 查找主题类型id
|
|
|
chartThemeType, err := chart_theme.GetChartThemeTypeByChartType(chartType)
|
|
|
if err != nil {
|
|
@@ -597,9 +606,12 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
|
|
|
calendar = "公历"
|
|
|
}
|
|
|
|
|
|
- mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
|
|
|
+ mappingList, err := TransferChartEdbToEdbMappingFormat(chartInfoId, chartType, mappingListTmp, dataListMap)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
//循环组装映射关系
|
|
|
- for _, v := range mappingListTmp {
|
|
|
+ /*for _, v := range mappingListTmp {
|
|
|
dataList := make([]*data_manage.EdbDataList, 0)
|
|
|
dataListTmp, ok := dataListMap[v.ExcelChartEdbId]
|
|
|
if ok {
|
|
@@ -663,7 +675,7 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
|
|
|
HaveOperaAuth: true,
|
|
|
}
|
|
|
mappingList = append(mappingList, mapping)
|
|
|
- }
|
|
|
+ }*/
|
|
|
if chartType == 2 {
|
|
|
startDate = seasonStartDate
|
|
|
endDate = seasonEndDate
|
|
@@ -846,7 +858,7 @@ func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDa
|
|
|
item.EdbInfoType = 1
|
|
|
item.ChartStyle = ""
|
|
|
item.ChartColor = ""
|
|
|
- item.ChartWidth = 0
|
|
|
+ item.ChartWidth = 1
|
|
|
item.MaxData = v.MaxValue
|
|
|
item.MinData = v.MinValue
|
|
|
} else {
|
|
@@ -1254,7 +1266,7 @@ func getBalanceDataListStartDateAndValue(dataList []*data_manage.EdbDataList) (s
|
|
|
}
|
|
|
|
|
|
// AddBalanceStaticExcel 另存为和存为静态表以及子表的复制都调用该接口
|
|
|
-func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName string, sysUser *system.Admin, parentId, relExcelInfoId, balanceType int, childExcelList []*excelModel.ExcelInfo, pingNameFlag bool) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName string, sysUser *system.Admin, parentId, relExcelInfoId, balanceType int, childExcelList []*excelModel.ExcelInfo, pingNameFlag bool, excelDataMap map[int]map[int][]*data_manage.EdbDataList) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
|
|
|
versionName = utils.TrimLRStr(versionName)
|
|
@@ -1339,7 +1351,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
|
|
|
}
|
|
|
if parentId == 0 && len(childExcelList) > 0 {
|
|
|
for _, childExcelInfo := range childExcelList {
|
|
|
- _, err, errMsg, isSendEmail = AddBalanceStaticExcel(childExcelInfo, versionName, sysUser, excelInfo.ExcelInfoId, relExcelInfoId, balanceType, []*excelModel.ExcelInfo{}, false)
|
|
|
+ _, err, errMsg, isSendEmail = AddBalanceStaticExcel(childExcelInfo, versionName, sysUser, excelInfo.ExcelInfoId, relExcelInfoId, balanceType, []*excelModel.ExcelInfo{}, false, excelDataMap)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -1376,7 +1388,12 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
|
|
|
err = fmt.Errorf("未找到图表关联的指标信息")
|
|
|
return
|
|
|
}
|
|
|
- err, errMsg, isSendEmail = CopyBalanceExcelChart(chartInfo, mappingList, versionName, sysUser, pingNameFlag)
|
|
|
+ chartEdbDataMap, ok := excelDataMap[chartInfo.ChartInfoId]
|
|
|
+ if !ok && oldExcelInfo.BalanceType == 1 { //
|
|
|
+ err = fmt.Errorf("未找到图表关联的指标信息")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err, errMsg, isSendEmail = CopyBalanceExcelChart(chartInfo, mappingList, versionName, sysUser, pingNameFlag, chartEdbDataMap)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("复制图表失败 Err:%s", err.Error())
|
|
|
return
|
|
@@ -1388,7 +1405,7 @@ func AddBalanceStaticExcel(oldExcelInfo *excelModel.ExcelInfo, versionName strin
|
|
|
}
|
|
|
|
|
|
// CopyBalanceExcelChart 复制平衡表图表
|
|
|
-func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbList []*excelModel.ExcelChartEdb, versionName string, sysUser *system.Admin, pingNameFlag bool) (err error, errMsg string, isSendEmail bool) {
|
|
|
+func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbList []*excelModel.ExcelChartEdb, versionName string, sysUser *system.Admin, pingNameFlag bool, dataListMap map[int][]*data_manage.EdbDataList) (err error, errMsg string, isSendEmail bool) {
|
|
|
chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
|
|
|
if pingNameFlag && versionName != "" {
|
|
|
oldChartInfo.ChartName += "(" + versionName + ")"
|
|
@@ -1416,15 +1433,23 @@ func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbL
|
|
|
excelEdb.LeadUnit = chartEdb.LeadUnit
|
|
|
excelEdb.CreateTime = time.Now()
|
|
|
excelEdb.ModifyTime = time.Now()
|
|
|
- var dateList []string
|
|
|
- var dataList []float64
|
|
|
- // todo 是否需要存储静态表的数据
|
|
|
+ var dataList []*excelModel.ExcelChartData
|
|
|
+ tmpList, ok := dataListMap[chartEdb.ExcelChartEdbId]
|
|
|
+ if ok {
|
|
|
+ for _, l := range tmpList {
|
|
|
+ tmp := &excelModel.ExcelChartData{
|
|
|
+ DataTime: l.DataTime,
|
|
|
+ Value: l.Value,
|
|
|
+ DataTimestamp: l.DataTimestamp,
|
|
|
+ }
|
|
|
+ dataList = append(dataList, tmp)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 处理日期列表和值列表
|
|
|
addItem := &excelModel.AddChartEdbAndDataItem{
|
|
|
ChartEdb: excelEdb,
|
|
|
- DateList: dateList,
|
|
|
- ValList: dataList,
|
|
|
+ DataList: dataList,
|
|
|
}
|
|
|
chartEdbList = append(chartEdbList, addItem)
|
|
|
}
|
|
@@ -1568,7 +1593,6 @@ func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, e
|
|
|
oldExcelInfo.ExcelName = excelName
|
|
|
|
|
|
// 先复制动态表,再复制动态子表,复制静态表,再复制静态子表
|
|
|
- //查询动态表所有的子表,并复制为静态表
|
|
|
condition := " AND parent_id = ? AND balance_type = 0 "
|
|
|
var pars []interface{}
|
|
|
pars = append(pars, oldExcelInfo.ExcelInfoId)
|
|
@@ -1578,7 +1602,9 @@ func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, e
|
|
|
err = fmt.Errorf("获取子表失败 %s", err.Error())
|
|
|
return
|
|
|
}
|
|
|
- excelInfo, err, errMsg, isSendEmail = AddBalanceStaticExcel(oldExcelInfo, "", sysUser, 0, 0, 0, childExcelList, false)
|
|
|
+ // 查询出每个子表的内容,并将内容转为静态版本
|
|
|
+ excelDataMap := make(map[int]map[int][]*data_manage.EdbDataList)
|
|
|
+ excelInfo, err, errMsg, isSendEmail = AddBalanceStaticExcel(oldExcelInfo, "", sysUser, 0, 0, 0, childExcelList, false, excelDataMap)
|
|
|
if err != nil {
|
|
|
errMsg = "复制动态表失败"
|
|
|
err = fmt.Errorf("复制动态表失败 %s", err.Error())
|
|
@@ -1605,7 +1631,31 @@ func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, e
|
|
|
err = fmt.Errorf("获取子表失败 %s", err.Error())
|
|
|
return
|
|
|
}
|
|
|
- _, err, errMsg, isSendEmail = AddBalanceStaticExcel(staticExcelInfo, staticExcelInfo.VersionName, sysUser, 0, excelInfo.ExcelInfoId, 1, childList, false)
|
|
|
+ excelDataMap = make(map[int]map[int][]*data_manage.EdbDataList)
|
|
|
+ for _, childExcelInfo := range childList {
|
|
|
+ //得到表格数据并落库
|
|
|
+ tmpDataList, e := excelModel.GetExcelChartDataByExcelInfoId(childExcelInfo.ExcelInfoId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(tmpDataList) > 0 {
|
|
|
+ for _, v := range tmpDataList {
|
|
|
+ child, ok := excelDataMap[v.ChartInfoId]
|
|
|
+ if !ok {
|
|
|
+ child = make(map[int][]*data_manage.EdbDataList)
|
|
|
+ }
|
|
|
+ tmp := &data_manage.EdbDataList{
|
|
|
+ DataTime: v.DataTime,
|
|
|
+ DataTimestamp: v.DataTimestamp,
|
|
|
+ Value: v.Value,
|
|
|
+ }
|
|
|
+ child[v.ExcelChartEdbId] = append(child[v.ExcelChartEdbId], tmp)
|
|
|
+ excelDataMap[v.ChartInfoId] = child
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _, err, errMsg, isSendEmail = AddBalanceStaticExcel(staticExcelInfo, staticExcelInfo.VersionName, sysUser, 0, excelInfo.ExcelInfoId, 1, childList, false, excelDataMap)
|
|
|
if err != nil {
|
|
|
errMsg = "复制动态表失败"
|
|
|
err = fmt.Errorf("复制动态表失败 %s", err.Error())
|
|
@@ -1614,3 +1664,74 @@ func CopyBalanceExcel(oldExcelInfo *excelModel.ExcelInfo, excelClassifyId int, e
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func TransferChartEdbToEdbMappingFormat(chartInfoId, chartType int, mappingListTmp []*excelModel.ExcelChartEdb, dataListMap map[int][]*data_manage.EdbDataList) (mappingList []*data_manage.ChartEdbInfoMapping, err error) {
|
|
|
+ mappingList = make([]*data_manage.ChartEdbInfoMapping, 0)
|
|
|
+ //循环组装映射关系
|
|
|
+ for _, v := range mappingListTmp {
|
|
|
+ dataList := make([]*data_manage.EdbDataList, 0)
|
|
|
+ dataListTmp, ok := dataListMap[v.ExcelChartEdbId]
|
|
|
+ if ok {
|
|
|
+ dataList = dataListTmp
|
|
|
+ } else {
|
|
|
+ err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.ExcelChartEdbId))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startDateStr, endDateStr, _, endVal, maxValue, minValue := getBalanceDataListStartDateAndValue(dataList)
|
|
|
+ mapping := &data_manage.ChartEdbInfoMapping{
|
|
|
+ EdbInfoId: v.ExcelChartEdbId,
|
|
|
+ SourceName: "",
|
|
|
+ Source: 0,
|
|
|
+ SubSource: 0,
|
|
|
+ EdbCode: v.EdbCode,
|
|
|
+ EdbName: v.EdbName,
|
|
|
+ EdbAliasName: v.EdbName,
|
|
|
+ EdbNameEn: "",
|
|
|
+ EdbAliasNameEn: "",
|
|
|
+ EdbType: 0,
|
|
|
+ Frequency: "",
|
|
|
+ FrequencyEn: "",
|
|
|
+ Unit: "",
|
|
|
+ UnitEn: "",
|
|
|
+ StartDate: startDateStr,
|
|
|
+ EndDate: endDateStr,
|
|
|
+ ModifyTime: v.ModifyTime.Format(utils.FormatDateTime),
|
|
|
+ ChartEdbMappingId: v.ExcelChartEdbId,
|
|
|
+ ChartInfoId: chartInfoId,
|
|
|
+ MaxData: v.MaxData,
|
|
|
+ MinData: v.MinData,
|
|
|
+ IsOrder: v.IsOrder,
|
|
|
+ IsAxis: v.IsAxis,
|
|
|
+ EdbInfoType: v.EdbInfoType,
|
|
|
+ //EdbInfoCategoryType: 0,
|
|
|
+ LeadValue: v.LeadValue,
|
|
|
+ LeadUnit: v.LeadUnit,
|
|
|
+ LeadUnitEn: "",
|
|
|
+ ChartStyle: "",
|
|
|
+ ChartColor: "",
|
|
|
+ PredictChartColor: "",
|
|
|
+ ChartWidth: v.ChartWidth,
|
|
|
+ ChartType: chartType,
|
|
|
+ LatestDate: endDateStr,
|
|
|
+ LatestValue: endVal,
|
|
|
+ MoveLatestDate: "",
|
|
|
+ UniqueCode: "",
|
|
|
+ MinValue: minValue,
|
|
|
+ MaxValue: maxValue,
|
|
|
+ DataList: nil,
|
|
|
+ IsNullData: false,
|
|
|
+ MappingSource: 0,
|
|
|
+ RegionType: "",
|
|
|
+ ClassifyId: 0,
|
|
|
+ IsConvert: 0,
|
|
|
+ ConvertType: 0,
|
|
|
+ ConvertValue: 0,
|
|
|
+ ConvertUnit: "",
|
|
|
+ ConvertEnUnit: "",
|
|
|
+ IsJoinPermission: 0,
|
|
|
+ HaveOperaAuth: true,
|
|
|
+ }
|
|
|
+ mappingList = append(mappingList, mapping)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|