Browse Source

2024-02-22 公司添加类型(医药,运输)

zoie 1 year ago
parent
commit
ebf3cf53d1

+ 1 - 1
conf/app.conf

@@ -63,7 +63,7 @@ Qiniu_Url = "https://coldoss.coldbaozhida.com/"
 # Panel
 Panel_url = "http://127.0.0.1:6204/Cold_Panel"
 
-FilterExcludeURL = /Login_verification,/Data/List,/WxPay/Notify,/Data/Company_key_Device_Sensor_List,/docking/Real_Data,/docking/Note_Data
+FilterExcludeURL = /Login_verification,/Data/List,/WxPay/Notify,/Data/Company_key_Device_Sensor_List,/docking/Real_Data,/docking/Note_Data,/Company/Transport/List
 # 小程序 冷链验证 /Data/List
 # 小程序接口 /DeviceWarning/DeviceSensor_List,/Device/Applet_Stat_View2,/DeviceSensor/Applet_List_View1,/DeviceSensor/Applet_List_View2,/DeviceSensorType/List,/Device/DeviceTask_Post
 FilterOnlyLoginCheckURL = /Menu/List,/User/Info,/User/Home,/User/Post,/UpFileToken,/User/WxQRCode,/Company/Get,/DataSource,/Company/Bill_Excel,/WarningSend/List,/WxPay/Get_QRCode,/WxPay/GetOrderState,/WarningHandle/List

+ 8 - 1
controllers/Device.go

@@ -1567,6 +1567,7 @@ func (c *DeviceController) CompanyNotice_Edit() {
 	T_name := c.GetString("T_name")
 	T_Notice_wx := c.GetString("T_Notice_wx")
 	T_Notice_wx2 := c.GetString("T_Notice_wx2")
+	T_Notice_app := c.GetString("T_Notice_app")
 	T_Notice_phone := c.GetString("T_Notice_phone")
 	T_Notice_message := c.GetString("T_Notice_message")
 	T_Notice_mailbox := c.GetString("T_Notice_mailbox")
@@ -1600,6 +1601,12 @@ func (c *DeviceController) CompanyNotice_Edit() {
 		}
 		R_DeviceNotice.T_Notice_wx2 = T_Notice_wx2
 	}
