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) }