pick.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package pick
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/gogf/gf/v2/util/gconv"
  6. "zhiyuan/models"
  7. "zhiyuan/models/final"
  8. "zhiyuan/pkg/app"
  9. "zhiyuan/pkg/db"
  10. "zhiyuan/pkg/param/material"
  11. "zhiyuan/pkg/utils"
  12. "zhiyuan/services/form"
  13. "zhiyuan/services/material/item"
  14. "zhiyuan/services/material/pick"
  15. "zhiyuan/services/structs"
  16. )
  17. func PickListback(c *gin.Context) {
  18. pkgID := utils.StrTo(c.Query("site_id")).MustInt()
  19. if pkgID <= 0 {
  20. app.Error(c, "工地id有误")
  21. return
  22. }
  23. itemList := make([]*structs.MaterialPickList, 0)
  24. if _, err := pick.GetPicks(map[string]interface{}{"pkg_id": pkgID}, nil, app.Page{}, &itemList); err != nil {
  25. app.Error(c, err.Error())
  26. return
  27. }
  28. typeListMap := item.GetTypeMapByCache()
  29. itemRoomTypeList := make(map[int][]*structs.MaterialPickList, 0)
  30. for _, v := range itemList {
  31. v.ItemTypeName = typeListMap[v.ItemType]
  32. itemRoomTypeList[v.RoomType] = append(itemRoomTypeList[v.RoomType], v)
  33. }
  34. type PkgItemList struct {
  35. RoomType int `json:"room_type"`
  36. RoomName string `json:"room_name"`
  37. Items []*structs.MaterialPickList `json:"items"`
  38. }
  39. pkgItemListGroup := make([]PkgItemList, 0)
  40. for _, v := range material.Params.RoomType {
  41. if itemRoomTypeList[v.ID] == nil {
  42. itemRoomTypeList[v.ID] = make([]*structs.MaterialPickList, 0)
  43. }
  44. pkgItemListGroup = append(pkgItemListGroup, PkgItemList{
  45. RoomName: v.Name,
  46. RoomType: v.ID,
  47. Items: itemRoomTypeList[v.ID],
  48. })
  49. }
  50. pkgItemList := make([]map[string]interface{}, 0)
  51. for _, v := range pkgItemListGroup {
  52. pkgItemList = append(pkgItemList, map[string]interface{}{
  53. "room_type": v.RoomType,
  54. "room_name": v.RoomName,
  55. "rowspan": len(v.Items) + 1,
  56. "colspan": 1,
  57. })
  58. for _, sub := range v.Items {
  59. pkgItemList = append(pkgItemList, map[string]interface{}{
  60. "id": sub.ID,
  61. "room_type": sub.RoomType,
  62. "pick_name": sub.PickName,
  63. "level": sub.Level,
  64. "standard": sub.Standard,
  65. "cycle": sub.Cycle,
  66. "confirm_type": sub.ConfirmType,
  67. "rowspan": 0,
  68. "colspan": 0,
  69. "item_type": sub.ItemType,
  70. "item_type_name": sub.ItemTypeName,
  71. })
  72. }
  73. }
  74. app.Success(c, map[string]interface{}{"sub_list": pkgItemList})
  75. }
  76. func PickList(c *gin.Context) {
  77. siteID := utils.StrTo(c.Query("site_id")).MustInt()
  78. if siteID <= 0 {
  79. app.Error(c, "工地id有误")
  80. return
  81. }
  82. var site final.FinalSite
  83. db.GetModel(map[string]interface{}{
  84. "id": siteID,
  85. "deleted_at": 0,
  86. }, &site)
  87. if site.ID == 0 {
  88. app.Error(c, "工地不存在")
  89. return
  90. }
  91. var workList []*final.MatPickWork
  92. db.GetModel(map[string]interface{}{
  93. "site_id": site.ID,
  94. "deleted_at": 0,
  95. }, &workList)
  96. itemRoomTypeList := make(map[int][]*final.MatPickWork)
  97. var oneLevel []int
  98. for _, v := range workList {
  99. fmt.Println(v.PickName)
  100. oneLevel = utils.AppendUniqueInt(oneLevel, gconv.Int(v.RoomType))
  101. itemRoomTypeList[gconv.Int(v.RoomType)] = append(itemRoomTypeList[gconv.Int(v.RoomType)], v)
  102. }
  103. type PkgItemList struct {
  104. RoomType int `json:"room_type"`
  105. RoomName string `json:"room_name"`
  106. Items []*final.MatPickWork `json:"items"`
  107. }
  108. pkgItemListGroup := make([]PkgItemList, 0)
  109. //获取当前工地的一级目录
  110. var accepts []models.WorkQualityAccept
  111. db.GetModel(map[string]interface{}{"id in": oneLevel}, &accepts)
  112. for _, v := range accepts {
  113. if itemRoomTypeList[gconv.Int(v.ID)] == nil {
  114. itemRoomTypeList[gconv.Int(v.ID)] = make([]*final.MatPickWork, 0)
  115. }
  116. pkgItemListGroup = append(pkgItemListGroup, PkgItemList{
  117. RoomName: v.Name,
  118. RoomType: gconv.Int(v.ID),
  119. Items: itemRoomTypeList[gconv.Int(v.ID)],
  120. })
  121. }
  122. pkgItemList := make([]map[string]interface{}, 0)
  123. for _, v := range pkgItemListGroup {
  124. pkgItemList = append(pkgItemList, map[string]interface{}{
  125. "room_type": v.RoomType,
  126. "room_name": v.RoomName,
  127. "rowspan": len(v.Items) + 1,
  128. "colspan": 1,
  129. })
  130. for _, sub := range v.Items {
  131. pkgItemList = append(pkgItemList, map[string]interface{}{
  132. "id": sub.ID,
  133. "room_type": sub.RoomType,
  134. "pick_name": sub.PickName,
  135. "photograph": sub.Photograph,
  136. "cycle": sub.Cycle,
  137. "worker_id": sub.WorkerId,
  138. "worker_name": sub.WorkerName,
  139. "pictures": sub.Pictures,
  140. "rowspan": 0,
  141. "colspan": 0,
  142. //"item_type": sub.ItemType,
  143. //"item_type_name": sub.ItemTypeName,
  144. })
  145. }
  146. }
  147. app.Success(c, map[string]interface{}{"sub_list": pkgItemList, "site_info": site})
  148. }
  149. func PickAdd(c *gin.Context) {
  150. var form form.WorkItemAdd
  151. if app.Bind(c, &form) != nil {
  152. return
  153. }
  154. if id, err := pick.AddPickWork(form); err != nil {
  155. app.Error(c, err.Error())
  156. return
  157. } else {
  158. app.Success(c, gin.H{"id": id})
  159. }
  160. }
  161. func PickEdit(c *gin.Context) {
  162. id := utils.StrTo(c.Param("id")).MustInt()
  163. if id <= 0 {
  164. app.Error(c, "id有误")
  165. return
  166. }
  167. var form form.WorkItemAdd
  168. if app.Bind(c, &form) != nil {
  169. return
  170. }
  171. if _, err := pick.EditPickWork(form, id); err != nil {
  172. app.ErrorMsg(c, err.Error(), nil)
  173. return
  174. }
  175. app.Success(c, nil)
  176. }
  177. func PickDel(c *gin.Context) {
  178. siteId := utils.StrTo(c.Param("site_id")).MustInt()
  179. if siteId <= 0 {
  180. app.Error(c, "site_id有误")
  181. return
  182. }
  183. Id := utils.StrTo(c.Param("id")).MustInt()
  184. if Id <= 0 {
  185. app.Error(c, "id有误")
  186. return
  187. }
  188. if _, err := pick.DelPickWork(Id, siteId); err != nil {
  189. app.ErrorMsg(c, err.Error(), nil)
  190. return
  191. }
  192. app.Success(c, nil)
  193. }