sketch.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "reflect"
  6. "strconv"
  7. "strings"
  8. "time"
  9. "youngee_m_api/model/common_model"
  10. "youngee_m_api/model/gorm_model"
  11. "youngee_m_api/model/http_model"
  12. "youngee_m_api/pack"
  13. "youngee_m_api/util"
  14. "github.com/caixw/lib.go/conv"
  15. "github.com/sirupsen/logrus"
  16. )
  17. // GetTaskSketchList 查询上传初稿的task list
  18. func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
  19. db := GetReadDB(ctx)
  20. // 查询Task表信息
  21. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  22. // 根据Project条件过滤
  23. conditionType := reflect.TypeOf(conditions).Elem()
  24. conditionValue := reflect.ValueOf(conditions).Elem()
  25. var platform_nickname string = ""
  26. for i := 0; i < conditionType.NumField(); i++ {
  27. field := conditionType.Field(i)
  28. tag := field.Tag.Get("condition")
  29. value := conditionValue.FieldByName(field.Name)
  30. if tag == "sketch_status" {
  31. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  32. if value.Interface() == int64(0) {
  33. db = db.Where("task_stage = 10")
  34. } else {
  35. db = db.Where("task_stage > 10 and task_stage <> 16")
  36. }
  37. continue
  38. } else if !util.IsBlank(value) {
  39. if tag == "platform_nickname" {
  40. platform_nickname = fmt.Sprintf("%v", value.Interface())
  41. continue
  42. } else if tag == "project_id" || tag == "strategy_id" {
  43. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  44. }
  45. }
  46. }
  47. var taskInfos []gorm_model.YoungeeTaskInfo
  48. db = db.Model(gorm_model.YoungeeTaskInfo{})
  49. // 查询总数
  50. var totalTask int64
  51. if err := db.Count(&totalTask).Error; err != nil {
  52. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  53. return nil, 0, err
  54. }
  55. db.Order("task_id").Find(&taskInfos)
  56. // 查询任务id
  57. var taskIds []string
  58. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  59. for _, taskInfo := range taskInfos {
  60. taskIds = append(taskIds, taskInfo.TaskId)
  61. taskMap[taskInfo.TaskId] = taskInfo
  62. }
  63. db1 := GetReadDB(ctx)
  64. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  65. var SketchInfos []gorm_model.YounggeeSketchInfo
  66. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  67. if conditions.SketchStatus == int64(0) {
  68. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  69. } else {
  70. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  71. }
  72. //fmt.Printf("初稿查询:%+v", SketchInfos)
  73. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  74. for _, SketchInfo := range SketchInfos {
  75. SketchMap[SketchInfo.TaskID] = SketchInfo
  76. }
  77. // 查询总数
  78. var totalSketch int64
  79. if err := db1.Count(&totalSketch).Error; err != nil {
  80. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  81. return nil, 0, err
  82. }
  83. var misNum int64
  84. if totalSketch > totalTask {
  85. misNum = totalSketch - totalTask
  86. } else {
  87. misNum = totalTask - totalSketch
  88. }
  89. //logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
  90. // 查询该页数据
  91. limit := pageSize + misNum
  92. offset := pageSize * pageNum // assert pageNum start with 0
  93. //fmt.Printf("limit %+v offset %+v \n", limit, offset)
  94. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  95. if err != nil {
  96. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  97. return nil, 0, err
  98. }
  99. var TaskSketches []*http_model.TaskSketch
  100. var taskSketches []*http_model.TaskSketchInfo
  101. var newTaskSketches []*http_model.TaskSketchInfo
  102. for _, taskId := range taskIds {
  103. TaskSketch := new(http_model.TaskSketch)
  104. TaskSketch.Talent = taskMap[taskId]
  105. TaskSketch.Sketch = SketchMap[taskId]
  106. TaskSketches = append(TaskSketches, TaskSketch)
  107. }
  108. taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
  109. for _, v := range taskSketches {
  110. if platform_nickname == "" {
  111. newTaskSketches = append(newTaskSketches, v)
  112. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  113. newTaskSketches = append(newTaskSketches, v)
  114. } else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
  115. newTaskSketches = append(newTaskSketches, v)
  116. } else {
  117. totalTask--
  118. }
  119. }
  120. return newTaskSketches, totalTask, nil
  121. }
  122. //// SketchOption 提交意见
  123. //func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) error {
  124. // db := GetReadDB(ctx)
  125. // //fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
  126. // err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
  127. // if err != nil {
  128. // logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  129. // return err
  130. // }
  131. // err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
  132. // if err != nil {
  133. // logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  134. // return err
  135. // }
  136. // err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  137. // if err != nil {
  138. // logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  139. // return err
  140. // }
  141. // return nil
  142. //}
  143. // SketchOption 提交意见
  144. func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
  145. db := GetReadDB(ctx)
  146. fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
  147. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
  148. if err != nil {
  149. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  150. return err
  151. }
  152. var project gorm_model.ProjectInfo
  153. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  154. if err != nil {
  155. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  156. return err
  157. }
  158. var draft_default gorm_model.InfoAutoTask
  159. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  160. if err != nil {
  161. return err
  162. }
  163. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  164. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  165. if err != nil {
  166. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  167. return err
  168. }
  169. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  170. if err != nil {
  171. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  172. return err
  173. }
  174. return nil
  175. }
  176. //// AcceptSketch 同意初稿
  177. //func AcceptSketch(ctx context.Context, TaskIDs []string) error {
  178. // db := GetReadDB(ctx)
  179. // err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
  180. // if err != nil {
  181. // logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  182. // return err
  183. // }
  184. // err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5}).Error
  185. // if err != nil {
  186. // logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  187. // return err
  188. // }
  189. //
  190. // err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
  191. // if err != nil {
  192. // logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  193. // return err
  194. // }
  195. // return nil
  196. //}
  197. // AcceptSketch 同意初稿
  198. func AcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
  199. db := GetReadDB(ctx)
  200. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
  201. if err != nil {
  202. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  203. return err
  204. }
  205. var project gorm_model.ProjectInfo
  206. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  207. if err != nil {
  208. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  209. return err
  210. }
  211. taskstages := 11
  212. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  213. if isspecial == 1 {
  214. toolList := strings.Split(project.Tools, ",")
  215. for _, tool := range toolList {
  216. // 将 tool 转换为整数
  217. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  218. nextstage[t-1] = 1
  219. }
  220. }
  221. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  222. if nextstage[i] == 1 {
  223. switch i {
  224. case 3:
  225. taskstages = 11
  226. case 4:
  227. taskstages = 13
  228. case 5:
  229. taskstages = 15
  230. }
  231. break
  232. }
  233. }
  234. }
  235. var link_default gorm_model.InfoAutoTask
  236. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
  237. if err != nil {
  238. return err
  239. }
  240. duration := time.Duration(link_default.LinkBreach) * time.Hour
  241. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  242. if err != nil {
  243. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  244. return err
  245. }
  246. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: taskstages}).Error
  247. if err != nil {
  248. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  249. return err
  250. }
  251. return nil
  252. }
  253. // RejectSketch 不同意初稿
  254. func RejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
  255. db := GetReadDB(ctx)
  256. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
  257. if err != nil {
  258. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  259. return err
  260. }
  261. var project gorm_model.ProjectInfo
  262. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  263. if err != nil {
  264. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  265. return err
  266. }
  267. var draft_default gorm_model.InfoAutoTask
  268. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  269. if err != nil {
  270. return err
  271. }
  272. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  273. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  274. if err != nil {
  275. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  276. return err
  277. }
  278. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  279. if err != nil {
  280. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  281. return err
  282. }
  283. return nil
  284. }
  285. // FindPhoto
  286. func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
  287. db := GetReadDB(ctx)
  288. var SketchInfo gorm_model.YounggeeSketchInfo
  289. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_ok = 1", TaskID).Find(&SketchInfo).Error
  290. if err != nil {
  291. return nil, err
  292. }
  293. return &SketchInfo, nil
  294. }
  295. // FindPhoto
  296. func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
  297. db := GetReadDB(ctx)
  298. var SketchPhotos []gorm_model.YounggeeSketchPhoto
  299. err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
  300. if err != nil {
  301. return nil, err
  302. }
  303. return SketchPhotos, nil
  304. }
  305. // GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
  306. func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
  307. db := GetReadDB(ctx)
  308. // 查询Task表信息
  309. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  310. // 根据Project条件过滤
  311. conditionType := reflect.TypeOf(conditions).Elem()
  312. conditionValue := reflect.ValueOf(conditions).Elem()
  313. var platform_nickname string = ""
  314. for i := 0; i < conditionType.NumField(); i++ {
  315. field := conditionType.Field(i)
  316. tag := field.Tag.Get("condition")
  317. value := conditionValue.FieldByName(field.Name)
  318. if tag == "sketch_status" {
  319. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  320. if value.Interface() == int64(0) {
  321. db = db.Where("task_stage = ?", 10)
  322. } else {
  323. db = db.Where("task_stage > ?", 10)
  324. }
  325. continue
  326. } else if !util.IsBlank(value) {
  327. if tag == "platform_nickname" {
  328. platform_nickname = fmt.Sprintf("%v", value.Interface())
  329. continue
  330. } else if tag == "project_id" {
  331. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  332. }
  333. }
  334. }
  335. var taskInfos []gorm_model.YoungeeTaskInfo
  336. db = db.Model(gorm_model.YoungeeTaskInfo{})
  337. // 查询总数
  338. var totalTask int64
  339. if err := db.Count(&totalTask).Error; err != nil {
  340. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  341. return nil, 0, err
  342. }
  343. db.Order("task_id").Find(&taskInfos)
  344. // 查询任务id
  345. var taskIds []string
  346. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  347. for _, taskInfo := range taskInfos {
  348. taskIds = append(taskIds, taskInfo.TaskId)
  349. taskMap[taskInfo.TaskId] = taskInfo
  350. }
  351. db1 := GetReadDB(ctx)
  352. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  353. var SketchInfos []gorm_model.YounggeeSketchInfo
  354. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  355. if conditions.SketchStatus == int64(0) {
  356. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  357. } else {
  358. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  359. }
  360. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  361. for _, SketchInfo := range SketchInfos {
  362. SketchMap[SketchInfo.TaskID] = SketchInfo
  363. }
  364. // 查询总数
  365. var totalSketch int64
  366. if err := db1.Count(&totalSketch).Error; err != nil {
  367. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  368. return nil, 0, err
  369. }
  370. var misNum int64
  371. if totalSketch > totalTask {
  372. misNum = totalSketch - totalTask
  373. } else {
  374. misNum = totalTask - totalSketch
  375. }
  376. //logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
  377. // 查询该页数据
  378. limit := pageSize + misNum
  379. offset := pageSize * pageNum // assert pageNum start with 0
  380. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  381. if err != nil {
  382. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  383. return nil, 0, err
  384. }
  385. var TaskSketches []*http_model.SpecialTaskSketch
  386. var taskSketches []*http_model.SpecialTaskSketchInfo
  387. var newTaskSketches []*http_model.SpecialTaskSketchInfo
  388. for _, taskId := range taskIds {
  389. TaskSketch := new(http_model.SpecialTaskSketch)
  390. TaskSketch.Talent = taskMap[taskId]
  391. TaskSketch.Sketch = SketchMap[taskId]
  392. TaskSketches = append(TaskSketches, TaskSketch)
  393. }
  394. taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
  395. for _, v := range taskSketches {
  396. if platform_nickname == "" {
  397. newTaskSketches = append(newTaskSketches, v)
  398. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  399. newTaskSketches = append(newTaskSketches, v)
  400. } else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
  401. newTaskSketches = append(newTaskSketches, v)
  402. } else {
  403. totalTask--
  404. }
  405. }
  406. return newTaskSketches, totalTask, nil
  407. }
  408. // SketchOption 提交意见
  409. func LocalSketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string) error {
  410. db := GetReadDB(ctx)
  411. fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
  412. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": operatorid, "b_operator_type": operatetype}).Error
  413. if err != nil {
  414. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  415. return err
  416. }
  417. var project gorm_model.YounggeeLocalLifeInfo
  418. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  419. if err != nil {
  420. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  421. return err
  422. }
  423. var draft_default gorm_model.InfoAutoTask
  424. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  425. if err != nil {
  426. return err
  427. }
  428. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  429. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  430. if err != nil {
  431. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  432. return err
  433. }
  434. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  435. if err != nil {
  436. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  437. return err
  438. }
  439. return nil
  440. }
  441. // AcceptSketch 同意初稿
  442. func LocalAcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int) error {
  443. db := GetReadDB(ctx)
  444. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
  445. if err != nil {
  446. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  447. return err
  448. }
  449. var project gorm_model.YounggeeLocalLifeInfo
  450. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("LocalId = ?", projectid).Find(&project).Error
  451. if err != nil {
  452. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  453. return err
  454. }
  455. taskstages := 11
  456. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  457. if isspecial == 1 {
  458. toolList := strings.Split(project.Tools, ",")
  459. for _, tool := range toolList {
  460. // 将 tool 转换为整数
  461. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  462. nextstage[t-1] = 1
  463. }
  464. }
  465. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  466. if nextstage[i] == 1 {
  467. switch i {
  468. case 3:
  469. taskstages = 11
  470. case 4:
  471. taskstages = 13
  472. case 5:
  473. taskstages = 15
  474. }
  475. break
  476. }
  477. }
  478. }
  479. var link_default gorm_model.InfoAutoTask
  480. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error //待确认
  481. if err != nil {
  482. return err
  483. }
  484. duration := time.Duration(link_default.LinkBreach) * time.Hour
  485. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  486. if err != nil {
  487. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  488. return err
  489. }
  490. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: taskstages}).Error
  491. if err != nil {
  492. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  493. return err
  494. }
  495. return nil
  496. }
  497. // RejectSketch 不同意初稿
  498. func LocalRejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string) error {
  499. db := GetReadDB(ctx)
  500. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": operatorid, "b_operator_type": operatetype}).Error
  501. if err != nil {
  502. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  503. return err
  504. }
  505. var project gorm_model.YounggeeLocalLifeInfo
  506. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("LocalId = ?", projectid).Find(&project).Error
  507. if err != nil {
  508. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  509. return err
  510. }
  511. var draft_default gorm_model.InfoAutoTask
  512. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  513. if err != nil {
  514. return err
  515. }
  516. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  517. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  518. if err != nil {
  519. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  520. return err
  521. }
  522. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  523. if err != nil {
  524. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  525. return err
  526. }
  527. return nil
  528. }