worksitenode.go 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  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/workprocess"
  9. "zhiyuan/services/work/worksitenode"
  10. "github.com/gin-gonic/gin"
  11. )
  12. func WorkSiteNodeList(c *gin.Context) {
  13. page := app.HandlePageNums(c)
  14. where := map[string]string{
  15. "where": "`zy_work_site_node`.`id`>0 AND `zy_work_site_node`.`deleted_at`=0",
  16. "_order_by": "`zy_work_site_node`.`id` desc",
  17. "_group_by": "`zy_work_site_node`.`id`",
  18. }
  19. if page.PageSize != 0 {
  20. where["_page_size"] = utils.ToStr(page.PageSize)
  21. where["_page_num"] = utils.ToStr(page.PageNum)
  22. }
  23. param := make(map[string]interface{})
  24. site_id := utils.ToInt(c.Query("site_id"))
  25. if site_id != 0 {
  26. where["where"] = where["where"] + " AND `zy_work_site_node`.`site_id`={{site_id}}"
  27. param["site_id"] = site_id
  28. }
  29. state := utils.ToInt(c.Query("state"))
  30. if state != 0 {
  31. switch state {
  32. case 6:
  33. where["where"] = where["where"] + " AND UNIX_TIMESTAMP(CURDATE()) >= UNIX_TIMESTAMP(DATE_SUB(DATE(FROM_UNIXTIME(`zy_work_site_node`.`endtime`)),INTERVAL -1 DAY)) AND `zy_work_site_node`.`state`!=4 AND `zy_work_site_node`.`return_visit_id`!=0 AND `zy_work_site_node`.`return_visit_time`=0"
  34. case 7:
  35. where["where"] = where["where"] + " AND `zy_work_site_node`.`state`!=4 AND `zy_work_site_node`.`return_visit_id`!=0 AND `zy_work_site_node`.`return_visit_time`!=0"
  36. case 8:
  37. where["where"] = where["where"] + " AND `zy_work_site_node`.`state`!=4 AND `zy_work_site_node`.`state`<2 AND `zy_work_site`.`state`=3"
  38. default:
  39. where["where"] = where["where"] + " AND `zy_work_site_node`.`state`={{state}}"
  40. if state < 3 {
  41. where["where"] = where["where"] + " AND `zy_work_site`.`state`!=3"
  42. }
  43. param["state"] = state - 1
  44. }
  45. }
  46. order := utils.ToInt(c.Query("order"))
  47. if order != 0 {
  48. switch order {
  49. case 1:
  50. where["_order_by"] = "`zy_work_site_node`.`starttime` asc"
  51. case 2:
  52. where["_order_by"] = "`zy_work_site_node`.`starttime` desc"
  53. case 3:
  54. where["_order_by"] = "`zy_work_site_node`.`endtime` asc"
  55. case 4:
  56. where["_order_by"] = "`zy_work_site_node`.`endtime` desc"
  57. case 5:
  58. where["_order_by"] = "COUNT(DISTINCT `zy_work_site_problem`.`id`) desc"
  59. case 6:
  60. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=0, `zy_work_site_problem`.`id`, NULL)) desc"
  61. case 7:
  62. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=1, `zy_work_site_problem`.`id`, NULL)) desc"
  63. case 8:
  64. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=2, `zy_work_site_problem`.`id`, NULL)) desc"
  65. case 9:
  66. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1, `zy_work_process_require`.`id`, NULL)) desc"
  67. case 10:
  68. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1 AND ISNULL(`zy_work_site_quality_accept_item`.`id`), `zy_work_process_require`.`id`, NULL)) desc"
  69. case 11:
  70. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=0, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
  71. case 12:
  72. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=1, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
  73. case 13:
  74. where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=2, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
  75. case 14:
  76. where["_order_by"] = "COUNT(DISTINCT `zy_work_process_require`.`id`) desc"
  77. case 15:
  78. where["_order_by"] = "COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`), `zy_work_process_require`.`id`, NULL)) desc"
  79. case 16:
  80. where["_order_by"] = "COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=0, `zy_work_process_require`.`id`, NULL)) desc"
  81. case 17:
  82. where["_order_by"] = "COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) desc"
  83. case 18:
  84. where["_order_by"] = "COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days` - 1)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 >= IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) desc"
  85. case 19:
  86. where["_order_by"] = "COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=1, `zy_work_process_require`.`id`, NULL)) desc"
  87. }
  88. }
  89. /*field := "SELECT `zy_work_site_node`.*, `zy_work_node`.`color`, `zy_work_node`.`logo`, `zy_worker`.`name` as `worker_name`, `zy_worker`.`phone` as `worker_phone`, `zy_work_site`.`username` as `username`, `zy_work_site`.`phone` as `phone`, `zy_work_site`.`village` as `village`, `zy_work_site`.`address` as `address`, `zy_work_site`.`room_no` as `room_no`, `zy_work_site`.`area` as `area`, `zy_work_site`.`starttime` as `site_starttime`, `zy_work_site`.`endtime` as `site_endtime`, `zy_work_site`.`state` as `site_state`, `zy_admin`.`username` as `return_visit_username`, `zy_admin`.`phone` as `return_visit_phone`, `zy_admin`.`headimgurl` as `return_visit_headimgurl`, COUNT(DISTINCT `zy_work_site_problem`.`id`) as `problem_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=0, `zy_work_site_problem`.`id`, NULL)) as `problem_state0_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=1, `zy_work_site_problem`.`id`, NULL)) as `problem_state1_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=2, `zy_work_site_problem`.`id`, NULL)) as `problem_state2_count`, COUNT(DISTINCT `zy_work_quality_accept_item`.`id`) as `quality_accept_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_quality_accept_item`.`id`) AND ISNULL(`zy_work_site_quality_accept_item`.`id`), `zy_work_quality_accept_item`.`id`, NULL)) as `unquality_accept_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=0, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state0_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=1, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state1_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=2, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state2_count`, `zy_work_return_visit`.`name` as `return_visit_name`, COUNT(DISTINCT `zy_work_process_require`.`id`) as `process_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`), `zy_work_process_require`.`id`, NULL)) as `unprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=0, `zy_work_process_require`.`id`, NULL)) as `inprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=1, `zy_work_process_require`.`id`, NULL)) as `ingprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) as `overtime_process_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days` - 1)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 >= IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) as `yovertime_process_require_count` FROM `zy_work_site_node` left join `zy_work_node` on `zy_work_node`.`id` = `zy_work_site_node`.`node_id` left join `zy_worker` on `zy_worker`.`id` = `zy_work_site_node`.`worker_id` left join `zy_work_site` on `zy_work_site`.`id` = `zy_work_site_node`.`site_id` left join `zy_admin` on `zy_admin`.`id` = `zy_work_site_node`.`return_visit_admin_id` left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` left join `zy_work_quality_accept_item` on `zy_work_quality_accept_item`.`quality_accept_id` = `zy_work_site_node`.`quality_accept_id` AND `zy_work_quality_accept_item`.`state`=1 AND `zy_work_site_node`.`state`=3 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`item_id` = `zy_work_quality_accept_item`.`id` left join `zy_work_return_visit` on `zy_work_return_visit`.`id` = `zy_work_site_node`.`return_visit_id` left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_process_point` on `zy_work_site_process_point`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_process_point`.`require_id` = `zy_work_process_require`.`id`"*/
  90. field := "SELECT `zy_work_site_node`.*, `zy_work_node`.`color`, `zy_work_node`.`logo`, `zy_worker`.`name` as `worker_name`, `zy_worker`.`phone` as `worker_phone`, `zy_work_site`.`username` as `username`, `zy_work_site`.`phone` as `phone`, `zy_work_site`.`village` as `village`, `zy_work_site`.`address` as `address`, `zy_work_site`.`room_no` as `room_no`, `zy_work_site`.`area` as `area`, `zy_work_site`.`starttime` as `site_starttime`, `zy_work_site`.`endtime` as `site_endtime`, `zy_work_site`.`state` as `site_state`, `zy_admin`.`username` as `return_visit_username`, `zy_admin`.`phone` as `return_visit_phone`, `zy_admin`.`headimgurl` as `return_visit_headimgurl`, COUNT(DISTINCT `zy_work_site_problem`.`id`) as `problem_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=0, `zy_work_site_problem`.`id`, NULL)) as `problem_state0_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=1, `zy_work_site_problem`.`id`, NULL)) as `problem_state1_count`, COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=2, `zy_work_site_problem`.`id`, NULL)) as `problem_state2_count`, COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1, `zy_work_process_require`.`id`, NULL)) as `quality_accept_count`, COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1 AND ISNULL(`zy_work_site_quality_accept_item`.`id`) AND unix_timestamp() < `zy_work_site_node`.`starttime` + (`zy_work_site_node`.`days` + `zy_work_process_require`.`days` - 1) * 86400, `zy_work_process_require`.`id`, NULL)) as `unstartquality_accept_count`, COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1 AND ISNULL(`zy_work_site_quality_accept_item`.`id`) AND unix_timestamp() >= `zy_work_site_node`.`starttime` + (`zy_work_site_node`.`days` + `zy_work_process_require`.`days` - 1) * 86400, `zy_work_process_require`.`id`, NULL)) as `unquality_accept_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=0, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state0_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=1, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state1_count`, COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=2, `zy_work_site_quality_accept_item`.`id`, NULL)) as `quality_accept_state2_count`, `zy_work_return_visit`.`name` as `return_visit_name`, COUNT(DISTINCT `zy_work_process_require`.`id`) as `process_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`), `zy_work_process_require`.`id`, NULL)) as `unprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=0, `zy_work_process_require`.`id`, NULL)) as `inprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND NOT ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_process_point`.`state`=1, `zy_work_process_require`.`id`, NULL)) as `ingprocess_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) as `overtime_process_require_count`, COUNT(DISTINCT IF(NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days` - 1)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 >= IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp()), `zy_work_process_require`.`id`, NULL)) as `yovertime_process_require_count` FROM `zy_work_site_node` left join `zy_work_node` on `zy_work_node`.`id` = `zy_work_site_node`.`node_id` left join `zy_worker` on `zy_worker`.`id` = `zy_work_site_node`.`worker_id` left join `zy_work_site` on `zy_work_site`.`id` = `zy_work_site_node`.`site_id` left join `zy_admin` on `zy_admin`.`id` = `zy_work_site_node`.`return_visit_admin_id` left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` left join `zy_work_return_visit` on `zy_work_return_visit`.`id` = `zy_work_site_node`.`return_visit_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_site_process_point` on `zy_work_site_process_point`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_process_point`.`require_id` = `zy_work_process_require`.`id`"
  91. if utils.ToInt(c.Query("my")) != 0 {
  92. where["where"] = where["where"] + " AND (`zy_work_site`.`manager_id`={{adminID}} OR `zy_work_site`.`designer_id`={{adminID}} OR `zy_work_site`.`salesman_id`={{adminID}} OR `zy_work_site`.`project_manager_id`={{adminID}} OR `zy_work_site`.`project_leader_id`={{adminID}} OR `zy_work_site`.`servicer_id`={{adminID}} OR `zy_work_site`.`quality_id`={{adminID}} OR `zy_work_site`.`assistant_id`={{adminID}} OR `zy_work_site`.`created_id`={{adminID}} OR FIND_IN_SET({{adminID}}, `zy_work_site`.`admin_ids`))"
  93. param["adminID"] = c.GetInt("adminID")
  94. }
  95. query := "SELECT `zy_work_site_node`.`id` FROM `zy_work_site_node` left join `zy_work_site` on `zy_work_site`.`id` = `zy_work_site_node`.`site_id` WHERE " + where["where"] + " GROUP BY `zy_work_site_node`.`id`"
  96. total, err := db.GetQueryCount(query, param, nil)
  97. if err != nil {
  98. app.Error(c, err.Error())
  99. return
  100. }
  101. type WorkSiteNodeList struct {
  102. ID int `json:"id"`
  103. SiteId int `json:"site_id"`
  104. NodeId int `json:"node_id"`
  105. Name string `json:"name"`
  106. WorkerId int `json:"worker_id"`
  107. StartTime int `json:"starttime"`
  108. EndTime int `json:"endtime"`
  109. ProcessIds string `json:"process_ids"`
  110. Days int `json:"days"`
  111. Mark string `json:"mark"`
  112. State int `json:"state"`
  113. CreatedAt int `json:"created_at"`
  114. UpdatedAt int `json:"updated_at"`
  115. Color string `json:"color"`
  116. Logo string `json:"logo"`
  117. WorkTypeId int `json:"work_type_id"`
  118. ReturnVisitID int `json:"return_visit_id"`
  119. ReturnVisitContent string `json:"return_visit_content"`
  120. ReturnVisitAdminId int `json:"return_visit_admin_id"`
  121. ReturnVisitTime int `json:"return_visit_time"`
  122. QualityAcceptID int `json:"quality_accept_id"`
  123. QualityTime int `json:"quality_time"`
  124. QualityId int `json:"quality_id"`
  125. QualityAt int `json:"quality_at"`
  126. WorkerName string `json:"worker_name"`
  127. WorkerPhone string `json:"worker_phone"`
  128. Username string `json:"username"`
  129. Phone string `json:"phone"`
  130. Village string `json:"village"`
  131. Address string `json:"address"`
  132. RoomNo string `json:"room_no"`
  133. SiteStarttime string `json:"site_starttime"`
  134. SiteEndtime string `json:"site_endtime"`
  135. SiteState string `json:"site_state"`
  136. ReturnVisitName string `json:"return_visit_name"`
  137. ReturnVisitUsername string `json:"return_visit_username"`
  138. ReturnVisitPhone string `json:"return_visit_phone"`
  139. ReturnVisitHeadimgurl string `json:"return_visit_headimgurl"`
  140. ProblemCount int `json:"problem_count"`
  141. ProblemState0Count int `json:"problem_state0_count"`
  142. ProblemState1Count int `json:"problem_state1_count"`
  143. ProblemState2Count int `json:"problem_state2_count"`
  144. QualityAcceptCount int `json:"quality_accept_count"`
  145. UNStartQualityAcceptCount int `json:"unstartquality_accept_count"`
  146. UNQualityAcceptCount int `json:"unquality_accept_count"`
  147. QualityAcceptState0Count int `json:"quality_accept_state0_count"`
  148. QualityAcceptState1Count int `json:"quality_accept_state1_count"`
  149. QualityAcceptState2Count int `json:"quality_accept_state2_count"`
  150. ProcessRequireCount int `json:"process_require_count"`
  151. UNProcessRequireCount int `json:"unprocess_require_count"`
  152. INProcessRequireCount int `json:"inprocess_require_count"`
  153. INGProcessRequireCount int `json:"ingprocess_require_count"`
  154. OvertimeProcessRequireCount int `json:"overtime_process_require_count"`
  155. YOvertimeProcessRequireCount int `json:"yovertime_process_require_count"`
  156. }
  157. workSiteNodeList := make([]WorkSiteNodeList, 0)
  158. if err = db.GetMultiRaw(field, where, param, &workSiteNodeList); err != nil {
  159. app.Error(c, err.Error())
  160. return
  161. }
  162. data := gin.H{
  163. "list": workSiteNodeList,
  164. "total": total,
  165. "limit": page.PageSize,
  166. }
  167. app.Success(c, data)
  168. }
  169. func WorkSiteNodeInfo(c *gin.Context) {
  170. id := utils.StrTo(c.Param("id")).MustInt()
  171. if id <= 0 {
  172. app.ErrorMsg(c, "id must be a number", nil)
  173. return
  174. }
  175. type WorkSiteNodeInfo struct {
  176. ID int `json:"id"`
  177. SiteId int `json:"site_id"`
  178. NodeId int `json:"node_id"`
  179. Name string `json:"name"`
  180. WorkerId int `json:"worker_id"`
  181. StartTime int `json:"starttime"`
  182. EndTime int `json:"endtime"`
  183. ProcessIds string `json:"process_ids"`
  184. Days int `json:"days"`
  185. Mark string `json:"mark"`
  186. State int `json:"state"`
  187. CreatedAt int `json:"created_at"`
  188. UpdatedAt int `json:"updated_at"`
  189. Color string `json:"color"`
  190. Logo string `json:"logo"`
  191. WorkTypeId int `json:"work_type_id"`
  192. ReturnVisitID int `json:"return_visit_id"`
  193. QualityAcceptID int `json:"quality_accept_id"`
  194. QualityTime int `json:"quality_time"`
  195. QualityId int `json:"quality_id"`
  196. QualityAt int `json:"quality_at"`
  197. ReturnVisitContent string `json:"return_visit_content"`
  198. ReturnVisitAdminId int `json:"return_visit_admin_id"`
  199. ReturnVisitTime int `json:"return_visit_time"`
  200. ReturnVisitFrom map[int]form.ReturnVisitItem `json:"return_visit_from"`
  201. WorkerName string `json:"worker_name"`
  202. WorkTypeName string `json:"work_type_name"`
  203. WorkerPhone string `json:"worker_phone"`
  204. ReturnVisitName string `json:"return_visit_name"`
  205. ReturnVisitPhone string `json:"return_visit_phone"`
  206. ReturnVisitHeadimgurl string `json:"return_visit_headimgurl"`
  207. WorkProcess []models.WorkProcess `json:"work_process"`
  208. ReturnVisit *models.WorkReturnVisit `json:"return_visit"`
  209. }
  210. var workSiteNodeInfo WorkSiteNodeInfo
  211. err := worksitenode.GetWorkSiteNodeByID(id, &workSiteNodeInfo)
  212. if err != nil {
  213. app.Error(c, err.Error())
  214. return
  215. }
  216. workSiteNodeInfo.WorkProcess = make([]models.WorkProcess, 0)
  217. if _, err = workprocess.GetWorkProcesssRaw(map[string]string{
  218. "where": "FIND_IN_SET(`zy_work_process`.`id`, {{process_ids}}) AND `zy_work_process`.`deleted_at`=0 AND `zy_work_process`.`node_id`={{node_id}}",
  219. }, map[string]interface{}{
  220. "node_id": workSiteNodeInfo.NodeId,
  221. "process_ids": workSiteNodeInfo.ProcessIds,
  222. }, &workSiteNodeInfo.WorkProcess); err != nil {
  223. app.Error(c, err.Error())
  224. return
  225. }
  226. if workSiteNodeInfo.ReturnVisitID != 0 {
  227. workSiteNodeInfo.ReturnVisit = models.GetWorkReturnVisitModel(int64(workSiteNodeInfo.ReturnVisitID), false)
  228. }
  229. utils.JsonDecode(workSiteNodeInfo.ReturnVisitContent).To(&workSiteNodeInfo.ReturnVisitFrom)
  230. app.Success(c, workSiteNodeInfo)
  231. }
  232. func WorkSiteNodeAdd(c *gin.Context) {
  233. var addForm form.WorkSiteNodeAdd
  234. if app.Bind(c, &addForm) != nil {
  235. return
  236. }
  237. id, err := worksitenode.Add(addForm, c.GetInt("adminID"))
  238. if err != nil {
  239. app.Error(c, err.Error())
  240. return
  241. }
  242. app.Success(c, gin.H{"id": id})
  243. }
  244. func WorkSiteNodeEdit(c *gin.Context) {
  245. id := utils.ToInt(c.Param("id"))
  246. if id <= 0 {
  247. app.ErrorMsg(c, "id must be a number", nil)
  248. return
  249. }
  250. var editForm form.WorkSiteNodeEdit
  251. if app.Bind(c, &editForm) != nil {
  252. return
  253. }
  254. err := worksitenode.EditByID(editForm, id, c.GetInt("adminID"))
  255. if err != nil {
  256. app.ErrorMsg(c, err.Error(), nil)
  257. return
  258. }
  259. app.Success(c, nil)
  260. }
  261. func WorkSiteNodeDel(c *gin.Context) {
  262. id := utils.ToInt(c.Param("id"))
  263. if id <= 0 {
  264. app.ErrorMsg(c, "id must be a number", nil)
  265. return
  266. }
  267. err := worksitenode.DeleteByID(id, c.GetInt("adminID"))
  268. if err != nil {
  269. app.Error(c, err.Error())
  270. return
  271. }
  272. app.Success(c, nil)
  273. }
  274. func WorkSiteNodeDispatchWorker(c *gin.Context) {
  275. id := utils.ToInt(c.Param("id"))
  276. if id <= 0 {
  277. app.ErrorMsg(c, "id must be a number", nil)
  278. return
  279. }
  280. var editForm form.WorkSiteNodeWorkerID
  281. if app.Bind(c, &editForm) != nil {
  282. return
  283. }
  284. err := worksitenode.DispatchByID(editForm, id, c.GetInt("adminID"))
  285. if err != nil {
  286. app.ErrorMsg(c, err.Error(), nil)
  287. return
  288. }
  289. app.Success(c, nil)
  290. }
  291. func WorkSiteNodeStart(c *gin.Context) {
  292. id := utils.ToInt(c.Param("id"))
  293. if id <= 0 {
  294. app.ErrorMsg(c, "id must be a number", nil)
  295. return
  296. }
  297. err := worksitenode.StartByID(id, c.GetInt("adminID"))
  298. if err != nil {
  299. app.ErrorMsg(c, err.Error(), nil)
  300. return
  301. }
  302. app.Success(c, nil)
  303. }
  304. func WorkSiteNodeReturnVisit(c *gin.Context) {
  305. id := utils.ToInt(c.Param("id"))
  306. if id <= 0 {
  307. app.ErrorMsg(c, "id must be a number", nil)
  308. return
  309. }
  310. var returnForm form.ReturnVisitFrom
  311. if app.Bind(c, &returnForm) != nil {
  312. return
  313. }
  314. err := worksitenode.ReturnVisitByID(returnForm, id, c.GetInt("adminID"))
  315. if err != nil {
  316. app.ErrorMsg(c, err.Error(), nil)
  317. return
  318. }
  319. app.Success(c, nil)
  320. }
  321. func WorkSiteNodeStatist(c *gin.Context) {
  322. param := make(map[string]interface{})
  323. query := "SELECT `zy_work_site_node`.`id` FROM `zy_work_site_node` left join `zy_work_site` on `zy_work_site`.`id` = `zy_work_site_node`.`site_id` "
  324. where := " AND `zy_work_site_node`.`deleted_at` = 0"
  325. if utils.ToInt(c.Query("my")) != 0 {
  326. where = where + " AND (`zy_work_site`.`manager_id`={{adminID}} OR `zy_work_site`.`designer_id`={{adminID}} OR `zy_work_site`.`salesman_id`={{adminID}} OR `zy_work_site`.`project_manager_id`={{adminID}} OR `zy_work_site`.`project_leader_id`={{adminID}} OR `zy_work_site`.`servicer_id`={{adminID}} OR `zy_work_site`.`quality_id`={{adminID}} OR `zy_work_site`.`assistant_id`={{adminID}} OR `zy_work_site`.`created_id`={{adminID}} OR FIND_IN_SET({{adminID}}, `zy_work_site`.`admin_ids`))"
  327. param["adminID"] = c.GetInt("adminID")
  328. }
  329. waitvalid, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 2"+where, param, nil)
  330. if err != nil {
  331. app.Error(c, err.Error())
  332. return
  333. }
  334. uncheck, err := db.GetQueryCount(query+" left join `zy_work_site_check` on `zy_work_site_check`.`site_id` = `zy_work_site`.`id` WHERE `zy_work_site_check`.`state`=0"+where+" group by `zy_work_site_check`.`site_id`", param, nil)
  335. if err != nil {
  336. app.Error(c, err.Error())
  337. return
  338. }
  339. unstart, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 0 AND `zy_work_site_node`.`starttime` + 86399 < unix_timestamp()"+where, param, nil)
  340. if err != nil {
  341. app.Error(c, err.Error())
  342. return
  343. }
  344. unend, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 0 AND `zy_work_site_node`.`endtime` + 86399 < unix_timestamp()"+where, param, nil)
  345. if err != nil {
  346. app.Error(c, err.Error())
  347. return
  348. }
  349. unpoint, err := db.GetQueryCount(query+" left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_process_point` on `zy_work_site_process_point`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_process_point`.`require_id` = `zy_work_process_require`.`id` WHERE NOT ISNULL(`zy_work_process_require`.`id`) AND ISNULL(`zy_work_site_process_point`.`id`) AND `zy_work_site_node`.`starttime`+(`zy_work_site_node`.`days`+`zy_work_process_require`.`days`)*86400 < IF(`zy_work_site`.`state`=3, `zy_work_site`.`stoptime`, unix_timestamp())"+where, param, nil)
  350. if err != nil {
  351. app.Error(c, err.Error())
  352. return
  353. }
  354. unproblem, err := db.GetQueryCount(query+" left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` left join `zy_work_problem` on `zy_work_problem`.`id` = `zy_work_site_problem`.`problem_id` WHERE `zy_work_site_problem`.`state`=0 AND IF(zy_work_site_problem.state=0,UNIX_TIMESTAMP(DATE(from_unixtime(zy_work_site_problem.created_at)))+144000,IF(zy_work_site_problem.state=1,UNIX_TIMESTAMP(DATE(from_unixtime(zy_work_site_problem.updated_at)))+86400,IF(zy_work_site_problem.state=2,UNIX_TIMESTAMP(DATE(from_unixtime(zy_work_site_problem.finishtime)))+86400,IF(zy_work_site_problem.state=3,UNIX_TIMESTAMP(DATE(from_unixtime(zy_work_site_problem.updated_at)))+86400,~0)))) < unix_timestamp()"+where, param, nil)
  355. if err != nil {
  356. app.Error(c, err.Error())
  357. return
  358. }
  359. problem0, err := db.GetQueryCount(query+" left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` WHERE `zy_work_site_problem`.`state`=0"+where, param, nil)
  360. if err != nil {
  361. app.Error(c, err.Error())
  362. return
  363. }
  364. problem2, err := db.GetQueryCount(query+" left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` WHERE `zy_work_site_problem`.`state`=2"+where, param, nil)
  365. if err != nil {
  366. app.Error(c, err.Error())
  367. return
  368. }
  369. problem4, err := db.GetQueryCount(query+" left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` WHERE `zy_work_site_problem`.`state`=4"+where, param, nil)
  370. if err != nil {
  371. app.Error(c, err.Error())
  372. return
  373. }
  374. visitproblem, err := db.GetQueryCount(query+" left join `zy_work_site_problem` on `zy_work_site_problem`.`site_node_id` = `zy_work_site_node`.`id` WHERE `zy_work_site_problem`.`state`=1 OR `zy_work_site_problem`.`state`=3 OR `zy_work_site_problem`.`state`=5"+where, param, nil)
  375. if err != nil {
  376. app.Error(c, err.Error())
  377. return
  378. }
  379. unvisit, err := db.GetQueryCount(query+" WHERE UNIX_TIMESTAMP(CURDATE()) >= UNIX_TIMESTAMP(DATE_SUB(DATE(FROM_UNIXTIME(`zy_work_site_node`.`endtime`)),INTERVAL -1 DAY)) AND `zy_work_site_node`.`return_visit_id`!=0 AND `zy_work_site_node`.`return_visit_time`=0"+where, param, nil)
  380. if err != nil {
  381. app.Error(c, err.Error())
  382. return
  383. }
  384. visit, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`return_visit_id`!=0 AND `zy_work_site_node`.`return_visit_time`!=0"+where, param, nil)
  385. if err != nil {
  386. app.Error(c, err.Error())
  387. return
  388. }
  389. unaccept, err := db.GetQueryCount(query+" left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` WHERE `zy_work_process_require`.`quality`=1 AND ISNULL(`zy_work_site_quality_accept_item`.`id`) AND unix_timestamp() >= `zy_work_site_node`.`starttime` + (`zy_work_site_node`.`days` + `zy_work_process_require`.`days` - 1) * 86400"+where, param, nil)
  390. if err != nil {
  391. app.Error(c, err.Error())
  392. return
  393. }
  394. unqual_accept, err := db.GetQueryCount(query+" left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` WHERE `zy_work_site_quality_accept_item`.`state`=0"+where, param, nil)
  395. if err != nil {
  396. app.Error(c, err.Error())
  397. return
  398. }
  399. reaccept, err := db.GetQueryCount(query+" left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` WHERE `zy_work_site_quality_accept_item`.`state`=2"+where, param, nil)
  400. if err != nil {
  401. app.Error(c, err.Error())
  402. return
  403. }
  404. unend_accept, err := db.GetQueryCount(query+" left join `zy_work_process` on `zy_work_process`.`node_id` = `zy_work_site_node`.`node_id` AND FIND_IN_SET(`zy_work_process`.`id`, `zy_work_site_node`.`process_ids`) left join `zy_work_process_require` on `zy_work_process_require`.`process_id` = `zy_work_process`.`id` AND `zy_work_process_require`.`state` = 1 left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_node`.`id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` WHERE `zy_work_site_quality_accept_item`.`state`=0 AND `zy_work_site_quality_accept_item`.`created_at`+`zy_work_process_require`.`quality_days`*86400 < unix_timestamp()"+where, param, nil)
  405. if err != nil {
  406. app.Error(c, err.Error())
  407. return
  408. }
  409. data := gin.H{
  410. "waitvalid": waitvalid,
  411. "uncheck": uncheck,
  412. "unstart": unstart,
  413. "unend": unend,
  414. "unpoint": unpoint,
  415. "unproblem": unproblem,
  416. "problem0": problem0,
  417. "problem2": problem2,
  418. "problem4": problem4,
  419. "visitproblem": visitproblem,
  420. "unvisit": unvisit,
  421. "visit": visit,
  422. "unaccept": unaccept,
  423. "unqual_accept": unqual_accept,
  424. "reaccept": reaccept,
  425. "unend_accept": unend_accept,
  426. }
  427. app.Success(c, data)
  428. }
  429. func WorkSiteNodeQualityTime(c *gin.Context) {
  430. id := utils.ToInt(c.Param("id"))
  431. if id <= 0 {
  432. app.ErrorMsg(c, "id must be a number", nil)
  433. return
  434. }
  435. var editForm form.WorkSiteNodeQualityTime
  436. if app.Bind(c, &editForm) != nil {
  437. return
  438. }
  439. err := worksitenode.EditQualityTimeByID(editForm, id)
  440. if err != nil {
  441. app.ErrorMsg(c, err.Error(), nil)
  442. return
  443. }
  444. app.Success(c, nil)
  445. }
  446. func WorkSiteNodeQualityCheck(c *gin.Context) {
  447. id := utils.ToInt(c.Param("id"))
  448. if id <= 0 {
  449. app.ErrorMsg(c, "id must be a number", nil)
  450. return
  451. }
  452. err := worksitenode.QualityCheck(id, c.GetInt("adminID"))
  453. if err != nil {
  454. app.ErrorMsg(c, err.Error(), nil)
  455. return
  456. }
  457. app.Success(c, nil)
  458. }