12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214 |
- 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{"final:verify"}, 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("我有权限")
- } else {
- s.Where = append(s.Where, fmt.Sprintf("(`zy_final_site`.`manager_id` = %s)", s.Param(c.GetInt("adminID"))))
- }
- 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`"},
- },
- }
- }
|