1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213 |
- package final
- import (
- "errors"
- "fmt"
- "github.com/gogf/gf/v2/util/gconv"
- "strings"
- "time"
- "zhiyuan/models"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/logger"
- "zhiyuan/pkg/utils"
- "zhiyuan/pkg/weixin/mp"
- "zhiyuan/services/admin"
- admin2 "zhiyuan/services/final/admin"
- "zhiyuan/services/user"
- "github.com/gin-gonic/gin"
- "github.com/gogf/gf/v2/os/gtime"
- )
- type FinalSite struct {
- ID int64 `json:"id" prop:"add:false"`
- PkgId int64 `json:"pkg_id" label:"套餐" type:"int" prop:"add:false edit:false" search:"multiple"`
- TypeId int64 `json:"type_id" label:"开工类型" type:"int" prop:"add:false edit:false" search:"multiple"`
- Username string `json:"username" label:"业主姓名" type:"string" prop:"add edit" search:"like"`
- Phone string `json:"phone" label:"手机号码" type:"string" prop:"add edit" search:"like"`
- AreaId int64 `json:"area_id" label:"区域" type:"int" prop:"add edit" search:"multiple"`
- CustomerId int64 `json:"customer_id" label:"客户" type:"int" prop:"edit:false" search:"="`
- OrderId int64 `json:"order_id" label:"合同" type:"int" prop:"edit:false" search:"="`
- Village string `json:"village" label:"小区名称" type:"string" prop:"edit" search:"like"`
- Address string `json:"address" label:"房屋地址" type:"string" prop:"edit" search:"like"`
- RoomNo string `json:"room_no" label:"楼栋房号" type:"string" prop:"edit" search:"like"`
- Areacode string `json:"areacode" label:"区划代码" type:"string" prop:"edit" search:"rightlike"`
- Name string `json:"name" label:"名称" type:"string" prop:"add:false select:concat(zy_final_site.village,'\\t',zy_final_site.address,'\\t',zy_final_site.room_no)" search:"like"`
- Room1 int64 `json:"room_1" label:"户型" type:"int" prop:"add:false edit:false" search:"="`
- Room2 int64 `json:"room_2" label:"户型" type:"int" prop:"add:false edit:false" search:"="`
- Room3 int64 `json:"room_3" label:"户型" type:"int" prop:"add:false edit:false" search:"="`
- Room4 int64 `json:"room_4" label:"户型" type:"int" prop:"add:false edit:false" search:"="`
- Room5 int64 `json:"room_5" label:"户型" type:"int" prop:"add:false edit:false" search:"="`
- Names string `json:"names" label:"名称" type:"string" prop:"add:false select:concat(zy_final_site.village,zy_final_site.address,zy_final_site.room_no)" search:"like"`
- Area float64 `json:"area" label:"面积" type:"float" prop:"add:false edit:false"`
- ShopId int64 `json:"shop_id" label:"门店" type:"int" prop:"add:false edit:false" search:"multiple"`
- ManagerId int64 `json:"manager_id" label:"项目经理" type:"int" prop:"edit" search:"multiple"`
- ProjectLeaderId int64 `json:"project_leader_id" label:"工程队长" type:"int" prop:"edit" search:"multiple"`
- DesignerId int64 `json:"designer_id" label:"设计师" type:"int" prop:"edit" search:"multiple"`
- StartTime int64 `json:"starttime" label:"开工日期" type:"int" prop:"add edit" search:"="`
- EndTime int64 `json:"endtime" label:"完工日期" type:"int" prop:""`
- CreatedId int64 `json:"created_id" label:"创建人员" type:"int" prop:"add:false" search:"="`
- ChangeState int64 `json:"change_state" label:"状态" type:"int" prop:"add:false edit" default:"0" search:"="`
- ChangeRemark string `json:"change_remark" label:"变更备注" type:"string" prop:"add:false edit"`
- Remark string `json:"remark" label:"备注" type:"string" prop:"add:false edit:false"`
- Activity string `json:"activity" label:"活动" type:"string" prop:"add:false edit:false"`
- Attachment string `json:"attachment" label:"附件" type:"string" prop:"add:false edit:false"`
- DeptId int64 `json:"dept_id" label:"归属部门" type:"int" prop:"add:false edit:false" search:"multiple"`
- SalesmanId int64 `json:"salesman_id" label:"业务员" type:"int" prop:"add:false edit:false" search:"multiple"`
- State int64 `json:"state" label:"状态" type:"int" prop:"add:false edit" default:"2"`
- ContactTime int64 `json:"contacttime" label:"接触时间" type:"int" prop:"edit" search:"="`
- StoreTime int64 `json:"storetime" label:"到店时间" type:"int" prop:"edit" search:"="`
- SignTime int64 `json:"signtime" label:"签订时间" type:"int" prop:"edit" search:"="`
- DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
- CreatedAt int64 `json:"created_at" prop:"add:false"`
- UpdatedAt int64 `json:"updated_at" prop:"add:false"`
- db.BaseModel
- }
- func (FinalSite) TableName() string {
- return "zy_final_site"
- }
- func (model FinalSite) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`state` in %s and `%s`.`manager_id` != %s", model.TableName(), s.Param([]int64{1, 2}), model.TableName(), s.Param(0)))
- if !admin.IsSuperAdmin(c.GetInt("adminID")) {
- adminID := s.Param(c.GetInt("adminID"))
- where := fmt.Sprintf("`%s`.`manager_id` = %s OR `%s`.`project_leader_id` = %s OR `%s`.`created_id` = %s", model.TableName(), adminID, model.TableName(), adminID, model.TableName(), adminID)
- if admin.CheckAuth([]string{"work:worksite:view"}, c.GetInt("adminID")) {
- where = fmt.Sprintf("%s OR FIND_IN_SET(`%s`.`shop_id`, %s)", where, model.TableName(), "0")
- }
- s.Where = append(s.Where, fmt.Sprintf("(%s)", where))
- }
- if search, ok := data["search"]; ok {
- search = s.Param(fmt.Sprintf("%%%s%%", search))
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`username` LIKE %s OR `%s`.`phone` LIKE %s OR concat(`%s`.`village`,`%s`.`address`,`%s`.`room_no`) LIKE %s", model.TableName(), search, model.TableName(), search, model.TableName(), model.TableName(), model.TableName(), search))
- }
- if starttime1s, ok := data["starttime1"]; ok {
- if starttime1, ok := db.ToInt64(starttime1s); ok {
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`starttime` >= %s", model.TableName(), s.Param(starttime1)))
- }
- }
- if starttime2s, ok := data["starttime2"]; ok {
- if starttime2, ok := db.ToInt64(starttime2s); ok {
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`starttime` < %s", model.TableName(), s.Param(starttime2+60*60*24)))
- }
- }
- if endtime1s, ok := data["endtime1"]; ok {
- if endtime1, ok := db.ToInt64(endtime1s); ok {
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`endtime` >= %s", model.TableName(), s.Param(endtime1)))
- }
- }
- if endtime2s, ok := data["endtime2"]; ok {
- if endtime2, ok := db.ToInt64(endtime2s); ok {
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`endtime` < %s", model.TableName(), s.Param(endtime2+60*60*24)))
- }
- }
- return true
- }
- func (FinalSite) OnePrivilege(c *gin.Context, id int64) bool {
- return true
- }
- func (FinalSite) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
- var model FinalSite
- db.GetModel(map[string]interface{}{
- "village": data["village"],
- "room_no": data["room_no"],
- "deleted_at": 0,
- }, &model)
- if model.ID != 0 {
- return errors.New("工地已存在")
- }
- user, err := user.GetOne(map[string]interface{}{"phone": data["phone"]}, nil, nil)
- if err != nil {
- return errors.New("获取用户信息失败")
- }
- if user == nil {
- return errors.New("用户未关注公众号")
- }
- data["created_id"] = c.GetInt("adminID")
- return nil
- }
- func (FinalSite) AddAfter(c *gin.Context, id int64, post map[string]interface{}, data map[string]interface{}) {
- //todo 添加工地
- //加载节假日
- holidays := admin2.LoadHolidays()
- fmt.Println("000000 holidays 00000000000", holidays)
- // 查询套餐表
- //field := " select * from zy_mat_pick "
- //db.GetMultiRaw(field, map[string]interface{}{
- // "pkg_id": post["pkg_id"],
- //}, map[string]interface{}{}, &checkList)
- checkList, err := db.GetModelMap(db.Type(models.WorkQualityAcceptItem{}), map[string]interface{}{"state": 1}, nil)
- if err != nil {
- errors.New("施工节点未找到")
- return
- }
- siteStart := gtime.New(utils.ToInt(post["starttime"])).Format("Y-m-d")
- fmt.Println("开始时间", siteStart)
- var siteCompletionTime string
- sql := "INSERT INTO zy_mat_pick_work(site_id,pick_id,`name`,pictures,photograph,room_type,`cycle`,example_at) VALUES "
- for _, item := range checkList {
- //fmt.Println(item)
- domain := "https://image.nczyzs.com/"
- result := strings.ReplaceAll(utils.ToStr(item["pictures"]), domain, "")
- sql += "("
- sql += utils.ToStr(id) + ","
- sql += utils.ToStr(item["id"]) + "," //accept_item_id
- sql += "'" + utils.ToStr(item["content"]) + "'," //施工名称
- sql += "'" + result + "'," //图片
- sql += "'" + utils.ToStr(item["photograph"]) + "'," //施工标准
- sql += utils.ToStr(item["quality_accept_id"]) + ","
- sql += utils.ToStr(item["days"]) + ","
- endDate, _ := admin2.CalculateEndDate(holidays, siteStart, gconv.Int(item["days"]))
- sql += "'" + endDate + "'"
- //_ = fmt.Sprintf("节点:%s ,工期:%d, 结束节点:%s", item["pick_name"], item["cycle"], endDate)
- //gt1 := gtime.New(post["starttime"]).Add(gconv.Duration(gconv.Int(pkg["cycle"]) * 86400))
- sql += "),"
- siteCompletionTime = endDate
- }
- //移除最后一个逗号
- if len(sql) > 0 {
- sql = sql[:len(sql)-1]
- }
- _, err = db.InsertRaw(sql, nil)
- fmt.Println("添加工地", sql)
- if err == nil {
- MatPickWork{}.AddAfter(c, id, data, data)
- }
- //更新工地的完工时间
- err = db.UpdateModels(db.Type(FinalSite{}), map[string]interface{}{
- "id": id,
- "deleted_at": 0,
- }, map[string]interface{}{
- "endtime": gtime.New(siteCompletionTime).Unix(), //回写完工日期
- })
- fmt.Println("最终完工时间", siteCompletionTime)
- //if err != nil {
- // app.ErrorMsg(c, err.Error(), nil)
- // return
- //}
- //var model FinalSite
- //db.GetModel(map[string]interface{}{
- // "id": id,
- // "deleted_at": 0,
- //}, &model)
- //
- //address := model.Address
- //if model.Village != " " {
- // address += " " + model.Village
- //}
- //if model.RoomNo != " " {
- // address += " " + model.RoomNo
- //}
- //switch model.ShopId {
- //case 9, 13, 14, 18:
- // SendSiteMessage(1003, id, address, "工地已创建,请及时下单")
- //case 10, 12, 15:
- // SendSiteMessage(1004, id, address, "工地已创建,请及时下单")
- //case 6, 16:
- // SendSiteMessage(1257, id, address, "工地已创建,请及时下单")
- //case 7, 17:
- // SendSiteMessage(1173, id, address, "工地已创建,请及时下单")
- //}
- }
- func (FinalSite) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
- //开工的工地不允许修改套餐,检查工地表开工时间和当前时间做对比
- //site, err := db.GetOneModelMap(db.Type(FinalSite{}), map[string]interface{}{"id": post["id"]}, nil)
- //if err != nil {
- // return errors.New("工地未找到")
- //}
- //startTime, _ := db.ToInt64(site["starttime"])
- //curTime := time.Now().Unix()
- //
- //if data["pkg_id"] != site["pkg_id"] && curTime > startTime {
- // return errors.New("工地已开工,套餐无法变更")
- //}
- //删除原有工作,写入新工作
- //var MatPickWork MatPickWork
- //_, err = db.Delete(MatPickWork.TableName(), map[string]interface{}{"site_id": id})
- //
- //sql := "INSERT INTO zy_mat_pick_work(site_id,pkg_id,pick_id,room_type,manager_id) SELECT {{site_id}},pkg_id,id,room_type,{{manager_id}} FROM zy_mat_pick WHERE pkg_id={{pkg_id}}"
- //_, err = db.InsertRaw(sql, map[string]interface{}{"site_id": id, "pkg_id": post["pkg_id"], "manager_id": data["manager_id"]})
- //if err == nil {
- // MatPickWork.EditAfter(c, id, data, data)
- //}
- return nil
- }
- func (FinalSite) DelPrivilege(c *gin.Context, id int64) error {
- return nil
- }
- func (FinalSite) Page() bool {
- return false
- }
- func (FinalSite) Count() bool {
- return true
- }
- func (model FinalSite) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return []db.JoinModel{}
- }
- func (model FinalSite) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- type JoinAdmin struct {
- db.BaseModel
- }
- func (JoinAdmin) TableName() string {
- return "zy_admin"
- }
- type FinalSiteMobile struct {
- ManagerName string `json:"manager_name" type:"string" prop:"select:manager.username"`
- ManagerPhone string `json:"manager_phone" type:"string" prop:"select:manager.phone"`
- ManagerHeadImgUrl string `json:"manager_headimgurl" type:"string" prop:"select:manager.headimgurl"`
- DesignerName string `json:"designer_name" type:"string" prop:"select:designer.username"`
- DesignerPhone string `json:"designer_phone" type:"string" prop:"select:designer.phone"`
- DesignerHeadImgUrl string `json:"designer_headimgurl" type:"string" prop:"select:designer.headimgurl"`
- SalesmanName string `json:"salesman_name" type:"string" prop:"select:salesman.username"`
- SalesmanPhone string `json:"salesman_phone" type:"string" prop:"select:salesman.phone"`
- SalesmanHeadImgUrl string `json:"salesman_headimgurl" type:"string" prop:"select:salesman.headimgurl"`
- TableCount int64 `json:"table_count" type:"int" prop:"select:count(distinct(if(pickwork.deleted_at=0,pickwork.id,NULL)))"`
- Uncount int64 `json:"uncount" type:"int" prop:"select:count(distinct(IF((pickwork.deleted_at=0)AND(pickwork.item_status=0),pickwork.id,NULL)))"`
- HandleCount int64 `json:"handle_count" type:"int" prop:"select:count(distinct(IF((pickwork.deleted_at=0)AND(pickwork.item_status=2),pickwork.id,NULL)))"`
- FinishCount int64 `json:"finish_count" type:"int" prop:"select:count(distinct(IF((pickwork.deleted_at=0)AND(pickwork.item_status=1),pickwork.id,NULL)))"`
- //HandleCount int64 `json:"handle_count" type:"int" prop:"select:count(distinct(IF((pickwork.state>0)AND(finalsitetable.state<5),finalsitetable.id,NULL)))"`
- //FinishCount int64 `json:"finish_count" type:"int" prop:"select:count(distinct(IF(finalsitetable.state=5,finalsitetable.id,NULL)))"`
- //Count1 int64 `json:"count1" type:"int" prop:"select:count(distinct(IF(finalsitetable.state=1,finalsitetable.id,NULL)))"`
- //Count2 int64 `json:"count2" type:"int" prop:"select:count(distinct(IF(finalsitetable.state=2,finalsitetable.id,NULL)))"`
- //Count3 int64 `json:"count3" type:"int" prop:"select:count(distinct(IF(finalsitetable.state=3,finalsitetable.id,NULL)))"`
- //Count4 int64 `json:"count4" type:"int" prop:"select:count(distinct(IF(finalsitetable.state=4,finalsitetable.id,NULL)))"`
- SettleID int64 `json:"settle_id" type:"int" prop:"select:finalsettle.id"`
- SettleTotal float64 `json:"settle_total" type:"float" prop:"select:finalsettle.total"`
- SettleState int64 `json:"settle_state" type:"int" prop:"select:finalsettle.state"`
- SettleCreatedAt int64 `json:"settle_created_at" type:"int" prop:"select:finalsettle.created_at"`
- ShopName string `json:"shop_name" type:"string" prop:"select:shop.shop_name"`
- CollectInfo string `json:"collect_info" type:"string" prop:"select:shop.collect_info"`
- FinalSite
- }
- func (model FinalSiteMobile) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- if state, ok := data["state"]; ok {
- if n, ok := db.ToInt64(state); ok {
- switch n {
- case 1:
- s.Having = append(s.Having, "count(IF((pickwork.item_status=0)OR(pickwork.item_status=2)OR(pickwork.item_status=3),pickwork.id,NULL))")
- case 2:
- s.Having = append(s.Having, "count(IF((pickwork.item_status=0)OR(pickwork.item_status=2),pickwork.id,NULL)) = 0 ")
- case 3:
- //s.Having = append(s.Having, "count(IF(pickwork.item_status==1,pickwork.id,NULL)) = 0")
- case 4:
- //s.Having = append(s.Having, "count(IF(finalsitetable.state=1,finalsitetable.id,NULL)) != 0")
- case 5:
- //s.Having = append(s.Having, "count(IF(finalsitetable.state=2,finalsitetable.id,NULL)) != 0")
- case 6:
- //s.Having = append(s.Having, "count(IF(finalsitetable.state=3,finalsitetable.id,NULL)) != 0")
- case 7:
- //s.Having = append(s.Having, "count(IF(finalsitetable.state=4,finalsitetable.id,NULL)) != 0")
- }
- }
- }
- if admin.CheckAuth([]string{"work:worksite:view"}, c.GetInt("adminID")) {
- s.Where = append(s.Where, fmt.Sprintf("(`manager`.`audit_id` = %s OR `manager`.`audit_id` = %s)", s.Param(c.GetInt("adminID")), s.Param(0)))
- fmt.Println(":", c.GetInt("adminID"))
- fmt.Println("我有权限")
- }
- return model.FinalSite.ListPrivilege(c, data, s)
- }
- func (model FinalSiteMobile) ListAfter(c *gin.Context, data map[string]interface{}, list []map[string]interface{}) []map[string]interface{} {
- for n, item := range list {
- siteId := item["id"]
- params := make(map[string]interface{})
- params["site_id"] = siteId
- query := " SELECT w.room_type, a.name AS room_type_name,COUNT(w.id) AS total,SUM(CASE WHEN w.item_status = 1 THEN 1 ELSE 0 END) AS completed FROM zy_mat_pick_work w LEFT JOIN zy_work_quality_accept a ON w.room_type = a.id WHERE w.site_id = {{site_id}} AND w.deleted_at = 0 GROUP BY w.room_type, a.name ORDER BY w.room_type"
- params["adminID"] = c.GetInt("adminID")
- checkList, _ := db.QueryMap(query, params, nil)
- list[n]["static"] = checkList
- }
- return list
- }
- func (model FinalSiteMobile) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- func (model FinalSiteMobile) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return append(model.FinalSite.LeftJoin(data, s),
- db.JoinModel{
- Model: JoinAdmin{},
- As: "manager",
- On: []string{"`manager`.`id` = " + model.TableName() + ".`manager_id`"},
- },
- db.JoinModel{
- Model: JoinAdmin{},
- As: "designer",
- On: []string{"`designer`.`id` = " + model.TableName() + ".`designer_id`"},
- },
- db.JoinModel{
- Model: JoinAdmin{},
- As: "salesman",
- On: []string{"`salesman`.`id` = " + model.TableName() + ".`salesman_id`"},
- },
- db.JoinModel{
- Model: JoinShop{},
- As: "shop",
- On: []string{"`shop`.`id` = " + model.TableName() + ".`shop_id`"},
- },
- db.JoinModel{
- Model: FinalMaterial{},
- As: "finalmaterial",
- On: []string{"`finalmaterial`.`site_id` = " + model.TableName() + ".`id` AND `finalmaterial`.`deleted_at` = 0"},
- },
- db.JoinModel{
- Model: MatPickWork{},
- As: "pickwork",
- On: []string{"`pickwork`.`site_id` = " + model.TableName() + ".`id`"},
- },
- db.JoinModel{
- Model: FinalSettle{},
- As: "finalsettle",
- On: []string{"`finalsettle`.`site_id` = " + model.TableName() + ".`id` AND `finalsettle`.`deleted_at` = 0"},
- })
- }
- type FinalSiteSupplier struct {
- ManagerName string `json:"manager_name" type:"string" prop:"select:manager.username"`
- ManagerPhone string `json:"manager_phone" type:"string" prop:"select:manager.phone"`
- ManagerHeadImgUrl string `json:"manager_headimgurl" type:"string" prop:"select:manager.headimgurl"`
- MaterialCount int64 `json:"count" type:"int" prop:"select:count(distinct(finalmaterial.id))"`
- Count2 int64 `json:"count2" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=2,finalmaterial.id,NULL)))"`
- Count3 int64 `json:"count3" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=3,finalmaterial.id,NULL)))"`
- Count4 int64 `json:"count4" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=4,finalmaterial.id,NULL)))"`
- Count5 int64 `json:"count5" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=5,finalmaterial.id,NULL)))"`
- Count6 int64 `json:"count6" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=6,finalmaterial.id,NULL)))"`
- Count7 int64 `json:"count7" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=7,finalmaterial.id,NULL)))"`
- Count8 int64 `json:"count8" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=8,finalmaterial.id,NULL)))"`
- Count9 int64 `json:"count9" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=9,finalmaterial.id,NULL)))"`
- Count10 int64 `json:"count10" type:"int" prop:"select:count(distinct(IF(finalmaterial.state=10,finalmaterial.id,NULL)))"`
- FinalSite
- }
- func (model FinalSiteSupplier) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- if state, ok := data["state"]; ok {
- if n, ok := db.ToInt64(state); ok {
- switch n {
- case 2:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=2,finalmaterial.id,NULL)) != 0")
- case 3:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=3,finalmaterial.id,NULL)) != 0")
- case 4:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=4,finalmaterial.id,NULL)) != 0")
- case 5:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=5,finalmaterial.id,NULL)) != 0")
- case 6:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=6,finalmaterial.id,NULL)) != 0")
- case 7:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=7,finalmaterial.id,NULL)) != 0")
- case 8:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=8,finalmaterial.id,NULL)) != 0")
- case 9:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=9,finalmaterial.id,NULL)) != 0")
- case 10:
- s.Having = append(s.Having, "count(IF(finalmaterial.state=10,finalmaterial.id,NULL)) != 0")
- }
- }
- }
- s.Where = append(s.Where, fmt.Sprintf("`finalmaterial`.`supplier_id` = %s", s.Param(c.GetInt("adminID"))))
- if search, ok := data["search"]; ok {
- search = s.Param(fmt.Sprintf("%%%s%%", search))
- s.Where = append(s.Where, fmt.Sprintf("`%s`.`username` LIKE %s OR `%s`.`phone` LIKE %s OR concat(`%s`.`village`,`%s`.`address`,`%s`.`room_no`) LIKE %s", model.TableName(), search, model.TableName(), search, model.TableName(), model.TableName(), model.TableName(), search))
- }
- return true
- }
- func (model FinalSiteSupplier) ListAfter(c *gin.Context, data map[string]interface{}, list []map[string]interface{}) []map[string]interface{} {
- ids := make([]int64, 0)
- idmap := make(map[int64]int)
- for i, v := range list {
- id, _ := db.ToInt64(v["id"])
- ids = append(ids, id)
- idmap[id] = i
- }
- datas, _ := db.GetModelMap(db.Type(FinalMaterialItemSupplier{}), map[string]interface{}{
- "finalmaterial.site_id in ": ids,
- "finalmaterial.supplier_id": c.GetInt("adminID"),
- fmt.Sprintf("`%s`.`deleted_at`", FinalMaterialItemSupplier{}.TableName()): 0,
- }, nil)
- for _, v := range datas {
- id, _ := db.ToInt64(v["site_id"])
- mid, _ := db.ToInt64(v["material_id"])
- if n, ok := idmap[id]; ok {
- materials := make([]map[string]interface{}, 0)
- if ms, ok := list[n]["materials"].([]map[string]interface{}); ok {
- materials = ms
- }
- findmaterial := false
- for i, m := range materials {
- materialid, _ := db.ToInt64(m["id"])
- if materialid == mid {
- findmaterial = true
- items := make([]map[string]interface{}, 0)
- if is, ok := m["items"].([]map[string]interface{}); ok {
- items = is
- }
- items = append(items, v)
- materials[i]["items"] = items
- break
- }
- }
- if !findmaterial {
- material := map[string]interface{}{
- "id": v["material_id"],
- "name": v["name"],
- "type": v["type"],
- "budget": v["budget"],
- "budget_type": v["budget_type"],
- "total": v["total"],
- "state": v["state"],
- "receipt_date": v["receipt_date"],
- "items": []map[string]interface{}{v},
- }
- materials = append(materials, material)
- }
- list[n]["materials"] = materials
- }
- }
- return list
- }
- func (model FinalSiteSupplier) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- func (model FinalSiteSupplier) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return []db.JoinModel{
- {
- Model: JoinAdmin{},
- As: "manager",
- On: []string{"`manager`.`id` = " + model.TableName() + ".`manager_id`"},
- },
- {
- Model: FinalMaterial{},
- As: "finalmaterial",
- On: []string{"`finalmaterial`.`site_id` = " + model.TableName() + ".`id` AND `finalmaterial`.`state` > 1 AND `finalmaterial`.`deleted_at` = 0"},
- },
- }
- }
- func SendSiteMessage(adminID int, siteId int64, address string, text string) error {
- logger.Sugar.Infof("SendSiteMessage, send: %v %v %v %v", adminID, siteId, address, text)
- client, err := mp.NewClient(1)
- if err != nil {
- return err
- }
- adminInfo, err := admin.GetInfoByID(adminID, nil, nil)
- if err != nil {
- return err
- }
- if adminInfo == nil || adminInfo.OpenId == "" {
- return nil
- }
- url := ""
- if siteId != 0 {
- url = "https://jz.nczyzs.com/final/#/detail/" + db.ToString(siteId)
- }
- ret, err := client.SendTemplateMessage(adminInfo.OpenId, "0tdzToVtXoCUrafmN-ub9J69HKKCfUWEsCan-WkuPKk", url, map[string]interface{}{
- "character_string1": map[string]interface{}{
- "value": db.ToString(siteId),
- },
- "thing2": map[string]interface{}{
- "value": utils.SubStr(address, 0, 20),
- },
- "thing5": map[string]interface{}{
- "value": utils.SubStr(text, 0, 20),
- },
- })
- logger.Sugar.Infof("SendSiteMessage, ret: %v %v", ret, err)
- return err
- }
- func SendSiteWorkMessage(adminID int, siteId int64, text string) error {
- return nil
- logger.Sugar.Infof("SendSiteWorkMessage, send: %v %v %v %v", adminID, siteId, text)
- client, err := mp.NewClient(1)
- if err != nil {
- return err
- }
- adminInfo, err := admin.GetInfoByID(adminID, nil, nil)
- if err != nil {
- return err
- }
- if adminInfo == nil || adminInfo.OpenId == "" {
- return nil
- }
- url := ""
- if siteId != 0 {
- url = "https://jz.nczyzs.com/final/#/detail/" + db.ToString(siteId)
- }
- ret, err := client.SendTemplateMessage(adminInfo.OpenId, "0tdzToVtXoCUrafmN-ub9J69HKKCfUWEsCan-WkuPKk", url, map[string]interface{}{
- "character_string1": map[string]interface{}{
- "value": db.ToString(siteId),
- },
- "thing5": map[string]interface{}{
- "value": utils.SubStr(text, 0, 20),
- },
- })
- logger.Sugar.Infof("SendSiteWorkMessage, ret: %v %v", ret, err)
- return err
- }
- type JoinWriteControl struct {
- db.BaseModel
- }
- func (JoinWriteControl) TableName() string {
- return "(select `id`,`site_id` from `zy_final_site_control` where `deleted_at` = 0 and `created_at` != `updated_at` group by `site_id`)"
- }
- type JoinPriceControl struct {
- db.BaseModel
- }
- func (JoinPriceControl) TableName() string {
- return "(select `id`,`site_id` from `zy_final_manager_price` where `deleted_at` = 0 group by `site_id`)"
- }
- type JoinApplyControl struct {
- db.BaseModel
- }
- func (JoinApplyControl) TableName() string {
- return "(select `id`, `site_id`, group_concat(concat(`name`, if(`settle_state` = 1,\"结算\", \"\"))) as `name`, count(`id`) as `manager_count` from (select `zy_final_site_control`.`id`, `zy_final_site_control`.`site_id`, `type`.`name` as `name`, IF((`zy_final_site_control`.`budget`!=0)and(count(distinct(IF(`table`.`state`<2,`table`.`id`,NULL)))=0)and(count(distinct(IF(`table`.`type`=1,`table`.`id`,NULL)))<`type`.`living_count`)and(count(distinct(IF(`table`.`type`=0,`table`.`id`,NULL)))=0)and((`type`.`living_settlement`=0)or(not(isnull(`livingpayment`.`id`)))),1,0) as `living_state`, IF((`zy_final_site_control`.`budget`!=0)and(count(distinct(IF(`table`.`state`<2,`table`.`id`,NULL)))=0)and((`type`.`settle_change`=0)or(`site`.`change_state`=1))and((`type`.`settlement`=0)or(not(isnull(`settlepayment`.`id`))))and(count(distinct(IF(`table`.`type`=0,`table`.`id`,NULL)))=0),1,0) as `settle_state`, count(`zy_final_site_control`.`id`) as `manager_count` from `zy_final_site_control` left join `zy_final_type` as `type` on `type`.`id` = `zy_final_site_control`.`type_id` left join `zy_final_site` as `site` on `site`.`id` = `zy_final_site_control`.`site_id` left join `zy_final_site_table` as `table` on `table`.`type_id` = `zy_final_site_control`.`type_id` and `table`.`site_id` = `zy_final_site_control`.`site_id` and `table`.`state` != -1 and `table`.`deleted_at` = 0 left join `zy_final_site_payment` as `livingpayment` on `livingpayment`.`type_id` = `type`.`living_settlement` and `livingpayment`.`site_id` = `zy_final_site_control`.`site_id` and `livingpayment`.`state` = 1 and `livingpayment`.`deleted_at` = 0 left join `zy_final_site_payment` as `settlepayment` on `settlepayment`.`type_id` = `type`.`settlement` and `settlepayment`.`site_id` = `zy_final_site_control`.`site_id` and `settlepayment`.`state` = 1 and `settlepayment`.`deleted_at` = 0 and `zy_final_site_control`.`deleted_at` = 0 group by `zy_final_site_control`.`id`) as `control` where `living_state` = 1 or `settle_state` = 1 group by `site_id`)"
- }
- type JoinStatistTable struct {
- db.BaseModel
- }
- func (JoinStatistTable) TableName() string {
- return "(select `zy_final_site_table`.`id`,`zy_final_site_table`.`site_id`, group_concat(concat(`type`.`name`, if(`zy_final_site_table`.`type` = 1,\"生活费\", \"结算\"))) as `name`, sum(if(`zy_final_site_table`.`state` = 0, 1, 0)) as `manager_count`, sum(if(`zy_final_site_table`.`state` = 1, 1, 0)) as `leader_count`, sum(if(`zy_final_site_table`.`state` = 2 or `zy_final_site_table`.`state` = 4, 1, 0)) as `finance_count`, sum(if(`zy_final_site_table`.`state` = 3, 1, 0)) as `shopowner_count`, sum(if(`zy_final_site_table`.`state` = 2, 1, 0)) as `incomplete_collect_count` from `zy_final_site_table` left join `zy_final_type` as `type` on `type`.`id` = `zy_final_site_table`.`type_id` where `zy_final_site_table`.`state` != 5 and `zy_final_site_table`.`state` != -1 and `zy_final_site_table`.`deleted_at` = 0 group by `zy_final_site_table`.`site_id`)"
- }
- type JoinStatistMaterial struct {
- db.BaseModel
- }
- func (JoinStatistMaterial) TableName() string {
- return "(select `zy_final_material`.`id`,`zy_final_material`.`site_id`, group_concat(`finalmatauxiliary`.`name`) as `name`, count(`zy_final_material`.`id`) as `manager_count` from `zy_final_material` left join `zy_final_mat_auxiliary` as `finalmatauxiliary` on `finalmatauxiliary`.`id` = `zy_final_material`.`type_id` where `zy_final_material`.`budget` != 0 and `zy_final_material`.`state` = 0 and `zy_final_material`.`deleted_at` = 0 group by `zy_final_material`.`site_id`)"
- }
- type JoinStatistOrder struct {
- db.BaseModel
- }
- func (JoinStatistOrder) TableName() string {
- return "(select `zy_final_material_order`.`id`,`zy_final_material_order`.`site_id`, group_concat(concat(`supplier`.`name`, \" \", `zy_final_material_order`.`order_no`)) as `name`, sum(if((`zy_final_material_order`.`state` in (9,0,2,5,11) and `zy_final_material_order`.`process_id` = 0) OR (`process`.`type` = 6 AND `process`.`check_at3` = 0), 1, 0)) as `supplier_count`, sum(if((`zy_final_material_order`.`state` in (8,1,3,4,6) and `zy_final_material_order`.`process_id` = 0) OR (`process`.`type` = 6 AND `process`.`check_at2` = 0) OR (`process`.`type` = 14 AND `process`.`check_at` = 0) OR (`process`.`type` = 7 AND `process`.`check_at2` = 0 AND `zy_final_material_order`.`created_id` = `finalsite`.`manager_id`), 1, 0)) as `manager_count`, sum(if(`zy_final_material_order`.`state` = 7 and `zy_final_material_order`.`process_id` = 0, 1, 0)) as `leader_count`, sum(if(`process`.`type` = 7 AND `process`.`check_at2` = 0 AND `zy_final_material_order`.`created_id` != `finalsite`.`manager_id`, 1, 0)) as `place_count`, sum(if((`process`.`type` = 7 AND `process`.`check_at` = 0) OR (`process`.`type` = 12 AND `process`.`check_at` = 0), 1, 0)) as `audit_count` from `zy_final_material_order` left join `zy_final_supplier` as `supplier` on `supplier`.`id` = `zy_final_material_order`.`supplier_id` left join `zy_final_material_order_process` as `process` on `process`.`id` = `zy_final_material_order`.`process_id` left join `zy_final_site` as `finalsite` on `finalsite`.`id` = `zy_final_material_order`.`site_id` where `zy_final_material_order`.`state` != 7 and `zy_final_material_order`.`state` != 11 and `zy_final_material_order`.`state` != 12 and `zy_final_material_order`.`state` != -1 and `zy_final_material_order`.`deleted_at` = 0 group by `zy_final_material_order`.`site_id`)"
- }
- type JoinStatistOrderAll struct {
- db.BaseModel
- }
- func (JoinStatistOrderAll) TableName() string {
- return "(select `zy_final_material_order`.`id`,`zy_final_material_order`.`site_id`, sum(if(`settle`.`state` = 2, 1, 0)) as `incomplete_collect_count`, sum(if(`zy_final_material_order`.`state` = 0, 1, 0)) as `state0_count`, sum(if(`zy_final_material_order`.`state` = 1, 1, 0)) as `state1_count`, sum(if(`zy_final_material_order`.`state` = 2, 1, 0)) as `state2_count`, sum(if(`zy_final_material_order`.`state` = 3, 1, 0)) as `state3_count`, sum(if(`zy_final_material_order`.`state` = 4, 1, 0)) as `state4_count`, sum(if(`zy_final_material_order`.`state` = 5, 1, 0)) as `state5_count`, sum(if(`zy_final_material_order`.`state` = 6, 1, 0)) as `state6_count`, sum(if(`zy_final_material_order`.`state` = 7, 1, 0)) as `state7_count`, sum(if(`zy_final_material_order`.`state` = 8, 1, 0)) as `state8_count`, sum(if(`zy_final_material_order`.`state` = 9, 1, 0)) as `state9_count`, sum(if(`zy_final_material_order`.`state` = 10, 1, 0)) as `state10_count`, sum(if(`zy_final_material_order`.`state` = 11, 1, 0)) as `state11_count`, sum(if(`zy_final_material_order`.`state` = 12, 1, 0)) as `state12_count` from `zy_final_material_order` left join `zy_final_material_settle` as `settle` on `settle`.`id` = `zy_final_material_order`.`settle_id` and `settle`.`deleted_at` = 0 where `zy_final_material_order`.`deleted_at` = 0 group by `zy_final_material_order`.`site_id`)"
- }
- type JoinStatistPayment struct {
- db.BaseModel
- }
- func (JoinStatistPayment) TableName() string {
- return "(select `zy_final_site_payment`.`id`,`zy_final_site_payment`.`site_id`, group_concat(`type`.`name`) as `name`, count(`zy_final_site_payment`.`id`) as `finance_count` from `zy_final_site_payment` left join `zy_final_payment_type` as `type` on `type`.`id` = `zy_final_site_payment`.`type_id` where `zy_final_site_payment`.`state` = 0 and `zy_final_site_payment`.`deleted_at` = 0 group by `zy_final_site_payment`.`site_id`)"
- }
- type JoinStatistSettle struct {
- db.BaseModel
- }
- func (JoinStatistSettle) TableName() string {
- return "(select `id`,`site_id`, `state`, `manager_price`, `worker_price`, `auxiliary_price`, `subsidy_price`, `total`, sum(if(`zy_final_settle`.`state` in (0,2), 1, 0)) as `manager_count`, sum(if(`zy_final_settle`.`state` = 1, 1, 0)) as `customer_count`, sum(if(`zy_final_settle`.`state` in (3,5), 1, 0)) as `finance_count`, sum(if(`zy_final_settle`.`state` = 4, 1, 0)) as `shopowner_count` from `zy_final_settle` where `state` != 0 and `deleted_at` = 0 group by `site_id`)"
- }
- type FinalSiteStatist struct {
- WriteControl int64 `json:"write_control" type:"int" prop:"select:if(isnull(price.id),1,0)" search:"="` //由原來的wirte改成price
- ApplyControl int64 `json:"apply_control" type:"int" prop:"select:if(isnull(apply.id),0,1)" search:"="`
- ApplyControlName string `json:"apply_control_name" type:"string" prop:"select:apply.name" search:"="`
- IncompleteTable int64 `json:"incomplete_table" type:"int" prop:"select:if(isnull(table.id),0,1)" search:"="`
- IncompleteTableName string `json:"incomplete_table_name" type:"string" prop:"select:table.name" search:"="`
- NoOrder int64 `json:"no_order" type:"int" prop:"select:if(isnull(material.id),0,1)" search:"="`
- NoOrderName string `json:"no_order_name" type:"string" prop:"select:material.name" search:"="`
- IncompleteOrder int64 `json:"incomplete_order" type:"int" prop:"select:if(isnull(order.id),0,1)" search:"="`
- IncompleteOrderName string `json:"incomplete_order_name" type:"string" prop:"select:order.name" search:"="`
- IncompletePayment int64 `json:"incomplete_payment" type:"int" prop:"select:if(isnull(payment.id),0,1)" search:"="`
- IncompletePaymentName string `json:"incomplete_payment_name" type:"string" prop:"select:payment.name" search:"="`
- IncompleteChange int64 `json:"incomplete_change" type:"int" prop:"select:if(zy_final_site.change_state=1,0,1)" search:"="`
- Total float64 `json:"total" label:"金额" type:"float" prop:"select:settle.total"`
- ManagerPrice float64 `json:"manager_price" label:"承包额" type:"float" prop:"select:settle.manager_price"`
- WorkerPrice float64 `json:"worker_price" label:"工人" type:"float" prop:"select:settle.worker_price"`
- AuxiliaryPrice float64 `json:"auxiliary_price" label:"辅材" type:"float" prop:"select:settle.auxiliary_price"`
- SubsidyPrice float64 `json:"subsidy_price" label:"补贴" type:"float" prop:"select:settle.subsidy_price"`
- SettleState int64 `json:"settle_state" label:"状态" type:"int" prop:"select:ifnull(settle.state,0)" search:"="`
- AreaName string `json:"area_name" type:"string" prop:"select:area.name" search:"="`
- ShopName string `json:"shop_name" type:"string" prop:"select:shop.shop_name"`
- DeptName string `json:"dept_name" prop:"select:dept.name"`
- ManagerName string `json:"manager_name" type:"string" prop:"select:manager.username"`
- ManagerPhone string `json:"manager_phone" type:"string" prop:"select:manager.phone"`
- ProjectLeaderName string `json:"project_leader_name" type:"string" prop:"select:project_leader.username"`
- ProjectLeaderPhone string `json:"project_leader_phone" type:"string" prop:"select:project_leader.phone"`
- DesignerName string `json:"designer_name" type:"string" prop:"select:designer.username"`
- DesignerPhone string `json:"designer_phone" type:"string" prop:"select:designer.phone"`
- SalesmanName string `json:"salesman_name" type:"string" prop:"select:salesman.username"`
- SalesmanPhone string `json:"salesman_phone" type:"string" prop:"select:salesman.phone"`
- PkgName string `json:"pkg_name" type:"string" prop:"select:pkg.name"`
- ManagerCount int64 `json:"manager_count" type:"int" prop:"select:if(isnull(apply.manager_count),0,apply.manager_count)+if(isnull(table.manager_count),0,table.manager_count)+if(isnull(material.manager_count),0,material.manager_count)+if(isnull(order.manager_count),0,order.manager_count)+if(isnull(material.manager_count),0,material.manager_count)+if(isnull(settle.manager_count),0,settle.manager_count)" search:"="`
- LeaderCount int64 `json:"leader_count" type:"int" prop:"select:if(isnull(table.leader_count),0,table.leader_count)+if(isnull(order.leader_count),0,order.leader_count)" search:"="`
- FinanceCount int64 `json:"finance_count" type:"int" prop:"select:if(isnull(table.finance_count),0,table.finance_count)+if(isnull(payment.finance_count),0,payment.finance_count)+if(isnull(settle.finance_count),0,settle.finance_count)" search:"="`
- AuditCount int64 `json:"audit_count" type:"int" prop:"select:if(isnull(order.audit_count),0,order.audit_count)+if(isnull(write.id),1,0)+if(zy_final_site.change_state=1,0,1)" search:"="`
- ShopownerCount int64 `json:"shopowner_count" type:"int" prop:"select:if(isnull(table.shopowner_count),0,table.shopowner_count)+if(isnull(settle.shopowner_count),0,settle.shopowner_count)" search:"="`
- CustomerCount int64 `json:"customer_count" type:"int" prop:"select:if(isnull(settle.customer_count),0,settle.customer_count)" search:"="`
- PlaceCount int64 `json:"place_count" type:"int" prop:"select:if(isnull(order.place_count),0,order.place_count)" search:"="`
- SupplierCount int64 `json:"supplier_count" type:"int" prop:"select:if(isnull(order.supplier_count),0,order.supplier_count)" search:"="`
- TableIncompleteCollectCount int64 `json:"table_incomplete_collect_count" type:"int" prop:"select:if(isnull(table.incomplete_collect_count),0,table.incomplete_collect_count)" search:"="`
- OrderIncompleteCollectCount int64 `json:"order_incomplete_collect_count" type:"int" prop:"select:if(isnull(orderall.incomplete_collect_count),0,orderall.incomplete_collect_count)" search:"="`
- OrderState0Count int64 `json:"order_state0_count" type:"int" prop:"select:if(isnull(orderall.state0_count),0,orderall.state0_count)" search:"="`
- OrderState1Count int64 `json:"order_state1_count" type:"int" prop:"select:if(isnull(orderall.state1_count),0,orderall.state1_count)" search:"="`
- OrderState2Count int64 `json:"order_state2_count" type:"int" prop:"select:if(isnull(orderall.state2_count),0,orderall.state2_count)" search:"="`
- OrderState3Count int64 `json:"order_state3_count" type:"int" prop:"select:if(isnull(orderall.state3_count),0,orderall.state3_count)" search:"="`
- OrderState4Count int64 `json:"order_state4_count" type:"int" prop:"select:if(isnull(orderall.state4_count),0,orderall.state4_count)" search:"="`
- OrderState5Count int64 `json:"order_state5_count" type:"int" prop:"select:if(isnull(orderall.state5_count),0,orderall.state5_count)" search:"="`
- OrderState6Count int64 `json:"order_state6_count" type:"int" prop:"select:if(isnull(orderall.state6_count),0,orderall.state6_count)" search:"="`
- OrderState7Count int64 `json:"order_state7_count" type:"int" prop:"select:if(isnull(orderall.state7_count),0,orderall.state7_count)" search:"="`
- OrderState8Count int64 `json:"order_state8_count" type:"int" prop:"select:if(isnull(orderall.state8_count),0,orderall.state8_count)" search:"="`
- OrderState9Count int64 `json:"order_state9_count" type:"int" prop:"select:if(isnull(orderall.state9_count),0,orderall.state9_count)" search:"="`
- OrderState10Count int64 `json:"order_state10_count" type:"int" prop:"select:if(isnull(orderall.state10_count),0,orderall.state10_count)" search:"="`
- OrderState11Count int64 `json:"order_state11_count" type:"int" prop:"select:if(isnull(orderall.state11_count),0,orderall.state11_count)" search:"="`
- OrderState12Count int64 `json:"order_state12_count" type:"int" prop:"select:if(isnull(orderall.state12_count),0,orderall.state12_count)" search:"="`
- FinalSite
- }
- func (model FinalSiteStatist) GroupBy() string {
- return ""
- }
- func (model FinalSiteStatist) ExportFields() []db.ExportField {
- return []db.ExportField{
- {
- Label: "ID",
- Name: "id",
- Width: 10,
- },
- {
- Label: "业主姓名",
- Name: "username",
- Width: 10,
- },
- {
- Label: "手机号码",
- Name: "phone",
- Width: 20,
- },
- {
- Label: "区域",
- Name: "area_name",
- Width: 10,
- },
- {
- Label: "工地",
- Name: "address",
- Width: 30,
- },
- {
- Label: "户型",
- Name: "room",
- Width: 30,
- },
- {
- Label: "门店",
- Name: "shop_name",
- Width: 15,
- },
- {
- Label: "部门",
- Name: "dept_name",
- Width: 15,
- },
- {
- Label: "设计师",
- Name: "designer_name",
- Width: 10,
- },
- {
- Label: "业务员",
- Name: "salesman_name",
- Width: 10,
- },
- {
- Label: "项目经理",
- Name: "manager_name",
- Width: 10,
- },
- {
- Label: "工程队长",
- Name: "project_leader_name",
- Width: 10,
- },
- {
- Label: "开工日期",
- Name: "starttime",
- Width: 20,
- },
- {
- Label: "完工日期",
- Name: "endtime",
- Width: 15,
- },
- {
- Label: "套餐",
- Name: "pkg_name",
- Width: 20,
- },
- {
- Label: "控额",
- Name: "write_control",
- Width: 10,
- },
- {
- Label: "工人申请",
- Name: "apply_control",
- Width: 10,
- },
- {
- Label: "工人项目",
- Name: "incomplete_table",
- Width: 10,
- },
- {
- Label: "辅材下单",
- Name: "no_order",
- Width: 10,
- },
- {
- Label: "材料订单",
- Name: "incomplete_order",
- Width: 10,
- },
- {
- Label: "结款",
- Name: "incomplete_payment",
- Width: 10,
- },
- {
- Label: "变更",
- Name: "incomplete_change",
- Width: 10,
- },
- {
- Label: "未申请工人项目",
- Name: "apply_control_name",
- Width: 20,
- },
- {
- Label: "未完成工人项目",
- Name: "incomplete_table_name",
- Width: 20,
- },
- {
- Label: "未下单辅材",
- Name: "no_order_name",
- Width: 20,
- },
- {
- Label: "未完成订单",
- Name: "incomplete_order_name",
- Width: 20,
- },
- {
- Label: "未完成结款",
- Name: "incomplete_payment_name",
- Width: 20,
- },
- {
- Label: "结算金额",
- Name: "settle_total",
- Width: 20,
- },
- {
- Label: "结算状态",
- Name: "settle_state",
- Width: 20,
- },
- {
- Label: "项目经理未完成",
- Name: "manager_count",
- Width: 20,
- },
- {
- Label: "工程队长未完成",
- Name: "leader_count",
- Width: 20,
- },
- {
- Label: "财务未完成",
- Name: "finance_count",
- Width: 20,
- },
- {
- Label: "成控未完成",
- Name: "audit_count",
- Width: 20,
- },
- {
- Label: "店长未完成",
- Name: "shopowner_count",
- Width: 20,
- },
- {
- Label: "客服未完成",
- Name: "customer_count",
- Width: 20,
- },
- {
- Label: "下单员未完成",
- Name: "place_count",
- Width: 20,
- },
- {
- Label: "材料商未完成",
- Name: "supplier_count",
- Width: 20,
- },
- {
- Label: "工人待汇总",
- Name: "table_incomplete_collect_count",
- Width: 20,
- },
- {
- Label: "材料待汇总",
- Name: "order_incomplete_collect_count",
- Width: 20,
- },
- {
- Label: "材料待备货",
- Name: "order_state0_count",
- Width: 20,
- },
- {
- Label: "材料已备货",
- Name: "order_state1_count",
- Width: 20,
- },
- {
- Label: "材料待配送",
- Name: "order_state2_count",
- Width: 20,
- },
- {
- Label: "材料待收货",
- Name: "order_state3_count",
- Width: 20,
- },
- {
- Label: "材料已收货",
- Name: "order_state4_count",
- Width: 20,
- },
- {
- Label: "材料待安装",
- Name: "order_state5_count",
- Width: 20,
- },
- {
- Label: "材料待验收",
- Name: "order_state6_count",
- Width: 20,
- },
- {
- Label: "材料已完成",
- Name: "order_state7_count",
- Width: 20,
- },
- {
- Label: "材料已下单",
- Name: "order_state8_count",
- Width: 20,
- },
- {
- Label: "材料待测量",
- Name: "order_state9_count",
- Width: 20,
- },
- {
- Label: "材料待审核",
- Name: "order_state10_count",
- Width: 20,
- },
- {
- Label: "材料待结算",
- Name: "order_state11_count",
- Width: 20,
- },
- {
- Label: "材料已结算",
- Name: "order_state12_count",
- Width: 20,
- },
- }
- }
- func (FinalSiteStatist) ExportValue(row map[string]interface{}, rowIndex int, field db.ExportField, data []map[string]interface{}) string {
- switch field.Name {
- case "address":
- worksite := /*db.ToString(v["address"]) + " " +*/ db.ToString(row["village"]) + "" + db.ToString(row["room_no"])
- if worksite == "" {
- worksite = db.ToString(row["address"])
- }
- if db.ToString(row["area"]) != "" {
- worksite += " " + db.ToString(row["area"]) + "㎡"
- }
- return worksite
- case "room":
- return db.ToString(row["room_1"]) + "室 " + db.ToString(row["room_2"]) + "厅 " + db.ToString(row["room_3"]) + "厨 " + db.ToString(row["room_4"]) + "卫 " + db.ToString(row["room_5"]) + "阳台"
- case "starttime":
- starttime, _ := db.ToInt64(row["starttime"])
- if starttime == 0 {
- return ""
- }
- t := time.Unix(starttime, 0).Local()
- return t.Format("2006-01-02 15:04")
- case "endtime":
- endtime, _ := db.ToInt64(row["endtime"])
- if endtime == 0 {
- return ""
- }
- t := time.Unix(endtime, 0).Local()
- return t.Format("2006-01-02")
- case "write_control":
- write_control, _ := db.ToInt64(row["write_control"])
- if write_control == 1 {
- return "未完成"
- }
- return "已完成"
- case "apply_control":
- apply_control, _ := db.ToInt64(row["apply_control"])
- if apply_control == 1 {
- return "未完成"
- }
- return "已完成"
- case "incomplete_table":
- incomplete_table, _ := db.ToInt64(row["incomplete_table"])
- if incomplete_table == 1 {
- return "未完成"
- }
- return "已完成"
- case "no_order":
- no_order, _ := db.ToInt64(row["no_order"])
- if no_order == 1 {
- return "未完成"
- }
- return "已完成"
- case "incomplete_order":
- incomplete_order, _ := db.ToInt64(row["incomplete_order"])
- if incomplete_order == 1 {
- return "未完成"
- }
- return "已完成"
- case "incomplete_payment":
- incomplete_payment, _ := db.ToInt64(row["incomplete_payment"])
- if incomplete_payment == 1 {
- return "未完成"
- }
- return "已完成"
- case "incomplete_change":
- incomplete_change, _ := db.ToInt64(row["incomplete_change"])
- if incomplete_change == 1 {
- return "未完成"
- }
- return "已完成"
- case "settle_total":
- settle_total := ""
- manager_price, _ := db.ToFloat64(row["manager_price"])
- if manager_price != 0 {
- settle_total += "承包额:" + db.ToString(manager_price) + "\n"
- }
- worker_price, _ := db.ToFloat64(row["worker_price"])
- if worker_price != 0 {
- settle_total += "工人:" + db.ToString(worker_price) + "\n"
- }
- auxiliary_price, _ := db.ToFloat64(row["auxiliary_price"])
- if auxiliary_price != 0 {
- settle_total += "辅材:" + db.ToString(auxiliary_price) + "\n"
- }
- subsidy_price, _ := db.ToFloat64(row["subsidy_price"])
- if subsidy_price != 0 {
- settle_total += "补贴:" + db.ToString(subsidy_price) + "\n"
- }
- total, _ := db.ToFloat64(row["total"])
- if total != 0 {
- settle_total += "金额:" + db.ToString(total) + "\n"
- }
- return settle_total
- case "settle_state":
- settle_state, _ := db.ToInt64(row["settle_state"])
- switch settle_state {
- case 0:
- return "未发起"
- case 1:
- return "客服回访"
- case 2:
- return "项目经理确认"
- case 3:
- return "财务审核"
- case 4:
- return "店长审核"
- case 5:
- return "财务付款"
- case 6:
- return "已完成"
- }
- return ""
- }
- return db.ToString(row[field.Name])
- }
- func (model FinalSiteStatist) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return []db.JoinModel{
- {
- Model: FinalArea{},
- As: "area",
- On: []string{"`area`.`id` = " + model.TableName() + ".`area_id`"},
- },
- {
- Model: JoinShop{},
- As: "shop",
- On: []string{"`shop`.`id` = " + model.TableName() + ".`shop_id`"},
- },
- {
- Model: JoinDept{},
- As: "dept",
- On: []string{"`dept`.`id` = " + model.TableName() + ".`dept_id`"},
- }, {
- Model: JoinAdmin{},
- As: "manager",
- On: []string{"`manager`.`id` = " + model.TableName() + ".`manager_id`"},
- }, {
- Model: JoinAdmin{},
- As: "project_leader",
- On: []string{"`project_leader`.`id` = " + model.TableName() + ".`project_leader_id`"},
- },
- {
- Model: JoinAdmin{},
- As: "designer",
- On: []string{"`designer`.`id` = " + model.TableName() + ".`designer_id`"},
- },
- {
- Model: JoinAdmin{},
- As: "salesman",
- On: []string{"`salesman`.`id` = " + model.TableName() + ".`salesman_id`"},
- },
- {
- Model: FinalPkg{},
- As: "pkg",
- On: []string{"`pkg`.`id` = " + model.TableName() + ".`pkg_id`"},
- },
- {
- Model: JoinWriteControl{},
- As: "write",
- On: []string{"`write`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinPriceControl{},
- As: "price",
- On: []string{"`price`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinApplyControl{},
- As: "apply",
- On: []string{"`apply`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistTable{},
- As: "table",
- On: []string{"`table`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistMaterial{},
- As: "material",
- On: []string{"`material`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistOrder{},
- As: "order",
- On: []string{"`order`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistOrderAll{},
- As: "orderall",
- On: []string{"`orderall`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistPayment{},
- As: "payment",
- On: []string{"`payment`.`site_id` = " + model.TableName() + ".`id`"},
- },
- {
- Model: JoinStatistSettle{},
- As: "settle",
- On: []string{"`settle`.`site_id` = " + model.TableName() + ".`id`"},
- },
- }
- }
|