work_site_node.go 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "zhiyuan/pkg/db"
  6. "github.com/gin-gonic/gin"
  7. )
  8. type WorkSiteNode struct {
  9. ID int `json:"id" type:"int"`
  10. SiteId int `json:"site_id" type:"int" search:"="`
  11. NodeId int `json:"node_id" type:"int" search:"="`
  12. Name string `json:"name" type:"string" search:"like"`
  13. WorkerId int `json:"worker_id" type:"int"`
  14. StartTime int `json:"starttime" type:"int"`
  15. EndTime int `json:"endtime" type:"int"`
  16. ProcessIds string `json:"process_ids" type:"string"`
  17. ReturnVisitID int `json:"return_visit_id" type:"int"`
  18. QualityAcceptID int `json:"quality_accept_id" type:"int"`
  19. RealStartTime int `json:"real_starttime" type:"int"`
  20. RealEndTime int `json:"real_endtime" type:"int"`
  21. ReturnVisitContent string `json:"return_visit_content" label:"回访内容" type:"string"`
  22. ReturnVisitAdminId int `json:"return_visit_admin_id"`
  23. ReturnVisitTime int `json:"return_visit_time"`
  24. Days int `json:"days"`
  25. Mark string `json:"mark" label:"备注" type:"string"`
  26. State int `json:"state" label:"状态" type:"int" search:"="`
  27. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  28. CreatedAt int64 `json:"created_at" prop:"add:false select:false"`
  29. UpdatedAt int64 `json:"updated_at" prop:"add:false"`
  30. db.BaseModel
  31. }
  32. func (WorkSiteNode) TableName() string {
  33. return "zy_work_site_node"
  34. }
  35. func (a WorkSiteNode) GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*WorkSiteNode, error) {
  36. if retVal == nil {
  37. var workSiteNode *WorkSiteNode
  38. err := db.GetOne(a.TableName(), where, fields, &workSiteNode)
  39. return workSiteNode, err
  40. } else {
  41. err := db.GetOne(a.TableName(), where, fields, retVal)
  42. return nil, err
  43. }
  44. }
  45. func (a WorkSiteNode) GetMulti(where map[string]interface{}, fields []string, retVal interface{}) ([]*WorkSiteNode, error) {
  46. if retVal == nil {
  47. var workSiteNode []*WorkSiteNode
  48. err := db.GetMulti(a.TableName(), where, fields, &workSiteNode)
  49. return workSiteNode, err
  50. } else {
  51. err := db.GetMulti(a.TableName(), where, fields, retVal)
  52. return nil, err
  53. }
  54. }
  55. func (a WorkSiteNode) GetOneRaw(where map[string]string, param map[string]interface{}, retVal interface{}) (*WorkSiteNode, error) {
  56. workSiteNode, err := a.GetMultiRaw(where, param, retVal)
  57. if err != nil {
  58. return nil, err
  59. }
  60. if len(workSiteNode) == 0 {
  61. return nil, errors.New("empty record2")
  62. }
  63. return workSiteNode[0], nil
  64. }
  65. func (a WorkSiteNode) GetMultiRaw(where map[string]string, param map[string]interface{}, retVal interface{}) ([]*WorkSiteNode, error) {
  66. field := "SELECT * FROM zy_work_site_node "
  67. if retVal == nil {
  68. var workSiteNode []*WorkSiteNode
  69. err := db.GetMultiRaw(field, where, param, &workSiteNode)
  70. return workSiteNode, err
  71. } else {
  72. err := db.GetMultiRaw(field, where, param, retVal)
  73. return nil, err
  74. }
  75. }
  76. type WorkSiteNodeModel struct {
  77. WorkSiteNode
  78. Username string `json:"username" search:"like" prop:"select:worksite.username"`
  79. Phone string `json:"phone" search:"like" prop:"select:worksite.phone"`
  80. Village string `json:"village" search:"like" prop:"select:worksite.village"`
  81. Address string `json:"address" search:"like" prop:"select:worksite.address"`
  82. RoomNo string `json:"room_no" search:"like" prop:"select:worksite.room_no"`
  83. Area string `json:"area" search:"like" prop:"select:worksite.area"`
  84. WorkerName string `json:"worker_name" label:"姓名" type:"string" prop:"select:worker.name"`
  85. WorkerPhone string `json:"worker_phone" label:"电话号码" type:"string" prop:"select:worker.phone"`
  86. }
  87. func (WorkSiteNodeModel) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  88. return true
  89. }
  90. func (WorkSiteNodeModel) Page() bool {
  91. return false
  92. }
  93. func (WorkSiteNodeModel) Count() bool {
  94. return true
  95. }
  96. func (model WorkSiteNodeModel) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  97. return []db.JoinModel{
  98. {
  99. Model: WorkSite{},
  100. As: "worksite",
  101. On: []string{"`worksite`.`id` = " + model.TableName() + ".`site_id`"},
  102. },
  103. {
  104. Model: Worker{},
  105. As: "worker",
  106. On: []string{"`worker`.`id` = " + model.TableName() + ".`worker_id`"},
  107. },
  108. }
  109. }
  110. type WorkSiteNodeQualityAcceptModel struct {
  111. WorkSiteNodeModel
  112. PkgName string `json:"pkgname" search:"like" prop:"select:workpkg.name"`
  113. PkgDays int64 `json:"pkgdays" type:"int" search:"=" prop:"select:workpkg.days"`
  114. DesignerName string `json:"designer_name" search:"like" prop:"select:designer.username"`
  115. DesignerPhone string `json:"designer_phone" prop:"select:designer.phone"`
  116. DesignerHeadImgUrl string `json:"designer_headimgurl" prop:"select:designer.headimgurl"`
  117. SalesmanName string `json:"salesman_name" search:"like" prop:"select:salesman.username"`
  118. SalesmanPhone string `json:"salesman_phone" prop:"select:salesman.phone"`
  119. SalesmanHeadImgUrl string `json:"salesman_headimgurl" prop:"select:salesman.headimgurl"`
  120. ManagerName string `json:"manager_name" search:"like" prop:"select:manager.username"`
  121. ManagerPhone string `json:"manager_phone" prop:"select:manager.phone"`
  122. ManagerHeadImgUrl string `json:"manager_headimgurl" prop:"select:manager.headimgurl"`
  123. ProjectLeaderName string `json:"project_leader_name" search:"like" prop:"select:project_leader.username"`
  124. ProjectLeaderPhone string `json:"project_leader_phone" prop:"select:project_leader.phone"`
  125. ProjectLeaderHeadImgUrl string `json:"project_leader_headimgurl" prop:"select:project_leader.headimgurl"`
  126. StartTime int64 `json:"starttime" prop:"select:worksite.starttime"`
  127. EndTime int64 `json:"endtime" prop:"select:worksite.endtime"`
  128. RealStartTime int64 `json:"real_starttime" prop:"select:worksite.real_starttime"`
  129. RealEndTime int64 `json:"real_endtime" prop:"select:worksite.real_endtime"`
  130. QualityCreated int64 `json:"quality_created" prop:"select:worksitequalityacceptitem.created_at"`
  131. RequireId int64 `json:"require_id" prop:"select:workprocessrequire.id"`
  132. RequireName string `json:"require_name" search:"like" prop:"select:workprocessrequire.name"`
  133. RequireContent string `json:"require_content" search:"like" prop:"select:workprocessrequire.content"`
  134. Workload int64 `json:"workload" type:"int" search:"=" prop:"select:if((isnull(worksiteprocesspoint.id))or(worksiteprocesspoint.created_at>=zy_work_site_node.starttime+(zy_work_site_node.days+workprocessrequire.days)*86400),0,1)"`
  135. QualityState int64 `json:"quality_state" type:"int" search:"=" prop:"select:if(isnull(worksitequalityacceptitem.id),0,worksitequalityacceptitem.state+1)"`
  136. QualityMark string `json:"quality_mark" search:"like" prop:"select:worksitequalityacceptitem.mark"`
  137. }
  138. func (model WorkSiteNodeQualityAcceptModel) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  139. s.Where = append(s.Where, "`workprocessrequire`.`quality`=1", fmt.Sprintf("not isnull(worksitequalityacceptitem.id) or unix_timestamp() >= `%s`.`starttime` + (`%s`.`days` + `workprocessrequire`.`days` - 1) * 86400", model.TableName(), model.TableName()))
  140. return true
  141. }
  142. func (WorkSiteNodeQualityAcceptModel) Page() bool {
  143. return false
  144. }
  145. func (WorkSiteNodeQualityAcceptModel) Count() bool {
  146. return true
  147. }
  148. //func (model WorkSiteNodeQualityAcceptModel) GroupBy() string {
  149. // return model.TableName() + ".`id`, `workprocessrequire`.`id`"
  150. //}
  151. func (model WorkSiteNodeQualityAcceptModel) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  152. return append(model.WorkSiteNodeModel.LeftJoin(data, s),
  153. db.JoinModel{
  154. Model: WorkPkg{},
  155. As: "workpkg",
  156. On: []string{
  157. "`workpkg`.`id` = `worksite`.`pkg_id`",
  158. },
  159. },
  160. db.JoinModel{
  161. Model: Admin{},
  162. As: "designer",
  163. On: []string{"`designer`.`id` = `worksite`.`designer_id`"},
  164. },
  165. db.JoinModel{
  166. Model: Admin{},
  167. As: "manager",
  168. On: []string{"`manager`.`id` = `worksite`.`manager_id`"},
  169. },
  170. db.JoinModel{
  171. Model: Admin{},
  172. As: "project_leader",
  173. On: []string{"`project_leader`.`id` = `worksite`.`project_leader_id`"},
  174. },
  175. db.JoinModel{
  176. Model: Admin{},
  177. As: "salesman",
  178. On: []string{"`salesman`.`id` = `worksite`.`salesman_id`"},
  179. },
  180. db.JoinModel{
  181. Model: WorkProcess{},
  182. As: "workprocess",
  183. On: []string{
  184. "`workprocess`.`node_id` = " + model.TableName() + ".`node_id`",
  185. "FIND_IN_SET(`workprocess`.`id`, " + model.TableName() + ".`process_ids`)",
  186. },
  187. },
  188. db.JoinModel{
  189. Model: WorkProcessRequire{},
  190. As: "workprocessrequire",
  191. On: []string{
  192. "`workprocessrequire`.`process_id` = `workprocess`.`id`",
  193. "`workprocessrequire`.`state` = 1",
  194. },
  195. },
  196. db.JoinModel{
  197. Model: WorkSiteProcessPoint{},
  198. As: "worksiteprocesspoint",
  199. On: []string{
  200. "`worksiteprocesspoint`.`site_node_id` = " + model.TableName() + ".`id`",
  201. "`worksiteprocesspoint`.`require_id` = `workprocessrequire`.`id`",
  202. },
  203. },
  204. db.JoinModel{
  205. Model: WorkSiteQualityAcceptItem{},
  206. As: "worksitequalityacceptitem",
  207. On: []string{
  208. "`worksitequalityacceptitem`.`site_node_id` = " + model.TableName() + ".`id`",
  209. "`worksitequalityacceptitem`.`require_id` = `workprocessrequire`.`id`",
  210. },
  211. })
  212. }