variety.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. package supply_analysis
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/models/data_manage/request"
  8. "eta/eta_api/models/data_manage/response"
  9. "eta/eta_api/models/data_manage/supply_analysis"
  10. "eta/eta_api/services/data"
  11. supply_analysisServ "eta/eta_api/services/data/supply_analysis"
  12. "eta/eta_api/utils"
  13. "fmt"
  14. "github.com/rdlucklib/rdluck_tools/paging"
  15. "strconv"
  16. "strings"
  17. "time"
  18. )
  19. // VarietyController 期货指标分类
  20. type VarietyController struct {
  21. controllers.BaseAuthController
  22. }
  23. // List
  24. // @Title 存量装置图表分类列表
  25. // @Description 存量装置图表分类列表接口
  26. // @Param IsAnalyse query bool true "是否有权限的,true、false"
  27. // @Param Keyword query string true "关键字搜索"
  28. // @Success 200 {object} response.VarietyListResp
  29. // @router /variety/list [get]
  30. func (this *VarietyController) List() {
  31. br := new(models.BaseResponse).Init()
  32. defer func() {
  33. this.Data["json"] = br
  34. this.ServeJSON()
  35. }()
  36. isAnalyse, _ := this.GetBool("IsAnalyse")
  37. keyword := this.GetString("Keyword")
  38. pageSize, _ := this.GetInt("PageSize")
  39. currentIndex, _ := this.GetInt("CurrentIndex")
  40. var startSize int
  41. if pageSize <= 0 {
  42. pageSize = utils.PageSize20
  43. }
  44. if currentIndex <= 0 {
  45. currentIndex = 1
  46. }
  47. startSize = utils.StartIndex(currentIndex, pageSize)
  48. var condition string
  49. var pars []interface{}
  50. if keyword != `` {
  51. condition += ` AND (a.variety_name like ? OR c.edb_code like ? ) `
  52. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  53. }
  54. // 是否超管
  55. isSuperAdmin := supply_analysisServ.IsVarietySuperAdmin(this.SysUser)
  56. varietyObj := supply_analysis.Variety{}
  57. var total int
  58. var list []*supply_analysis.VarietyItemOrm
  59. var err error
  60. if isSuperAdmin || !isAnalyse {
  61. total, list, err = varietyObj.GetListBySuperAdminPage(condition, pars, startSize, pageSize)
  62. } else {
  63. if isAnalyse {
  64. condition += ` AND b.sys_user_id = ? `
  65. pars = append(pars, this.SysUser.AdminId)
  66. }
  67. total, list, err = varietyObj.GetListByPage(condition, pars, startSize, pageSize)
  68. }
  69. if err != nil && err.Error() != utils.ErrNoRow() {
  70. br.Msg = "获取失败"
  71. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  72. return
  73. }
  74. listView := make([]*supply_analysis.VarietyItem, 0)
  75. for _, v := range list {
  76. item := new(supply_analysis.VarietyItem)
  77. button := supply_analysis.VarietyButton{}
  78. if isSuperAdmin {
  79. button.Edit = true
  80. button.Delete = true
  81. button.Analyse = true
  82. } else {
  83. if v.PermissionUserId != `` {
  84. tmpUserIdStrList := strings.Split(v.PermissionUserId, ",")
  85. if utils.InArrayByStr(tmpUserIdStrList, strconv.Itoa(this.SysUser.AdminId)) {
  86. button.Analyse = true
  87. }
  88. }
  89. }
  90. //v.Button = button
  91. //list[k] = v
  92. item.VarietyId = v.VarietyId
  93. item.VarietyName = v.VarietyName
  94. item.ProductionDay = v.ProductionDay
  95. item.LastUpdateSysUserId = v.LastUpdateSysUserId
  96. item.LastUpdateSysUserRealName = v.LastUpdateSysUserRealName
  97. item.PermissionUserId = v.PermissionUserId
  98. item.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
  99. item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  100. item.Button = button
  101. listView = append(listView, item)
  102. }
  103. resp := response.VarietyListResp{
  104. AddButton: isSuperAdmin,
  105. Paging: paging.GetPaging(currentIndex, pageSize, total),
  106. List: listView,
  107. }
  108. br.Ret = 200
  109. br.Success = true
  110. br.Msg = "获取成功"
  111. br.Data = resp
  112. }
  113. // Add
  114. // @Title 新增品种
  115. // @Description 新增品种接口
  116. // @Param request body request.AddVarietyReq true "type json string"
  117. // @Success 200 Ret=200 添加成功
  118. // @router /variety/add [post]
  119. func (this *VarietyController) Add() {
  120. br := new(models.BaseResponse).Init()
  121. defer func() {
  122. this.Data["json"] = br
  123. this.ServeJSON()
  124. }()
  125. var req request.AddVarietyReq
  126. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  127. if err != nil {
  128. br.Msg = "参数解析异常!"
  129. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  130. return
  131. }
  132. isSuperAdmin := supply_analysisServ.IsVarietySuperAdmin(this.SysUser)
  133. if !isSuperAdmin {
  134. br.Msg = "无操作权限"
  135. br.IsSendEmail = false
  136. return
  137. }
  138. if req.VarietyName == "" {
  139. br.Msg = "请输入品种名称"
  140. br.IsSendEmail = false
  141. return
  142. }
  143. varietyName := utils.TrimStr(req.VarietyName)
  144. item, err := supply_analysis.GetVarietyByName(varietyName)
  145. if err != nil && err.Error() != utils.ErrNoRow() {
  146. br.Msg = "添加失败"
  147. br.ErrMsg = "添加失败,Err:" + err.Error()
  148. return
  149. }
  150. if item != nil {
  151. br.Msg = "添加失败,品种名称不能重复"
  152. br.IsSendEmail = false
  153. return
  154. }
  155. variety := &supply_analysis.Variety{
  156. VarietyId: 0,
  157. VarietyName: varietyName,
  158. LastUpdateSysUserId: this.SysUser.AdminId,
  159. LastUpdateSysUserRealName: this.SysUser.RealName,
  160. ProductionDay: 365,
  161. SysUserId: this.SysUser.AdminId,
  162. SysUserRealName: this.SysUser.RealName,
  163. ModifyTime: time.Now(),
  164. CreateTime: time.Now(),
  165. }
  166. err = supply_analysis.CreateVariety(variety, req.AdminIdList)
  167. if err != nil {
  168. br.Msg = "添加品种失败"
  169. br.ErrMsg = "添加品种失败,Err:" + err.Error()
  170. return
  171. }
  172. br.Ret = 200
  173. br.Msg = "添加成功"
  174. br.IsAddLog = true
  175. br.Success = true
  176. }
  177. // Edit
  178. // @Title 编辑品种接口
  179. // @Description 编辑品种接口
  180. // @Param request body request.EditVarietyReq true "type json string"
  181. // @Success 200 Ret=200 修改成功
  182. // @router /variety/edit [post]
  183. func (this *VarietyController) Edit() {
  184. br := new(models.BaseResponse).Init()
  185. defer func() {
  186. this.Data["json"] = br
  187. this.ServeJSON()
  188. }()
  189. var req request.EditVarietyReq
  190. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  191. if err != nil {
  192. br.Msg = "参数解析异常!"
  193. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  194. return
  195. }
  196. isSuperAdmin := supply_analysisServ.IsVarietySuperAdmin(this.SysUser)
  197. if !isSuperAdmin {
  198. br.Msg = "无操作权限"
  199. br.IsSendEmail = false
  200. return
  201. }
  202. if req.VarietyId <= 0 {
  203. br.Msg = "请选择品种"
  204. br.IsSendEmail = false
  205. return
  206. }
  207. if req.VarietyName == "" {
  208. br.Msg = "请输入品种名称"
  209. br.IsSendEmail = false
  210. return
  211. }
  212. varietyName := utils.TrimStr(req.VarietyName)
  213. item, err := supply_analysis.GetVarietyByName(varietyName)
  214. if err != nil && err.Error() != utils.ErrNoRow() {
  215. br.Msg = "添加失败"
  216. br.ErrMsg = "添加失败,Err:" + err.Error()
  217. return
  218. }
  219. if item != nil && item.VarietyId != req.VarietyId {
  220. br.Msg = "添加失败,品种名称不能重复"
  221. br.IsSendEmail = false
  222. return
  223. }
  224. // 获取品种详情
  225. varietyInfo, err := supply_analysis.GetVarietyById(req.VarietyId)
  226. if err != nil {
  227. br.Msg = "查询品种失败"
  228. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  229. return
  230. }
  231. // 编辑
  232. varietyInfo.VarietyName = varietyName
  233. varietyInfo.LastUpdateSysUserId = this.SysUser.AdminId
  234. varietyInfo.LastUpdateSysUserRealName = this.SysUser.RealName
  235. varietyInfo.ModifyTime = time.Now()
  236. err = supply_analysis.EditVariety(varietyInfo, req.AdminIdList)
  237. if err != nil {
  238. br.Msg = "修改品种失败"
  239. br.ErrMsg = "修改品种失败,Err:" + err.Error()
  240. return
  241. }
  242. br.Ret = 200
  243. br.Msg = "修改成功"
  244. br.IsAddLog = true
  245. br.Success = true
  246. }
  247. // DeleteCheck
  248. // @Title 删除品种检测接口
  249. // @Description 删除品种检测接口
  250. // @Param request body request.DelVarietyReq true "type json string"
  251. // @Success 200 Ret=200 检测成功
  252. // @router /variety/delete/check [post]
  253. func (this *VarietyController) DeleteCheck() {
  254. br := new(models.BaseResponse).Init()
  255. defer func() {
  256. this.Data["json"] = br
  257. this.ServeJSON()
  258. }()
  259. var req request.DelVarietyReq
  260. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  261. if err != nil {
  262. br.Msg = "参数解析异常!"
  263. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  264. return
  265. }
  266. if req.VarietyId <= 0 {
  267. br.Msg = "请选择品种"
  268. br.IsSendEmail = false
  269. return
  270. }
  271. var deleteStatus int
  272. var tipsMsg string
  273. //判断该品种是否生成指标
  274. count, err := supply_analysis.GetCountVarietyEdbInfoByVarietyId(req.VarietyId)
  275. if err != nil {
  276. br.Msg = "删除失败"
  277. br.ErrMsg = "查询品种下是否含有指标失败,Err:" + err.Error()
  278. return
  279. }
  280. // 是否超管
  281. isSuperAdmin := supply_analysisServ.IsVarietySuperAdmin(this.SysUser)
  282. if !isSuperAdmin {
  283. deleteStatus = 1
  284. tipsMsg = "无删除权限"
  285. } else {
  286. if count > 0 {
  287. deleteStatus = 1
  288. tipsMsg = "该品种已在指标库生成指标,不可删除"
  289. }
  290. }
  291. resp := response.VarietyDeleteCheckResp{
  292. DeleteStatus: deleteStatus,
  293. TipsMsg: tipsMsg,
  294. }
  295. br.Ret = 200
  296. br.Msg = "检测成功"
  297. br.Success = true
  298. br.Data = resp
  299. }
  300. // Delete
  301. // @Title 删除存量装置图表分类/图表
  302. // @Description 删除存量装置图表分类/图表接口
  303. // @Param request body data_manage.DeleteChartClassifyReq true "type json string"
  304. // @Success 200 Ret=200 删除成功
  305. // @router /variety/delete [post]
  306. func (this *VarietyController) Delete() {
  307. br := new(models.BaseResponse).Init()
  308. defer func() {
  309. this.Data["json"] = br
  310. this.ServeJSON()
  311. }()
  312. var req request.DelVarietyReq
  313. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  314. if err != nil {
  315. br.Msg = "参数解析异常!"
  316. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  317. return
  318. }
  319. if req.VarietyId <= 0 {
  320. br.Msg = "请选择品种"
  321. br.IsSendEmail = false
  322. return
  323. }
  324. //判断该品种是否生成指标
  325. count, err := supply_analysis.GetCountVarietyEdbInfoByVarietyId(req.VarietyId)
  326. if err != nil {
  327. br.Msg = "删除失败"
  328. br.ErrMsg = "查询品种下是否含有指标失败,Err:" + err.Error()
  329. return
  330. }
  331. // 是否超管
  332. isSuperAdmin := supply_analysisServ.IsVarietySuperAdmin(this.SysUser)
  333. if !isSuperAdmin {
  334. br.Msg = `无删除权限`
  335. br.IsSendEmail = false
  336. return
  337. }
  338. if count > 0 {
  339. br.Msg = `该品种已在指标库生成指标,不可删除`
  340. br.IsSendEmail = false
  341. return
  342. }
  343. varietyInfo, err := supply_analysis.GetVarietyById(req.VarietyId)
  344. if err != nil {
  345. if err.Error() == utils.ErrNoRow() {
  346. br.Msg = "该品种不存在或已删除"
  347. br.IsSendEmail = false
  348. } else {
  349. br.Msg = "删除失败"
  350. br.ErrMsg = "查找品种失败,ERR:" + err.Error()
  351. }
  352. return
  353. }
  354. err = varietyInfo.Delete()
  355. if err != nil {
  356. br.Msg = "删除失败"
  357. br.ErrMsg = "查找品种失败,ERR:" + err.Error()
  358. return
  359. }
  360. br.Ret = 200
  361. br.Msg = "删除成功"
  362. br.Success = true
  363. br.IsAddLog = true
  364. }
  365. // Detail
  366. // @Title 存量装置图表分类列表
  367. // @Description 存量装置图表分类列表接口
  368. // @Param VarietyId query int true "品种id"
  369. // @Success 200 {object} response.VarietyListResp
  370. // @router /variety/detail [get]
  371. func (this *VarietyController) Detail() {
  372. br := new(models.BaseResponse).Init()
  373. defer func() {
  374. this.Data["json"] = br
  375. this.ServeJSON()
  376. }()
  377. varietyId, _ := this.GetInt("VarietyId")
  378. if varietyId < 0 {
  379. br.Msg = "不存在该品种或该品种已被删除"
  380. br.ErrMsg = "不存在该品种或该品种已被删除"
  381. br.IsSendEmail = false
  382. }
  383. // 获取品种详情
  384. varietyInfo, err := supply_analysis.GetVarietyById(varietyId)
  385. if err != nil {
  386. br.Msg = "查询品种失败"
  387. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  388. if err.Error() != utils.ErrNoRow() {
  389. br.Msg = "不存在该品种或该品种已被删除"
  390. br.ErrMsg = "不存在该品种或该品种已被删除"
  391. br.IsSendEmail = false
  392. }
  393. return
  394. }
  395. if varietyInfo == nil {
  396. br.Msg = "不存在该品种或该品种已被删除"
  397. br.ErrMsg = "不存在该品种或该品种已被删除"
  398. br.IsSendEmail = false
  399. return
  400. }
  401. resp := supply_analysis.VarietyItem{
  402. VarietyId: varietyInfo.VarietyId,
  403. VarietyName: varietyInfo.VarietyName,
  404. ProductionDay: varietyInfo.ProductionDay,
  405. LastUpdateSysUserId: varietyInfo.LastUpdateSysUserId,
  406. LastUpdateSysUserRealName: varietyInfo.LastUpdateSysUserRealName,
  407. PermissionUserId: ``,
  408. ModifyTime: varietyInfo.ModifyTime.Format(utils.FormatDateTime),
  409. CreateTime: varietyInfo.CreateTime.Format(utils.FormatDateTime),
  410. //Button: supply_analysis.VarietyButton{},
  411. }
  412. br.Ret = 200
  413. br.Success = true
  414. br.Msg = "获取成功"
  415. br.Data = resp
  416. }
  417. // Analysis
  418. // @Title 品种分析
  419. // @Description 品种分析接口
  420. // @Param request body request.AnalysisReq true "type json string"
  421. // @Success 200 Ret=200 检测成功
  422. // @router /variety/analysis [post]
  423. func (this *VarietyController) Analysis() {
  424. br := new(models.BaseResponse).Init()
  425. defer func() {
  426. this.Data["json"] = br
  427. this.ServeJSON()
  428. }()
  429. var req request.AnalysisReq
  430. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  431. if err != nil {
  432. br.Msg = "参数解析异常!"
  433. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  434. return
  435. }
  436. if req.VarietyId <= 0 {
  437. br.Msg = "请选择品种"
  438. br.IsSendEmail = false
  439. return
  440. }
  441. //加入缓存机制,避免创建同一时间,多人去分析 start
  442. redisKey := fmt.Sprint("supply_analysis:variety:", req.VarietyId)
  443. isExist := utils.Rc.IsExist(redisKey)
  444. if isExist {
  445. br.Msg = "品种正在分析中,请等待"
  446. br.IsSendEmail = false
  447. return
  448. } else {
  449. //设置3分钟缓存
  450. utils.Rc.SetNX(redisKey, 1, time.Second*300)
  451. defer func() {
  452. utils.Rc.Delete(redisKey)
  453. }()
  454. }
  455. //加入缓存机制,避免创建同一时间,多人去分析 end
  456. // 获取品种详情
  457. varietyInfo, err := supply_analysis.GetVarietyById(req.VarietyId)
  458. if err != nil {
  459. br.Msg = "查询品种失败"
  460. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  461. return
  462. }
  463. //判断该品种是否生成指标
  464. list, err := supply_analysis.GetVarietyEdbListByVarietyId(req.VarietyId)
  465. if err != nil {
  466. br.Msg = "分析失败"
  467. br.ErrMsg = "分析失败,Err:" + err.Error()
  468. return
  469. }
  470. // 如果没有生成过指标,那么就先生成指标
  471. if len(list) <= 0 {
  472. //randStr := utils.GetRandDigit(4)
  473. //prefixCode := "HZ_V"
  474. //suffixCode := time.Now().Format("060102") + randStr
  475. //`source` int(9) DEFAULT NULL COMMENT '来源,1:影响周度产量;2:周度产量变动;3:影响月度产量;4:月度产量变动',
  476. list := []*supply_analysis.VarietyEdbInfo{
  477. {
  478. //VarietyEdbId: 0,
  479. VarietyId: req.VarietyId,
  480. EdbName: varietyInfo.VarietyName + "影响周度产量",
  481. Frequency: "日度",
  482. EdbInfoId: 0,
  483. //EdbCode: fmt.Sprint(prefixCode, 1, suffixCode),
  484. Source: 1,
  485. ModifyTime: time.Now(),
  486. CreateTime: time.Now(),
  487. },
  488. {
  489. //VarietyEdbId: 0,
  490. VarietyId: req.VarietyId,
  491. EdbName: varietyInfo.VarietyName + "周度产量变动",
  492. Frequency: "日度",
  493. EdbInfoId: 0,
  494. //EdbCode: fmt.Sprint(prefixCode, 2, suffixCode),
  495. Source: 2,
  496. ModifyTime: time.Now(),
  497. CreateTime: time.Now(),
  498. },
  499. {
  500. //VarietyEdbId: 0,
  501. VarietyId: req.VarietyId,
  502. EdbName: varietyInfo.VarietyName + "影响月度产量",
  503. Frequency: "月度",
  504. EdbInfoId: 0,
  505. //EdbCode: fmt.Sprint(prefixCode, 3, suffixCode),
  506. Source: 3,
  507. ModifyTime: time.Now(),
  508. CreateTime: time.Now(),
  509. },
  510. {
  511. //VarietyEdbId: 0,
  512. VarietyId: req.VarietyId,
  513. EdbName: varietyInfo.VarietyName + "月度产量变动",
  514. Frequency: "月度",
  515. EdbInfoId: 0,
  516. //EdbCode: fmt.Sprint(prefixCode, 4, suffixCode),
  517. Source: 4,
  518. ModifyTime: time.Now(),
  519. CreateTime: time.Now(),
  520. },
  521. }
  522. err = supply_analysis.BatchCreateVarietyEdbInfo(list)
  523. if err != nil {
  524. br.Msg = `分析失败`
  525. br.ErrMsg = `分析失败,生成指标失败,ERR:` + err.Error()
  526. return
  527. }
  528. }
  529. tmpMap := map[string]interface{}{
  530. "VarietyId": req.VarietyId,
  531. "AdminId": this.SysUser.AdminId,
  532. "AdminName": this.SysUser.RealName,
  533. }
  534. reqJson, err := json.Marshal(tmpMap)
  535. // 开始分析
  536. _, err = supply_analysisServ.Calculate(string(reqJson))
  537. if err != nil {
  538. br.Msg = `分析失败`
  539. br.ErrMsg = `分析失败,ERR:` + err.Error()
  540. return
  541. }
  542. // 更新ETA指标库信息
  543. {
  544. if len(list) > 0 {
  545. for _, v := range list {
  546. if v.EdbInfoId > 0 {
  547. edbInfo, err := data_manage.GetEdbInfoById(v.EdbInfoId)
  548. if err != nil {
  549. continue
  550. }
  551. // 刷新指标数据
  552. go data.RefreshEdbData(edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, edbInfo.StartDate)
  553. }
  554. }
  555. }
  556. }
  557. // 变更品种的更新时间
  558. {
  559. varietyInfo.ModifyTime = time.Now()
  560. varietyInfo.LastUpdateSysUserId = this.SysUser.AdminId
  561. varietyInfo.LastUpdateSysUserRealName = this.SysUser.RealName
  562. go varietyInfo.Update([]string{"ModifyTime", "LastUpdateSysUserId", "LastUpdateSysUserRealName"})
  563. }
  564. br.Ret = 200
  565. br.Msg = "分析成功"
  566. br.Success = true
  567. }
  568. // ModifyProductionDay
  569. // @Title 编辑品种的生产天数接口
  570. // @Description 编辑品种的生产天数接口
  571. // @Param request body request.ModifyProductionDayReq true "type json string"
  572. // @Success 200 Ret=200 修改成功
  573. // @router /variety/production_day/modify [post]
  574. func (this *VarietyController) ModifyProductionDay() {
  575. br := new(models.BaseResponse).Init()
  576. defer func() {
  577. this.Data["json"] = br
  578. this.ServeJSON()
  579. }()
  580. var req request.ModifyProductionDayReq
  581. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  582. if err != nil {
  583. br.Msg = "参数解析异常!"
  584. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  585. return
  586. }
  587. var hasPermission bool //是否有操作权限
  588. // 是否有装置的操作权限
  589. hasPermission, err = supply_analysisServ.HasVarietyPlantPermission(this.SysUser, req.VarietyId)
  590. if err != nil && err.Error() != utils.ErrNoRow() {
  591. br.Msg = "获取失败"
  592. br.ErrMsg = "查询是否有装置的操作权限失败;ERR:" + err.Error()
  593. return
  594. }
  595. if !hasPermission {
  596. br.Msg = "无操作权限"
  597. br.ErrMsg = "无操作权限"
  598. return
  599. }
  600. if req.VarietyId <= 0 {
  601. br.Msg = "请选择品种"
  602. br.IsSendEmail = false
  603. return
  604. }
  605. if req.Day <= 0 {
  606. br.Msg = "生产天数不能小于等于0"
  607. br.IsSendEmail = false
  608. return
  609. }
  610. // 获取品种详情
  611. varietyInfo, err := supply_analysis.GetVarietyById(req.VarietyId)
  612. if err != nil {
  613. br.Msg = "查询品种失败"
  614. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  615. return
  616. }
  617. // 编辑
  618. varietyInfo.ProductionDay = req.Day
  619. varietyInfo.LastUpdateSysUserId = this.SysUser.AdminId
  620. varietyInfo.LastUpdateSysUserRealName = this.SysUser.RealName
  621. varietyInfo.ModifyTime = time.Now()
  622. err = varietyInfo.Update([]string{"ProductionDay", "LastUpdateSysUserId", "LastUpdateSysUserRealName", "ModifyTime"})
  623. if err != nil {
  624. br.Msg = "修改生产天数失败"
  625. br.ErrMsg = "修改生产天数失败,Err:" + err.Error()
  626. return
  627. }
  628. br.Ret = 200
  629. br.Msg = "修改成功"
  630. br.IsAddLog = true
  631. br.Success = true
  632. }