package work import ( "zhiyuan/models" "zhiyuan/pkg/app" "zhiyuan/pkg/db" "zhiyuan/pkg/utils" "zhiyuan/services/form" "zhiyuan/services/work/workprocessrequire" "zhiyuan/services/work/worksitenode" "github.com/gin-gonic/gin" ) func WorkProcessRequireList(c *gin.Context) { page := app.HandlePageNums(c) where := map[string]string{ "where": "`zy_work_process_require`.`id`>0 AND `zy_work_process_require`.`deleted_at`=0", "_order_by": "`zy_work_process_require`.`order_at` desc", } if page.PageSize != 0 { where["_page_size"] = utils.ToStr(page.PageSize) where["_page_num"] = utils.ToStr(page.PageNum) } param := make(map[string]interface{}) name := c.Query("name") if name != "" { where["where"] = where["where"] + " AND `zy_work_process_require`.`name` LIKE {{name}}" param["name"] = "%" + name + "%" } process_id := utils.ToInt(c.Query("process_id")) if process_id != 0 { where["where"] = where["where"] + " AND `zy_work_process_require`.`process_id`={{process_id}}" param["process_id"] = process_id } total, err := workprocessrequire.CountRaw(where["where"], param) if err != nil { app.Error(c, err.Error()) return } workProcessRequireList := make([]models.WorkProcessRequire, 0) if _, err = workprocessrequire.GetWorkProcesssRaw(where, param, &workProcessRequireList); err != nil { app.Error(c, err.Error()) return } data := gin.H{ "list": workProcessRequireList, "total": total, "limit": page.PageSize, } app.Success(c, data) } func WorkProcessRequireAdd(c *gin.Context) { var addForm form.WorkProcessRequireAdd if app.Bind(c, &addForm) != nil { return } id, err := workprocessrequire.Add(addForm) if err != nil { app.Error(c, err.Error()) return } app.Success(c, gin.H{"id": id}) } func WorkProcessRequireEdit(c *gin.Context) { id := utils.ToInt(c.Param("id")) if id <= 0 { app.ErrorMsg(c, "workprocess id must be a number", nil) return } var addForm form.WorkProcessRequireAdd if app.Bind(c, &addForm) != nil { return } err := workprocessrequire.EditByID(addForm, id) if err != nil { app.ErrorMsg(c, err.Error(), nil) return } app.Success(c, nil) } func WorkProcessRequireDel(c *gin.Context) { id := utils.ToInt(c.Param("id")) if id <= 0 { app.ErrorMsg(c, "workprocessrequire id must be a number", nil) return } err := workprocessrequire.DeleteByID(id) if err != nil { app.Error(c, err.Error()) return } app.Success(c, nil) } func WorkSiteProcessRequireList(c *gin.Context) { page := app.HandlePageNums(c) where := map[string]string{ "where": "`zy_work_process_require`.`id`>0 AND `zy_work_process_require`.`deleted_at`=0 AND `zy_work_process_require`.`state`=1 ", "_order_by": "`zy_work_process_require`.`order_at` desc", } if page.PageSize != 0 { where["_page_size"] = utils.ToStr(page.PageSize) where["_page_num"] = utils.ToStr(page.PageNum) } param := make(map[string]interface{}) field := "SELECT `zy_work_process_require`.*, `zy_work_site_process_point`.`id` as `point_id`, `zy_work_site_process_point`.`pictures` as `picture_list`, `zy_work_site_process_point`.`mark` as `mark`, `zy_work_site_process_point`.`state` as `point_state`, `zy_work_site_quality_accept_item`.`id` as `site_item_id`, `zy_work_site_quality_accept_item`.`state` as `item_state`, `zy_work_site_quality_accept_item`.`pictures` as `item_pictures`,`zy_work_site_quality_accept_item`.`mark` as `item_mark`, `zy_work_site_quality_accept_item`.`updated_at` as `item_updated` from `zy_work_process_require` left join `zy_work_site_process_point` on `zy_work_site_process_point`.`require_id` = `zy_work_process_require`.`id` AND `zy_work_site_process_point`.`deleted_at`=0 AND `zy_work_site_process_point`.`id` in (select max(`zy_work_site_process_point`.`id`) from `zy_work_site_process_point` where `zy_work_site_process_point`.`deleted_at`=0 group by `zy_work_site_process_point`.`site_node_id`, `zy_work_site_process_point`.`require_id`) " fields := " left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = `zy_work_site_process_point`.`site_node_id` AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` " process_id := utils.ToInt(c.Query("process_id")) if process_id != 0 { where["where"] = where["where"] + " AND `zy_work_process_require`.`process_id`={{process_id}}" param["process_id"] = process_id } total, err := workprocessrequire.CountRaw(where["where"], param) if err != nil { app.Error(c, err.Error()) return } site_node_id := utils.ToInt(c.Query("site_node_id")) if site_node_id != 0 { sitenodeInfo, _ := worksitenode.GetInfoByID(site_node_id, nil, nil) if sitenodeInfo != nil { field = field + " AND `zy_work_site_process_point`.`site_node_id`={{site_node_id}} " param["site_node_id"] = site_node_id field = field + " left join `zy_work_process` on `zy_work_process`.`id` = `zy_work_process_require`.`process_id` " where["where"] = where["where"] + " AND `zy_work_process`.`node_id`={{node_id}}" fields = " left join `zy_work_site_quality_accept_item` on `zy_work_site_quality_accept_item`.`site_node_id` = {{site_node_id}} AND `zy_work_site_quality_accept_item`.`require_id` = `zy_work_process_require`.`id` " param["node_id"] = sitenodeInfo.NodeId } } type WorkSiteProcessRequireList struct { ID int `json:"id"` ProcessId int `json:"process_id"` Name string `json:"name"` Content string `json:"content"` Days int `json:"days"` State int `json:"state"` Quality int `json:"quality"` QualityPhoto int `json:"qualityphoto"` Photograph string `json:"photograph"` QualityDays string `json:"quality_days"` SiteItemId int `json:"site_item_id"` ItemState int `json:"item_state"` ItemPictures string `json:"item_pictures"` ItemMark string `json:"item_mark"` ItemUpdated int `json:"item_updated"` Type int `json:"type"` CreatedAt int `json:"created_at"` UpdatedAt int `json:"updated_at"` PointId int `json:"point_id"` PointState int `json:"point_state"` PictureList string `json:"picture_list"` Mark string `json:"mark"` } workProcessRequireList := make([]WorkSiteProcessRequireList, 0) where["_group_by"] = "`zy_work_process_require`.`id`" if err = db.GetMultiRaw(field+fields, where, param, &workProcessRequireList); err != nil { app.Error(c, err.Error()) return } data := gin.H{ "list": workProcessRequireList, "total": total, "limit": page.PageSize, } app.Success(c, data) }