package models import ( "errors" "fmt" "zhiyuan/pkg/db" "github.com/gin-gonic/gin" ) type WorkSiteNode struct { ID int `json:"id" type:"int"` SiteId int `json:"site_id" type:"int" search:"="` NodeId int `json:"node_id" type:"int" search:"="` Name string `json:"name" type:"string" search:"like"` WorkerId int `json:"worker_id" type:"int"` StartTime int `json:"starttime" type:"int"` EndTime int `json:"endtime" type:"int"` ProcessIds string `json:"process_ids" type:"string"` ReturnVisitID int `json:"return_visit_id" type:"int"` QualityAcceptID int `json:"quality_accept_id" type:"int"` RealStartTime int `json:"real_starttime" type:"int"` RealEndTime int `json:"real_endtime" type:"int"` ReturnVisitContent string `json:"return_visit_content" label:"回访内容" type:"string"` ReturnVisitAdminId int `json:"return_visit_admin_id"` ReturnVisitTime int `json:"return_visit_time"` Days int `json:"days"` Mark string `json:"mark" label:"备注" type:"string"` State int `json:"state" label:"状态" type:"int" search:"="` DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"` CreatedAt int64 `json:"created_at" prop:"add:false select:false"` UpdatedAt int64 `json:"updated_at" prop:"add:false"` db.BaseModel } func (WorkSiteNode) TableName() string { return "zy_work_site_node" } func (a WorkSiteNode) GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*WorkSiteNode, error) { if retVal == nil { var workSiteNode *WorkSiteNode err := db.GetOne(a.TableName(), where, fields, &workSiteNode) return workSiteNode, err } else { err := db.GetOne(a.TableName(), where, fields, retVal) return nil, err } } func (a WorkSiteNode) GetMulti(where map[string]interface{}, fields []string, retVal interface{}) ([]*WorkSiteNode, error) { if retVal == nil { var workSiteNode []*WorkSiteNode err := db.GetMulti(a.TableName(), where, fields, &workSiteNode) return workSiteNode, err } else { err := db.GetMulti(a.TableName(), where, fields, retVal) return nil, err } } func (a WorkSiteNode) GetOneRaw(where map[string]string, param map[string]interface{}, retVal interface{}) (*WorkSiteNode, error) { workSiteNode, err := a.GetMultiRaw(where, param, retVal) if err != nil { return nil, err } if len(workSiteNode) == 0 { return nil, errors.New("empty record2") } return workSiteNode[0], nil } func (a WorkSiteNode) GetMultiRaw(where map[string]string, param map[string]interface{}, retVal interface{}) ([]*WorkSiteNode, error) { field := "SELECT * FROM zy_work_site_node " if retVal == nil { var workSiteNode []*WorkSiteNode err := db.GetMultiRaw(field, where, param, &workSiteNode) return workSiteNode, err } else { err := db.GetMultiRaw(field, where, param, retVal) return nil, err } } type WorkSiteNodeModel struct { WorkSiteNode Username string `json:"username" search:"like" prop:"select:worksite.username"` Phone string `json:"phone" search:"like" prop:"select:worksite.phone"` Village string `json:"village" search:"like" prop:"select:worksite.village"` Address string `json:"address" search:"like" prop:"select:worksite.address"` RoomNo string `json:"room_no" search:"like" prop:"select:worksite.room_no"` Area string `json:"area" search:"like" prop:"select:worksite.area"` WorkerName string `json:"worker_name" label:"姓名" type:"string" prop:"select:worker.name"` WorkerPhone string `json:"worker_phone" label:"电话号码" type:"string" prop:"select:worker.phone"` } func (WorkSiteNodeModel) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { return true } func (WorkSiteNodeModel) Page() bool { return false } func (WorkSiteNodeModel) Count() bool { return true } func (model WorkSiteNodeModel) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return []db.JoinModel{ { Model: WorkSite{}, As: "worksite", On: []string{"`worksite`.`id` = " + model.TableName() + ".`site_id`"}, }, { Model: Worker{}, As: "worker", On: []string{"`worker`.`id` = " + model.TableName() + ".`worker_id`"}, }, } } type WorkSiteNodeQualityAcceptModel struct { WorkSiteNodeModel PkgName string `json:"pkgname" search:"like" prop:"select:workpkg.name"` PkgDays int64 `json:"pkgdays" type:"int" search:"=" prop:"select:workpkg.days"` DesignerName string `json:"designer_name" search:"like" prop:"select:designer.username"` DesignerPhone string `json:"designer_phone" prop:"select:designer.phone"` DesignerHeadImgUrl string `json:"designer_headimgurl" prop:"select:designer.headimgurl"` SalesmanName string `json:"salesman_name" search:"like" prop:"select:salesman.username"` SalesmanPhone string `json:"salesman_phone" prop:"select:salesman.phone"` SalesmanHeadImgUrl string `json:"salesman_headimgurl" prop:"select:salesman.headimgurl"` ManagerName string `json:"manager_name" search:"like" prop:"select:manager.username"` ManagerPhone string `json:"manager_phone" prop:"select:manager.phone"` ManagerHeadImgUrl string `json:"manager_headimgurl" prop:"select:manager.headimgurl"` ProjectLeaderName string `json:"project_leader_name" search:"like" prop:"select:project_leader.username"` ProjectLeaderPhone string `json:"project_leader_phone" prop:"select:project_leader.phone"` ProjectLeaderHeadImgUrl string `json:"project_leader_headimgurl" prop:"select:project_leader.headimgurl"` StartTime int64 `json:"starttime" prop:"select:worksite.starttime"` EndTime int64 `json:"endtime" prop:"select:worksite.endtime"` RealStartTime int64 `json:"real_starttime" prop:"select:worksite.real_starttime"` RealEndTime int64 `json:"real_endtime" prop:"select:worksite.real_endtime"` QualityCreated int64 `json:"quality_created" prop:"select:worksitequalityacceptitem.created_at"` RequireId int64 `json:"require_id" prop:"select:workprocessrequire.id"` RequireName string `json:"require_name" search:"like" prop:"select:workprocessrequire.name"` RequireContent string `json:"require_content" search:"like" prop:"select:workprocessrequire.content"` Workload int64 `json:"workload" type:"int" search:"=" prop:"select:if((isnull(worksiteprocesspoint.id))or(worksiteprocesspoint.created_at>=zy_work_site_node.starttime+(zy_work_site_node.days+workprocessrequire.days)*86400),0,1)"` QualityState int64 `json:"quality_state" type:"int" search:"=" prop:"select:if(isnull(worksitequalityacceptitem.id),0,worksitequalityacceptitem.state+1)"` QualityMark string `json:"quality_mark" search:"like" prop:"select:worksitequalityacceptitem.mark"` } func (model WorkSiteNodeQualityAcceptModel) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool { s.Where = append(s.Where, "`workprocessrequire`.`quality`=1", fmt.Sprintf("not isnull(worksitequalityacceptitem.id) or unix_timestamp() >= `%s`.`starttime` + (`%s`.`days` + `workprocessrequire`.`days` - 1) * 86400", model.TableName(), model.TableName())) return true } func (WorkSiteNodeQualityAcceptModel) Page() bool { return false } func (WorkSiteNodeQualityAcceptModel) Count() bool { return true } //func (model WorkSiteNodeQualityAcceptModel) GroupBy() string { // return model.TableName() + ".`id`, `workprocessrequire`.`id`" //} func (model WorkSiteNodeQualityAcceptModel) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel { return append(model.WorkSiteNodeModel.LeftJoin(data, s), db.JoinModel{ Model: WorkPkg{}, As: "workpkg", On: []string{ "`workpkg`.`id` = `worksite`.`pkg_id`", }, }, db.JoinModel{ Model: Admin{}, As: "designer", On: []string{"`designer`.`id` = `worksite`.`designer_id`"}, }, db.JoinModel{ Model: Admin{}, As: "manager", On: []string{"`manager`.`id` = `worksite`.`manager_id`"}, }, db.JoinModel{ Model: Admin{}, As: "project_leader", On: []string{"`project_leader`.`id` = `worksite`.`project_leader_id`"}, }, db.JoinModel{ Model: Admin{}, As: "salesman", On: []string{"`salesman`.`id` = `worksite`.`salesman_id`"}, }, db.JoinModel{ Model: WorkProcess{}, As: "workprocess", On: []string{ "`workprocess`.`node_id` = " + model.TableName() + ".`node_id`", "FIND_IN_SET(`workprocess`.`id`, " + model.TableName() + ".`process_ids`)", }, }, db.JoinModel{ Model: WorkProcessRequire{}, As: "workprocessrequire", On: []string{ "`workprocessrequire`.`process_id` = `workprocess`.`id`", "`workprocessrequire`.`state` = 1", }, }, db.JoinModel{ Model: WorkSiteProcessPoint{}, As: "worksiteprocesspoint", On: []string{ "`worksiteprocesspoint`.`site_node_id` = " + model.TableName() + ".`id`", "`worksiteprocesspoint`.`require_id` = `workprocessrequire`.`id`", }, }, db.JoinModel{ Model: WorkSiteQualityAcceptItem{}, As: "worksitequalityacceptitem", On: []string{ "`worksitequalityacceptitem`.`site_node_id` = " + model.TableName() + ".`id`", "`worksitequalityacceptitem`.`require_id` = `workprocessrequire`.`id`", }, }) }