+	if len(T_Notice_app) > 0 {
+		if T_Notice_app == "-" {
+			T_Notice_app = ""
+		}
+		R_DeviceNotice.T_Notice_app = T_Notice_app
+	}
 	if len(T_Notice_phone) > 0 {
 		if T_Notice_phone == "-" {
 			T_Notice_phone = ""
@@ -1622,7 +1629,7 @@ func (c *DeviceController) CompanyNotice_Edit() {
 		R_DeviceNotice.T_Notice_mechanism = T_Notice_mechanism
 	}
 
-	if err = Company.Update_CompanyNotice(R_DeviceNotice, "T_name", "T_Notice_wx", "T_Notice_wx2", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism"); err != nil {
+	if err = Company.Update_CompanyNotice(R_DeviceNotice, "T_name", "T_Notice_wx", "T_Notice_wx2","T_Notice_app", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism"); err != nil {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"}
 		c.ServeJSON()
 		return

+ 21 - 2
controllers/User.go

@@ -39,7 +39,9 @@ func (c *UserController) Prepare() {
 	if len(User_tokey) == 0 {
 		User_tokey = GetString
 	}
-
+	if Account.Admin_r == nil {
+		return
+	}
 	c.Admin_r = *Account.Admin_r
 	T_pid := c.Admin_r.T_pid
 	EntryPid, _ := Account.Redis_Tokey_T_pid_Get(User_tokey)
@@ -72,6 +74,16 @@ func (c *UserController) Company_Tree() {
 	c.ServeJSON()
 	return
 }
+func (c *UserController) Company_Transport_List() {
+	var r_jsons lib.R_JSONS
+
+	T_name := c.GetString("T_name")
+	r_jsons.Data = Account.Read_Transport_Company_List(T_name)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
+	c.ServeJSON()
+	return
+}
 
 // 所有公司树
 func (c *UserController) Company_List() {
@@ -105,6 +117,7 @@ func (c *UserController) Company_Add() {
 	T_plan := c.GetString("T_plan")
 	T_data := c.GetString("T_data")
 	T_v3d := c.GetString("T_v3d")
+	T_type, _ := c.GetInt("T_type")
 
 	var_ := Account.Company{
 		T_mid:     T_mid,
@@ -114,6 +127,7 @@ func (c *UserController) Company_Add() {
 		T_data:    T_data,
 		T_v3d:     T_v3d,
 		T_warning: 1,
+		T_type:    T_type,
 	}
 
 	id, err := Account.Add_Company(var_)
@@ -155,12 +169,17 @@ func (c *UserController) Company_Edit() {
 	}
 
 	T_name := c.GetString("T_name")
+	T_type, _ := c.GetInt("T_type")
 
 	if len(T_name) > 0 {
 		Company_r.T_name = T_name
 	}
+	if T_type > 0 {
+		Company_r.T_type = T_type
+
+	}
 
-	is := Account.Update_Company(Company_r, "T_name")
+	is := Account.Update_Company(Company_r, "T_name", "T_type")
 	if !is {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()

+ 57 - 10
controllers/Warning.go

@@ -224,6 +224,17 @@ func (c *DeviceController) DeviceWarning_Post() {
 			return
 		}
 
+		warning = Warning.Read_Warning_ById(int64(id))
+		if warning.Id > 0 {
+			warning.T_Text = T_Text
+			warning.T_State = 2
+			if is := Warning.Update_Warning(warning, "T_Text", "T_State"); !is {
+				c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
+				c.ServeJSON()
+				return
+			}
+		}
+
 	} else {
 		warning = Warning.Read_Warning_ById(int64(id))
 		if warning.Id == 0 {
@@ -302,6 +313,15 @@ func (c *DeviceController) DeviceWarning_Del() {
 			return
 		}
 
+		warning = Warning.Read_Warning_ById(int64(id))
+		if warning.Id > 0 {
+			warning.T_State = 0
+			if is := Warning.Update_Warning(warning, "T_State"); !is {
+				c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
+				c.ServeJSON()
+				return
+			}
+		}
 	} else {
 		warning = Warning.Read_Warning_ById(int64(id))
 		if warning.Id == 0 {
@@ -310,11 +330,30 @@ func (c *DeviceController) DeviceWarning_Del() {
 			return
 		}
 		warning.T_State = 0
-		if is := Warning.Update_Warning(warning, "T_Text", "T_State"); !is {
+		if is := Warning.Update_Warning(warning, "T_State"); !is {
 			c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
 			c.ServeJSON()
 			return
 		}
+
+		date := warning.T_Ut
+		T_year, T_month = date.Format("2006"), date.Format("01")
+		Wtab += "_" + T_year + "_" + T_month
+		warningBackups, err := Warning.Read_Warning_ById_Backups(id, T_year, T_month)
+		if err != nil && err.Error() != "<QuerySeter> no row found" {
+			c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
+			c.ServeJSON()
+			return
+		}
+		if warningBackups.Id > 0 {
+			warningBackups.T_State = 0
+			if is := Warning.Update_Warning_Backups(warningBackups, T_year, T_month); !is {
+				c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
+				c.ServeJSON()
+				return
+			}
+		}
+
 	}
 	// 删除报警列表统计的缓存
 	Warning.Redis_WarningCount_DelK(c.T_pid)
@@ -370,6 +409,7 @@ func (c *DeviceController) DeviceWarning_Data_Excel() {
 	}
 
 	var Device_data []Warning.Warning_R
+
 	// 管理员界面
 	if T_admin == 1 {
 		if T_history == 1 {
@@ -436,7 +476,7 @@ func (c *DeviceController) DeviceWarning_Data_Excel() {
 		c.ServeJSON()
 		return
 	}
-	//删除文件
+	// 删除文件
 	err = os.Remove("ofile/" + timeStr + ".xlsx")
 	if err != nil {
 		fmt.Println(err)
@@ -552,7 +592,7 @@ func (c *DeviceController) CompanyWarning_Data_Excel() {
 		c.ServeJSON()
 		return
 	}
-	//删除文件
+	// 删除文件
 	err = os.Remove("ofile/" + timeStr + ".xlsx")
 	if err != nil {
 		fmt.Println(err)
@@ -626,9 +666,15 @@ func (c *DeviceController) Read_Warning_List_By_DS_T_type() {
 		// 查询公司下面所有子公司id
 		T_pids = Account.ReadCompanyIds_T_path(Company_r.T_path)
 	}
+
+	var tpList []string
+	power, _ := Account.Read_Power_ById(c.Admin_r.T_power)
+	if power.T_warning != "*" {
+		tpList = lib.SplitStringIds(power.T_warning, "W")
+	}
 	countRedisKey := fmt.Sprintf("Company_Warning_Count_By_DS_T_type_%d_%s_%d_%d", c.T_pid, T_name, T_type, c.Admin_r.T_pid)
 
-	r_jsons.Data, r_jsons.Num = Warning.Read_Warning_List_By_DS_T_type(c.Admin_r, c.T_pid, bindSN, T_pids, T_type, T_name, page, page_z, countRedisKey)
+	r_jsons.Data, r_jsons.Num = Warning.Read_Warning_List_By_DS_T_type(c.Admin_r, c.T_pid, bindSN, T_pids, T_type, T_name, tpList, page, page_z, countRedisKey)
 	r_jsons.Page = page
 	r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
 
@@ -679,6 +725,7 @@ func (c *DeviceController) Read_WarningRate_List() {
 	var startTime, endTime string
 	now := time.Now()
 	var month time.Month
+
 	// 默认本月
 	if T_year == 0 {
 		T_year = now.Year()
@@ -722,20 +769,20 @@ func (c *DeviceController) Read_WarningHandle_List() {
 
 func Cron_WarningRate() {
 
-	//创建一个定时任务对象
+	// 创建一个定时任务对象
 	c := cron.New(cron.WithSeconds())
-	//给对象增加定时任务
+	// 给对象增加定时任务
 	// @daily 每日运行一次
-	//c.AddFunc("0 */1 * * * ?", Cron_WarningRateDay_Add)
-	//c.AddFunc("0 */1 * * * ?", Cron_WarningRateMonth_Add)
+	// c.AddFunc("0 */1 * * * ?", Cron_WarningRateDay_Add)
+	// c.AddFunc("0 */1 * * * ?", Cron_WarningRateMonth_Add)
 	c.AddFunc("@daily", Cron_WarningRateDay_Add)
 	c.AddFunc("@monthly", Cron_WarningRateMonth_Add)
 
-	//启动定时任务
+	// 启动定时任务
 	c.Start()
 	defer c.Stop()
 
-	//查询语句,阻塞,让main函数不退出,保持程序运行
+	// 查询语句,阻塞,让main函数不退出,保持程序运行
 	select {}
 
 }

+ 70 - 0
models/Account/Company.go

@@ -21,6 +21,7 @@ type Company struct {
 	T_mid  int    `orm:"size(200);null"`       //  上一级 ID
 	T_name string `orm:"size(256);null"`       // 公司名称
 	T_key  string `orm:"size(256);index;null"` // 公司密钥
+	T_type int    `orm:"size(256);default(1)"` // 公司类型 1-医药公司 2-运输企业
 
 	T_plan string `orm:"type(text);null"` //  平面图
 	T_data string `orm:"type(text);null"` //  大数据
@@ -47,6 +48,7 @@ type Company_R struct {
 	T_money    float32 // 余额
 	T_warning  int     // 报警统计
 	T_key      string
+	T_type     int // 公司类型 1-医药公司 2-运输企业
 	T_Charging int
 	Children   []Company_R
 }
@@ -62,6 +64,7 @@ func CompanyToCompany_R(r Company) (v Company_R) {
 	v.T_warning = r.T_warning
 	v.T_key = r.T_key
 	v.T_Charging = r.T_Charging
+	v.T_type = r.T_type
 	return v
 }
 
@@ -470,6 +473,73 @@ func Read_Company_List(T_name string) (CompanyList []Company_R) {
 	return CompanyList
 }
 
+// 获取运输企业公司列表
+func Read_Transport_Company_List(T_name string) (CompanyList []Company_R) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(Company))
+	var maps []Company
+
+	cond := orm.NewCondition()
+	cond1 := cond.And("T_State", 1).And("T_type", 2)
+
+	if len(T_name) > 0 {
+		cond1 = cond1.And("T_name__icontains", T_name)
+	}
+
+	_, err := qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&maps)
+	if err != nil {
+		logs.Error(lib.FuncName(), err)
+		return CompanyList
+	}
+
+	parentMap, flag := getCompanyParent(maps)
+	if flag {
+		for i := 0; i < len(maps); i++ {
+			if parentMap[maps[i].T_mid] {
+				continue
+			}
+			r := Company_R{
+				Id:         maps[i].Id,
+				T_mid:      maps[i].T_mid,
+				T_name:     maps[i].T_name,
+				T_plan:     maps[i].T_plan,
+				T_data:     maps[i].T_data,
+				T_v3d:      maps[i].T_v3d,
+				T_money:    maps[i].T_money,
+				T_warning:  maps[i].T_warning,
+				T_Charging: maps[i].T_Charging,
+				T_key:      maps[i].T_key,
+				Children:   nil,
+			}
+			info := CompanyCall(maps, r)
+			CompanyList = append(CompanyList, info)
+		}
+	} else {
+		for i := 0; i < len(maps); i++ {
+			r := Company_R{
+				Id:         maps[i].Id,
+				T_mid:      maps[i].T_mid,
+				T_name:     maps[i].T_name,
+				T_plan:     maps[i].T_plan,
+				T_data:     maps[i].T_data,
+				T_v3d:      maps[i].T_v3d,
+				T_money:    maps[i].T_money,
+				T_warning:  maps[i].T_warning,
+				T_Charging: maps[i].T_Charging,
+				T_key:      maps[i].T_key,
+				Children:   nil,
+			}
+			info := CompanyCall(maps, r)
+			CompanyList = append(CompanyList, info)
+		}
+	}
+
+	return CompanyList
+}
+
 func CompanyCall(CompanyList []Company, company Company_R) Company_R {
 	list := CompanyList
 	min := make([]Company_R, 0)

+ 12 - 3
models/Company/CompanyNotice.go

@@ -23,6 +23,7 @@ type CompanyNotice struct {
 
 	T_Notice_wx        string `orm:"type(text);null"` //w微信公众号  appid/名字|
 	T_Notice_wx2       string `orm:"type(text);null"` //w微信公众号  appid/名字|
+	T_Notice_app      string `orm:"type(text);null"` //app
 	T_Notice_phone     string `orm:"type(text);null"` //p手机  1111111|
 	T_Notice_message   string `orm:"type(text);null"` //m短信   1111111|
 	T_Notice_mailbox   string `orm:"type(text);null"` //e邮箱    1111111|
@@ -40,6 +41,7 @@ type CompanyNotice_R struct {
 	T_name             string // 分类
 	T_Notice_wx        string //w微信公众号  appid/名字|
 	T_Notice_wx2       string //w微信公众号  appid/名字|
+	T_Notice_app       string //app
 	T_Notice_phone     string //p手机  1111111|
 	T_Notice_message   string //m短信   1111111|
 	T_Notice_mailbox   string //e邮箱    1111111|
@@ -122,6 +124,7 @@ func CompanyNoticeToCompanyNotice_R(t CompanyNotice) (r CompanyNotice_R) {
 	r.T_name = t.T_name
 	r.T_Notice_wx = t.T_Notice_wx
 	r.T_Notice_wx2 = t.T_Notice_wx2
+	r.T_Notice_app = t.T_Notice_app
 	r.T_Notice_phone = t.T_Notice_phone
 	r.T_Notice_message = t.T_Notice_message
 	r.T_Notice_mailbox = t.T_Notice_mailbox
@@ -330,6 +333,7 @@ func Update_CompanyNotice_Bind_By_T_uuid(T_uuid, T_name string) bool {
 	cond1 := cond.And("T_State", 1).AndCond(
 		cond.Or("T_Notice_wx__icontains", T_uuid).
 			Or("T_Notice_wx2__icontains", T_uuid).
+			Or("T_Notice_app__icontains", T_uuid).
 			Or("T_Notice_phone__icontains", T_uuid).
 			Or("T_Notice_message__icontains", T_uuid).
 			Or("T_Notice_mailbox__icontains", T_uuid))
@@ -346,10 +350,11 @@ func Update_CompanyNotice_Bind_By_T_uuid(T_uuid, T_name string) bool {
 	for _, v := range map_r {
 		v.T_Notice_wx = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx, T_uuid_name)
 		v.T_Notice_wx2 = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx2, T_uuid_name)
+		v.T_Notice_app = Replice_T_Notice_Bind(T_uuid, v.T_Notice_app, T_uuid_name)
 		v.T_Notice_phone = Replice_T_Notice_Bind(T_uuid, v.T_Notice_phone, T_uuid_name)
 		v.T_Notice_message = Replice_T_Notice_Bind(T_uuid, v.T_Notice_message, T_uuid_name)
 		v.T_Notice_mailbox = Replice_T_Notice_Bind(T_uuid, v.T_Notice_mailbox, T_uuid_name)
-		_, err = o.Update(&v, "T_Notice_wx", "T_Notice_wx2", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
+		_, err = o.Update(&v, "T_Notice_wx", "T_Notice_wx2","T_Notice_app", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
 		if err != nil {
 			logs.Error(lib.FuncName(), err)
 			o.Rollback()
@@ -377,6 +382,7 @@ func Delete_CompanyNotice_Bind_By_T_uuid(T_uuid string) bool {
 	cond1 := cond.And("T_State", 1).AndCond(
 		cond.Or("T_Notice_wx__icontains", T_uuid).
 			Or("T_Notice_wx2__icontains", T_uuid).
+			Or("T_Notice_app__icontains", T_uuid).
 			Or("T_Notice_phone__icontains", T_uuid).
 			Or("T_Notice_message__icontains", T_uuid).
 			Or("T_Notice_mailbox__icontains", T_uuid))
@@ -391,10 +397,11 @@ func Delete_CompanyNotice_Bind_By_T_uuid(T_uuid string) bool {
 	for _, v := range map_r {
 		v.T_Notice_wx = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx, "")
 		v.T_Notice_wx2 = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx2, "")
+		v.T_Notice_app = Replice_T_Notice_Bind(T_uuid, v.T_Notice_app, "")
 		v.T_Notice_phone = Replice_T_Notice_Bind(T_uuid, v.T_Notice_phone, "")
 		v.T_Notice_message = Replice_T_Notice_Bind(T_uuid, v.T_Notice_message, "")
 		v.T_Notice_mailbox = Replice_T_Notice_Bind(T_uuid, v.T_Notice_mailbox, "")
-		_, err := o.Update(&v, "T_Notice_wx", "T_Notice_wx2", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
+		_, err := o.Update(&v, "T_Notice_wx", "T_Notice_wx2","T_Notice_app", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
 		if err != nil {
 			logs.Error(lib.FuncName(), err)
 			o.Rollback()
@@ -423,6 +430,7 @@ func Delete_CompanyNotice_Bind_By_T_uuid_T_pid(T_uuid string, T_pids []int) bool
 	cond1 := cond.And("T_State", 1).And("T_pid__in", T_pids).AndCond(
 		cond.Or("T_Notice_wx__icontains", T_uuid).
 			Or("T_Notice_wx2__icontains", T_uuid).
+			Or("T_Notice_app__icontains", T_uuid).
 			Or("T_Notice_phone__icontains", T_uuid).
 			Or("T_Notice_message__icontains", T_uuid).
 			Or("T_Notice_mailbox__icontains", T_uuid))
@@ -437,10 +445,11 @@ func Delete_CompanyNotice_Bind_By_T_uuid_T_pid(T_uuid string, T_pids []int) bool
 	for _, v := range map_r {
 		v.T_Notice_wx = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx, "")
 		v.T_Notice_wx2 = Replice_T_Notice_Bind(T_uuid, v.T_Notice_wx2, "")
+		v.T_Notice_app = Replice_T_Notice_Bind(T_uuid, v.T_Notice_app, "")
 		v.T_Notice_phone = Replice_T_Notice_Bind(T_uuid, v.T_Notice_phone, "")
 		v.T_Notice_message = Replice_T_Notice_Bind(T_uuid, v.T_Notice_message, "")
 		v.T_Notice_mailbox = Replice_T_Notice_Bind(T_uuid, v.T_Notice_mailbox, "")
-		_, err := o.Update(&v, "T_Notice_wx", "T_Notice_wx2", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
+		_, err := o.Update(&v, "T_Notice_wx", "T_Notice_wx2", "T_Notice_app","T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism")
 		if err != nil {
 			logs.Error(lib.FuncName(), err)
 			o.Rollback()

+ 5 - 2
models/Warning/Warning.go

@@ -854,7 +854,7 @@ func Read_DeviceLogs_List(T_sn string, page, page_z int) (r []DeviceLogs, cnt in
 }
 
 // 通过传感器类型获取报警列表
-func Read_Warning_List_By_DS_T_type(admin *Account.Admin, T_pid int, bindSN []string, T_pids []int, DS_T_type int, T_name string,
+func Read_Warning_List_By_DS_T_type(admin *Account.Admin, T_pid int, bindSN []string, T_pids []int, DS_T_type int, T_name string, T_tp []string,
 	page int, page_z int, countRedisKey string) (r []Warning_Applet, cnt int64) {
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
@@ -876,6 +876,10 @@ func Read_Warning_List_By_DS_T_type(admin *Account.Admin, T_pid int, bindSN []st
 	} else {
 		sql_WHERE += " AND t_pid = " + strconv.Itoa(T_pid)
 	}
+	if len(T_tp) > 0 {
+		tp := lib.StringListToDotStr(T_tp)
+		sql_WHERE += fmt.Sprintf(" AND w.t_tp in (%s)", tp)
+	}
 
 	if len(bindSN) > 0 {
 		sql_WHERE += fmt.Sprintf(" AND t_sn in (%s)", lib.StringListToQuotesDotStr(bindSN))
@@ -1076,7 +1080,6 @@ func Read_Company_Warning_Backups(T_pids []int, T_year string, T_month string, T
 	if len(T_tp) > 0 {
 		tp := lib.StringListToDotStr(T_tp)
 		sql_WHERE += fmt.Sprintf(" AND t_tp in (%s)", tp)
-
 	}
 	if len(T_name) > 0 {
 		sql_WHERE += " AND (t_sn like '%" + T_name + "%' OR t__d_name like '%" + T_name + "%' OR t_id like '%" + T_name + "%' OR t__d_s_name like '%" + T_name + "%')"

+ 13 - 12
routers/User.go

@@ -53,18 +53,19 @@ func init() {
 		beego.NSRouter("/Menu/Excel", &controllers.UserController{}, "*:Menu_Excel"),       // 导出菜单列表
 
 		// 公司管理
-		beego.NSRouter("/Company/Tree", &controllers.UserController{}, "*:Company_Tree"),               // 公司列表
-		beego.NSRouter("/Company/List", &controllers.UserController{}, "*:Company_List"),               // 所有公司列表
-		beego.NSRouter("/Company/Add", &controllers.UserController{}, "*:Company_Add"),                 // 添加公司
-		beego.NSRouter("/Company/Get", &controllers.UserController{}, "*:Company_Get"),                 // 添加公司
-		beego.NSRouter("/Company/Edit", &controllers.UserController{}, "*:Company_Edit"),               // 修改公司
-		beego.NSRouter("/Company/Del", &controllers.UserController{}, "*:Company_Del"),                 // 删除公司
-		beego.NSRouter("/Company/Entry", &controllers.UserController{}, "*:Company_Entry"),             // 删除公司
-		beego.NSRouter("/Company/Bill_Excel", &controllers.UserController{}, "*:CompanyBill_Excel"),    // 公司账单
-		beego.NSRouter("/Company/DigitalTwin", &controllers.UserController{}, "*:Company_DigitalTwin"), // 数字孪生
-		beego.NSRouter("/Company/Pay", &controllers.UserController{}, "*:Company_Pay"),                 // 充值
-		beego.NSRouter("/Company/Warning", &controllers.UserController{}, "*:Company_Warning"),         // 报警统计
-		beego.NSRouter("/Company/Charging", &controllers.UserController{}, "*:Company_Charging"),       // 报警统计
+		beego.NSRouter("/Company/Tree", &controllers.UserController{}, "*:Company_Tree"),                     // 公司列表
+		beego.NSRouter("/Company/List", &controllers.UserController{}, "*:Company_List"),                     // 所有公司列表
+		beego.NSRouter("/Company/Transport/List", &controllers.UserController{}, "*:Company_Transport_List"), // 运输公司列表
+		beego.NSRouter("/Company/Add", &controllers.UserController{}, "*:Company_Add"),                       // 添加公司
+		beego.NSRouter("/Company/Get", &controllers.UserController{}, "*:Company_Get"),                       // 添加公司
+		beego.NSRouter("/Company/Edit", &controllers.UserController{}, "*:Company_Edit"),                     // 修改公司
+		beego.NSRouter("/Company/Del", &controllers.UserController{}, "*:Company_Del"),                       // 删除公司
+		beego.NSRouter("/Company/Entry", &controllers.UserController{}, "*:Company_Entry"),                   // 删除公司
+		beego.NSRouter("/Company/Bill_Excel", &controllers.UserController{}, "*:CompanyBill_Excel"),          // 公司账单
+		beego.NSRouter("/Company/DigitalTwin", &controllers.UserController{}, "*:Company_DigitalTwin"),       // 数字孪生
+		beego.NSRouter("/Company/Pay", &controllers.UserController{}, "*:Company_Pay"),                       // 充值
+		beego.NSRouter("/Company/Warning", &controllers.UserController{}, "*:Company_Warning"),               // 报警统计
+		beego.NSRouter("/Company/Charging", &controllers.UserController{}, "*:Company_Charging"),             // 报警统计
 
 		beego.NSRouter("/WxPay/Get_QRCode", &controllers.UserController{}, "*:WxPay_QRCode"),           // 获取微信支付二维码
 		beego.NSRouter("/WxPay/Notify", &controllers.UserController{}, "*:WxPay_Notify"),               // 获取微信支付二维码

+ 1 - 1
routers/filter.go

@@ -68,7 +68,7 @@ func RBACFilter(ctx *context.Context) {
 	api := Account.Read_API_List_ByPower_Id(power.Id, power.T_menu)
 	flag := false
 	for _, v := range api {
-		if version+v.T_uri == ctx.Request.URL.Path {
+		if strings.Contains(version+v.T_uri, ctx.Request.URL.Path) {
 			flag = true
 			break
 		}