workprocessrequire.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package work
  2. import (
  3. "zhiyuan/models"
  4. "zhiyuan/pkg/app"
  5. "zhiyuan/pkg/db"
  6. "zhiyuan/pkg/utils"
  7. "zhiyuan/services/form"
  8. "zhiyuan/services/work/workprocessrequire"
  9. "zhiyuan/services/work/worksitenode"
  10. "github.com/gin-gonic/gin"
  11. )
  12. func WorkProcessRequireList(c *gin.Context) {
  13. page := app.HandlePageNums(c)
  14. where := map[string]string{
  15. "where": "`zy_work_process_require`.`id`>0 AND `zy_work_process_require`.`deleted_at`=0",
  16. "_order_by": "`zy_work_process_require`.`order_at` desc",
  17. }
  18. if page.PageSize != 0 {
  19. where["_page_size"] = utils.ToStr(page.PageSize)
  20. where["_page_num"] = utils.ToStr(page.PageNum)
  21. }
  22. param := make(map[string]interface{})
  23. name := c.Query("name")
  24. if name != "" {
  25. where["where"] = where["where"] + " AND `zy_work_process_require`.`name` LIKE {{name}}"
  26. param["name"] = "%" + name + "%"
  27. }
  28. process_id := utils.ToInt(c.Query("process_id"))
  29. if process_id != 0 {
  30. where["where"] = where["where"] + " AND `zy_work_process_require`.`process_id`={{process_id}}"
  31. param["process_id"] = process_id
  32. }
  33. total, err := workprocessrequire.CountRaw(where["where"], param)
  34. if err != nil {
  35. app.Error(c, err.Error())
  36. return
  37. }
  38. workProcessRequireList := make([]models.WorkProcessRequire, 0)
  39. if _, err = workprocessrequire.GetWorkProcesssRaw(where, param, &workProcessRequireList); err != nil {
  40. app.Error(c, err.Error())
  41. return
  42. }
  43. data := gin.H{
  44. "list": workProcessRequireList,
  45. "total": total,
  46. "limit": page.PageSize,
  47. }
  48. app.Success(c, data)
  49. }
  50. func WorkProcessRequireAdd(c *gin.Context) {
  51. var addForm form.WorkProcessRequireAdd
  52. if app.Bind(c, &addForm) != nil {
  53. return
  54. }
  55. id, err := workprocessrequire.Add(addForm)
  56. if err != nil {
  57. app.Error(c, err.Error())
  58. return
  59. }
  60. app.Success(c, gin.H{"id": id})
  61. }
  62. func WorkProcessRequireEdit(c *gin.Context) {
  63. id := utils.ToInt(c.Param("id"))
  64. if id <= 0 {
  65. app.ErrorMsg(c, "workprocess id must be a number", nil)
  66. return
  67. }
  68. var addForm form.WorkProcessRequireAdd
  69. if app.Bind(c, &addForm) != nil {
  70. return
  71. }
  72. err := workprocessrequire.EditByID(addForm, id)
  73. if err != nil {
  74. app.ErrorMsg(c, err.Error(), nil)
  75. return
  76. }
  77. app.Success(c, nil)
  78. }
  79. func WorkProcessRequireDel(c *gin.Context) {
  80. id := utils.ToInt(c.Param("id"))
  81. if id <= 0 {
  82. app.ErrorMsg(c, "workprocessrequire id must be a number", nil)
  83. return
  84. }
  85. err := workprocessrequire.DeleteByID(id)
  86. if err != nil {
  87. app.Error(c, err.Error())
  88. return
  89. }
  90. app.Success(c, nil)
  91. }
  92. func WorkSiteProcessRequireList(c *gin.Context) {
  93. page := app.HandlePageNums(c)
  94. where := map[string]string{
  95. "where": "`zy_work_process_require`.`id`>0 AND `zy_work_process_require`.`deleted_at`=0 AND `zy_work_process_require`.`state`=1 ",
  96. "_order_by": "`zy_work_process_require`.`order_at` desc",
  97. }
  98. if page.PageSize != 0 {
  99. where["_page_size"] = utils.ToStr(page.PageSize)
  100. where["_page_num"] = utils.ToStr(page.PageNum)
  101. }
  102. param := make(map[string]interface{})
  103. field := "SELECT `zy_work_process_require`.*, `zy_work_site_process_point`.`id` as `point_id`, `zy_work_site_process_point`.`pictures` as `picture_list`, `zy_work_site_process_point`.`mark` as `mark`, `zy_work_site_process_point`.`state` as `point_state`, `zy_work_site_quality_accept_item`.`id` as `site_item_id`, `zy_work_site_quality_accept_item`.`state` as `item_state`, `zy_work_site_quality_accept_item`.`pictures` as `item_pictures`,`zy_work_site_quality_accept_item`.`mark` as `item_mark`, `zy_work_site_quality_accept_item`.`updated_at` as `item_updated` from `zy_work_process_require` left join `zy_work_site_process_point` on `zy_work_site_process_point`.`require_id` = `zy_work_process_require`.`id` AND `zy_work_site_process_point`.`deleted_at`=0 AND `zy_work_site_process_point`.`id` in (select max(`zy_work_site_process_point`.`id`) from `zy_work_site_process_point` where `zy_work_site_process_point`.`deleted_at`=0 group by `zy_work_site_process_point`.`site_node_id`, `zy_work_site_process_point`.`require_id`) "
  104. fields := " left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_process_point`.`site_node_id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` "
  105. process_id := utils.ToInt(c.Query("process_id"))
  106. if process_id != 0 {
  107. where["where"] = where["where"] + " AND `zy_work_process_require`.`process_id`={{process_id}}"
  108. param["process_id"] = process_id
  109. }
  110. total, err := workprocessrequire.CountRaw(where["where"], param)
  111. if err != nil {
  112. app.Error(c, err.Error())
  113. return
  114. }
  115. site_node_id := utils.ToInt(c.Query("site_node_id"))
  116. if site_node_id != 0 {
  117. sitenodeInfo, _ := worksitenode.GetInfoByID(site_node_id, nil, nil)
  118. if sitenodeInfo != nil {
  119. field = field + " AND `zy_work_site_process_point`.`site_node_id`={{site_node_id}} "
  120. param["site_node_id"] = site_node_id
  121. field = field + " left join `zy_work_process` on `zy_work_process`.`id` = `zy_work_process_require`.`process_id` "
  122. where["where"] = where["where"] + " AND `zy_work_process`.`node_id`={{node_id}}"
  123. fields = " left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = {{site_node_id}} AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` "
  124. param["node_id"] = sitenodeInfo.NodeId
  125. }
  126. }
  127. type WorkSiteProcessRequireList struct {
  128. ID int `json:"id"`
  129. ProcessId int `json:"process_id"`
  130. Name string `json:"name"`
  131. Content string `json:"content"`
  132. Days int `json:"days"`
  133. State int `json:"state"`
  134. Quality int `json:"quality"`
  135. QualityPhoto int `json:"qualityphoto"`
  136. Photograph string `json:"photograph"`
  137. QualityDays string `json:"quality_days"`
  138. SiteItemId int `json:"site_item_id"`
  139. ItemState int `json:"item_state"`
  140. ItemPictures string `json:"item_pictures"`
  141. ItemMark string `json:"item_mark"`
  142. ItemUpdated int `json:"item_updated"`
  143. Type int `json:"type"`
  144. CreatedAt int `json:"created_at"`
  145. UpdatedAt int `json:"updated_at"`
  146. PointId int `json:"point_id"`
  147. PointState int `json:"point_state"`
  148. PictureList string `json:"picture_list"`
  149. Mark string `json:"mark"`
  150. }
  151. workProcessRequireList := make([]WorkSiteProcessRequireList, 0)
  152. where["_group_by"] = "`zy_work_process_require`.`id`"
  153. if err = db.GetMultiRaw(field+fields, where, param, &workProcessRequireList); err != nil {
  154. app.Error(c, err.Error())
  155. return
  156. }
  157. data := gin.H{
  158. "list": workProcessRequireList,
  159. "total": total,
  160. "limit": page.PageSize,
  161. }
  162. app.Success(c, data)
  163. }