123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- package work
- import (
- "zhiyuan/models"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/form"
- "zhiyuan/services/work/workprocess"
- "zhiyuan/services/work/worksitenode"
- "github.com/gin-gonic/gin"
- )
- func WorkSiteNodeList(c *gin.Context) {
- page := app.HandlePageNums(c)
- where := map[string]string{
- "where": "`zy_work_site_node`.`id`>0 AND `zy_work_site_node`.`deleted_at`=0",
- "_order_by": "`zy_work_site_node`.`id` desc",
- "_group_by": "`zy_work_site_node`.`id`",
- }
- if page.PageSize != 0 {
- where["_page_size"] = utils.ToStr(page.PageSize)
- where["_page_num"] = utils.ToStr(page.PageNum)
- }
- param := make(map[string]interface{})
- site_id := utils.ToInt(c.Query("site_id"))
- if site_id != 0 {
- where["where"] = where["where"] + " AND `zy_work_site_node`.`site_id`={{site_id}}"
- param["site_id"] = site_id
- }
- state := utils.ToInt(c.Query("state"))
- if state != 0 {
- switch state {
- case 6:
- 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"
- case 7:
- 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"
- case 8:
- where["where"] = where["where"] + " AND `zy_work_site_node`.`state`!=4 AND `zy_work_site_node`.`state`<2 AND `zy_work_site`.`state`=3"
- default:
- where["where"] = where["where"] + " AND `zy_work_site_node`.`state`={{state}}"
- if state < 3 {
- where["where"] = where["where"] + " AND `zy_work_site`.`state`!=3"
- }
- param["state"] = state - 1
- }
- }
- order := utils.ToInt(c.Query("order"))
- if order != 0 {
- switch order {
- case 1:
- where["_order_by"] = "`zy_work_site_node`.`starttime` asc"
- case 2:
- where["_order_by"] = "`zy_work_site_node`.`starttime` desc"
- case 3:
- where["_order_by"] = "`zy_work_site_node`.`endtime` asc"
- case 4:
- where["_order_by"] = "`zy_work_site_node`.`endtime` desc"
- case 5:
- where["_order_by"] = "COUNT(DISTINCT `zy_work_site_problem`.`id`) desc"
- case 6:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=0, `zy_work_site_problem`.`id`, NULL)) desc"
- case 7:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=1, `zy_work_site_problem`.`id`, NULL)) desc"
- case 8:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_problem`.`state`=2, `zy_work_site_problem`.`id`, NULL)) desc"
- case 9:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_process_require`.`quality`=1, `zy_work_process_require`.`id`, NULL)) desc"
- case 10:
- 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"
- case 11:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=0, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
- case 12:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=1, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
- case 13:
- where["_order_by"] = "COUNT(DISTINCT IF(`zy_work_site_quality_accept_item`.`state`=2, `zy_work_site_quality_accept_item`.`id`, NULL)) desc"
- case 14:
- where["_order_by"] = "COUNT(DISTINCT `zy_work_process_require`.`id`) desc"
- case 15:
- 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"
- case 16:
- 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"
- case 17:
- 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"
- case 18:
- 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"
- case 19:
- 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"
- }
- }
- /*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`"*/
- 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`"
- if utils.ToInt(c.Query("my")) != 0 {
- 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`))"
- param["adminID"] = c.GetInt("adminID")
- }
- 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`"
- total, err := db.GetQueryCount(query, param, nil)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- type WorkSiteNodeList struct {
- ID int `json:"id"`
- SiteId int `json:"site_id"`
- NodeId int `json:"node_id"`
- Name string `json:"name"`
- WorkerId int `json:"worker_id"`
- StartTime int `json:"starttime"`
- EndTime int `json:"endtime"`
- ProcessIds string `json:"process_ids"`
- Days int `json:"days"`
- Mark string `json:"mark"`
- State int `json:"state"`
- CreatedAt int `json:"created_at"`
- UpdatedAt int `json:"updated_at"`
- Color string `json:"color"`
- Logo string `json:"logo"`
- WorkTypeId int `json:"work_type_id"`
- ReturnVisitID int `json:"return_visit_id"`
- ReturnVisitContent string `json:"return_visit_content"`
- ReturnVisitAdminId int `json:"return_visit_admin_id"`
- ReturnVisitTime int `json:"return_visit_time"`
- QualityAcceptID int `json:"quality_accept_id"`
- QualityTime int `json:"quality_time"`
- QualityId int `json:"quality_id"`
- QualityAt int `json:"quality_at"`
- WorkerName string `json:"worker_name"`
- WorkerPhone string `json:"worker_phone"`
- Username string `json:"username"`
- Phone string `json:"phone"`
- Village string `json:"village"`
- Address string `json:"address"`
- RoomNo string `json:"room_no"`
- SiteStarttime string `json:"site_starttime"`
- SiteEndtime string `json:"site_endtime"`
- SiteState string `json:"site_state"`
- ReturnVisitName string `json:"return_visit_name"`
- ReturnVisitUsername string `json:"return_visit_username"`
- ReturnVisitPhone string `json:"return_visit_phone"`
- ReturnVisitHeadimgurl string `json:"return_visit_headimgurl"`
- ProblemCount int `json:"problem_count"`
- ProblemState0Count int `json:"problem_state0_count"`
- ProblemState1Count int `json:"problem_state1_count"`
- ProblemState2Count int `json:"problem_state2_count"`
- QualityAcceptCount int `json:"quality_accept_count"`
- UNStartQualityAcceptCount int `json:"unstartquality_accept_count"`
- UNQualityAcceptCount int `json:"unquality_accept_count"`
- QualityAcceptState0Count int `json:"quality_accept_state0_count"`
- QualityAcceptState1Count int `json:"quality_accept_state1_count"`
- QualityAcceptState2Count int `json:"quality_accept_state2_count"`
- ProcessRequireCount int `json:"process_require_count"`
- UNProcessRequireCount int `json:"unprocess_require_count"`
- INProcessRequireCount int `json:"inprocess_require_count"`
- INGProcessRequireCount int `json:"ingprocess_require_count"`
- OvertimeProcessRequireCount int `json:"overtime_process_require_count"`
- YOvertimeProcessRequireCount int `json:"yovertime_process_require_count"`
- }
- workSiteNodeList := make([]WorkSiteNodeList, 0)
- if err = db.GetMultiRaw(field, where, param, &workSiteNodeList); err != nil {
- app.Error(c, err.Error())
- return
- }
- data := gin.H{
- "list": workSiteNodeList,
- "total": total,
- "limit": page.PageSize,
- }
- app.Success(c, data)
- }
- func WorkSiteNodeInfo(c *gin.Context) {
- id := utils.StrTo(c.Param("id")).MustInt()
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- type WorkSiteNodeInfo struct {
- ID int `json:"id"`
- SiteId int `json:"site_id"`
- NodeId int `json:"node_id"`
- Name string `json:"name"`
- WorkerId int `json:"worker_id"`
- StartTime int `json:"starttime"`
- EndTime int `json:"endtime"`
- ProcessIds string `json:"process_ids"`
- Days int `json:"days"`
- Mark string `json:"mark"`
- State int `json:"state"`
- CreatedAt int `json:"created_at"`
- UpdatedAt int `json:"updated_at"`
- Color string `json:"color"`
- Logo string `json:"logo"`
- WorkTypeId int `json:"work_type_id"`
- ReturnVisitID int `json:"return_visit_id"`
- QualityAcceptID int `json:"quality_accept_id"`
- QualityTime int `json:"quality_time"`
- QualityId int `json:"quality_id"`
- QualityAt int `json:"quality_at"`
- ReturnVisitContent string `json:"return_visit_content"`
- ReturnVisitAdminId int `json:"return_visit_admin_id"`
- ReturnVisitTime int `json:"return_visit_time"`
- ReturnVisitFrom map[int]form.ReturnVisitItem `json:"return_visit_from"`
- WorkerName string `json:"worker_name"`
- WorkTypeName string `json:"work_type_name"`
- WorkerPhone string `json:"worker_phone"`
- ReturnVisitName string `json:"return_visit_name"`
- ReturnVisitPhone string `json:"return_visit_phone"`
- ReturnVisitHeadimgurl string `json:"return_visit_headimgurl"`
- WorkProcess []models.WorkProcess `json:"work_process"`
- ReturnVisit *models.WorkReturnVisit `json:"return_visit"`
- }
- var workSiteNodeInfo WorkSiteNodeInfo
- err := worksitenode.GetWorkSiteNodeByID(id, &workSiteNodeInfo)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- workSiteNodeInfo.WorkProcess = make([]models.WorkProcess, 0)
- if _, err = workprocess.GetWorkProcesssRaw(map[string]string{
- "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}}",
- }, map[string]interface{}{
- "node_id": workSiteNodeInfo.NodeId,
- "process_ids": workSiteNodeInfo.ProcessIds,
- }, &workSiteNodeInfo.WorkProcess); err != nil {
- app.Error(c, err.Error())
- return
- }
- if workSiteNodeInfo.ReturnVisitID != 0 {
- workSiteNodeInfo.ReturnVisit = models.GetWorkReturnVisitModel(int64(workSiteNodeInfo.ReturnVisitID), false)
- }
- utils.JsonDecode(workSiteNodeInfo.ReturnVisitContent).To(&workSiteNodeInfo.ReturnVisitFrom)
- app.Success(c, workSiteNodeInfo)
- }
- func WorkSiteNodeAdd(c *gin.Context) {
- var addForm form.WorkSiteNodeAdd
- if app.Bind(c, &addForm) != nil {
- return
- }
- id, err := worksitenode.Add(addForm, c.GetInt("adminID"))
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- app.Success(c, gin.H{"id": id})
- }
- func WorkSiteNodeEdit(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- var editForm form.WorkSiteNodeEdit
- if app.Bind(c, &editForm) != nil {
- return
- }
- err := worksitenode.EditByID(editForm, id, c.GetInt("adminID"))
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeDel(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- err := worksitenode.DeleteByID(id, c.GetInt("adminID"))
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeDispatchWorker(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- var editForm form.WorkSiteNodeWorkerID
- if app.Bind(c, &editForm) != nil {
- return
- }
- err := worksitenode.DispatchByID(editForm, id, c.GetInt("adminID"))
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeStart(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- err := worksitenode.StartByID(id, c.GetInt("adminID"))
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeReturnVisit(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- var returnForm form.ReturnVisitFrom
- if app.Bind(c, &returnForm) != nil {
- return
- }
- err := worksitenode.ReturnVisitByID(returnForm, id, c.GetInt("adminID"))
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeStatist(c *gin.Context) {
- param := make(map[string]interface{})
- 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 := " AND `zy_work_site_node`.`deleted_at` = 0"
- if utils.ToInt(c.Query("my")) != 0 {
- 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`))"
- param["adminID"] = c.GetInt("adminID")
- }
- waitvalid, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 2"+where, param, nil)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- unstart, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 0 AND `zy_work_site_node`.`starttime` + 86399 < unix_timestamp()"+where, param, nil)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- unend, err := db.GetQueryCount(query+" WHERE `zy_work_site_node`.`state` = 0 AND `zy_work_site_node`.`endtime` + 86399 < unix_timestamp()"+where, param, nil)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- 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)
- if err != nil {
- app.Error(c, err.Error())
- return
- }
- data := gin.H{
- "waitvalid": waitvalid,
- "uncheck": uncheck,
- "unstart": unstart,
- "unend": unend,
- "unpoint": unpoint,
- "unproblem": unproblem,
- "problem0": problem0,
- "problem2": problem2,
- "problem4": problem4,
- "visitproblem": visitproblem,
- "unvisit": unvisit,
- "visit": visit,
- "unaccept": unaccept,
- "unqual_accept": unqual_accept,
- "reaccept": reaccept,
- "unend_accept": unend_accept,
- }
- app.Success(c, data)
- }
- func WorkSiteNodeQualityTime(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- var editForm form.WorkSiteNodeQualityTime
- if app.Bind(c, &editForm) != nil {
- return
- }
- err := worksitenode.EditQualityTimeByID(editForm, id)
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func WorkSiteNodeQualityCheck(c *gin.Context) {
- id := utils.ToInt(c.Param("id"))
- if id <= 0 {
- app.ErrorMsg(c, "id must be a number", nil)
- return
- }
- err := worksitenode.QualityCheck(id, c.GetInt("adminID"))
- if err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
|