|
@@ -29,7 +29,7 @@ import (
|
|
|
// @param inheritReportId int
|
|
|
// @return err error
|
|
|
// @return errMsg string
|
|
|
-func AddReportAndChapter(reportInfo *models.Report, inheritReportId int, grantAdminIdList []int) (err error, errMsg string) {
|
|
|
+func AddReportAndChapter(reportInfo *models.Report, inheritReportId int, grantAdminIdList []int, reportDate time.Time) (err error, errMsg string) {
|
|
|
// 根据审批开关及审批流判断当前报告状态
|
|
|
state, e := CheckReportCurrState(report_approve.FlowReportTypeChinese, reportInfo.ClassifyIdFirst, reportInfo.ClassifyIdSecond, reportInfo.ClassifyIdThird, models.ReportOperateAdd)
|
|
|
if e != nil {
|
|
@@ -96,7 +96,7 @@ func AddReportAndChapter(reportInfo *models.Report, inheritReportId int, grantAd
|
|
|
}
|
|
|
|
|
|
// 获取待生成的报告章节
|
|
|
- addChapterList, allGrantUserList, err, errMsg := getAddChapter(reportInfo, minClassifyId, inheritReportId, grantAdminIdList)
|
|
|
+ addChapterList, allGrantUserList, err, errMsg := getAddChapter(reportInfo, minClassifyId, inheritReportId, grantAdminIdList, reportDate)
|
|
|
|
|
|
// 新增报告及章节
|
|
|
var reportId int64
|
|
@@ -278,7 +278,7 @@ func EditReport(reportInfo *models.Report, req models.EditReq, sysUser *system.A
|
|
|
// @return chapterList []*models.ReportChapter
|
|
|
// @return err error
|
|
|
// @return errMsg string
|
|
|
-func getAddChapter(reportInfo *models.Report, minClassifyId, inheritReportId int, grantAdminIdList []int) (chapterList []models.AddReportChapter, allGrantUserList []*report.ReportGrant, err error, errMsg string) {
|
|
|
+func getAddChapter(reportInfo *models.Report, minClassifyId, inheritReportId int, grantAdminIdList []int, reportDate time.Time) (chapterList []models.AddReportChapter, allGrantUserList []*report.ReportGrant, err error, errMsg string) {
|
|
|
// 待生成的报告章节内容
|
|
|
chapterList = make([]models.AddReportChapter, 0)
|
|
|
|
|
@@ -322,7 +322,7 @@ func getAddChapter(reportInfo *models.Report, minClassifyId, inheritReportId int
|
|
|
// 待添加的章节类型id列表
|
|
|
chapterTypeIdList := make([]int, 0)
|
|
|
|
|
|
- nowTime := time.Now().Local()
|
|
|
+ //nowTime := time.Now().Local()
|
|
|
for _, chapterType := range allTypeList {
|
|
|
// 如果被永久暂停更新了
|
|
|
if chapterType.Enabled == 0 { //该章节已被永久禁用,那么就不允许继承或者新增该章节
|
|
@@ -340,8 +340,8 @@ func getAddChapter(reportInfo *models.Report, minClassifyId, inheritReportId int
|
|
|
utils.FileLog.Error("更新规则时间转换失败4002, Err: " + timeErr.Error())
|
|
|
continue
|
|
|
}
|
|
|
- // 暂停更新
|
|
|
- if nowTime.After(startTime) && nowTime.Before(endTime.AddDate(0, 0, 1)) {
|
|
|
+ // 暂停更新(此处用报告日期去判断是否需要停更,而不是报告创建日期)
|
|
|
+ if !reportDate.Before(startTime) && !reportDate.After(endTime) {
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -550,32 +550,104 @@ func getAddChapter(reportInfo *models.Report, minClassifyId, inheritReportId int
|
|
|
tmpChapterPermissionList = make([]*report.ReportChapterPermissionMapping, 0)
|
|
|
}
|
|
|
} else {
|
|
|
- chapterItem.AddType = 1
|
|
|
- chapterItem.Title = typeItem.ReportChapterTypeName
|
|
|
- chapterItem.ReportType = typeItem.ResearchType
|
|
|
- chapterItem.ClassifyIdFirst = minClassifyId
|
|
|
- chapterItem.ClassifyNameFirst = minClassifyName
|
|
|
- chapterItem.TypeId = typeItem.ReportChapterTypeId
|
|
|
- chapterItem.TypeName = typeItem.ReportChapterTypeName
|
|
|
- chapterItem.Stage = reportInfo.Stage
|
|
|
- chapterItem.PublishState = 1
|
|
|
- chapterItem.Sort = typeItem.Sort
|
|
|
- chapterItem.CreateTime = reportInfo.CreateTime
|
|
|
- chapterItem.ModifyTime = time.Now()
|
|
|
-
|
|
|
- chapterItem.LastModifyAdminId = reportInfo.LastModifyAdminId
|
|
|
- chapterItem.LastModifyAdminName = reportInfo.LastModifyAdminName
|
|
|
- chapterItem.ContentModifyTime = time.Now()
|
|
|
- //chapterItem.ContentStruct = v.ContentStruct
|
|
|
- chapterItem.ReportLayout = reportInfo.ReportLayout
|
|
|
- chapterItem.ReportCreateTime = time.Now()
|
|
|
+ // 如果系统章节未从继承的报告中找到,那么获取往期中最新版本的此章节内容
|
|
|
+ var findChapter bool
|
|
|
+ if inheritReportId > 0 {
|
|
|
+ chapterNewest, e := models.GetNewestPreReportChapterByClassifyIdAndTypeId(minClassifyId, typeItem.ReportChapterTypeId)
|
|
|
+ if e != nil && e.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "继承最新内容的章节失败"
|
|
|
+ err = fmt.Errorf("获取最新内容的章节失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if chapterNewest != nil {
|
|
|
+ chapterItem.AddType = 2
|
|
|
+ chapterItem.Title = chapterNewest.Title
|
|
|
+ chapterItem.ReportType = chapterNewest.ReportType
|
|
|
+ chapterItem.ClassifyIdFirst = minClassifyId
|
|
|
+ chapterItem.ClassifyNameFirst = minClassifyName
|
|
|
+ chapterItem.TypeId = typeItem.ReportChapterTypeId
|
|
|
+ chapterItem.TypeName = typeItem.ReportChapterTypeName
|
|
|
+ chapterItem.Content = chapterNewest.Content
|
|
|
+ chapterItem.ContentSub = chapterNewest.ContentSub
|
|
|
+ chapterItem.Stage = reportInfo.Stage
|
|
|
+ chapterItem.PublishState = 1
|
|
|
+ chapterItem.Sort = typeItem.Sort
|
|
|
+ chapterItem.CreateTime = reportInfo.CreateTime
|
|
|
+ chapterItem.ModifyTime = time.Now()
|
|
|
+ chapterItem.LastModifyAdminId = reportInfo.LastModifyAdminId
|
|
|
+ chapterItem.LastModifyAdminName = reportInfo.LastModifyAdminName
|
|
|
+ chapterItem.ContentModifyTime = time.Now()
|
|
|
+ chapterItem.ContentStruct = chapterNewest.ContentStruct
|
|
|
+ chapterItem.ReportLayout = chapterNewest.ReportLayout
|
|
|
+ chapterItem.ReportCreateTime = time.Now()
|
|
|
+
|
|
|
+ // 这里的授权和品种权限需要额外查询
|
|
|
+ tmpGrantList = make([]*report.ReportChapterGrant, 0)
|
|
|
+ tmpChapterPermissionList = make([]*report.ReportChapterPermissionMapping, 0)
|
|
|
+ {
|
|
|
+ grantOb := report.ReportChapterGrant{}
|
|
|
+ chapterGrant, e := grantOb.GetGrantListById(chapterNewest.ReportChapterId)
|
|
|
+ if e != nil {
|
|
|
+ errMsg = "获取待继承的报告章节的授权用户列表失败"
|
|
|
+ err = fmt.Errorf("获取待继承的报告章节的授权用户列表失败, ChapterId: %d, Err: %v", chapterNewest.ReportChapterId, e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, cg := range chapterGrant {
|
|
|
+ // 如果不在报告授权的用户ID里面,那么该章节就不继承该授权用户
|
|
|
+ if _, ok := needAdminIdMap[cg.AdminId]; !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ cg.ReportChapterId = 0
|
|
|
+ cg.GrantId = 0
|
|
|
+ tmpGrantList = append(tmpGrantList, cg)
|
|
|
+ }
|
|
|
+
|
|
|
+ permissionOb := report.ReportChapterPermissionMapping{}
|
|
|
+ permissions, e := permissionOb.GetPermissionListById(chapterNewest.ReportChapterId)
|
|
|
+ if e != nil {
|
|
|
+ errMsg = "获取待继承的报告章节的品种权限失败"
|
|
|
+ err = fmt.Errorf("获取待继承的报告章节的品种权限失败, ChapterId: %d, Err: %v", chapterNewest.ReportChapterId, e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, ps := range permissions {
|
|
|
+ ps.ReportChapterId = 0
|
|
|
+ ps.ReportChapterPermissionMappingId = 0
|
|
|
+ tmpChapterPermissionList = append(tmpChapterPermissionList, ps)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 默认配置:从当前分类下配置的章节类型id所关联的品种列表
|
|
|
- tmpChapterPermissionList, ok = currChapterTypePermissionListMap[typeItem.ReportChapterTypeId]
|
|
|
- if !ok {
|
|
|
- tmpChapterPermissionList = make([]*report.ReportChapterPermissionMapping, 0)
|
|
|
+ findChapter = true
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ // 没找到那就新增一篇空白的
|
|
|
+ if !findChapter {
|
|
|
+ chapterItem.AddType = 1
|
|
|
+ chapterItem.Title = typeItem.ReportChapterTypeName
|
|
|
+ chapterItem.ReportType = typeItem.ResearchType
|
|
|
+ chapterItem.ClassifyIdFirst = minClassifyId
|
|
|
+ chapterItem.ClassifyNameFirst = minClassifyName
|
|
|
+ chapterItem.TypeId = typeItem.ReportChapterTypeId
|
|
|
+ chapterItem.TypeName = typeItem.ReportChapterTypeName
|
|
|
+ chapterItem.Stage = reportInfo.Stage
|
|
|
+ chapterItem.PublishState = 1
|
|
|
+ chapterItem.Sort = typeItem.Sort
|
|
|
+ chapterItem.CreateTime = reportInfo.CreateTime
|
|
|
+ chapterItem.ModifyTime = time.Now()
|
|
|
+
|
|
|
+ chapterItem.LastModifyAdminId = reportInfo.LastModifyAdminId
|
|
|
+ chapterItem.LastModifyAdminName = reportInfo.LastModifyAdminName
|
|
|
+ chapterItem.ContentModifyTime = time.Now()
|
|
|
+ //chapterItem.ContentStruct = v.ContentStruct
|
|
|
+ chapterItem.ReportLayout = reportInfo.ReportLayout
|
|
|
+ chapterItem.ReportCreateTime = time.Now()
|
|
|
+
|
|
|
+ // 默认配置:从当前分类下配置的章节类型id所关联的品种列表
|
|
|
+ tmpChapterPermissionList, ok = currChapterTypePermissionListMap[typeItem.ReportChapterTypeId]
|
|
|
+ if !ok {
|
|
|
+ tmpChapterPermissionList = make([]*report.ReportChapterPermissionMapping, 0)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if typeItem.Sort > maxSort {
|