fe_calendar_matter.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package fe_calendar
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/fe_calendar"
  7. "eta_gn/eta_api/services/data"
  8. "eta_gn/eta_api/utils"
  9. "fmt"
  10. "strings"
  11. "time"
  12. )
  13. type FeCalendarMatterController struct {
  14. controllers.BaseAuthController
  15. }
  16. // @router /matter/list [get]
  17. func (this *FeCalendarMatterController) List() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. if br.ErrMsg == "" {
  21. br.IsSendEmail = false
  22. }
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. sysUser := this.SysUser
  27. if sysUser == nil {
  28. br.Msg = "请登录"
  29. br.ErrMsg = "请登录,SysUser Is Empty"
  30. br.Ret = 408
  31. return
  32. }
  33. params := new(fe_calendar.FeCalendarMatterListReq)
  34. if e := this.ParseForm(params); e != nil {
  35. br.Msg = "获取失败"
  36. br.ErrMsg = "入参解析失败, Err: " + e.Error()
  37. return
  38. }
  39. if params.ChartPermissionId <= 0 {
  40. br.Msg = "请选择品种"
  41. return
  42. }
  43. cond := ``
  44. pars := make([]interface{}, 0)
  45. if params.ChartPermissionId > 0 {
  46. cond += fmt.Sprintf(` AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId)
  47. pars = append(pars, params.ChartPermissionId)
  48. }
  49. if params.StartDate != "" && params.EndDate != "" {
  50. _, e := time.Parse(utils.FormatDate, params.StartDate)
  51. if e != nil {
  52. br.Msg = "开始日期格式有误"
  53. return
  54. }
  55. _, e = time.Parse(utils.FormatDate, params.EndDate)
  56. if e != nil {
  57. br.Msg = "结束日期格式有误"
  58. return
  59. }
  60. cond += fmt.Sprintf(` AND %s >= ? AND %s <= ?`, fe_calendar.FeCalendarMatterCols.MatterDate, fe_calendar.FeCalendarMatterCols.MatterDate)
  61. pars = append(pars, params.StartDate, params.EndDate)
  62. }
  63. matterOb := new(fe_calendar.FeCalendarMatter)
  64. order := fmt.Sprintf(`%s ASC, %s ASC`, fe_calendar.FeCalendarMatterCols.MatterDate, fe_calendar.FeCalendarMatterCols.Sort)
  65. matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
  66. if e != nil {
  67. br.Msg = "获取失败"
  68. br.ErrMsg = "获取事项列表失败, Err: " + e.Error()
  69. return
  70. }
  71. dateMatter := make(map[string][]*fe_calendar.FeCalendarMatterItem)
  72. for _, v := range matters {
  73. d := v.MatterDate.Format(utils.FormatDate)
  74. if dateMatter[d] == nil {
  75. dateMatter[d] = make([]*fe_calendar.FeCalendarMatterItem, 0)
  76. }
  77. dateMatter[d] = append(dateMatter[d], fe_calendar.FormatFeCalendarMatter2Item(v))
  78. }
  79. dateExist := make(map[string]bool)
  80. resp := make([]*fe_calendar.FeCalendarMatterListItem, 0)
  81. for _, v := range matters {
  82. d := v.MatterDate.Format(utils.FormatDate)
  83. if dateExist[d] {
  84. continue
  85. }
  86. dateExist[d] = true
  87. resp = append(resp, &fe_calendar.FeCalendarMatterListItem{
  88. Date: d,
  89. Matters: dateMatter[d],
  90. })
  91. }
  92. br.Data = resp
  93. br.Ret = 200
  94. br.Success = true
  95. br.Msg = "获取成功"
  96. }
  97. // @router /matter/detail [get]
  98. func (this *FeCalendarMatterController) Detail() {
  99. br := new(models.BaseResponse).Init()
  100. defer func() {
  101. if br.ErrMsg == "" {
  102. br.IsSendEmail = false
  103. }
  104. this.Data["json"] = br
  105. this.ServeJSON()
  106. }()
  107. sysUser := this.SysUser
  108. if sysUser == nil {
  109. br.Msg = "请登录"
  110. br.ErrMsg = "请登录,SysUser Is Empty"
  111. br.Ret = 408
  112. return
  113. }
  114. permissionId, _ := this.GetInt("ChartPermissionId")
  115. if permissionId <= 0 {
  116. br.Msg = "请选择品种"
  117. return
  118. }
  119. matterDate := this.GetString("MatterDate")
  120. if matterDate == "" {
  121. br.Msg = "请选择日期"
  122. return
  123. }
  124. _, e := time.Parse(utils.FormatDate, matterDate)
  125. if e != nil {
  126. br.Msg = "日期格式有误"
  127. return
  128. }
  129. matterOb := new(fe_calendar.FeCalendarMatter)
  130. cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId, fe_calendar.FeCalendarMatterCols.MatterDate)
  131. pars := make([]interface{}, 0)
  132. pars = append(pars, permissionId, matterDate)
  133. order := fmt.Sprintf(`%s ASC`, fe_calendar.FeCalendarMatterCols.Sort)
  134. matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
  135. if e != nil {
  136. br.Msg = "获取失败"
  137. br.ErrMsg = "获取事项列表失败, Err: " + e.Error()
  138. return
  139. }
  140. resp := make([]*fe_calendar.FeCalendarMatterItem, 0)
  141. for _, v := range matters {
  142. resp = append(resp, fe_calendar.FormatFeCalendarMatter2Item(v))
  143. }
  144. br.Data = resp
  145. br.Ret = 200
  146. br.Success = true
  147. br.Msg = "获取成功"
  148. }
  149. // @router /matter/save [post]
  150. func (this *FeCalendarMatterController) Save() {
  151. br := new(models.BaseResponse).Init()
  152. defer func() {
  153. if br.ErrMsg == "" {
  154. br.IsSendEmail = false
  155. }
  156. this.Data["json"] = br
  157. this.ServeJSON()
  158. }()
  159. sysUser := this.SysUser
  160. if sysUser == nil {
  161. br.Msg = "请登录"
  162. br.ErrMsg = "请登录,SysUser Is Empty"
  163. br.Ret = 408
  164. return
  165. }
  166. var req fe_calendar.FeCalendarMatterSaveReq
  167. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  168. br.Msg = "参数有误"
  169. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  170. return
  171. }
  172. if req.ChartPermissionId <= 0 {
  173. br.Msg = "请选择品种"
  174. return
  175. }
  176. if req.MatterDate == "" {
  177. br.Msg = "请选择日期"
  178. return
  179. }
  180. var matterMonth string
  181. matterDate, e := time.ParseInLocation(utils.FormatDate, req.MatterDate, time.Local)
  182. if e != nil {
  183. br.Msg = "日期格式有误"
  184. return
  185. }
  186. matterMonth = matterDate.Format("2006-01")
  187. if len(req.Matters) > 0 {
  188. for _, v := range req.Matters {
  189. if v.MatterType != fe_calendar.MatterTypeFree && v.MatterType != fe_calendar.MatterTypeEdb && v.MatterType != fe_calendar.MatterTypePredict {
  190. br.Msg = "事项类型有误"
  191. br.ErrMsg = fmt.Sprintf("事项类型有误, MatterType: %d", v.MatterType)
  192. return
  193. }
  194. v.Title = strings.TrimSpace(v.Title)
  195. if v.Title == "" {
  196. br.Msg = "请输入指标/事项名称"
  197. return
  198. }
  199. if len([]rune(v.Title)) > 15 {
  200. br.Msg = "名称超出15个字,请重新编辑"
  201. return
  202. }
  203. if v.MatterType == fe_calendar.MatterTypeEdb || v.MatterType == fe_calendar.MatterTypePredict {
  204. if v.EdbInfoId <= 0 || v.EdbUniqueCode == "" || v.EdbCode == "" {
  205. br.Msg = "指标信息有误"
  206. br.ErrMsg = fmt.Sprintf("指标信息有误, EdbInfoId: %d, EdbUniqueCode: %s, EdbCode: %s", v.EdbInfoId, v.EdbUniqueCode, v.EdbCode)
  207. return
  208. }
  209. }
  210. }
  211. }
  212. permissionItem, e := models.GetChartPermissionById(req.ChartPermissionId)
  213. if e != nil {
  214. br.Msg = "操作失败"
  215. br.ErrMsg = "获取品种失败, Err: " + e.Error()
  216. return
  217. }
  218. matterOb := new(fe_calendar.FeCalendarMatter)
  219. cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, fe_calendar.FeCalendarMatterCols.ChartPermissionId, fe_calendar.FeCalendarMatterCols.MatterDate)
  220. pars := make([]interface{}, 0)
  221. pars = append(pars, req.ChartPermissionId, req.MatterDate)
  222. order := fmt.Sprintf(`%s ASC`, fe_calendar.FeCalendarMatterCols.Sort)
  223. matters, e := matterOb.GetItemsByCondition(cond, pars, []string{}, order)
  224. if e != nil {
  225. br.Msg = "操作失败"
  226. br.ErrMsg = "获取已有事项列表失败, Err: " + e.Error()
  227. return
  228. }
  229. addMatters := make([]*fe_calendar.FeCalendarMatter, 0)
  230. editMatters := make([]*fe_calendar.FeCalendarMatter, 0)
  231. removeMatters := make([]*fe_calendar.FeCalendarMatter, 0)
  232. updateCols := []string{fe_calendar.FeCalendarMatterCols.Title, fe_calendar.FeCalendarMatterCols.FontColor, fe_calendar.FeCalendarMatterCols.FillingColor, fe_calendar.FeCalendarMatterCols.FontBold, fe_calendar.FeCalendarMatterCols.Sort, fe_calendar.FeCalendarMatterCols.ChartPermissionName, fe_calendar.FeCalendarMatterCols.ModifyTime}
  233. editIds := make([]int, 0)
  234. editMatterMap := make(map[int]*fe_calendar.FeCalendarMatterSaveItem)
  235. for _, v := range req.Matters {
  236. if v.FeCalendarMatterId > 0 {
  237. editIds = append(editIds, v.FeCalendarMatterId)
  238. editMatterMap[v.FeCalendarMatterId] = v
  239. continue
  240. }
  241. addMatters = append(addMatters, &fe_calendar.FeCalendarMatter{
  242. ChartPermissionId: req.ChartPermissionId,
  243. ChartPermissionName: permissionItem.PermissionName,
  244. MatterMonth: matterMonth,
  245. MatterDate: matterDate,
  246. Title: strings.TrimSpace(v.Title),
  247. MatterType: v.MatterType,
  248. EdbInfoId: v.EdbInfoId,
  249. EdbUniqueCode: v.EdbUniqueCode,
  250. EdbCode: v.EdbCode,
  251. FontColor: v.FontColor,
  252. FillingColor: v.FillingColor,
  253. FontBold: v.FontBold,
  254. Sort: v.Sort,
  255. SysUserId: sysUser.AdminId,
  256. SysUserName: sysUser.RealName,
  257. CreateTime: time.Now().Local(),
  258. ModifyTime: time.Now().Local(),
  259. })
  260. }
  261. for _, v := range matters {
  262. if !utils.InArrayByInt(editIds, v.FeCalendarMatterId) {
  263. removeMatters = append(removeMatters, v)
  264. continue
  265. }
  266. ed := editMatterMap[v.FeCalendarMatterId]
  267. if ed != nil {
  268. v.Title = strings.TrimSpace(ed.Title)
  269. v.FontColor = ed.FontColor
  270. v.FillingColor = ed.FillingColor
  271. v.FontBold = ed.FontBold
  272. v.Sort = ed.Sort
  273. v.ChartPermissionName = permissionItem.PermissionName
  274. v.ModifyTime = time.Now().Local()
  275. editMatters = append(editMatters, v)
  276. }
  277. }
  278. if e = matterOb.Save(addMatters, editMatters, removeMatters, updateCols); e != nil {
  279. br.Msg = "操作失败"
  280. br.ErrMsg = "保存事项失败, Err: " + e.Error()
  281. return
  282. }
  283. _ = data.SaveCalendarEdbInfoRelation(req.ChartPermissionId, req.MatterDate, editMatters, removeMatters)
  284. br.Ret = 200
  285. br.Success = true
  286. br.Msg = "操作成功"
  287. }
  288. // @router /permission/list [get]
  289. func (this *FeCalendarMatterController) PermissionList() {
  290. br := new(models.BaseResponse).Init()
  291. defer func() {
  292. if br.ErrMsg == "" {
  293. br.IsSendEmail = false
  294. }
  295. this.Data["json"] = br
  296. this.ServeJSON()
  297. }()
  298. permissions, e := models.GetChartPermissionsByProductId()
  299. if e != nil {
  300. br.Msg = "获取失败"
  301. br.ErrMsg = "获取品种列表失败, Err: " + e.Error()
  302. return
  303. }
  304. resp := make([]*models.SimpleChartPermission, 0)
  305. parentPermissions := make(map[int][]*models.SimpleChartPermission, 0)
  306. for _, v := range permissions {
  307. if v.ParentId > 0 {
  308. if parentPermissions[v.ParentId] == nil {
  309. parentPermissions[v.ParentId] = make([]*models.SimpleChartPermission, 0)
  310. }
  311. parentPermissions[v.ParentId] = append(parentPermissions[v.ParentId], models.FormatChartPermission2Simple(v))
  312. continue
  313. }
  314. resp = append(resp, models.FormatChartPermission2Simple(v))
  315. }
  316. for _, v := range resp {
  317. v.Children = parentPermissions[v.ChartPermissionId]
  318. }
  319. br.Data = resp
  320. br.Ret = 200
  321. br.Success = true
  322. br.Msg = "获取成功"
  323. }