Browse Source

项目初始化

huangyan 3 months ago
commit
404e0eb5b9
100 changed files with 13622 additions and 0 deletions
  1. 9 0
      .idea/Cold_DataV.iml
  2. 8 0
      .idea/modules.xml
  3. 6 0
      .idea/vcs.xml
  4. 79 0
      Nats/Nats.go
  5. 242 0
      StatisticsTask/Company.go
  6. 8 0
      Z_Build.bat
  7. 22 0
      conf/app.conf
  8. 34 0
      conf/config.go
  9. 203 0
      controllers/controllers.go
  10. 0 0
      data.json
  11. 42 0
      go.mod
  12. 302 0
      go.sum
  13. 1 0
      lastupdate.tmp
  14. 61 0
      lib/Aes.go
  15. 35 0
      lib/MapToJosn.go
  16. 58 0
      lib/MinuteToDataTime.go
  17. 435 0
      lib/lib.go
  18. 9 0
      lib/map.go
  19. 992 0
      logs/Data/logx.log
  20. 101 0
      logs/LogPrintln.go
  21. 0 0
      logs/Orm/logx.log
  22. 2188 0
      logs/logx/logx.log
  23. 0 0
      logs/logxE/logx.log
  24. 39 0
      main.go
  25. 128 0
      models/Account/Admin.go
  26. 142 0
      models/Account/Company.go
  27. 62 0
      models/Account/Tokey.go
  28. 203 0
      models/Device/Device.go
  29. 132 0
      models/Device/DeviceData.go
  30. 69 0
      models/Device/DeviceDataOld.go
  31. 186 0
      models/Device/DeviceParameter.go
  32. 185 0
      models/Device/DeviceSensor.go
  33. 244 0
      models/Device/DeviceSensorParameter.go
  34. 31 0
      models/Device/DeviceSnOld.go
  35. 81 0
      models/Device/DeviceTask.go
  36. 33 0
      models/GTime.go
  37. 76 0
      models/Product/ProductType.go
  38. 36 0
      models/Product/ProductUpgrade.go
  39. 151 0
      models/StatisticsStruct.go
  40. 33 0
      models/System/Logs.go
  41. 263 0
      models/Warning/Warning.go
  42. 82 0
      models/Warning/WarningSand.go
  43. 96 0
      models/Warning/WarningType.go
  44. 15 0
      routers/router.go
  45. 776 0
      static/css/comon0.css
  46. BIN
      static/css/loading-1.gif
  47. BIN
      static/font/DS-DIGI.TTF
  48. BIN
      static/font/DS-DIGIB.TTF
  49. BIN
      static/font/DS-DIGII.TTF
  50. BIN
      static/font/DS-DIGIT.TTF
  51. BIN
      static/images/bg.jpg
  52. BIN
      static/images/di.png
  53. BIN
      static/images/head_bg.png
  54. BIN
      static/images/jt.png
  55. BIN
      static/images/lbx.png
  56. BIN
      static/images/line.png
  57. BIN
      static/images/loading.gif
  58. BIN
      static/images/map.png
  59. BIN
      static/images/主页.png
  60. BIN
      static/images/单色圆点.png
  61. BIN
      static/images/地图类_地图.png
  62. BIN
      static/images/层.png
  63. BIN
      static/images/库房管理.png
  64. BIN
      static/images/底03.png
  65. BIN
      static/images/撤销.png
  66. BIN
      static/images/更多内容关注公众号.jpg
  67. BIN
      static/images/详情.png
  68. BIN
      static/images/返回.png
  69. 1058 0
      static/js/B_Mode_1.js
  70. 1052 0
      static/js/C_Mode_v3D.js
  71. 218 0
      static/js/C_Mode_v3D_精简版.js
  72. 144 0
      static/js/bzd.js
  73. 34 0
      static/js/echarts.min.js
  74. 1 0
      static/js/jquery.js
  75. 1309 0
      static/js/jquery.liMarquee.js
  76. 92 0
      static/js/lib.js
  77. 7 0
      static/js/map.js
  78. 21 0
      static/js/showTime.js
  79. 354 0
      static/js/trail.js
  80. 387 0
      static/js/v3d.js
  81. 999 0
      static/js/view.js
  82. 47 0
      static/province-json/in.html
  83. 1 0
      static/province-json/jquery.js
  84. 0 0
      static/province-json/上海.json
  85. 0 0
      static/province-json/云南.json
  86. 0 0
      static/province-json/内蒙古.json
  87. 0 0
      static/province-json/北京.json
  88. 0 0
      static/province-json/台湾.json
  89. 0 0
      static/province-json/吉林.json
  90. 0 0
      static/province-json/四川.json
  91. 0 0
      static/province-json/天津.json
  92. 0 0
      static/province-json/宁夏.json
  93. 0 0
      static/province-json/安徽.json
  94. 0 0
      static/province-json/山东.json
  95. 0 0
      static/province-json/山西.json
  96. 0 0
      static/province-json/广东.json
  97. 0 0
      static/province-json/广西.json
  98. 0 0
      static/province-json/新疆.json
  99. 0 0
      static/province-json/江苏.json
  100. 0 0
      static/province-json/江西.json

+ 9 - 0
.idea/Cold_DataV.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Cold_DataV.iml" filepath="$PROJECT_DIR$/.idea/Cold_DataV.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 79 - 0
Nats/Nats.go

@@ -0,0 +1,79 @@
+package Nats
+
+import (
+	"Cold_Data/StatisticsTask"
+	"Cold_Data/conf"
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"Cold_Data/models/Account"
+	"Cold_Data/models/Device"
+	"encoding/json"
+	"github.com/nats-io/nats.go"
+	"strings"
+	"time"
+)
+
+// 实体类
+type Ms2m_Project struct {
+	//Sn   string `json:"sn"`
+	Type int   `json:"type"`
+	Msid int64 `json:"mid"`
+	Dut  int64 `json:"dut"`
+}
+
+func NatsInit() {
+
+	time.Sleep(time.Minute * 1)
+	var err error
+	// 连接Nats服务器
+	lib.Nats, err = nats.Connect("nats://" + conf.NatsServer_Url)
+	if err != nil {
+		logs.Println("nats 连接失败!")
+		panic(any(err))
+	}
+	logs.Println("nats OK!")
+
+	// 发布-订阅 模式,异步订阅 test1
+	_, _ = lib.Nats.Subscribe("Mqtt_DeviceReal", func(m *nats.Msg) {
+
+		//logs.Println("Nats Mqtt_DeviceReal: %s\n", string(m.Data))
+		DataList := strings.Split(string(m.Data), "|+|")
+		if len(DataList) != 2 {
+			return
+		}
+		if len(DataList[0]) == 0 {
+			return
+		}
+
+		var Ms2_project Ms2m_Project
+		err := json.Unmarshal([]byte(DataList[1]), &Ms2_project)
+		if err != nil {
+			logs.Println("MqttServer", "JSON反序列化失败[Ms2m_Project]", string(m.Data), err.Error())
+			return
+		}
+
+		// 只处理报警任务
+		if Ms2_project.Type != 2 {
+			return
+		}
+
+		r_Device, err := Device.Read_Device_ByT_sn(DataList[0])
+		if err != nil {
+			//logs.Println("没找到SN!", DataList[0])
+			return
+		}
+		// 内部测试
+		if r_Device.T_pid <= 3 {
+			return
+		}
+		err, Company_r := Account.Read_Company_id(r_Device.T_pid)
+		if err != nil {
+			//logs.Println("公司ID 不存在!", r_Device.T_pid)
+			return
+		}
+
+		StatisticsTask.Company_Handle(Company_r)
+
+	})
+
+}

+ 242 - 0
StatisticsTask/Company.go

@@ -0,0 +1,242 @@
+package StatisticsTask
+
+import (
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"Cold_Data/models"
+	"Cold_Data/models/Account"
+	"Cold_Data/models/Device"
+	"Cold_Data/models/Warning"
+	"fmt"
+	"time"
+)
+
+func init() {
+	var err error
+	// 从文件中加载map
+	lib.Company_Map, err = lib.LoadMapFromFile("data.json")
+	if err != nil {
+		fmt.Println("Company_Map 文件不存在!,重新加载")
+		lib.Company_Map = make(map[int]*models.Company_Project)
+		lib.Company_Map[0] = &models.Company_Project{}
+
+	} else {
+		fmt.Println("Company_Map 加载成功")
+
+	}
+
+	// 定时循环 子公司归档
+	go func() {
+		time.Sleep(time.Second * 3)
+		for true {
+			// 间隔 全部统计一次
+			StatisticsTask_GO()
+			Company_Recursion(0)
+			time.Sleep(time.Hour * 2)
+		}
+	}()
+
+}
+
+// 子公司归档
+func Company_Recursion(T_mid int) {
+
+	Company_A := Account.Read_Company_T_mid_All(T_mid)
+	Company_Project_r, ok := lib.Company_Map[T_mid]
+	if !ok {
+		return
+	}
+	Company_Project_r.Children = []*models.Company_Project{} // 清空
+	for _, A_r := range Company_A {
+		Company_Project_Br, ok := lib.Company_Map[A_r.Id]
+		if !ok {
+			continue
+		}
+		Company_Recursion(A_r.Id)
+		Company_Project_r.Children = append(Company_Project_r.Children, Company_Project_Br)
+	}
+
+	lib.Company_Map[T_mid] = Company_Project_r
+
+}
+
+// 处理公司 h 处理类型  0 全部  1 记录数据
+func Company_Handle(C_r Account.Company) {
+	_, ok := lib.GO_Handle[C_r.Id]
+	if ok {
+		return
+	}
+
+	lib.GO_Handle[C_r.Id] = true // 标记开始
+	start := time.Now()
+	logs.Println("开始处理公司:", C_r.T_name)
+	Company_Project_r, ok := lib.Company_Map[C_r.Id]
+	if !ok {
+		Company_Project_r = &models.Company_Project{}
+	}
+
+	Company_Project_r.Company_name = C_r.T_name
+	Company_Project_r.Company_key = C_r.T_key
+	Company_Project_r.Company_plan = C_r.T_plan
+	Company_Project_r.Company_data = C_r.T_data
+	Company_Project_r.Company_v3d = C_r.T_v3d
+
+	//Company_Project_r.Device.DeviceList = Device_Data(C_r)
+
+	// 设备类
+	Company_Project_r.Device.T_库房总数 = Device.Read_Device_库房总数(C_r.Id)
+	Company_Project_r.Device.T_移动总数 = Device.Read_Device_移动总数(C_r.Id)
+	if Company_Project_r.Device.T_库房总数+Company_Project_r.Device.T_移动总数 == 0 {
+		// 没有设备,跳过数据整理
+		lib.Company_Map[C_r.Id] = Company_Project_r
+		return
+	}
+	Company_Project_r.Device.T_移动离线总数 = Device.Read_Device_设备离线总数(C_r.Id)
+	Company_Project_r.Device.T_移动监控总数 = Device.Read_Device_设备监控总数(C_r.Id)
+
+	// 报警类
+	//Company_Project_r.Warning.T_库房报警总数 = Warning.Read_Warning_库房报警总数(C_r.Id)
+	Company_Project_r.Warning.T_库房未处理总数 = Warning.Read_Warning_库房未处理总数(C_r.Id)
+	Company_Project_r.Warning.T_库房设备报警数_今天 = Warning.Read_Warning_库房设备报警数(C_r.Id, "DATE (create_time) = DATE (NOW())")
+	//Company_Project_r.Warning.T_库房设备报警数_昨天  = Warning.Read_Warning_库房设备报警数(C_r.Id,"TO_DAYS(NOW()) - TO_DAYS( create_time) <= 1")
+	//Company_Project_r.Warning.T_库房设备报警数_近7天 = Warning.Read_Warning_库房设备报警数(C_r.Id,"DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time)")
+	//Company_Project_r.Warning.T_库房设备报警数_本月  = Warning.Read_Warning_库房设备报警数(C_r.Id,"DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT( CURDATE( ), '%Y%m' )")
+	//Company_Project_r.Warning.T_库房设备报警数_上一月 = Warning.Read_Warning_库房设备报警数(C_r.Id,"PERIOD_DIFF(date_format(now(), '%Y%m' ), date_format( create_time,'%Y%m')) =1")
+	Company_Project_r.Warning.T_库房报警设备数_今天 = Warning.Read_Warning_库房报警设备数(C_r.Id, "DATE (create_time) = DATE (NOW())")
+
+	//Company_Project_r.Warning.T_移动警数总数 = Warning.Read_Warning_移动警数总数(C_r.Id)
+	Company_Project_r.Warning.T_移动未处理总数 = Warning.Read_Warning_移动未处理总数(C_r.Id)
+	Company_Project_r.Warning.T_移动设备报警数_今天 = Warning.Read_Warning_移动设备报警数(C_r.Id, "DATE (create_time) = DATE (NOW())")
+	//Company_Project_r.Warning.T_移动设备报警数_昨天  = Warning.Read_Warning_移动设备报警数(C_r.Id,"TO_DAYS(NOW()) - TO_DAYS( create_time) <= 1")
+	//Company_Project_r.Warning.T_移动设备报警数_近7天 = Warning.Read_Warning_移动设备报警数(C_r.Id,"DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time)")
+	//Company_Project_r.Warning.T_移动设备报警数_本月  = Warning.Read_Warning_移动设备报警数(C_r.Id,"DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT( CURDATE( ), '%Y%m' )")
+	//Company_Project_r.Warning.T_移动设备报警数_上一月 = Warning.Read_Warning_移动设备报警数(C_r.Id,"PERIOD_DIFF(date_format(now(), '%Y%m' ), date_format( create_time,'%Y%m')) =1")
+	Company_Project_r.Warning.T_移动报警设备数_今天 = Warning.Read_Warning_移动报警设备数(C_r.Id, "DATE (create_time) = DATE (NOW())")
+
+	Company_Project_r.Warning.T_库房报警类型统计 = make(map[string]int)
+	for _, v := range Warning.Read_Warning_库房报警类型统计(C_r.Id) {
+		//x := models.WarningClassList_Project{T_name: Warning.Read_WarningType_Get(lib.To_int(v["t_tp"])),T_value: lib.To_int(v["COUNT(*)"])}
+		Company_Project_r.Warning.T_库房报警类型统计[Warning.Read_WarningType_Get(lib.To_int(v["t_tp"]))] = lib.To_int(v["COUNT(*)"])
+	}
+
+	//Company_Project_r.Warning.T_库房报警设备数_近7天 = make(map[string]int)
+	//Company_Project_r.Warning.T_移动报警设备数_近7天 = make(map[string]int)
+	Company_Project_r.Warning.T_报警设备数_近7天 = make(map[string]int)
+	// 获取当前日期
+	currentDate := time.Now().Local()
+	// 生成最近7天的日期
+	for i := 0; i < 7; i++ {
+		date := currentDate.AddDate(0, 0, -i)
+		//Company_Project_r.Warning.T_库房报警设备数_近7天[date.Format("01-02")] = Warning.Read_Warning_库房报警设备数(C_r.Id,"date_format(create_time,'%Y-%m-%d') = '"+date.Format("2006-01-02")+"'")
+		//Company_Project_r.Warning.T_移动报警设备数_近7天[date.Format("01-02")] = Warning.Read_Warning_移动报警设备数(C_r.Id,"date_format(create_time,'%Y-%m-%d') = '"+date.Format("2006-01-02")+"'")
+		Company_Project_r.Warning.T_报警设备数_近7天[date.Format("01-02")] = Warning.Read_Warning_报警设备数(C_r.Id, "date_format(create_time,'%Y-%m-%d') = '"+date.Format("2006-01-02")+"'")
+	}
+
+	// 任务类
+	Company_Project_r.Task.T_任务总数_今天 = Device.Read_Task_任务总数(C_r.Id, "DATE (t__ut_start) = DATE (NOW())")
+	//Company_Project_r.Task.T_任务总数_昨天  = Device.Read_Task_任务总数(C_r.Id,"TO_DAYS(NOW()) - TO_DAYS( t__ut_start) <= 1")
+	//Company_Project_r.Task.T_任务总数_近7天 = Device.Read_Task_任务总数(C_r.Id,"DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(t__ut_start)")
+
+	Company_Project_r.Task.T_任务设备数_今天 = Device.Read_Task_任务设备数(C_r.Id, "DATE (t__ut_start) = DATE (NOW())")
+	//Company_Project_r.Task.T_任务设备数_昨天  = Device.Read_Task_任务设备数(C_r.Id,"TO_DAYS(NOW()) - TO_DAYS( t__ut_start) <= 1")
+	//Company_Project_r.Task.T_任务设备数_近7天 = Device.Read_Task_任务设备数(C_r.Id,"DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(t__ut_start)")
+
+	//currentMonth := time.Now().Month()
+	//currentYear := time.Now().Year()
+	//Company_Project_r.Task.T_任务总数_近一年 = make(map[string]int)
+	//for i := 0; i < 12; i++ {
+	//	month := currentMonth - time.Month(i)
+	//	year := currentYear
+	//
+	//	if month <= 0 {
+	//		month += 12
+	//		year--
+	//	}
+	//	Company_Project_r.Task.T_任务总数_近一年[fmt.Sprintf("%d-%d",year,month)] = Device.Read_Task_任务总数(C_r.Id,"date_format(t__ut_start,'%Y-%m') = '"+fmt.Sprintf("%d-%02d",year, int(month))+"'")
+	//}
+
+	Company_Project_r.Task.T_任务总数_近7天 = make(map[string]int)
+	// 获取当前日期
+	//currentDate := time.Now().Local()
+	// 生成最近7天的日期
+	for i := 0; i < 7; i++ {
+		date := currentDate.AddDate(0, 0, -i)
+		Company_Project_r.Task.T_任务总数_近7天[date.Format("01-02")] = Device.Read_Task_任务总数(C_r.Id, "date_format(t__ut_start,'%Y-%m-%d') = '"+date.Format("2006-01-02")+"'")
+	}
+
+	lib.Company_Map[C_r.Id] = Company_Project_r
+
+	//str, _ := json.Marshal(Company_Project_r)
+	//fmt.Println(string(str))
+	logs.Println("处理公司完成:", C_r.T_name)
+	logs.PrintlnData("[" + C_r.T_name + "] 耗时:" + time.Since(start).String())
+	go func() {
+		time.Sleep(time.Minute * 10)
+		delete(lib.GO_Handle, C_r.Id)
+	}()
+}
+
+func StatisticsTask_GO() {
+
+	fmt.Println("----开始统计-----")
+	Company_All := Account.Read_Company_All()
+	for _, C_r := range Company_All {
+		// 内部测试
+		if C_r.T_path[:5] == "/0/1/" {
+			continue
+		}
+		_, ok := lib.GO_Handle[C_r.Id]
+		if ok {
+			continue
+		}
+		Company_Handle(C_r)
+	}
+
+	fmt.Println("----保存成功-----")
+	// 将map保存到文件
+	err := lib.SaveMapToFile(lib.Company_Map, "data.json")
+	if err != nil {
+		fmt.Println("保存失败:", err)
+		return
+	}
+
+}
+
+//func Device_Data(C_r Account.Company) []models.DeviceList_Project {
+//	logs.Println("开始处理公司数据:", C_r.T_name)
+//
+//	DeviceList := []models.DeviceList_Project{}
+//	for _, ds := range Device.Read_DeviceSensor_ByT_pid(C_r.Id) {
+//		ds_ := models.DeviceList_Project{}
+//
+//		ds_.T_sn = ds.T_sn
+//		ds_.T_id = ds.T_id
+//		ds_.T_name = ds.T_name
+//		ds_.T_sort = ds.T_sort
+//		ds_.T_3dview = ds.T_3dview
+//		ds_.T_type = ds.T_type
+//		ds_.T_link = ds.T_link
+//
+//		dd := Device.Read_DeviceData(ds.T_sn, ds.T_id)
+//		ds_.T_t = dd.T_t
+//		ds_.T_rh = dd.T_rh
+//		ds_.T_time = dd.T_time.Format("2006-01-02 15:04:05")
+//		if dsp, is := Device.Read_DeviceSensorParameter(ds.T_sn, ds.T_id); is {
+//			ds_.T_Tlower = dsp.T_Tlower
+//			ds_.T_Tupper = dsp.T_Tupper
+//			ds_.T_RHlower = dsp.T_RHlower
+//			ds_.T_RHupper = dsp.T_RHupper
+//		}
+//
+//		ds_.T_Dattery = ds.T_Dattery
+//		ds_.T_Site = ds.T_Site
+//		ds_.T_monitor = ds.T_monitor
+//		ds_.T_online = ds.T_online
+//		ds_.T_online_s = ds.T_online_s
+//		DeviceList = append(DeviceList, ds_)
+//
+//	}
+//
+//	return DeviceList
+//
+//}

+ 8 - 0
Z_Build.bat

@@ -0,0 +1,8 @@
+cd %~dp0
+set GOARCH=amd64
+set GOOS=linux
+set GOPATH=E:\gopath
+set GO111MODULE=auto
+
+
+go build -o Cold_DataV main.go

+ 22 - 0
conf/app.conf

@@ -0,0 +1,22 @@
+appname = Cold_DataV
+httpport = 6700
+runmode = dev
+
+# Mysql
+MysqlServer_UrlPort = "192.168.0.88:3306"
+MysqlServer_Database = "cold"
+MysqlServer_Username = "cold"
+MysqlServer_Password = "yjwyEckZS7rE5H!"
+MysqlServer_MaxIdleConnections = 100
+MysqlServer_MaxOpenConnections = 200
+
+# Redis
+Redis_address = "192.168.0.5:6379"
+Redis_password = "redis_wsxaMH"
+Redis_dbNum = "1"
+
+# Nats
+NatsServer_Url = "192.168.0.5:4222"
+
+
+

+ 34 - 0
conf/config.go

@@ -0,0 +1,34 @@
+package conf
+
+import (
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+	beego.LoadAppConfig("ini", "a/conf/app.conf")
+}
+
+var HTTPPort, _ = beego.AppConfig.Int("HTTPPort")
+var AppName, _ = beego.AppConfig.String("appname")
+
+// Redis
+var Redis_address, _ = beego.AppConfig.String("Redis_address")
+var Redis_password, _ = beego.AppConfig.String("Redis_password")
+var Redis_dbNum, _ = beego.AppConfig.String("Redis_dbNum")
+
+// Mysql
+var MysqlServer_UrlPort, _ = beego.AppConfig.String("MysqlServer_UrlPort")
+var MysqlServer_Database, _ = beego.AppConfig.String("MysqlServer_Database")
+var MysqlServer_Username, _ = beego.AppConfig.String("MysqlServer_Username")
+var MysqlServer_Password, _ = beego.AppConfig.String("MysqlServer_Password")
+var MysqlServer_MaxIdleConnections, _ = beego.AppConfig.Int("MysqlServer_MaxIdleConnections")
+var MysqlServer_MaxOpenConnections, _ = beego.AppConfig.Int("MysqlServer_MaxOpenConnections")
+
+// Nats
+var NatsServer_Url, _ = beego.AppConfig.String("NatsServer_Url")
+
+var KF = "()"
+var YD = "()"
+
+//var KF_model = "('YZ100N','YZ200G','KF100N','KF100B','KF200L','BX200GSE','BX200GBL','MD100','MD200G','MP200G','BX100','KF100')"
+//var YD_model = "('BW100','YD100','BW200','YD200')"

+ 203 - 0
controllers/controllers.go

@@ -0,0 +1,203 @@
+package controllers
+
+import (
+	"Cold_Data/lib"
+	"Cold_Data/models/Account"
+	"Cold_Data/models/Device"
+	"fmt"
+	beego "github.com/beego/beego/v2/server/web"
+	"strings"
+)
+
+type MainController struct {
+	beego.Controller
+}
+
+func (c *MainController) Get() {
+
+	T_key := c.GetString("T_key")
+	T_mode, _ := c.GetInt("T_mode", 1)
+	T_key_s := strings.Split(T_key, ",")
+
+	Company_r, err := Account.Read_Company_T_key(T_key_s[len(T_key_s)-1])
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_key!"}
+		c.ServeJSON()
+		return
+	}
+
+	//if !strings.Contains(Company_r.T_data, "_") {
+	//	c.TplName = "error.html"
+	//	return
+	//}
+
+	Company_R, ok := lib.Company_Map[Company_r.Id]
+	if !ok {
+		c.TplName = "error.html"
+		return
+	}
+	Company_R.Company_name = Company_r.T_name
+	Company_R.Company_key = Company_r.T_key
+	Company_R.Company_plan = Company_r.T_plan
+	Company_R.Company_data = Company_r.T_data
+	Company_R.Company_v3d = Company_r.T_v3d
+
+	switch T_mode {
+	case 1: // 智慧大屏
+		fmt.Println("智慧大屏:", Company_r.T_data)
+		LOOPnum := 0
+
+	LOOP:
+		if len(Company_r.T_data) == 0 {
+			// 复用上一级
+			err, Company_r = Account.Read_Company_id(Company_r.T_mid)
+			if err != nil {
+				c.TplName = "error.html"
+				return
+			}
+
+			if LOOPnum < 10 {
+				LOOPnum += 1
+				goto LOOP
+			} else {
+				c.TplName = "error.html"
+				return
+			}
+		}
+		c.Data["C_keys"] = T_key
+		c.TplName = Company_r.T_data + ".html"
+
+		// 全国
+		if strings.Contains(Company_R.Company_name, "主") || strings.Contains(Company_R.Company_name, "全国") {
+			c.Data["map"] = "china"
+			c.TplName = "B_Mode1.html"
+			return
+		}
+		return
+
+	case 2: // 3D大屏
+		fmt.Println("3D大屏:", Company_r.T_v3d) // C_Mode_v3D_精简版|5QIRTWYLG6NE7OC349JP8M02UKBZHV1S
+		T_v3d_list := strings.Split(Company_r.T_v3d, "|")
+		if len(T_v3d_list) != 2 {
+			c.TplName = "error.html"
+			return
+		}
+		c.Data["C_keys"] = T_key
+		c.TplName = T_v3d_list[0] + ".html"
+		return
+
+	}
+
+	c.TplName = "error.html"
+	return
+}
+
+// 列表 - 接口
+func (c *MainController) Company_Data() {
+	T_key := c.GetString("T_key")
+	Company_r, err := Account.Read_Company_T_key(T_key)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_key!"}
+		c.ServeJSON()
+		return
+	}
+
+	Company_map := lib.Company_Map[Company_r.Id]
+	Company_map.Company_name = Company_r.T_name
+	Company_map.Company_key = Company_r.T_key
+	Company_map.Company_plan = Company_r.T_plan
+	Company_map.Company_data = Company_r.T_data
+	Company_map.Company_v3d = Company_r.T_v3d
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Company_map}
+	c.ServeJSON()
+	return
+}
+
+//func (c *MainController) Company_Device_Sensor_List() {
+//
+//	T_key := c.GetString("T_key")
+//	Company_r,err := Account.Read_Company_T_key(T_key)
+//	if err != nil {
+//		c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_key!"}
+//		c.ServeJSON()
+//		return
+//	}
+//
+//	// 查询公司下面所有子公司id
+//	T_pids := Account.ReadCompanyIds_T_path(Company_r.T_path)
+//
+//	//Account.Read_Company_All_Maps()
+//	Sensor_List := Device.Read_CompanyDeviceSensor_List_For_Data(T_pids)
+//
+//	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Sensor_List}
+//	c.ServeJSON()
+//	return
+//
+//}
+
+// 列表 - 接口
+func (c *MainController) DeviceTask_List() {
+	//// 验证登录
+	//b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	//if !b_ {
+	//	c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
+	//	c.ServeJSON()
+	//	return
+	//}
+	T_sn := c.GetString("T_sn")
+	DeviceTask_list := Device.Read_DeviceTask_List(T_sn)
+	DeviceTask_r := []Device.DeviceTask_R{}
+	for _, v := range DeviceTask_list {
+		x := Device.DeviceTask_R{}
+		x.T_Ut_start = v.T_Ut_start.Format("2006-01-02 15:04:05")
+		x.T_Ut_end = v.T_Ut_end.Format("2006-01-02 15:04:05")
+		x.T_State = v.T_State
+		DeviceTask_r = append(DeviceTask_r, x)
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceTask_r}
+	c.ServeJSON()
+	return
+}
+
+// 列表 - 接口
+func (c *MainController) DeviceData_List() {
+
+	T_sn := c.GetString("T_sn")
+	//T_id, _ := c.GetInt("T_id")
+	T_id := 1
+	Time_start := c.GetString("Time_start")
+	Time_end := c.GetString("Time_end")
+	r_Device, err := Device.Read_Device_ByT_sn(T_sn)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_sn!"}
+		c.ServeJSON()
+		return
+	}
+	DeviceData_list := Device.Read_DeviceData_List(T_sn, T_id, Time_start, Time_end)
+	DeviceData_r := []Device.DeviceData_RR{}
+	for _, v := range DeviceData_list {
+		x := Device.DeviceData_RR{}
+		x.T_t = v.T_t
+		x.T_rh = v.T_rh
+		x.T_site = v.T_site
+		x.T_time = v.T_time.Format("2006-01-02 15:04:05")
+
+		x.T_ist = r_Device.T_ist
+		x.T_ist = r_Device.T_ist
+
+		if dsp, is := Device.Read_DeviceSensorParameter(T_sn, T_id); is {
+			x.T_name = dsp.T_name
+			x.T_Tlower = dsp.T_Tlower
+			x.T_Tupper = dsp.T_Tupper
+			x.T_RHlower = dsp.T_RHlower
+			x.T_RHupper = dsp.T_RHupper
+		}
+
+		DeviceData_r = append(DeviceData_r, x)
+
+	}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceData_r}
+	c.ServeJSON()
+	return
+}

File diff suppressed because it is too large
+ 0 - 0
data.json


+ 42 - 0
go.mod

@@ -0,0 +1,42 @@
+module Cold_Data
+
+go 1.19
+
+require github.com/beego/beego/v2 v2.0.1
+
+require (
+	github.com/astaxie/beego v1.12.3
+	github.com/go-sql-driver/mysql v1.5.0
+	github.com/nats-io/nats.go v1.30.0
+	github.com/satori/go.uuid v1.2.0
+	github.com/thinkeridea/go-extend v1.3.2
+	golang.org/x/text v0.13.0
+)
+
+require (
+	github.com/beorn7/perks v1.0.1 // indirect
+	github.com/cespare/xxhash/v2 v2.1.1 // indirect
+	github.com/golang/protobuf v1.4.2 // indirect
+	github.com/gomodule/redigo v2.0.0+incompatible // indirect
+	github.com/hashicorp/golang-lru v0.5.4 // indirect
+	github.com/klauspost/compress v1.17.0 // indirect
+	github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
+	github.com/mitchellh/mapstructure v1.3.3 // indirect
+	github.com/nats-io/nats-server/v2 v2.10.1 // indirect
+	github.com/nats-io/nkeys v0.4.5 // indirect
+	github.com/nats-io/nuid v1.0.1 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/prometheus/client_golang v1.7.0 // indirect
+	github.com/prometheus/client_model v0.2.0 // indirect
+	github.com/prometheus/common v0.10.0 // indirect
+	github.com/prometheus/procfs v0.1.3 // indirect
+	github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
+	github.com/stretchr/testify v1.6.1 // indirect
+	golang.org/x/crypto v0.13.0 // indirect
+	golang.org/x/mod v0.8.0 // indirect
+	golang.org/x/net v0.10.0 // indirect
+	golang.org/x/sys v0.12.0 // indirect
+	golang.org/x/tools v0.6.0 // indirect
+	google.golang.org/protobuf v1.23.0 // indirect
+	gopkg.in/yaml.v2 v2.2.8 // indirect
+)

+ 302 - 0
go.sum

@@ -0,0 +1,302 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
+github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
+github.com/astaxie/beego v1.12.3 h1:SAQkdD2ePye+v8Gn1r4X6IKZM1wd28EyUOVQ3PDSOOQ=
+github.com/astaxie/beego v1.12.3/go.mod h1:p3qIm0Ryx7zeBHLljmd7omloyca1s4yu1a8kM1FkpIA=
+github.com/beego/beego/v2 v2.0.1 h1:07a7Z0Ok5vbqyqh+q53sDPl9LdhKh0ZDy3gbyGrhFnE=
+github.com/beego/beego/v2 v2.0.1/go.mod h1:8zyHi1FnWO1mZLwTn62aKRIZF/aIKvkCBB2JYs+eqQI=
+github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ=
+github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
+github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
+github.com/coreos/etcd v3.3.25+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
+github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
+github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U=
+github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c=
+github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs=
+github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
+github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
+github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw=
+github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
+github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
+github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
+github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
+github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
+github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
+github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
+github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM=
+github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ=
+github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
+github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
+github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
+github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
+github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
+github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/nats-io/jwt/v2 v2.5.2 h1:DhGH+nKt+wIkDxM6qnVSKjokq5t59AZV5HRcFW0zJwU=
+github.com/nats-io/nats-server/v2 v2.10.1 h1:MIJ614dhOIdo71iSzY8ln78miXwrYvlvXHUyS+XdKZQ=
+github.com/nats-io/nats-server/v2 v2.10.1/go.mod h1:3PMvMSu2cuK0J9YInRLWdFpFsswKKGUS77zVSAudRto=
+github.com/nats-io/nats.go v1.30.0 h1:bj/rVsRCrFXxmm9mJiDhb74UKl2HhKpDwKRBtvCjZjc=
+github.com/nats-io/nats.go v1.30.0/go.mod h1:dcfhUgmQNN4GJEfIb2f9R7Fow+gzBF4emzDHrVBd5qM=
+github.com/nats-io/nkeys v0.4.5 h1:Zdz2BUlFm4fJlierwvGK+yl20IAKUm7eV6AAZXEhkPk=
+github.com/nats-io/nkeys v0.4.5/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
+github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
+github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
+github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
+github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U=
+github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
+github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
+github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
+github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
+github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
+github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo=
+github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
+github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
+github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s=
+github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
+github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
+github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
+github.com/thinkeridea/go-extend v1.3.2 h1:0ZImRXpJc+wBNIrNEMbTuKwIvJ6eFoeuNAewvzONrI0=
+github.com/thinkeridea/go-extend v1.3.2/go.mod h1:xqN1e3y1PdVSij1VZp6iPKlO8I4jLbS8CUuTySj981g=
+github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
+github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU=
+go.etcd.io/etcd v3.3.25+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
+golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=

+ 1 - 0
lastupdate.tmp

@@ -0,0 +1 @@
+{"E:\\WebstormProjects\\Cold_DataV\\controllers":1702619593777283400}

+ 61 - 0
lib/Aes.go

@@ -0,0 +1,61 @@
+package lib
+
+import (
+	"bytes"
+	"crypto/aes"
+	"crypto/cipher"
+	"encoding/base64"
+)
+
+func AesEncryptCBC(orig string, key string) string {
+	// 转成字节数组
+	origData := []byte(orig)
+	k := []byte(key)
+	// 分组秘钥
+	// NewCipher该函数限制了输入k的长度必须为16, 24或者32
+	block, _ := aes.NewCipher(k)
+	// 获取秘钥块的长度
+	blockSize := block.BlockSize()
+	// 补全码
+	origData = PKCS7Padding(origData, blockSize)
+	// 加密模式
+	blockMode := cipher.NewCBCEncrypter(block, k[:blockSize])
+	// 创建数组
+	cryted := make([]byte, len(origData))
+	// 加密
+	blockMode.CryptBlocks(cryted, origData)
+	return base64.StdEncoding.EncodeToString(cryted)
+}
+func AesDecryptCBC(cryted string, key string) string {
+	// 转成字节数组
+	crytedByte, _ := base64.StdEncoding.DecodeString(cryted)
+	k := []byte(key)
+	// 分组秘钥
+	block, _ := aes.NewCipher(k)
+	// 获取秘钥块的长度
+	blockSize := block.BlockSize()
+	// 加密模式
+	blockMode := cipher.NewCBCDecrypter(block, k[:blockSize])
+	// 创建数组
+	orig := make([]byte, len(crytedByte))
+	// 解密
+	blockMode.CryptBlocks(orig, crytedByte)
+	// 去补全码
+	orig = PKCS7UnPadding(orig)
+	return string(orig)
+}
+
+// 补码
+// AES加密数据块分组长度必须为128bit(byte[16]),密钥长度可以是128bit(byte[16])、192bit(byte[24])、256bit(byte[32])中的任意一个。
+func PKCS7Padding(ciphertext []byte, blocksize int) []byte {
+	padding := blocksize - len(ciphertext)%blocksize
+	padtext := bytes.Repeat([]byte{byte(padding)}, padding)
+	return append(ciphertext, padtext...)
+}
+
+// 去码
+func PKCS7UnPadding(origData []byte) []byte {
+	length := len(origData)
+	unpadding := int(origData[length-1])
+	return origData[:(length - unpadding)]
+}

+ 35 - 0
lib/MapToJosn.go

@@ -0,0 +1,35 @@
+package lib
+
+import (
+	"Cold_Data/models"
+	"encoding/json"
+	"io/ioutil"
+)
+
+// 将map序列化为JSON或其他格式:可以使用encoding/json包将map转换为JSON字符串,然后将该字符串写入文件或数据库。
+func SaveMapToFile(m map[int]*models.Company_Project, filename string) error {
+	// 将map序列化为JSON字符串
+	data, err := json.Marshal(m)
+	if err != nil {
+		return err
+	}
+	// 将JSON字符串写入文件
+	err = ioutil.WriteFile(filename, data, 0644)
+	return err
+}
+
+// 从文件或数据库中读取数据并反序列化为map:可以使用相同的encoding/json包将JSON字符串反序列化为map对象。
+func LoadMapFromFile(filename string) (map[int]*models.Company_Project, error) {
+	// 读取文件中的JSON字符串
+	data, err := ioutil.ReadFile(filename)
+	if err != nil {
+		return nil, err
+	}
+	// 反序列化JSON字符串为map对象
+	var m map[int]*models.Company_Project
+	err = json.Unmarshal(data, &m)
+	if err != nil {
+		return nil, err
+	}
+	return m, nil
+}

+ 58 - 0
lib/MinuteToDataTime.go

@@ -0,0 +1,58 @@
+package lib
+
+import (
+	"strconv"
+)
+
+/*
+时间常量
+*/
+const (
+	//定义每分钟的秒数
+	SecondsPerMinute = 60
+	//定义每小时的秒数
+	SecondsPerHour = SecondsPerMinute * 60
+	//定义每天的秒数
+	SecondsPerDay = SecondsPerHour * 24
+)
+
+/*
+时间转换函数
+*/
+func resolveTime(seconds int) (day int, hour int, minute int, second int) {
+	//秒
+	second = seconds % 60
+
+	//天
+	day = seconds / SecondsPerDay
+	seconds -= day * SecondsPerDay
+
+	//时
+	hour = seconds / SecondsPerHour
+	seconds -= hour * SecondsPerHour
+
+	//分
+	minute = seconds / SecondsPerMinute
+	seconds -= minute * SecondsPerHour
+
+	return
+}
+
+func MinuteToDataTime(t int) string {
+	str := ""
+	day, hour, minute, second := resolveTime(t)
+	if day > 0 {
+		str += strconv.Itoa(day) + "天 "
+	}
+	if hour > 0 {
+		str += strconv.Itoa(hour) + "小时 "
+	}
+	if minute > 0 {
+		str += strconv.Itoa(minute) + "分钟 "
+	}
+	if second > 0 {
+		str += strconv.Itoa(second) + "秒"
+	}
+
+	return str
+}

+ 435 - 0
lib/lib.go

@@ -0,0 +1,435 @@
+package lib
+
+import (
+	"Cold_Data/models"
+	"Cold_Data/models/Account"
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"github.com/nats-io/nats.go"
+	"github.com/thinkeridea/go-extend/exunicode/exutf8"
+	"golang.org/x/text/encoding/simplifiedchinese"
+	"golang.org/x/text/transform"
+	"io/ioutil"
+	"log"
+	"math/rand"
+	"runtime"
+	"sort"
+	"strconv"
+	"strings"
+	"time"
+	"unicode/utf8"
+)
+
+var Company_Map map[int]*models.Company_Project //m2, m3的创建方法是等价的
+var Nats *nats.Conn
+
+// 正在执行中任务
+var GO_Handle map[int]bool
+
+func init() {
+	GO_Handle = make(map[int]bool)
+}
+
+// 登录验证
+func Verification(GetCookie string, GetString string) (bool, Account.Company) {
+
+	// 自适应 参数
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
+	}
+	if len(User_tokey) == 0 {
+		return false, Account.Company{}
+	}
+	admin_r, err := Account.Read_Company_T_key(User_tokey)
+	if err != nil {
+		return false, Account.Company{}
+	}
+	log.Println("登录 Admin_name 为:", admin_r.T_name)
+	return true, admin_r
+}
+
+type JSONS struct {
+	//必须的大写开头
+	Code int16
+	Msg  string
+	Data interface{} // 泛型
+}
+
+// func_page 分页   [{3 1} {4 2} {4 3} {4 4} {4 5} {4 6} {4 7} {4 8} {4 9} {5 2}]-
+type Page_T struct {
+	A int
+	V int64
+}
+
+func Func_page(Page int64, Page_size int64) (page_t_list []Page_T) {
+	if Page > 1 {
+		page_t_list = append(page_t_list, Page_T{A: 1, V: Page - 1})
+	}
+	i := int64(0)
+	for aa := int64(1); aa < 5; aa++ {
+		if Page-aa <= 0 {
+			break
+		}
+		page_t_list = append(page_t_list, Page_T{A: 2, V: Page - aa})
+		i++
+	}
+	page_t_list = append(page_t_list, Page_T{A: 3, V: Page})
+
+	for aa := int64(1); aa < 10-i; aa++ {
+		if Page_size < Page+aa {
+			break
+		}
+		page_t_list = append(page_t_list, Page_T{A: 4, V: Page + aa})
+	}
+	sort.Slice(page_t_list, func(i, j int) bool {
+		if page_t_list[i].V < page_t_list[j].V {
+			return true
+		}
+		return false
+	})
+	sort.Slice(page_t_list, func(i, j int) bool {
+		if page_t_list[i].A < page_t_list[j].A {
+			return true
+		}
+		return false
+
+	})
+	if Page < Page_size {
+		page_t_list = append(page_t_list, Page_T{A: 5, V: Page + 1})
+	}
+
+	return page_t_list
+}
+
+func Strval(value interface{}) string {
+	var key string
+	if value == nil {
+		return key
+	}
+
+	switch value.(type) {
+	case float64:
+		ft := value.(float64)
+		key = strconv.FormatFloat(ft, 'f', -1, 64)
+	case float32:
+		ft := value.(float32)
+		key = strconv.FormatFloat(float64(ft), 'f', -1, 64)
+	case int:
+		it := value.(int)
+		key = strconv.Itoa(it)
+	case uint:
+		it := value.(uint)
+		key = strconv.Itoa(int(it))
+	case int8:
+		it := value.(int8)
+		key = strconv.Itoa(int(it))
+	case uint8:
+		it := value.(uint8)
+		key = strconv.Itoa(int(it))
+	case int16:
+		it := value.(int16)
+		key = strconv.Itoa(int(it))
+	case uint16:
+		it := value.(uint16)
+		key = strconv.Itoa(int(it))
+	case int32:
+		it := value.(int32)
+		key = strconv.Itoa(int(it))
+	case uint32:
+		it := value.(uint32)
+		key = strconv.Itoa(int(it))
+	case int64:
+		it := value.(int64)
+		key = strconv.FormatInt(it, 10)
+	case uint64:
+		it := value.(uint64)
+		key = strconv.FormatUint(it, 10)
+	case string:
+		key = value.(string)
+	case []byte:
+		key = string(value.([]byte))
+	default:
+		newValue, _ := json.Marshal(value)
+		key = string(newValue)
+	}
+
+	return key
+}
+
+func To_int(value interface{}) int {
+	var key int
+	if value == nil {
+		return key
+	}
+	switch value.(type) {
+	case float64:
+		key = int(value.(float64))
+	case float32:
+		key = int(value.(float32))
+	case int:
+		key = int(value.(int))
+	case uint:
+		key = int(value.(uint))
+	case int8:
+		key = int(value.(int8))
+	case uint8:
+		key = int(value.(uint8))
+	case int16:
+		key = int(value.(int16))
+	case uint16:
+		key = int(value.(uint16))
+	case int32:
+		key = int(value.(int32))
+	case uint32:
+		key = int(value.(uint32))
+	case int64:
+		key = int(value.(int64))
+	case uint64:
+		key = int(value.(uint64))
+	case string:
+		key, _ = strconv.Atoi(value.(string))
+	case []byte:
+		key, _ = strconv.Atoi(string(value.([]byte)))
+	default:
+		newValue, _ := json.Marshal(value)
+		key, _ = strconv.Atoi(string(newValue))
+	}
+	return key
+}
+func To_int64(value interface{}) int64 {
+	var key int64
+	if value == nil {
+		return key
+	}
+	switch value.(type) {
+	case float64:
+		key = int64(value.(float64))
+	case float32:
+		key = int64(value.(float32))
+	case int:
+		key = int64(value.(int))
+	case uint:
+		key = int64(value.(uint))
+	case int8:
+		key = int64(value.(int8))
+	case uint8:
+		key = int64(value.(uint8))
+	case int16:
+		key = int64(value.(int16))
+	case uint16:
+		key = int64(value.(uint16))
+	case int32:
+		key = int64(value.(int32))
+	case uint32:
+		key = int64(value.(uint32))
+	case int64:
+		key = int64(value.(int64))
+	case uint64:
+		key = int64(value.(uint64))
+	case string:
+		key, _ = strconv.ParseInt(value.(string), 10, 64)
+	case []byte:
+		key, _ = strconv.ParseInt(string(value.([]byte)), 10, 64)
+	default:
+		newValue, _ := json.Marshal(value)
+		key, _ = strconv.ParseInt(string(newValue), 10, 64)
+	}
+	return key
+}
+
+func To_float32(value interface{}) float32 {
+	var key float32
+	if value == nil {
+		return key
+	}
+
+	switch value.(type) {
+	case float64:
+		key = float32(value.(float64))
+	case float32:
+		key = float32(value.(float32))
+	case int:
+		key = float32(value.(int))
+	case uint:
+		key = float32(value.(uint))
+	case int8:
+		key = float32(value.(int8))
+	case uint8:
+		key = float32(value.(uint8))
+	case int16:
+		key = float32(value.(int16))
+	case uint16:
+		key = float32(value.(uint16))
+	case int32:
+		key = float32(value.(int32))
+	case uint32:
+		key = float32(value.(uint32))
+	case int64:
+		key = float32(value.(int64))
+	case uint64:
+		key = float32(value.(uint64))
+	case string:
+		key_float64, _ := strconv.ParseFloat(value.(string), 32/64)
+		key = float32(key_float64)
+	case []byte:
+		key_float64, _ := strconv.ParseFloat(string(value.([]byte)), 32/64)
+		key = float32(key_float64)
+	default:
+		newValue, _ := json.Marshal(value)
+		key_float64, _ := strconv.ParseFloat(string(newValue), 32/64)
+		key = float32(key_float64)
+	}
+
+	key_float64, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", key), 32/64)
+	key = float32(key_float64)
+
+	return key
+}
+
+func To_string(value interface{}) string {
+	var key string
+	if value == nil {
+		return key
+	}
+
+	switch value.(type) {
+	case float64:
+		ft := value.(float64)
+		key = strconv.FormatFloat(ft, 'f', -1, 64)
+	case float32:
+		ft := value.(float32)
+		key = strconv.FormatFloat(float64(ft), 'f', -1, 64)
+	case int:
+		it := value.(int)
+		key = strconv.Itoa(it)
+	case uint:
+		it := value.(uint)
+		key = strconv.Itoa(int(it))
+	case int8:
+		it := value.(int8)
+		key = strconv.Itoa(int(it))
+	case uint8:
+		it := value.(uint8)
+		key = strconv.Itoa(int(it))
+	case int16:
+		it := value.(int16)
+		key = strconv.Itoa(int(it))
+	case uint16:
+		it := value.(uint16)
+		key = strconv.Itoa(int(it))
+	case int32:
+		it := value.(int32)
+		key = strconv.Itoa(int(it))
+	case uint32:
+		it := value.(uint32)
+		key = strconv.Itoa(int(it))
+	case int64:
+		it := value.(int64)
+		key = strconv.FormatInt(it, 10)
+	case uint64:
+		it := value.(uint64)
+		key = strconv.FormatUint(it, 10)
+	case string:
+		key = value.(string)
+	case []byte:
+		key = string(value.([]byte))
+	default:
+		newValue, _ := json.Marshal(value)
+		key = string(newValue)
+	}
+	return key
+}
+
+func Random(min, max int) int {
+	rand.Seed(time.Now().Unix()) //Seed生成的随机数
+	return rand.Intn(max-min) + min
+}
+
+// 取文本(字符串)中间
+func GetBetweenStr(str, start, end string) string {
+	n := strings.Index(str, start)
+	if n == -1 {
+		n = 0
+	} else {
+		n = n + len(start) // 增加了else,不加的会把start带上
+	}
+	str = string([]byte(str)[n:])
+	m := strings.Index(str, end)
+	if m == -1 {
+		m = len(str)
+	}
+	str = string([]byte(str)[:m])
+	return str
+}
+
+// getYearMonthToDay 查询指定年份指定月份有多少天
+// @params year int 指定年份
+// @params month int 指定月份
+func GetYearMonthToDay(year int, month int) int {
+	// 有31天的月份
+	day31 := map[int]bool{
+		1:  true,
+		3:  true,
+		5:  true,
+		7:  true,
+		8:  true,
+		10: true,
+		12: true,
+	}
+	if day31[month] == true {
+		return 31
+	}
+	// 有30天的月份
+	day30 := map[int]bool{
+		4:  true,
+		6:  true,
+		9:  true,
+		11: true,
+	}
+	if day30[month] == true {
+		return 30
+	}
+	// 计算是平年还是闰年
+	if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
+		// 得出2月的天数
+		return 29
+	}
+	// 得出2月的天数
+	return 28
+}
+
+func Decimal(value float64) float64 {
+	value, _ = strconv.ParseFloat(fmt.Sprintf("%.1f", value), 64)
+	return value
+}
+
+func Strconv_Atoi(string string) int {
+	int, _ := strconv.Atoi(string)
+	return int
+}
+
+// 获取正在运行的函数名
+func FuncName() string {
+	pc := make([]uintptr, 1)
+	runtime.Callers(2, pc)
+	f := runtime.FuncForPC(pc[0])
+	return f.Name()
+}
+
+func Limit_len(str string, lenx int) string {
+	if utf8.RuneCountInString(str) > lenx {
+		return exutf8.RuneSubString(str, 0, lenx-3) + "..."
+	}
+	return exutf8.RuneSubString(str, 0, lenx)
+}
+
+func Utf8ToGbk(s []byte) ([]byte, error) {
+	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewEncoder())
+	d, e := ioutil.ReadAll(reader)
+	if e != nil {
+		return nil, e
+	}
+	return d, nil
+}

+ 9 - 0
lib/map.go

@@ -0,0 +1,9 @@
+package lib
+
+var place_A []string
+var place_B []string
+
+func init() {
+	place_B = []string{"北京", "天津", "河北", "山西", "内蒙古", "辽宁", "吉林", "黑龙江", "上海", "江苏", "浙江", "安徽", "福建", "江西", "山东", "河南", "湖北", "湖南", "广东", "广西", "海南", "重庆", "四川", "贵州", "云南", "西藏", "陕西", "甘肃", "青海", "宁夏", "新疆", "台湾", "香港", "澳门"}
+
+}

+ 992 - 0
logs/Data/logx.log

@@ -0,0 +1,992 @@
+2023/10/19 17:40:52.191 [I]  临沂好德生物科技有限公司 耗时:916.7332ms
+2023/10/19 17:40:53.179 [I]  深圳市睿盛医疗器械有限公司 耗时:988.0259ms
+2023/10/19 17:40:54.081 [I]  上药贵州测试 耗时:901.6288ms
+2023/10/19 17:40:54.991 [I]  湖南万棵医疗器械有限公司 耗时:910.2291ms
+2023/10/19 17:40:56.375 [I]  贵阳地矿分店 耗时:1.1159153s
+2023/10/19 17:40:57.542 [I]  贵阳中山东路店 耗时:1.0989315s
+2023/10/19 17:40:58.668 [I]  安顺体育路三分店 耗时:1.0604519s
+2023/10/19 17:40:59.663 [I]  毕节一树18分店 耗时:928.4578ms
+2023/10/19 17:41:01.019 [I]  遵义一树662分店 耗时:1.2905484s
+2023/10/19 17:41:02.280 [I]  遵义一树286分店 耗时:1.261366s
+2023/10/19 17:41:03.529 [I]  遵义一树新蒲603店 耗时:1.2481043s
+2023/10/19 17:41:04.459 [I]  遵义一树正大37店 耗时:930.2023ms
+2023/10/19 17:41:05.470 [I]  黔南湘君斗篷山路店 耗时:944.1077ms
+2023/10/19 17:41:06.417 [I]  黔南平塘571店 耗时:947.3453ms
+2023/10/19 17:41:07.438 [I]  黔南都匀东京街262分店 耗时:1.020537s
+2023/10/19 17:41:08.372 [I]  毕节一树药业有限公司十一分店 耗时:934.5443ms
+2023/10/19 17:41:14.315 [I]  七星关区湘邵九芝堂药店 耗时:5.8772433s
+2023/10/19 17:41:15.233 [I]  上饶上药益药药房有限公司 耗时:917.2177ms
+2023/10/19 17:41:16.316 [I]  一树第一百分店 耗时:1.0829181s
+2023/10/19 17:41:17.307 [I]  上药控股贵州有限公司 耗时:991.4684ms
+2023/10/19 17:41:18.394 [I]  一树吉大夫五分店 耗时:1.0216361s
+2023/10/19 17:41:19.912 [I]  一树凯里韶山南路分店 耗时:1.5179419s
+2023/10/19 17:41:21.511 [I]  一树凯里经济开发区开元大道分店 耗时:1.598168s
+2023/10/19 17:41:22.598 [I]  一树兴义市市医院分店 耗时:1.0212611s
+2023/10/19 17:41:23.636 [I]  一树兴义市州医院分店 耗时:1.0380485s
+2023/10/19 17:41:24.810 [I]  七星关区康源大药房爱民广场店 耗时:1.1738027s
+2023/10/19 17:41:25.737 [I]  贵州安思药业有限公司1 耗时:926.5018ms
+2023/10/19 17:41:26.882 [I]  上药控股遵义有限公司 耗时:1.145025s
+2023/10/19 17:41:28.020 [I]  国药控股遵义医疗供应链服务有限公司 耗时:1.0697708s
+2023/10/19 17:41:29.110 [I]  贵州博胜医药仓储物流有限公司 耗时:1.0900614s
+2023/10/19 17:41:31.807 [I]  贵州薏品康医药投资有限公司 耗时:2.6317942s
+2023/10/19 17:41:35.585 [I]  国药控股黔南州有限公司 耗时:3.7781417s
+2023/10/20 10:27:30.651 [I]  [临沂好德生物科技有限公司] 耗时:899.6239ms
+2023/10/20 10:27:31.617 [I]  [深圳市睿盛医疗器械有限公司] 耗时:966.5938ms
+2023/10/20 10:27:32.524 [I]  [上药贵州测试] 耗时:906.6345ms
+2023/10/20 10:27:33.417 [I]  [湖南万棵医疗器械有限公司] 耗时:893.3434ms
+2023/10/20 10:27:34.768 [I]  [贵阳地矿分店] 耗时:1.0830304s
+2023/10/20 10:27:35.920 [I]  [贵阳中山东路店] 耗时:1.0868457s
+2023/10/20 10:27:37.015 [I]  [安顺体育路三分店] 耗时:1.0272437s
+2023/10/20 10:27:37.988 [I]  [毕节一树18分店] 耗时:901.6009ms
+2023/10/20 10:27:39.753 [I]  [遵义一树662分店] 耗时:1.7011958s
+2023/10/20 10:27:41.138 [I]  [遵义一树286分店] 耗时:1.3845469s
+2023/10/20 10:27:42.514 [I]  [遵义一树新蒲603店] 耗时:1.3764352s
+2023/10/20 10:27:43.458 [I]  [遵义一树正大37店] 耗时:943.5081ms
+2023/10/20 10:27:44.488 [I]  [黔南湘君斗篷山路店] 耗时:967.039ms
+2023/10/20 10:27:45.518 [I]  [黔南平塘571店] 耗时:1.0297854s
+2023/10/20 10:27:46.567 [I]  [黔南都匀东京街262分店] 耗时:1.0494225s
+2023/10/20 10:27:47.473 [I]  [毕节一树药业有限公司十一分店] 耗时:906.0778ms
+2023/10/20 10:27:54.560 [I]  [七星关区湘邵九芝堂药店] 耗时:7.0169474s
+2023/10/20 10:27:55.672 [I]  [上饶上药益药药房有限公司] 耗时:1.1122876s
+2023/10/20 10:27:56.758 [I]  [一树第一百分店] 耗时:1.0855469s
+2023/10/20 10:27:57.795 [I]  [上药控股贵州有限公司] 耗时:1.0373895s
+2023/10/20 10:27:59.010 [I]  [一树吉大夫五分店] 耗时:1.1407616s
+2023/10/20 10:28:00.648 [I]  [一树凯里韶山南路分店] 耗时:1.6382093s
+2023/10/20 10:28:02.458 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.81064s
+2023/10/20 10:28:03.618 [I]  [一树兴义市市医院分店] 耗时:1.0913876s
+2023/10/20 10:28:04.792 [I]  [一树兴义市州医院分店] 耗时:1.1740491s
+2023/10/20 10:28:06.102 [I]  [七星关区康源大药房爱民广场店] 耗时:1.3098067s
+2023/10/20 10:28:06.992 [I]  [贵州安思药业有限公司1] 耗时:890.3435ms
+2023/10/20 10:28:08.141 [I]  [上药控股遵义有限公司] 耗时:1.1493358s
+2023/10/20 10:28:09.364 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.1581964s
+2023/10/20 10:28:10.472 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.1083525s
+2023/10/20 10:28:13.648 [I]  [贵州薏品康医药投资有限公司] 耗时:3.112577s
+2023/10/20 10:28:17.850 [I]  [国药控股黔南州有限公司] 耗时:4.2021778s
+2023/10/20 10:28:38.989 [I]  [国药控股毕节医投有限公司] 耗时:21.1385496s
+2023/10/20 10:28:39.914 [I]  [大连成大文熙肿瘤医院] 耗时:924.8102ms
+2023/10/20 10:28:40.963 [I]  [贵州茂坤供应链管理有限公司] 耗时:1.0495217s
+2023/10/20 10:28:42.603 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.6396397s
+2023/10/20 10:28:44.836 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.2328988s
+2023/10/20 10:28:45.849 [I]  [一树吉大夫38分店] 耗时:1.012714s
+2023/10/20 10:28:47.152 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.3030751s
+2023/10/20 10:28:48.641 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.4887296s
+2023/10/20 10:28:49.676 [I]  [北京中准生物科技有限公司] 耗时:1.0339569s
+2023/10/20 10:28:50.759 [I]  [一树铜仁民生川硐分店] 耗时:1.0071571s
+2023/10/20 10:28:51.862 [I]  [仁怀市一树药业融亿店] 耗时:1.1035163s
+2023/10/20 10:28:52.820 [I]  [遵义一树道真芙蓉江路店] 耗时:957.5826ms
+2023/10/20 10:28:54.084 [I]  [贵州广奕医药有限公司] 耗时:1.2634311s
+2023/10/20 10:28:55.422 [I]  [贵州安思药业有限公司] 耗时:1.3381945s
+2023/10/20 10:28:56.408 [I]  [广西乐驰商贸有限公司] 耗时:985.7624ms
+2023/10/20 10:28:57.362 [I]  [一树吉大夫62分店] 耗时:952.9148ms
+2023/10/20 10:28:58.303 [I]  [贵州省惠水县疾病预防控制中心] 耗时:940.7266ms
+2023/10/20 10:28:59.295 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:924.7006ms
+2023/10/20 10:29:00.252 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:957.2915ms
+2023/10/20 10:29:01.186 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:933.3324ms
+2023/10/20 10:29:02.264 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:1.077926s
+2023/10/20 10:29:03.239 [I]  [贵州侗润堂药业连锁有限公司] 耗时:975.5277ms
+2023/10/20 10:29:04.448 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.2083978s
+2023/10/20 10:29:05.652 [I]  [贵州俊勇康药业有限公司] 耗时:1.2046597s
+2023/10/20 10:29:07.082 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:1.4295557s
+2023/10/20 10:29:08.258 [I]  [贵州俊达康药业有限公司] 耗时:1.1762048s
+2023/10/20 10:29:09.293 [I]  [一树吉大夫二十六分店] 耗时:969.7482ms
+2023/10/20 10:29:10.324 [I]  [一树吉大夫三分店] 耗时:1.0305208s
+2023/10/20 10:29:11.390 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:1.0030737s
+2023/10/20 10:29:29.084 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m0.8026993s
+2023/10/20 10:37:38.942 [I]  [贵阳地矿分店] 耗时:1.0972012s
+2023/10/20 10:39:04.463 [I]  [贵阳中山东路店] 耗时:1.1261862s
+2023/10/20 10:39:17.070 [I]  [贵州薏品康医药投资有限公司] 耗时:3.0160964s
+2023/10/20 10:40:29.142 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:59.8021765s
+2023/10/20 10:41:57.237 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.1818402s
+2023/10/20 10:48:55.665 [I]  [国药控股黔南州有限公司] 耗时:16.2315417s
+2023/10/20 10:50:21.838 [I]  [贵阳中山东路店] 耗时:13.9759195s
+2023/10/20 10:50:42.250 [I]  [贵州薏品康医药投资有限公司] 耗时:16.0385575s
+2023/10/20 10:51:41.707 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:59.2832678s
+2023/10/20 10:53:58.270 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9823655s
+2023/10/20 10:55:41.913 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:899.0679ms
+2023/10/20 11:00:12.388 [I]  [一树吉大夫二十六分店] 耗时:871.1187ms
+2023/10/20 11:01:05.560 [I]  [贵阳中山东路店] 耗时:1.1106453s
+2023/10/20 11:01:17.874 [I]  [贵州薏品康医药投资有限公司] 耗时:3.10403s
+2023/10/20 11:02:44.522 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m1.1943965s
+2023/10/20 11:03:53.161 [I]  [一树吉大夫三分店] 耗时:984.5338ms
+2023/10/20 11:06:00.449 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:4.6202683s
+2023/10/20 11:11:58.546 [I]  [国药控股黔南州有限公司] 耗时:16.4803704s
+2023/10/20 11:12:01.436 [I]  [贵州薏品康医药投资有限公司] 耗时:2.8039226s
+2023/10/20 11:12:02.965 [I]  [七星关区康源大药房爱民广场店] 耗时:1.2102371s
+2023/10/20 11:14:00.751 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.7066442s
+2023/10/20 11:14:01.969 [I]  [贵阳中山东路店] 耗时:1.1341426s
+2023/10/20 11:18:11.584 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0986516s
+2023/10/20 11:22:06.850 [I]  [贵州薏品康医药投资有限公司] 耗时:2.70375s
+2023/10/20 11:22:21.594 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.0737002s
+2023/10/20 11:25:11.394 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.943379s
+2023/10/20 11:25:16.361 [I]  [贵阳中山东路店] 耗时:1.3209029s
+2023/10/20 11:30:12.449 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0932913s
+2023/10/20 11:33:18.328 [I]  [贵州薏品康医药投资有限公司] 耗时:2.7734648s
+2023/10/20 11:36:23.068 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m1.6864851s
+2023/10/20 11:36:27.910 [I]  [国药控股黔南州有限公司] 耗时:3.6599116s
+2023/10/20 11:37:05.469 [I]  [贵阳中山东路店] 耗时:1.186329s
+2023/10/20 11:42:13.209 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9908286s
+2023/10/20 11:43:47.903 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6895685s
+2023/10/20 11:47:25.970 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m2.4846987s
+2023/10/20 11:47:28.914 [I]  [贵阳中山东路店] 耗时:1.0703306s
+2023/10/20 11:52:44.183 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0151046s
+2023/10/20 11:52:46.559 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.0646463s
+2023/10/20 11:54:07.848 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6275916s
+2023/10/20 11:58:34.447 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m6.1939918s
+2023/10/20 11:58:38.852 [I]  [国药控股黔南州有限公司] 耗时:3.6793672s
+2023/10/20 11:59:04.188 [I]  [贵阳中山东路店] 耗时:1.0733385s
+2023/10/20 12:04:04.765 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9539168s
+2023/10/20 12:05:19.536 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6173033s
+2023/10/20 12:09:46.833 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.943793s
+2023/10/20 12:09:48.223 [I]  [贵阳中山东路店] 耗时:1.0702663s
+2023/10/20 12:15:49.427 [I]  [贵州薏品康医药投资有限公司] 耗时:2.7106077s
+2023/10/20 12:17:42.553 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.972579s
+2023/10/20 12:21:13.735 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.2033396s
+2023/10/20 12:21:20.391 [I]  [国药控股黔南州有限公司] 耗时:3.605278s
+2023/10/20 12:21:21.626 [I]  [贵阳中山东路店] 耗时:1.0710479s
+2023/10/20 12:23:16.094 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1689671s
+2023/10/20 12:26:09.166 [I]  [贵州薏品康医药投资有限公司] 耗时:2.633212s
+2023/10/20 12:29:15.131 [I]  [临沂好德生物科技有限公司] 耗时:890.3761ms
+2023/10/20 12:29:16.079 [I]  [深圳市睿盛医疗器械有限公司] 耗时:947.6674ms
+2023/10/20 12:29:16.965 [I]  [上药贵州测试] 耗时:885.9567ms
+2023/10/20 12:29:17.844 [I]  [湖南万棵医疗器械有限公司] 耗时:879.582ms
+2023/10/20 12:29:18.920 [I]  [贵阳地矿分店] 耗时:1.0759568s
+2023/10/20 12:29:19.966 [I]  [安顺体育路三分店] 耗时:1.0461969s
+2023/10/20 12:29:20.883 [I]  [毕节一树18分店] 耗时:916.6131ms
+2023/10/20 12:29:22.166 [I]  [遵义一树662分店] 耗时:1.2827536s
+2023/10/20 12:29:23.400 [I]  [遵义一树286分店] 耗时:1.2347661s
+2023/10/20 12:29:24.651 [I]  [遵义一树新蒲603店] 耗时:1.2506407s
+2023/10/20 12:29:25.565 [I]  [遵义一树正大37店] 耗时:914.055ms
+2023/10/20 12:29:26.482 [I]  [黔南湘君斗篷山路店] 耗时:916.7721ms
+2023/10/20 12:29:27.402 [I]  [黔南平塘571店] 耗时:920.4493ms
+2023/10/20 12:29:28.390 [I]  [黔南都匀东京街262分店] 耗时:987.318ms
+2023/10/20 12:29:29.295 [I]  [毕节一树药业有限公司十一分店] 耗时:905.1856ms
+2023/10/20 12:29:35.118 [I]  [七星关区湘邵九芝堂药店] 耗时:5.8228688s
+2023/10/20 12:29:36.036 [I]  [上饶上药益药药房有限公司] 耗时:918.5278ms
+2023/10/20 12:29:37.121 [I]  [一树第一百分店] 耗时:1.0846338s
+2023/10/20 12:29:38.085 [I]  [上药控股贵州有限公司] 耗时:963.938ms
+2023/10/20 12:29:39.077 [I]  [一树吉大夫五分店] 耗时:992.3371ms
+2023/10/20 12:29:40.530 [I]  [一树凯里韶山南路分店] 耗时:1.4522088s
+2023/10/20 12:29:42.124 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.5944894s
+2023/10/20 12:29:43.131 [I]  [一树兴义市市医院分店] 耗时:1.006631s
+2023/10/20 12:29:43.994 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9869716s
+2023/10/20 12:29:44.128 [I]  [一树兴义市州医院分店] 耗时:997.1221ms
+2023/10/20 12:29:45.054 [I]  [贵州安思药业有限公司1] 耗时:926.033ms
+2023/10/20 12:29:46.192 [I]  [上药控股遵义有限公司] 耗时:1.1381533s
+2023/10/20 12:29:47.253 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.0611194s
+2023/10/20 12:29:48.369 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.1155159s
+2023/10/20 12:30:04.370 [I]  [国药控股毕节医投有限公司] 耗时:16.0006483s
+2023/10/20 12:30:05.247 [I]  [大连成大文熙肿瘤医院] 耗时:877.8315ms
+2023/10/20 12:30:06.144 [I]  [贵州茂坤供应链管理有限公司] 耗时:896.6704ms
+2023/10/20 12:30:07.600 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.4558383s
+2023/10/20 12:30:08.559 [I]  [一树吉大夫38分店] 耗时:958.5864ms
+2023/10/20 12:30:09.787 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.2280942s
+2023/10/20 12:30:11.138 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.35086s
+2023/10/20 12:30:12.035 [I]  [北京中准生物科技有限公司] 耗时:897.4968ms
+2023/10/20 12:30:12.971 [I]  [一树铜仁民生川硐分店] 耗时:935.582ms
+2023/10/20 12:30:13.972 [I]  [仁怀市一树药业融亿店] 耗时:1.0015985s
+2023/10/20 12:30:14.956 [I]  [遵义一树道真芙蓉江路店] 耗时:983.3928ms
+2023/10/20 12:30:16.107 [I]  [贵州广奕医药有限公司] 耗时:1.1516715s
+2023/10/20 12:30:17.348 [I]  [贵州安思药业有限公司] 耗时:1.2409613s
+2023/10/20 12:30:18.234 [I]  [广西乐驰商贸有限公司] 耗时:885.8227ms
+2023/10/20 12:30:19.116 [I]  [一树吉大夫62分店] 耗时:881.8138ms
+2023/10/20 12:30:20.005 [I]  [贵州省惠水县疾病预防控制中心] 耗时:888.5467ms
+2023/10/20 12:30:20.896 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:890.8734ms
+2023/10/20 12:30:21.895 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:999.4256ms
+2023/10/20 12:30:22.784 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:888.686ms
+2023/10/20 12:30:23.688 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:904.2422ms
+2023/10/20 12:30:24.598 [I]  [贵州侗润堂药业连锁有限公司] 耗时:910.1364ms
+2023/10/20 12:30:25.722 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.1234165s
+2023/10/20 12:30:26.828 [I]  [贵州俊勇康药业有限公司] 耗时:1.1067292s
+2023/10/20 12:30:27.757 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:929.2236ms
+2023/10/20 12:30:28.721 [I]  [贵州俊达康药业有限公司] 耗时:963.8455ms
+2023/10/20 12:30:29.620 [I]  [一树吉大夫二十六分店] 耗时:898.5405ms
+2023/10/20 12:30:30.535 [I]  [一树吉大夫三分店] 耗时:915.2373ms
+2023/10/20 12:30:31.438 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:903.0919ms
+2023/10/20 12:32:20.437 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.0961285s
+2023/10/20 12:33:05.716 [I]  [贵阳中山东路店] 耗时:1.1522767s
+2023/10/20 12:37:20.201 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6733882s
+2023/10/20 12:40:38.661 [I]  [贵阳地矿分店] 耗时:1.1112696s
+2023/10/20 12:40:44.548 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:946.7688ms
+2023/10/20 12:41:28.838 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9930533s
+2023/10/20 12:43:25.688 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m5.1634955s
+2023/10/20 12:43:29.311 [I]  [贵阳中山东路店] 耗时:1.1533594s
+2023/10/20 12:43:54.242 [I]  [一树兴义市市医院分店] 耗时:1.0136138s
+2023/10/20 12:45:57.823 [I]  [国药控股黔南州有限公司] 耗时:4.1668957s
+2023/10/20 12:47:51.215 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6478006s
+2023/10/20 12:52:00.250 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0200387s
+2023/10/20 12:54:33.043 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m6.9267976s
+2023/10/20 12:54:35.160 [I]  [一树兴义市市医院分店] 耗时:1.050862s
+2023/10/20 12:55:04.383 [I]  [贵阳中山东路店] 耗时:1.1392977s
+2023/10/20 12:57:53.911 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6696915s
+2023/10/20 13:03:09.037 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0418s
+2023/10/20 13:05:49.957 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m4.8635856s
+2023/10/20 13:05:51.288 [I]  [贵阳中山东路店] 耗时:1.16533s
+2023/10/20 13:06:03.039 [I]  [一树兴义市市医院分店] 耗时:1.0230445s
+2023/10/20 13:08:02.554 [I]  [贵州薏品康医药投资有限公司] 耗时:2.648495s
+2023/10/20 13:09:58.327 [I]  [国药控股黔南州有限公司] 耗时:4.0363909s
+2023/10/20 13:17:00.857 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m3.8566614s
+2023/10/20 13:17:05.742 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0359627s
+2023/10/20 13:17:07.188 [I]  [贵阳中山东路店] 耗时:1.1192398s
+2023/10/20 13:18:03.610 [I]  [一树兴义市市医院分店] 耗时:1.0150176s
+2023/10/20 13:19:21.322 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6805937s
+2023/10/20 13:28:10.254 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m2.4910922s
+2023/10/20 13:28:13.369 [I]  [一树兴义市市医院分店] 耗时:1.0122345s
+2023/10/20 13:28:28.191 [I]  [一树吉大夫三分店] 耗时:900.6012ms
+2023/10/20 13:28:43.150 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9824829s
+2023/10/20 13:29:03.866 [I]  [贵阳中山东路店] 耗时:1.1117204s
+2023/10/20 13:29:52.359 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6755156s
+2023/10/20 13:33:59.360 [I]  [国药控股黔南州有限公司] 耗时:4.1693981s
+2023/10/20 13:34:46.053 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1570823s
+2023/10/20 13:35:07.707 [I]  [贵阳地矿分店] 耗时:1.1126292s
+2023/10/20 13:39:25.678 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m6.7492962s
+2023/10/20 13:39:29.497 [I]  [贵阳中山东路店] 耗时:1.1118854s
+2023/10/20 13:39:56.373 [I]  [一树兴义市市医院分店] 耗时:1.0161714s
+2023/10/20 13:40:03.940 [I]  [贵州薏品康医药投资有限公司] 耗时:2.7035315s
+2023/10/20 13:40:20.403 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0339501s
+2023/10/20 13:49:14.566 [I]  [一树铜仁民生川硐分店] 耗时:938.6654ms
+2023/10/20 13:50:35.903 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m7.6724679s
+2023/10/20 13:50:39.139 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6641631s
+2023/10/20 13:50:40.309 [I]  [一树兴义市市医院分店] 耗时:1.0068647s
+2023/10/20 13:50:42.693 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9779208s
+2023/10/20 13:51:04.420 [I]  [贵阳中山东路店] 耗时:1.0936146s
+2023/10/20 13:56:54.941 [I]  [国药控股黔南州有限公司] 耗时:4.0587509s
+2023/10/20 14:01:52.601 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m5.3392468s
+2023/10/20 14:01:53.939 [I]  [贵阳中山东路店] 耗时:1.1110985s
+2023/10/20 14:01:56.914 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6681202s
+2023/10/20 14:02:00.577 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9816788s
+2023/10/20 14:02:05.130 [I]  [一树兴义市市医院分店] 耗时:998.8511ms
+2023/10/20 14:13:10.106 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m10.5451204s
+2023/10/20 14:13:12.924 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6550287s
+2023/10/20 14:13:16.777 [I]  [贵阳中山东路店] 耗时:1.0930494s
+2023/10/20 14:14:05.552 [I]  [一树兴义市市医院分店] 耗时:1.0029554s
+2023/10/20 14:15:24.479 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0766518s
+2023/10/20 14:20:39.847 [I]  [国药控股黔南州有限公司] 耗时:4.0477597s
+2023/10/20 14:24:21.575 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.6423048s
+2023/10/20 14:24:25.035 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6387257s
+2023/10/20 14:24:27.329 [I]  [一树兴义市市医院分店] 耗时:1.0184374s
+2023/10/20 14:25:03.974 [I]  [贵阳中山东路店] 耗时:1.0968754s
+2023/10/20 14:27:25.120 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.1030782s
+2023/10/20 14:30:35.188 [I]  [临沂好德生物科技有限公司] 耗时:896.0505ms
+2023/10/20 14:30:36.176 [I]  [深圳市睿盛医疗器械有限公司] 耗时:987.865ms
+2023/10/20 14:30:37.079 [I]  [上药贵州测试] 耗时:902.8346ms
+2023/10/20 14:30:37.975 [I]  [湖南万棵医疗器械有限公司] 耗时:896.3438ms
+2023/10/20 14:30:39.148 [I]  [贵阳地矿分店] 耗时:1.1729201s
+2023/10/20 14:30:40.258 [I]  [安顺体育路三分店] 耗时:1.1098567s
+2023/10/20 14:30:41.209 [I]  [毕节一树18分店] 耗时:950.9734ms
+2023/10/20 14:30:42.506 [I]  [遵义一树662分店] 耗时:1.296303s
+2023/10/20 14:30:43.716 [I]  [遵义一树286分店] 耗时:1.2100696s
+2023/10/20 14:30:44.989 [I]  [遵义一树新蒲603店] 耗时:1.2732228s
+2023/10/20 14:30:45.901 [I]  [遵义一树正大37店] 耗时:912.4599ms
+2023/10/20 14:30:46.832 [I]  [黔南湘君斗篷山路店] 耗时:930.86ms
+2023/10/20 14:30:47.804 [I]  [黔南平塘571店] 耗时:971.8035ms
+2023/10/20 14:30:48.828 [I]  [黔南都匀东京街262分店] 耗时:1.0239167s
+2023/10/20 14:30:49.753 [I]  [毕节一树药业有限公司十一分店] 耗时:925.3269ms
+2023/10/20 14:30:55.533 [I]  [七星关区湘邵九芝堂药店] 耗时:5.7800922s
+2023/10/20 14:30:56.442 [I]  [上饶上药益药药房有限公司] 耗时:908.2938ms
+2023/10/20 14:30:57.506 [I]  [一树第一百分店] 耗时:1.0644052s
+2023/10/20 14:30:58.488 [I]  [上药控股贵州有限公司] 耗时:981.4427ms
+2023/10/20 14:30:59.499 [I]  [一树吉大夫五分店] 耗时:1.011122s
+2023/10/20 14:31:00.991 [I]  [一树凯里韶山南路分店] 耗时:1.4918191s
+2023/10/20 14:31:02.646 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.6551815s
+2023/10/20 14:31:03.693 [I]  [一树兴义市州医院分店] 耗时:1.0468743s
+2023/10/20 14:31:04.846 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1531158s
+2023/10/20 14:31:05.793 [I]  [贵州安思药业有限公司1] 耗时:947.3574ms
+2023/10/20 14:31:06.961 [I]  [上药控股遵义有限公司] 耗时:1.168237s
+2023/10/20 14:31:08.041 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.0790374s
+2023/10/20 14:31:09.143 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.1024078s
+2023/10/20 14:31:12.886 [I]  [国药控股黔南州有限公司] 耗时:3.7432241s
+2023/10/20 14:31:29.471 [I]  [国药控股毕节医投有限公司] 耗时:16.5844904s
+2023/10/20 14:31:30.364 [I]  [大连成大文熙肿瘤医院] 耗时:892.606ms
+2023/10/20 14:31:31.312 [I]  [贵州茂坤供应链管理有限公司] 耗时:948.8825ms
+2023/10/20 14:31:32.790 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.4778141s
+2023/10/20 14:31:33.781 [I]  [一树吉大夫38分店] 耗时:990.6398ms
+2023/10/20 14:31:35.044 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.2629728s
+2023/10/20 14:31:36.425 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.3812674s
+2023/10/20 14:31:37.328 [I]  [北京中准生物科技有限公司] 耗时:902.8027ms
+2023/10/20 14:31:38.271 [I]  [一树铜仁民生川硐分店] 耗时:942.8579ms
+2023/10/20 14:31:39.240 [I]  [仁怀市一树药业融亿店] 耗时:968.8769ms
+2023/10/20 14:31:40.160 [I]  [遵义一树道真芙蓉江路店] 耗时:920.5374ms
+2023/10/20 14:31:41.314 [I]  [贵州广奕医药有限公司] 耗时:1.153667s
+2023/10/20 14:31:42.565 [I]  [贵州安思药业有限公司] 耗时:1.2512251s
+2023/10/20 14:31:43.462 [I]  [广西乐驰商贸有限公司] 耗时:897.0933ms
+2023/10/20 14:31:44.360 [I]  [一树吉大夫62分店] 耗时:897.8667ms
+2023/10/20 14:31:45.271 [I]  [贵州省惠水县疾病预防控制中心] 耗时:910.6501ms
+2023/10/20 14:31:46.185 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:914.1283ms
+2023/10/20 14:31:47.094 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:908.6871ms
+2023/10/20 14:31:48.024 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:929.8372ms
+2023/10/20 14:31:48.926 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:902.7607ms
+2023/10/20 14:31:49.843 [I]  [贵州侗润堂药业连锁有限公司] 耗时:917.0571ms
+2023/10/20 14:31:50.958 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.1143952s
+2023/10/20 14:31:52.045 [I]  [贵州俊勇康药业有限公司] 耗时:1.0873776s
+2023/10/20 14:31:52.936 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:891.0021ms
+2023/10/20 14:31:53.886 [I]  [贵州俊达康药业有限公司] 耗时:949.5535ms
+2023/10/20 14:31:54.796 [I]  [一树吉大夫二十六分店] 耗时:909.829ms
+2023/10/20 14:31:55.691 [I]  [一树吉大夫三分店] 耗时:895.0139ms
+2023/10/20 14:31:56.610 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:919.5736ms
+2023/10/20 14:35:33.216 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.415776s
+2023/10/20 14:35:35.452 [I]  [贵阳中山东路店] 耗时:1.0984082s
+2023/10/20 14:35:38.459 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6548432s
+2023/10/20 14:35:58.335 [I]  [一树兴义市市医院分店] 耗时:1.0093069s
+2023/10/20 14:38:58.647 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.084519s
+2023/10/20 14:44:42.511 [I]  [国药控股黔南州有限公司] 耗时:6.0012919s
+2023/10/20 14:46:47.376 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m8.1474619s
+2023/10/20 14:46:50.158 [I]  [贵州薏品康医药投资有限公司] 耗时:2.624437s
+2023/10/20 14:46:51.312 [I]  [一树兴义市市医院分店] 耗时:996.7515ms
+2023/10/20 14:47:04.441 [I]  [七星关区康源大药房爱民广场店] 耗时:1.2250718s
+2023/10/20 14:47:05.607 [I]  [贵阳中山东路店] 耗时:1.0839771s
+2023/10/20 14:54:23.509 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.7672162s
+2023/10/20 14:58:01.136 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m10.8699995s
+2023/10/20 14:58:02.556 [I]  [贵阳中山东路店] 耗时:1.2577925s
+2023/10/20 14:58:05.578 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6931734s
+2023/10/20 14:58:08.352 [I]  [一树兴义市市医院分店] 耗时:981.3461ms
+2023/10/20 15:06:21.602 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0488075s
+2023/10/20 15:09:13.008 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m10.041497s
+2023/10/20 15:09:15.956 [I]  [贵州薏品康医药投资有限公司] 耗时:2.74007s
+2023/10/20 15:09:19.937 [I]  [贵阳中山东路店] 耗时:1.0928018s
+2023/10/20 15:10:07.432 [I]  [一树兴义市市医院分店] 耗时:985.1417ms
+2023/10/20 15:10:49.595 [I]  [国药控股黔南州有限公司] 耗时:4.1205947s
+2023/10/20 15:17:56.417 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0424618s
+2023/10/20 15:20:24.090 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m10.0958357s
+2023/10/20 15:20:27.237 [I]  [贵州薏品康医药投资有限公司] 耗时:2.8996622s
+2023/10/20 15:20:30.282 [I]  [一树兴义市市医院分店] 耗时:1.0467584s
+2023/10/20 15:21:04.428 [I]  [贵阳中山东路店] 耗时:1.1012763s
+2023/10/20 15:31:34.634 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m8.5591621s
+2023/10/20 15:31:37.443 [I]  [贵阳中山东路店] 耗时:1.1067474s
+2023/10/20 15:31:40.454 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6321631s
+2023/10/20 15:32:00.334 [I]  [一树兴义市市医院分店] 耗时:1.0710096s
+2023/10/20 15:33:26.091 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.3554876s
+2023/10/20 15:33:31.043 [I]  [国药控股黔南州有限公司] 耗时:3.9706447s
+2023/10/20 15:37:54.734 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:916.6985ms
+2023/10/20 15:39:24.202 [I]  [贵州省惠水县疾病预防控制中心] 耗时:914.318ms
+2023/10/20 15:42:50.813 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.2864317s
+2023/10/20 15:42:53.940 [I]  [贵州薏品康医药投资有限公司] 耗时:2.9236386s
+2023/10/20 15:42:55.276 [I]  [一树兴义市市医院分店] 耗时:1.0152203s
+2023/10/20 15:43:05.085 [I]  [贵阳中山东路店] 耗时:1.0942559s
+2023/10/20 15:45:26.826 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0568701s
+2023/10/20 15:46:13.554 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.1868354s
+2023/10/20 15:54:00.655 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.0596108s
+2023/10/20 15:54:02.034 [I]  [贵阳中山东路店] 耗时:1.1023197s
+2023/10/20 15:54:05.707 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6033759s
+2023/10/20 15:54:09.169 [I]  [一树兴义市市医院分店] 耗时:990.7984ms
+2023/10/20 15:56:59.483 [I]  [国药控股黔南州有限公司] 耗时:4.1177951s
+2023/10/20 15:57:01.512 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.9543887s
+2023/10/20 15:59:06.521 [I]  [七星关区康源大药房爱民广场店] 耗时:1.169313s
+2023/10/20 16:05:16.302 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m10.1744958s
+2023/10/20 16:05:19.012 [I]  [贵州薏品康医药投资有限公司] 耗时:2.633379s
+2023/10/20 16:05:22.932 [I]  [贵阳中山东路店] 耗时:1.0853398s
+2023/10/20 16:05:53.790 [I]  [一树兴义市市医院分店] 耗时:955.6261ms
+2023/10/20 16:12:26.428 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0876719s
+2023/10/20 16:16:26.007 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.4770968s
+2023/10/20 16:16:29.452 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6027047s
+2023/10/20 16:16:31.618 [I]  [一树兴义市市医院分店] 耗时:996.9292ms
+2023/10/20 16:17:04.699 [I]  [贵阳中山东路店] 耗时:1.0441889s
+2023/10/20 16:21:15.825 [I]  [国药控股黔南州有限公司] 耗时:3.9211893s
+2023/10/20 16:21:22.779 [I]  [遵义一树662分店] 耗时:1.2589965s
+2023/10/20 16:24:27.813 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.1041546s
+2023/10/20 16:27:36.793 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m8.9828175s
+2023/10/20 16:27:38.602 [I]  [贵阳中山东路店] 耗时:1.0418647s
+2023/10/20 16:27:42.146 [I]  [贵州薏品康医药投资有限公司] 耗时:2.637762s
+2023/10/20 16:28:02.317 [I]  [一树兴义市市医院分店] 耗时:1.0414845s
+2023/10/20 16:28:28.893 [I]  [贵州省惠水县疾病预防控制中心] 耗时:899.8993ms
+2023/10/20 16:32:00.538 [I]  [临沂好德生物科技有限公司] 耗时:852.3334ms
+2023/10/20 16:32:01.464 [I]  [深圳市睿盛医疗器械有限公司] 耗时:926.582ms
+2023/10/20 16:32:02.318 [I]  [上药贵州测试] 耗时:853.1787ms
+2023/10/20 16:32:03.173 [I]  [湖南万棵医疗器械有限公司] 耗时:855.0307ms
+2023/10/20 16:32:04.245 [I]  [贵阳地矿分店] 耗时:1.0728093s
+2023/10/20 16:32:05.220 [I]  [安顺体育路三分店] 耗时:974.7737ms
+2023/10/20 16:32:06.091 [I]  [毕节一树18分店] 耗时:871.2274ms
+2023/10/20 16:32:07.362 [I]  [遵义一树662分店] 耗时:1.2710569s
+2023/10/20 16:32:08.541 [I]  [遵义一树286分店] 耗时:1.1785789s
+2023/10/20 16:32:09.880 [I]  [遵义一树新蒲603店] 耗时:1.33882s
+2023/10/20 16:32:10.765 [I]  [遵义一树正大37店] 耗时:885.0004ms
+2023/10/20 16:32:11.679 [I]  [黔南湘君斗篷山路店] 耗时:913.968ms
+2023/10/20 16:32:12.634 [I]  [黔南平塘571店] 耗时:955.5006ms
+2023/10/20 16:32:13.751 [I]  [黔南都匀东京街262分店] 耗时:1.1168976s
+2023/10/20 16:32:14.724 [I]  [毕节一树药业有限公司十一分店] 耗时:972.3842ms
+2023/10/20 16:32:20.561 [I]  [七星关区湘邵九芝堂药店] 耗时:5.8368568s
+2023/10/20 16:32:21.446 [I]  [上饶上药益药药房有限公司] 耗时:885.5501ms
+2023/10/20 16:32:22.474 [I]  [一树第一百分店] 耗时:1.0275287s
+2023/10/20 16:32:23.393 [I]  [上药控股贵州有限公司] 耗时:919.564ms
+2023/10/20 16:32:24.369 [I]  [一树吉大夫五分店] 耗时:975.4092ms
+2023/10/20 16:32:25.834 [I]  [一树凯里韶山南路分店] 耗时:1.4652641s
+2023/10/20 16:32:27.425 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.59064s
+2023/10/20 16:32:28.489 [I]  [一树兴义市州医院分店] 耗时:1.0646745s
+2023/10/20 16:32:29.629 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1397456s
+2023/10/20 16:32:30.516 [I]  [贵州安思药业有限公司1] 耗时:887.1243ms
+2023/10/20 16:32:31.590 [I]  [上药控股遵义有限公司] 耗时:1.0736881s
+2023/10/20 16:32:32.693 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.1030987s
+2023/10/20 16:32:33.713 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.0194578s
+2023/10/20 16:32:37.302 [I]  [国药控股黔南州有限公司] 耗时:3.5897007s
+2023/10/20 16:32:53.665 [I]  [国药控股毕节医投有限公司] 耗时:16.3623447s
+2023/10/20 16:32:54.521 [I]  [大连成大文熙肿瘤医院] 耗时:856.1969ms
+2023/10/20 16:32:55.445 [I]  [贵州茂坤供应链管理有限公司] 耗时:923.8172ms
+2023/10/20 16:32:56.876 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.4309837s
+2023/10/20 16:32:57.889 [I]  [一树吉大夫38分店] 耗时:1.0131781s
+2023/10/20 16:32:59.272 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.3824576s
+2023/10/20 16:33:00.764 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.4928854s
+2023/10/20 16:33:01.775 [I]  [北京中准生物科技有限公司] 耗时:1.0103817s
+2023/10/20 16:33:02.667 [I]  [一树铜仁民生川硐分店] 耗时:891.9538ms
+2023/10/20 16:33:03.585 [I]  [仁怀市一树药业融亿店] 耗时:917.6918ms
+2023/10/20 16:33:04.472 [I]  [遵义一树道真芙蓉江路店] 耗时:887.4289ms
+2023/10/20 16:33:05.580 [I]  [贵州广奕医药有限公司] 耗时:1.1081241s
+2023/10/20 16:33:06.763 [I]  [贵州安思药业有限公司] 耗时:1.1825647s
+2023/10/20 16:33:07.625 [I]  [广西乐驰商贸有限公司] 耗时:861.8719ms
+2023/10/20 16:33:08.511 [I]  [一树吉大夫62分店] 耗时:886.0837ms
+2023/10/20 16:33:09.462 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:951.1899ms
+2023/10/20 16:33:10.373 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:911.4978ms
+2023/10/20 16:33:11.274 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:900.6149ms
+2023/10/20 16:33:12.207 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:932.6815ms
+2023/10/20 16:33:13.156 [I]  [贵州侗润堂药业连锁有限公司] 耗时:949.4347ms
+2023/10/20 16:33:14.223 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.0672079s
+2023/10/20 16:33:15.305 [I]  [贵州俊勇康药业有限公司] 耗时:1.08186s
+2023/10/20 16:33:16.148 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:842.6553ms
+2023/10/20 16:33:17.114 [I]  [贵州俊达康药业有限公司] 耗时:966.2548ms
+2023/10/20 16:33:18.063 [I]  [一树吉大夫二十六分店] 耗时:949.2104ms
+2023/10/20 16:33:18.970 [I]  [一树吉大夫三分店] 耗时:906.7606ms
+2023/10/20 16:33:19.841 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:870.8536ms
+2023/10/20 16:35:52.900 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0736582s
+2023/10/20 16:38:53.372 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.9245084s
+2023/10/20 16:38:54.555 [I]  [一树兴义市市医院分店] 耗时:954.3624ms
+2023/10/20 16:38:57.257 [I]  [贵州薏品康医药投资有限公司] 耗时:2.619237s
+2023/10/20 16:39:05.660 [I]  [贵阳中山东路店] 耗时:1.1059428s
+2023/10/20 16:45:32.698 [I]  [国药控股黔南州有限公司] 耗时:4.0805142s
+2023/10/20 16:50:03.242 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.3979963s
+2023/10/20 16:50:04.470 [I]  [贵阳中山东路店] 耗时:1.075781s
+2023/10/20 16:50:08.095 [I]  [贵州薏品康医药投资有限公司] 耗时:2.5839886s
+2023/10/20 16:50:09.936 [I]  [一树兴义市市医院分店] 耗时:952.958ms
+2023/10/20 16:51:24.917 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0317161s
+2023/10/20 17:01:16.936 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m8.2086027s
+2023/10/20 17:01:19.419 [I]  [一树兴义市市医院分店] 耗时:1.0027154s
+2023/10/20 17:01:22.086 [I]  [贵阳中山东路店] 耗时:1.103243s
+2023/10/20 17:01:28.039 [I]  [贵州薏品康医药投资有限公司] 耗时:2.8357023s
+2023/10/20 17:03:26.982 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0591402s
+2023/10/20 17:10:00.384 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:896.0476ms
+2023/10/20 17:10:04.866 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1115571s
+2023/10/20 17:10:21.500 [I]  [国药控股黔南州有限公司] 耗时:3.9955883s
+2023/10/20 17:12:27.402 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m9.3033929s
+2023/10/20 17:12:31.223 [I]  [贵州薏品康医药投资有限公司] 耗时:2.6876074s
+2023/10/20 17:12:32.917 [I]  [一树兴义市市医院分店] 耗时:945.1039ms
+2023/10/20 17:13:04.807 [I]  [贵阳中山东路店] 耗时:1.0525046s
+2023/10/24 11:14:39.695 [I]  [临沂好德生物科技有限公司] 耗时:962.21ms
+2023/10/24 11:14:40.705 [I]  [深圳市睿盛医疗器械有限公司] 耗时:1.0100357s
+2023/10/24 11:14:41.637 [I]  [上药贵州测试] 耗时:931.7943ms
+2023/10/24 11:14:42.597 [I]  [湖南万棵医疗器械有限公司] 耗时:959.8737ms
+2023/10/24 11:14:44.032 [I]  [贵阳地矿分店] 耗时:1.1630619s
+2023/10/24 11:14:45.208 [I]  [贵阳中山东路店] 耗时:1.1070633s
+2023/10/24 11:14:46.332 [I]  [安顺体育路三分店] 耗时:1.0562055s
+2023/10/24 11:14:47.358 [I]  [毕节一树18分店] 耗时:958.8028ms
+2023/10/24 11:14:48.767 [I]  [遵义一树662分店] 耗时:1.341045s
+2023/10/24 11:14:49.939 [I]  [遵义一树286分店] 耗时:1.1724211s
+2023/10/24 11:14:51.236 [I]  [遵义一树新蒲603店] 耗时:1.2964067s
+2023/10/24 11:14:52.211 [I]  [遵义一树正大37店] 耗时:975.3756ms
+2023/10/24 11:14:53.271 [I]  [黔南湘君斗篷山路店] 耗时:992.6878ms
+2023/10/24 11:14:54.334 [I]  [黔南平塘571店] 耗时:1.0629099s
+2023/10/24 11:14:55.458 [I]  [黔南都匀东京街262分店] 耗时:1.1238737s
+2023/10/24 11:14:56.410 [I]  [毕节一树药业有限公司十一分店] 耗时:952.8429ms
+2023/10/24 11:15:01.407 [I]  [七星关区湘邵九芝堂药店] 耗时:4.9288015s
+2023/10/24 11:15:02.429 [I]  [上饶上药益药药房有限公司] 耗时:1.0225218s
+2023/10/24 11:15:03.531 [I]  [一树第一百分店] 耗时:1.1021004s
+2023/10/24 11:15:04.552 [I]  [上药控股贵州有限公司] 耗时:1.0203884s
+2023/10/24 11:15:05.715 [I]  [一树吉大夫五分店] 耗时:1.0938831s
+2023/10/24 11:15:07.287 [I]  [一树凯里韶山南路分店] 耗时:1.5720471s
+2023/10/24 11:15:08.912 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.6249052s
+2023/10/24 11:15:10.021 [I]  [一树兴义市市医院分店] 耗时:1.0403202s
+2023/10/24 11:15:11.070 [I]  [一树兴义市州医院分店] 耗时:1.0490847s
+2023/10/24 11:15:12.269 [I]  [七星关区康源大药房爱民广场店] 耗时:1.1994979s
+2023/10/24 11:15:13.217 [I]  [贵州安思药业有限公司1] 耗时:947.4548ms
+2023/10/24 11:15:14.545 [I]  [上药控股遵义有限公司] 耗时:1.328186s
+2023/10/24 11:15:15.844 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.2186346s
+2023/10/24 11:15:17.038 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.1944097s
+2023/10/24 11:15:20.375 [I]  [贵州薏品康医药投资有限公司] 耗时:3.2634052s
+2023/10/24 11:15:23.647 [I]  [国药控股黔南州有限公司] 耗时:3.2724928s
+2023/10/24 11:15:38.554 [I]  [国药控股毕节医投有限公司] 耗时:14.9061747s
+2023/10/24 11:15:39.522 [I]  [大连成大文熙肿瘤医院] 耗时:968.815ms
+2023/10/24 11:15:40.587 [I]  [贵州茂坤供应链管理有限公司] 耗时:1.0643385s
+2023/10/24 11:15:42.155 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.5682934s
+2023/10/24 11:15:44.386 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.2307922s
+2023/10/24 11:15:45.390 [I]  [一树吉大夫38分店] 耗时:1.0041545s
+2023/10/24 11:15:46.562 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.1724187s
+2023/10/24 11:15:47.965 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.4030146s
+2023/10/24 11:15:48.931 [I]  [北京中准生物科技有限公司] 耗时:965.7513ms
+2023/10/24 11:15:49.982 [I]  [一树铜仁民生川硐分店] 耗时:982.4775ms
+2023/10/24 11:15:51.012 [I]  [仁怀市一树药业融亿店] 耗时:1.0301176s
+2023/10/24 11:15:52.013 [I]  [遵义一树道真芙蓉江路店] 耗时:1.0011115s
+2023/10/24 11:15:53.272 [I]  [贵州广奕医药有限公司] 耗时:1.2588351s
+2023/10/24 11:15:54.721 [I]  [贵州安思药业有限公司] 耗时:1.4493894s
+2023/10/24 11:15:55.662 [I]  [广西乐驰商贸有限公司] 耗时:941.0291ms
+2023/10/24 11:15:56.614 [I]  [一树吉大夫62分店] 耗时:951.9143ms
+2023/10/24 11:15:57.570 [I]  [贵州省惠水县疾病预防控制中心] 耗时:955.1948ms
+2023/10/24 11:15:58.586 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:947.588ms
+2023/10/24 11:15:59.639 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:1.0534823s
+2023/10/24 11:16:00.605 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:965.4371ms
+2023/10/24 11:16:01.549 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:944.1629ms
+2023/10/24 11:16:02.539 [I]  [贵州侗润堂药业连锁有限公司] 耗时:990.4078ms
+2023/10/24 11:16:03.760 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.2204721s
+2023/10/24 11:16:04.949 [I]  [贵州俊勇康药业有限公司] 耗时:1.189556s
+2023/10/24 11:16:05.886 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:936.369ms
+2023/10/24 11:16:06.874 [I]  [贵州俊达康药业有限公司] 耗时:988.6649ms
+2023/10/24 11:16:07.834 [I]  [山西传世三和科技有限公司] 耗时:959.3602ms
+2023/10/24 11:16:08.767 [I]  [一树吉大夫二十六分店] 耗时:933.0458ms
+2023/10/24 11:16:09.698 [I]  [一树吉大夫三分店] 耗时:931.5335ms
+2023/10/24 11:16:10.627 [I]  [一树吉大夫四分店] 耗时:929.1031ms
+2023/10/24 11:16:11.576 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:948.3156ms
+2023/10/24 11:16:12.523 [I]  [一树凯里小十字分店] 耗时:947.4425ms
+2023/10/24 11:16:13.673 [I]  [贵州恒翊达医疗器械有限公司] 耗时:1.0820712s
+2023/10/24 11:16:14.703 [I]  [贵州森辉医疗器械有限公司] 耗时:961.626ms
+2023/10/24 11:16:38.143 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m0.6570314s
+2023/10/24 11:19:01.192 [I]  [临沂好德生物科技有限公司] 耗时:959.6319ms
+2023/10/24 11:19:02.218 [I]  [深圳市睿盛医疗器械有限公司] 耗时:1.0254633s
+2023/10/24 11:19:03.155 [I]  [上药贵州测试] 耗时:937.0607ms
+2023/10/24 11:19:04.107 [I]  [湖南万棵医疗器械有限公司] 耗时:952.3457ms
+2023/10/24 11:19:05.583 [I]  [贵阳地矿分店] 耗时:1.17745s
+2023/10/24 11:19:06.757 [I]  [贵阳中山东路店] 耗时:1.1034448s
+2023/10/24 11:19:07.884 [I]  [安顺体育路三分店] 耗时:1.0545616s
+2023/10/24 11:19:08.922 [I]  [毕节一树18分店] 耗时:967.9138ms
+2023/10/24 11:19:10.349 [I]  [遵义一树662分店] 耗时:1.3587438s
+2023/10/24 11:19:11.798 [I]  [遵义一树286分店] 耗时:1.4490191s
+2023/10/24 11:19:13.277 [I]  [遵义一树新蒲603店] 耗时:1.4787479s
+2023/10/24 11:19:14.376 [I]  [遵义一树正大37店] 耗时:1.0986458s
+2023/10/24 11:19:15.426 [I]  [黔南湘君斗篷山路店] 耗时:978.3897ms
+2023/10/24 11:19:16.401 [I]  [黔南平塘571店] 耗时:974.9492ms
+2023/10/24 11:19:17.444 [I]  [黔南都匀东京街262分店] 耗时:1.0426906s
+2023/10/24 11:19:18.421 [I]  [毕节一树药业有限公司十一分店] 耗时:976.6996ms
+2023/10/24 11:19:23.512 [I]  [七星关区湘邵九芝堂药店] 耗时:5.0232549s
+2023/10/24 11:19:24.465 [I]  [上饶上药益药药房有限公司] 耗时:953.2006ms
+2023/10/24 11:19:25.593 [I]  [一树第一百分店] 耗时:1.1281s
+2023/10/24 11:19:26.627 [I]  [上药控股贵州有限公司] 耗时:1.0337093s
+2023/10/24 11:19:27.745 [I]  [一树吉大夫五分店] 耗时:1.0501554s
+2023/10/24 11:19:29.223 [I]  [一树凯里韶山南路分店] 耗时:1.4781193s
+2023/10/24 11:19:30.858 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.6348819s
+2023/10/24 11:19:32.117 [I]  [一树兴义市市医院分店] 耗时:1.1849221s
+2023/10/24 11:19:33.201 [I]  [一树兴义市州医院分店] 耗时:1.0847695s
+2023/10/24 11:19:35.029 [I]  [七星关区康源大药房爱民广场店] 耗时:1.8273504s
+2023/10/24 11:19:36.106 [I]  [贵州安思药业有限公司1] 耗时:1.0776132s
+2023/10/24 11:19:37.338 [I]  [上药控股遵义有限公司] 耗时:1.232044s
+2023/10/24 11:19:38.710 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.3036822s
+2023/10/24 11:19:39.815 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.1049707s
+2023/10/24 11:19:43.178 [I]  [贵州薏品康医药投资有限公司] 耗时:3.2962139s
+2023/10/24 11:19:46.472 [I]  [国药控股黔南州有限公司] 耗时:3.2937766s
+2023/10/24 11:20:01.457 [I]  [国药控股毕节医投有限公司] 耗时:14.9850897s
+2023/10/24 11:20:02.391 [I]  [大连成大文熙肿瘤医院] 耗时:933.8723ms
+2023/10/24 11:20:03.516 [I]  [贵州茂坤供应链管理有限公司] 耗时:1.1248844s
+2023/10/24 11:20:05.013 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.4964969s
+2023/10/24 11:20:08.976 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:3.9632942s
+2023/10/24 11:20:14.362 [I]  [一树吉大夫38分店] 耗时:5.3855104s
+2023/10/24 11:20:16.960 [I]  [贵州老先参大药房连锁有限公司] 耗时:2.5986943s
+2023/10/24 11:20:18.289 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.328533s
+2023/10/24 11:20:19.217 [I]  [北京中准生物科技有限公司] 耗时:928.4925ms
+2023/10/24 11:20:20.254 [I]  [一树铜仁民生川硐分店] 耗时:968.9731ms
+2023/10/24 11:20:21.259 [I]  [仁怀市一树药业融亿店] 耗时:1.0047645s
+2023/10/24 11:20:22.225 [I]  [遵义一树道真芙蓉江路店] 耗时:966.2427ms
+2023/10/24 11:20:23.439 [I]  [贵州广奕医药有限公司] 耗时:1.2142035s
+2023/10/24 11:20:24.718 [I]  [贵州安思药业有限公司] 耗时:1.2782543s
+2023/10/24 11:21:24.639 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:59.9212206s
+2023/10/24 11:21:25.589 [I]  [广西乐驰商贸有限公司] 耗时:949.9681ms
+2023/10/24 11:21:26.558 [I]  [一树吉大夫62分店] 耗时:968.8044ms
+2023/10/24 11:21:27.529 [I]  [贵州省惠水县疾病预防控制中心] 耗时:970.6144ms
+2023/10/24 11:21:28.588 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:983.4981ms
+2023/10/24 11:21:29.542 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:953.559ms
+2023/10/24 11:21:30.507 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:964.993ms
+2023/10/24 11:21:31.495 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:988.5256ms
+2023/10/24 11:21:32.579 [I]  [贵州侗润堂药业连锁有限公司] 耗时:1.0837867s
+2023/10/24 11:21:33.954 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.3743221s
+2023/10/24 11:21:35.116 [I]  [贵州俊勇康药业有限公司] 耗时:1.1621902s
+2023/10/24 11:21:36.068 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:952.3711ms
+2023/10/24 11:21:37.057 [I]  [贵州俊达康药业有限公司] 耗时:988.4234ms
+2023/10/24 11:21:38.045 [I]  [山西传世三和科技有限公司] 耗时:988.3199ms
+2023/10/24 11:21:38.986 [I]  [一树吉大夫二十六分店] 耗时:940.686ms
+2023/10/24 11:21:39.925 [I]  [一树吉大夫三分店] 耗时:938.8966ms
+2023/10/24 11:21:40.905 [I]  [一树吉大夫四分店] 耗时:980.6744ms
+2023/10/24 11:21:41.849 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:944.2533ms
+2023/10/24 11:21:42.800 [I]  [一树凯里小十字分店] 耗时:950.0832ms
+2023/10/24 11:21:43.923 [I]  [贵州恒翊达医疗器械有限公司] 耗时:1.0557205s
+2023/10/24 11:21:44.943 [I]  [贵州森辉医疗器械有限公司] 耗时:952.9163ms
+2023/10/24 13:21:49.397 [I]  [临沂好德生物科技有限公司] 耗时:941.2297ms
+2023/10/24 13:21:50.433 [I]  [深圳市睿盛医疗器械有限公司] 耗时:1.0353908s
+2023/10/24 13:21:51.383 [I]  [上药贵州测试] 耗时:949.8539ms
+2023/10/24 13:21:52.335 [I]  [湖南万棵医疗器械有限公司] 耗时:952.7459ms
+2023/10/24 13:21:53.509 [I]  [贵阳地矿分店] 耗时:1.1733794s
+2023/10/24 13:21:54.721 [I]  [贵阳中山东路店] 耗时:1.2127305s
+2023/10/24 13:21:55.792 [I]  [安顺体育路三分店] 耗时:1.0709649s
+2023/10/24 13:21:56.757 [I]  [毕节一树18分店] 耗时:964.206ms
+2023/10/24 13:21:58.100 [I]  [遵义一树662分店] 耗时:1.3430697s
+2023/10/24 13:21:59.298 [I]  [遵义一树286分店] 耗时:1.1981307s
+2023/10/24 13:22:00.591 [I]  [遵义一树新蒲603店] 耗时:1.2928054s
+2023/10/24 13:22:01.555 [I]  [遵义一树正大37店] 耗时:964.1891ms
+2023/10/24 13:22:02.551 [I]  [黔南湘君斗篷山路店] 耗时:995.6929ms
+2023/10/24 13:22:03.569 [I]  [黔南平塘571店] 耗时:1.0186689s
+2023/10/24 13:22:04.637 [I]  [黔南都匀东京街262分店] 耗时:1.067741s
+2023/10/24 13:22:05.694 [I]  [毕节一树药业有限公司十一分店] 耗时:1.0573085s
+2023/10/24 13:22:10.632 [I]  [七星关区湘邵九芝堂药店] 耗时:4.9378072s
+2023/10/24 13:22:11.613 [I]  [上饶上药益药药房有限公司] 耗时:980.8094ms
+2023/10/24 13:22:12.744 [I]  [一树第一百分店] 耗时:1.1308812s
+2023/10/24 13:22:13.768 [I]  [上药控股贵州有限公司] 耗时:1.0245294s
+2023/10/24 13:22:14.887 [I]  [一树吉大夫五分店] 耗时:1.1184439s
+2023/10/24 13:22:16.413 [I]  [一树凯里韶山南路分店] 耗时:1.5265134s
+2023/10/24 13:22:18.074 [I]  [一树凯里经济开发区开元大道分店] 耗时:1.6604558s
+2023/10/24 13:22:19.139 [I]  [一树兴义市市医院分店] 耗时:1.0654267s
+2023/10/24 13:22:20.265 [I]  [一树兴义市州医院分店] 耗时:1.1254877s
+2023/10/24 13:22:21.549 [I]  [七星关区康源大药房爱民广场店] 耗时:1.2838644s
+2023/10/24 13:22:22.561 [I]  [贵州安思药业有限公司1] 耗时:1.0118379s
+2023/10/24 13:22:23.776 [I]  [上药控股遵义有限公司] 耗时:1.2154228s
+2023/10/24 13:22:24.877 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:1.1011554s
+2023/10/24 13:22:25.966 [I]  [贵州博胜医药仓储物流有限公司] 耗时:1.0889998s
+2023/10/24 13:22:29.233 [I]  [贵州薏品康医药投资有限公司] 耗时:3.2665015s
+2023/10/24 13:22:32.552 [I]  [国药控股黔南州有限公司] 耗时:3.3195727s
+2023/10/24 13:22:47.314 [I]  [国药控股毕节医投有限公司] 耗时:14.7610482s
+2023/10/24 13:22:48.289 [I]  [大连成大文熙肿瘤医院] 耗时:975.2456ms
+2023/10/24 13:22:49.261 [I]  [贵州茂坤供应链管理有限公司] 耗时:972.1353ms
+2023/10/24 13:22:50.726 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:1.4652252s
+2023/10/24 13:22:52.783 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:2.0563113s
+2023/10/24 13:22:53.866 [I]  [一树吉大夫38分店] 耗时:1.08344s
+2023/10/24 13:22:55.023 [I]  [贵州老先参大药房连锁有限公司] 耗时:1.1573006s
+2023/10/24 13:22:56.346 [I]  [贵州黔匀大健康有限责任公司] 耗时:1.3227011s
+2023/10/24 13:22:57.297 [I]  [北京中准生物科技有限公司] 耗时:950.8904ms
+2023/10/24 13:22:58.297 [I]  [一树铜仁民生川硐分店] 耗时:1.0004134s
+2023/10/24 13:22:59.304 [I]  [仁怀市一树药业融亿店] 耗时:1.0062066s
+2023/10/24 13:23:00.360 [I]  [遵义一树道真芙蓉江路店] 耗时:1.0568854s
+2023/10/24 13:23:01.604 [I]  [贵州广奕医药有限公司] 耗时:1.2439937s
+2023/10/24 13:23:02.874 [I]  [贵州安思药业有限公司] 耗时:1.2692532s
+2023/10/24 13:24:03.257 [I]  [贵州博胜医药仓储物流有限公司(新仓库)] 耗时:1m0.3829384s
+2023/10/24 13:24:04.227 [I]  [广西乐驰商贸有限公司] 耗时:969.2891ms
+2023/10/24 13:24:05.196 [I]  [一树吉大夫62分店] 耗时:969.3564ms
+2023/10/24 13:24:06.161 [I]  [贵州省惠水县疾病预防控制中心] 耗时:964.8132ms
+2023/10/24 13:24:07.108 [I]  [贵州一树老百姓药业连锁有限公司六盘水钟山店] 耗时:946.9274ms
+2023/10/24 13:24:08.059 [I]  [贵州一树老百姓药业连锁有限公司六枝彩虹湾店] 耗时:950.8398ms
+2023/10/24 13:24:09.033 [I]  [贵州一树老百姓药业连锁有限公司盘州市翰林一分店] 耗时:974.6105ms
+2023/10/24 13:24:09.976 [I]  [贵州一树老百姓药业连锁有限公司盘州市红果八分店] 耗时:942.4864ms
+2023/10/24 13:24:10.950 [I]  [贵州侗润堂药业连锁有限公司] 耗时:974.1394ms
+2023/10/24 13:24:12.168 [I]  [贵州黔南州汇达药业有限公司] 耗时:1.2184516s
+2023/10/24 13:24:13.318 [I]  [贵州俊勇康药业有限公司] 耗时:1.149832s
+2023/10/24 13:24:14.261 [I]  [贵州一树药业股份有限公司帝景传说分店] 耗时:943.0001ms
+2023/10/24 13:24:15.241 [I]  [贵州俊达康药业有限公司] 耗时:979.3987ms
+2023/10/24 13:24:16.188 [I]  [山西传世三和科技有限公司] 耗时:947.2725ms
+2023/10/24 13:24:17.123 [I]  [一树吉大夫二十六分店] 耗时:935.1138ms
+2023/10/24 13:24:18.062 [I]  [一树吉大夫三分店] 耗时:938.4284ms
+2023/10/24 13:24:19.007 [I]  [一树吉大夫四分店] 耗时:945.0202ms
+2023/10/24 13:24:19.951 [I]  [贵州一树药业股份有限公司北京路分店] 耗时:944.8809ms
+2023/10/24 13:24:20.891 [I]  [一树凯里小十字分店] 耗时:939.6122ms
+2023/10/24 13:24:21.977 [I]  [贵州恒翊达医疗器械有限公司] 耗时:1.0854879s
+2023/10/24 13:24:22.957 [I]  [贵州森辉医疗器械有限公司] 耗时:979.996ms
+2024/06/20 15:50:58.969 [I]  [临沂好德生物科技有限公司] 耗时:326.5259ms
+2024/06/20 15:50:59.368 [I]  [深圳市睿盛医疗器械有限公司] 耗时:398.9267ms
+2024/06/20 15:50:59.792 [I]  [上药贵州测试] 耗时:424.1671ms
+2024/06/20 15:51:00.166 [I]  [湖南万棵医疗器械有限公司] 耗时:373.9696ms
+2024/12/23 09:22:33.403 [I]  [临沂好德生物科技有限公司] 耗时:764.9064ms
+2024/12/23 09:22:34.082 [I]  [深圳市睿盛医疗器械有限公司] 耗时:678.562ms
+2024/12/23 09:22:34.868 [I]  [湖南万棵医疗器械有限公司] 耗时:786.4113ms
+2024/12/23 09:22:35.834 [I]  [一树药业云岩区地矿分店] 耗时:847.0278ms
+2024/12/23 09:22:36.552 [I]  [一树药业南明区中山东路店] 耗时:718.0214ms
+2024/12/23 09:22:37.307 [I]  [一树药业西秀区体育路三分店] 耗时:709.2982ms
+2024/12/23 09:22:38.047 [I]  [一树药业七星关区18分店] 耗时:697.0984ms
+2024/12/23 09:22:38.756 [I]  [一树药业红花岗662分店] 耗时:676.4288ms
+2024/12/23 09:22:39.389 [I]  [一树药业播州286分店] 耗时:632.7406ms
+2024/12/23 09:22:40.029 [I]  [一树红花岗区新蒲603店] 耗时:639.7543ms
+2024/12/23 09:22:40.676 [I]  [一树正大习水县37店] 耗时:646.4951ms
+2024/12/23 09:22:41.181 [I]  [一树湘君都匀市斗篷山路店] 耗时:468.112ms
+2024/12/23 09:22:41.832 [I]  [一树平塘县571店] 耗时:650.8331ms
+2024/12/23 09:22:42.653 [I]  [一树都匀市东京街262分店] 耗时:821.8627ms
+2024/12/23 09:22:43.351 [I]  [一树药业七星关区十一分店] 耗时:697.8882ms
+2024/12/23 09:22:44.221 [I]  [一树祖家威宁区中心店] 耗时:868.6962ms
+2024/12/23 09:22:45.006 [I]  [七星关区湘邵九芝堂药店] 耗时:785.6039ms
+2024/12/23 09:22:45.732 [I]  [上饶上药益药药房有限公司] 耗时:725.6186ms
+2024/12/23 09:22:46.417 [I]  [一树药业观山湖区第一百分店] 耗时:685.3586ms
+2024/12/23 09:22:47.309 [I]  [上药控股贵州有限公司] 耗时:892.0054ms
+2024/12/23 09:22:48.047 [I]  [一树吉大夫凯里市五分店] 耗时:703.765ms
+2024/12/23 09:22:48.680 [I]  [一树药业凯里市韶山南路分店] 耗时:632.7341ms
+2024/12/23 09:22:49.330 [I]  [一树药业凯里市开元大道分店] 耗时:650.4952ms
+2024/12/23 09:22:49.990 [I]  [一树大家康健兴义市市医院分店] 耗时:625.4169ms
+2024/12/23 09:22:50.595 [I]  [一树大家康健兴义市州医院分店] 耗时:604.7572ms
+2024/12/23 09:22:51.212 [I]  [七星关区康源大药房爱民广场店] 耗时:617.0716ms
+2024/12/23 09:22:51.834 [I]  [上药控股遵义有限公司] 耗时:621.1907ms
+2024/12/23 09:22:52.645 [I]  [国药控股遵义医疗供应链服务有限公司] 耗时:778.6241ms
+2024/12/23 09:22:53.316 [I]  [贵州博胜医药仓储物流有限公司] 耗时:671.2812ms
+2024/12/23 09:22:54.177 [I]  [贵州薏乡医药有限公司] 耗时:829.1765ms
+2024/12/23 09:22:55.592 [I]  [国药控股黔南州有限公司] 耗时:1.4142005s
+2024/12/23 09:22:56.395 [I]  [国药控股毕节医投有限公司] 耗时:803.252ms
+2024/12/23 09:22:57.084 [I]  [大连成大文熙肿瘤医院] 耗时:689.2554ms
+2024/12/23 09:22:57.960 [I]  [贵州茂坤供应链管理有限公司] 耗时:875.2767ms
+2024/12/23 09:22:58.757 [I]  [贵州省医药(集团)有限责任公司遵义分公司] 耗时:797.3753ms
+2024/12/23 09:23:00.408 [I]  [鄱阳县上药康鸿大药房有限公司] 耗时:1.6507002s
+2024/12/23 09:23:01.141 [I]  [一树吉大夫黎平县三十八分店] 耗时:733.3171ms
+2024/12/23 09:23:01.800 [I]  [贵州老先参大药房连锁有限公司] 耗时:658.6491ms
+2024/12/23 09:23:02.449 [I]  [北京中准生物科技有限公司] 耗时:618.0978ms
+2024/12/23 09:23:03.121 [I]  [一树民生碧江区川硐分店] 耗时:641.6527ms
+2024/12/23 09:23:03.749 [I]  [一树药业遵义贵阳路分店] 耗时:628.5086ms
+2024/12/23 09:23:04.416 [I]  [一树道真自治县芙蓉江路店] 耗时:666.7037ms
+2024/12/23 09:23:05.290 [I]  [贵州广奕医药有限公司] 耗时:874.4703ms
+2024/12/23 09:23:06.087 [I]  [贵州安思药业有限公司] 耗时:796.3068ms
+2024/12/23 09:23:06.530 [I]  [贵州省应急物资(医药)储备保障中心(一期)] 耗时:443.7787ms
+2024/12/23 09:23:07.155 [I]  [广西乐驰商贸有限公司] 耗时:624.2152ms
+2024/12/23 09:23:07.595 [I]  [一树吉大夫凯里市六十二分店] 耗时:440.3707ms
+2024/12/23 09:23:08.258 [I]  [惠水县疾病预防控制中心] 耗时:662.909ms
+2024/12/23 09:23:08.971 [I]  [一树老百姓钟山区钟山店] 耗时:682.4998ms
+2024/12/23 09:23:09.623 [I]  [一树六盘水德坞阳光铭苑分店] 耗时:652.4792ms
+2024/12/23 09:23:10.256 [I]  [一树老百姓盘州市翰林一分店] 耗时:632.9991ms
+2024/12/23 09:23:10.928 [I]  [一树老百姓盘州市新港湾分店] 耗时:671.3398ms
+2024/12/23 09:23:12.011 [I]  [贵州侗润堂药业连锁有限公司] 耗时:1.0835563s
+2024/12/23 09:23:12.926 [I]  [贵州黔南州汇达药业有限公司] 耗时:914.9351ms
+2024/12/23 09:23:13.656 [I]  [贵州俊勇康药业有限公司] 耗时:729.473ms
+2024/12/23 09:23:14.136 [I]  [一树药业观山湖区帝景传说分店] 耗时:480.3032ms
+2024/12/23 09:23:15.689 [I]  [贵州俊达康药业有限公司] 耗时:1.5532637s
+2024/12/23 09:23:16.322 [I]  [山西全策科技有限公司] 耗时:632.4356ms
+2024/12/23 09:23:16.820 [I]  [一树吉大夫凯里市二十六分店] 耗时:498.4422ms
+2024/12/23 09:23:17.272 [I]  [一树吉大夫凯里市三分店] 耗时:451.727ms
+2024/12/23 09:23:17.709 [I]  [一树吉大夫凯里市四分店] 耗时:437.4923ms
+2024/12/23 09:23:18.319 [I]  [一树药业云岩区北京路分店] 耗时:609.3927ms
+2024/12/23 09:23:18.780 [I]  [一树药业凯里市小十字分店] 耗时:461.555ms
+2024/12/23 09:23:19.232 [I]  [贵州恒翊达医疗器械有限公司] 耗时:451.644ms
+2024/12/23 09:23:20.190 [I]  [贵州森辉医疗器械有限公司] 耗时:957.6907ms
+2024/12/23 09:23:20.642 [I]  [一树药业都匀市大十字分店] 耗时:451.8798ms
+2024/12/23 09:23:21.448 [I]  [一树湘君都匀市大十字店] 耗时:806.774ms
+2024/12/23 09:23:21.925 [I]  [一树湘君都匀市剑江中路店] 耗时:476.6763ms
+2024/12/23 09:23:22.523 [I]  [贵州鸿瑞同源医疗器械有限公司] 耗时:597.9238ms
+2024/12/23 09:23:23.132 [I]  [湖北省康德瑞商贸有限公司] 耗时:609.1518ms
+2024/12/23 09:23:23.735 [I]  [上药彤杉(沈阳)大药房连锁有限公司大连市大附一分店] 耗时:602.613ms
+2024/12/23 09:23:24.179 [I]  [一树药业云岩区一百零九分店] 耗时:444.3269ms
+2024/12/23 09:23:24.818 [I]  [齐鲁制药有限公司] 耗时:638.5812ms
+2024/12/23 09:23:25.624 [I]  [国药控股黔南州有限公司黔南大药房] 耗时:806.6073ms
+2024/12/23 09:23:26.329 [I]  [云南省昭通市昭阳区妇幼保健院] 耗时:704.3069ms
+2024/12/23 09:23:27.098 [I]  [贵州海臣医疗器械有限公司] 耗时:769.0457ms
+2024/12/23 09:23:27.888 [I]  [铜仁市慷隆医疗科技有限公司] 耗时:789.9909ms
+2024/12/23 09:23:29.593 [I]  [国药集团贵阳医疗器械有限公司] 耗时:1.7054575s
+2024/12/23 09:23:30.056 [I]  [松桃县疾控中心] 耗时:428.3252ms
+2024/12/23 09:23:30.520 [I]  [江口县疾控中心] 耗时:463.3183ms
+2024/12/23 09:23:31.000 [I]  [印江县疾控中心] 耗时:480.8336ms
+2024/12/23 09:23:31.779 [I]  [道坪中心卫生院] 耗时:778.1828ms
+2024/12/23 09:23:32.433 [I]  [地松卫生院] 耗时:653.64ms
+2024/12/23 09:23:33.154 [I]  [凤山中心卫生院] 耗时:721.5692ms
+2024/12/23 09:23:33.682 [I]  [福泉市妇幼保健院] 耗时:527.1901ms
+2024/12/23 09:23:34.405 [I]  [金山社区卫生服务中心] 耗时:723.1193ms
+2024/12/23 09:23:35.048 [I]  [藜山卫生院] 耗时:642.5245ms
+2024/12/23 09:23:35.531 [I]  [龙昌中心卫生院] 耗时:482.9622ms
+2024/12/23 09:23:35.901 [I]  [贵州天辰医药有限责任公司] 耗时:1.3039926s
+2024/12/23 09:23:36.165 [I]  [马场坪社区卫生服务中心] 耗时:634.4258ms
+2024/12/23 09:23:36.830 [I]  [牛场中心卫生院] 耗时:664.3312ms
+2024/12/23 09:23:37.492 [I]  [仙桥中心卫生院] 耗时:662.0694ms
+2024/12/23 09:23:37.943 [I]  [福泉市中医医院] 耗时:450.8802ms
+2024/12/23 09:23:38.394 [I]  [福泉市第一人民医院] 耗时:451.6497ms
+2024/12/23 09:23:39.036 [I]  [陆坪中心卫生院] 耗时:641.7479ms
+2024/12/23 09:23:39.653 [I]  [岗度镇中心卫生院] 耗时:617.231ms
+2024/12/23 09:23:40.262 [I]  [好花红镇中心卫生院] 耗时:608.8435ms
+2024/12/23 09:23:40.938 [I]  [惠水县鸭绒卫生院] 耗时:643.5763ms
+2024/12/23 09:23:41.625 [I]  [惠水县长田卫生院] 耗时:686.4428ms
+2024/12/23 09:23:42.299 [I]  [惠水县宁旺卫生院] 耗时:674.5781ms
+2024/12/23 09:23:42.903 [I]  [雅水镇中心卫生院] 耗时:604.0263ms
+2024/12/23 09:23:43.516 [I]  [惠水县甲烈卫生院] 耗时:612.7439ms
+2024/12/23 09:23:44.315 [I]  [惠水县长安卫生院] 耗时:798.6492ms
+2024/12/23 09:23:44.888 [I]  [国药控股贵州有限公司] 耗时:523.578ms
+2024/12/23 09:23:44.959 [I]  [涟江街道办事处社区卫生服务中心] 耗时:644.3726ms
+2024/12/23 09:23:45.652 [I]  [惠水县抵季卫生院] 耗时:660.9198ms
+2024/12/23 09:23:46.098 [I]  [王佑镇中心卫生院] 耗时:446.0513ms
+2024/12/23 09:23:46.727 [I]  [芦山镇中心卫生院] 耗时:628.5772ms
+2024/12/23 09:23:47.381 [I]  [摆金镇中心卫生院] 耗时:654.2542ms
+2024/12/23 09:23:48.077 [I]  [惠水县摆榜卫生院] 耗时:696.2623ms
+2024/12/23 09:23:48.707 [I]  [惠水县明田街道社区卫生服务中心] 耗时:629.8427ms
+2024/12/23 09:23:49.165 [I]  [惠水县甲戎卫生院] 耗时:457.945ms
+2024/12/23 09:23:49.789 [I]  [濛江街道办事处社区卫生服务中心] 耗时:624.2245ms
+2024/12/23 09:23:50.211 [I]  [惠水县打引卫生院] 耗时:421.6922ms
+2024/12/23 09:23:50.405 [I]  [重庆睿盛生物科技有限公司] 耗时:637.1329ms
+2024/12/23 09:23:50.651 [I]  [测试] 耗时:440.2822ms
+2024/12/23 09:23:51.413 [I]  [贵州德康达医药有限公司] 耗时:761.6869ms
+2024/12/23 09:23:51.914 [I]  [一树药业南明区九十八分店] 耗时:500.8401ms
+2024/12/23 09:23:52.591 [I]  [茂名市睿玉科技有限公司] 耗时:676.9668ms
+2024/12/23 09:23:53.493 [I]  [贵州省医疗器械工业有限责任公司1111] 耗时:902.4432ms
+2024/12/23 09:23:54.121 [I]  [国药控股大药房(吉林)有限公司] 耗时:627.5622ms
+2024/12/23 09:23:54.746 [I]  [黄丝中心卫生院] 耗时:625.5253ms
+2024/12/23 09:23:55.202 [I]  [国药器械贵州省玖合科贸有限公司] 耗时:455.4197ms
+2024/12/23 09:23:55.915 [I]  [福泉市疾控中心] 耗时:713.5414ms
+2024/12/23 09:23:56.552 [I]  [断杉镇中心卫生院] 耗时:636.306ms
+2024/12/23 09:23:57.201 [I]  [贵州海和医疗器械有限公司] 耗时:649.441ms
+2024/12/23 09:23:57.377 [I]  [贵州润洲医药有限责任公司] 耗时:1.0366862s
+2024/12/23 09:23:57.849 [I]  [龙里疾控中心] 耗时:648.086ms
+2024/12/23 09:23:58.517 [I]  [国药控股毕节医投有限公司百里杜鹃路店] 耗时:668.1199ms
+2024/12/23 09:23:58.590 [I]  [贵州友邦医药有限公司] 耗时:1.1742564s
+2024/12/23 09:23:59.279 [I]  [河北邦禾医疗器械贸易有限公司] 耗时:762.0527ms
+2024/12/23 09:23:59.743 [I]  [一树云岩区宝山北路二分店] 耗时:463.0534ms
+2024/12/23 09:24:00.207 [I]  [一树经济开发区小河浦江路分店] 耗时:464.0044ms
+2024/12/23 09:24:00.859 [I]  [天津睿恩康医疗器械科技有限公司] 耗时:652.5416ms
+2024/12/23 09:24:01.572 [I]  [正和祥独山一百四十八分店] 耗时:645.6214ms
+2024/12/23 09:24:02.017 [I]  [常州海滋久医疗器械科技有限公司] 耗时:445.6997ms
+2024/12/23 09:24:02.669 [I]  [湖南怡联医疗器械有限公司] 耗时:651.5634ms
+2024/12/23 09:24:03.381 [I]  [贵州玖安医疗器械有限公司] 耗时:712.4183ms
+2024/12/23 09:24:05.804 [I]  [贵州纳雍宏泰医药有限公司] 耗时:2.4227108s
+2024/12/23 09:24:06.519 [I]  [贵州金佑商贸有限公司] 耗时:714.9147ms
+2024/12/23 09:24:07.140 [I]  [济南汉德森医疗设备有限公司] 耗时:620.6327ms
+2024/12/23 09:24:07.803 [I]  [海南致众贸易有限责任公司] 耗时:662.9016ms
+2024/12/23 09:24:08.449 [I]  [昆明佰奥勒生物科技有限公司] 耗时:646.4071ms
+2024/12/23 09:24:09.079 [I]  [深圳市新产业生物医学工程股份有限公司] 耗时:628.9646ms
+2024/12/23 09:24:09.719 [I]  [天津市滨海新区中医医院] 耗时:640.473ms
+2024/12/23 09:24:10.439 [I]  [保山九州通医药有限公司] 耗时:720.2994ms
+2024/12/23 09:24:11.392 [I]  [广州泓璟视贸易有限公司] 耗时:627.1482ms
+2024/12/23 09:24:12.027 [I]  [河北楠壕医疗器械销售有限公司] 耗时:634.6974ms
+2024/12/23 09:24:12.644 [I]  [0001] 耗时:617.0139ms
+2024/12/23 09:24:13.280 [I]  [西安笃志近思生物科技有限公司] 耗时:636.6526ms
+2024/12/23 09:24:13.950 [I]  [杭州九穗禾健康药房有限公司] 耗时:637.7804ms
+2024/12/23 09:24:14.608 [I]  [河北视康商贸有限公司] 耗时:657.9326ms
+2024/12/23 09:24:15.216 [I]  [上药控股云南医疗器械有限公司] 耗时:607.9669ms
+2024/12/23 09:24:15.845 [I]  [南京知博医疗科技有限公司] 耗时:628.8299ms
+2024/12/23 09:24:16.512 [I]  [沈阳金斯尔医疗用品有限公司] 耗时:666.9965ms
+2024/12/23 09:24:17.148 [I]  [宜兴市人民医院] 耗时:635.9155ms
+2024/12/23 09:24:17.770 [I]  [徐州瑞达医疗器械有限公司] 耗时:621.6176ms
+2024/12/23 09:24:18.376 [I]  [北京爱科思创生物技术有限公司] 耗时:606.9053ms
+2024/12/23 09:24:20.008 [I]  [贵州省医疗器械工业有限责任公司] 耗时:1.5649048s
+2024/12/23 09:24:20.857 [I]  [贵州泰邦生物制品有限公司] 耗时:818.2303ms
+2024/12/23 09:24:21.541 [I]  [北京长春堂大药房有限公司] 耗时:652.6214ms
+2024/12/23 09:24:22.160 [I]  [上药彤杉(沈阳)大药房连锁有限公司庄河市城关街分店] 耗时:619.4083ms
+2024/12/23 09:24:22.817 [I]  [正和祥凯里州医院店] 耗时:625.579ms
+2024/12/23 09:24:23.625 [I]  [黔南科开大药房有限公司] 耗时:777.7268ms
+2024/12/23 09:24:24.435 [I]  [贵州稳好吉大夫药房连锁有限公司225分店] 耗时:810.147ms
+2024/12/23 09:24:25.062 [I]  [安徽兆诚电子科技有限公司] 耗时:627.1846ms
+2024/12/23 09:24:25.708 [I]  [贵州大合商贸有限公司] 耗时:645.689ms
+2024/12/23 09:24:26.387 [I]  [铜仁市鑫盛医疗贸易有限公司] 耗时:678.8477ms
+2024/12/23 09:24:27.015 [I]  [贵阳花溪区疾控中心] 耗时:627.6765ms
+2024/12/23 09:24:27.660 [I]  [湖北健恒医疗器械有限公司] 耗时:645.7013ms
+2024/12/23 09:24:28.361 [I]  [曲靖市妇幼保健院南苑] 耗时:700.9053ms
+2024/12/23 09:24:29.054 [I]  [山东奥全生物科技有限公司] 耗时:693.1084ms
+2024/12/23 09:24:29.799 [I]  [济南增锦商贸有限公司] 耗时:744.5211ms
+2024/12/23 09:24:30.589 [I]  [贵州省医药(集团)和平医药遵义有限公司] 耗时:790.32ms
+2024/12/23 09:24:31.273 [I]  [绵阳康池缘医疗器械有限公司] 耗时:683.6062ms
+2024/12/23 09:24:31.971 [I]  [阳春市淞海医疗器械有限公司] 耗时:667.5577ms
+2024/12/23 09:24:32.661 [I]  [湖北惠缘百商贸有限责任公司] 耗时:689.9149ms
+2024/12/23 09:24:33.531 [I]  [正和祥南明区都司路分店] 耗时:837.9462ms
+2024/12/23 09:24:34.546 [I]  [贵州道武芝林堂大药房连锁有限公司] 耗时:1.015035s
+2024/12/23 09:24:35.270 [I]  [一树药业都匀剑江中路分店(274店)] 耗时:723.9201ms
+2024/12/23 09:24:35.960 [I]  [山东海旭物联网科技有限公司] 耗时:690.607ms
+2024/12/23 09:24:36.620 [I]  [一树药业龙里金龙路分店(197店)] 耗时:659.1964ms
+2024/12/23 09:24:37.318 [I]  [一树药业贵定兴南路分店(647店)] 耗时:698.2063ms
+2024/12/23 09:24:37.957 [I]  [一树药业福泉金山分店(227店)] 耗时:639.4998ms
+2024/12/23 09:24:38.606 [I]  [一树药业瓮安凯祺分店(323店)] 耗时:648.4498ms
+2024/12/23 09:24:39.335 [I]  [一树药业都匀剑江中路二分店(389店)] 耗时:728.741ms
+2024/12/23 09:24:39.961 [I]  [一树药业都匀北部印象分店(631店)] 耗时:626.0648ms
+2024/12/23 09:24:40.574 [I]  [一树药业独山一百五十分店] 耗时:613.839ms
+2024/12/23 09:24:41.200 [I]  [一树药业荔波樟江印象分店] 耗时:625.7505ms
+2024/12/23 09:24:41.874 [I]  [一树药业罗甸湖滨大道一分店] 耗时:674.1831ms
+2024/12/23 09:24:42.546 [I]  [一树药业长顺长发路分店] 耗时:671.5919ms
+2024/12/23 09:24:43.197 [I]  [正和祥凯里锦绣家园店] 耗时:650.984ms
+2024/12/23 09:24:43.747 [I]  [西藏释昢医药有限公司] 耗时:549.7022ms
+2024/12/23 09:24:44.393 [I]  [山东浪潮智慧医疗科技有限公司] 耗时:646.6752ms
+2024/12/23 09:24:44.865 [I]  [一树威宁祖家新世纪广场分店] 耗时:472.0631ms
+2024/12/23 09:24:45.608 [I]  [甲茶镇中心卫生院] 耗时:712.7979ms
+2024/12/23 09:24:46.301 [I]  [通州镇中心卫生院] 耗时:692.4978ms
+2024/12/23 09:24:46.971 [I]  [平舟镇中心卫生院] 耗时:670.3519ms
+2024/12/23 09:24:47.631 [I]  [克度中心卫生院] 耗时:660.1008ms
+2024/12/23 09:24:48.283 [I]  [者密中心卫生院] 耗时:652.0137ms
+2024/12/23 09:24:48.888 [I]  [塘边中心卫生院] 耗时:605.2251ms
+2024/12/23 09:24:49.506 [I]  [金盆街道社区卫生服务中心] 耗时:617.9909ms
+2024/12/23 09:24:50.322 [I]  [长沙河西店] 耗时:787.2632ms
+2024/12/23 09:24:50.996 [I]  [江苏省医药有限公司] 耗时:673.8344ms
+2024/12/23 09:24:51.698 [I]  [贵州益雷药业有限公司] 耗时:702.1ms
+2024/12/23 09:24:52.380 [I]  [平塘县牙舟镇中心卫生院] 耗时:681.697ms
+2024/12/23 09:24:53.114 [I]  [贵州联合仓储物流服务有限公司] 耗时:733.6608ms
+2024/12/23 09:24:53.867 [I]  [正和祥红花岗时代天街二店] 耗时:716.3627ms
+2024/12/23 09:24:54.573 [I]  [正和祥新蒲新龙大道店] 耗时:705.5961ms
+2024/12/23 09:24:55.259 [I]  [平塘县掌布镇中心卫生院] 耗时:686.3162ms
+2024/12/23 09:24:55.996 [I]  [平塘县卡蒲乡中心卫生院] 耗时:736.8123ms
+2024/12/23 09:24:56.769 [I]  [国药控股贵州有限公司云岩分店] 耗时:698.2117ms
+2024/12/23 09:24:57.425 [I]  [国药控股贵州大药房有限公司贵乌路分店] 耗时:655.3179ms
+2024/12/23 09:24:58.083 [I]  [国药控股贵州大药房有限公司瑞金南路分店] 耗时:658.5074ms
+2024/12/23 09:24:58.795 [I]  [国药控股贵州大药房有限公司宝山南路分店] 耗时:712.3169ms
+2024/12/23 09:24:59.494 [I]  [国药控股贵州大药房有限公司大药房店] 耗时:698.6854ms
+2024/12/23 09:25:00.163 [I]  [乌海市中达汇金医疗器械有限公司] 耗时:668.495ms
+2024/12/23 09:25:00.840 [I]  [个人] 耗时:677.7511ms
+2024/12/23 09:25:01.577 [I]  [正和祥盘州一千零八十三分店] 耗时:699.088ms
+2024/12/23 09:25:02.234 [I]  [正和祥钟山三百零三分店] 耗时:656.4222ms
+2024/12/23 09:25:02.885 [I]  [江苏卓阳医疗器械有限公司] 耗时:650.8952ms
+2024/12/23 09:25:03.343 [I]  [贵州国太药业有限公司] 耗时:458.3685ms
+2024/12/23 09:25:03.813 [I]  [益精睛眼科医院] 耗时:470.3558ms
+2024/12/23 09:25:04.504 [I]  [贵州福阳医疗器械有限责任公司] 耗时:648.2108ms
+2024/12/23 09:25:05.176 [I]  [正和祥都匀一百四十七分店] 耗时:672.2804ms
+2024/12/23 09:25:05.939 [I]  [贵州菲尚医疗器械有限公司] 耗时:763.5849ms
+2024/12/23 09:25:06.640 [I]  [云南千恒医疗器械有限公司] 耗时:669.4168ms
+2024/12/23 09:25:07.338 [I]  [国药控股贵州大药房有限公司金朱东路分店] 耗时:698.4196ms
+2024/12/23 09:25:08.009 [I]  [江西滨河实业有限公司] 耗时:671.0022ms
+2024/12/23 09:25:08.702 [I]  [广西贞途医疗器械有限公司] 耗时:693.0183ms
+2024/12/23 09:25:09.346 [I]  [贵州楷丰医疗科技有限公司] 耗时:643.6647ms
+2024/12/23 09:25:09.992 [I]  [贵州正和祥药业有限公司八分店] 耗时:646.8659ms
+2024/12/23 09:25:10.505 [I]  [贵州正和祥有限公司四十四分店] 耗时:512.1434ms
+2024/12/23 09:25:11.480 [I]  [贵州菲尚医疗器械有限公司] 耗时:975.0982ms
+2024/12/23 09:25:12.137 [I]  [贵州易扬医药有限公司] 耗时:656.6724ms
+2024/12/23 09:25:12.782 [I]  [贵州诚创医疗器械有限责任公司] 耗时:613.6571ms
+2024/12/23 09:25:13.437 [I]  [茂名高济医药连锁有限公司电白南粤新风店] 耗时:654.8969ms
+2024/12/23 09:25:14.054 [I]  [惠水县大坝卫生院] 耗时:617.2158ms
+2024/12/23 09:25:15.981 [I]  [贵州瑞丰医药有限公司] 耗时:1.9266844s
+2024/12/23 09:25:16.698 [I]  [哈尔滨市万源医疗器械有限公司] 耗时:621.8899ms
+2024/12/23 09:25:17.345 [I]  [羡塘镇中心卫生院] 耗时:645.9999ms
+2024/12/23 09:25:17.986 [I]  [大龙卫生院] 耗时:640.5487ms
+2024/12/23 09:25:18.656 [I]  [好花红卫生院] 耗时:670.2022ms
+2024/12/23 09:25:19.124 [I]  [一树老百姓六枝桃园店] 耗时:468.0937ms
+2024/12/23 09:25:19.587 [I]  [一树老百姓六枝平寨店] 耗时:462.6411ms
+2024/12/23 09:25:20.093 [I]  [一树老百姓六枝那平店] 耗时:506.3018ms
+2024/12/23 09:25:20.544 [I]  [一树老百姓六枝彩虹湾店] 耗时:450.5016ms
+2024/12/23 09:25:21.027 [I]  [六盘水市水城区红桥街道卫生服务中心] 耗时:453.682ms
+2024/12/23 09:25:21.491 [I]  [六盘水市水城区石龙街道卫生服务中心] 耗时:463.6235ms
+2024/12/23 09:25:22.120 [I]  [六盘水市水城区玉舍镇卫生院] 耗时:629.2354ms
+2024/12/23 09:25:22.741 [I]  [云南妤绣医疗美容有限责任公司] 耗时:620.8587ms
+2024/12/23 09:25:23.277 [I]  [六盘水市水城区坪寨乡卫生院] 耗时:536.1593ms
+2024/12/23 09:25:23.725 [I]  [六盘水市水城区都格镇卫生院] 耗时:447.8822ms
+2024/12/23 09:25:24.209 [I]  [六盘水市水城区蟠龙镇卫生院] 耗时:483.6599ms
+2024/12/23 09:25:24.902 [I]  [正和祥三穗三百五十三分店] 耗时:693.4277ms
+2024/12/23 09:25:25.398 [I]  [六盘水市水城区猴场乡卫生院] 耗时:495.6786ms
+2024/12/23 09:25:26.311 [I]  [贵州省医药(集团)和平医药有限公司铜仁分公司] 耗时:913.3729ms
+2024/12/23 09:25:27.066 [I]  [北京高济百康大药房有限公司新平北路分店] 耗时:719.948ms
+2024/12/23 09:25:27.830 [I]  [修文县洒坪镇卫生院] 耗时:733.5466ms
+2024/12/23 09:25:28.287 [I]  [修文县大石布依族乡卫生院] 耗时:456.3055ms
+2024/12/23 09:25:28.786 [I]  [修文县谷堡镇卫生院] 耗时:499.2328ms
+2024/12/23 09:25:29.248 [I]  [一树老百姓盘州市亦资一分店] 耗时:461.5464ms
+2024/12/23 09:25:29.735 [I]  [一树老百姓盘州市亦资二分店] 耗时:487.2067ms
+2024/12/23 09:25:30.201 [I]  [一树老百姓盘州市亦资三分店] 耗时:465.7376ms
+2024/12/23 09:25:30.660 [I]  [一树老百姓盘州市亦资四分店] 耗时:458.8797ms
+2024/12/23 09:25:31.139 [I]  [一树老百姓盘州市双凤镇一分店] 耗时:479.2517ms
+2024/12/23 09:25:31.710 [I]  [一树老百姓盘州市双凤镇二分店] 耗时:570.0539ms
+2024/12/23 09:25:32.544 [I]  [贵州华丰医药有限公司 ] 耗时:834.3289ms
+2024/12/23 09:25:33.171 [I]  [陕西康泽医药器械有限公司] 耗时:626.6557ms
+2024/12/23 09:33:18.150 [I]  [贵州俊达康药业有限公司] 耗时:1.1145517s
+2024/12/23 09:33:48.264 [I]  [国药控股贵州有限公司] 耗时:513.6589ms
+2024/12/23 09:33:51.930 [I]  [贵州天辰医药有限责任公司] 耗时:1.3141835s
+2024/12/23 09:34:03.477 [I]  [贵州俊勇康药业有限公司] 耗时:746.8665ms
+2024/12/23 09:34:08.754 [I]  [贵州润洲医药有限责任公司] 耗时:1.0560996s
+2024/12/23 09:34:17.118 [I]  [贵州友邦医药有限公司] 耗时:1.1531371s
+2024/12/23 09:35:50.956 [I]  [重庆睿盛生物科技有限公司] 耗时:670.6028ms
+2024/12/23 09:38:43.671 [I]  [国药控股黔南州有限公司黔南大药房] 耗时:848.8353ms
+2024/12/23 09:43:23.269 [I]  [贵州俊达康药业有限公司] 耗时:1.0815027s
+2024/12/23 09:44:14.634 [I]  [贵州润洲医药有限责任公司] 耗时:1.0265149s
+2024/12/23 09:44:18.537 [I]  [贵州俊勇康药业有限公司] 耗时:786.6449ms
+2024/12/23 09:44:20.394 [I]  [贵州友邦医药有限公司] 耗时:1.1645448s
+2024/12/23 09:45:43.414 [I]  [国药控股贵州有限公司] 耗时:551.9537ms
+2024/12/23 09:46:06.050 [I]  [国药控股黔南州有限公司] 耗时:1.8057604s
+2024/12/23 09:47:51.260 [I]  [重庆睿盛生物科技有限公司] 耗时:670.2967ms
+2024/12/23 09:53:28.067 [I]  [贵州俊达康药业有限公司] 耗时:1.0361716s
+2024/12/23 09:54:27.905 [I]  [贵州润洲医药有限责任公司] 耗时:1.0286088s
+2024/12/23 09:54:41.910 [I]  [贵州友邦医药有限公司] 耗时:1.1581566s
+2024/12/23 09:56:03.129 [I]  [贵州俊勇康药业有限公司] 耗时:814.7103ms
+2024/12/23 09:56:48.725 [I]  [国药控股贵州有限公司] 耗时:498.3071ms
+2024/12/23 10:02:08.270 [I]  [长沙河西店] 耗时:893.7934ms
+2024/12/23 10:03:12.784 [I]  [一树药业西秀区体育路三分店] 耗时:671.9857ms
+2024/12/23 10:03:39.441 [I]  [贵州俊达康药业有限公司] 耗时:977.4146ms
+2024/12/23 10:04:51.182 [I]  [贵州润洲医药有限责任公司] 耗时:3.0827724s
+2024/12/23 10:05:01.721 [I]  [贵州友邦医药有限公司] 耗时:1.2391698s
+2024/12/23 10:05:40.722 [I]  [贵州天辰医药有限责任公司] 耗时:1.3177872s
+2024/12/23 10:06:16.119 [I]  [贵州俊勇康药业有限公司] 耗时:1.0349564s
+2024/12/23 10:07:04.387 [I]  [国药控股贵州有限公司] 耗时:529.4802ms
+2024/12/23 10:14:47.053 [I]  [贵州俊达康药业有限公司] 耗时:1.0093931s
+2024/12/23 10:15:05.090 [I]  [贵州友邦医药有限公司] 耗时:1.1900594s
+2024/12/23 10:15:27.819 [I]  [贵州润洲医药有限责任公司] 耗时:1.1088487s
+2024/12/23 10:15:51.161 [I]  [贵州天辰医药有限责任公司] 耗时:2.0780362s
+2024/12/23 10:18:02.490 [I]  [贵州俊勇康药业有限公司] 耗时:787.1483ms
+2024/12/23 10:18:09.135 [I]  [国药控股贵州有限公司] 耗时:923.3171ms
+2024/12/23 10:25:03.499 [I]  [贵州俊达康药业有限公司] 耗时:1.0445058s
+2024/12/23 10:25:20.095 [I]  [国药控股贵州有限公司云岩分店] 耗时:657.1459ms
+2024/12/23 10:25:47.381 [I]  [贵州润洲医药有限责任公司] 耗时:1.081737s
+2024/12/23 10:25:58.470 [I]  [贵州友邦医药有限公司] 耗时:1.1961582s
+2024/12/23 10:28:48.261 [I]  [国药控股黔南州有限公司] 耗时:1.5046737s
+2024/12/23 10:34:02.619 [I]  [贵州俊勇康药业有限公司] 耗时:807.4981ms
+2024/12/23 10:35:05.878 [I]  [贵州俊达康药业有限公司] 耗时:1.0431554s
+2024/12/23 10:35:51.680 [I]  [贵州润洲医药有限责任公司] 耗时:1.1032943s
+2024/12/23 10:36:38.652 [I]  [贵州友邦医药有限公司] 耗时:1.2023777s
+2024/12/23 10:40:06.844 [I]  [惠水县宁旺卫生院] 耗时:755.8458ms
+2024/12/23 10:44:44.739 [I]  [贵州俊勇康药业有限公司] 耗时:772.7612ms
+2024/12/23 10:45:19.210 [I]  [国药控股黔南州有限公司] 耗时:1.6037653s
+2024/12/23 10:45:50.894 [I]  [贵州俊达康药业有限公司] 耗时:1.0261194s
+2024/12/23 10:46:07.647 [I]  [贵州润洲医药有限责任公司] 耗时:1.0344099s
+2024/12/23 10:47:03.447 [I]  [贵州友邦医药有限公司] 耗时:1.5715651s

+ 101 - 0
logs/LogPrintln.go

@@ -0,0 +1,101 @@
+package logs
+
+import (
+	"fmt"
+	"github.com/astaxie/beego/logs"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	"runtime"
+)
+
+var Test = true
+var logx *logs.BeeLogger
+var logxE *logs.BeeLogger
+var logxData *logs.BeeLogger
+var logxOrm *logs.BeeLogger
+
+func init() {
+
+	if runtime.GOOS == "windows" {
+		Test = true
+	} else {
+		Test = false
+	}
+
+	logx = logs.NewLogger()
+	err := logx.SetLogger(logs.AdapterFile, `{"filename":"logs/logx/logx.log"}`)
+	if err != nil {
+		fmt.Println("logs/logx/logx.log 初始化失败!")
+	}
+
+	logxE = logs.NewLogger()
+	err = logxE.SetLogger(logs.AdapterFile, `{"filename":"logs/logxE/logx.log"}`)
+	if err != nil {
+		fmt.Println("logs/logx/logx.log 初始化失败!")
+	}
+	logxData = logs.NewLogger()
+	err = logxData.SetLogger(logs.AdapterFile, `{"filename":"logs/Data/logx.log"}`)
+	if err != nil {
+		fmt.Println("logs/logx/logx.log 初始化失败!")
+	}
+	logxOrm = logs.NewLogger()
+	err = logxOrm.SetLogger(logs.AdapterFile, `{"filename":"logs/Orm/logx.log"}`)
+	if err != nil {
+		fmt.Println("logs/logx/logx.log 初始化失败!")
+	}
+
+	if !Test {
+		orm2.DebugLog = orm2.NewLog(logxOrm)
+	}
+	//
+
+	// 测试 日志分割
+	//go func() {
+	//	t := 1
+	//	orm2.DebugLog.Println("==========DebugLog=========")
+	//	for true {
+	//		t +=1
+	//		orm2.DebugLog.Println("DebugLog:",t)
+	//		time.Sleep(time.Second * 1)
+	//	}
+	//}()
+	//go TimeTask.OrmLog_MonitorScanStatus()
+}
+
+func Println(format string, v ...interface{}) {
+	if Test {
+		fmt.Println(format, v)
+	}
+	logx.Info(format, v)
+
+}
+
+func PrintlnError(format string, v ...interface{}) {
+	if Test {
+		fmt.Println(format, v)
+	}
+	logxE.Error(format, v)
+	logx.Info(format, v)
+}
+
+func PrintlnData(str string) {
+	if Test {
+		fmt.Println(str)
+	}
+	logxData.Info(str)
+}
+
+//func Println(a ...interface{}) {
+//	if test {
+//		fmt.Printf("=>", a)
+//	}
+//	logx.Info(">", a)
+//}
+
+// 日志
+// logs.Println(time.Now().Format("2006-01-02 15:04:05"), "=>", a)
+
+// 重要
+// logs.Println("MqttServer", " 存在报警 跳过:", string(msg))
+
+// 严重
+// logs.Println("MqttServer", " 存在报警 跳过:", string(msg))

+ 0 - 0
logs/Orm/logx.log


+ 2188 - 0
logs/logx/logx.log

@@ -0,0 +1,2188 @@
+2023/10/19 17:40:47.737 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:47.807 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:47.874 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:47.907 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:47.940 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:47.973 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:48.007 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/19 17:40:51.058 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2023/10/19 17:40:51.142 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2023/10/19 17:40:51.207 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2023/10/19 17:40:51.274 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/19 17:40:52.191 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/19 17:40:52.191 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/19 17:40:53.179 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/19 17:40:53.179 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/19 17:40:54.081 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/19 17:40:54.081 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/19 17:40:54.991 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/19 17:40:54.991 [I]  开始处理公司:%!(EXTRA []interface {}=[权限测试])
+2023/10/19 17:40:55.062 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2023/10/19 17:40:55.127 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2023/10/19 17:40:55.194 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳公司])
+2023/10/19 17:40:55.259 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/19 17:40:56.375 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/19 17:40:56.375 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳沙河街一百分店])
+2023/10/19 17:40:56.443 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/19 17:40:57.542 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/19 17:40:57.542 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺公司])
+2023/10/19 17:40:57.608 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/19 17:40:58.668 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/19 17:40:58.668 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节公司])
+2023/10/19 17:40:58.734 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/19 17:40:59.663 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/19 17:40:59.663 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义公司])
+2023/10/19 17:40:59.728 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/19 17:41:01.019 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/19 17:41:01.019 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/19 17:41:02.280 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/19 17:41:02.281 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/19 17:41:03.529 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/19 17:41:03.529 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/19 17:41:04.459 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/19 17:41:04.459 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南公司])
+2023/10/19 17:41:04.526 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/19 17:41:05.470 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/19 17:41:05.470 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/19 17:41:06.417 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/19 17:41:06.417 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/19 17:41:07.438 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/19 17:41:07.438 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/19 17:41:08.372 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/19 17:41:08.372 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树祖家连锁药业有限公司中心店])
+2023/10/19 17:41:08.438 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/19 17:41:14.315 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/19 17:41:14.315 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/19 17:41:15.233 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/19 17:41:15.233 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/19 17:41:16.316 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/19 17:41:16.316 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/19 17:41:17.307 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/19 17:41:17.307 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2023/10/19 17:41:17.373 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/19 17:41:18.394 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/19 17:41:18.394 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/19 17:41:19.912 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/19 17:41:19.912 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/19 17:41:21.511 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/19 17:41:21.511 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南公司])
+2023/10/19 17:41:21.577 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/19 17:41:22.598 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/19 17:41:22.598 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/19 17:41:23.636 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/19 17:41:23.636 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/19 17:41:24.810 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/19 17:41:24.810 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/19 17:41:25.737 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/19 17:41:25.737 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/19 17:41:26.882 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/19 17:41:26.882 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市疾控中心])
+2023/10/19 17:41:26.950 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/19 17:41:28.020 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/19 17:41:28.020 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/19 17:41:29.110 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/19 17:41:29.110 [I]  开始处理公司:%!(EXTRA []interface {}=[菏泽市康利医疗器械有限公司])
+2023/10/19 17:41:29.175 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/19 17:41:31.807 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/19 17:41:31.807 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/19 17:41:35.585 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/19 17:41:35.585 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 10:27:15.773 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:15.838 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:15.907 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:15.939 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:15.971 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:16.002 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:16.034 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.238 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.304 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.368 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.400 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.431 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.464 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:26.496 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/20 10:27:29.540 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2023/10/20 10:27:29.624 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2023/10/20 10:27:29.687 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2023/10/20 10:27:29.751 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 10:27:30.651 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 10:27:30.651 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 10:27:31.617 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 10:27:31.617 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 10:27:32.524 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 10:27:32.524 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 10:27:33.417 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 10:27:33.417 [I]  开始处理公司:%!(EXTRA []interface {}=[权限测试])
+2023/10/20 10:27:33.482 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2023/10/20 10:27:33.552 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2023/10/20 10:27:33.615 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳公司])
+2023/10/20 10:27:33.685 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 10:27:34.768 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 10:27:34.768 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳沙河街一百分店])
+2023/10/20 10:27:34.834 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:27:35.920 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:27:35.920 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺公司])
+2023/10/20 10:27:35.987 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 10:27:37.015 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 10:27:37.015 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节公司])
+2023/10/20 10:27:37.086 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 10:27:37.988 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 10:27:37.988 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义公司])
+2023/10/20 10:27:38.052 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 10:27:39.753 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 10:27:39.753 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 10:27:41.138 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 10:27:41.138 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 10:27:42.514 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 10:27:42.514 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 10:27:43.458 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 10:27:43.458 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南公司])
+2023/10/20 10:27:43.521 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 10:27:44.488 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 10:27:44.488 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 10:27:45.518 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 10:27:45.518 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 10:27:46.567 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 10:27:46.567 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 10:27:47.473 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 10:27:47.473 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树祖家连锁药业有限公司中心店])
+2023/10/20 10:27:47.543 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 10:27:54.560 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 10:27:54.560 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 10:27:55.672 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 10:27:55.672 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 10:27:56.758 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 10:27:56.758 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 10:27:57.795 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 10:27:57.795 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2023/10/20 10:27:57.869 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 10:27:59.010 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 10:27:59.010 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 10:28:00.648 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 10:28:00.648 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 10:28:02.458 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 10:28:02.458 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南公司])
+2023/10/20 10:28:02.526 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 10:28:03.618 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 10:28:03.618 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 10:28:04.792 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 10:28:04.792 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 10:28:06.102 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 10:28:06.102 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 10:28:06.992 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 10:28:06.992 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 10:28:08.141 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 10:28:08.141 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市疾控中心])
+2023/10/20 10:28:08.205 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 10:28:09.364 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 10:28:09.364 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 10:28:10.472 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 10:28:10.472 [I]  开始处理公司:%!(EXTRA []interface {}=[菏泽市康利医疗器械有限公司])
+2023/10/20 10:28:10.535 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:28:13.648 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:28:13.648 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 10:28:17.850 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 10:28:17.850 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 10:28:26.739 [I]  nats OK!%!(EXTRA []interface {}=[])
+2023/10/20 10:28:28.281 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:28:38.989 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 10:28:38.989 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 10:28:39.914 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 10:28:39.914 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 10:28:40.963 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 10:28:40.963 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 10:28:42.603 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 10:28:42.603 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:28:44.836 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:28:44.836 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 10:28:45.849 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 10:28:45.849 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 10:28:47.152 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 10:28:47.152 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 10:28:48.641 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 10:28:48.642 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 10:28:49.676 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 10:28:49.676 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁公司])
+2023/10/20 10:28:49.751 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 10:28:50.759 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 10:28:50.759 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 10:28:51.862 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 10:28:51.862 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 10:28:52.820 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 10:28:52.821 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 10:28:54.084 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 10:28:54.084 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 10:28:55.422 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 10:28:55.422 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 10:28:56.408 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 10:28:56.409 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 10:28:57.362 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 10:28:57.362 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 10:28:58.303 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 10:28:58.303 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水公司])
+2023/10/20 10:28:58.370 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 10:28:59.295 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 10:28:59.295 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 10:29:00.252 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 10:29:00.252 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 10:29:01.186 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 10:29:01.186 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 10:29:02.264 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 10:29:02.264 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 10:29:03.239 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 10:29:03.239 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 10:29:04.448 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 10:29:04.448 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 10:29:05.652 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 10:29:05.652 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 10:29:07.082 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 10:29:07.082 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 10:29:08.258 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 10:29:08.258 [I]  开始处理公司:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/20 10:29:08.323 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 10:29:09.293 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 10:29:09.293 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 10:29:10.324 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 10:29:10.324 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/20 10:29:10.387 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 10:29:11.390 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 10:29:29.084 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:37:37.845 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 10:37:38.942 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 10:39:03.337 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:39:04.463 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:39:14.054 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:39:17.070 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:39:29.339 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:40:29.142 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:41:55.055 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:41:57.237 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:48:39.434 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 10:48:55.665 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 10:50:07.861 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:50:21.838 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 10:50:26.211 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:50:42.250 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 10:50:42.423 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:51:41.707 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 10:53:56.288 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:53:58.270 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 10:55:41.014 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 10:55:41.913 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 11:00:11.517 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 11:00:12.388 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 11:01:04.449 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:01:05.560 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:01:14.770 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:01:17.874 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:01:43.327 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:02:44.522 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:03:52.176 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 11:03:53.161 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 11:05:55.829 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:06:00.449 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:06:51.866 [I]  Read_Device_ByT_sn%!(EXTRA []interface {}=[invalid connection])
+2023/10/20 11:11:42.065 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:11:58.546 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:11:58.632 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:12:01.436 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:12:01.755 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 11:12:02.965 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 11:12:57.044 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:14:00.751 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:14:00.835 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:14:01.969 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:18:09.485 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:18:11.584 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:22:04.147 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:22:06.850 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:22:20.520 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 11:22:21.594 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 11:24:07.449 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:25:11.394 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:25:15.040 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:25:16.361 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:30:10.356 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:30:12.449 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:33:15.555 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:33:18.328 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:35:21.381 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:36:23.068 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:36:24.250 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:36:27.910 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:37:04.283 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:37:05.469 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:42:11.218 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:42:13.209 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:43:45.214 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:43:47.903 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:46:23.485 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:47:25.970 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:47:27.844 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:47:28.914 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:52:42.168 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:52:44.183 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 11:52:45.495 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 11:52:46.559 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 11:54:05.220 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:54:07.848 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 11:57:28.252 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:58:34.447 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 11:58:35.173 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:58:38.852 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 11:59:03.115 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 11:59:04.188 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:04:02.812 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:04:04.765 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:05:16.919 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:05:19.536 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:08:42.888 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:09:46.833 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:09:47.153 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:09:48.223 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:15:46.717 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:15:49.427 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:17:40.580 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:17:42.553 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:20:10.531 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:21:13.735 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:21:16.785 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 12:21:20.391 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 12:21:20.555 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:21:21.626 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:23:14.925 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 12:23:16.094 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 12:26:06.533 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:26:09.166 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:29:14.240 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 12:29:15.131 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 12:29:15.131 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 12:29:16.079 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 12:29:16.079 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 12:29:16.965 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 12:29:16.965 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 12:29:17.844 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 12:29:17.844 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 12:29:18.920 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 12:29:18.920 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 12:29:19.966 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 12:29:19.966 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 12:29:20.883 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 12:29:20.883 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 12:29:22.166 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 12:29:22.166 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 12:29:23.400 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 12:29:23.400 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 12:29:24.651 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 12:29:24.651 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 12:29:25.565 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 12:29:25.565 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 12:29:26.482 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 12:29:26.482 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 12:29:27.402 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 12:29:27.402 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 12:29:28.390 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 12:29:28.390 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 12:29:29.295 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 12:29:29.295 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 12:29:35.118 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 12:29:35.118 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 12:29:36.036 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 12:29:36.036 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 12:29:37.121 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 12:29:37.121 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 12:29:38.085 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 12:29:38.085 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 12:29:39.077 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 12:29:39.077 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 12:29:40.530 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 12:29:40.530 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 12:29:42.007 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:29:42.124 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 12:29:42.124 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:29:43.131 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:29:43.131 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 12:29:43.994 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:29:44.128 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 12:29:44.128 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 12:29:45.054 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 12:29:45.054 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 12:29:46.192 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 12:29:46.192 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 12:29:47.253 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 12:29:47.253 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 12:29:48.369 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 12:29:48.369 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 12:30:04.370 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 12:30:04.370 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 12:30:05.247 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 12:30:05.247 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 12:30:06.144 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 12:30:06.144 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 12:30:07.600 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 12:30:07.600 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 12:30:08.559 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 12:30:08.559 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 12:30:09.787 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 12:30:09.787 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 12:30:11.138 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 12:30:11.138 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 12:30:12.035 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 12:30:12.035 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 12:30:12.971 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 12:30:12.971 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 12:30:13.972 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 12:30:13.972 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 12:30:14.956 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 12:30:14.956 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 12:30:16.107 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 12:30:16.107 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 12:30:17.348 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 12:30:17.348 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 12:30:18.234 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 12:30:18.234 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 12:30:19.116 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 12:30:19.116 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 12:30:20.005 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 12:30:20.005 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 12:30:20.896 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 12:30:20.896 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 12:30:21.895 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 12:30:21.895 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 12:30:22.784 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 12:30:22.784 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 12:30:23.688 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 12:30:23.688 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 12:30:24.598 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 12:30:24.598 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 12:30:25.722 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 12:30:25.722 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 12:30:26.828 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 12:30:26.828 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 12:30:27.757 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 12:30:27.757 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 12:30:28.721 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 12:30:28.721 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 12:30:29.620 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 12:30:29.620 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 12:30:30.535 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 12:30:30.535 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 12:30:31.438 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 12:31:17.340 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:32:20.437 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:33:04.564 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:33:05.716 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:33:50.649 [I]  Read_Device_ByT_sn%!(EXTRA []interface {}=[invalid connection])
+2023/10/20 12:37:17.527 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:37:20.201 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:40:37.550 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 12:40:38.661 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 12:40:43.601 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 12:40:44.548 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 12:41:26.845 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:41:28.838 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:42:20.523 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:43:25.688 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:43:28.157 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:43:29.311 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:43:53.229 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:43:54.242 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:45:53.656 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 12:45:57.823 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 12:47:48.567 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:47:51.215 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:51:58.230 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:52:00.250 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 12:53:26.115 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:54:33.043 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 12:54:34.109 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:54:35.160 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 12:55:03.243 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:55:04.383 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 12:57:51.242 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:57:53.911 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 12:58:35.365 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/20 13:03:06.995 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:03:09.037 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:04:45.092 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:05:49.957 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:05:50.123 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:05:51.288 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:06:02.016 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:06:03.039 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:07:59.905 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:08:02.554 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:09:54.290 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 13:09:58.327 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 13:15:56.999 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:17:00.857 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:17:03.706 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:17:05.742 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:17:06.069 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:17:07.188 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:18:02.595 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:18:03.610 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:19:18.641 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:19:21.322 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:27:07.762 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:28:10.254 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:28:12.357 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:28:13.369 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:28:27.291 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 13:28:28.191 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 13:28:41.168 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:28:43.150 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:29:02.754 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:29:03.866 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:29:49.684 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:29:52.359 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:33:55.190 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 13:33:59.360 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 13:34:44.895 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 13:34:46.053 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 13:35:06.595 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 13:35:07.707 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 13:35:49.594 [I]  Read_Device_ByT_sn%!(EXTRA []interface {}=[invalid connection])
+2023/10/20 13:38:18.928 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:39:25.678 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:39:28.385 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:39:29.497 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:39:55.357 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:39:56.373 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:40:01.236 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:40:03.940 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:40:18.369 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:40:20.403 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:49:13.627 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 13:49:14.566 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 13:49:28.230 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:50:35.903 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 13:50:36.475 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:50:39.139 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 13:50:39.302 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:50:40.309 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 13:50:40.715 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:50:42.693 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 13:51:03.326 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:51:04.420 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 13:56:50.883 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 13:56:54.941 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:00:47.261 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:01:52.601 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:01:52.828 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:01:53.939 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:01:54.246 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:01:56.914 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:01:58.595 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:02:00.577 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:02:04.131 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:02:05.130 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:11:59.560 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:13:10.106 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:13:10.269 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:13:12.924 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:13:15.683 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:13:16.777 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:14:04.549 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:14:05.552 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:15:22.402 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:15:24.479 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:20:35.799 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:20:39.847 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:23:11.932 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:24:21.575 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:24:22.396 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:24:25.035 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:24:26.311 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:24:27.329 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:25:02.877 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:25:03.974 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:27:23.017 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:27:25.120 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:30:34.292 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 14:30:35.188 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 14:30:35.188 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 14:30:36.176 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 14:30:36.176 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 14:30:37.079 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 14:30:37.079 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 14:30:37.975 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 14:30:37.975 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 14:30:39.148 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 14:30:39.148 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 14:30:40.258 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 14:30:40.258 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 14:30:41.209 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 14:30:41.209 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 14:30:42.506 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 14:30:42.506 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 14:30:43.716 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 14:30:43.716 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 14:30:44.989 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 14:30:44.989 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 14:30:45.901 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 14:30:45.901 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 14:30:46.832 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 14:30:46.832 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 14:30:47.804 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 14:30:47.804 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 14:30:48.828 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 14:30:48.828 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 14:30:49.753 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 14:30:49.753 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 14:30:55.533 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 14:30:55.533 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 14:30:56.442 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 14:30:56.442 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 14:30:57.506 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 14:30:57.506 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 14:30:58.488 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 14:30:58.488 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 14:30:59.499 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 14:30:59.499 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 14:31:00.991 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 14:31:00.991 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 14:31:02.646 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 14:31:02.646 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 14:31:03.693 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 14:31:03.693 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 14:31:04.846 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 14:31:04.846 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 14:31:05.793 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 14:31:05.793 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 14:31:06.961 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 14:31:06.961 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 14:31:08.041 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 14:31:08.041 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 14:31:09.143 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 14:31:09.143 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:31:12.886 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:31:12.886 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 14:31:29.471 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 14:31:29.471 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 14:31:30.364 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 14:31:30.364 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 14:31:31.312 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 14:31:31.312 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 14:31:32.790 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 14:31:32.790 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 14:31:33.781 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 14:31:33.781 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 14:31:35.044 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 14:31:35.044 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 14:31:36.425 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 14:31:36.425 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 14:31:37.328 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 14:31:37.328 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 14:31:38.271 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 14:31:38.271 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 14:31:39.240 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 14:31:39.240 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 14:31:40.160 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 14:31:40.160 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 14:31:41.314 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 14:31:41.314 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 14:31:42.565 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 14:31:42.565 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 14:31:43.462 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 14:31:43.462 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 14:31:44.360 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 14:31:44.360 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 14:31:45.271 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 14:31:45.271 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 14:31:46.185 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 14:31:46.185 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 14:31:47.094 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 14:31:47.094 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 14:31:48.024 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 14:31:48.024 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 14:31:48.926 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 14:31:48.926 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 14:31:49.843 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 14:31:49.843 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 14:31:50.958 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 14:31:50.958 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 14:31:52.045 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 14:31:52.045 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 14:31:52.936 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 14:31:52.936 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 14:31:53.886 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 14:31:53.886 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 14:31:54.796 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 14:31:54.796 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 14:31:55.691 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 14:31:55.691 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 14:31:56.610 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 14:31:56.610 [I]  开始处理公司:%!(EXTRA []interface {}=[河北瀚得科技有限公司])
+2023/10/20 14:34:23.799 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:35:33.216 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:35:34.354 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:35:35.452 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:35:35.804 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:35:38.459 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:35:57.326 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:35:58.335 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:38:56.563 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:38:58.647 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:41:04.360 [I]  Read_Device_ByT_sn%!(EXTRA []interface {}=[invalid connection])
+2023/10/20 14:44:36.510 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:44:42.511 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 14:45:39.227 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:46:47.376 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:46:47.534 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:46:50.158 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:46:50.315 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:46:51.312 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:47:03.215 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 14:47:04.441 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 14:47:04.523 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:47:05.607 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:54:20.742 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:54:23.509 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 14:56:50.265 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:58:01.136 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 14:58:01.299 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:58:02.556 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 14:58:02.885 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:58:05.578 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 14:58:07.371 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 14:58:08.352 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:06:19.553 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:06:21.602 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:08:02.966 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:09:13.008 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:09:13.216 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:09:15.956 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:09:18.844 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:09:19.937 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:10:06.447 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:10:07.432 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:10:45.474 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:10:49.595 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:14:27.778 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/20 15:17:54.374 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:17:56.417 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:19:13.993 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:20:24.090 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:20:24.337 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:20:27.237 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:20:29.235 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:20:30.282 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:21:03.327 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:21:04.428 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:30:26.074 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:31:34.634 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:31:36.337 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:31:37.443 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:31:37.822 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:31:40.454 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:31:59.263 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:32:00.334 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:33:23.736 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:33:26.091 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:33:27.072 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:33:31.043 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:37:53.817 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 15:37:54.734 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 15:39:23.288 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 15:39:24.202 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 15:41:41.526 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:42:50.813 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:42:51.017 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:42:53.940 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:42:54.261 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:42:55.276 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:43:03.990 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:43:05.085 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:45:24.770 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:45:26.826 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:46:12.367 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 15:46:13.554 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 15:51:52.343 [I]  Read_Device_ByT_sn%!(EXTRA []interface {}=[invalid connection])
+2023/10/20 15:52:51.594 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:54:00.655 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 15:54:00.932 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:54:02.034 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 15:54:03.104 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:54:05.707 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 15:54:08.179 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:54:09.169 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 15:56:55.365 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:56:59.483 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 15:56:59.557 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:57:01.512 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 15:59:05.351 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 15:59:06.521 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 16:04:06.127 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:05:16.302 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:05:16.379 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:05:19.012 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:05:21.846 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:05:22.932 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:05:52.834 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:05:53.790 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:12:24.340 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:12:26.428 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:15:16.529 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:16:26.007 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:16:26.849 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:16:29.452 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:16:30.621 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:16:31.618 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:17:03.655 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:17:04.699 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:21:11.904 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:21:15.825 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:21:21.520 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 16:21:22.779 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 16:24:25.708 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:24:27.813 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:26:27.809 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:27:36.793 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:27:37.560 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:27:38.602 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:27:39.508 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:27:42.146 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:28:01.275 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:28:02.317 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:28:27.993 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 16:28:28.893 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/20 16:31:59.685 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 16:32:00.538 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/20 16:32:00.538 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 16:32:01.464 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/20 16:32:01.464 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 16:32:02.318 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/20 16:32:02.318 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 16:32:03.173 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/20 16:32:03.173 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 16:32:04.245 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/20 16:32:04.245 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 16:32:05.220 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/20 16:32:05.220 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 16:32:06.091 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/20 16:32:06.091 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 16:32:07.362 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/20 16:32:07.362 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 16:32:08.541 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/20 16:32:08.541 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 16:32:09.880 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/20 16:32:09.880 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 16:32:10.765 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/20 16:32:10.765 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 16:32:11.679 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/20 16:32:11.679 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 16:32:12.634 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/20 16:32:12.634 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 16:32:13.751 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/20 16:32:13.751 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 16:32:14.724 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/20 16:32:14.724 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 16:32:20.561 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/20 16:32:20.561 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 16:32:21.446 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/20 16:32:21.446 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 16:32:22.474 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/20 16:32:22.474 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 16:32:23.393 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/20 16:32:23.393 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 16:32:24.369 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/20 16:32:24.369 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 16:32:25.834 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/20 16:32:25.834 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 16:32:27.425 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/20 16:32:27.425 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 16:32:28.489 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/20 16:32:28.489 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 16:32:29.629 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 16:32:29.629 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 16:32:30.516 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/20 16:32:30.516 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 16:32:31.590 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/20 16:32:31.590 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 16:32:32.693 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/20 16:32:32.693 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 16:32:33.713 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/20 16:32:33.713 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:32:37.302 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:32:37.302 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 16:32:53.665 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/20 16:32:53.665 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 16:32:54.521 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/20 16:32:54.521 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 16:32:55.445 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/20 16:32:55.445 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 16:32:56.876 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/20 16:32:56.876 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 16:32:57.889 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/20 16:32:57.889 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 16:32:59.272 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/20 16:32:59.272 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 16:33:00.764 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/20 16:33:00.764 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 16:33:01.775 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/20 16:33:01.775 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 16:33:02.667 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/20 16:33:02.667 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 16:33:03.585 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/20 16:33:03.585 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 16:33:04.472 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/20 16:33:04.472 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 16:33:05.580 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/20 16:33:05.580 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 16:33:06.763 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/20 16:33:06.763 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 16:33:07.625 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/20 16:33:07.625 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 16:33:08.511 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/20 16:33:08.511 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 16:33:09.462 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/20 16:33:09.462 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 16:33:10.373 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/20 16:33:10.373 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 16:33:11.274 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/20 16:33:11.274 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 16:33:12.207 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/20 16:33:12.207 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 16:33:13.156 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/20 16:33:13.156 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 16:33:14.223 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/20 16:33:14.223 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 16:33:15.305 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/20 16:33:15.305 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 16:33:16.148 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/20 16:33:16.148 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 16:33:17.114 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/20 16:33:17.114 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 16:33:18.063 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/20 16:33:18.063 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 16:33:18.970 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/20 16:33:18.970 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 16:33:19.841 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 16:35:50.827 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:35:52.900 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:37:43.446 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:38:53.372 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:38:53.600 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:38:54.555 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:38:54.637 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:38:57.257 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:39:04.554 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:39:05.660 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:45:28.617 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:45:32.698 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 16:48:53.843 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:50:03.242 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 16:50:03.394 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:50:04.470 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 16:50:05.511 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:50:08.095 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 16:50:08.983 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:50:09.936 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 16:51:22.885 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 16:51:24.917 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 17:00:08.726 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 17:01:16.936 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 17:01:18.417 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 17:01:19.419 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 17:01:20.983 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 17:01:22.086 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 17:01:25.203 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 17:01:28.039 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 17:03:24.923 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 17:03:26.982 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/20 17:09:59.488 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 17:10:00.384 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/20 17:10:03.754 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 17:10:04.866 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/20 17:10:17.504 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 17:10:21.500 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/20 17:11:18.098 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 17:12:27.402 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/20 17:12:28.536 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 17:12:31.223 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/20 17:12:31.972 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 17:12:32.917 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/20 17:13:03.754 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/20 17:13:04.807 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 11:14:35.193 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.262 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.331 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.365 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.399 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.433 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:35.467 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:14:38.511 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2023/10/24 11:14:38.598 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2023/10/24 11:14:38.665 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2023/10/24 11:14:38.733 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 11:14:39.695 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 11:14:39.695 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 11:14:40.705 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 11:14:40.705 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 11:14:41.637 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 11:14:41.637 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 11:14:42.597 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 11:14:42.597 [I]  开始处理公司:%!(EXTRA []interface {}=[权限测试])
+2023/10/24 11:14:42.665 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2023/10/24 11:14:42.733 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2023/10/24 11:14:42.800 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳公司])
+2023/10/24 11:14:42.869 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 11:14:44.032 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 11:14:44.032 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳沙河街一百分店])
+2023/10/24 11:14:44.100 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 11:14:45.208 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 11:14:45.208 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺公司])
+2023/10/24 11:14:45.275 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 11:14:46.332 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 11:14:46.332 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节公司])
+2023/10/24 11:14:46.399 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 11:14:47.358 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 11:14:47.358 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义公司])
+2023/10/24 11:14:47.426 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 11:14:48.767 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 11:14:48.767 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 11:14:49.939 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 11:14:49.939 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 11:14:51.236 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 11:14:51.236 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 11:14:52.211 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 11:14:52.211 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南公司])
+2023/10/24 11:14:52.278 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 11:14:53.271 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 11:14:53.271 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 11:14:54.334 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 11:14:54.334 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 11:14:55.458 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 11:14:55.458 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 11:14:56.410 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 11:14:56.410 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树祖家连锁药业有限公司中心店])
+2023/10/24 11:14:56.478 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 11:15:01.407 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 11:15:01.407 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 11:15:02.429 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 11:15:02.429 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 11:15:03.531 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 11:15:03.531 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 11:15:04.552 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 11:15:04.552 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2023/10/24 11:15:04.621 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 11:15:05.715 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 11:15:05.715 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 11:15:07.287 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 11:15:07.287 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 11:15:08.912 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 11:15:08.912 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南公司])
+2023/10/24 11:15:08.981 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 11:15:10.021 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 11:15:10.021 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 11:15:11.070 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 11:15:11.070 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 11:15:12.269 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 11:15:12.269 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 11:15:13.217 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 11:15:13.217 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 11:15:14.545 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 11:15:14.545 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市疾控中心])
+2023/10/24 11:15:14.625 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 11:15:15.844 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 11:15:15.844 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 11:15:17.038 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 11:15:17.038 [I]  开始处理公司:%!(EXTRA []interface {}=[菏泽市康利医疗器械有限公司])
+2023/10/24 11:15:17.111 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 11:15:20.375 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 11:15:20.375 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 11:15:23.647 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 11:15:23.647 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 11:15:35.683 [I]  nats OK!%!(EXTRA []interface {}=[])
+2023/10/24 11:15:37.486 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 11:15:38.554 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 11:15:38.554 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 11:15:39.522 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 11:15:39.522 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 11:15:40.587 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 11:15:40.587 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 11:15:42.155 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 11:15:42.155 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 11:15:44.386 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 11:15:44.386 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 11:15:45.390 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 11:15:45.390 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 11:15:46.562 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 11:15:46.562 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 11:15:47.965 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 11:15:47.965 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 11:15:48.931 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 11:15:48.931 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁公司])
+2023/10/24 11:15:48.999 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 11:15:49.982 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 11:15:49.982 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 11:15:51.012 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 11:15:51.012 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 11:15:52.013 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 11:15:52.013 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 11:15:53.272 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 11:15:53.272 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 11:15:54.721 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 11:15:54.721 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 11:15:55.662 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 11:15:55.662 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 11:15:56.614 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 11:15:56.614 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 11:15:57.570 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 11:15:57.570 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水公司])
+2023/10/24 11:15:57.638 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 11:15:58.586 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 11:15:58.586 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 11:15:59.639 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 11:15:59.639 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 11:16:00.605 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 11:16:00.605 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 11:16:01.549 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 11:16:01.549 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 11:16:02.539 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 11:16:02.539 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 11:16:03.760 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 11:16:03.760 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 11:16:04.949 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 11:16:04.949 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 11:16:05.886 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 11:16:05.886 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 11:16:06.874 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 11:16:06.874 [I]  开始处理公司:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 11:16:07.834 [I]  处理公司完成:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 11:16:07.834 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 11:16:08.767 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 11:16:08.767 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 11:16:09.698 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 11:16:09.698 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 11:16:10.627 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 11:16:10.627 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 11:16:11.576 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 11:16:11.576 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 11:16:12.523 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 11:16:12.523 [I]  开始处理公司:%!(EXTRA []interface {}=[河北瀚得科技有限公司])
+2023/10/24 11:16:12.591 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 11:16:13.673 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 11:16:13.673 [I]  开始处理公司:%!(EXTRA []interface {}=[国控贵州])
+2023/10/24 11:16:13.742 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2023/10/24 11:16:14.703 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2023/10/24 11:16:38.143 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 11:18:56.737 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:56.805 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:56.873 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:56.907 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:56.941 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:56.976 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:18:57.010 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2023/10/24 11:19:00.061 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2023/10/24 11:19:00.096 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2023/10/24 11:19:00.165 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2023/10/24 11:19:00.233 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 11:19:01.192 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 11:19:01.192 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 11:19:02.218 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 11:19:02.218 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 11:19:03.155 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 11:19:03.155 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 11:19:04.107 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 11:19:04.107 [I]  开始处理公司:%!(EXTRA []interface {}=[权限测试])
+2023/10/24 11:19:04.178 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2023/10/24 11:19:04.246 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2023/10/24 11:19:04.317 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳公司])
+2023/10/24 11:19:04.405 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 11:19:05.583 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 11:19:05.583 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳沙河街一百分店])
+2023/10/24 11:19:05.654 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 11:19:06.757 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 11:19:06.757 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺公司])
+2023/10/24 11:19:06.830 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 11:19:07.884 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 11:19:07.884 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节公司])
+2023/10/24 11:19:07.954 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 11:19:08.922 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 11:19:08.922 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义公司])
+2023/10/24 11:19:08.990 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 11:19:10.349 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 11:19:10.349 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 11:19:11.798 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 11:19:11.798 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 11:19:13.277 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 11:19:13.277 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 11:19:14.376 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 11:19:14.376 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南公司])
+2023/10/24 11:19:14.448 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 11:19:15.426 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 11:19:15.426 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 11:19:16.401 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 11:19:16.401 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 11:19:17.444 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 11:19:17.444 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 11:19:18.421 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 11:19:18.421 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树祖家连锁药业有限公司中心店])
+2023/10/24 11:19:18.489 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 11:19:23.512 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 11:19:23.512 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 11:19:24.465 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 11:19:24.465 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 11:19:25.593 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 11:19:25.593 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 11:19:26.627 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 11:19:26.627 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2023/10/24 11:19:26.695 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 11:19:27.745 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 11:19:27.745 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 11:19:29.223 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 11:19:29.223 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 11:19:30.858 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 11:19:30.858 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南公司])
+2023/10/24 11:19:30.932 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 11:19:32.117 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 11:19:32.117 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 11:19:33.201 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 11:19:33.201 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 11:19:35.029 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 11:19:35.029 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 11:19:36.106 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 11:19:36.106 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 11:19:37.338 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 11:19:37.338 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市疾控中心])
+2023/10/24 11:19:37.407 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 11:19:38.710 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 11:19:38.710 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 11:19:39.815 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 11:19:39.815 [I]  开始处理公司:%!(EXTRA []interface {}=[菏泽市康利医疗器械有限公司])
+2023/10/24 11:19:39.882 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 11:19:43.178 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 11:19:43.178 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 11:19:46.472 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 11:19:46.472 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 11:20:01.457 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 11:20:01.457 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 11:20:02.391 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 11:20:02.391 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 11:20:03.516 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 11:20:03.516 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 11:20:05.013 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 11:20:05.013 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 11:20:08.976 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 11:20:08.976 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 11:20:14.362 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 11:20:14.362 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 11:20:16.960 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 11:20:16.960 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 11:20:18.289 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 11:20:18.289 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 11:20:19.217 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 11:20:19.217 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁公司])
+2023/10/24 11:20:19.285 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 11:20:20.254 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 11:20:20.254 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 11:20:21.259 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 11:20:21.259 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 11:20:22.225 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 11:20:22.225 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 11:20:23.439 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 11:20:23.439 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 11:20:24.718 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 11:20:24.718 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 11:21:24.639 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 11:21:24.639 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 11:21:25.589 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 11:21:25.589 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 11:21:26.558 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 11:21:26.558 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 11:21:27.529 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 11:21:27.529 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水公司])
+2023/10/24 11:21:27.605 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 11:21:28.588 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 11:21:28.588 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 11:21:29.542 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 11:21:29.542 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 11:21:30.507 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 11:21:30.507 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 11:21:31.495 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 11:21:31.495 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 11:21:32.579 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 11:21:32.579 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 11:21:33.954 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 11:21:33.954 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 11:21:35.116 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 11:21:35.116 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 11:21:36.068 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 11:21:36.068 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 11:21:37.057 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 11:21:37.057 [I]  开始处理公司:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 11:21:38.045 [I]  处理公司完成:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 11:21:38.045 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 11:21:38.986 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 11:21:38.986 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 11:21:39.925 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 11:21:39.925 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 11:21:40.905 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 11:21:40.905 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 11:21:41.849 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 11:21:41.849 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 11:21:42.800 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 11:21:42.800 [I]  开始处理公司:%!(EXTRA []interface {}=[河北瀚得科技有限公司])
+2023/10/24 11:21:42.867 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 11:21:43.923 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 11:21:43.923 [I]  开始处理公司:%!(EXTRA []interface {}=[国控贵州])
+2023/10/24 11:21:43.991 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2023/10/24 11:21:44.943 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2023/10/24 13:21:48.456 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 13:21:49.397 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2023/10/24 13:21:49.397 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 13:21:50.433 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2023/10/24 13:21:50.433 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 13:21:51.383 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2023/10/24 13:21:51.383 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 13:21:52.335 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2023/10/24 13:21:52.335 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 13:21:53.509 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳地矿分店])
+2023/10/24 13:21:53.509 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 13:21:54.721 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳中山东路店])
+2023/10/24 13:21:54.721 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 13:21:55.792 [I]  处理公司完成:%!(EXTRA []interface {}=[安顺体育路三分店])
+2023/10/24 13:21:55.792 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 13:21:56.757 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树18分店])
+2023/10/24 13:21:56.757 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 13:21:58.100 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树662分店])
+2023/10/24 13:21:58.100 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 13:21:59.298 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树286分店])
+2023/10/24 13:21:59.298 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 13:22:00.591 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树新蒲603店])
+2023/10/24 13:22:00.591 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 13:22:01.555 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树正大37店])
+2023/10/24 13:22:01.555 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 13:22:02.551 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南湘君斗篷山路店])
+2023/10/24 13:22:02.551 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 13:22:03.569 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南平塘571店])
+2023/10/24 13:22:03.569 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 13:22:04.637 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南都匀东京街262分店])
+2023/10/24 13:22:04.637 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 13:22:05.694 [I]  处理公司完成:%!(EXTRA []interface {}=[毕节一树药业有限公司十一分店])
+2023/10/24 13:22:05.694 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 13:22:10.632 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2023/10/24 13:22:10.632 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 13:22:11.613 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2023/10/24 13:22:11.613 [I]  开始处理公司:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 13:22:12.744 [I]  处理公司完成:%!(EXTRA []interface {}=[一树第一百分店])
+2023/10/24 13:22:12.744 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 13:22:13.768 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2023/10/24 13:22:13.768 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 13:22:14.887 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫五分店])
+2023/10/24 13:22:14.887 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 13:22:16.413 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里韶山南路分店])
+2023/10/24 13:22:16.413 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 13:22:18.074 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里经济开发区开元大道分店])
+2023/10/24 13:22:18.074 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 13:22:19.139 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市市医院分店])
+2023/10/24 13:22:19.139 [I]  开始处理公司:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 13:22:20.265 [I]  处理公司完成:%!(EXTRA []interface {}=[一树兴义市州医院分店])
+2023/10/24 13:22:20.265 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 13:22:21.549 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2023/10/24 13:22:21.549 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 13:22:22.561 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司1])
+2023/10/24 13:22:22.561 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 13:22:23.776 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2023/10/24 13:22:23.776 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 13:22:24.877 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2023/10/24 13:22:24.877 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 13:22:25.966 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2023/10/24 13:22:25.966 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 13:22:29.233 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏品康医药投资有限公司])
+2023/10/24 13:22:29.233 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 13:22:32.552 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2023/10/24 13:22:32.552 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 13:22:47.314 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2023/10/24 13:22:47.314 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 13:22:48.289 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2023/10/24 13:22:48.289 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 13:22:49.261 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2023/10/24 13:22:49.261 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 13:22:50.726 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2023/10/24 13:22:50.726 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 13:22:52.783 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2023/10/24 13:22:52.783 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 13:22:53.866 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫38分店])
+2023/10/24 13:22:53.866 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 13:22:55.023 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2023/10/24 13:22:55.023 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 13:22:56.346 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2023/10/24 13:22:56.346 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 13:22:57.297 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2023/10/24 13:22:57.297 [I]  开始处理公司:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 13:22:58.297 [I]  处理公司完成:%!(EXTRA []interface {}=[一树铜仁民生川硐分店])
+2023/10/24 13:22:58.297 [I]  开始处理公司:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 13:22:59.304 [I]  处理公司完成:%!(EXTRA []interface {}=[仁怀市一树药业融亿店])
+2023/10/24 13:22:59.304 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 13:23:00.360 [I]  处理公司完成:%!(EXTRA []interface {}=[遵义一树道真芙蓉江路店])
+2023/10/24 13:23:00.360 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 13:23:01.604 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2023/10/24 13:23:01.604 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 13:23:02.874 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2023/10/24 13:23:02.874 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 13:24:03.257 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司(新仓库)])
+2023/10/24 13:24:03.257 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 13:24:04.227 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2023/10/24 13:24:04.227 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 13:24:05.196 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫62分店])
+2023/10/24 13:24:05.196 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 13:24:06.161 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省惠水县疾病预防控制中心])
+2023/10/24 13:24:06.161 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 13:24:07.108 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六盘水钟山店])
+2023/10/24 13:24:07.108 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 13:24:08.059 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司六枝彩虹湾店])
+2023/10/24 13:24:08.059 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 13:24:09.033 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市翰林一分店])
+2023/10/24 13:24:09.033 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 13:24:09.976 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树老百姓药业连锁有限公司盘州市红果八分店])
+2023/10/24 13:24:09.976 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 13:24:10.950 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2023/10/24 13:24:10.950 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 13:24:12.168 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2023/10/24 13:24:12.168 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 13:24:13.318 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2023/10/24 13:24:13.318 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 13:24:14.261 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司帝景传说分店])
+2023/10/24 13:24:14.261 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 13:24:15.241 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2023/10/24 13:24:15.241 [I]  开始处理公司:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 13:24:16.188 [I]  处理公司完成:%!(EXTRA []interface {}=[山西传世三和科技有限公司])
+2023/10/24 13:24:16.188 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 13:24:17.123 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫二十六分店])
+2023/10/24 13:24:17.123 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 13:24:18.062 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫三分店])
+2023/10/24 13:24:18.062 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 13:24:19.007 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫四分店])
+2023/10/24 13:24:19.007 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 13:24:19.951 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州一树药业股份有限公司北京路分店])
+2023/10/24 13:24:19.951 [I]  开始处理公司:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 13:24:20.891 [I]  处理公司完成:%!(EXTRA []interface {}=[一树凯里小十字分店])
+2023/10/24 13:24:20.891 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 13:24:21.977 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2023/10/24 13:24:21.977 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2023/10/24 13:24:22.957 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2024/06/20 15:50:55.481 [I]  {"key":"ColdDataV_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.521 [I]  {"key":"redis_User_Company","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.533 [I]  {"key":"redis_Device","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.539 [I]  {"key":"redis_DeviceData","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.545 [I]  {"key":"redis_DeviceSensor","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.551 [I]  {"key":"redis_DeviceSensorParameter","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:55.556 [I]  {"key":"redis_WarningNum","conn":"127.0.0.1:43379","dbNum":"1","password":""}%!(EXTRA []interface {}=[])
+2024/06/20 15:50:58.581 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2024/06/20 15:50:58.619 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2024/06/20 15:50:58.631 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2024/06/20 15:50:58.642 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2024/06/20 15:50:58.969 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2024/06/20 15:50:58.969 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2024/06/20 15:50:59.368 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2024/06/20 15:50:59.368 [I]  开始处理公司:%!(EXTRA []interface {}=[上药贵州测试])
+2024/06/20 15:50:59.792 [I]  处理公司完成:%!(EXTRA []interface {}=[上药贵州测试])
+2024/06/20 15:50:59.792 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2024/06/20 15:51:00.166 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2024/06/20 15:51:00.166 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2024/06/20 15:51:00.181 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2024/12/23 09:22:28.726 [I]  {"key":"ColdDataV_Company","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.206 [I]  {"key":"redis_User_Company","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.258 [I]  {"key":"redis_Device","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.282 [I]  {"key":"redis_DeviceData","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.306 [I]  {"key":"redis_DeviceSensor","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.330 [I]  {"key":"redis_DeviceSensorParameter","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:29.356 [I]  {"key":"redis_WarningNum","conn":"192.168.0.5:6379","dbNum":"1","password":"redis_wsxaMH"}%!(EXTRA []interface {}=[])
+2024/12/23 09:22:32.403 [I]  =========== 初始化报警规则 =========%!(EXTRA []interface {}=[])
+2024/12/23 09:22:32.565 [I]  开始处理公司:%!(EXTRA []interface {}=[余姚市禹行户外用品有限公司])
+2024/12/23 09:22:32.607 [I]  开始处理公司:%!(EXTRA []interface {}=[A公司案例])
+2024/12/23 09:22:32.639 [I]  开始处理公司:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2024/12/23 09:22:33.403 [I]  处理公司完成:%!(EXTRA []interface {}=[临沂好德生物科技有限公司])
+2024/12/23 09:22:33.403 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2024/12/23 09:22:34.081 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市睿盛医疗器械有限公司])
+2024/12/23 09:22:34.082 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2024/12/23 09:22:34.868 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南万棵医疗器械有限公司])
+2024/12/23 09:22:34.868 [I]  开始处理公司:%!(EXTRA []interface {}=[宝智达科技周然])
+2024/12/23 09:22:34.909 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州一树药业股份有限公司])
+2024/12/23 09:22:34.953 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳公司])
+2024/12/23 09:22:34.987 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业云岩区地矿分店])
+2024/12/23 09:22:35.834 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业云岩区地矿分店])
+2024/12/23 09:22:35.834 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业南明区中山东路店])
+2024/12/23 09:22:36.552 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业南明区中山东路店])
+2024/12/23 09:22:36.552 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺公司])
+2024/12/23 09:22:36.598 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业西秀区体育路三分店])
+2024/12/23 09:22:37.307 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业西秀区体育路三分店])
+2024/12/23 09:22:37.307 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节公司])
+2024/12/23 09:22:37.350 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业七星关区18分店])
+2024/12/23 09:22:38.047 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业七星关区18分店])
+2024/12/23 09:22:38.047 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义公司])
+2024/12/23 09:22:38.080 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业红花岗662分店])
+2024/12/23 09:22:38.745 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业红花岗662分店])
+2024/12/23 09:22:38.757 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业播州286分店])
+2024/12/23 09:22:39.389 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业播州286分店])
+2024/12/23 09:22:39.389 [I]  开始处理公司:%!(EXTRA []interface {}=[一树红花岗区新蒲603店])
+2024/12/23 09:22:40.029 [I]  处理公司完成:%!(EXTRA []interface {}=[一树红花岗区新蒲603店])
+2024/12/23 09:22:40.029 [I]  开始处理公司:%!(EXTRA []interface {}=[一树正大习水县37店])
+2024/12/23 09:22:40.671 [I]  处理公司完成:%!(EXTRA []interface {}=[一树正大习水县37店])
+2024/12/23 09:22:40.676 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南公司])
+2024/12/23 09:22:40.713 [I]  开始处理公司:%!(EXTRA []interface {}=[一树湘君都匀市斗篷山路店])
+2024/12/23 09:22:41.181 [I]  处理公司完成:%!(EXTRA []interface {}=[一树湘君都匀市斗篷山路店])
+2024/12/23 09:22:41.181 [I]  开始处理公司:%!(EXTRA []interface {}=[一树平塘县571店])
+2024/12/23 09:22:41.832 [I]  处理公司完成:%!(EXTRA []interface {}=[一树平塘县571店])
+2024/12/23 09:22:41.832 [I]  开始处理公司:%!(EXTRA []interface {}=[一树都匀市东京街262分店])
+2024/12/23 09:22:42.653 [I]  处理公司完成:%!(EXTRA []interface {}=[一树都匀市东京街262分店])
+2024/12/23 09:22:42.653 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业七星关区十一分店])
+2024/12/23 09:22:43.351 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业七星关区十一分店])
+2024/12/23 09:22:43.351 [I]  开始处理公司:%!(EXTRA []interface {}=[一树祖家威宁区中心店])
+2024/12/23 09:22:44.220 [I]  处理公司完成:%!(EXTRA []interface {}=[一树祖家威宁区中心店])
+2024/12/23 09:22:44.221 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2024/12/23 09:22:45.006 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区湘邵九芝堂药店])
+2024/12/23 09:22:45.006 [I]  开始处理公司:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2024/12/23 09:22:45.731 [I]  处理公司完成:%!(EXTRA []interface {}=[上饶上药益药药房有限公司])
+2024/12/23 09:22:45.732 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业观山湖区第一百分店])
+2024/12/23 09:22:46.417 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业观山湖区第一百分店])
+2024/12/23 09:22:46.417 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2024/12/23 09:22:47.309 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股贵州有限公司])
+2024/12/23 09:22:47.309 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2024/12/23 09:22:47.343 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫凯里市五分店])
+2024/12/23 09:22:48.047 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫凯里市五分店])
+2024/12/23 09:22:48.047 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业凯里市韶山南路分店])
+2024/12/23 09:22:48.680 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业凯里市韶山南路分店])
+2024/12/23 09:22:48.680 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业凯里市开元大道分店])
+2024/12/23 09:22:49.330 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业凯里市开元大道分店])
+2024/12/23 09:22:49.330 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南公司])
+2024/12/23 09:22:49.365 [I]  开始处理公司:%!(EXTRA []interface {}=[一树大家康健兴义市市医院分店])
+2024/12/23 09:22:49.990 [I]  处理公司完成:%!(EXTRA []interface {}=[一树大家康健兴义市市医院分店])
+2024/12/23 09:22:49.990 [I]  开始处理公司:%!(EXTRA []interface {}=[一树大家康健兴义市州医院分店])
+2024/12/23 09:22:50.595 [I]  处理公司完成:%!(EXTRA []interface {}=[一树大家康健兴义市州医院分店])
+2024/12/23 09:22:50.595 [I]  开始处理公司:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2024/12/23 09:22:51.212 [I]  处理公司完成:%!(EXTRA []interface {}=[七星关区康源大药房爱民广场店])
+2024/12/23 09:22:51.212 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2024/12/23 09:22:51.834 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股遵义有限公司])
+2024/12/23 09:22:51.834 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南州福泉市疾控中心])
+2024/12/23 09:22:51.867 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2024/12/23 09:22:52.645 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股遵义医疗供应链服务有限公司])
+2024/12/23 09:22:52.645 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2024/12/23 09:22:53.316 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州博胜医药仓储物流有限公司])
+2024/12/23 09:22:53.316 [I]  开始处理公司:%!(EXTRA []interface {}=[菏泽市康利医疗器械有限公司])
+2024/12/23 09:22:53.349 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州薏乡医药有限公司])
+2024/12/23 09:22:54.177 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州薏乡医药有限公司])
+2024/12/23 09:22:54.178 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 09:22:55.592 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 09:22:55.592 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2024/12/23 09:22:56.395 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司])
+2024/12/23 09:22:56.395 [I]  开始处理公司:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2024/12/23 09:22:57.084 [I]  处理公司完成:%!(EXTRA []interface {}=[大连成大文熙肿瘤医院])
+2024/12/23 09:22:57.084 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2024/12/23 09:22:57.960 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州茂坤供应链管理有限公司])
+2024/12/23 09:22:57.960 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2024/12/23 09:22:58.757 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)有限责任公司遵义分公司])
+2024/12/23 09:22:58.757 [I]  开始处理公司:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2024/12/23 09:23:00.407 [I]  处理公司完成:%!(EXTRA []interface {}=[鄱阳县上药康鸿大药房有限公司])
+2024/12/23 09:23:00.408 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫黎平县三十八分店])
+2024/12/23 09:23:01.141 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫黎平县三十八分店])
+2024/12/23 09:23:01.141 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2024/12/23 09:23:01.800 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州老先参大药房连锁有限公司])
+2024/12/23 09:23:01.800 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔匀大健康有限责任公司])
+2024/12/23 09:23:01.831 [I]  开始处理公司:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2024/12/23 09:23:02.448 [I]  处理公司完成:%!(EXTRA []interface {}=[北京中准生物科技有限公司])
+2024/12/23 09:23:02.449 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁公司])
+2024/12/23 09:23:02.479 [I]  开始处理公司:%!(EXTRA []interface {}=[一树民生碧江区川硐分店])
+2024/12/23 09:23:03.121 [I]  处理公司完成:%!(EXTRA []interface {}=[一树民生碧江区川硐分店])
+2024/12/23 09:23:03.121 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业遵义贵阳路分店])
+2024/12/23 09:23:03.749 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业遵义贵阳路分店])
+2024/12/23 09:23:03.749 [I]  开始处理公司:%!(EXTRA []interface {}=[一树道真自治县芙蓉江路店])
+2024/12/23 09:23:04.416 [I]  处理公司完成:%!(EXTRA []interface {}=[一树道真自治县芙蓉江路店])
+2024/12/23 09:23:04.416 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2024/12/23 09:23:05.290 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州广奕医药有限公司])
+2024/12/23 09:23:05.290 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2024/12/23 09:23:06.086 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州安思药业有限公司])
+2024/12/23 09:23:06.087 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省应急物资(医药)储备保障中心(一期)])
+2024/12/23 09:23:06.530 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省应急物资(医药)储备保障中心(一期)])
+2024/12/23 09:23:06.530 [I]  开始处理公司:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2024/12/23 09:23:07.154 [I]  处理公司完成:%!(EXTRA []interface {}=[广西乐驰商贸有限公司])
+2024/12/23 09:23:07.155 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫凯里市六十二分店])
+2024/12/23 09:23:07.595 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫凯里市六十二分店])
+2024/12/23 09:23:07.595 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县疾病预防控制中心])
+2024/12/23 09:23:08.258 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县疾病预防控制中心])
+2024/12/23 09:23:08.258 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水公司])
+2024/12/23 09:23:08.289 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓钟山区钟山店])
+2024/12/23 09:23:08.971 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓钟山区钟山店])
+2024/12/23 09:23:08.971 [I]  开始处理公司:%!(EXTRA []interface {}=[一树六盘水德坞阳光铭苑分店])
+2024/12/23 09:23:09.623 [I]  处理公司完成:%!(EXTRA []interface {}=[一树六盘水德坞阳光铭苑分店])
+2024/12/23 09:23:09.624 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市翰林一分店])
+2024/12/23 09:23:10.256 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市翰林一分店])
+2024/12/23 09:23:10.256 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市新港湾分店])
+2024/12/23 09:23:10.928 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市新港湾分店])
+2024/12/23 09:23:10.928 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2024/12/23 09:23:12.011 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州侗润堂药业连锁有限公司])
+2024/12/23 09:23:12.011 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2024/12/23 09:23:12.926 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州黔南州汇达药业有限公司])
+2024/12/23 09:23:12.926 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:23:13.656 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:23:13.656 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业观山湖区帝景传说分店])
+2024/12/23 09:23:14.136 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业观山湖区帝景传说分店])
+2024/12/23 09:23:14.136 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:23:15.689 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:23:15.689 [I]  开始处理公司:%!(EXTRA []interface {}=[山西全策科技有限公司])
+2024/12/23 09:23:16.322 [I]  处理公司完成:%!(EXTRA []interface {}=[山西全策科技有限公司])
+2024/12/23 09:23:16.322 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫凯里市二十六分店])
+2024/12/23 09:23:16.820 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫凯里市二十六分店])
+2024/12/23 09:23:16.820 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫凯里市三分店])
+2024/12/23 09:23:17.272 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫凯里市三分店])
+2024/12/23 09:23:17.272 [I]  开始处理公司:%!(EXTRA []interface {}=[一树吉大夫凯里市四分店])
+2024/12/23 09:23:17.709 [I]  处理公司完成:%!(EXTRA []interface {}=[一树吉大夫凯里市四分店])
+2024/12/23 09:23:17.709 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业云岩区北京路分店])
+2024/12/23 09:23:18.319 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业云岩区北京路分店])
+2024/12/23 09:23:18.319 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业凯里市小十字分店])
+2024/12/23 09:23:18.780 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业凯里市小十字分店])
+2024/12/23 09:23:18.780 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2024/12/23 09:23:19.231 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州恒翊达医疗器械有限公司])
+2024/12/23 09:23:19.232 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2024/12/23 09:23:20.190 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州森辉医疗器械有限公司])
+2024/12/23 09:23:20.190 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业都匀市大十字分店])
+2024/12/23 09:23:20.642 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业都匀市大十字分店])
+2024/12/23 09:23:20.642 [I]  开始处理公司:%!(EXTRA []interface {}=[一树湘君都匀市大十字店])
+2024/12/23 09:23:21.448 [I]  处理公司完成:%!(EXTRA []interface {}=[一树湘君都匀市大十字店])
+2024/12/23 09:23:21.448 [I]  开始处理公司:%!(EXTRA []interface {}=[一树湘君都匀市剑江中路店])
+2024/12/23 09:23:21.925 [I]  处理公司完成:%!(EXTRA []interface {}=[一树湘君都匀市剑江中路店])
+2024/12/23 09:23:21.925 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州鸿瑞同源医疗器械有限公司])
+2024/12/23 09:23:22.523 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州鸿瑞同源医疗器械有限公司])
+2024/12/23 09:23:22.523 [I]  开始处理公司:%!(EXTRA []interface {}=[湖北省康德瑞商贸有限公司])
+2024/12/23 09:23:23.132 [I]  处理公司完成:%!(EXTRA []interface {}=[湖北省康德瑞商贸有限公司])
+2024/12/23 09:23:23.132 [I]  开始处理公司:%!(EXTRA []interface {}=[上药彤杉(沈阳)大药房连锁有限公司大连市大附一分店])
+2024/12/23 09:23:23.735 [I]  处理公司完成:%!(EXTRA []interface {}=[上药彤杉(沈阳)大药房连锁有限公司大连市大附一分店])
+2024/12/23 09:23:23.735 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业云岩区一百零九分店])
+2024/12/23 09:23:24.179 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业云岩区一百零九分店])
+2024/12/23 09:23:24.179 [I]  开始处理公司:%!(EXTRA []interface {}=[齐鲁制药有限公司])
+2024/12/23 09:23:24.818 [I]  处理公司完成:%!(EXTRA []interface {}=[齐鲁制药有限公司])
+2024/12/23 09:23:24.818 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司黔南大药房])
+2024/12/23 09:23:25.624 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司黔南大药房])
+2024/12/23 09:23:25.624 [I]  开始处理公司:%!(EXTRA []interface {}=[云南省昭通市昭阳区妇幼保健院])
+2024/12/23 09:23:26.329 [I]  处理公司完成:%!(EXTRA []interface {}=[云南省昭通市昭阳区妇幼保健院])
+2024/12/23 09:23:26.329 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州海臣医疗器械有限公司])
+2024/12/23 09:23:27.098 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州海臣医疗器械有限公司])
+2024/12/23 09:23:27.098 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁市慷隆医疗科技有限公司])
+2024/12/23 09:23:27.888 [I]  处理公司完成:%!(EXTRA []interface {}=[铜仁市慷隆医疗科技有限公司])
+2024/12/23 09:23:27.888 [I]  开始处理公司:%!(EXTRA []interface {}=[国药集团贵阳医疗器械有限公司])
+2024/12/23 09:23:29.525 [I]  nats OK!%!(EXTRA []interface {}=[])
+2024/12/23 09:23:29.593 [I]  处理公司完成:%!(EXTRA []interface {}=[国药集团贵阳医疗器械有限公司])
+2024/12/23 09:23:29.593 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁市疾控中心])
+2024/12/23 09:23:29.629 [I]  开始处理公司:%!(EXTRA []interface {}=[松桃县疾控中心])
+2024/12/23 09:23:30.056 [I]  处理公司完成:%!(EXTRA []interface {}=[松桃县疾控中心])
+2024/12/23 09:23:30.056 [I]  开始处理公司:%!(EXTRA []interface {}=[江口县疾控中心])
+2024/12/23 09:23:30.520 [I]  处理公司完成:%!(EXTRA []interface {}=[江口县疾控中心])
+2024/12/23 09:23:30.520 [I]  开始处理公司:%!(EXTRA []interface {}=[印江县疾控中心])
+2024/12/23 09:23:31.000 [I]  处理公司完成:%!(EXTRA []interface {}=[印江县疾控中心])
+2024/12/23 09:23:31.000 [I]  开始处理公司:%!(EXTRA []interface {}=[道坪中心卫生院])
+2024/12/23 09:23:31.778 [I]  处理公司完成:%!(EXTRA []interface {}=[道坪中心卫生院])
+2024/12/23 09:23:31.779 [I]  开始处理公司:%!(EXTRA []interface {}=[地松卫生院])
+2024/12/23 09:23:32.432 [I]  处理公司完成:%!(EXTRA []interface {}=[地松卫生院])
+2024/12/23 09:23:32.433 [I]  开始处理公司:%!(EXTRA []interface {}=[凤山中心卫生院])
+2024/12/23 09:23:33.154 [I]  处理公司完成:%!(EXTRA []interface {}=[凤山中心卫生院])
+2024/12/23 09:23:33.154 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市妇幼保健院])
+2024/12/23 09:23:33.682 [I]  处理公司完成:%!(EXTRA []interface {}=[福泉市妇幼保健院])
+2024/12/23 09:23:33.682 [I]  开始处理公司:%!(EXTRA []interface {}=[金山社区卫生服务中心])
+2024/12/23 09:23:34.405 [I]  处理公司完成:%!(EXTRA []interface {}=[金山社区卫生服务中心])
+2024/12/23 09:23:34.405 [I]  开始处理公司:%!(EXTRA []interface {}=[藜山卫生院])
+2024/12/23 09:23:34.597 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 09:23:35.048 [I]  处理公司完成:%!(EXTRA []interface {}=[藜山卫生院])
+2024/12/23 09:23:35.048 [I]  开始处理公司:%!(EXTRA []interface {}=[龙昌中心卫生院])
+2024/12/23 09:23:35.531 [I]  处理公司完成:%!(EXTRA []interface {}=[龙昌中心卫生院])
+2024/12/23 09:23:35.531 [I]  开始处理公司:%!(EXTRA []interface {}=[马场坪社区卫生服务中心])
+2024/12/23 09:23:35.901 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 09:23:36.165 [I]  处理公司完成:%!(EXTRA []interface {}=[马场坪社区卫生服务中心])
+2024/12/23 09:23:36.165 [I]  开始处理公司:%!(EXTRA []interface {}=[牛场中心卫生院])
+2024/12/23 09:23:36.829 [I]  处理公司完成:%!(EXTRA []interface {}=[牛场中心卫生院])
+2024/12/23 09:23:36.830 [I]  开始处理公司:%!(EXTRA []interface {}=[仙桥中心卫生院])
+2024/12/23 09:23:37.492 [I]  处理公司完成:%!(EXTRA []interface {}=[仙桥中心卫生院])
+2024/12/23 09:23:37.492 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市中医医院])
+2024/12/23 09:23:37.943 [I]  处理公司完成:%!(EXTRA []interface {}=[福泉市中医医院])
+2024/12/23 09:23:37.943 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市第一人民医院])
+2024/12/23 09:23:38.394 [I]  处理公司完成:%!(EXTRA []interface {}=[福泉市第一人民医院])
+2024/12/23 09:23:38.394 [I]  开始处理公司:%!(EXTRA []interface {}=[陆坪中心卫生院])
+2024/12/23 09:23:39.036 [I]  处理公司完成:%!(EXTRA []interface {}=[陆坪中心卫生院])
+2024/12/23 09:23:39.036 [I]  开始处理公司:%!(EXTRA []interface {}=[岗度镇中心卫生院])
+2024/12/23 09:23:39.653 [I]  处理公司完成:%!(EXTRA []interface {}=[岗度镇中心卫生院])
+2024/12/23 09:23:39.653 [I]  开始处理公司:%!(EXTRA []interface {}=[好花红镇中心卫生院])
+2024/12/23 09:23:40.262 [I]  处理公司完成:%!(EXTRA []interface {}=[好花红镇中心卫生院])
+2024/12/23 09:23:40.262 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县中医医院])
+2024/12/23 09:23:40.295 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县鸭绒卫生院])
+2024/12/23 09:23:40.938 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县鸭绒卫生院])
+2024/12/23 09:23:40.938 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县长田卫生院])
+2024/12/23 09:23:41.624 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县长田卫生院])
+2024/12/23 09:23:41.625 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县宁旺卫生院])
+2024/12/23 09:23:42.299 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县宁旺卫生院])
+2024/12/23 09:23:42.299 [I]  开始处理公司:%!(EXTRA []interface {}=[雅水镇中心卫生院])
+2024/12/23 09:23:42.903 [I]  处理公司完成:%!(EXTRA []interface {}=[雅水镇中心卫生院])
+2024/12/23 09:23:42.903 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县甲烈卫生院])
+2024/12/23 09:23:43.516 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县甲烈卫生院])
+2024/12/23 09:23:43.516 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县长安卫生院])
+2024/12/23 09:23:44.315 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县长安卫生院])
+2024/12/23 09:23:44.315 [I]  开始处理公司:%!(EXTRA []interface {}=[涟江街道办事处社区卫生服务中心])
+2024/12/23 09:23:44.365 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:23:44.888 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:23:44.959 [I]  处理公司完成:%!(EXTRA []interface {}=[涟江街道办事处社区卫生服务中心])
+2024/12/23 09:23:44.959 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县妇幼保健院])
+2024/12/23 09:23:44.992 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县抵季卫生院])
+2024/12/23 09:23:45.651 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县抵季卫生院])
+2024/12/23 09:23:45.652 [I]  开始处理公司:%!(EXTRA []interface {}=[王佑镇中心卫生院])
+2024/12/23 09:23:46.098 [I]  处理公司完成:%!(EXTRA []interface {}=[王佑镇中心卫生院])
+2024/12/23 09:23:46.098 [I]  开始处理公司:%!(EXTRA []interface {}=[芦山镇中心卫生院])
+2024/12/23 09:23:46.727 [I]  处理公司完成:%!(EXTRA []interface {}=[芦山镇中心卫生院])
+2024/12/23 09:23:46.727 [I]  开始处理公司:%!(EXTRA []interface {}=[摆金镇中心卫生院])
+2024/12/23 09:23:47.381 [I]  处理公司完成:%!(EXTRA []interface {}=[摆金镇中心卫生院])
+2024/12/23 09:23:47.381 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县摆榜卫生院])
+2024/12/23 09:23:48.077 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县摆榜卫生院])
+2024/12/23 09:23:48.077 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县明田街道社区卫生服务中心])
+2024/12/23 09:23:48.707 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县明田街道社区卫生服务中心])
+2024/12/23 09:23:48.707 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县甲戎卫生院])
+2024/12/23 09:23:49.165 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县甲戎卫生院])
+2024/12/23 09:23:49.165 [I]  开始处理公司:%!(EXTRA []interface {}=[濛江街道办事处社区卫生服务中心])
+2024/12/23 09:23:49.768 [I]  开始处理公司:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:23:49.789 [I]  处理公司完成:%!(EXTRA []interface {}=[濛江街道办事处社区卫生服务中心])
+2024/12/23 09:23:49.789 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县打引卫生院])
+2024/12/23 09:23:50.210 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县打引卫生院])
+2024/12/23 09:23:50.211 [I]  开始处理公司:%!(EXTRA []interface {}=[测试])
+2024/12/23 09:23:50.405 [I]  处理公司完成:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:23:50.651 [I]  处理公司完成:%!(EXTRA []interface {}=[测试])
+2024/12/23 09:23:50.651 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州德康达医药有限公司])
+2024/12/23 09:23:51.413 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州德康达医药有限公司])
+2024/12/23 09:23:51.413 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业南明区九十八分店])
+2024/12/23 09:23:51.914 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业南明区九十八分店])
+2024/12/23 09:23:51.914 [I]  开始处理公司:%!(EXTRA []interface {}=[茂名市睿玉科技有限公司])
+2024/12/23 09:23:52.590 [I]  处理公司完成:%!(EXTRA []interface {}=[茂名市睿玉科技有限公司])
+2024/12/23 09:23:52.591 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医疗器械工业有限责任公司1111])
+2024/12/23 09:23:53.493 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医疗器械工业有限责任公司1111])
+2024/12/23 09:23:53.493 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股大药房(吉林)有限公司])
+2024/12/23 09:23:54.120 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股大药房(吉林)有限公司])
+2024/12/23 09:23:54.121 [I]  开始处理公司:%!(EXTRA []interface {}=[黄丝中心卫生院])
+2024/12/23 09:23:54.746 [I]  处理公司完成:%!(EXTRA []interface {}=[黄丝中心卫生院])
+2024/12/23 09:23:54.746 [I]  开始处理公司:%!(EXTRA []interface {}=[国药器械贵州省玖合科贸有限公司])
+2024/12/23 09:23:55.202 [I]  处理公司完成:%!(EXTRA []interface {}=[国药器械贵州省玖合科贸有限公司])
+2024/12/23 09:23:55.202 [I]  开始处理公司:%!(EXTRA []interface {}=[福泉市疾控中心])
+2024/12/23 09:23:55.915 [I]  处理公司完成:%!(EXTRA []interface {}=[福泉市疾控中心])
+2024/12/23 09:23:55.915 [I]  开始处理公司:%!(EXTRA []interface {}=[断杉镇中心卫生院])
+2024/12/23 09:23:56.340 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:23:56.552 [I]  处理公司完成:%!(EXTRA []interface {}=[断杉镇中心卫生院])
+2024/12/23 09:23:56.552 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州海和医疗器械有限公司])
+2024/12/23 09:23:57.201 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州海和医疗器械有限公司])
+2024/12/23 09:23:57.201 [I]  开始处理公司:%!(EXTRA []interface {}=[龙里疾控中心])
+2024/12/23 09:23:57.377 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:23:57.416 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:23:57.849 [I]  处理公司完成:%!(EXTRA []interface {}=[龙里疾控中心])
+2024/12/23 09:23:57.849 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股毕节医投有限公司百里杜鹃路店])
+2024/12/23 09:23:58.517 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股毕节医投有限公司百里杜鹃路店])
+2024/12/23 09:23:58.517 [I]  开始处理公司:%!(EXTRA []interface {}=[河北邦禾医疗器械贸易有限公司])
+2024/12/23 09:23:58.590 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:23:59.279 [I]  处理公司完成:%!(EXTRA []interface {}=[河北邦禾医疗器械贸易有限公司])
+2024/12/23 09:23:59.279 [I]  开始处理公司:%!(EXTRA []interface {}=[一树云岩区宝山北路二分店])
+2024/12/23 09:23:59.743 [I]  处理公司完成:%!(EXTRA []interface {}=[一树云岩区宝山北路二分店])
+2024/12/23 09:23:59.743 [I]  开始处理公司:%!(EXTRA []interface {}=[一树经济开发区小河浦江路分店])
+2024/12/23 09:24:00.206 [I]  处理公司完成:%!(EXTRA []interface {}=[一树经济开发区小河浦江路分店])
+2024/12/23 09:24:00.207 [I]  开始处理公司:%!(EXTRA []interface {}=[天津睿恩康医疗器械科技有限公司])
+2024/12/23 09:24:00.859 [I]  处理公司完成:%!(EXTRA []interface {}=[天津睿恩康医疗器械科技有限公司])
+2024/12/23 09:24:00.859 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州正和祥药业有限公司])
+2024/12/23 09:24:00.890 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南州公司])
+2024/12/23 09:24:00.926 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥独山一百四十八分店])
+2024/12/23 09:24:01.572 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥独山一百四十八分店])
+2024/12/23 09:24:01.572 [I]  开始处理公司:%!(EXTRA []interface {}=[常州海滋久医疗器械科技有限公司])
+2024/12/23 09:24:02.017 [I]  处理公司完成:%!(EXTRA []interface {}=[常州海滋久医疗器械科技有限公司])
+2024/12/23 09:24:02.017 [I]  开始处理公司:%!(EXTRA []interface {}=[湖南怡联医疗器械有限公司])
+2024/12/23 09:24:02.669 [I]  处理公司完成:%!(EXTRA []interface {}=[湖南怡联医疗器械有限公司])
+2024/12/23 09:24:02.669 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州玖安医疗器械有限公司])
+2024/12/23 09:24:03.381 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州玖安医疗器械有限公司])
+2024/12/23 09:24:03.381 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州纳雍宏泰医药有限公司])
+2024/12/23 09:24:05.804 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州纳雍宏泰医药有限公司])
+2024/12/23 09:24:05.804 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州金佑商贸有限公司])
+2024/12/23 09:24:06.519 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州金佑商贸有限公司])
+2024/12/23 09:24:06.519 [I]  开始处理公司:%!(EXTRA []interface {}=[济南汉德森医疗设备有限公司])
+2024/12/23 09:24:07.140 [I]  处理公司完成:%!(EXTRA []interface {}=[济南汉德森医疗设备有限公司])
+2024/12/23 09:24:07.140 [I]  开始处理公司:%!(EXTRA []interface {}=[海南致众贸易有限责任公司])
+2024/12/23 09:24:07.803 [I]  处理公司完成:%!(EXTRA []interface {}=[海南致众贸易有限责任公司])
+2024/12/23 09:24:07.803 [I]  开始处理公司:%!(EXTRA []interface {}=[昆明佰奥勒生物科技有限公司])
+2024/12/23 09:24:08.449 [I]  处理公司完成:%!(EXTRA []interface {}=[昆明佰奥勒生物科技有限公司])
+2024/12/23 09:24:08.449 [I]  开始处理公司:%!(EXTRA []interface {}=[深圳市新产业生物医学工程股份有限公司])
+2024/12/23 09:24:09.078 [I]  处理公司完成:%!(EXTRA []interface {}=[深圳市新产业生物医学工程股份有限公司])
+2024/12/23 09:24:09.079 [I]  开始处理公司:%!(EXTRA []interface {}=[天津市滨海新区中医医院])
+2024/12/23 09:24:09.719 [I]  处理公司完成:%!(EXTRA []interface {}=[天津市滨海新区中医医院])
+2024/12/23 09:24:09.719 [I]  开始处理公司:%!(EXTRA []interface {}=[保山九州通医药有限公司])
+2024/12/23 09:24:10.439 [I]  处理公司完成:%!(EXTRA []interface {}=[保山九州通医药有限公司])
+2024/12/23 09:24:10.439 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳市])
+2024/12/23 09:24:10.472 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义市])
+2024/12/23 09:24:10.503 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市])
+2024/12/23 09:24:10.551 [I]  开始处理公司:%!(EXTRA []interface {}=[安顺市])
+2024/12/23 09:24:10.583 [I]  开始处理公司:%!(EXTRA []interface {}=[毕节市])
+2024/12/23 09:24:10.614 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁市])
+2024/12/23 09:24:10.649 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南州])
+2024/12/23 09:24:10.681 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南州])
+2024/12/23 09:24:10.733 [I]  开始处理公司:%!(EXTRA []interface {}=[黔西南州])
+2024/12/23 09:24:10.766 [I]  开始处理公司:%!(EXTRA []interface {}=[广州泓璟视贸易有限公司])
+2024/12/23 09:24:11.392 [I]  处理公司完成:%!(EXTRA []interface {}=[广州泓璟视贸易有限公司])
+2024/12/23 09:24:11.392 [I]  开始处理公司:%!(EXTRA []interface {}=[河北楠壕医疗器械销售有限公司])
+2024/12/23 09:24:12.027 [I]  处理公司完成:%!(EXTRA []interface {}=[河北楠壕医疗器械销售有限公司])
+2024/12/23 09:24:12.027 [I]  开始处理公司:%!(EXTRA []interface {}=[0001])
+2024/12/23 09:24:12.644 [I]  处理公司完成:%!(EXTRA []interface {}=[0001])
+2024/12/23 09:24:12.644 [I]  开始处理公司:%!(EXTRA []interface {}=[西安笃志近思生物科技有限公司])
+2024/12/23 09:24:13.280 [I]  处理公司完成:%!(EXTRA []interface {}=[西安笃志近思生物科技有限公司])
+2024/12/23 09:24:13.280 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:24:13.313 [I]  开始处理公司:%!(EXTRA []interface {}=[杭州九穗禾健康药房有限公司])
+2024/12/23 09:24:13.950 [I]  处理公司完成:%!(EXTRA []interface {}=[杭州九穗禾健康药房有限公司])
+2024/12/23 09:24:13.950 [I]  开始处理公司:%!(EXTRA []interface {}=[河北视康商贸有限公司])
+2024/12/23 09:24:14.608 [I]  处理公司完成:%!(EXTRA []interface {}=[河北视康商贸有限公司])
+2024/12/23 09:24:14.608 [I]  开始处理公司:%!(EXTRA []interface {}=[上药控股云南医疗器械有限公司])
+2024/12/23 09:24:15.216 [I]  处理公司完成:%!(EXTRA []interface {}=[上药控股云南医疗器械有限公司])
+2024/12/23 09:24:15.216 [I]  开始处理公司:%!(EXTRA []interface {}=[南京知博医疗科技有限公司])
+2024/12/23 09:24:15.844 [I]  处理公司完成:%!(EXTRA []interface {}=[南京知博医疗科技有限公司])
+2024/12/23 09:24:15.845 [I]  开始处理公司:%!(EXTRA []interface {}=[沈阳金斯尔医疗用品有限公司])
+2024/12/23 09:24:16.512 [I]  处理公司完成:%!(EXTRA []interface {}=[沈阳金斯尔医疗用品有限公司])
+2024/12/23 09:24:16.512 [I]  开始处理公司:%!(EXTRA []interface {}=[宜兴市人民医院])
+2024/12/23 09:24:17.148 [I]  处理公司完成:%!(EXTRA []interface {}=[宜兴市人民医院])
+2024/12/23 09:24:17.148 [I]  开始处理公司:%!(EXTRA []interface {}=[徐州瑞达医疗器械有限公司])
+2024/12/23 09:24:17.770 [I]  处理公司完成:%!(EXTRA []interface {}=[徐州瑞达医疗器械有限公司])
+2024/12/23 09:24:17.770 [I]  开始处理公司:%!(EXTRA []interface {}=[北京爱科思创生物技术有限公司])
+2024/12/23 09:24:18.376 [I]  处理公司完成:%!(EXTRA []interface {}=[北京爱科思创生物技术有限公司])
+2024/12/23 09:24:18.376 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州康心库房测试])
+2024/12/23 09:24:18.407 [I]  开始处理公司:%!(EXTRA []interface {}=[冷链物流公司])
+2024/12/23 09:24:18.444 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医疗器械工业有限责任公司])
+2024/12/23 09:24:20.008 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医疗器械工业有限责任公司])
+2024/12/23 09:24:20.008 [I]  开始处理公司:%!(EXTRA []interface {}=[国药器械集团贵州有限公司])
+2024/12/23 09:24:20.039 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州泰邦生物制品有限公司])
+2024/12/23 09:24:20.857 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州泰邦生物制品有限公司])
+2024/12/23 09:24:20.857 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州黔南州汇达医药有限公司])
+2024/12/23 09:24:20.889 [I]  开始处理公司:%!(EXTRA []interface {}=[北京长春堂大药房有限公司])
+2024/12/23 09:24:21.536 [I]  处理公司完成:%!(EXTRA []interface {}=[北京长春堂大药房有限公司])
+2024/12/23 09:24:21.541 [I]  开始处理公司:%!(EXTRA []interface {}=[上药彤杉(沈阳)大药房连锁有限公司庄河市城关街分店])
+2024/12/23 09:24:22.160 [I]  处理公司完成:%!(EXTRA []interface {}=[上药彤杉(沈阳)大药房连锁有限公司庄河市城关街分店])
+2024/12/23 09:24:22.160 [I]  开始处理公司:%!(EXTRA []interface {}=[黔东南公司])
+2024/12/23 09:24:22.191 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥凯里州医院店])
+2024/12/23 09:24:22.817 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥凯里州医院店])
+2024/12/23 09:24:22.817 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南康诚中心大药房])
+2024/12/23 09:24:22.848 [I]  开始处理公司:%!(EXTRA []interface {}=[黔南科开大药房有限公司])
+2024/12/23 09:24:23.625 [I]  处理公司完成:%!(EXTRA []interface {}=[黔南科开大药房有限公司])
+2024/12/23 09:24:23.625 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州稳好吉大夫药房连锁有限公司225分店])
+2024/12/23 09:24:24.435 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州稳好吉大夫药房连锁有限公司225分店])
+2024/12/23 09:24:24.435 [I]  开始处理公司:%!(EXTRA []interface {}=[安徽兆诚电子科技有限公司])
+2024/12/23 09:24:25.062 [I]  处理公司完成:%!(EXTRA []interface {}=[安徽兆诚电子科技有限公司])
+2024/12/23 09:24:25.062 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州大合商贸有限公司])
+2024/12/23 09:24:25.708 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州大合商贸有限公司])
+2024/12/23 09:24:25.708 [I]  开始处理公司:%!(EXTRA []interface {}=[铜仁市鑫盛医疗贸易有限公司])
+2024/12/23 09:24:26.387 [I]  处理公司完成:%!(EXTRA []interface {}=[铜仁市鑫盛医疗贸易有限公司])
+2024/12/23 09:24:26.387 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳花溪区疾控中心])
+2024/12/23 09:24:27.015 [I]  处理公司完成:%!(EXTRA []interface {}=[贵阳花溪区疾控中心])
+2024/12/23 09:24:27.015 [I]  开始处理公司:%!(EXTRA []interface {}=[湖北健恒医疗器械有限公司])
+2024/12/23 09:24:27.660 [I]  处理公司完成:%!(EXTRA []interface {}=[湖北健恒医疗器械有限公司])
+2024/12/23 09:24:27.660 [I]  开始处理公司:%!(EXTRA []interface {}=[曲靖市妇幼保健院南苑])
+2024/12/23 09:24:28.361 [I]  处理公司完成:%!(EXTRA []interface {}=[曲靖市妇幼保健院南苑])
+2024/12/23 09:24:28.361 [I]  开始处理公司:%!(EXTRA []interface {}=[山东奥全生物科技有限公司])
+2024/12/23 09:24:29.054 [I]  处理公司完成:%!(EXTRA []interface {}=[山东奥全生物科技有限公司])
+2024/12/23 09:24:29.054 [I]  开始处理公司:%!(EXTRA []interface {}=[济南增锦商贸有限公司])
+2024/12/23 09:24:29.798 [I]  处理公司完成:%!(EXTRA []interface {}=[济南增锦商贸有限公司])
+2024/12/23 09:24:29.799 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)和平医药遵义有限公司])
+2024/12/23 09:24:30.589 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)和平医药遵义有限公司])
+2024/12/23 09:24:30.590 [I]  开始处理公司:%!(EXTRA []interface {}=[绵阳康池缘医疗器械有限公司])
+2024/12/23 09:24:31.273 [I]  处理公司完成:%!(EXTRA []interface {}=[绵阳康池缘医疗器械有限公司])
+2024/12/23 09:24:31.273 [I]  开始处理公司:%!(EXTRA []interface {}=[都匀市六谷大药房有限公司尚城店])
+2024/12/23 09:24:31.303 [I]  开始处理公司:%!(EXTRA []interface {}=[阳春市淞海医疗器械有限公司])
+2024/12/23 09:24:31.971 [I]  处理公司完成:%!(EXTRA []interface {}=[阳春市淞海医疗器械有限公司])
+2024/12/23 09:24:31.971 [I]  开始处理公司:%!(EXTRA []interface {}=[湖北惠缘百商贸有限责任公司])
+2024/12/23 09:24:32.660 [I]  处理公司完成:%!(EXTRA []interface {}=[湖北惠缘百商贸有限责任公司])
+2024/12/23 09:24:32.661 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳市公司])
+2024/12/23 09:24:32.694 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥南明区都司路分店])
+2024/12/23 09:24:33.531 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥南明区都司路分店])
+2024/12/23 09:24:33.531 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州道武芝林堂大药房连锁有限公司])
+2024/12/23 09:24:34.546 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州道武芝林堂大药房连锁有限公司])
+2024/12/23 09:24:34.546 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业都匀剑江中路分店(274店)])
+2024/12/23 09:24:35.270 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业都匀剑江中路分店(274店)])
+2024/12/23 09:24:35.270 [I]  开始处理公司:%!(EXTRA []interface {}=[山东海旭物联网科技有限公司])
+2024/12/23 09:24:35.960 [I]  处理公司完成:%!(EXTRA []interface {}=[山东海旭物联网科技有限公司])
+2024/12/23 09:24:35.960 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业龙里金龙路分店(197店)])
+2024/12/23 09:24:36.620 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业龙里金龙路分店(197店)])
+2024/12/23 09:24:36.620 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业贵定兴南路分店(647店)])
+2024/12/23 09:24:37.318 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业贵定兴南路分店(647店)])
+2024/12/23 09:24:37.318 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业福泉金山分店(227店)])
+2024/12/23 09:24:37.957 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业福泉金山分店(227店)])
+2024/12/23 09:24:37.957 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业瓮安凯祺分店(323店)])
+2024/12/23 09:24:38.606 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业瓮安凯祺分店(323店)])
+2024/12/23 09:24:38.606 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业都匀剑江中路二分店(389店)])
+2024/12/23 09:24:39.334 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业都匀剑江中路二分店(389店)])
+2024/12/23 09:24:39.335 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业都匀北部印象分店(631店)])
+2024/12/23 09:24:39.961 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业都匀北部印象分店(631店)])
+2024/12/23 09:24:39.961 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业独山一百五十分店])
+2024/12/23 09:24:40.574 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业独山一百五十分店])
+2024/12/23 09:24:40.574 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业荔波樟江印象分店])
+2024/12/23 09:24:41.200 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业荔波樟江印象分店])
+2024/12/23 09:24:41.200 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业罗甸湖滨大道一分店])
+2024/12/23 09:24:41.874 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业罗甸湖滨大道一分店])
+2024/12/23 09:24:41.874 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业长顺长发路分店])
+2024/12/23 09:24:42.546 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业长顺长发路分店])
+2024/12/23 09:24:42.546 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥凯里锦绣家园店])
+2024/12/23 09:24:43.197 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥凯里锦绣家园店])
+2024/12/23 09:24:43.197 [I]  开始处理公司:%!(EXTRA []interface {}=[西藏释昢医药有限公司])
+2024/12/23 09:24:43.747 [I]  处理公司完成:%!(EXTRA []interface {}=[西藏释昢医药有限公司])
+2024/12/23 09:24:43.747 [I]  开始处理公司:%!(EXTRA []interface {}=[山东浪潮智慧医疗科技有限公司])
+2024/12/23 09:24:44.393 [I]  处理公司完成:%!(EXTRA []interface {}=[山东浪潮智慧医疗科技有限公司])
+2024/12/23 09:24:44.393 [I]  开始处理公司:%!(EXTRA []interface {}=[一树威宁祖家新世纪广场分店])
+2024/12/23 09:24:44.865 [I]  处理公司完成:%!(EXTRA []interface {}=[一树威宁祖家新世纪广场分店])
+2024/12/23 09:24:44.865 [I]  开始处理公司:%!(EXTRA []interface {}=[平塘县疾控中心])
+2024/12/23 09:24:44.895 [I]  开始处理公司:%!(EXTRA []interface {}=[甲茶镇中心卫生院])
+2024/12/23 09:24:45.608 [I]  处理公司完成:%!(EXTRA []interface {}=[甲茶镇中心卫生院])
+2024/12/23 09:24:45.608 [I]  开始处理公司:%!(EXTRA []interface {}=[通州镇中心卫生院])
+2024/12/23 09:24:46.301 [I]  处理公司完成:%!(EXTRA []interface {}=[通州镇中心卫生院])
+2024/12/23 09:24:46.301 [I]  开始处理公司:%!(EXTRA []interface {}=[平舟镇中心卫生院])
+2024/12/23 09:24:46.971 [I]  处理公司完成:%!(EXTRA []interface {}=[平舟镇中心卫生院])
+2024/12/23 09:24:46.971 [I]  开始处理公司:%!(EXTRA []interface {}=[克度中心卫生院])
+2024/12/23 09:24:47.631 [I]  处理公司完成:%!(EXTRA []interface {}=[克度中心卫生院])
+2024/12/23 09:24:47.631 [I]  开始处理公司:%!(EXTRA []interface {}=[者密中心卫生院])
+2024/12/23 09:24:48.283 [I]  处理公司完成:%!(EXTRA []interface {}=[者密中心卫生院])
+2024/12/23 09:24:48.283 [I]  开始处理公司:%!(EXTRA []interface {}=[塘边中心卫生院])
+2024/12/23 09:24:48.888 [I]  处理公司完成:%!(EXTRA []interface {}=[塘边中心卫生院])
+2024/12/23 09:24:48.888 [I]  开始处理公司:%!(EXTRA []interface {}=[金盆街道社区卫生服务中心])
+2024/12/23 09:24:49.506 [I]  处理公司完成:%!(EXTRA []interface {}=[金盆街道社区卫生服务中心])
+2024/12/23 09:24:49.506 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股湖南维安大药房连锁有限公司])
+2024/12/23 09:24:49.536 [I]  开始处理公司:%!(EXTRA []interface {}=[长沙河西店])
+2024/12/23 09:24:50.322 [I]  处理公司完成:%!(EXTRA []interface {}=[长沙河西店])
+2024/12/23 09:24:50.322 [I]  开始处理公司:%!(EXTRA []interface {}=[江苏省医药有限公司])
+2024/12/23 09:24:50.996 [I]  处理公司完成:%!(EXTRA []interface {}=[江苏省医药有限公司])
+2024/12/23 09:24:50.996 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州益雷药业有限公司])
+2024/12/23 09:24:51.698 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州益雷药业有限公司])
+2024/12/23 09:24:51.698 [I]  开始处理公司:%!(EXTRA []interface {}=[平塘县牙舟镇中心卫生院])
+2024/12/23 09:24:52.380 [I]  处理公司完成:%!(EXTRA []interface {}=[平塘县牙舟镇中心卫生院])
+2024/12/23 09:24:52.380 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州联合仓储物流服务有限公司])
+2024/12/23 09:24:53.114 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州联合仓储物流服务有限公司])
+2024/12/23 09:24:53.114 [I]  开始处理公司:%!(EXTRA []interface {}=[遵义市公司])
+2024/12/23 09:24:53.151 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥红花岗时代天街二店])
+2024/12/23 09:24:53.867 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥红花岗时代天街二店])
+2024/12/23 09:24:53.867 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥新蒲新龙大道店])
+2024/12/23 09:24:54.573 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥新蒲新龙大道店])
+2024/12/23 09:24:54.573 [I]  开始处理公司:%!(EXTRA []interface {}=[平塘县掌布镇中心卫生院])
+2024/12/23 09:24:55.259 [I]  处理公司完成:%!(EXTRA []interface {}=[平塘县掌布镇中心卫生院])
+2024/12/23 09:24:55.259 [I]  开始处理公司:%!(EXTRA []interface {}=[平塘县卡蒲乡中心卫生院])
+2024/12/23 09:24:55.996 [I]  处理公司完成:%!(EXTRA []interface {}=[平塘县卡蒲乡中心卫生院])
+2024/12/23 09:24:55.996 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司])
+2024/12/23 09:24:56.034 [I]  开始处理公司:%!(EXTRA []interface {}=[贵阳市公司])
+2024/12/23 09:24:56.072 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司云岩分店])
+2024/12/23 09:24:56.769 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司云岩分店])
+2024/12/23 09:24:56.769 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司贵乌路分店])
+2024/12/23 09:24:57.425 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司贵乌路分店])
+2024/12/23 09:24:57.425 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司瑞金南路分店])
+2024/12/23 09:24:58.083 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司瑞金南路分店])
+2024/12/23 09:24:58.083 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司宝山南路分店])
+2024/12/23 09:24:58.795 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司宝山南路分店])
+2024/12/23 09:24:58.795 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司大药房店])
+2024/12/23 09:24:59.494 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司大药房店])
+2024/12/23 09:24:59.494 [I]  开始处理公司:%!(EXTRA []interface {}=[乌海市中达汇金医疗器械有限公司])
+2024/12/23 09:25:00.163 [I]  处理公司完成:%!(EXTRA []interface {}=[乌海市中达汇金医疗器械有限公司])
+2024/12/23 09:25:00.163 [I]  开始处理公司:%!(EXTRA []interface {}=[个人])
+2024/12/23 09:25:00.840 [I]  处理公司完成:%!(EXTRA []interface {}=[个人])
+2024/12/23 09:25:00.840 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水公司])
+2024/12/23 09:25:00.878 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥盘州一千零八十三分店])
+2024/12/23 09:25:01.577 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥盘州一千零八十三分店])
+2024/12/23 09:25:01.577 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥钟山三百零三分店])
+2024/12/23 09:25:02.233 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥钟山三百零三分店])
+2024/12/23 09:25:02.234 [I]  开始处理公司:%!(EXTRA []interface {}=[江苏卓阳医疗器械有限公司])
+2024/12/23 09:25:02.885 [I]  处理公司完成:%!(EXTRA []interface {}=[江苏卓阳医疗器械有限公司])
+2024/12/23 09:25:02.885 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州国太药业有限公司])
+2024/12/23 09:25:03.342 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州国太药业有限公司])
+2024/12/23 09:25:03.343 [I]  开始处理公司:%!(EXTRA []interface {}=[益精睛眼科医院])
+2024/12/23 09:25:03.813 [I]  处理公司完成:%!(EXTRA []interface {}=[益精睛眼科医院])
+2024/12/23 09:25:03.813 [I]  开始处理公司:%!(EXTRA []interface {}=[上药康德乐(辽宁)医药有限公司])
+2024/12/23 09:25:03.855 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州福阳医疗器械有限责任公司])
+2024/12/23 09:25:04.503 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州福阳医疗器械有限责任公司])
+2024/12/23 09:25:04.504 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥都匀一百四十七分店])
+2024/12/23 09:25:05.176 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥都匀一百四十七分店])
+2024/12/23 09:25:05.176 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州菲尚医疗器械有限公司])
+2024/12/23 09:25:05.939 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州菲尚医疗器械有限公司])
+2024/12/23 09:25:05.939 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州中医药大学第二附属医院])
+2024/12/23 09:25:05.970 [I]  开始处理公司:%!(EXTRA []interface {}=[云南千恒医疗器械有限公司])
+2024/12/23 09:25:06.639 [I]  处理公司完成:%!(EXTRA []interface {}=[云南千恒医疗器械有限公司])
+2024/12/23 09:25:06.640 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司金朱东路分店])
+2024/12/23 09:25:07.338 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州大药房有限公司金朱东路分店])
+2024/12/23 09:25:07.338 [I]  开始处理公司:%!(EXTRA []interface {}=[江西滨河实业有限公司])
+2024/12/23 09:25:08.009 [I]  处理公司完成:%!(EXTRA []interface {}=[江西滨河实业有限公司])
+2024/12/23 09:25:08.009 [I]  开始处理公司:%!(EXTRA []interface {}=[广西贞途医疗器械有限公司])
+2024/12/23 09:25:08.702 [I]  处理公司完成:%!(EXTRA []interface {}=[广西贞途医疗器械有限公司])
+2024/12/23 09:25:08.702 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州楷丰医疗科技有限公司])
+2024/12/23 09:25:09.346 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州楷丰医疗科技有限公司])
+2024/12/23 09:25:09.346 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州正和祥药业有限公司八分店])
+2024/12/23 09:25:09.992 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州正和祥药业有限公司八分店])
+2024/12/23 09:25:09.992 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州正和祥有限公司四十四分店])
+2024/12/23 09:25:10.505 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州正和祥有限公司四十四分店])
+2024/12/23 09:25:10.505 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州菲尚医疗器械有限公司])
+2024/12/23 09:25:11.480 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州菲尚医疗器械有限公司])
+2024/12/23 09:25:11.480 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州易扬医药有限公司])
+2024/12/23 09:25:12.136 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州易扬医药有限公司])
+2024/12/23 09:25:12.137 [I]  开始处理公司:%!(EXTRA []interface {}=[广东办事处])
+2024/12/23 09:25:12.169 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州诚创医疗器械有限责任公司])
+2024/12/23 09:25:12.782 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州诚创医疗器械有限责任公司])
+2024/12/23 09:25:12.782 [I]  开始处理公司:%!(EXTRA []interface {}=[茂名高济医药连锁有限公司电白南粤新风店])
+2024/12/23 09:25:13.437 [I]  处理公司完成:%!(EXTRA []interface {}=[茂名高济医药连锁有限公司电白南粤新风店])
+2024/12/23 09:25:13.437 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县大坝卫生院])
+2024/12/23 09:25:14.054 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县大坝卫生院])
+2024/12/23 09:25:14.054 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州瑞丰医药有限公司])
+2024/12/23 09:25:15.981 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州瑞丰医药有限公司])
+2024/12/23 09:25:15.981 [I]  开始处理公司:%!(EXTRA []interface {}=[全国代理商(代理商均建在此账号里)])
+2024/12/23 09:25:16.014 [I]  开始处理公司:%!(EXTRA []interface {}=[zx黄总])
+2024/12/23 09:25:16.045 [I]  开始处理公司:%!(EXTRA []interface {}=[公司])
+2024/12/23 09:25:16.076 [I]  开始处理公司:%!(EXTRA []interface {}=[哈尔滨市万源医疗器械有限公司])
+2024/12/23 09:25:16.698 [I]  处理公司完成:%!(EXTRA []interface {}=[哈尔滨市万源医疗器械有限公司])
+2024/12/23 09:25:16.699 [I]  开始处理公司:%!(EXTRA []interface {}=[羡塘镇中心卫生院])
+2024/12/23 09:25:17.345 [I]  处理公司完成:%!(EXTRA []interface {}=[羡塘镇中心卫生院])
+2024/12/23 09:25:17.345 [I]  开始处理公司:%!(EXTRA []interface {}=[大龙卫生院])
+2024/12/23 09:25:17.986 [I]  处理公司完成:%!(EXTRA []interface {}=[大龙卫生院])
+2024/12/23 09:25:17.986 [I]  开始处理公司:%!(EXTRA []interface {}=[好花红卫生院])
+2024/12/23 09:25:18.656 [I]  处理公司完成:%!(EXTRA []interface {}=[好花红卫生院])
+2024/12/23 09:25:18.656 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓六枝桃园店])
+2024/12/23 09:25:19.124 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓六枝桃园店])
+2024/12/23 09:25:19.124 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓六枝平寨店])
+2024/12/23 09:25:19.587 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓六枝平寨店])
+2024/12/23 09:25:19.587 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓六枝那平店])
+2024/12/23 09:25:20.093 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓六枝那平店])
+2024/12/23 09:25:20.093 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓六枝彩虹湾店])
+2024/12/23 09:25:20.543 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓六枝彩虹湾店])
+2024/12/23 09:25:20.544 [I]  开始处理公司:%!(EXTRA []interface {}=[水城疾控卫生院])
+2024/12/23 09:25:20.574 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区红桥街道卫生服务中心])
+2024/12/23 09:25:21.027 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区红桥街道卫生服务中心])
+2024/12/23 09:25:21.027 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区石龙街道卫生服务中心])
+2024/12/23 09:25:21.491 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区石龙街道卫生服务中心])
+2024/12/23 09:25:21.491 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区玉舍镇卫生院])
+2024/12/23 09:25:22.120 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区玉舍镇卫生院])
+2024/12/23 09:25:22.120 [I]  开始处理公司:%!(EXTRA []interface {}=[云南妤绣医疗美容有限责任公司])
+2024/12/23 09:25:22.741 [I]  处理公司完成:%!(EXTRA []interface {}=[云南妤绣医疗美容有限责任公司])
+2024/12/23 09:25:22.741 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区坪寨乡卫生院])
+2024/12/23 09:25:23.277 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区坪寨乡卫生院])
+2024/12/23 09:25:23.277 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区都格镇卫生院])
+2024/12/23 09:25:23.725 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区都格镇卫生院])
+2024/12/23 09:25:23.725 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区蟠龙镇卫生院])
+2024/12/23 09:25:24.208 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区蟠龙镇卫生院])
+2024/12/23 09:25:24.209 [I]  开始处理公司:%!(EXTRA []interface {}=[正和祥三穗三百五十三分店])
+2024/12/23 09:25:24.902 [I]  处理公司完成:%!(EXTRA []interface {}=[正和祥三穗三百五十三分店])
+2024/12/23 09:25:24.902 [I]  开始处理公司:%!(EXTRA []interface {}=[六盘水市水城区猴场乡卫生院])
+2024/12/23 09:25:25.398 [I]  处理公司完成:%!(EXTRA []interface {}=[六盘水市水城区猴场乡卫生院])
+2024/12/23 09:25:25.398 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州省医药(集团)和平医药有限公司铜仁分公司])
+2024/12/23 09:25:26.311 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州省医药(集团)和平医药有限公司铜仁分公司])
+2024/12/23 09:25:26.311 [I]  开始处理公司:%!(EXTRA []interface {}=[泉州市疾病预防控制中心])
+2024/12/23 09:25:26.346 [I]  开始处理公司:%!(EXTRA []interface {}=[北京高济百康大药房有限公司新平北路分店])
+2024/12/23 09:25:27.065 [I]  处理公司完成:%!(EXTRA []interface {}=[北京高济百康大药房有限公司新平北路分店])
+2024/12/23 09:25:27.066 [I]  开始处理公司:%!(EXTRA []interface {}=[修文疾控卫生院])
+2024/12/23 09:25:27.097 [I]  开始处理公司:%!(EXTRA []interface {}=[修文县洒坪镇卫生院])
+2024/12/23 09:25:27.830 [I]  处理公司完成:%!(EXTRA []interface {}=[修文县洒坪镇卫生院])
+2024/12/23 09:25:27.830 [I]  开始处理公司:%!(EXTRA []interface {}=[修文县大石布依族乡卫生院])
+2024/12/23 09:25:28.287 [I]  处理公司完成:%!(EXTRA []interface {}=[修文县大石布依族乡卫生院])
+2024/12/23 09:25:28.287 [I]  开始处理公司:%!(EXTRA []interface {}=[修文县谷堡镇卫生院])
+2024/12/23 09:25:28.786 [I]  处理公司完成:%!(EXTRA []interface {}=[修文县谷堡镇卫生院])
+2024/12/23 09:25:28.786 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市亦资一分店])
+2024/12/23 09:25:29.247 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市亦资一分店])
+2024/12/23 09:25:29.248 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市亦资二分店])
+2024/12/23 09:25:29.735 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市亦资二分店])
+2024/12/23 09:25:29.735 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市亦资三分店])
+2024/12/23 09:25:30.201 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市亦资三分店])
+2024/12/23 09:25:30.201 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市亦资四分店])
+2024/12/23 09:25:30.660 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市亦资四分店])
+2024/12/23 09:25:30.660 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市双凤镇一分店])
+2024/12/23 09:25:31.139 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市双凤镇一分店])
+2024/12/23 09:25:31.139 [I]  开始处理公司:%!(EXTRA []interface {}=[一树老百姓盘州市双凤镇二分店])
+2024/12/23 09:25:31.709 [I]  处理公司完成:%!(EXTRA []interface {}=[一树老百姓盘州市双凤镇二分店])
+2024/12/23 09:25:31.710 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州华丰医药有限公司 ])
+2024/12/23 09:25:32.544 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州华丰医药有限公司 ])
+2024/12/23 09:25:32.544 [I]  开始处理公司:%!(EXTRA []interface {}=[陕西康泽医药器械有限公司])
+2024/12/23 09:25:33.171 [I]  处理公司完成:%!(EXTRA []interface {}=[陕西康泽医药器械有限公司])
+2024/12/23 09:25:33.171 [I]  开始处理公司:%!(EXTRA []interface {}=[高济健康华南片区])
+2024/12/23 09:25:33.204 [I]  开始处理公司:%!(EXTRA []interface {}=[清远百姓])
+2024/12/23 09:25:33.237 [I]  开始处理公司:%!(EXTRA []interface {}=[清城华茂广场店])
+2024/12/23 09:33:17.036 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:33:18.150 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:33:47.750 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:33:48.263 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:33:50.616 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 09:33:51.930 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 09:34:02.730 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:34:03.477 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:34:07.698 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:34:08.754 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:34:15.965 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:34:17.118 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:35:50.286 [I]  开始处理公司:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:35:50.956 [I]  处理公司完成:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:38:42.822 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司黔南大药房])
+2024/12/23 09:38:43.670 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司黔南大药房])
+2024/12/23 09:43:22.188 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:43:23.269 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:44:13.607 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:44:14.634 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:44:17.750 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:44:18.536 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:44:19.230 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:44:20.394 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:45:42.862 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:45:43.414 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:46:04.244 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 09:46:06.050 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 09:47:50.590 [I]  开始处理公司:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:47:51.260 [I]  处理公司完成:%!(EXTRA []interface {}=[重庆睿盛生物科技有限公司])
+2024/12/23 09:53:27.031 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:53:28.067 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 09:54:26.877 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:54:27.904 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 09:54:40.752 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:54:41.910 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 09:56:02.314 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:56:03.119 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 09:56:48.227 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 09:56:48.725 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 10:02:07.376 [I]  开始处理公司:%!(EXTRA []interface {}=[长沙河西店])
+2024/12/23 10:02:08.270 [I]  处理公司完成:%!(EXTRA []interface {}=[长沙河西店])
+2024/12/23 10:03:12.112 [I]  开始处理公司:%!(EXTRA []interface {}=[一树药业西秀区体育路三分店])
+2024/12/23 10:03:12.784 [I]  处理公司完成:%!(EXTRA []interface {}=[一树药业西秀区体育路三分店])
+2024/12/23 10:03:38.464 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:03:39.441 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:04:48.100 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:04:51.182 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:05:00.482 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:05:01.721 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:05:39.404 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 10:05:40.722 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 10:06:15.085 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:06:16.119 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:07:03.857 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 10:07:04.386 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 10:14:46.044 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:14:47.053 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:15:03.899 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:15:05.089 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:15:26.711 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:15:27.819 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:15:49.084 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 10:15:51.161 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州天辰医药有限责任公司])
+2024/12/23 10:18:01.703 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:18:02.490 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:18:08.212 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 10:18:09.135 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司])
+2024/12/23 10:25:02.455 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:25:03.499 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:25:19.438 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股贵州有限公司云岩分店])
+2024/12/23 10:25:20.095 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股贵州有限公司云岩分店])
+2024/12/23 10:25:46.299 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:25:47.381 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:25:57.274 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:25:58.469 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:28:46.756 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 10:28:48.260 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 10:34:01.812 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:34:02.619 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:35:04.834 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:35:05.878 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:35:50.577 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:35:51.680 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:36:37.450 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:36:38.652 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:40:06.088 [I]  开始处理公司:%!(EXTRA []interface {}=[惠水县宁旺卫生院])
+2024/12/23 10:40:06.844 [I]  处理公司完成:%!(EXTRA []interface {}=[惠水县宁旺卫生院])
+2024/12/23 10:44:43.966 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:44:44.739 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊勇康药业有限公司])
+2024/12/23 10:45:17.606 [I]  开始处理公司:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 10:45:19.210 [I]  处理公司完成:%!(EXTRA []interface {}=[国药控股黔南州有限公司])
+2024/12/23 10:45:49.868 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:45:50.894 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州俊达康药业有限公司])
+2024/12/23 10:46:06.613 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:46:07.647 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州润洲医药有限责任公司])
+2024/12/23 10:47:01.875 [I]  开始处理公司:%!(EXTRA []interface {}=[贵州友邦医药有限公司])
+2024/12/23 10:47:03.447 [I]  处理公司完成:%!(EXTRA []interface {}=[贵州友邦医药有限公司])

+ 0 - 0
logs/logxE/logx.log


+ 39 - 0
main.go

@@ -0,0 +1,39 @@
+package main
+
+import (
+	"Cold_Data/Nats"
+	_ "Cold_Data/StatisticsTask"
+	"Cold_Data/conf"
+	"Cold_Data/models/Device"
+	_ "Cold_Data/routers"
+	"github.com/beego/beego/v2/adapter/orm"
+	beego "github.com/beego/beego/v2/server/web"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+)
+
+func init() {
+
+	orm.RegisterDriver("mysql", orm.DRMySQL)
+	orm.RegisterDataBase("default", "mysql",
+		conf.MysqlServer_Username+":"+conf.MysqlServer_Password+"@tcp("+conf.MysqlServer_UrlPort+")/"+conf.MysqlServer_Database+"?charset=utf8mb4&loc=Local&parseTime=True",
+		conf.MysqlServer_MaxIdleConnections, conf.MysqlServer_MaxOpenConnections)
+	//orm.RunSyncdb("default", false, true) // 创建数据库
+
+	//logs.Println("MysqlServer:" + conf.MysqlServer_Username + ":" + conf.MysqlServer_Password + "@tcp(" + conf.MysqlServer_UrlPort + ")/" + conf.MysqlServer_Database + "?charset=utf8mb4&loc=Local&parseTime=True")
+
+}
+
+func main() {
+
+	beego.BConfig.AppName = conf.AppName + "_" + strconv.Itoa(conf.HTTPPort)    // 项目名
+	beego.BConfig.ServerName = conf.AppName + "_" + strconv.Itoa(conf.HTTPPort) //server  名称
+	beego.BConfig.RunMode = "dev"                                               //  应用的运行模式
+	beego.BConfig.Listen.HTTPPort = conf.HTTPPort                               //监听端口  本地:8518  线上:8528
+
+	Device.Hande_device_sensor_type() // 设备类型统计
+
+	go Nats.NatsInit() // Nats 通讯
+
+	beego.Run()
+}

+ 128 - 0
models/Account/Admin.go

@@ -0,0 +1,128 @@
+package Account
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+type Admin struct {
+	Id      int    `orm:"column(ID);size(11);auto;pk"`
+	T_uuid  string `orm:"size(256);"`         //  用户编号
+	T_pid   int    `orm:"size(200);"`         //  绑定公司 ( 只有创建公司用户时添加,内部人员 为0)
+	T_pids  string `orm:"size(256);"`         //   绑定公司管理  Pid|  如:P1|P2|
+	T_power int    `orm:"size(2);default(0)"` // 权限 (关联权限表)
+	T_user  string `orm:"size(256);"`         // 用户名 (唯一)
+	T_pass  string `orm:"size(256);"`         // MD5
+
+	T_name  string `orm:"size(256);"` // 姓名
+	T_phone string `orm:"size(256);"` // 电话
+	T_mail  string `orm:"size(200);"` // 邮箱
+	T_wx    string `orm:"type(text)"` // 微信
+
+	T_State    int       `orm:"size(200);default(1)"`                             //  0删除  1 正常
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now_add 第一次保存时才设置时间
+}
+
+func (t *Admin) TableName() string {
+	return "admin" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_Admin cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Admin))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_User_Admin", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	var err error
+	redisCache_Admin, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Admin == nil {
+		errMsg := "failed to init redis"
+		logs.PrintlnError(errMsg, err)
+	}
+
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Admin_Get(key string) (r Admin, is bool) {
+	if redisCache_Admin.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_Admin.Get(key)
+
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return Admin{}, false
+}
+
+// 获取 ById
+func Read_Admin_Byid(Id int) (r Admin, err error) {
+
+	o := orm.NewOrm()
+	r = Admin{Id: Id, T_State: 1}
+	err = o.Read(&r, "Id", "T_State") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	if err != nil {
+		logs.Println("Read_Admin_Byid", err)
+	}
+	return r, err
+}
+
+// 获取列表
+func Read_Admin_Tpids_List(CompanyID int) (maps []Admin) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(Admin))
+
+	cond := orm.NewCondition()
+	cond1 := cond.And("T_State", 1).And("T_pids__icontains", CompanyID)
+
+	qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&maps)
+
+	return maps
+}
+
+// 获取列表
+func Read_Admin_Tpid_List(CompanyID int) (maps []Admin) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(Admin))
+
+	cond := orm.NewCondition()
+	cond1 := cond.And("T_State", 1).And("T_pid", CompanyID)
+
+	qs.SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&maps)
+
+	return maps
+}
+
+// 获取 ByT_uuid
+func Read_Admin_ByUuid(T_uuid string) (r Admin, err error) {
+	if r, is := Redis_Admin_Get(T_uuid); is {
+		//println("Redis_Get  OK")
+		return r, nil
+	}
+	o := orm.NewOrm()
+	r = Admin{T_uuid: T_uuid, T_State: 1}
+	err = o.Read(&r, "T_uuid", "T_State") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	if err != nil {
+		logs.PrintlnError("Read_Admin_ByUuid", err)
+	}
+	return r, err
+}

+ 142 - 0
models/Account/Company.go

@@ -0,0 +1,142 @@
+package Account
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"time"
+)
+
+type Company struct {
+	Id        int    `orm:"column(ID);size(11);auto;pk"`
+	T_mid     int    `orm:"size(200);"`          //  上一级 ID
+	T_name    string `orm:"size(256);"`          // 公司名称
+	T_key     string `orm:"size(256);index;"`    // 公司密钥
+	T_warning int    `orm:"size(20);default(1)"` //  是否处理报警信息 1处理 2不处理
+
+	T_plan string `orm:"type(text);null"` //  平面图
+	T_data string `orm:"type(text);null"` //  大数据
+	T_v3d  string `orm:"type(text);null"` //  3D 视图
+
+	T_path     string    `orm:"size(256);null"`                                   // 公司路径 /0/1/5/
+	T_money    float32   `orm:"digits(12);decimals(2)"`                           //  余额
+	T_Charging int       `orm:"size(11);default(0)"`                              //  记账扣费 公司ID  默认为:0 (自己)
+	T_State    int       `orm:"size(200);"`                                       //  0删除  1 正常
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now_add 第一次保存时才设置时间
+}
+
+func (t *Company) TableName() string {
+	return "company" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_Company cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Company))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_User_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_Company, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Company == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+	}
+
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_Company_Set(r Company) (err error) {
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("Redis_Company_Set", err)
+		return
+	}
+
+	err = redisCache_Company.Put(strconv.Itoa(r.Id), str, 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", strconv.Itoa(r.Id), ",value:", str, err)
+	}
+	return
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Company_Get(key string) (r Company, is bool) {
+	if redisCache_Company.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_Company.Get(key)
+
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return Company{}, false
+}
+
+func Redis_Company_DelK(key string) (err error) {
+	err = redisCache_Company.Delete(key)
+	return
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 获取 ById
+func Read_Company_id(Id int) (e error, r Company) {
+	if r, is := Redis_Company_Get(strconv.Itoa(Id)); is {
+		//println("Redis_Get  OK")
+		return nil, r
+	}
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Company))
+	e = qs.Filter("Id", Id).Filter("T_State", 1).One(&r)
+	return e, r
+}
+
+// 修改
+func Update_Company(m Company, cols ...string) bool {
+	o := orm.NewOrm()
+	if num, err := o.Update(&m, cols...); err == nil {
+		logs.Println("Number of records updated in database:", num)
+		Redis_Company_Set(m) // Redis 更新缓存
+		return true
+	}
+	return false
+}
+
+// 获取全部
+func Read_Company_All() (r_l []Company) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Company))
+	qs.Filter("T_State", 1).All(&r_l)
+	return
+}
+
+// 获取全部
+func Read_Company_T_mid_All(T_mid int) (r_l []Company) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Company))
+	qs.Filter("T_State", 1).Filter("T_mid", T_mid).All(&r_l)
+	return
+}
+
+// 获取 ById
+func Read_Company_T_key(T_key string) (r Company, e error) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(Company))
+	e = qs.Filter("T_key", T_key).Filter("T_State", 1).One(&r)
+	return r, e
+}

+ 62 - 0
models/Account/Tokey.go

@@ -0,0 +1,62 @@
+package Account
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	uuid "github.com/satori/go.uuid"
+	"time"
+)
+
+var redisCache_Tokey cache.Cache
+
+func init() {
+	//注册模型
+	//orm.RegisterModel(new(Tokey))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_User_Tokey", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	var err error
+	redisCache_Tokey, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Tokey == nil {
+		errMsg := "failed to init redis"
+		logs.PrintlnError(errMsg, err)
+	}
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Add_Tokey_Set(Uuid string) string {
+	var Tokey string
+	for true {
+		Tokey = uuid.NewV4().String()
+		if !redisCache_Tokey.IsExist(Tokey) {
+			break
+		}
+		fmt.Print("申请 TOKEY 重复!重新生成。", Tokey)
+	}
+	redisCache_Tokey.Put(Tokey, Uuid, 2*time.Hour)
+
+	return Tokey
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Tokey_Get(Tokey string) (string, bool) {
+	if len(Tokey) < 10 {
+		return "", false
+	}
+	if redisCache_Tokey.IsExist(Tokey) {
+		//println("找到key:",key)
+		v := redisCache_Tokey.Get(Tokey)
+		value := string(v.([]byte)) //这里的转换很重要,Get返回的是interface
+
+		redisCache_Tokey.Put(Tokey, value, 2*time.Hour) //  重新计次
+		return value, true
+	}
+	//println("没有 找到key:",key)
+	return "", false
+}

+ 203 - 0
models/Device/Device.go

@@ -0,0 +1,203 @@
+package Device
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strings"
+	"time"
+)
+
+// 模板
+type Device struct {
+	T_sn              string    `orm:"pk;size(256);"`            // 设备序列号
+	T_pid             int       `orm:"index;size(256);"`         // Account.Company 绑定公司
+	T_devName         string    `orm:"size(256);"`               // 设备名称  20字
+	T_protocol        int       `orm:"size(2);default(3)"`       // 冷链通讯协议 1 :1.0协议   2 :2.0协议    3 :3.0协议
+	T_mqttid          string    `orm:"size(256);"`               // MQTT 服务ID
+	T_VerifyTime      time.Time `orm:"type(timestamp);"`         // 验证时间
+	T_CalibrationTime time.Time `orm:"type(timestamp);"`         // 校准时间
+	T_PatrolTime      time.Time `orm:"type(timestamp);"`         // 巡检时间
+	T_ist             int       `orm:"size(2);default(1)"`       // 温度   1开启   2关闭
+	T_ish             int       `orm:"size(2);default(1)"`       // 湿度   1开启   2关闭
+	T_State           int       `orm:"index;size(2);default(1)"` // 0 屏蔽   1 正常  (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
+
+	// 设备同步参数
+	T_Dattery  int    `orm:"size(4);"`                 // 电量       :设备实时状态推送
+	T_Site     string `orm:"size(200);"`               // GPS       :实时数据  记录数据
+	T_monitor  int    `orm:"index;size(2);"`           // 监控状态 0 未监控 1 监控  停止记录     :记录数据   上下线(=0)
+	T_online   int    `orm:"index;size(2);default(0)"` // 在线状态 0 未启用  1 在线  2 static/     :上下线  消息
+	T_online_s int    `orm:"index;size(2);default(0)"` // 在线状态-备用  0 未启用  1 在线  2 离线     :上下线
+
+	// 硬件信息
+	T_model string `orm:"size(200);"` // KF200BG  设备型号
+	T_sver  string `orm:"size(200);"` // "1.0.0",//软件版本
+	T_hver  string `orm:"size(200);"` // "1.0.0",//硬件版本
+	T_imei  string `orm:"size(200);"` // "867387060327718",//模组imei
+	T_iccid string `orm:"size(200);"` // "89860477102170049750",//sim卡号
+	T_rssi  string `orm:"size(200);"` // "80",//信号强度           :设备实时状态推送
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+type Device_task struct {
+	T_sn   string
+	T_task string
+}
+
+func (t *Device) TableName() string {
+	return "device" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_Device cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Device))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_Device", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_Device, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Device == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+		panic(any(errMsg))
+	}
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_Set(key string, r Device) (err error) {
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("Redis_Set", err)
+		return
+	}
+
+	err = redisCache_Device.Put(key, str, 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Get(key string) (r Device, is bool) {
+	if redisCache_Device.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_Device.Get(key)
+		if v == nil {
+			return Device{}, false
+		}
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return Device{}, false
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 获取 ById
+func Read_Device_ByT_sn(T_sn string) (r Device, err error) {
+	if r, is := Redis_Get(T_sn); is {
+		//println("Redis_Get  OK")
+		return r, nil
+	}
+	//println("没有 Redis_Get SN")
+	o := orm.NewOrm()
+	r = Device{T_sn: T_sn, T_State: 1}
+	err = o.Read(&r, "T_sn", "T_State") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	if err != nil {
+		logs.Println("Read_Device_ByT_sn", err)
+		return r, err
+	}
+	Redis_Set(r.T_sn, r) // Redis 更新缓存
+	return r, err
+}
+
+// 设备类型统计
+func Hande_device_sensor_type() {
+	o := orm.NewOrm()
+	var maps orm2.ParamsList
+	o.Raw("SELECT ID FROM device_sensor_type WHERE t_view = 1").ValuesFlat(&maps)
+	data, _ := json.Marshal(maps)
+	conf.KF = string(data)
+	fmt.Println(conf.KF)
+	conf.KF = strings.Replace(conf.KF, "[", "(", -1)
+	conf.KF = strings.Replace(conf.KF, "]", ")", -1)
+	conf.KF = strings.Replace(conf.KF, "\"", "", -1)
+	println("conf.KF:", conf.KF)
+
+	o.Raw("SELECT ID FROM device_sensor_type WHERE t_view = 2").ValuesFlat(&maps)
+	data, _ = json.Marshal(maps)
+	conf.YD = string(data)
+	fmt.Println(conf.YD)
+	conf.YD = strings.Replace(conf.YD, "[", "(", -1)
+	conf.YD = strings.Replace(conf.YD, "]", ")", -1)
+	conf.YD = strings.Replace(conf.YD, "\"", "", -1)
+	println("conf.KF:", conf.YD)
+}
+
+// 获取 ById
+func Read_Device_设备总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	o.Raw("SELECT COUNT(1) FROM device_sensor WHERE t_pid = ? AND t__state = 1 ", t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+// 获取 ById
+func Read_Device_设备离线总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	o.Raw("SELECT COUNT(1) FROM device_sensor WHERE t_pid = ? AND t_type IN "+conf.YD+" AND t__state = 1 AND( t_online <> 1 OR t_online_s <> 1 )", t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+// 获取 ById
+func Read_Device_设备监控总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	o.Raw("SELECT COUNT(1) FROM device_sensor WHERE t_pid = ? AND t_type IN "+conf.YD+" AND t__state = 1 AND t_monitor = 1", t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+// 获取 ById
+func Read_Device_库房总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	o.Raw("SELECT COUNT(1) FROM device_sensor WHERE t_pid = ? AND t_type IN"+conf.KF+" AND t__state = 1", t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+// 获取 ById
+func Read_Device_移动总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	o.Raw("SELECT COUNT(1) FROM device_sensor WHERE t_pid = ? AND t_type IN"+conf.YD+" AND t__state = 1", t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}

+ 132 - 0
models/Device/DeviceData.go

@@ -0,0 +1,132 @@
+package Device
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"time"
+)
+
+// 模板
+type DeviceData_R struct {
+	T_t    float32   // 温度
+	T_rh   float32   // 湿度
+	T_Site string    // GPS
+	T_time time.Time // 采集时间
+	T_sp   int       // 传感器参数ID
+	//create_time
+}
+type DeviceData_old struct {
+	T_t    float32
+	T_rh   float32
+	T_site string
+	T_sp   int
+}
+
+// 模板
+type DeviceData_RR struct {
+	T_name    string  // 传感器名称
+	T_t       float32 // 温度
+	T_rh      float32 // 湿度
+	T_site    string  // GPS
+	T_Tlower  float32 // 温度下限
+	T_Tupper  float32 // 温度上限
+	T_RHlower float32 // 湿度下限
+	T_RHupper float32 // 湿度上限
+	T_time    string  // 采集时间
+	T_ist     int     // 温度   1开启   2关闭
+	T_ish     int     // 湿度   1开启   2关闭
+}
+type DeviceData_ struct {
+	T_t    float32   // 温度
+	T_rh   float32   // 湿度
+	T_site string    // GPS
+	T_time time.Time // 采集时间
+}
+
+var redis_DeviceData cache.Cache
+
+func init() {
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_DeviceData", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redis_DeviceData, err = cache.NewCache("redis", config)
+	if err != nil || redis_DeviceData == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+	}
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func RedisDeviceData_Set(T_sn string, T_id int, r DeviceData_R) (err error) {
+	key := T_sn + "|" + strconv.Itoa(T_id)
+
+	if redis_DeviceData.IsExist(key) {
+		var t DeviceData_R
+		v := redis_DeviceData.Get(key)
+		json.Unmarshal(v.([]byte), &t)
+		// 防止时间溢出
+		if time.Now().Unix() <= r.T_time.Unix() {
+			r.T_time = time.Now()
+		}
+		// 提前最新数据
+		if t.T_time.Unix() > r.T_time.Unix() {
+			// 储存的 是最新数据
+			return
+		}
+	}
+
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("RedisDeviceData_Set", err)
+		return
+	}
+	err = redis_DeviceData.Put(key, str, 1*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+
+func RedisDeviceData_Get(key string) (r DeviceData_R, is bool) {
+	if redis_DeviceData.IsExist(key) {
+		v := redis_DeviceData.Get(key)
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	return DeviceData_R{}, false
+}
+
+func Read_DeviceData_List(SN string, T_id int, Time_start_ string, Time_end_ string) (maps []DeviceData_) {
+	o := orm.NewOrm()
+
+	sql_time := ""
+	if len(Time_start_) > 1 {
+		sql_time += " t_time >= '" + Time_start_ + "' AND "
+	}
+
+	if len(Time_end_) > 1 {
+		sql_time += " t_time <= '" + Time_end_ + "' AND "
+	}
+
+	sql := "SELECT t_t,t_rh,t_site,DATE_FORMAT(t_time,'%Y-%m-%d %H:%i:%s') AS t_time,t_time AS t_time1 FROM z_device_data_" + SN + " WHERE " + sql_time + " t_id = " + strconv.Itoa(T_id) + " ORDER BY t_time1 DESC  LIMIT 1000"
+	fmt.Println(sql)
+	_, err := o.Raw(sql).QueryRows(&maps)
+	if err != nil {
+		logs.PrintlnError(lib.FuncName(), err)
+		return
+	}
+
+	return
+}

+ 69 - 0
models/Device/DeviceDataOld.go

@@ -0,0 +1,69 @@
+package Device
+
+import (
+	"Cold_Data/logs"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 设备记录数据 操作历史记录(只存放留存下来的数据,最近记录直接写到 记录数据中)
+type DeviceDataOld struct {
+	Id int `orm:"column(ID);size(11);auto;pk"`
+
+	T_sn string `orm:"index;size(256);"` // 主键 设备序列号
+	T_id int    `orm:"index;size(12);"`  // 主键 传感器编号
+
+	T_t    float32   `orm:"size(20);digits(6);decimals(1)"` // 温度
+	T_rh   float32   `orm:"size(20);digits(6);decimals(1)"` // 湿度
+	T_Site string    `orm:"size(100);"`                     // GPS
+	T_time time.Time `orm:"index;type(timestamp);"`         // 主键 采集时间
+
+	T_operation int `orm:"size(12);"` // 操作类型  1:插入   2:替换   3:删除   4:忽略
+
+	T_uuid     string    `orm:"size(256);"`                                       // 操作人  Admin->T_uuid , 如果为空字符串 则是设备本身上传的,标记为(设备)
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+type DeviceDataOld_R struct {
+	T_t         float32   // 温度
+	T_rh        float32   // 湿度
+	T_Site      string    // GPS
+	T_time      time.Time // 采集时间
+	T_operation int       // 操作类型  1:插入   2:替换   3:删除
+	T_uuid      string    // 操作人  Admin->T_uuid , 如果为空字符串 则是设备本身上传的
+	CreateTime  time.Time //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+func (t *DeviceDataOld) TableName() string {
+	return "device_data_old" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceDataOld))
+}
+
+func DeviceDataOldToDeviceDataOld_R(r DeviceDataOld) (t DeviceDataOld_R) {
+	t.T_t = r.T_t
+	t.T_rh = r.T_rh
+	t.T_Site = r.T_Site
+	t.T_time = r.T_time
+	t.T_operation = r.T_operation
+	t.T_uuid = r.T_uuid
+	t.CreateTime = r.CreateTime
+
+	return
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 添加
+func Add_DeviceDataOld(m DeviceDataOld) (id int64, err error) {
+	o := orm.NewOrm()
+	id, err = o.Insert(&m)
+	if err != nil {
+		logs.Println("Add_DeviceDataOld", err)
+	}
+	return id, err
+}

+ 186 - 0
models/Device/DeviceParameter.go

@@ -0,0 +1,186 @@
+package Device
+
+import (
+	"Cold_Data/logs"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 模板
+type DeviceParameter struct {
+	Id int `orm:"column(ID);size(11);auto;pk"`
+
+	T_sn string `orm:"size(256);"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+
+	T_name     string `orm:"size(256);"` //设备名称 (传 * 代表托管给平台处理) *
+	T_saveT    int    `orm:"size(5);"`   //数据保存间隔 s(60~3600) 默认:60 *
+	T_overA    int    `orm:"size(5);"`   //数据保存间隔 超限报警触发间隔 s(60~600) 默认:60  *
+	T_outA     int    `orm:"size(5);"`   //超限报警触发间隔 s(0,60~600)  为0时只触发一次 默认:60 *
+	T_lostA    int    `orm:"size(5);"`   //传感器掉线报警触发间隔  s(0,60~600) 为0时只触发一次 默认:60  *
+	T_bat      int    `orm:"size(5);"`   // 电池电量下限   %(0~30) 默认:20 *
+	T_warn     int    `orm:"size(5);"`   // 超限预警触发间隔 s(0,60~600)为0时只触发一次 默认:60  *
+	T_warnD    int    `orm:"size(5);"`   // 超限预警延时   s(0~600) 默认:0 *
+	T_scan     int    `orm:"size(5);"`   // 显示轮播间隔   s(1~240) 默认:5 *
+	T_dormancy int    `orm:"size(5);"`   // 是否进入休眠  0:关闭 1:开启    默认:0
+	T_snum     int    `orm:"size(5);"`   // 【管理主机】 - 传感器数量  (范围0~255)
+	T_btname   string `orm:"size(256);"` //蓝牙打印机名称
+	T_btsid    int    `orm:"size(256);"` //打印机服务号
+	T_btchar   int    `orm:"size(256);"` //蓝牙特征码
+
+	T_uuid      string `orm:"size(256);"`          //处理 人员
+	T_Msid      int64  `orm:"size(50);default(0)"` // 消息识别ID
+	T_SendState int    `orm:"size(2);default(1)"`  // 发送状态  0 待发送   1 发送成功  2 发送失败  3 丢弃
+	T_State     int    `orm:"size(2);default(1)"`  //  1 系统获取   2 用户提交
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+func (t *DeviceParameter) TableName() string {
+	return "device_parameter" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceParameter))
+	orm.Debug = true
+}
+
+// ---------------- 特殊方法 -------------------
+// 添加
+func Add_DeviceParameter_fun(Deviceparameter DeviceParameter) bool {
+	if DeviceParameter_r, is := Read_DeviceParameter(Deviceparameter.T_sn); is {
+		if Deviceparameter.T_name != DeviceParameter_r.T_name ||
+			Deviceparameter.T_saveT != DeviceParameter_r.T_saveT ||
+			Deviceparameter.T_overA != DeviceParameter_r.T_overA ||
+			Deviceparameter.T_outA != DeviceParameter_r.T_outA ||
+			Deviceparameter.T_lostA != DeviceParameter_r.T_lostA ||
+			Deviceparameter.T_bat != DeviceParameter_r.T_bat ||
+			Deviceparameter.T_scan != DeviceParameter_r.T_scan ||
+			Deviceparameter.T_warn != DeviceParameter_r.T_warn ||
+			Deviceparameter.T_warnD != DeviceParameter_r.T_warnD ||
+			Deviceparameter.T_dormancy != DeviceParameter_r.T_dormancy ||
+			Deviceparameter.T_snum != DeviceParameter_r.T_snum ||
+			Deviceparameter.T_btname != DeviceParameter_r.T_btname ||
+			//Deviceparameter.T_speed != DeviceParameter_r.T_speed ||
+			Deviceparameter.T_btsid != DeviceParameter_r.T_btsid ||
+			Deviceparameter.T_btchar != DeviceParameter_r.T_btchar {
+			if _, is := Add_DeviceParameter(Deviceparameter); !is {
+				logs.PrintlnError("Add_DeviceParameter_fun", "插入失败 [DeviceParameter]")
+			}
+			return true
+		}
+	} else {
+		if _, is := Add_DeviceParameter(Deviceparameter); !is {
+			logs.PrintlnError("Add_DeviceParameter_fun", "插入失败 [DeviceParameter]")
+		}
+		return true
+	}
+	return false
+}
+
+// 添加
+func Add_DeviceParameter(m DeviceParameter) (DeviceParameter, bool) {
+	o := orm.NewOrm()
+	m.Id = 0
+	id, err := o.Insert(&m)
+	if err != nil {
+		logs.Println("Add_DeviceParameter", err)
+		return m, false
+	}
+	m.Id = int(id)
+	return m, true
+}
+
+// 获取设备参数
+func Read_DeviceParameter(T_sn string) (t DeviceParameter, bool bool) {
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(DeviceParameter))
+
+	cond := orm.NewCondition()
+	cond = cond.And("T_sn", T_sn).And("T_State", 1)
+
+	qs.SetCond((*orm2.Condition)(cond)).OrderBy("-UpdateTime").One(&t)
+	// 判断是否有数据
+	if t.Id == 0 {
+		return t, false
+	}
+
+	return t, true
+}
+
+// 修改
+func Update_DeviceParameter(r DeviceParameter, cols ...string) bool {
+	o := orm.NewOrm()
+	if num, err := o.Update(&r, cols...); err == nil {
+		logs.Println("Number of records updated in database:", num)
+		return true
+	}
+	return false
+}
+
+// 获取列表
+func Read_DeviceParameter_SN_Msid(T_sn string, T_Msid int64) (r DeviceParameter, err error) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceParameter))
+
+	err = qs.Filter("T_sn", T_sn).Filter("T_Msid", T_Msid).One(&r)
+	if err != nil {
+		logs.Println("Read_DeviceParameter_SN_Msid:", err)
+	}
+	return r, err
+}
+
+// 修改
+func Update_DeviceParameter_(m DeviceParameter) (err error) {
+	o := orm.NewOrm()
+	if num, err := o.Update(&m, "T_SendState"); err == nil {
+		logs.Println("Number of records updated in database:", num)
+	}
+
+	return err
+}
+
+// 获取列表
+func Read_DeviceParameter_SN_T_State_1(T_sn string) (r []DeviceParameter) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceParameter))
+
+	qs.Limit(3, 0).Filter("T_sn", T_sn).Filter("T_State", 2).OrderBy("-Id").All(&r)
+
+	return r
+}
+
+// 获取列表
+func Read_DeviceParameter_SN_T_SendState_0(T_sn string) (r []DeviceParameter) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceParameter))
+
+	qs.Limit(1, 0).Filter("T_sn", T_sn).Filter("T_State", 2).Filter("T_SendState", 0).OrderBy("-Id").All(&r)
+
+	return r
+}
+
+// 获取最新数据
+func UPDATE_DeviceParameter_SN_T_SendState_2_sql(T_sn string) {
+	o := orm.NewOrm()
+
+	res, err := o.Raw("UPDATE device_parameter SET `t__send_state` = 3 WHERE `t_sn` LIKE '%" + T_sn + "%' AND `t__send_state` = '0' AND `t__state` = '2'").Exec()
+	if err == nil {
+		num, _ := res.RowsAffected()
+		logs.Println("mysql row affected nums: ", num)
+	}
+
+}

+ 185 - 0
models/Device/DeviceSensor.go

@@ -0,0 +1,185 @@
+package Device
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"time"
+)
+
+// 模板
+type DeviceSensor struct {
+	Id     int    `orm:"column(ID);size(11);auto;pk"`
+	T_sn   string `orm:"index;size(256);"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_id   int    `orm:"index;size(11);"`  // 传感器编号
+	T_name string `orm:"size(256);"`       // 标题
+
+	T_pid      int    `orm:"index;size(256);"`           // Account.Company 绑定公司
+	T_Class    string `orm:"size(256);"`                 // Device.DeviceClass.Id 设备分类  C1|C2|
+	T_Notice   string `orm:"size(256);"`                 // 通知绑定    N1|N2|N3|
+	T_datashow int    `orm:"index;size(2);default(1)"`   // 0 屏蔽数据展示  1 正常数据展示   (屏蔽后 数据展示无法看到,设备管理中 不受影响)
+	T_sort     int    `orm:"index;size(200);default(1)"` // 排序
+	T_3dview   string `orm:"size(256);"`                 //3D 视图ID
+	T_type     int    `orm:"index;size(4);"`             // 0:未知类型   1库房   2移动
+	T_link     int    `orm:"index;size(4);default(1)"`   // 0:断开/故障   1连接     :实时数据
+	T_State    int    `orm:"index;size(2);default(1)"`   // 0 屏蔽   1 正常  (屏蔽后 只有内部管理员才能看到,用户 输入SN\名称 搜索时 也能看到)
+
+	// 设备同步参数
+	T_Dattery  int    `orm:"size(4);"`                 // 电量
+	T_Site     string `orm:"size(200);"`               // GPS                         :实时数据
+	T_monitor  int    `orm:"index;size(2);"`           // 监控状态 0 未监控 1 监控       :记录数据(=0)   下线(=0)
+	T_online   int    `orm:"index;size(2);default(1)"` // 在线状态 0 未启用  1 在线  2 离线    :上下线
+	T_online_s int    `orm:"index;size(2);default(0)"` // 在线状态-备用  0 未启用  1 在线  2 离线   :上下线
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+type DeviceSensor_Del struct {
+	T_sn string
+	T_id int
+}
+
+func (t *DeviceSensor) TableName() string {
+	return "device_sensor" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_DeviceSensor cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceSensor))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_DeviceSensor", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_DeviceSensor, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_DeviceSensor == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+		panic(any(errMsg))
+	}
+
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_DeviceSensor_Set(r DeviceSensor) (err error) {
+	key := r.T_sn + "|" + strconv.Itoa(r.T_id)
+
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("Redis_DeviceSensor_Set", err)
+		return
+	}
+
+	err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+func Redis_DeviceSensor_Get(key string) (r DeviceSensor, is bool) {
+	if redisCache_DeviceSensor.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_DeviceSensor.Get(key)
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return DeviceSensor{}, false
+}
+func Redis_DeviceSensor_DelK(r DeviceSensor) (err error) {
+	key := r.T_sn + "|" + strconv.Itoa(r.T_id)
+	err = redisCache_DeviceSensor.Delete(key)
+	return
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 添加
+func Add_DeviceSensor(Device_r Device, Devicesensor_r DeviceSensor) int {
+	//if(conf.Test_server) {return }
+
+	o := orm.NewOrm()
+
+	// 设备同步参数
+	Devicesensor_r.T_Dattery = Device_r.T_Dattery   // 电量
+	Devicesensor_r.T_Site = Device_r.T_Site         // GPS
+	Devicesensor_r.T_monitor = Device_r.T_monitor   // 监控状态 0 未监控 1 监控
+	Devicesensor_r.T_online = Device_r.T_online     // 在线状态 0 未启用  1 在线  2 离线
+	Devicesensor_r.T_online_s = Device_r.T_online_s // 在线状态-备用  0 未启用  1 在线  2 离线
+
+	// 三个返回参数依次为:是否新创建的,对象 Id 值,错误
+	_, id, err := o.ReadOrCreate(&Devicesensor_r, "T_sn", "T_id")
+	if err != nil {
+		return 0
+	}
+
+	Redis_DeviceSensor_Set(Devicesensor_r)
+	return int(id)
+}
+
+// 修改
+func Update_DeviceSensor(r DeviceSensor, cols ...string) bool {
+	o := orm.NewOrm()
+	if num, err := o.Update(&r, cols...); err == nil {
+		logs.Println("Number of records updated in database:", num)
+		Redis_DeviceSensor_Set(r)
+		return true
+	}
+
+	return false
+}
+
+// 获取
+func Read_DeviceSensor_ByT_pid(T_pid int) (r []DeviceSensor) {
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceSensor))
+
+	_, err := qs.Filter("T_pid", T_pid).Filter("T_datashow", 1).Filter("T_State", 1).All(&r)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 获取列表
+func Read_DeviceSensor_ByTsn(T_sn string) []DeviceSensor {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+	qs := o.QueryTable(new(DeviceSensor))
+	var r []DeviceSensor
+	qs.Filter("T_sn", T_sn).OrderBy("T_id").All(&r)
+
+	return r
+}
+
+// 设备同步参数
+func Update_Device_To_DeviceSensor(r_Device Device) bool {
+	DeviceSensor_list := Read_DeviceSensor_ByTsn(r_Device.T_sn)
+	for _, v := range DeviceSensor_list {
+
+		// 设备同步参数
+		v.T_Dattery = r_Device.T_Dattery   // 电量
+		v.T_Site = r_Device.T_Site         // GPS
+		v.T_monitor = r_Device.T_monitor   // 监控状态 0 未监控 1 监控
+		v.T_online = r_Device.T_online     // 在线状态 0 未启用  1 在线  2 离线
+		v.T_online_s = r_Device.T_online_s // 在线状态-备用  0 未启用  1 在线  2 离线
+
+		Update_DeviceSensor(v, "T_Dattery", "T_Site", "T_monitor", "T_online", "T_online_s")
+	}
+
+	return true
+}

+ 244 - 0
models/Device/DeviceSensorParameter.go

@@ -0,0 +1,244 @@
+package Device
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"time"
+)
+
+// 传感器 参数
+type DeviceSensorParameter struct {
+	Id     int    `orm:"column(ID);size(11);auto;pk"`
+	T_sn   string `orm:"index;size(256);"` // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_id   int    `orm:"index;size(11);"`  // 传感器编号
+	T_name string `orm:"size(256);"`       //传感器名称
+
+	// 报警
+
+	T_Tlower  float32 `orm:"size(200);"` //  温度下限
+	T_Tupper  float32 `orm:"size(200);"` //  温度上限
+	T_RHlower float32 `orm:"size(200);"` //  湿度下限
+	T_RHupper float32 `orm:"size(200);"` //  湿度上限
+
+	// 预警
+	T_enprel     int     `orm:"size(2);default(1)"` // 是否启用预警
+	T_tprel      float32 `orm:"size(200);"`         //  温度预警下限
+	T_tpreu      float32 `orm:"size(200);"`         //  温度预警上限
+	T_hprel      float32 `orm:"size(200);"`         //  湿度预警下限
+	T_hpreu      float32 `orm:"size(200);"`         //  温度预警上限
+	T_enprelnote int     `orm:"size(2);default(1)"` // 是否启用预警记录
+
+	//T_speed int `orm:"size(5);"`           // 传感器采样率   s(1~240) 默认:15 *
+	//T_sense int `orm:"size(5);"`           // 传感器灵敏度   s(0~10) 默认:5
+	T_en   int `orm:"size(2);default(1)"` // en:是否启用传感器,   0 停用   1 启用
+	T_free int `orm:"size(2);default(1)"` //   是否为闲置状态    1:启用(正常 实时、记录, 不 报警、预警)
+	//0:关闭(正常 实时、记录、报警、预警)  默认:0
+
+	// 逻辑字段
+	T_uuid      string `orm:"size(256);"`          //处理 人员
+	T_Msid      int64  `orm:"size(50);default(0)"` // 消息识别ID
+	T_SendState int    `orm:"size(2);default(0)"`  // 发送状态  0 待发送   1 发送成功  2 失败  3 覆盖
+	T_State     int    `orm:"size(2);default(1)"`  //  1 系统获取   2 用户提交
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+func (t *DeviceSensorParameter) TableName() string {
+	return "device_sensor_parameter" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_DeviceSensorParameter cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceSensorParameter))
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_DeviceSensorParameter", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_DeviceSensorParameter, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_DeviceSensorParameter == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+	}
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_DeviceSensorParameter_Set(key string, r DeviceSensorParameter) (err error) {
+
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("Redis_DeviceSensorParameter_Set", err)
+		return
+	}
+
+	err = redisCache_DeviceSensorParameter.Put(key, str, 8*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_DeviceSensorParameter_Get(key string) (r DeviceSensorParameter, is bool) {
+	if redisCache_DeviceSensorParameter.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_DeviceSensorParameter.Get(key)
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return DeviceSensorParameter{}, false
+}
+
+// ---------------- 特殊方法 -------------------
+func Add_DeviceSensorParameter_fun(Devicesensorparameter DeviceSensorParameter) bool {
+
+	if Devicesensorparameter_r, is := Read_DeviceSensorParameter(Devicesensorparameter.T_sn, Devicesensorparameter.T_id); is {
+		if Devicesensorparameter_r.T_name != Devicesensorparameter.T_name ||
+			Devicesensorparameter_r.T_Tlower != Devicesensorparameter.T_Tlower ||
+			Devicesensorparameter_r.T_Tupper != Devicesensorparameter.T_Tupper ||
+			Devicesensorparameter_r.T_RHlower != Devicesensorparameter.T_RHlower ||
+			Devicesensorparameter_r.T_RHupper != Devicesensorparameter.T_RHupper ||
+			Devicesensorparameter_r.T_enprel != Devicesensorparameter.T_enprel ||
+			Devicesensorparameter_r.T_tprel != Devicesensorparameter.T_tprel ||
+			Devicesensorparameter_r.T_tpreu != Devicesensorparameter.T_tpreu ||
+			Devicesensorparameter_r.T_hprel != Devicesensorparameter.T_hprel ||
+			Devicesensorparameter_r.T_hpreu != Devicesensorparameter.T_hpreu ||
+			Devicesensorparameter_r.T_enprelnote != Devicesensorparameter.T_enprelnote ||
+			//Devicesensorparameter_r.T_speed != Devicesensorparameter.T_speed ||
+			//Devicesensorparameter_r.T_sense != Devicesensorparameter.T_sense ||
+			Devicesensorparameter_r.T_en != Devicesensorparameter.T_en ||
+			Devicesensorparameter_r.T_free != Devicesensorparameter.T_free {
+
+			// 添加记录
+			if _, is := Add_DeviceSensorParameter(Devicesensorparameter); !is {
+				logs.PrintlnError("Add_DeviceSensorParameter_fun", "插入失败 [DeviceParameter]")
+			}
+			return true
+		}
+	} else {
+		// 添加记录
+		if _, is := Add_DeviceSensorParameter(Devicesensorparameter); !is {
+			logs.PrintlnError("Add_DeviceSensorParameter_fun", "插入失败 [DeviceParameter]")
+		}
+		return true
+	}
+	return false
+}
+
+// 添加
+func Add_DeviceSensorParameter(m DeviceSensorParameter) (int64, bool) {
+	o := orm.NewOrm()
+	m.Id = 0
+	key := m.T_sn + "|" + strconv.Itoa(m.T_id)
+	m.T_SendState = 0
+	m.T_State = 1
+	id, err := o.Insert(&m)
+	if err != nil {
+		logs.PrintlnError("Add_DeviceSensorParameter", err)
+		return id, false
+	}
+	Redis_DeviceSensorParameter_Set(key, m)
+	return id, true
+}
+
+// 获取设备参数
+func Read_DeviceSensorParameter(T_sn string, T_id int) (t DeviceSensorParameter, bool bool) {
+	key := T_sn + "|" + strconv.Itoa(T_id)
+	if t, is := Redis_DeviceSensorParameter_Get(key); is {
+		return t, true
+	}
+
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(DeviceSensorParameter))
+
+	cond := orm.NewCondition()
+	cond = cond.And("T_sn", T_sn).And("T_id", T_id).And("T_State", 1)
+
+	qs.SetCond((*orm2.Condition)(cond)).OrderBy("-UpdateTime").One(&t)
+	// 判断是否有数据
+	if t.Id == 0 {
+		return t, false
+	}
+
+	Redis_DeviceSensorParameter_Set(key, t)
+	return t, true
+}
+
+// 修改
+func Update_DeviceSensorParameter(r DeviceSensorParameter, cols ...string) bool {
+	o := orm.NewOrm()
+	if num, err := o.Update(&r, cols...); err == nil {
+		logs.Println("Number of records updated in database:", num)
+		return true
+	}
+	return false
+}
+
+// 获取最新数据
+func UPDATE_DeviceSensorParamete_SN_T_SendState_2_sql(T_sn string, T_id string) {
+	o := orm.NewOrm()
+
+	res, err := o.Raw("UPDATE device_sensor_parameter SET `t__send_state` = 3 WHERE `t_sn` LIKE '%" + T_sn + "%' AND `t_id` = " + T_id + " AND `t__send_state` = '0' AND `t__state` = '2'").Exec()
+	if err == nil {
+		num, _ := res.RowsAffected()
+		logs.Println("mysql row affected nums: ", num)
+	}
+
+}
+
+// 获取列表
+func Read_DeviceSensorParameter_SN_T_id_Msid(T_sn string, T_Msid int64) (DeviceSensorParameter, bool) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+	var r []DeviceSensorParameter
+	qs := o.QueryTable(new(DeviceSensorParameter))
+
+	qs.Filter("T_sn", T_sn).Filter("T_Msid", T_Msid).OrderBy("-Id").All(&r)
+
+	if len(r) == 0 {
+		return DeviceSensorParameter{}, false
+	}
+
+	return r[0], true
+}
+
+// 获取最新数据
+func Read_DeviceSensorParameter_SN_T_SendState_0_sql(sn string) (maps []orm2.ParamsList) {
+	o := orm.NewOrm()
+
+	sql := "SELECT DISTINCT t_sn,t_id FROM device_sensor_parameter WHERE  `t_sn` = '" + sn + "' AND  `t__send_state` = '0' AND `t__state` = '2'"
+
+	logs.Println(sql)
+	o.Raw(sql).ValuesList(&maps)
+
+	return maps
+}
+
+// 获取列表
+func Read_DeviceSensorParameter_SN_T_id(T_sn string, T_id int) (r []DeviceSensorParameter) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceSensorParameter))
+
+	qs.Limit(3, 0).Filter("T_sn", T_sn).Filter("T_id", T_id).Filter("T_State", 2).OrderBy("-Id").All(&r)
+
+	return r
+}

+ 31 - 0
models/Device/DeviceSnOld.go

@@ -0,0 +1,31 @@
+package Device
+
+import (
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+)
+
+type DeviceSnOld struct {
+	Id   int    `orm:"column(ID);size(11);auto;pk"`
+	T_sn string `orm:"size(256);"` // 分类
+}
+
+func (t *DeviceSnOld) TableName() string {
+	return "device_sn_old" // 数据库名称   // ************** 替换 DesignClass **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceSnOld))
+
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 添加
+func Add_DeviceSnOld(T_sn string) {
+	o := orm.NewOrm()
+	user := DeviceSnOld{T_sn: T_sn}
+	// 三个返回参数依次为:是否新创建的,对象 Id 值,错误
+	o.ReadOrCreate(&user, "T_sn")
+}

+ 81 - 0
models/Device/DeviceTask.go

@@ -0,0 +1,81 @@
+package Device
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 模板
+type DeviceTask struct {
+	Id         int       `orm:"column(ID);size(11);auto;pk"`
+	T_sn       string    `orm:"size(256);null"`        // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_Ut_start time.Time `orm:"type(timestamp);null;"` // 开始时间
+	T_Ut_end   time.Time `orm:"type(timestamp);null;"` // 结束时间
+
+	T_Ut    time.Time `orm:"type(timestamp);null;"` // 采集时间
+	T_State int       `orm:"size(2);default(1)"`
+	//  1   start:开始监测任务,
+	//  2   stop:结束监测任务,
+	//  3   print:中途打印任务
+}
+
+// 模板
+type DeviceTask_R struct {
+	T_Ut_start string // 开始时间
+	T_Ut_end   string // 结束时间
+	T_State    int
+	//  1   start:开始监测任务,
+	//  2   stop:结束监测任务,
+	//  3   print:中途打印任务
+}
+
+func (t *DeviceTask) TableName() string {
+	return "device_task" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(DeviceTask))
+}
+
+// 获取全部
+func Read_DeviceTask_List(T_sn string) (r_l []DeviceTask) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(DeviceTask))
+
+	cond := orm.NewCondition()
+	cond1 := cond.And("T_sn", T_sn)
+
+	_, err := qs.Limit(10).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r_l)
+	if err != nil {
+		logs.PrintlnError(lib.FuncName(), err)
+		return
+	}
+
+	return
+}
+
+func Read_Task_任务总数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(1) FROM device_task WHERE " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+func Read_Task_任务设备数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(DISTINCT t_sn) AS COUNT FROM device_task WHERE " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}

+ 33 - 0
models/GTime.go

@@ -0,0 +1,33 @@
+package models
+
+import (
+	"database/sql/driver"
+	"fmt"
+	"time"
+)
+
+type JsonTime struct {
+	time.Time
+}
+
+func (t JsonTime) MarshalJSON() ([]byte, error) {
+	str := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
+	return []byte(str), nil
+}
+
+func (t JsonTime) Value() (driver.Value, error) {
+	var zeroTime time.Time
+	if t.Time.UnixNano() == zeroTime.UnixNano() {
+		return nil, nil
+	}
+	return t.Time, nil
+}
+
+func (t *JsonTime) Scan(v interface{}) error {
+	value, ok := v.(time.Time)
+	if ok {
+		*t = JsonTime{Time: value}
+		return nil
+	}
+	return fmt.Errorf("error %v", v)
+}

+ 76 - 0
models/Product/ProductType.go

@@ -0,0 +1,76 @@
+package Product
+
+import (
+	"Cold_Data/logs"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 产品类型
+type ProductType struct {
+	Id      int    `orm:"column(ID);size(11);auto;pk"`
+	T_name  string `orm:"size(256);"` // 产品统称 + 类型
+	T_model string `orm:"size(256);"` // 产品型号
+}
+
+// 产品统称	产品型号	类型
+// 库房采集器(高配版)	KF100N	RS485(NB-Iot)
+// 库房采集器(标准版)	KF100B	RS485
+// 库房采集器(黑白版)	KF200L	RS485
+// 冰箱采集器(数码管版)	BX200GSE	4G-Cat.1
+// 冰箱采集器(黑白版)	BX200GBL	4G-Cat.1
+// 保温箱采集器V1	BW100	4G-Cat.1
+// 运输采集器V1	YD100	4G-Cat.1/GPS
+// 保温箱采集器V2	BW200	4G-Cat.1
+// 运输采集器V2	YD200	4G-Cat.1/GPS
+// 新管理主机	MD100	TCP/4G/WiFi
+// 小管理主机	MD200G	4G-Cat.1/RS485
+
+var ProductType_list map[string]string // 泛型
+
+func (t *ProductType) TableName() string {
+	return "product_type" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+//var redisCache_WarningType cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(ProductType))
+
+	ProductType_list = make(map[string]string)
+
+	go Read_ProductType_All()
+}
+
+// 获取全部
+func Read_ProductType_All() {
+	time.Sleep(time.Second)
+
+	logs.Println("=========== 初始化产品类型 =========")
+
+	o := orm.NewOrm()
+	for true {
+		var r []ProductType
+		qs := o.QueryTable(new(ProductType))
+		qs.All(&r)
+
+		for _, v := range r {
+			ProductType_list[v.T_model] = v.T_name
+		}
+		time.Sleep(1 * time.Hour)
+	}
+
+}
+func Read_ProductType_Get(T_model string) string {
+	// 有先加入 给全部人发消息
+	v, ok := ProductType_list[T_model] /*如果确定是真实的,则存在,否则不存在 */
+	if ok {
+		return v
+	} else {
+		logs.Println("Read_ProductType_Get:", T_model, "未知类型")
+		return "未知类型"
+	}
+}

+ 36 - 0
models/Product/ProductUpgrade.go

@@ -0,0 +1,36 @@
+package Product
+
+import (
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 产品类型
+type ProductUpgrade struct {
+	Id         int    `orm:"column(ID);size(11);auto;pk"`
+	T_model    string `orm:"size(256);"` // 产品型号
+	T_version  string `orm:"size(256);"` // 版本
+	T_file     string `orm:"size(256);"` // 文件
+	T_remarks  string `orm:"size(256);"` // 备注
+	T_carryout int    `orm:"size(1);"`   // 全量发布
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+}
+
+type ProductUpgrade_T struct {
+	T_sn      string `orm:"size(256);null"` // 设备编号
+	T_version string `orm:"size(256);null"` // 版本
+	T_file    string `orm:"size(256);null"` // 文件
+}
+
+func (t *ProductUpgrade) TableName() string {
+	return "product_upgrade" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(ProductUpgrade))
+
+}

+ 151 - 0
models/StatisticsStruct.go

@@ -0,0 +1,151 @@
+package models
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/logs"
+	"encoding/json"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"strconv"
+	"time"
+)
+
+var redisCache_DeviceSensor cache.Cache
+
+func init() {
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"ColdDataV_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_DeviceSensor, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_DeviceSensor == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+		panic(any(errMsg))
+	}
+
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_DeviceSensor_Set(T_id int, r Company_Project) (err error) {
+	key := strconv.Itoa(T_id)
+
+	//json序列化
+	str, err := json.Marshal(r)
+	if err != nil {
+		logs.PrintlnError("Redis_DeviceSensor_Set", err)
+		return
+	}
+
+	err = redisCache_DeviceSensor.Put(key, str, 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key, ",value:", str, err)
+	}
+	return
+}
+func Redis_DeviceSensor_Get(key string) (r Company_Project, is bool) {
+	if redisCache_DeviceSensor.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_DeviceSensor.Get(key)
+		json.Unmarshal(v.([]byte), &r)
+		return r, true
+	}
+	//println("没有 找到key:",key)
+	return Company_Project{}, false
+}
+
+//////////////////////////
+
+// 设备列表类
+type DeviceList_Project struct {
+	T_sn     string // 设备序列号 KF开头,环境监测主机。 YD开头,温途监测主机
+	T_id     int    // 传感器编号
+	T_name   string // 标题
+	T_sort   int    // 排序
+	T_3dview string //3D 视图ID
+	T_type   int    // 0:未知类型   1库房   2移动
+	T_link   int    // 0:断开/故障   1连接     :实时数据
+	// 实时数据
+	T_t       float32 // 温度
+	T_rh      float32 // 湿度
+	T_Tlower  float32 //  温度下限
+	T_Tupper  float32 //  温度上限
+	T_RHlower float32 //  湿度下限
+	T_RHupper float32 //  湿度上限
+	T_time    string  // 采集时间
+	// 设备同步参数
+	T_Dattery  int    // 电量
+	T_Site     string // GPS                         :实时数据
+	T_monitor  int    // 监控状态 0 未监控 1 监控       :记录数据(=0)   下线(=0)
+	T_online   int    // 在线状态 0 未启用  1 在线  2 离线    :上下线
+	T_online_s int    // 在线状态-备用  0 未启用  1 在线  2 离线   :上下线
+
+}
+
+// 设备类
+type Device_Project struct {
+	T_库房总数   int
+	T_移动总数   int
+	T_移动离线总数 int
+	T_移动监控总数 int
+	//DeviceList []DeviceList_Project
+}
+
+// 报警类
+type Warning_Project struct {
+	//T_库房报警总数      int
+	T_库房未处理总数    int
+	T_库房设备报警数_今天 int
+	T_库房报警设备数_今天 int
+	//T_库房设备报警数_昨天  int
+	//T_库房设备报警数_近7天 int
+	//T_库房设备报警数_本月  int
+	//T_库房设备报警数_上一月 int
+	T_库房报警类型统计 map[string]int
+	//T_库房报警设备数_近7天 map[string]int
+
+	//T_移动警数总数      int
+	T_移动未处理总数    int
+	T_移动设备报警数_今天 int
+	T_移动报警设备数_今天 int
+	//T_移动设备报警数_昨天  int
+	//T_移动设备报警数_近7天 int
+	//T_移动设备报警数_本月  int
+	//T_移动设备报警数_上一月 int
+
+	//T_移动报警设备数_近7天 map[string]int
+	T_报警设备数_近7天 map[string]int
+}
+
+// 任务类
+type Task_Project struct {
+	T_任务总数_今天 int
+	//T_任务总数_昨天  int
+	//T_任务总数_近7天 int
+	//T_任务总数_本月  int
+	//T_任务总数_上一月 int
+	//T_任务总数_近一年 map[string]int
+	T_任务总数_近7天 map[string]int
+
+	T_任务设备数_今天 int
+	//T_任务设备数_昨天  int
+	//T_任务设备数_近7天 int
+	//T_任务设备数_本月  int
+	//T_任务设备数_上一月 int
+}
+
+// 公司类
+type Company_Project struct {
+	Company_name string
+	Company_key  string
+	Company_plan string
+	Company_data string
+	Company_v3d  string
+	Device       Device_Project
+	Warning      Warning_Project
+	Task         Task_Project
+	Children     []*Company_Project
+}

+ 33 - 0
models/System/Logs.go

@@ -0,0 +1,33 @@
+package System
+
+import (
+	"github.com/beego/beego/v2/adapter/orm"
+	"time"
+)
+
+type Logs struct {
+	Id         int    `orm:"column(ID);size(11);auto;pk"`
+	Logs_class string `orm:"size(256);"`  //
+	Logs_Title string `orm:"size(256);"`  // 标题
+	Logs_Txt   string `orm:"type(text);"` // 详情
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"`     //auto_now_add 第一次保存时才设置时间
+}
+
+func (t *Logs) TableName() string {
+	return "Logs" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Logs))
+
+}
+
+// 添加  logs.Println("MqttServer","参数请求 [Rt_Parameter]","base")
+func Add_Logs(Logs_class string, Logs_Title string, Logs_Txt string) {
+	o := orm.NewOrm()
+	m := Logs{Logs_class: Logs_class, Logs_Title: Logs_Title, Logs_Txt: Logs_Txt}
+	o.Insert(&m)
+}

+ 263 - 0
models/Warning/Warning.go

@@ -0,0 +1,263 @@
+package Warning
+
+import (
+	"Cold_Data/conf"
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type Warning struct {
+	Id        int64     `orm:"column(ID);size(11);auto;pk"`
+	T_pid     int       `orm:"size(256);null"`        // Account.Company 绑定公司
+	T_tp      int       `orm:"size(200);null"`        // 报警类型   ->WarningList
+	T_sn      string    `orm:"index;size(256);null"`  // 设备序列号
+	T_D_name  string    `orm:"size(256);null"`        // 设备名称
+	T_id      int       `orm:"size(200);null"`        // 传感器 ID
+	T_DS_name string    `orm:"size(256);null"`        // 传感器名称
+	T_Remark  string    `orm:"type(text);null"`       // 采集内容
+	T_Ut      time.Time `orm:"type(timestamp);null;"` // 采集时间
+	T_fUt     time.Time `orm:"type(timestamp);null;"` // 首次采集时间
+
+	T_Text string `orm:"type(text);null"` // 处理备注
+	T_Log  string `orm:"type(text);null"` // 通知日志
+	T_Msid int64  `orm:"size(256);null"`  // 消息ID
+
+	T_State    int       `orm:"size(2);default(2)"`                                    // 0 删除   1 不处理   2 已处理   3 未处理
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+}
+
+// 多字段索引
+func (u *Warning) TableIndex() [][]string {
+	return [][]string{
+		[]string{"T_pid", "T_tp", "T_State"},
+	}
+}
+
+func (t *Warning) TableName() string {
+	return "warning" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+var redisCache_Warning cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(Warning))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_WarningNum", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	logs.Println(config)
+	var err error
+	redisCache_Warning, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Warning == nil {
+		errMsg := "failed to init redis"
+		logs.Println(errMsg, err)
+	}
+}
+
+// ---------------- Redis -------------------
+// Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_Warning_Set(key string) (err error) {
+
+	err = redisCache_Warning.Put(key, "", 24*time.Hour)
+	if err != nil {
+		logs.Println("set key:", key)
+	}
+	return
+}
+
+// if r,is :=Redis_Get(T_sn);is{
+// return r,nil
+// }
+func Redis_Warning_Repeat_T_sn_Msid(key string) (is bool) {
+	if redisCache_Warning.IsExist(key) {
+		//println("找到key:",key)
+		return true
+	}
+	redisCache_Warning.Put(key, "", 1*time.Minute)
+	return false
+}
+
+// 缓存报警次数     cut 持续秒        (计次,剩余时间s)
+func Redis_Warning_Num(key string) (int64, int) {
+	if redisCache_Warning.IsExist(key) {
+		//logs.Println("Redis_Warning_Num  找到key:", key)
+		r := redisCache_Warning.Get(key)
+		if r == nil {
+			return 0, 0
+		}
+		value_str := string(r.([]byte))
+		value_str_list := strings.Split(value_str, "|")
+		if len(value_str_list) != 2 {
+			return 0, 0
+		}
+		logs.Println("value_str_list:", value_str_list) //value_str_list: [[1 1677724222]]
+		value_int, _ := strconv.ParseInt(value_str_list[0], 10, 64)
+		cut := int(time.Unix(lib.To_int64(value_str_list[1]), 0).Unix() - time.Now().Unix()) // 计算 还剩 s秒时间
+		return value_int, cut
+	}
+	return 0, 0
+}
+
+// 缓存报警次数     cut 持续秒        (计次,剩余时间s)
+func Redis_Warning_Num_W(key, cuts string) (int64, int) {
+	cut, err := strconv.Atoi(cuts)
+	if err != nil {
+		logs.PrintlnError("Redis_Warning_Num err:", err)
+	}
+
+	if redisCache_Warning.IsExist(key) {
+		//logs.Println("Redis_Warning_Num  找到key:", key)
+		r := redisCache_Warning.Get(key)
+		if r == nil {
+			goto breakHere // 跳转到标签
+		}
+		value_str := string(r.([]byte))
+		value_str_list := strings.Split(value_str, "|")
+		logs.Println("value_str_list:", value_str_list) //value_str_list: [[1 1677724222]]
+		if len(value_str_list) != 2 {
+			goto breakHere // 跳转到标签
+		}
+		value_int, _ := strconv.ParseInt(value_str_list[0], 10, 64)
+		value_int += 1 // 数量
+		//logs.Println("有数据 value_int:", value_int)
+		cut = int(time.Unix(lib.To_int64(value_str_list[1]), 0).Unix() - time.Now().Unix()) // 计算 还剩 s秒时间
+		redisCache_Warning.Put(key, fmt.Sprintf("%d|%s", value_int, value_str_list[1]), time.Duration(cut)*time.Second)
+		logs.Println("Redis_Warning_Num KEY:", key, "->", value_int, "  还剩时间 ->", cut)
+
+		return value_int, cut
+	}
+breakHere:
+	//logs.Println("没有数据 value_int:", 1)
+	s, _ := time.ParseDuration(fmt.Sprintf("%ds", cut))
+	redisCache_Warning.Put(key, fmt.Sprintf("1|%d", time.Now().Add(s).Unix()), time.Duration(cut)*time.Second)
+	logs.Println("Redis_Warning_Num NewKEY:", key, " cut:", cut)
+	return 1, cut
+}
+
+// 管理员 缓存报警次数
+func Redis_WarningToAdmin_Num(key string) bool {
+	if redisCache_Warning.IsExist(key) {
+		////logs.Println("Redis_Warning_Num  找到key:", key)
+		//r := redisCache_Warning.Get(key)
+		//value_str := string(r.([]byte))
+		//value_int, _ := strconv.ParseInt(value_str, 10, 64)
+		//value_int += 1
+		////logs.Println("有数据 value_int:", value_int)
+		////redisCache_Warning.Put(key, strconv.FormatInt(value_int, 10), 11*time.Minute)
+		return false
+	}
+	//logs.Println("没有数据 value_int:", 1)
+	redisCache_Warning.Put(key, "1", 30*time.Minute)
+	return true
+}
+
+// ---------------- 特殊方法 -------------------
+
+func Read_Warning_库房报警设备数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(DISTINCT t_sn,t_id) AS COUNT  FROM warning WHERE t__state > 1  AND t_tp IN (1,2,4,5,109) AND " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.KF + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}
+
+func Read_Warning_移动报警设备数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(DISTINCT t_sn,t_id) AS COUNT  FROM warning WHERE t__state > 1  AND t_tp IN (1,2,4,5,109) AND " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}
+func Read_Warning_报警设备数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(DISTINCT t_sn,t_id) AS COUNT  FROM warning WHERE t__state > 1  AND t_tp IN (1,2,4,5,109) AND " + Wtime + " AND t_sn IN (\n\tSELECT\n\t\tt_sn \n\tFROM\n\t\tdevice \n\tWHERE\n\t\tt_pid = ? )"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}
+
+func Read_Warning_库房报警总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(1) FROM warning WHERE t__state > 1  AND t_tp IN (1,2,4,5,109) AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.KF + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+func Read_Warning_移动警数总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(1) FROM warning WHERE t__state > 1  AND t_tp IN (1,2,4,5,109) AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+func Read_Warning_库房未处理总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(1) FROM warning WHERE t__state = 3  AND t_tp IN (1,2,4,5,109) AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.KF + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+func Read_Warning_移动未处理总数(t_pid int) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(1) FROM warning WHERE t__state = 3  AND t_tp IN (1,2,4,5,109) AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT(1)"])
+}
+
+func Read_Warning_库房设备报警数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(*) AS COUNT  FROM warning WHERE t__state > 1 AND t_tp IN (1,2,4,5,109) AND " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.KF + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}
+
+func Read_Warning_移动设备报警数(t_pid int, Wtime string) int {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT COUNT(*) AS COUNT  FROM warning WHERE t__state > 1 AND t_tp IN (1,2,4,5,109)  AND " + Wtime + " AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.YD + ")"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return lib.To_int(maps[0]["COUNT"])
+}
+
+func Read_Warning_库房报警类型统计(t_pid int) []orm2.Params {
+
+	o := orm.NewOrm()
+	var maps []orm2.Params
+	sql := "SELECT t_tp,COUNT(*)  FROM warning WHERE t__state > 1 AND t_tp IN (1,2,4,5,109) AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time) AND t_sn IN (SELECT DISTINCT t_sn FROM device_sensor WHERE t_pid = ? AND t_type IN " + conf.KF + ") GROUP BY t_tp"
+	o.Raw(sql, t_pid).Values(&maps)
+
+	return maps
+}

+ 82 - 0
models/Warning/WarningSand.go

@@ -0,0 +1,82 @@
+package Warning
+
+import (
+	"Cold_Data/lib"
+	"Cold_Data/logs"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+
+	_ "github.com/go-sql-driver/mysql"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// 报警发送统计
+type WarningSand struct {
+	Id       int    `orm:"column(ID);size(11);auto;pk"`
+	T_pid    int    `orm:"index;size(100);"` // Account.Company 绑定公司, -1:未知   0:管理员  >0 :绑定公司
+	T_Spid   int    `orm:"index;size(100);"` // 触发公司 ID
+	T_tp     int    `orm:"size(20);"`        // 报警类型   ->WarningList
+	T_Ntype  int    `orm:"size(4);"`         // 通知方式    0:微信    1:短信 ¥0.1        2:电话 ¥0.2
+	T_Notice string `orm:"size(256);"`       // 18888888888
+	T_Remark string `orm:"type(text);"`      // 备注
+	//CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+}
+
+func (t *WarningSand) TableName() string {
+	return "warning_sand" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(WarningSand))
+
+}
+
+func CREATE(name string) string {
+	sql := "CREATE TABLE `warning_sand`  (\n  `ID` int NOT NULL AUTO_INCREMENT,\n  `t_pid` int NULL DEFAULT NULL,\n  `t_tp` int NULL DEFAULT NULL,\n  `t__notice` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,\n  `t_type` int NULL DEFAULT NULL,\n  `t__remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,\n  `create_time` datetime NULL DEFAULT NULL,\n  `t__ntype` int NOT NULL DEFAULT 0,\n  `t__spid` int NOT NULL DEFAULT 0,\n  PRIMARY KEY (`ID`) USING BTREE,\n  INDEX `warning_sand_t_pid`(`t_pid`) USING BTREE,\n  INDEX `warning_sand_t_tp`(`t_tp`) USING BTREE,\n  INDEX `warning_sand_t_type`(`t_type`) USING BTREE,\n  INDEX `warning_sand_t__spid`(`t__spid`) USING BTREE\n) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;"
+	sql = strings.Replace(sql, "warning_sand", name, -1)
+	return sql
+}
+
+// 添加 数据   返回   真:替换   假:第一条无替换
+func Add_WarningSand(v WarningSand) bool {
+	o := orm.NewOrm()
+	currentTime := time.Now()
+	TABLE_name := fmt.Sprintf("warning_sand_%d%02d", currentTime.Year(), currentTime.Month())
+breakHere:
+	// 开始插入数据
+	sql := "INSERT INTO " + TABLE_name + "(`t_pid`, `t_tp`, `t__ntype`, `t__notice`, `t__remark`, `create_time`) " +
+		"VALUES (" + strconv.Itoa(v.T_pid) + " , " + strconv.Itoa(v.T_tp) + ", " + strconv.Itoa(v.T_Ntype) + ", '" + v.T_Notice + "', '" + v.T_Remark + "', '" + currentTime.Format("2006-01-02 15:04:05") + "')"
+	//  这里有时间优化  用于一次 prepare 多次 exec,以提高批量执行的速度
+	logs.Println(sql)
+	_, err := o.Raw(sql).Exec()
+	if err != nil {
+		//Error 1146: Table 'cold.z_device_data_202335objgv2pzk' doesn't exist
+		if strings.Contains(err.Error(), "1146") { // 没有创建表
+			_, err = o.Raw(CREATE(TABLE_name)).Exec()
+			if err != nil {
+				logs.PrintlnError("SELECT_Add_WarningSand:" + err.Error())
+				return false
+			}
+			goto breakHere // 跳转到标签
+		}
+
+	}
+	return true
+}
+
+// 获取 发送统计数量
+func Get_WarningSandNum(TABLE_name string, Pid, Ntype int, StartTine, EndTime string) int {
+	o := orm.NewOrm()
+	var maps []orm.Params
+	num, err := o.Raw("SELECT count(ID) AS count FROM " + TABLE_name + " WHERE `t_pid` = " + strconv.Itoa(Pid) + " AND `t__ntype` = " + strconv.Itoa(Ntype) + " AND `create_time` >= '" + StartTine + "' AND `create_time` <= '" + EndTime + "'").Values(&maps)
+	if err == nil && num > 0 {
+		intx, _ := strconv.Atoi(lib.To_string(maps[0]["count"]))
+		logs.Println("Get_WarningSandNum:", TABLE_name, Pid, Ntype, StartTine, EndTime, intx) // slene
+		return intx
+	}
+	logs.PrintlnError("执行错误!!!", "Get_WarningSandNum:", TABLE_name, Pid, Ntype, StartTine, EndTime, maps) // slene
+	return 0
+}

+ 96 - 0
models/Warning/WarningType.go

@@ -0,0 +1,96 @@
+package Warning
+
+import (
+	"Cold_Data/logs"
+	_ "github.com/astaxie/beego/cache/redis"
+	"github.com/beego/beego/v2/adapter/orm"
+	_ "github.com/go-sql-driver/mysql"
+	"time"
+)
+
+// 模板
+type WarningType struct {
+	Id     int    `orm:"column(ID);size(11);auto;pk"`
+	T_name string `orm:"size(256);"`            // 分类
+	T_Tips string `orm:"type(text);size(256);"` // 提示
+}
+
+//1	温度超上限报警
+//2	温度超下限报警
+//3	温度恢复正常
+//4	湿度超上限报警
+//5	湿度超下限报警
+//6	湿度恢复正常
+//7	温度超上限预警
+//8	温度超下限预警
+//9	温度预警恢复正常
+//10	湿度超上限预警
+//11	湿度超下限预警
+//12	湿度预警恢复正常
+//101	主机报警
+//102	操作日志
+//103	普通日志
+//109	市电断电报警
+//110	市电已恢复
+//111	电池电量低报警
+//112	电池电量恢复
+//113	传感器故障报警
+//114	传感器恢复
+//115	开始监测任务
+//116	中途打印任务
+//117	结束监测任务
+//1001	设备状态异常
+//1002	用户余额通知
+//1011	报警策略异常
+//1012	传感器数据异常
+//1013	系统预警通知
+//1014	运维预警通知
+
+var WarningType_list map[int]string // 泛型
+
+func (t *WarningType) TableName() string {
+	return "warning_type" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+//var redisCache_WarningType cache.Cache
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(WarningType))
+
+	WarningType_list = make(map[int]string)
+
+	go func() {
+		time.Sleep(2 * time.Second)
+		go Read_WarningType_All()
+	}()
+}
+
+// 获取全部
+func Read_WarningType_All() {
+	time.Sleep(time.Second)
+
+	logs.Println("=========== 初始化报警规则 =========")
+
+	o := orm.NewOrm()
+	for true {
+		var r []WarningType
+		qs := o.QueryTable(new(WarningType))
+		qs.All(&r)
+		for _, v := range r {
+			WarningType_list[v.Id] = v.T_name
+			//logs.Println(v.T_name,v.Id)
+		}
+		time.Sleep(1 * time.Hour)
+	}
+
+}
+func Read_WarningType_Get(Id int) string {
+	// 有先加入 给全部人发消息
+	v, ok := WarningType_list[Id] /*如果确定是真实的,则存在,否则不存在 */
+	if ok {
+		return v
+	} else {
+		return "未知报警"
+	}
+}

+ 15 - 0
routers/router.go

@@ -0,0 +1,15 @@
+package routers
+
+import (
+	"Cold_Data/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+
+	beego.Router("/", &controllers.MainController{})
+	beego.Router("/Company_Data", &controllers.MainController{}, "*:Company_Data")       // 获取未读消息
+	beego.Router("/DeviceTask_List", &controllers.MainController{}, "*:DeviceTask_List") // 获取未读消息
+	beego.Router("/DeviceData_List", &controllers.MainController{}, "*:DeviceData_List") // 获取未读消息
+
+}

+ 776 - 0
static/css/comon0.css

@@ -0,0 +1,776 @@
+@charset "utf-8";
+/* CSS Document */
+* {
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+*, body {
+    padding: 0px;
+    margin: 0px;
+    color: #222;
+    font-family: "微软雅黑";
+}
+
+body {
+    background: #000d4a url(../images/bg.jpg) center center;
+    background-size: cover;
+    color: #666;
+    font-size: .1rem;
+}
+
+li {
+    list-style-type: none;
+}
+
+@font-face {
+    font-family: electronicFont;
+    src: url(../font/DS-DIGIT.TTF)
+}
+
+i {
+    margin: 0px;
+    padding: 0px;
+    text-indent: 0px;
+}
+
+img {
+    border: none;
+    max-width: 100%;
+}
+
+a {
+    text-decoration: none;
+    color: #399bff;
+}
+
+a.active, a:focus {
+    outline: none !important;
+    text-decoration: none;
+}
+
+ol, ul, p, h1, h2, h3, h4, h5, h6 {
+    padding: 0;
+    margin: 0
+}
+
+a:hover {
+    color: #06c;
+    text-decoration: none !important
+}
+
+html, body {
+    height: 100%;
+}
+
+.clearfix:after, .clearfix:before {
+    display: table;
+    content: " "
+}
+
+.clearfix:after {
+    clear: both
+}
+
+.pulll_left {
+    float: left;
+}
+
+.pulll_right {
+    float: right;
+}
+
+/*谷哥滚动条样式*/
+
+::-webkit-scrollbar {
+    width: 5px;
+    height: 5px;
+    position: absolute
+}
+
+::-webkit-scrollbar-thumb {
+    background-color: #5bc0de
+}
+
+::-webkit-scrollbar-track {
+    background-color: #ddd
+}
+
+/***/
+
+.loading {
+    position: fixed;
+    left: 0;
+    top: 0;
+    font-size: .3rem;
+    z-index: 100000000;
+    width: 100%;
+    height: 100%;
+    background: #1a1a1c;
+    text-align: center;
+}
+
+.loadbox {
+    position: absolute;
+    width: 160px;
+    height: 150px;
+    color: #324e93;
+    left: 50%;
+    top: 50%;
+    margin-top: -100px;
+    margin-left: -75px;
+}
+
+.loadbox img {
+    margin: 10px auto;
+    display: block;
+    width: 40px;
+}
+
+.copyright {
+    line-height: .5rem;
+    text-align: center;
+    padding-right: 15px;
+    bottom: 0;
+    color: rgba(255, 255, 255, .5);
+    font-size: .12rem;
+    position: absolute;
+    left: 0;
+    width: 100%;
+}
+
+.head {
+    height: 1.05rem;
+    background: url(../images/head_bg.png) no-repeat center center;
+    background-size: 100% 100%;
+    position: relative
+}
+
+.head h1 {
+    color: #fff;
+    text-align: center;
+    font-size: .42rem;
+    line-height: .75rem;
+}
+
+.head h1 img {
+    width: 1.5rem;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.time {
+    position: absolute;
+    right: .15rem;
+    top: 0;
+    line-height: .75rem;
+    color: rgba(255, 255, 255, .7);
+    font-size: .26rem;
+    padding-right: .1rem;
+    font-family: electronicFont;
+}
+
+.mainbox {
+    padding: 0 .2rem 0rem .2rem;
+    height: calc(99% - 1.05rem)
+}
+
+.mainbox > ul {
+    margin-left: -.1rem;
+    margin-right: -.1rem;
+    height: 100%
+}
+
+.mainbox > ul > li {
+    float: left;
+    padding: 0 .1rem;
+    height: 100%;
+    width: 25%
+}
+
+.mainbox > ul > li:nth-child(2) {
+    width: 50%
+}
+
+.mainbox2 {
+    padding: 0 .2rem 0rem .2rem;
+    height: calc(30% - .5rem)
+}
+
+.mainbox2 > ul {
+    margin-left: -.1rem;
+    margin-right: -.1rem;
+    height: 100%
+}
+
+.mainbox2 > ul > li {
+    float: left;
+    padding: 0 .1rem;
+    height: 100%;
+    width: 50%
+}
+
+
+.boxall {
+    border: 1px solid rgba(25, 186, 139, .17);
+    padding: 0 .2rem .2rem .2rem;
+    background: rgba(34, 39, 103, 0.89) url(../images/line.png);
+    background-size: 100% auto;
+    position: relative;
+    margin-bottom: .15rem;
+    z-index: 10;
+}
+
+.boxall:before,
+.boxall:after {
+    position: absolute;
+    width: .1rem;
+    height: .1rem;
+    content: "";
+    border-top: 2px solid #02a6b5;
+    top: 0;
+}
+
+.boxall:before, .boxfoot:before {
+    border-left: 2px solid #02a6b5;
+    left: 0;
+}
+
+.boxall:after, .boxfoot:after {
+    border-right: 2px solid #02a6b5;
+    right: 0;
+}
+
+.alltitle {
+    font-size: .18rem;
+    color: #fff;
+    line-height: .4rem;
+    border-bottom: 1px dotted rgba(255, 255, 255, .2);
+}
+
+.boxnav {
+    height: calc(100% - .4rem);
+}
+
+.boxnava {
+    height: calc(100% - .8rem);
+}
+
+.boxfoot {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    left: 0;
+}
+
+.boxfoot:before,
+.boxfoot:after {
+    position: absolute;
+    width: .1rem;
+    height: .1rem;
+    content: "";
+    border-bottom: 2px solid #02a6b5;
+    bottom: 0;
+}
+
+.barnav {
+    position: absolute;
+    width: 100%;
+    z-index: 100;
+}
+
+.bar {
+    background: rgba(101, 132, 226, .1);
+    padding: .15rem;
+    z-index: 999;
+}
+
+.barbox li, .barbox2 li {
+    width: 33.33333%;
+    text-align: center;
+    position: relative;
+}
+
+.barbox:before,
+.barbox:after {
+    position: absolute;
+    width: .3rem;
+    height: .1rem;
+    content: "";
+}
+
+.barbox:before {
+    border-left: 2px solid #02a6b5;
+    left: 0;
+    border-top: 2px solid #02a6b5;
+}
+
+.barbox:after {
+    border-right: 2px solid #02a6b5;
+    right: 0;
+    bottom: 0;
+    border-bottom: 2px solid #02a6b5;
+}
+
+.barbox li:before {
+    position: absolute;
+    content: "";
+    height: 50%;
+    width: 1px;
+    background: rgba(255, 255, 255, .2);
+    right: 0;
+    top: 25%;
+}
+
+.barbox {
+    border: 1px solid rgba(25, 186, 139, .17);
+    position: relative;
+}
+
+.barbox li {
+    font-size: .5rem;
+    color: #ffeb7b;
+    padding: .05rem 0;
+    font-family: Gotham, "Helvetica Neue", Helvetica, Arial, "sans-serif";
+    font-weight: bold;
+    font-family: electronicFont;
+}
+
+.barbox2 li {
+    font-size: .19rem;
+    color: rgba(255, 255, 255, .7);
+}
+
+.mapbox {
+    height: calc(100%);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+}
+.panel_s {
+    font-family: aaa;
+    border-radius: 5px;
+    box-shadow: 0px 0px 10px #00abff;
+    opacity: 0.9;
+    padding: 2px;
+    font-size: 0.15rem;
+}
+.panel_y {
+    border-radius: 25px;
+    width: 20px;
+    height: 20px;
+}
+.map {
+    position: relative;
+    height: 100%;
+    z-index: 9;
+    width: 100%;
+}
+
+.map4 {
+    width: 200%;
+    height: 100%;
+    position: relative;
+    left: -50%;
+    top: -5%;
+    margin-top: .2rem;
+    z-index: 5;
+}
+.map3d {
+    position: absolute;
+    top: 0;
+    z-index: 9;
+    color: rgba(104,104,110,0.77);
+}
+
+.map1 {
+    width: 6.43rem;
+    z-index: 2;
+    top: 2.5rem;
+    left: 1.9rem;
+    animation: myfirst2 15s infinite linear;
+}
+
+.map2 {
+    width: 5.66rem;
+    top: 2.9rem;
+    left: 2.2rem;
+    z-index: 3;
+    opacity: 0.2;
+    animation: myfirst 10s infinite linear;
+}
+
+.map3 {
+    width: 5.18rem;
+    top: 3.1rem;
+    left: 2.6rem;
+    z-index: 1;
+    transform: scale(.8);
+    opacity: .6
+}
+
+.map1, .map2, .map3 {
+    position: absolute;
+}
+
+
+.wrap {
+    overflow: hidden;
+}
+
+.wrap li {
+    line-height: .42rem;
+    height: .42rem;
+    text-indent: .24rem;
+    margin-bottom: .1rem;
+}
+
+.wrap li p {
+    border: 1px solid rgba(25, 186, 139, .17);
+}
+
+.wrap li p {
+    display: flex;
+    justify-content: space-between;
+}
+
+.wrap li p {
+    display: flex;
+    align-items: center;
+    height: 80%;
+}
+
+.wrap li p span {
+    color: rgba(255, 255, 255, .6);
+    text-align: center;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+    width: 20%;
+    font-size: .16rem;
+}
+
+.wrap li p span:first-child {
+    width: 60%;
+    text-align: left;
+}
+
+.sycm ul {
+    padding: .16rem 0;
+    width: 100%;
+}
+
+.sycm li {
+    float: left;
+    width: 25%;
+    text-align: center;
+    position: relative
+}
+
+.sycm li:before {
+    position: absolute;
+    content: "";
+    height: 30%;
+    width: 1px;
+    background: rgba(255, 255, 255, .1);
+    right: 0;
+    top: 15%;
+}
+
+.sycm {
+    height: 80%;
+    display: flex;
+    align-items: center
+}
+
+.sycm li:last-child:before, .sycm2 li:nth-child(3):before {
+    width: 0;
+}
+
+.sycm li h2 {
+    font-size: .3rem;
+    color: #46b8ff;
+    padding-bottom: .2rem;
+}
+
+.sycm li span {
+    font-size: .2rem;
+    color: #fff;
+    opacity: .5;
+}
+
+.sycm2 {
+    height: 90%
+}
+
+.sycm2 li {
+    width: 33.3333%;
+    padding: 10px 0;
+}
+
+.sycm2 li h2 {
+    color: #2ad08a
+}
+
+
+.sycm_1 ul {
+    padding: .12rem 0;
+    width: 100%;
+}
+
+.sycm_1 li {
+    float: left;
+    width: 25%;
+    text-align: center;
+    position: relative
+}
+
+.sycm_1 li:before {
+    position: absolute;
+    content: "";
+    height: 30%;
+    width: 1px;
+    background: rgba(255, 255, 255, .1);
+    right: 0;
+    top: 15%;
+}
+
+.sycm_1 {
+    height: 80%;
+    display: flex;
+    align-items: center
+}
+
+.sycm_1 li:last-child:before, .sycm2 li:nth-child(3):before {
+    width: 0;
+}
+
+.sycm_1 li h2 {
+    font-size: .2rem;
+    color: #46b8ff;
+    padding-bottom: .2rem;
+}
+
+.sycm_1 li span {
+    font-size: .15rem;
+    color: #fff;
+    opacity: .5;
+}
+
+.sycm_12 {
+    height: 90%
+}
+
+.sycm_12 li {
+    width: 33.3333%;
+    padding: 10px 0;
+}
+
+.sycm_12 li h2 {
+    color: #2ad08a
+}
+
+
+.btbox {
+    height: 100%
+}
+
+.btbox li {
+    height: 100%;
+    float: left;
+    width: 25%;
+    padding-left: 5%;
+}
+
+@keyframes myfirst2 {
+    from {
+        transform: rotate(0deg) scale(.8);
+    }
+    to {
+        transform: rotate(359deg) scale(.8);
+    }
+}
+
+@keyframes myfirst {
+    from {
+        transform: rotate(0deg) scale(.8);
+    }
+    to {
+        transform: rotate(-359deg) scale(.8);
+    }
+}
+
+
+/*Plugin CSS*/
+.str_wrap {
+    overflow: hidden;
+    width: 100%;
+    position: relative;
+    -moz-user-select: none;
+    -khtml-user-select: none;
+    user-select: none;
+    white-space: nowrap;
+}
+
+
+.str_move {
+    white-space: nowrap;
+    position: absolute;
+    top: 0;
+    left: 0;
+    cursor: move;
+}
+
+.str_move_clone {
+    display: inline-block;
+    vertical-align: top;
+    position: absolute;
+    left: 100%;
+    top: 0;
+}
+
+.str_vertical .str_move_clone {
+    left: 0;
+    top: 100%;
+}
+
+.str_down .str_move_clone {
+    left: 0;
+    bottom: 100%;
+}
+
+.str_vertical .str_move,
+.str_down .str_move {
+    white-space: normal;
+    width: 100%;
+}
+
+.str_static .str_move,
+.no_drag .str_move,
+.noStop .str_move {
+    cursor: inherit;
+}
+
+.str_wrap img {
+    max-width: none !important;
+}
+
+
+.alltitle .pulll_right a {
+    color: #fff;
+}
+
+.alltitle .pulll_right a span {
+    display: inline-block;
+    background: #58c485;
+    width: .16rem;
+    height: .16rem;
+    vertical-align: middle;
+    border-radius: 50%;
+    margin: 0 .05rem 0 .1rem;
+}
+
+.alltitle .pulll_right a:nth-child(2) span {
+    background: #ea7231;
+}
+
+.alltitle .sebtn a {
+    opacity: .6;
+    display: inline-block;
+    padding: 0 .1rem
+}
+
+.alltitle .sebtn a.active {
+    opacity: 1
+}
+
+.YDspan {
+    display: inline-block;
+    background: #58c485;
+    width: .16rem;
+    height: .16rem;
+    vertical-align: middle;
+    border-radius: 50%;
+    margin: 0 .05rem 0 .1rem;
+}
+
+.KFspan {
+    display: inline-block;
+    background: #3fa4f8;
+    width: .16rem;
+    height: .16rem;
+    vertical-align: middle;
+    border-radius: 50%;
+    margin: 0 .05rem 0 .1rem;
+}
+
+
+.loucengbox {
+    position: absolute;
+    /*top: calc(1.4rem);*/
+    /*left: 50%;*/
+    /*width: 200px;*/
+    z-index: 999;
+    overflow: hidden; /* 隐藏滚动条 */
+    padding: 0 .2rem .2rem .2rem;
+    background-size: 100% auto;
+    position: relative;
+    margin-bottom: .15rem;
+}
+
+
+.loucengbox:hover {
+    overflow: auto; /* 鼠标 hover 时显示滚动条 */
+}
+.louceng {
+    float: left;
+    color: #fff;
+    text-align: center;
+    width: 2.0rem;
+    height: 1.5rem;
+    background: url(../images/di.png) no-repeat bottom center;
+    background-size: contain;
+    padding-top: 0.3rem;
+    box-sizing: border-box;
+    z-index: 999;
+}
+
+.louceng:hover{
+    background: url(../images/底03.png) no-repeat bottom center;
+    background-size: contain;
+    /*width: 1.2rem;*/
+    /*height: 1.0rem;*/
+}
+
+
+.dibox {
+    position: absolute;
+    top: calc(100% - 1.4rem);
+    /*left: 50%;*/
+    /*width: 200px;*/
+    height: 260px;
+    z-index: 999;
+}
+
+.didata {
+    float: left;
+    color: #fff;
+    text-align: center;
+    width: 2.0rem;
+    height: 1.0rem;
+    background: url(../images/di.png) no-repeat bottom center;
+    background-size: contain;
+    box-sizing: border-box;
+    z-index: 999;
+}
+
+.dibox div:hover{
+    background: url(../images/底03.png) no-repeat bottom center;
+    background-size: contain;
+    /*width: 1.2rem;*/
+    /*height: 1.0rem;*/
+}
+
+

BIN
static/css/loading-1.gif


BIN
static/font/DS-DIGI.TTF


BIN
static/font/DS-DIGIB.TTF


BIN
static/font/DS-DIGII.TTF


BIN
static/font/DS-DIGIT.TTF


BIN
static/images/bg.jpg


BIN
static/images/di.png


BIN
static/images/head_bg.png


BIN
static/images/jt.png


BIN
static/images/lbx.png


BIN
static/images/line.png


BIN
static/images/loading.gif


BIN
static/images/map.png


BIN
static/images/主页.png


BIN
static/images/单色圆点.png


BIN
static/images/地图类_地图.png


BIN
static/images/层.png


BIN
static/images/库房管理.png


BIN
static/images/底03.png


BIN
static/images/撤销.png


BIN
static/images/更多内容关注公众号.jpg


BIN
static/images/详情.png


BIN
static/images/返回.png


+ 1058 - 0
static/js/B_Mode_1.js

@@ -0,0 +1,1058 @@
+
+$(window).load(function () {
+    $(".loading").fadeOut()
+
+    // 返回上一级 视图处理
+    C_keys_list = C_keys.split(",")
+    if (C_keys_list.length <= 1){
+        $("#v_back").hide();
+    }else {
+        $("#v_back").show();
+    }
+
+})
+
+/****/
+$(document).ready(function () {
+    var whei = $(window).width()
+    $("html").css({fontSize: whei / 20})
+    $(window).resize(function () {
+        var whei = $(window).width()
+        $("html").css({fontSize: whei / 20})
+    });
+});
+
+// 返回
+function f_v_back() {
+    C_keys_list = C_keys.split(",")
+    C_keys_list.pop()
+    hrefurl = "?T_key="+C_keys_list.join(",")
+    if (false != C_modex){
+        hrefurl += "&T_mode="+C_modex
+    }
+    document.location.href = hrefurl
+}
+
+var V_kf_yd = 1
+function f_kf_open() {
+    $("#map_kf").css("opacity", 1);
+    $("#v_trail").css("opacity", 0);
+    $("#R_KF_Column").show();
+    $("#R_YD_Column").hide();
+    V_kf_yd = 1
+    f_view()
+}
+
+function f_yd_open() {
+    $("#map_kf").css("opacity", 0);
+    $("#v_trail").css("opacity", 1);
+    $("#R_KF_Column").hide();
+    $("#R_YD_Column").show();
+    V_kf_yd = 2
+    f_view()
+}
+
+// 视图数据改变
+function f_view() {
+    // 地图加载
+    if (V_kf_yd == 1) {
+        f_v_map();
+    }
+    // 轨迹加载
+    if (C_json.Device.T_移动总数 > 0 && V_kf_yd == 2) {
+        f_v_trail()
+    }
+
+    // 屏蔽按钮
+    if(C_json.Device.T_库房总数 == 0){
+        $("#v_open_KF").hide();
+    }
+    if(C_json.Device.T_移动总数 == 0){
+        $("#v_open_YD").hide();
+    }
+
+    $("#T_公司名称").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+    $("title").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+
+    // 设备类
+    $("#T_终端总数").html(C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+    $("#T_库房总数").html(C_json.Device.T_库房总数)
+    $("#T_移动总数").html(C_json.Device.T_移动总数)
+
+    $("#T_移动离线总数").html(C_json.Device.T_移动离线总数)
+    $("#T_移动监控总数").html(C_json.Device.T_移动监控总数)
+
+    // 报警类
+    // $("#T_库房报警总数").html(C_json.Warning.T_库房报警总数)
+    $("#T_库房未处理总数").html(C_json.Warning.T_库房未处理总数)
+    $("#T_库房设备报警数_今天").html(C_json.Warning.T_库房设备报警数_今天)
+    $("#T_库房报警设备数_今天").html(C_json.Warning.T_库房报警设备数_今天)
+    // $("#T_库房设备报警数_昨天").html(C_json.Warning.T_库房设备报警数_昨天)
+    // $("#T_库房设备报警数_近7天").html(C_json.Warning.T_库房设备报警数_近7天)
+    // $("#T_库房设备报警数_本月").html(C_json.Warning.T_库房设备报警数_本月)
+    // $("#T_库房设备报警数_上一月").html(C_json.Warning.T_库房设备报警数_上一月)
+
+    // $("#T_移动警数总数").html(C_json.Warning.T_移动警数总数)
+    $("#T_移动未处理总数").html(C_json.Warning.T_移动未处理总数)
+    $("#T_移动设备报警数_今天").html(C_json.Warning.T_移动设备报警数_今天)
+    // $("#T_移动设备报警数_昨天").html(C_json.Warning.T_移动设备报警数_昨天)
+    // $("#T_移动设备报警数_近7天").html(C_json.Warning.T_移动设备报警数_近7天)
+    // $("#T_移动设备报警数_本月").html(C_json.Warning.T_移动设备报警数_本月)
+    // $("#T_移动设备报警数_上一月").html(C_json.Warning.T_移动设备报警数_上一月)
+
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数)
+        w_x_ *= 100
+    }
+    $("#T_今日库房报警率").html(w_x_.toFixed(1) + "%")
+
+
+    $("#T_今日报警总数").html(parseInt(C_json.Warning.T_库房设备报警数_今天) + parseInt(C_json.Warning.T_移动设备报警数_今天))
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天) + parseInt(C_json.Warning.T_移动报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+        w_x_ *= 100
+    }
+    $("#T_今日报警率").html(w_x_.toFixed(1) + "%")
+    // $("#T_今日报警率").html(parseInt(w_x_) + "%")
+    $("#T_今日未处理总数").html(parseInt(C_json.Warning.T_库房未处理总数) + parseInt(C_json.Warning.T_移动未处理总数))
+
+    // 任务类
+    $("#T_任务总数_今天").html(C_json.Task.T_任务总数_今天)
+    // $("#T_任务总数_昨天").html(C_json.Task.T_任务总数_昨天)
+    // $("#T_任务总数_近7天").html(C_json.Task.T_任务总数_近7天)
+    // $("#T_任务总数_本月").html(C_json.Task.T_任务总数_本月)
+    // $("#T_任务总数_上一月").html(C_json.Task.T_任务总数_上一月)
+
+    $("#T_任务设备数_今天").html(C_json.Task.T_任务设备数_今天)
+    // $("#T_任务设备数_昨天").html(C_json.Task.T_任务设备数_昨天 )
+    // $("#T_任务设备数_近7天").html(C_json.Task.T_任务设备数_近7天)
+    // $("#T_任务设备数_本月").html(C_json.Task.T_任务设备数_本月 )
+    // $("#T_任务设备数_上一月").html(C_json.Task.T_任务设备数_上一月)
+
+    w_x_ = parseInt(C_json.Task.T_任务设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / C_json.Device.T_移动总数
+        w_x_ *= 100
+    }
+    $("#T_今日闲置设备").html(w_x_.toFixed(1) + "%")
+
+
+    // 报警统计
+    try {
+        $('#Company_Next_WarningG').liMarquee('destroy'); // 清除滚动
+    }
+    catch (e) {
+        alert(e);
+    }
+    $("#Company_Next_WarningG").html("<ul id=\"Company_Next_WarningL\"></ul>")// 清除内容
+    Company_Next_W_l = []
+    f_Company_Next_报警统计(C_json)
+    Company_Next_W_l = Company_Next_W_l.filter((value, index, self) => {
+        return self.findIndex(p => p.name === value.name) === index;
+    });
+    Company_Next_W_l_r = Company_Next_W_l.sort((a, b) => b.Warning - a.Warning);
+    for (var C_key in Company_Next_W_l_r){
+        C_b = Company_Next_W_l_r[C_key]
+        $("#Company_Next_WarningL").append("<li><p><span>" + C_b.name + "</span><span>" + (C_b.Device) + "</span><span>" + C_b.Warning + "%</span></p></li>")
+    }
+    // 开始滚动
+    $('#Company_Next_WarningG').liMarquee({
+        direction: 'up',//身上滚动
+        runshort: false,//内容不足时不滚动
+        scrollamount: 20//速度
+    });
+
+    // console.log("Company_Next_W_l:", Company_Next_W_l)
+    // 图表
+    echarts_报警设备数近7天曲线图()
+    echarts_设备报警率排名()
+    if (V_kf_yd == 1) {
+        echarts_库房端报警类型统计()
+    } else {
+        echarts_移动端任务曲线图()
+    }
+
+    // 任务统计
+    $('#Company_Next_TaskG').liMarquee('destroy'); // 清除滚动
+    $("#Company_Next_TaskG").html("<ul id=\"Company_Next_TaskL\"></ul>")// 清除内容
+    Company_Next_T_l = []
+    f_Company_Next_任务统计(C_json)
+    Company_Next_T_l = Company_Next_T_l.filter((value, index, self) => {
+        return self.findIndex(p => p.name === value.name) === index;
+    });
+
+    Company_Next_T_l_r = Company_Next_T_l.sort((a, b) => b.Task - a.Task);
+
+    for (var C_key in Company_Next_T_l_r){
+        C_b = Company_Next_T_l_r[C_key]
+        $("#Company_Next_TaskL").append("<li><p><span>" + C_b.name + "</span><span>" + (C_b.Task) + "</span><span>" + C_b.DeviceT + "%</span></p></li>")
+
+    }
+    $('#Company_Next_TaskG').liMarquee({
+        direction: 'up',//身上滚动
+        runshort: false,//内容不足时不滚动
+        scrollamount: 20//速度
+    });
+
+
+
+    // 中间 视图显示
+    if (V_kf_yd === 1) {
+        // 库房端
+        $("#T_C_1").html(Company_Next_T_l.length)// 公司下一级统计
+        $("#T_C_2").html(C_json.Warning.T_库房设备报警数_今天)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_库房总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("公司/门店 数量")
+        $("#T_Cn_2").html("今日库房报警次数")
+        $("#T_Cn_3").html("今日库房报警率")
+
+    } else {
+        // 移动端
+        $("#T_C_1").html(Company_Next_T_l.length)// 公司下一级统计
+        $("#T_C_2").html(C_json.Device.T_移动监控总数)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_移动报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_移动总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("公司/门店 数量")
+        $("#T_Cn_2").html("监控总数")
+        $("#T_Cn_3").html("今日移动端报警率")
+
+    }
+}
+
+
+// 公司下一级统计
+Company_Next_W_l = []
+
+function f_Company_Next_报警统计(C_j) {
+
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_报警统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Warning = 0
+        if (C_b.Warning.T_库房报警设备数_今天 > 0) {
+            Warning = parseInt((C_b.Device.T_库房总数 + C_b.Device.T_移动总数) / C_b.Warning.T_库房报警设备数_今天)
+        }
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+
+        Company_Next_W_l.push({
+            "name": C_b.Company_name,
+            "Device": C_b.Device.T_库房总数 + C_b.Device.T_移动总数,
+            "Warning": Warning
+        })
+   }
+
+}
+
+// 公司下一级任务统计
+Company_Next_T_l = []
+
+function f_Company_Next_任务统计(C_j) {
+
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_任务统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+        T_x_ = C_b.Task.T_任务设备数_今天
+        if(T_x_ != 0){
+            T_x_ = T_x_ / C_json.Device.T_移动总数
+            T_x_ *= 100
+        }
+
+        Company_Next_T_l.push({
+            "name": C_b.Company_name,
+            "Task": C_b.Task.T_任务总数_今天,
+            "DeviceT": T_x_.toFixed(1)
+        })
+
+    }
+
+
+}
+
+// 公司下一级统计
+function f_Company_Next_公司下一级统计(C_j) {
+    var Company_Next_num = 0
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        Company_Next_num += f_Company_Next_公司下一级统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Company_Next_num += 1
+
+    }
+    return Company_Next_num
+}
+
+// 设备报警率占比
+function echarts_报警设备数近7天曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_报警设备数近7天曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+
+    for (var C_key in C_json.Warning.T_报警设备数_近7天) {
+        C_b = C_json.Warning.T_报警设备数_近7天[C_key]
+
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_b)
+
+    }
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     data: ['库房端'],
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '15',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {  show: false},
+            position: 'bottom',
+            offset: 20,
+
+        }],
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                name: '库房端',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data
+
+            },
+            // {
+            //     name: '移动端',
+            //     type: 'line',
+            //     smooth: true,
+            //     symbol: 'circle',
+            //     symbolSize: 5,
+            //     showSymbol: false,
+            //     lineStyle: {
+            //
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             width: 2
+            //         }
+            //     },
+            //     areaStyle: {
+            //         normal: {
+            //             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+            //                 offset: 0,
+            //                 color: 'rgba(107, 221, 155, 0.4)'
+            //             }, {
+            //                 offset: 0.8,
+            //                 color: 'rgba(107, 221, 155, 0.1)'
+            //             }], false),
+            //             shadowColor: 'rgba(0, 0, 0, 0.1)',
+            //         }
+            //     },
+            //     itemStyle: {
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             borderColor: 'rgba(107, 221, 155, .1)',
+            //             borderWidth: 5
+            //         }
+            //     },
+            //     data: [ 5, 3, 7, 1, 8, 3, 5]
+            //
+            // },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+// 设备报警率占比
+function echarts_设备报警率排名() {
+    var myChart = echarts.init(document.getElementById('echarts_设备报警率排名'));
+    // option = {
+    //     legend: {
+    //         icon:"circle",
+    //         top: "0",
+    //         width:'100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         data: ['库房端', '移动端'],
+    //         textStyle: {
+    //             color: "rgba(255,255,255,.5)" },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '10',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     xAxis: [{
+    //         type: 'category',
+    //         boundaryGap: false,
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //  fontSize:10
+    //             },
+    //         },
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+    //
+    //     }, {
+    //
+    //         axisPointer: {show: false},
+    //         axisLine: {  show: false},
+    //         position: 'bottom',
+    //         offset: 20,
+    //
+    //
+    //
+    //     }],
+    //
+    //     yAxis: [{
+    //         type: 'value',
+    //         axisTick: {show: false},
+    //         splitNumber: 4,
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //fontSize:10
+    //             },
+    //         },
+    //
+    //         splitLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)',
+    //                 type: 'dotted',
+    //             }
+    //         }
+    //     }],
+    //     series: [
+    //         {
+    //             name: '库房端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: 'rgba(31, 174, 234, 1)',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(31, 174, 234, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(31, 174, 234, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#1f7eea',
+    //                     borderColor: 'rgba(31, 174, 234, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [3, 6, 3, 6, 3, 9, 3]
+    //
+    //         },
+    //         {
+    //             name: '移动端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(107, 221, 155, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(107, 221, 155, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     borderColor: 'rgba(107, 221, 155, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [ 5, 3, 7, 1, 8, 3, 5]
+    //
+    //         },
+    //     ]
+    //
+    // };
+    yAxis_data = []
+    series_data = []
+    Company_Next_W_l_ = Company_Next_W_l.sort((a, b) => a.Warning - b.Warning).slice(-10);
+
+    for (var C_key in Company_Next_W_l_) {
+        C_b = Company_Next_W_l_[C_key]
+        if(C_b.Warning > 0){
+            yAxis_data.push(C_b.name)
+            series_data.push(C_b.Warning)
+        }
+
+    }
+
+    option = {
+        // title: {
+        //     text: 'World Population'
+        // },
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                type: 'shadow'
+            }
+        },
+        // legend: {},
+        grid: {
+            top: '0%',
+            left: '0%',
+            right: '0%',
+            bottom: '0%',
+            containLabel: true
+        },
+        xAxis: {
+            type: 'value',
+            boundaryGap: [0, 0.01],
+            show: false
+        },
+        yAxis: {
+            type: 'category',
+            data: yAxis_data
+        },
+        series: [
+            {
+                name: '报警率',
+                type: 'bar',
+                itemStyle: {
+                    color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+                        { offset: 0, color: '#596db0' },
+                        { offset: 0.5, color: '#4a63b4' },
+                        { offset:1, color: '#435eb7' }
+                    ])
+                },
+
+                data: series_data
+            }
+        ]
+    };
+    // option = {
+    //     legend: {
+    //         icon: "circle",
+    //         top: "0",
+    //         width: '100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         // textStyle: {
+    //         //     color: "rgba(255,255,255,.5)"
+    //         // },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '0',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     dataset: [
+    //         {
+    //             dimensions: ['name', 'Device', "Warning"],
+    //             // source: [
+    //             //     ['11111111', 41],
+    //             //     ['22222222', 241],
+    //             //     ['333333333', 341],
+    //             //     ['4444444444', 141],
+    //             //     ['555555555', 421],
+    //             //     ['666666666', 141],
+    //             //     ['77777777', 241],
+    //             //     ['8888888888', 411],
+    //             //     ['9999999', 421],
+    //             //     ['123123123', 414],
+    //             //     ['456456456', 431],
+    //             //
+    //             // ]
+    //             source: Company_Next_W_l,
+    //         },
+    //         {
+    //             transform: {
+    //                 type: 'sort',
+    //                 config: {dimension: 'Warning', order: 'desc'}
+    //             }
+    //         }
+    //     ],
+    //     xAxis: {
+    //         type: 'category',
+    //         axisLabel: {interval: 0, rotate: 30},
+    //         max: 6 // only the largest 3 bars will be displayed
+    //     },
+    //     yAxis: {},
+    //     series: {
+    //         type: 'bar',
+    //         encode: {x: 'name', y: 'Warning'},
+    //         datasetIndex: 1
+    //     }
+    // };
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 移动端任务曲线图
+function echarts_移动端任务曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_移动端任务曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+    for (var C_key in C_json.Task.T_任务总数_近7天) {
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_json.Task.T_任务总数_近7天[C_key])
+    }
+
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '17',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data // ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {show: false},
+            position: 'bottom',
+            offset: 20,
+
+
+        }],
+
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                // radius: ['40%', '70%'],
+                // center: ['50%', '74%'],
+                name: '任务次数',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                containLabel: true,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data // [3, 6, 3, 6, 3, 9, 3]
+            },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 库房端报警类型统计
+function echarts_库房端报警类型统计() {
+    var myChart = echarts.init(document.getElementById('echarts_库房端报警类型统计'));
+    data = []
+    data_num = 0
+    for (var C_key in C_json.Warning.T_库房报警类型统计) {
+        data_num += C_json.Warning.T_库房报警类型统计[C_key]
+        data.push({value: C_json.Warning.T_库房报警类型统计[C_key], name: C_key})
+    }
+    data.push({
+        // make an record to fill the bottom 50%
+        value: data_num,
+        itemStyle: {
+            // stop the chart from rendering this piece
+            color: 'none',
+            decal: {
+                symbol: 'none'
+            }
+        },
+        label: {
+            show: false
+        }
+    })
+
+
+    option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        // legend: {
+        //     top: '5%',
+        //     left: 'center',
+        //     // doesn't perfectly work with our tricks, disable it
+        //     selectedMode: false
+        // },
+
+        color: ['#45C2E0', '#C1EBDD', '#c0a9fa', '#75bef3', '#FF9393', '#e9aaff', '#ffc1a7'],
+        series: [
+            {
+                name: '报警类型',
+                type: 'pie',
+                radius: ['40%', '70%'],
+                center: ['50%', '74%'],
+                // adjust the start angle
+                startAngle: 180,
+                label: {
+                    color: "#C1EBDD",
+                    show: true,
+                    formatter(param) {
+                        // correct the percentage
+                        return param.name + ' (' + param.percent * 2 + '%)';
+                    }
+                },
+                data: data
+            }
+        ]
+    };
+    option2 = {
+        tooltip: {
+            trigger: 'item'
+        },
+
+        color: ['#45C2E0', '#C1EBDD', '#c0a9fa', '#75bef3', '#FF9393', '#e9aaff', '#ffc1a7'],
+        series: [
+            {
+                name: '测试测试',
+                type: 'pie',
+                radius: ['40%', '70%'],
+                center: ['50%', '74%'],
+                // adjust the start angle
+                startAngle: 180,
+                label: {
+                    color: "#C1EBDD",
+                    show: true,
+                    formatter(param) {
+                        // correct the percentage
+                        return param.name + ' (' + param.percent * 2 + '%)';
+                    }
+                },
+                data: data
+            }
+        ]
+    }
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    //添加按钮点击切换
+    document.getElementById('storageChartButton').addEventListener('click', function (){
+        console.log(myChart.getOption(),"点击切换了储存端")
+        if (myChart.getOption()===option){
+            myChart.setOption(option2);
+        }else{
+            myChart.setOption(option);
+        }
+    })
+    //添加按钮点击切换
+    document.getElementById('transportChartButton').addEventListener('click', function (){
+        console.log(myChart.getOption(),"点击切换了运输端")
+        if (myChart.getOption()===option){
+            myChart.setOption(option3);
+        }else{
+            myChart.setOption(option);
+        }
+    })
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+

+ 1052 - 0
static/js/C_Mode_v3D.js

@@ -0,0 +1,1052 @@
+
+$(window).load(function () {
+    $(".loading").fadeOut()
+
+    // 返回上一级 视图处理
+    C_keys_list = C_keys.split(",")
+    if (C_keys_list.length <= 1){
+        $("#v_back").hide();
+    }else {
+        $("#v_back").show();
+    }
+
+    f_kf_open()
+})
+
+/****/
+$(document).ready(function () {
+    var whei = $(window).width()
+    $("html").css({fontSize: whei / 20})
+    $(window).resize(function () {
+        var whei = $(window).width()
+        $("html").css({fontSize: whei / 20})
+    });
+});
+
+// 返回
+function f_v_back() {
+    C_keys_list = C_keys.split(",")
+    C_keys_list.pop()
+    hrefurl = "?T_key="+C_keys_list.join(",")
+    if (false != C_modex){
+        hrefurl += "&T_mode="+C_modex
+    }
+    document.location.href = hrefurl
+}
+
+var V_kf_yd = 1
+function f_kf_open() {
+    $("#v_3d").show();
+    $("#v_trail").hide();
+    $(".R_KF_Column").show();
+    $(".R_YD_Column").hide();
+    V_kf_yd = 1
+    f_view()
+}
+
+function f_yd_open() {
+    $("#v_3d").hide();
+    $("#v_trail").show();
+    $(".R_KF_Column").hide();
+    $(".R_YD_Column").show();
+    V_kf_yd = 2
+    f_view()
+}
+
+// 视图数据改变
+function f_view() {
+    if(C_json == null) return
+
+    if(C_json.Device.T_移动总数 == 0){
+        $("#v_open_YD").hide();
+    }
+
+    // 3D加载
+    if (C_json.Device.T_库房总数 > 0 && V_kf_yd == 1) {
+        f_v3d_loadProject(C_json.Company_v3d)
+        f_v_v3d()
+    }
+    // 轨迹加载
+    if (C_json.Device.T_移动总数 > 0 && V_kf_yd == 2) {
+        f_v_trail()
+    }
+
+    // 屏蔽按钮
+    if(C_json.Device.T_库房总数 == 0){
+        $("#v_open_KF").hide();
+    }
+    if(C_json.Device.T_移动总数 == 0){
+        $("#v_open_YD").hide();
+    }
+
+    $("#T_公司名称").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+    $("title").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+
+    // 设备类
+    $("#T_终端总数").html(C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+    $("#T_库房总数").html(C_json.Device.T_库房总数)
+    $("#T_移动总数").html(C_json.Device.T_移动总数)
+
+    $("#T_移动离线总数").html(C_json.Device.T_移动离线总数)
+    $("#T_移动监控总数").html(C_json.Device.T_移动监控总数)
+
+    // 报警类
+    // $("#T_库房报警总数").html(C_json.Warning.T_库房报警总数)
+    $("#T_库房未处理总数").html(C_json.Warning.T_库房未处理总数)
+    $("#T_库房设备报警数_今天").html(C_json.Warning.T_库房设备报警数_今天)
+    $("#T_库房报警设备数_今天").html(C_json.Warning.T_库房报警设备数_今天)
+    // $("#T_库房设备报警数_昨天").html(C_json.Warning.T_库房设备报警数_昨天)
+    // $("#T_库房设备报警数_近7天").html(C_json.Warning.T_库房设备报警数_近7天)
+    // $("#T_库房设备报警数_本月").html(C_json.Warning.T_库房设备报警数_本月)
+    // $("#T_库房设备报警数_上一月").html(C_json.Warning.T_库房设备报警数_上一月)
+
+    // $("#T_移动警数总数").html(C_json.Warning.T_移动警数总数)
+    $("#T_移动未处理总数").html(C_json.Warning.T_移动未处理总数)
+    $("#T_移动设备报警数_今天").html(C_json.Warning.T_移动设备报警数_今天)
+    // $("#T_移动设备报警数_昨天").html(C_json.Warning.T_移动设备报警数_昨天)
+    // $("#T_移动设备报警数_近7天").html(C_json.Warning.T_移动设备报警数_近7天)
+    // $("#T_移动设备报警数_本月").html(C_json.Warning.T_移动设备报警数_本月)
+    // $("#T_移动设备报警数_上一月").html(C_json.Warning.T_移动设备报警数_上一月)
+
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数)
+        w_x_ *= 100
+    }
+    $("#T_今日库房报警率").html(w_x_.toFixed(1) + "%")
+
+
+    $("#T_今日报警总数").html(parseInt(C_json.Warning.T_库房设备报警数_今天) + parseInt(C_json.Warning.T_移动设备报警数_今天))
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天) + parseInt(C_json.Warning.T_移动报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+        w_x_ *= 100
+    }
+    $("#T_今日报警率").html(w_x_.toFixed(1) + "%")
+    // $("#T_今日报警率").html(parseInt(w_x_) + "%")
+    $("#T_今日未处理总数").html(parseInt(C_json.Warning.T_库房未处理总数) + parseInt(C_json.Warning.T_移动未处理总数))
+
+    // 任务类
+    $("#T_任务总数_今天").html(C_json.Task.T_任务总数_今天)
+    // $("#T_任务总数_昨天").html(C_json.Task.T_任务总数_昨天)
+    // $("#T_任务总数_近7天").html(C_json.Task.T_任务总数_近7天)
+    // $("#T_任务总数_本月").html(C_json.Task.T_任务总数_本月)
+    // $("#T_任务总数_上一月").html(C_json.Task.T_任务总数_上一月)
+
+    $("#T_任务设备数_今天").html(C_json.Task.T_任务设备数_今天)
+    // $("#T_任务设备数_昨天").html(C_json.Task.T_任务设备数_昨天 )
+    // $("#T_任务设备数_近7天").html(C_json.Task.T_任务设备数_近7天)
+    // $("#T_任务设备数_本月").html(C_json.Task.T_任务设备数_本月 )
+    // $("#T_任务设备数_上一月").html(C_json.Task.T_任务设备数_上一月)
+
+    w_x_ = parseInt(C_json.Task.T_任务设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / C_json.Device.T_移动总数
+        w_x_ *= 100
+    }
+    $("#T_今日闲置设备").html(w_x_.toFixed(1) + "%")
+
+    // 中间 视图显示
+    if (V_kf_yd == 1) {
+        // 库房端
+        $("#T_C_1").html(C_json.Device.T_库房总数)// 公司下一级统计
+        $("#T_C_2").html(C_json.Warning.T_库房设备报警数_今天)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_库房总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("设备数量")
+        $("#T_Cn_2").html("今日库房报警次数")
+        $("#T_Cn_3").html("今日库房报警率")
+
+    } else {
+        // 移动端
+        $("#T_C_1").html(C_json.Device.T_移动总数)// 公司下一级统计
+        $("#T_C_2").html(C_json.Device.T_移动监控总数)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_移动报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_移动总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("设备数量")
+        $("#T_Cn_2").html("监控总数")
+        $("#T_Cn_3").html("今日移动端报警率")
+
+    }
+
+    // 报警统计
+    try {
+        $('#Company_Next_WarningG').liMarquee('destroy'); // 清除滚动
+    }
+    catch (e) {
+        alert(e);
+    }
+    $("#Company_Next_WarningL").html("")// 清除内容
+    Company_Next_W_l = []
+    f_Company_Next_报警统计(C_json)
+    // 开始滚动
+    $('#Company_Next_WarningG').liMarquee({
+        direction: 'up',//身上滚动
+        runshort: false,//内容不足时不滚动
+        scrollamount: 20//速度
+    });
+
+    // console.log("Company_Next_W_l:", Company_Next_W_l)
+    // 图表
+    echarts_报警设备数近7天曲线图()
+    // echarts_设备报警率排名()
+    if (V_kf_yd == 1) {
+        echarts_库房端报警类型统计()
+    } else {
+        echarts_移动端任务曲线图()
+    }
+
+    // 设备列表
+    $('#Company_DeviceG').liMarquee('destroy'); // 清除滚动
+    $("#Company_DeviceL").html("")// 清除内容
+    Company_Device_l = []
+    f_Company_Device(C_json)
+    // console.log("Company_Next_T_l:",Company_Next_T_l)
+    // 开始滚动
+    $('#Company_DeviceG').liMarquee({
+        direction: 'up',//身上滚动
+        runshort: false,//内容不足时不滚动
+        scrollamount: 20//速度
+    });
+}
+
+
+// 公司下一级统计
+Company_Next_W_l = []
+
+function f_Company_Next_报警统计(C_j) {
+
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_报警统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Warning = 0
+        if (C_b.Warning.T_库房报警设备数_今天 > 0) {
+            Warning = parseInt((C_b.Device.T_库房总数 + C_b.Device.T_移动总数) / C_b.Warning.T_库房报警设备数_今天)
+        }
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+
+        Company_Next_W_l.push({
+            "name": C_b.Company_name,
+            "Device": C_b.Device.T_库房总数 + C_b.Device.T_移动总数,
+            "Warning": Warning
+        })
+        $("#Company_Next_WarningL").append("<li><p><span>" + C_b.Company_name + "</span><span>" + (C_b.Device.T_库房总数 + C_b.Device.T_移动总数) + "</span><span>" + Warning + "%</span></p></li>")
+    }
+
+}
+
+// 公司下一级任务统计
+Company_Next_T_l = []
+
+function f_Company_Next_任务统计(C_j) {
+
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_任务统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+        T_x_ = C_b.Task.T_任务设备数_今天
+        if(T_x_ != 0){
+            T_x_ = T_x_ / C_json.Device.T_移动总数
+            T_x_ *= 100
+        }
+
+        Company_Next_T_l.push({
+            "name": C_b.Company_name,
+            "Task": C_b.Task.T_任务总数_今天,
+            "DeviceT": T_x_.toFixed(1) + "%"
+        })
+
+        $("#Company_Next_TaskL").append("<li><p><span>" + C_b.Company_name + "</span><span>" + (C_b.Task.T_任务总数_今天) + "</span><span>" + T_x_.toFixed(1) + "%</span></p></li>")
+    }
+
+
+}
+
+function f_Company_Device(C_j) {
+
+    for (var C_key in C_j.Device.DeviceList) {
+        T_t = ""
+        T_rh = ""
+
+        C_b = C_j.Device.DeviceList[C_key]
+        t_w_ = ""
+        if (C_b.T_DeviceSensorParameter.T_free == 0){
+            if (( C_b.T_DeviceSensorParameter.T_Tlower > C_b.T_DeviceSensorData.T_t) || ( C_b.T_DeviceSensorData.T_t > C_b.T_DeviceSensorParameter.T_Tupper)){
+                t_w_ = " style='color: #f93fff' "
+            }
+        }
+
+        h_w_ = ""
+        if (C_b.T_DeviceSensorParameter.T_free == 0){
+            if (( C_b.T_DeviceSensorParameter.T_RHlower > C_b.T_DeviceSensorData.T_rh) || ( C_b.T_DeviceSensorData.T_rh > C_b.T_DeviceSensorParameter.T_RHupper)){
+                h_w_ = " style='color: #f93fff' "
+            }
+        }
+
+
+        T_t = C_b.T_DeviceSensorData.T_t + "°C"
+
+        h_w_title = ""
+        if(C_b.T_DeviceSensorData.T_rh == 0){
+            T_rh = "无"
+        }else {
+            T_rh = C_b.T_rh + "%"
+            h_w_title = "  title=\""+C_b.T_DeviceSensorParameter.T_RHlower+"% ~ "+C_b.T_DeviceSensorParameter.T_RHupper+"%\" "
+        }
+
+        if(C_b.T_online != 1 || C_b.T_online_s != 1 ){
+            T_t = "离线"
+            T_rh = "离线"
+            t_w_ = " style='color: rgba(255, 255, 255, .6)' "
+            h_w_ = " style='color: rgba(255, 255, 255, .6)' "
+        }
+
+        $("#Company_DeviceL").append("<li onclick=\"f_d_onclick(\'"+C_b.T_3dview+"\')\"><p><span>" + C_b.T_name + "</span><span "+t_w_+"  title=\""+C_b.T_DeviceSensorParameter.T_Tlower+"°C ~ "+C_b.T_DeviceSensorParameter.T_Tupper+"°C\" >" + C_b.T_DeviceSensorData.T_t + "</span><span "+h_w_+" "+h_w_title+">" + C_b.T_DeviceSensorData.T_rh + "</span></p></li>")
+    }
+
+}
+function f_d_onclick(T_3dview) {
+    if(T_3dview.length > 0){
+        f_DeviceonDblclick(T_3dview)
+    }
+}
+// 公司下一级统计
+function f_Company_Next_公司下一级统计(C_j) {
+    var Company_Next_num = 0
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        Company_Next_num += f_Company_Next_公司下一级统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Company_Next_num += 1
+
+    }
+    return Company_Next_num
+}
+
+// 设备报警率占比
+function echarts_报警设备数近7天曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_报警设备数近7天曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+
+    for (var C_key in C_json.Warning.T_报警设备数_近7天) {
+        C_b = C_json.Warning.T_报警设备数_近7天[C_key]
+
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_b)
+
+    }
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     data: ['库房端'],
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '15',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {  show: false},
+            position: 'bottom',
+            offset: 20,
+
+        }],
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                name: '库房端',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data
+
+            },
+            // {
+            //     name: '移动端',
+            //     type: 'line',
+            //     smooth: true,
+            //     symbol: 'circle',
+            //     symbolSize: 5,
+            //     showSymbol: false,
+            //     lineStyle: {
+            //
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             width: 2
+            //         }
+            //     },
+            //     areaStyle: {
+            //         normal: {
+            //             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+            //                 offset: 0,
+            //                 color: 'rgba(107, 221, 155, 0.4)'
+            //             }, {
+            //                 offset: 0.8,
+            //                 color: 'rgba(107, 221, 155, 0.1)'
+            //             }], false),
+            //             shadowColor: 'rgba(0, 0, 0, 0.1)',
+            //         }
+            //     },
+            //     itemStyle: {
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             borderColor: 'rgba(107, 221, 155, .1)',
+            //             borderWidth: 5
+            //         }
+            //     },
+            //     data: [ 5, 3, 7, 1, 8, 3, 5]
+            //
+            // },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+// 设备报警率占比
+function echarts_设备报警率排名() {
+    var myChart = echarts.init(document.getElementById('echarts_设备报警率排名'));
+    // option = {
+    //     legend: {
+    //         icon:"circle",
+    //         top: "0",
+    //         width:'100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         data: ['库房端', '移动端'],
+    //         textStyle: {
+    //             color: "rgba(255,255,255,.5)" },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '10',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     xAxis: [{
+    //         type: 'category',
+    //         boundaryGap: false,
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //  fontSize:10
+    //             },
+    //         },
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+    //
+    //     }, {
+    //
+    //         axisPointer: {show: false},
+    //         axisLine: {  show: false},
+    //         position: 'bottom',
+    //         offset: 20,
+    //
+    //
+    //
+    //     }],
+    //
+    //     yAxis: [{
+    //         type: 'value',
+    //         axisTick: {show: false},
+    //         splitNumber: 4,
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //fontSize:10
+    //             },
+    //         },
+    //
+    //         splitLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)',
+    //                 type: 'dotted',
+    //             }
+    //         }
+    //     }],
+    //     series: [
+    //         {
+    //             name: '库房端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: 'rgba(31, 174, 234, 1)',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(31, 174, 234, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(31, 174, 234, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#1f7eea',
+    //                     borderColor: 'rgba(31, 174, 234, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [3, 6, 3, 6, 3, 9, 3]
+    //
+    //         },
+    //         {
+    //             name: '移动端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(107, 221, 155, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(107, 221, 155, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     borderColor: 'rgba(107, 221, 155, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [ 5, 3, 7, 1, 8, 3, 5]
+    //
+    //         },
+    //     ]
+    //
+    // };
+    yAxis_data = []
+    series_data = []
+    Company_Next_W_l_ = Company_Next_W_l.sort((a, b) => a.Warning - b.Warning).slice(-10);
+
+    for (var C_key in Company_Next_W_l_) {
+        C_b = Company_Next_W_l_[C_key]
+        if(C_b.Warning > 0){
+            yAxis_data.push(C_b.name)
+            series_data.push(C_b.Warning)
+        }
+
+    }
+
+    option = {
+        // title: {
+        //     text: 'World Population'
+        // },
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                type: 'shadow'
+            }
+        },
+        // legend: {},
+        grid: {
+            top: '0%',
+            left: '0%',
+            right: '0%',
+            bottom: '0%',
+            containLabel: true
+        },
+        xAxis: {
+            type: 'value',
+            boundaryGap: [0, 0.01],
+            show: false
+        },
+        yAxis: {
+            type: 'category',
+            data: yAxis_data
+        },
+        series: [
+            {
+                name: '报警率',
+                type: 'bar',
+                itemStyle: {
+                    color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+                        { offset: 0, color: '#596db0' },
+                        { offset: 0.5, color: '#4a63b4' },
+                        { offset:1, color: '#435eb7' }
+                    ])
+                },
+
+                data: series_data
+            }
+        ]
+    };
+    // option = {
+    //     legend: {
+    //         icon: "circle",
+    //         top: "0",
+    //         width: '100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         // textStyle: {
+    //         //     color: "rgba(255,255,255,.5)"
+    //         // },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '0',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     dataset: [
+    //         {
+    //             dimensions: ['name', 'Device', "Warning"],
+    //             // source: [
+    //             //     ['11111111', 41],
+    //             //     ['22222222', 241],
+    //             //     ['333333333', 341],
+    //             //     ['4444444444', 141],
+    //             //     ['555555555', 421],
+    //             //     ['666666666', 141],
+    //             //     ['77777777', 241],
+    //             //     ['8888888888', 411],
+    //             //     ['9999999', 421],
+    //             //     ['123123123', 414],
+    //             //     ['456456456', 431],
+    //             //
+    //             // ]
+    //             source: Company_Next_W_l,
+    //         },
+    //         {
+    //             transform: {
+    //                 type: 'sort',
+    //                 config: {dimension: 'Warning', order: 'desc'}
+    //             }
+    //         }
+    //     ],
+    //     xAxis: {
+    //         type: 'category',
+    //         axisLabel: {interval: 0, rotate: 30},
+    //         max: 6 // only the largest 3 bars will be displayed
+    //     },
+    //     yAxis: {},
+    //     series: {
+    //         type: 'bar',
+    //         encode: {x: 'name', y: 'Warning'},
+    //         datasetIndex: 1
+    //     }
+    // };
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 移动端任务曲线图
+function echarts_移动端任务曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_移动端任务曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+    for (var C_key in C_json.Task.T_任务总数_近7天) {
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_json.Task.T_任务总数_近7天[C_key])
+    }
+
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '17',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data // ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {show: false},
+            position: 'bottom',
+            offset: 20,
+
+
+        }],
+
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                // radius: ['40%', '70%'],
+                // center: ['50%', '74%'],
+                name: '任务次数',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                containLabel: true,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data // [3, 6, 3, 6, 3, 9, 3]
+            },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 库房端报警类型统计
+function echarts_库房端报警类型统计() {
+    var myChart = echarts.init(document.getElementById('echarts_库房端报警类型统计'));
+    data = []
+    data_num = 0
+    for (var C_key in C_json.Warning.T_库房报警类型统计) {
+        data_num += C_json.Warning.T_库房报警类型统计[C_key]
+        data.push({value: C_json.Warning.T_库房报警类型统计[C_key], name: C_key})
+    }
+    data.push({
+        // make an record to fill the bottom 50%
+        value: data_num,
+        itemStyle: {
+            // stop the chart from rendering this piece
+            color: 'none',
+            decal: {
+                symbol: 'none'
+            }
+        },
+        label: {
+            show: false
+        }
+    })
+
+
+    option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        // legend: {
+        //     top: '5%',
+        //     left: 'center',
+        //     // doesn't perfectly work with our tricks, disable it
+        //     selectedMode: false
+        // },
+
+        color: ['#45C2E0', '#C1EBDD', '#c0a9fa', '#75bef3', '#FF9393', '#e9aaff', '#ffc1a7'],
+        series: [
+            {
+                name: '报警类型',
+                type: 'pie',
+                radius: ['40%', '70%'],
+                center: ['50%', '74%'],
+                // adjust the start angle
+                startAngle: 180,
+                label: {
+                    color: "#C1EBDD",
+                    show: true,
+                    formatter(param) {
+                        // correct the percentage
+                        return param.name + ' (' + param.percent * 2 + '%)';
+                    }
+                },
+                data: data
+            }
+        ]
+    };
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+

+ 218 - 0
static/js/C_Mode_v3D_精简版.js

@@ -0,0 +1,218 @@
+
+$(window).load(function () {
+    $(".loading").fadeOut()
+
+    // 返回上一级 视图处理
+    C_keys_list = C_keys.split(",")
+    if (C_keys_list.length <= 1){
+        $("#v_back").hide();
+    }else {
+        $("#v_back").show();
+    }
+
+    f_kf_open()
+})
+
+/****/
+$(document).ready(function () {
+    var whei = $(window).width()
+    $("html").css({fontSize: whei / 20})
+    $(window).resize(function () {
+        var whei = $(window).width()
+        $("html").css({fontSize: whei / 20})
+    });
+});
+
+// 返回
+function f_v_back() {
+    C_keys_list = C_keys.split(",")
+    C_keys_list.pop()
+    hrefurl = "?T_key="+C_keys_list.join(",")
+    if (false != C_modex){
+        hrefurl += "&T_mode="+C_modex
+    }
+    document.location.href = hrefurl
+}
+
+var V_kf_yd = 1
+function f_kf_open() {
+    $("#v_3d").show();
+    $("#v_trail").hide();
+    $(".R_KF_Column").show();
+    $(".R_YD_Column").hide();
+    V_kf_yd = 1
+    f_view()
+}
+
+function f_yd_open() {
+    $("#v_3d").hide();
+    $("#v_trail").show();
+    $(".R_KF_Column").hide();
+    $(".R_YD_Column").show();
+    V_kf_yd = 2
+    f_view()
+}
+
+// 视图数据改变
+function f_view() {
+    if(C_json == null) return
+
+    // 3D加载
+    f_v3d_loadProject(C_json.Company_v3d.split("|")[1])
+    f_v_v3d()
+
+    // 屏蔽按钮
+    if(C_json.Device.T_库房总数 == 0){
+        $("#v_open_KF").hide();
+    }
+    if(C_json.Device.T_移动总数 == 0){
+        $("#v_open_YD").hide();
+    }
+
+    $("#T_公司名称").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+    $("title").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+
+    // 设备类
+    $("#T_终端总数").html(C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+    $("#T_库房总数").html(C_json.Device.T_库房总数)
+    $("#T_移动总数").html(C_json.Device.T_移动总数)
+
+    $("#T_移动离线总数").html(C_json.Device.T_移动离线总数)
+    $("#T_移动监控总数").html(C_json.Device.T_移动监控总数)
+
+    // 报警类
+    // $("#T_库房报警总数").html(C_json.Warning.T_库房报警总数)
+    $("#T_库房未处理总数").html(C_json.Warning.T_库房未处理总数)
+    $("#T_库房设备报警数_今天").html(C_json.Warning.T_库房设备报警数_今天)
+    $("#T_库房报警设备数_今天").html(C_json.Warning.T_库房报警设备数_今天)
+    // $("#T_库房设备报警数_昨天").html(C_json.Warning.T_库房设备报警数_昨天)
+    // $("#T_库房设备报警数_近7天").html(C_json.Warning.T_库房设备报警数_近7天)
+    // $("#T_库房设备报警数_本月").html(C_json.Warning.T_库房设备报警数_本月)
+    // $("#T_库房设备报警数_上一月").html(C_json.Warning.T_库房设备报警数_上一月)
+
+    // $("#T_移动警数总数").html(C_json.Warning.T_移动警数总数)
+    $("#T_移动未处理总数").html(C_json.Warning.T_移动未处理总数)
+    $("#T_移动设备报警数_今天").html(C_json.Warning.T_移动设备报警数_今天)
+    // $("#T_移动设备报警数_昨天").html(C_json.Warning.T_移动设备报警数_昨天)
+    // $("#T_移动设备报警数_近7天").html(C_json.Warning.T_移动设备报警数_近7天)
+    // $("#T_移动设备报警数_本月").html(C_json.Warning.T_移动设备报警数_本月)
+    // $("#T_移动设备报警数_上一月").html(C_json.Warning.T_移动设备报警数_上一月)
+
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数)
+        w_x_ *= 100
+    }
+    $("#T_今日库房报警率").html(w_x_.toFixed(1) + "%")
+
+
+    $("#T_今日报警总数").html(parseInt(C_json.Warning.T_库房设备报警数_今天) + parseInt(C_json.Warning.T_移动设备报警数_今天))
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天) + parseInt(C_json.Warning.T_移动报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+        w_x_ *= 100
+    }
+    $("#T_今日报警率").html(w_x_.toFixed(1) + "%")
+    // $("#T_今日报警率").html(parseInt(w_x_) + "%")
+    $("#T_今日未处理总数").html(parseInt(C_json.Warning.T_库房未处理总数) + parseInt(C_json.Warning.T_移动未处理总数))
+
+    // 任务类
+    $("#T_任务总数_今天").html(C_json.Task.T_任务总数_今天)
+    // $("#T_任务总数_昨天").html(C_json.Task.T_任务总数_昨天)
+    // $("#T_任务总数_近7天").html(C_json.Task.T_任务总数_近7天)
+    // $("#T_任务总数_本月").html(C_json.Task.T_任务总数_本月)
+    // $("#T_任务总数_上一月").html(C_json.Task.T_任务总数_上一月)
+
+    $("#T_任务设备数_今天").html(C_json.Task.T_任务设备数_今天)
+    // $("#T_任务设备数_昨天").html(C_json.Task.T_任务设备数_昨天 )
+    // $("#T_任务设备数_近7天").html(C_json.Task.T_任务设备数_近7天)
+    // $("#T_任务设备数_本月").html(C_json.Task.T_任务设备数_本月 )
+    // $("#T_任务设备数_上一月").html(C_json.Task.T_任务设备数_上一月)
+
+    w_x_ = parseInt(C_json.Task.T_任务设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / C_json.Device.T_移动总数
+        w_x_ *= 100
+    }
+    $("#T_今日闲置设备").html(w_x_.toFixed(1) + "%")
+
+    // 中间 视图显示
+    // 库房端
+    $("#T_C_1").html(C_json.Device.T_库房总数)// 公司下一级统计
+    $("#T_C_2").html(C_json.Warning.T_库房设备报警数_今天)// 公司下一级统计
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / C_json.Device.T_库房总数
+        w_x_ *= 100
+    }
+    $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+    $("#T_Cn_1").html("设备数量")
+    $("#T_Cn_2").html("今日库房报警次数")
+    $("#T_Cn_3").html("今日库房报警率")
+
+    // 设备列表
+    $('#Company_DeviceG').liMarquee('destroy'); // 清除滚动
+    $("#Company_DeviceL").html("")// 清除内容
+    Company_Device_l = []
+    f_Company_Device(C_json)
+    // console.log("Company_Next_T_l:",Company_Next_T_l)
+    // 开始滚动
+    $('#Company_DeviceG').liMarquee({
+        direction: 'up',//身上滚动
+        runshort: false,//内容不足时不滚动
+        scrollamount: 20//速度
+    });
+}
+
+
+function f_Company_Device(C_j) {
+
+    for (var C_key in C_j.Device.DeviceList) {
+        T_t = ""
+        T_rh = ""
+
+        C_b = C_j.Device.DeviceList[C_key]
+        t_w_ = ""
+        if (C_b.T_DeviceSensorParameter.T_free == 0){
+            if (( C_b.T_DeviceSensorParameter.T_Tlower > C_b.T_DeviceSensorData.T_t) || ( C_b.T_DeviceSensorData.T_t > C_b.T_DeviceSensorParameter.T_Tupper)){
+                t_w_ = " style='color: #f93fff' "
+                console.log("温度超标", C_b.T_DeviceSensorParameter.T_Tlower , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorParameter.T_Tupper)
+            }
+        }
+
+        h_w_ = ""
+        if (C_b.T_DeviceSensorParameter.T_free == 0){
+            if (( C_b.T_DeviceSensorParameter.T_RHlower > C_b.T_DeviceSensorData.T_rh) || ( C_b.T_DeviceSensorData.T_rh > C_b.T_DeviceSensorParameter.T_RHupper)){
+                h_w_ = " style='color: #f93fff' "
+                console.log("湿度超标", C_b.T_DeviceSensorParameter.T_RHlower , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorParameter.T_RHupper)
+            }
+        }
+
+
+        T_t = C_b.T_DeviceSensorData.T_t + "°C"
+
+        h_w_title = ""
+        if(C_b.T_DeviceSensorData.T_rh == 0){
+            T_rh = "无"
+        }else {
+            T_rh = C_b.T_DeviceSensorData.T_rh + "%"
+            h_w_title = "  title=\""+C_b.T_DeviceSensorParameter.T_RHlower+"% ~ "+C_b.T_DeviceSensorParameter.T_RHupper+"%\" "
+        }
+
+        if(C_b.T_online != 1 && C_b.T_online_s != 1 ){
+            T_t = "离线"
+            T_rh = "离线"
+            t_w_ = " style='color: rgba(255, 255, 255, .6)' "
+            h_w_ = " style='color: rgba(255, 255, 255, .6)' "
+        }
+
+        $("#Company_DeviceL").append("<li onclick=\"f_d_onclick(\'"+C_b.T_3dview+"\')\"><p><span>" + C_b.T_name + "</span><span "+t_w_+"  title=\""+C_b.T_DeviceSensorParameter.T_Tlower+"°C ~ "+C_b.T_DeviceSensorParameter.T_Tupper+"°C\" >" + T_t + "</span><span "+h_w_+" "+h_w_title+">" + T_rh + "</span></p></li>")
+    }
+
+}
+function f_d_onclick(T_3dview) {
+    if(T_3dview.length > 0){
+        f_DeviceonDblclick(T_3dview)
+    }
+}

+ 144 - 0
static/js/bzd.js

@@ -0,0 +1,144 @@
+$(window).load(function () {
+    Company_Data()
+    C_modex = getPar("T_mode")
+});
+
+var C_name = ""
+var C_keys_list = []
+var C_modex = getPar("T_mode")
+function Company_Data() {
+    C_keys_list = C_keys.split(",")
+
+    var settings = {
+        "url": "Company_Data",
+        "method": "POST",
+        "timeout": 0,
+        "headers": {
+            "Content-Type": "application/x-www-form-urlencoded"
+        },
+        "data": {
+            "T_key": C_keys_list[C_keys_list.length-1]
+        }
+    };
+
+    $.ajax(settings).done(function (response) {
+        console.log(response);
+        C_json = response.Data
+        C_name = C_json.Company_name
+        // console.log("C_json:",C_json)
+        C_json = Company_Recursion(C_json) // 整合数据
+
+        f_Device_Sensor()
+
+    });
+
+}
+function f_Device_Sensor() {
+    var settings = {
+        "url": "https://cold.coldbaozhida.com/api/v3/Data/Company_key_Device_Sensor_List",
+        "method": "POST",
+        "timeout": 0,
+        "headers": {
+            "Content-Type": "application/x-www-form-urlencoded"
+        },
+        "data": {
+            "key": C_keys_list[C_keys_list.length-1]
+        }
+    };
+
+    $.ajax(settings).done(function (response) {
+        console.log(response);
+        C_json.Device.DeviceList = response.Data.Data
+        console.log("C_json_OK:", C_json)
+        f_view(); // 视图更新
+        // 更新
+        setTimeout(()=>{
+            Company_Data()
+        },30000)
+    });
+}
+
+// 汇总数据
+function Company_Recursion(Company_Project_r) {
+
+    for (var C_Children_key in Company_Project_r.Children) {
+        Company_Project_Br = Company_Recursion(Company_Project_r.Children[C_Children_key])
+
+        Company_Project_r.Device.T_库房总数 += Company_Project_Br.Device.T_库房总数
+        Company_Project_r.Device.T_移动总数 += Company_Project_Br.Device.T_移动总数
+        Company_Project_r.Device.T_移动离线总数 += Company_Project_Br.Device.T_移动离线总数
+        Company_Project_r.Device.T_移动监控总数 += Company_Project_Br.Device.T_移动监控总数
+
+        // if (Company_Project_r.Device.DeviceList == null) Company_Project_r.Device.DeviceList = []
+        // if (Company_Project_Br.Device.DeviceList != null) {
+        //     // console.log(Company_Project_Br.Company_name,Company_Project_Br.Device.DeviceList)
+        //     Company_Project_r.Device.DeviceList = Company_Project_r.Device.DeviceList.concat(Company_Project_Br.Device.DeviceList)
+        // }
+
+        // 报警类
+        // Company_Project_r.Warning.T_今日库房总数      += Company_Project_Br.Warning.T_今日库房总数
+        Company_Project_r.Warning.T_库房未处理总数 += Company_Project_Br.Warning.T_库房未处理总数
+        Company_Project_r.Warning.T_库房设备报警数_今天 += Company_Project_Br.Warning.T_库房设备报警数_今天
+        Company_Project_r.Warning.T_库房报警设备数_今天 += Company_Project_Br.Warning.T_库房报警设备数_今天
+        // Company_Project_r.Warning.T_库房设备报警数_昨天  += Company_Project_Br.Warning.T_库房设备报警数_昨天
+        // Company_Project_r.Warning.T_库房设备报警数_近7天 += Company_Project_Br.Warning.T_库房设备报警数_近7天
+        // Company_Project_r.Warning.T_库房设备报警数_本月  += Company_Project_Br.Warning.T_库房设备报警数_本月
+        // Company_Project_r.Warning.T_库房设备报警数_上一月 += Company_Project_Br.Warning.T_库房设备报警数_上一月
+
+
+        if (Company_Project_r.Warning.T_库房报警类型统计 == null) Company_Project_r.Warning.T_库房报警类型统计 = []
+
+        for (var C_key in Company_Project_Br.Warning.T_库房报警类型统计) {
+            if (!(C_key in Company_Project_r.Warning.T_库房报警类型统计)) {
+                Company_Project_r.Warning.T_库房报警类型统计[C_key] = 0
+            }
+            Company_Project_r.Warning.T_库房报警类型统计[C_key] += Company_Project_Br.Warning.T_库房报警类型统计[C_key]
+        }
+
+        // Company_Project_r.Warning.T_今日移动总数      += Company_Project_Br.Warning.T_今日移动总数
+        Company_Project_r.Warning.T_移动未处理总数 += Company_Project_Br.Warning.T_移动未处理总数
+        Company_Project_r.Warning.T_移动设备报警数_今天 += Company_Project_Br.Warning.T_移动设备报警数_今天
+        Company_Project_r.Warning.T_移动报警设备数_今天 += Company_Project_Br.Warning.T_移动报警设备数_今天
+        // Company_Project_r.Warning.T_移动设备报警数_昨天  += Company_Project_Br.Warning.T_移动设备报警数_昨天
+        // Company_Project_r.Warning.T_移动设备报警数_近7天 += Company_Project_Br.Warning.T_移动设备报警数_近7天
+        // Company_Project_r.Warning.T_移动设备报警数_本月  += Company_Project_Br.Warning.T_移动设备报警数_本月
+        // Company_Project_r.Warning.T_移动设备报警数_上一月 += Company_Project_Br.Warning.T_移动设备报警数_上一月
+        if (Company_Project_r.Warning.T_报警设备数_近7天 == null) Company_Project_r.Warning.T_报警设备数_近7天 = []
+        for (var C_key in Company_Project_Br.Warning.T_报警设备数_近7天) {
+            if (!(C_key in Company_Project_r.Warning.T_报警设备数_近7天)) {
+                Company_Project_r.Warning.T_报警设备数_近7天[C_key] = 0
+            }
+            Company_Project_r.Warning.T_报警设备数_近7天[C_key] += Company_Project_Br.Warning.T_报警设备数_近7天[C_key]
+        }
+        // 任务类
+        Company_Project_r.Task.T_任务总数_今天 += Company_Project_Br.Task.T_任务总数_今天
+        // Company_Project_r.Task.T_任务总数_昨天  += Company_Project_Br.Task.T_任务总数_昨天
+        // Company_Project_r.Task.T_任务总数_近7天 += Company_Project_Br.Task.T_任务总数_近7天
+        // Company_Project_r.Task.T_任务总数_本月  += Company_Project_Br.Task.T_任务总数_本月
+        // Company_Project_r.Task.T_任务总数_上一月 += Company_Project_Br.Task.T_任务总数_上一月
+
+        // if (Company_Project_r.Task.T_任务总数_近一年 == null) Company_Project_r.Task.T_任务总数_近一年 = []
+        // for (var C_key in Company_Project_Br.Task.T_任务总数_近一年) {
+        //     if (!(C_key in Company_Project_r.Task.T_任务总数_近一年)){
+        //         Company_Project_r.Task.T_任务总数_近一年[C_key] = 0
+        //     }
+        //     Company_Project_r.Task.T_任务总数_近一年[C_key] += Company_Project_Br.Task.T_任务总数_近一年[C_key]
+        // }
+
+        if (Company_Project_r.Task.T_任务总数_近7天 == null) Company_Project_r.Task.T_任务总数_近7天 = []
+        for (var C_key in Company_Project_Br.Task.T_任务总数_近7天) {
+            if (!(C_key in Company_Project_r.Task.T_任务总数_近7天)) {
+                Company_Project_r.Task.T_任务总数_近7天[C_key] = 0
+            }
+            Company_Project_r.Task.T_任务总数_近7天[C_key] += Company_Project_Br.Task.T_任务总数_近7天[C_key]
+        }
+
+        Company_Project_r.Task.T_任务设备数_今天 += Company_Project_Br.Task.T_任务设备数_今天
+        // Company_Project_r.Task.T_任务设备数_昨天  += Company_Project_Br.Task.T_任务设备数_昨天
+        // Company_Project_r.Task.T_任务设备数_近7天 += Company_Project_Br.Task.T_任务设备数_近7天
+        // Company_Project_r.Task.T_任务设备数_本月  += Company_Project_Br.Task.T_任务设备数_本月
+        // Company_Project_r.Task.T_任务设备数_上一月 += Company_Project_Br.Task.T_任务设备数_上一月
+    }
+
+    return Company_Project_r
+}

File diff suppressed because it is too large
+ 34 - 0
static/js/echarts.min.js


File diff suppressed because it is too large
+ 1 - 0
static/js/jquery.js


+ 1309 - 0
static/js/jquery.liMarquee.js

@@ -0,0 +1,1309 @@
+/*
+ * jQuery liMarquee v 4.6
+ *
+ * Copyright 2013, Linnik Yura | LI MASS CODE | http://masscode.ru
+ * http://masscode.ru/index.php/k2/item/44-limarquee
+ * Free to use
+ *
+ * Last Update 20.11.2014
+ */
+(function ($) {
+	var methods = {
+		init: function (options) {
+			var p = {
+				direction: 'left', //Указывает направление движения содержимого контейнера (left | right | up | down)
+				loop: -1, //Задает, сколько раз будет прокручиваться содержимое. "-1" для бесконечного воспроизведения движения
+				scrolldelay: 0, //Величина задержки в миллисекундах между движениями
+				scrollamount: 50, //Скорость движения контента (px/sec)
+				circular: true, //Если "true" - строка непрерывная 
+				drag: true, //Если "true" - включено перетаскивание строки
+				runshort: true, //Если "true" - короткая строка тоже "бегает", "false" - стоит на месте
+				hoverstop: true, //true - строка останавливается при наведении курсора мыши, false - строка не останавливается
+				inverthover: false, //false - стандартное поведение. Если "true" - строка начинает движение только при наведении курсора
+				xml: false //Путь к xml файлу с нужным текстом
+			};
+			if (options) {
+				$.extend(p, options);
+			}
+
+			return this.each(function () {
+				var enterEvent = 'mouseenter';
+				var leaveEvent = 'mouseleave';
+				if(p.inverthover){
+					enterEvent = 'mouseleave';
+					leaveEvent = 'mouseenter';	
+				}
+				
+								
+				var
+					loop = p.loop,
+					strWrap = $(this).addClass('str_wrap').data({scrollamount:p.scrollamount}),
+					fMove = false;
+					
+				
+				
+				var strWrapStyle = strWrap.attr('style'); 
+				
+				if(strWrapStyle){
+					var wrapStyleArr = strWrapStyle.split(';');
+					var startHeight = false;
+					for(var i=0; i < wrapStyleArr.length; i++){
+						var str = $.trim(wrapStyleArr[i]);					
+						var tested =  str.search(/^height/g);
+						if(tested != -1){
+							startHeight = parseFloat(strWrap.css('height'));
+						}
+					}
+				}
+
+				var code = function () {
+					
+					strWrap.off('mouseleave');
+					strWrap.off('mouseenter');
+					strWrap.off('mousemove');
+					strWrap.off('mousedown');
+					strWrap.off('mouseup');
+
+					
+					if(!$('.str_move',strWrap).length){
+						strWrap.wrapInner($('<div>').addClass('str_move'));
+					}
+					
+					var
+					strMove = $('.str_move', strWrap).addClass('str_origin'),
+					strMoveClone = strMove.clone().removeClass('str_origin').addClass('str_move_clone'),
+					time = 0;
+
+					if (!p.hoverstop) {
+						strWrap.addClass('noStop');
+					}
+
+					var circCloneHor = function(){
+						strMoveClone.clone().css({
+							left:'100%',
+							right:'auto',							
+							width: strMove.width()
+						}).appendTo(strMove);
+						strMoveClone.css({
+							right: '100%',
+							left:'auto',
+							width: strMove.width()
+						}).appendTo(strMove);
+					}
+					
+					var circCloneVert = function(){
+						strMoveClone.clone().css({
+							top: '100%',
+							bottom:'auto',
+							height: strMove.height()
+						}).appendTo(strMove);
+						strMoveClone.css({
+							bottom: '100%',
+							top:'auto',
+							height:strMove.height()
+						}).appendTo(strMove);
+					}
+					
+					
+					
+					if (p.direction == 'left') {
+						strWrap.height(strMove.outerHeight())
+						if (strMove.width() > strWrap.width()) {
+							var leftPos = -strMove.width();
+							
+							if (p.circular) {
+								
+								if (!p.xml) {
+									circCloneHor()
+									leftPos = -(strMove.width() + (strMove.width() - strWrap.width()));
+								}
+							}
+							if (p.xml) {
+								strMove.css({
+									left:strWrap.width()	
+								})
+							}
+							var
+							strMoveLeft = strWrap.width(),
+								k1 = 0,
+								timeFunc1 = function () {
+									var
+									fullS = Math.abs(leftPos),
+										time = (fullS / strWrap.data('scrollamount')) * 1000;
+									if (parseFloat(strMove.css('left')) != 0) {
+										fullS = (fullS + strWrap.width());
+										time = (fullS - (strWrap.width() - parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
+									}
+									return time;
+								},
+								moveFuncId1 = false,
+								moveFunc1 = function () {
+									if (loop != 0) {
+										strMove.stop(true).animate({
+											left: leftPos
+										}, timeFunc1(), 'linear', function () {
+											$(this).css({
+												left: strWrap.width()
+											});
+											if (loop == -1) {
+												moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
+											} else {
+												loop--;
+												moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
+											}
+										});
+									}
+								};
+								strWrap.data({
+									moveId: moveFuncId1	,
+									moveF : moveFunc1
+								})
+								if(!p.inverthover){
+									moveFunc1();
+								}
+							
+							if (p.hoverstop) {
+								strWrap.on(enterEvent, function () {
+									$(this).addClass('str_active');
+									clearTimeout(moveFuncId1);
+									strMove.stop(true);
+								}).on(leaveEvent, function () {
+									$(this).removeClass('str_active');
+									$(this).off('mousemove');
+									moveFunc1();
+								});
+
+								if (p.drag) {
+									strWrap.on('mousedown', function (e) {
+										if(p.inverthover){
+											strMove.stop(true);
+										}
+										//drag
+										var dragLeft;
+										var dir = 1;
+										var newX;
+										var oldX = e.clientX;
+										//drag
+										
+										strMoveLeft = strMove.position().left;
+										k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+										
+										
+										
+										$(this).on('mousemove', function (e) {
+											fMove = true;
+											
+											//drag
+											newX = e.clientX;
+											if(newX > oldX){
+												dir = 1
+											}else{
+												dir = -1
+											}
+											oldX = newX	
+											dragLeft = k1 + (e.clientX - strWrap.offset().left);
+											
+											if (!p.circular) {
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = strWrap.width();
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > strWrap.width() && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+											}else{
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = 0;
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > 0 && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+	
+											}
+											
+											
+											strMove.stop(true).css({
+												left: dragLeft
+											});
+											//drag
+											
+										
+											
+										}).on('mouseup', function () {
+											$(this).off('mousemove');
+											if(p.inverthover){
+												strMove.trigger('mouseenter')
+											}
+											setTimeout(function () {                             
+												fMove = false
+											}, 50)
+											
+										});
+										return false;
+									})
+									.on('click', function () {
+										if (fMove) {
+											return false
+										}
+									});
+								} else {
+									strWrap.addClass('no_drag');
+								};
+							}
+						} else {
+							if (p.runshort) {
+								strMove.css({
+									left: strWrap.width()
+								});
+								var
+								strMoveLeft = strWrap.width(),
+									k1 = 0,
+									timeFunc = function () {
+										time = (strMove.width() + strMove.position().left) / strWrap.data('scrollamount') * 1000;
+										return time;
+									};
+								var moveFunc = function () {
+									var leftPos = -strMove.width();
+									strMove.animate({
+										left: leftPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											left: strWrap.width()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										}
+									});
+								};
+								strWrap.data({
+									moveF : moveFunc
+								})
+								if(!p.inverthover){
+									moveFunc();
+								}
+								if (p.hoverstop) {
+									strWrap.on(enterEvent, function () {
+										$(this).addClass('str_active');
+										strMove.stop(true);
+									}).on(leaveEvent, function () {
+										$(this).removeClass('str_active');
+										$(this).off('mousemove');
+										moveFunc();
+									});
+
+									if (p.drag) {
+										strWrap.on('mousedown', function (e) {
+											if(p.inverthover){
+												strMove.stop(true);
+											}
+											
+											//drag
+											var dragLeft;
+											var dir = 1;
+											var newX;
+											var oldX = e.clientX;
+											//drag
+											
+											strMoveLeft = strMove.position().left;
+											k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+											$(this).on('mousemove', function (e) {
+												fMove = true;
+												
+												
+												//drag
+												newX = e.clientX;
+												if(newX > oldX){
+													dir = 1
+												}else{
+													dir = -1
+												}
+												oldX = newX	
+												dragLeft = k1 + (e.clientX - strWrap.offset().left);
+												
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = strWrap.width();
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > strWrap.width() && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												
+												
+												strMove.stop(true).css({
+													left: dragLeft
+												});
+												
+												
+												
+											}).on('mouseup', function () {
+												if(p.inverthover){
+													strMove.trigger('mouseenter')
+												}
+												$(this).off('mousemove');
+												setTimeout(function () {                             
+													fMove = false
+												}, 50)
+											});
+											return false;
+										})
+										.on('click', function () {
+											if (fMove) {
+												return false
+											}
+										});
+									} else {
+										strWrap.addClass('no_drag');
+									};
+								}
+							} else {
+								strWrap.addClass('str_static');
+							}
+						};
+					};
+					if (p.direction == 'right') {
+						strWrap.height(strMove.outerHeight())
+						strWrap.addClass('str_right');
+						strMove.css({
+							left: -strMove.width(),
+							right: 'auto'
+						})
+						
+						if (strMove.width() > strWrap.width()) {
+							var leftPos = strWrap.width();
+							strMove.css({
+								left: 0
+							})
+							if (p.circular) {
+								if (!p.xml) {
+									circCloneHor()
+									//Определяем крайнюю точку
+									leftPos = strMove.width();
+								}
+							}
+							
+							var
+							k2 = 0;
+							timeFunc = function () {
+								var
+								fullS = strWrap.width(), //крайняя точка
+									time = (fullS / strWrap.data('scrollamount')) * 1000; //время
+								if (parseFloat(strMove.css('left')) != 0) {
+									fullS = (strMove.width() + strWrap.width());
+									time = (fullS - (strMove.width() + parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
+								}
+								return time;
+							};
+							var moveFunc = function () {
+
+								if (loop != 0) {
+									strMove.animate({
+										left: leftPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											left: -strMove.width()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+							};
+							strWrap.data({
+								moveF : moveFunc
+							})
+					
+							if(!p.inverthover){
+								moveFunc();
+							}
+							if (p.hoverstop) {
+								strWrap.on(enterEvent, function () {
+									$(this).addClass('str_active');
+									strMove.stop(true);
+								}).on(leaveEvent, function () {
+									$(this).removeClass('str_active');
+									$(this).off('mousemove');
+									moveFunc();
+								});
+
+								if (p.drag) {
+									
+									strWrap.on('mousedown', function (e) {
+										if(p.inverthover){
+											strMove.stop(true);
+										}
+										
+										
+										//drag
+										var dragLeft;
+										var dir = 1;
+										var newX;
+										var oldX = e.clientX;
+										//drag
+										
+										strMoveLeft = strMove.position().left;
+										k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+										$(this).on('mousemove', function (e) {
+											
+											fMove = true;
+											
+											//drag
+											newX = e.clientX;
+											if(newX > oldX){
+												dir = 1
+											}else{
+												dir = -1
+											}
+											oldX = newX	
+											dragLeft = k2 + (e.clientX - strWrap.offset().left);
+
+
+											if (!p.circular) {
+
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = strWrap.width();
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > strWrap.width() && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+											}else{
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = 0;
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > 0 && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+	
+											}
+											
+											strMove.stop(true).css({
+												left: dragLeft
+											});
+											
+
+										}).on('mouseup', function () {
+											if(p.inverthover){
+												strMove.trigger('mouseenter')
+											}
+											$(this).off('mousemove');
+											setTimeout(function () {                             
+												fMove = false
+											}, 50)
+										});
+										return false;
+									})
+									.on('click', function () {
+										if (fMove) {
+											return false
+										}
+									});
+								} else {
+									strWrap.addClass('no_drag');
+								};
+							}
+						} else {
+														
+							if (p.runshort) {
+								
+								var k2 = 0;
+								var timeFunc = function () {
+									time = (strWrap.width() - strMove.position().left) / strWrap.data('scrollamount') * 1000;
+									return time;
+								};
+								var moveFunc = function () {
+									var leftPos = strWrap.width();
+									strMove.animate({
+										left: leftPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											left: -strMove.width()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+
+								strWrap.data({
+									moveF : moveFunc
+								})
+
+								if(!p.inverthover){
+									moveFunc();
+								}
+								if (p.hoverstop) {
+									strWrap.on(enterEvent, function () {
+										$(this).addClass('str_active');
+										strMove.stop(true);
+									}).on(leaveEvent, function () {
+										$(this).removeClass('str_active');
+										$(this).off('mousemove');
+										moveFunc();
+									});
+
+									if (p.drag) {
+										strWrap.on('mousedown', function (e) {
+											if(p.inverthover){
+												strMove.stop(true);
+											}
+											
+											//drag
+											var dragLeft;
+											var dir = 1;
+											var newX;
+											var oldX = e.clientX;
+											//drag
+											
+											strMoveLeft = strMove.position().left;
+											k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+											$(this).on('mousemove', function (e) {
+												fMove = true;
+												
+												
+												
+												//drag
+												newX = e.clientX;
+												if(newX > oldX){
+													dir = 1
+												}else{
+													dir = -1
+												}
+												oldX = newX	
+												dragLeft = k2 + (e.clientX - strWrap.offset().left);
+												
+												if(dragLeft < -strMove.width() && dir < 0){
+													dragLeft = strWrap.width();
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+												if(dragLeft > strWrap.width() && dir > 0){
+													dragLeft = -strMove.width();
+													strMoveLeft = strMove.position().left;
+													k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
+												}
+
+												strMove.stop(true).css({
+													left:dragLeft
+												});
+												
+											}).on('mouseup', function () {
+												if(p.inverthover){
+													strMove.trigger('mouseenter')
+												}
+												$(this).off('mousemove');
+												setTimeout(function () {                             
+													fMove = false
+												}, 50)
+											});
+											return false;
+										})
+										.on('click', function () {
+											if (fMove) {
+												return false
+											}
+										});
+									} else {
+										strWrap.addClass('no_drag');
+									};
+								}
+							} else {
+								strWrap.addClass('str_static');
+							}
+						};
+					};
+					if (p.direction == 'up') {
+						strWrap.addClass('str_vertical');
+						
+						if (strMove.height() > strWrap.height()) {
+							var topPos = -strMove.height();
+							if (p.circular) {
+								if (!p.xml) {
+									circCloneVert();									
+									topPos = -(strMove.height() + (strMove.height() - strWrap.height()));
+								}
+							}
+							if (p.xml) {
+								strMove.css({
+									top:strWrap.height()	
+								})
+							}
+							var
+							k2 = 0;
+							timeFunc = function () {
+								var
+								fullS = Math.abs(topPos),
+									time = (fullS / strWrap.data('scrollamount')) * 1000;
+								if (parseFloat(strMove.css('top')) != 0) {
+									fullS = (fullS + strWrap.height());
+									time = (fullS - (strWrap.height() - parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
+								}
+								
+								return time;
+							};
+							var moveFunc = function () {
+								if (loop != 0) {
+									strMove.animate({
+										top: topPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											top: strWrap.height()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+							};
+							
+							strWrap.data({
+								moveF : moveFunc
+							})
+							
+							if(!p.inverthover){
+								moveFunc();
+							}
+							if (p.hoverstop) {
+								strWrap.on(enterEvent, function () {
+									$(this).addClass('str_active');
+									strMove.stop(true);
+								}).on(leaveEvent, function () {
+									$(this).removeClass('str_active');
+									$(this).off('mousemove');
+									moveFunc();
+								});
+
+								if (p.drag) {
+									strWrap.on('mousedown', function (e) {
+										if(p.inverthover){
+											strMove.stop(true);
+										}
+										
+										//drag
+										var dragTop;
+										var dir = 1;
+										var newY;
+										var oldY = e.clientY;
+										//drag
+										
+										
+										strMoveTop = strMove.position().top;
+										k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+										$(this).on('mousemove', function (e) {
+											
+											fMove = true;
+
+											//drag
+											newY = e.clientY;
+											if(newY > oldY){
+												dir = 1
+											}else{
+												if(newY < oldY){
+													dir = -1
+												}
+											}
+											oldY = newY	
+											dragTop = k2 + e.clientY - strWrap.offset().top;
+
+
+											if (!p.circular){
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = strWrap.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > strWrap.height() && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}	
+											}else{
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = 0;
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > 0 && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+											}
+
+
+											strMove.stop(true).css({
+												top: dragTop
+											});
+											//drag
+											
+											
+											
+											
+											
+											
+											
+											
+											
+											
+											
+											
+										}).on('mouseup', function () {
+											if(p.inverthover){
+												strMove.trigger('mouseenter')
+											}
+											$(this).off('mousemove');
+											setTimeout(function () {                             
+												fMove = false
+											}, 50)
+										});
+										return false;
+									})
+									.on('click', function () {
+										if (fMove) {
+											return false
+										}
+									});
+								} else {
+									strWrap.addClass('no_drag');
+								};
+							}
+						} else {
+							if (p.runshort) {
+								strMove.css({
+									top: strWrap.height()
+								});
+								var k2 = 0;
+								var timeFunc = function () {
+									
+									time = (strMove.height() + strMove.position().top) / strWrap.data('scrollamount') * 1000;
+									
+									return time;
+								};
+								var moveFunc = function () {
+									var topPos = -strMove.height();
+									strMove.animate({
+										top: topPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											top: strWrap.height()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+								strWrap.data({
+									moveF : moveFunc
+								})
+								if(!p.inverthover){
+									moveFunc();
+								}
+								if (p.hoverstop) {
+									strWrap.on(enterEvent, function () {
+										$(this).addClass('str_active');
+										strMove.stop(true);
+									}).on(leaveEvent, function () {
+										$(this).removeClass('str_active');
+										$(this).off('mousemove');
+										moveFunc();
+									});
+
+									if (p.drag) {
+										strWrap.on('mousedown', function (e) {
+											if(p.inverthover){
+												strMove.stop(true);
+											}
+											
+											//drag
+											var dragTop;
+											var dir = 1;
+											var newY;
+											var oldY = e.clientY;
+											//drag
+											
+											strMoveTop = strMove.position().top;
+											k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+											$(this).on('mousemove', function (e) {
+												
+												
+												fMove = true;
+
+												//drag
+												newY = e.clientY;
+												if(newY > oldY){
+													dir = 1
+												}else{
+													if(newY < oldY){
+														dir = -1
+													}
+												}
+												oldY = newY	
+												dragTop = k2 + e.clientY - strWrap.offset().top;
+												
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = strWrap.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > strWrap.height() && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}	
+												//*drag
+												
+												strMove.stop(true).css({
+													top: dragTop
+												});
+												
+												
+											}).on('mouseup', function () {
+												if(p.inverthover){
+													strMove.trigger('mouseenter')
+												}
+												$(this).off('mousemove');
+												setTimeout(function () {                             
+													fMove = false
+												}, 50)
+											});
+											return false;
+										})
+										.on('click', function () {
+											if (fMove) {
+												return false
+											}
+										});
+									} else {
+										strWrap.addClass('no_drag');
+									};
+								}
+							} else {
+								strWrap.addClass('str_static');
+							}
+						};
+					};
+					if (p.direction == 'down') {
+
+						strWrap.addClass('str_vertical').addClass('str_down');
+						strMove.css({
+							top: -strMove.height(),
+							bottom: 'auto'
+						})
+						if (strMove.height() > strWrap.height()) {
+							var topPos = strWrap.height();
+							if (p.circular) {
+								if (!p.xml) {
+									circCloneVert();									
+									topPos = strMove.height();
+								}
+							}
+							if (p.xml) {
+								strMove.css({
+									top:-strMove.height()
+								})
+							}
+							var
+							k2 = 0;
+							timeFunc = function () {
+								var
+								fullS = strWrap.height(), //крайняя точка
+									time = (fullS / strWrap.data('scrollamount')) * 1000; //время
+
+								if (parseFloat(strMove.css('top')) != 0) {
+									fullS = (strMove.height() + strWrap.height());
+									time = (fullS - (strMove.height() + parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
+								}
+								return time;
+							};
+							var moveFunc = function () {
+
+								if (loop != 0) {
+									strMove.animate({
+										top: topPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											top: -strMove.height()
+										});
+										if (loop == -1) {
+
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+							};
+							strWrap.data({
+								moveF : moveFunc
+							})
+							if(!p.inverthover){
+								moveFunc();
+							}
+							if (p.hoverstop) {
+								strWrap.on(enterEvent, function () {
+									$(this).addClass('str_active');
+									strMove.stop(true);
+								}).on(leaveEvent, function () {
+									$(this).removeClass('str_active');
+									$(this).off('mousemove');
+									moveFunc();
+								});
+
+								if (p.drag) {
+									strWrap.on('mousedown', function (e) {
+										if(p.inverthover){
+											strMove.stop(true);
+										}
+										
+										//drag
+										var dragTop;
+										var dir = 1;
+										var newY;
+										var oldY = e.clientY;
+										//drag
+										
+										
+										strMoveTop = strMove.position().top;
+										k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+										$(this).on('mousemove', function (e) {
+											
+											fMove = true;
+											
+											//drag
+											newY = e.clientY;
+											if(newY > oldY){
+												dir = 1
+											}else{
+												if(newY < oldY){
+													dir = -1
+												}
+											}
+											oldY = newY	
+											dragTop = k2 + e.clientY - strWrap.offset().top;
+
+
+											if (!p.circular){
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = strWrap.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > strWrap.height() && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}	
+											}else{
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = 0;
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > 0 && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+											}
+
+
+											strMove.stop(true).css({
+												top: dragTop
+											});
+											//drag
+
+
+
+										}).on('mouseup', function () {
+											if(p.inverthover){
+												strMove.trigger('mouseenter')
+											}
+											$(this).off('mousemove');
+											setTimeout(function () {                             
+												fMove = false
+											}, 50)
+										});
+										return false;
+									})
+									.on('click', function () {
+										if (fMove) {
+											return false
+										}
+									});
+								} else {
+									strWrap.addClass('no_drag');
+								};
+							}
+						} else {
+							if (p.runshort) {
+								var k2 = 0;
+								var timeFunc = function () {
+									time = (strWrap.height() - strMove.position().top) / strWrap.data('scrollamount') * 1000;
+									return time;
+								};
+								var moveFunc = function () {
+									var topPos = strWrap.height();
+									strMove.animate({
+										top: topPos
+									}, timeFunc(), 'linear', function () {
+										$(this).css({
+											top: -strMove.height()
+										});
+										if (loop == -1) {
+											setTimeout(moveFunc, p.scrolldelay);
+										} else {
+											loop--;
+											setTimeout(moveFunc, p.scrolldelay);
+										};
+									});
+								};
+								strWrap.data({
+									moveF : moveFunc
+								})
+								if(!p.inverthover){
+									moveFunc();
+								}
+								if (p.hoverstop) {
+									strWrap.on(enterEvent, function () {
+										$(this).addClass('str_active');
+										strMove.stop(true);
+									}).on(leaveEvent, function () {
+										$(this).removeClass('str_active');
+										$(this).off('mousemove');
+										moveFunc();
+									});
+
+									if (p.drag) {
+										strWrap.on('mousedown', function (e) {
+											if(p.inverthover){
+												strMove.stop(true);
+											}
+											
+											//drag
+											var dragTop;
+											var dir = 1;
+											var newY;
+											var oldY = e.clientY;
+											//drag
+											
+											strMoveTop = strMove.position().top;
+											k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+											$(this).on('mousemove', function (e) {
+												fMove = true;
+
+												//drag
+												newY = e.clientY;
+												if(newY > oldY){
+													dir = 1
+												}else{
+													if(newY < oldY){
+														dir = -1
+													}
+												}
+												oldY = newY	
+												dragTop = k2 + e.clientY - strWrap.offset().top;
+	
+	
+												if(dragTop < -strMove.height() && dir < 0){
+													dragTop = strWrap.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}
+												if(dragTop > strWrap.height() && dir > 0){
+													dragTop = -strMove.height();
+													strMoveTop = strMove.position().top;
+													k2 = strMoveTop - (e.clientY - strWrap.offset().top);
+												}	
+												//*drag
+												
+												strMove.stop(true).css({
+													top: dragTop
+												});
+												
+												
+												
+												
+												
+												
+												
+												
+											}).on('mouseup', function () {
+												if(p.inverthover){
+													strMove.trigger('mouseenter')
+												}
+												$(this).off('mousemove');
+												setTimeout(function () {                             
+													fMove = false
+												}, 50)
+											})
+											return false;
+										})
+										.on('click', function () {
+											if (fMove) {
+												return false
+											}
+										});
+									} else {
+										strWrap.addClass('no_drag');
+									};
+								}
+							} else {
+								strWrap.addClass('str_static');
+							}
+						};
+					};
+					
+					
+					
+					
+				}
+				if (p.xml) {
+					$.ajax({
+						url: p.xml,
+						dataType: "xml",
+						success: function (xml) {
+							var xmlTextEl = $(xml).find('text');
+							var xmlTextLength = xmlTextEl.length;
+							for(var i = 0; i < xmlTextLength; i++){
+								var xmlElActive = xmlTextEl.eq(i);
+								var xmlElContent = xmlElActive.text();
+								var xmlItemEl = $('<span>').text(xmlElContent).appendTo(strWrap);
+								
+								if(p.direction == 'left' || p.direction == 'right'){
+									xmlItemEl.css({display:'inline-block',textAlign:'right'});	
+									if(i > 0){
+										xmlItemEl.css({width:strWrap.width()+xmlItemEl.width()});	
+									}
+								}
+								if(p.direction == 'down' || p.direction == 'up'){
+									xmlItemEl.css({display:'block',textAlign:'left'});	
+										if(i > 0){
+											xmlItemEl.css({paddingTop:strWrap.height()});
+										}
+								}
+								
+							}
+							code();
+						}
+					});
+				} else {
+					code();
+				}
+				strWrap.data({
+					ini:code,
+					startheight: startHeight	
+				})
+				
+				
+				
+				
+			});
+		},
+		update: function () {
+			var el = $(this);
+			var str_origin = $('.str_origin',el);
+			var str_move_clone = $('.str_move_clone',el);
+			str_origin.stop(true);
+			str_move_clone.remove();
+			el.data('ini')();
+		},
+		destroy: function () {
+			
+			var el = $(this);
+			var elMove = $('.str_move',el);
+			var startHeight = el.data('startheight');
+			
+			$('.str_move_clone',el).remove();
+			el.off('mouseenter');
+			el.off('mousedown');
+			el.off('mouseup');
+			el.off('mouseleave');
+			el.off('mousemove');
+			el.removeClass('noStop').removeClass('str_vertical').removeClass('str_active').removeClass('no_drag').removeClass('str_static').removeClass('str_right').removeClass('str_down');
+			
+			var elStyle = el.attr('style'); 
+			if(elStyle){
+				var styleArr = elStyle.split(';');
+				for(var i=0; i < styleArr.length; i++){
+					var str = $.trim(styleArr[i]);
+					var tested =  str.search(/^height/g);
+					if(tested != -1){
+						styleArr[i] = '';	
+					}
+				}
+				var newArr = styleArr.join(';');
+				var newStyle =  newArr.replace(/;+/g,';')
+			
+				if(newStyle == ';'){
+					el.removeAttr('style');	
+				}else{
+					el.attr('style',newStyle);	
+				}
+				
+				if(startHeight){
+					el.css({height:startHeight})	
+				}
+			}
+			elMove.stop(true);
+
+			if(elMove.length){
+				var context = elMove.html();
+				elMove.remove();
+				el.html(context);
+			}
+	
+		},
+		pause: function(){	
+			var el = $(this);
+			var elMove = $('.str_move',el);
+			elMove.stop(true);
+		}, 
+		play: function(){
+			var el = $(this);
+			$(this).off('mousemove');
+			el.data('moveF')();	
+		}
+		
+	};
+	$.fn.liMarquee = function (method) {
+		if (methods[method]) {
+			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+		} else if (typeof method === 'object' || !method) {
+			return methods.init.apply(this, arguments);
+		} else {
+			$.error('Метод ' + method + ' в jQuery.liMarquee не существует');
+		}
+	};
+})(jQuery);

+ 92 - 0
static/js/lib.js

@@ -0,0 +1,92 @@
+
+// 替换多余的地名
+function r_replace_place(name) {
+
+    name = name.replace("省","")
+    if (name[0] != "市") name = name.replace("市","")
+    if (name[0] != "区") name = name.replace("区","")
+
+    name = name.replace("县","")
+    name = name.replace("自治区","")
+    name = name.replace("自治州","")
+    name = name.replace("维吾尔","")
+    name = name.replace("特别行政区","")
+    name = name.replace("汉族","")
+    name = name.replace("蒙古族","")
+    name = name.replace("回族","")
+    name = name.replace("藏族","")
+    name = name.replace("维吾尔族","")
+    name = name.replace("苗族","")
+    name = name.replace("彝族","")
+    name = name.replace("壮族","")
+    name = name.replace("布依族","")
+    name = name.replace("朝鲜族","")
+    name = name.replace("满族","")
+    name = name.replace("侗族","")
+    name = name.replace("瑶族","")
+    name = name.replace("白族","")
+    name = name.replace("土家族","")
+    name = name.replace("哈尼族","")
+    name = name.replace("哈萨克族","")
+    name = name.replace("傣族","")
+    name = name.replace("黎族","")
+    name = name.replace("傈僳族","")
+    name = name.replace("佤族","")
+    name = name.replace("畲族","")
+    name = name.replace("高山族","")
+    name = name.replace("拉祜族","")
+    name = name.replace("水族","")
+    name = name.replace("东乡族","")
+    name = name.replace("纳西族","")
+    name = name.replace("景颇族","")
+    name = name.replace("柯尔克孜","")
+    name = name.replace("土族","")
+    name = name.replace("达斡尔族","")
+    name = name.replace("仫佬族","")
+    name = name.replace("羌族","")
+    name = name.replace("布朗族","")
+    name = name.replace("撒拉族","")
+    name = name.replace("毛南族","")
+    name = name.replace("仡佬族","")
+    name = name.replace("锡伯族","")
+    name = name.replace("阿昌族","")
+    name = name.replace("普米族","")
+    name = name.replace("塔吉克族","")
+    name = name.replace("怒族","")
+    name = name.replace("乌孜别克","")
+    name = name.replace("俄罗斯族","")
+    name = name.replace("鄂温克族","")
+    name = name.replace("德昂族","")
+    name = name.replace("保安族","")
+    name = name.replace("裕固族","")
+    name = name.replace("京族","")
+    name = name.replace("塔塔尔族","")
+    name = name.replace("独龙族","")
+    name = name.replace("鄂伦春族","")
+    name = name.replace("赫哲族","")
+    name = name.replace("门巴族","")
+    name = name.replace("珞巴族","")
+    name = name.replace("基诺族","")
+    name = name.replace("诸岛","")
+
+    return name
+}
+
+//获取GET
+function getPar(par){
+    //获取当前URL
+    var local_url = document.location.href;
+    //获取要取得的get参数位置
+    var get = local_url.indexOf(par +"=");
+    if(get == -1){
+        return false;
+    }
+    //截取字符串
+    var get_par = local_url.slice(par.length + get + 1);
+    //判断截取后的字符串是否还有其他get参数
+    var nextPar = get_par.indexOf("&");
+    if(nextPar != -1){
+        get_par = get_par.slice(0, nextPar);
+    }
+    return get_par;
+}

File diff suppressed because it is too large
+ 7 - 0
static/js/map.js


+ 21 - 0
static/js/showTime.js

@@ -0,0 +1,21 @@
+var t = null;
+t = setTimeout(time, 1000);//開始运行
+function time() {
+    clearTimeout(t);//清除定时器
+    dt = new Date();
+    var y = dt.getFullYear();
+    var mt = dt.getMonth() + 1;
+    var day = dt.getDate();
+    var h = dt.getHours();//获取时
+    var m = dt.getMinutes();//获取分
+    var s = dt.getSeconds();//获取秒
+    var t = null;
+    document.getElementById("showTime").innerHTML = y + "/" + Appendzero(mt) + "/" + Appendzero(day) + " " + Appendzero(h) + ":" + Appendzero(m) + ":" + Appendzero(s) + "";
+
+    function Appendzero(obj) {
+        if (obj < 10) return "0" + "" + obj;
+        else return obj;
+    }
+
+    t = setTimeout(time, 1000); //设定定时器,循环运行
+}

+ 354 - 0
static/js/trail.js

@@ -0,0 +1,354 @@
+window._AMapSecurityConfig = {
+    securityJsCode:"14720ba5bb6ba2553facb5fc6b6777c2",
+}
+//设备图标
+const online = 'https://iot3d-oss.baozhida.cn/UpImage/1681698375d21af1db-3fd2-4032-b7cb-8ee8ac5f6cab.png';
+const offline = 'https://iot3d-oss.baozhida.cn/UpImage/168169835869ac506d-f228-46a4-8878-9969b95e6424.png';
+const danger = 'https://iot3d-oss.baozhida.cn/UpImage/1681698340c67c3a5a-7cf6-4fbf-be29-7ffae9d31ec1.png';
+//设备图标
+const online_x = 'https://iot3d-oss.baozhida.cn/UpImage/箱子-绿.png';
+const offline_x = 'https://iot3d-oss.baozhida.cn/UpImage/箱子-灰.png';
+const danger_x = 'https://iot3d-oss.baozhida.cn/UpImage/箱子-红.png';
+//地图标注图标
+const start = 'https://iot3d-oss.baozhida.cn/UpImage/16816984598b22098e-272f-48f7-a209-8bdc9fb46744.png';
+const pass = 'https://iot3d-oss.baozhida.cn/UpImage/16816984821af72d4e-3be8-46c4-8e58-5351b49b5153.png';
+const end = 'https://iot3d-oss.baozhida.cn/UpImage/16816984681ddcd8f0-a60d-455d-b455-42ac83535694.png';
+
+const imageUrlMap = new Map();
+imageUrlMap.set(0, offline);
+imageUrlMap.set(1, online);
+imageUrlMap.set(2, danger);
+imageUrlMap.set(3, offline_x);
+imageUrlMap.set(4, online_x);
+imageUrlMap.set(5, danger_x);
+
+
+$(window).load(function () {
+    InitMap()
+});
+
+var trail_map = null
+// 高德地图轨迹
+function InitMap() {
+    if(trail_map != null) return
+    console.log("执行了初始化")
+    AMapLoader.load({
+        key: "51515b72616c71999b6607314e553953",       // 申请好的Web端开发者Key,首次调用 load 时必填
+        version: "2.0",                 // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+    }).then((AMap)=>{
+        trail_map = new AMap.Map("v_trail", {
+            resizeEnable: true,
+            // center: [ [{center}] ],
+            // zoom: [{zoom}],
+            features: ['bg', 'road', 'building', 'point'], // 设置地图显示要素(Features)  区域面(bg)  道路(road)  建筑物(building)  标注(point)
+        });
+        trail_map.setMapStyle("amap://styles/darkblue");
+        // getCompany_zhi()
+        //单击地图就清除infoWindow
+        AMap.Event.addListener(trail_map, 'click', () => {
+            trail_map.clearInfoWindow();
+        });
+        //双击清除所有轨迹
+        AMap.Event.addListener(trail_map, 'dblclick', () => {
+            console.log('双击了地图,删除轨迹!');
+            trail_map.remove(listMarker);
+            trail_map.remove(polyLine);
+        });
+    }).catch((e)=>{
+        console.error(e);  //加载错误提示
+    });
+
+
+}
+GPS_fruits = new Map()
+// 渲染所有点
+function f_v_trail() {
+    // 创建包含4个节点的折线及文字标注
+    var path_gps = [
+        // new AMap.LngLat(116.368904,39.913423),
+        // new AMap.LngLat(116.398258,39.904600)
+    ];
+    for (var C_key in C_json.Device.DeviceList) {
+        Device_r = C_json.Device.DeviceList[C_key]
+        if (Device_r.T_Site.length > 2){
+            ps = Device_r.T_Site.split(',');
+            path_gps.push(new AMap.LngLat(Number.parseFloat(ps[0]),Number.parseFloat(ps[1])))
+        }
+
+    }
+    AMap.convertFrom(path_gps, 'gps', (status, result) => {
+        console.log("convertFrom:",result)
+        if (result.info === 'ok') {
+            let i_x = 0;
+            for(let i = 0; i < C_json.Device.DeviceList.length; i++) {
+                if (C_json.Device.DeviceList[i].T_Site.length > 2) {
+                    console.log("GPS_fruits SET",C_json.Device.DeviceList[i].T_Site, result.locations[i_x])
+                    GPS_fruits.set(C_json.Device.DeviceList[i].T_Site, result.locations[i_x]);
+                    i_x++
+                }
+            }
+            console.log("path_gps",path_gps.length," i_x:",i_x)
+
+            for (var C_key in C_json.Device.DeviceList) {
+                Device_r = C_json.Device.DeviceList[C_key]
+                if (Device_r.T_Site.length > 2) {
+                    AMapaddPoint(Device_r)  // 轨迹加载点
+                }
+            }
+            return;
+        }
+    });
+
+
+}
+
+// -------------
+const AMapaddPoint = (sensor) => {
+    console.log("AMapaddPoint:",sensor)
+    if(sensor.T_type < 200){
+        return
+    }
+    let state = sensor.T_monitor;
+    if (state == 1){
+        if (sensor.T_t > sensor.T_Tupper || sensor.T_rh > sensor.T_RHupper || sensor.T_t < sensor.T_Tlower || sensor.T_rh < sensor.T_RHlower) {
+            state = 2;
+        }
+    }
+    if(sensor.T_type == 200 ||sensor.T_type == 210 || sensor.T_type == 220 || sensor.T_type == 230){
+        state+=3
+    }
+
+    //坐标转换 start
+    const convertPosition = async (position) => {
+        if(GPS_fruits.has(position)){
+            console.log("GPS_fruits",position,GPS_fruits.get(position))
+            return GPS_fruits.get(position)
+        }
+        const ps = position.split(',');
+        return new Promise((resolve, reject) => {
+            AMap.convertFrom([Number.parseFloat(ps[0]), Number.parseFloat(ps[1])], 'gps', (status, result) => {
+                console.log("convertFrom:",result.info)
+                if (result.info === 'ok') {
+                    GPS_fruits.set(k_, result.locations[0]);
+                    resolve(result.locations[0]);
+                    return;
+                }
+            });
+
+
+        });
+    };
+
+    //坐标转换, 添加标记点 start
+    convertPosition(sensor.T_Site).then((v) => {
+        const marker = mapAddPoint(sensor.T_sn, [v.lng, v.lat], state);
+        // console.log("marker:",sensor.T_sn,sensor.T_name, marker)
+        addClickShowTrack(sensor.T_sn,sensor.T_name, marker);
+        trail_map.add(marker);
+        trail_map.setFitView(null, false, [50, 50, 600, 600]);
+    });
+    //添加坐标en
+
+    //坐标转换 end
+};
+
+//坐标转换 end
+//添加point start
+function mapAddPoint(sn, ps, state)  {
+    //@ts-ignore
+    const option = {
+        icon: new AMap.Icon({
+            imageSize: [40, 40],
+            image: imageUrlMap.get(state) || offline,
+            size: new AMap.Size(40, 40)
+        }),
+        position: ps
+    };
+    const marker = new AMap.Marker(option);
+    return marker;
+};
+//添加point end
+function addClickShowTrack(sn,T_name, marker)  {
+    //@ts-ignore
+    AMap.Event.addListener(marker, 'click', () => {
+        getDeviceTaskList(sn).then((resp) => {
+            const list = resp.Data;
+            let content = `
+                <div style="font-size: 15px;padding: 10px; border-radius: 6px;background-color: white; position: relative;">
+                    <div style="position: absolute;left:50%;bottom: 0;background-color:white;padding: 10px;transform: translate(-50%,50%) rotate(-45deg);"></div>`;
+            content += `<p style="text-align: center;margin: 15px;/*! padding: 6px; */border: solid 1px #f00;border-radius: 6px;margin-top: 0px;color: #f00;border-left-width: 0px;border-right-width: 0px;border-top-width: 0px;border-bottom-width: 2px;padding-bottom: 5px;" >`+T_name+`</p>`;
+            if (list.length == 0){
+                content += `<p style="margin: 15px;padding: 6px;border: solid 1px #eeeeee;border-radius: 6px;" >没有找到任务</p>`;
+            }else {
+                Array.from(list).forEach(v => {
+                    if (v === "0001-01-01 00:00:00"){
+                        v = "现在"
+                    }
+                    content += `<p style="margin: 15px;padding: 6px;border: solid 1px #eeeeee;border-radius: 6px;"    onclick="loadingTrack('${sn}', ['${v.T_Ut_start}','${ v.T_Ut_end}']);">${v.T_Ut_start} ~ ${v.T_Ut_end}</p>`;
+                });
+            }
+            // Array.from(list).forEach(v => {
+            //     content += `<p style="margin: 15px;padding: 6px;border: solid 1px #eeeeee;border-radius: 6px;"    onclick="loadingTrack(${sn}, ['${v.T_Ut_start}','${ v.T_Ut_end}']);">${v.T_Ut_start} ~ ${v.T_Ut_end}</p>`;
+            // });
+
+            content += '</div>';
+            const infoWindow = new AMap.InfoWindow({
+                isCustom: true,
+                content: content,
+                offset: new AMap.Pixel(20, -15)
+            });
+            const ps = marker.getPosition();
+            infoWindow.open(trail_map, [ps.lng, ps.lat]);
+            console.log(infoWindow,ps, marker);
+        });
+    });
+};
+//# sourceMappingURL=pointHandle.js.map
+
+
+
+const listMarker = [];
+const listPolyLinePath = [];
+let polyLine;
+//加载track start
+function loadingTrack(sn, timeRange) {
+    console.log(sn, "  轨迹显示  ",timeRange);
+    //去除其他显示
+    if (listMarker.length !== 0)
+        trail_map.remove(listMarker);
+    if (polyLine !== undefined)
+        trail_map.remove(polyLine);
+    listPolyLinePath.length = 0;
+    listMarker.length = 0;
+    console.log('执行到获取数据了')
+    getDeviceSensorData(sn, timeRange).then((resp) => {
+        const list = resp.Data;
+        console.log("响应信息:",list)
+        if (list == null || list.length === 0) {
+            alert("数据正在上传...!")
+            return;
+        }
+        //去除开始和结束
+        Array.from(list.slice(1, list.length - 1)).forEach((v) => {
+            const d = trackPoint(v, pass, trail_map);
+            console.log("d:",d)
+            if(d.lnglat.kT != 0) {
+                listMarker.unshift(d.marker);
+                listPolyLinePath.unshift(d.lnglat);
+            }
+
+        });
+        // //去除开始和结束
+        // Array.from(list.slice(1, list.length - 1)).forEach((v) => {
+        //     const d = trackPoint(v, pass, trail_map);
+        //     console.log("d:",d)
+        //     if(d.lnglat.kT != 0) {
+        //         listMarker.unshift(d.marker);
+        //         listPolyLinePath.unshift(d.lnglat);
+        //     }
+        //
+        // });
+        //开始和结束
+        const endData = trackPoint(list[list.length - 1], end, trail_map);
+        const startData = trackPoint(list[0], start, trail_map);
+        if(endData.lnglat.kT != 0) {
+            listMarker.push(endData.marker);
+            listPolyLinePath.push(endData.lnglat);
+        }
+        if(startData.lnglat.kT != 0) {
+            listMarker.unshift(startData.marker);
+            // listPolyLinePath.unshift(startData.lnglat);
+        }
+        trail_map.add(listMarker);
+        console.log("listPolyLinePath:",listPolyLinePath)
+        //添加轨迹
+        polyLine = new AMap.Polyline({
+            path: listPolyLinePath,
+            borderWeight: 1,
+            strokeColor: 'skyblue',
+            lineJoin: 'round'
+        });
+        trail_map.add(polyLine);
+    });
+    console.log('loadingTrack 执行完了')
+};
+//加载track end
+function trackPoint(v, img, map) {
+    const ps = v.T_site.split(',');
+    const lnglat = new AMap.LngLat(Number.parseFloat(ps[0]), Number.parseFloat(ps[1]));
+
+
+    const option = {
+        icon: new AMap.Icon({
+            imageSize: [40, 40],
+            image: img,
+            size: [40, 40],
+        }),
+        position: lnglat,
+        offset: new AMap.Pixel(-20, -30),
+    };
+    const marker = new AMap.Marker(option);
+    //@ts-ignore
+    AMap.Event.addListener(marker, 'click', () => {
+        const infoWindow = new AMap.InfoWindow({
+            isCustom: true,
+            content: getDeviceSensorDataInfo(v),
+            offset: new AMap.Pixel(-3, -55),
+        });
+        infoWindow.open(map, [lnglat.lng, lnglat.lat]);
+    });
+    return {marker: marker, lnglat: lnglat};
+};
+function getDeviceSensorDataInfo(v) {
+    let content = `
+                <div style="font-size: 15px;padding: 10px; border-radius: 6px;background-color: white; position: relative;">
+                    <div style="position: absolute;left:50%;bottom: 0;background-color:white;padding: 10px;transform: translate(-50%,50%) rotate(-45deg);"></div>`;
+    return content+`
+                        <div class="border rounded shadow bg-white p-2 text-dark">
+                            <p class="m-1">设备名称:${v.T_name}  </p>
+                            <p class="m-1">当前温度:${v.T_t} <span class="m-1"></span> 当前湿度: ${v.T_rh}</p>
+                            <p class="m-1">温度上下限:${v.T_Tlower} ~ ${v.T_Tupper} <span class="m-1"></span> 湿度上下限:${v.T_RHlower} ~ ${v.T_RHupper}</p>
+                            <p class="m-1">记录时间:${v.T_time}</p>
+                        </div>
+                   </div>
+    `;
+};
+//# sourceMappingURL=tarckHandle.js.map
+
+//获取设备任务列表
+function getDeviceTaskList (sn){
+    return new Promise((resolve, reject) => {
+        $.ajax({
+            async:false,
+            method:"POST",
+            url: "./DeviceTask_List",
+            data: {
+                T_sn: sn,
+            },
+            success: function (rlt) {
+                console.log(rlt)
+                resolve(rlt)
+            }
+        })
+    })
+}
+
+//获取设备探头数据
+function getDeviceSensorData(sn,timeRanges) {
+    return new Promise((resolve, reject)=>{
+        $.ajax(({
+            async:false,
+            method: "POST",
+            url: "./DeviceData_List",
+            data:{
+                Time_start: timeRanges[0],
+                Time_end: timeRanges[1],
+                T_sn: sn,
+            },
+            success: function (rlt){
+                console.log(rlt)
+                resolve(rlt)
+            }
+        }))
+    })
+}

+ 387 - 0
static/js/v3d.js

@@ -0,0 +1,387 @@
+var Vcss2d_show = 1 ;  // 0 不显示 1 圆点    2显示
+var T_sn_list = []  //订阅 SN
+$(window).load(function () {
+    $("#v_modes_2").hide();
+    $("#v_modes_1").show();
+})
+
+
+function f_v3d_loadProject(id) {
+    iot3d.loadProject(id,true,function () {
+        // iot3d.BackgroundScene()
+        iot3d.GetRenderer().setClearColor(0x000000,0)
+        f_louceng()
+        setTimeout(function(){
+
+            f_v_v3d()
+
+        },3000);
+
+    })  // 加载项目    ProjectID:项目ID,  load_is:是否立即渲染
+    // 鼠标在 模型内双击
+    iot3d.Model_onDblclick(function (Model) {
+        console.log("onDblclick_Model!!!:", Model)
+        f_DeviceonDblclick(Model.uuid)
+        // // 触发后 聚焦显示 设备名称
+        // setTimeout(function(){
+        //     f_v_v3d()
+        //     // 延时后 正常显示圆点
+        //     setTimeout(function(){
+        //         Vcss2d_show = 1
+        //         f_v_v3d()
+        //     },10000);
+        // },2000);
+    })
+}
+
+f_louceng_show_x = ""
+function f_louceng_show(x){
+
+    if(x == null){
+        x = f_louceng_show_x
+    }else {
+        f_louceng_show_x = x
+    }
+
+    if (x.length == 0 ){
+        c_rlist = iot3d.GetScene().children
+        for (var C_key in c_rlist) {
+            c_rlist[C_key].visible = true
+            $(".css_2d_"+c_rlist[C_key].uuid).show();
+        }
+    }else {
+        // 隐藏其他层
+        c_rlist = iot3d.GetScene().children
+        for (var C_key in c_rlist) {
+
+            if (c_rlist[C_key].name.includes("层") || c_rlist[C_key].name.includes("楼") || c_rlist[C_key].name.includes("库")) {
+                c_rlist[C_key].visible = false
+                $(".css_2d_"+c_rlist[C_key].uuid).hide();
+            }
+        }
+        iot3d.GetModelByUuid(x).visible = true
+        $(".css_2d_"+x).show();
+    }
+
+}
+
+// 渲染楼层
+function f_louceng() {
+    c_rlist = iot3d.GetScene().children
+    for (var C_key in c_rlist) {
+        if (c_rlist[C_key].name.includes("层") || c_rlist[C_key].name.includes("楼") || c_rlist[C_key].name.includes("库")) {
+            $("#div_louceng").append("<div class=\"louceng\" onclick=\"f_louceng_show(\'"+c_rlist[C_key].uuid+"\')\">\n" +
+                "                    <img src=\"static/images/层.png\" style=\"width: 50px;height: 50px;margin-top: -16px\">\n" +
+                "                    <p style=\"font-size: .2rem;color: #46b8ff;padding-bottom: .2rem;\">"+c_rlist[C_key].name+"</p>\n" +
+                "                </div>")
+        }
+
+
+    }
+}
+
+function f_v_v3d() {
+
+    for (var C_key in C_json.Device.DeviceList) {
+        Device_r = C_json.Device.DeviceList[C_key]
+
+        if(Device_r.T_3dview.length > 0){
+            // pubSub.publish(data[i].T_3dview, data[i]);
+            // console.log("c:",Device_r.T_3dview)
+            Group_Object_Control(Device_r.T_3dview, Device_r)
+
+        }
+    }
+
+    f_louceng_show(null)
+
+}
+// 修改设备阅览方式
+function f_Vcss2d(x) {
+    Vcss2d_show = x;
+    f_v_v3d();// 刷新页面
+
+    if(x == 1){
+        $("#v_modes_2").hide();
+        $("#v_modes_1").show();
+    }
+    if(x == 2){
+        $("#v_modes_1").hide();
+        $("#v_modes_2").show();
+    }
+
+    f_louceng_show('')
+}
+var xtime = 0
+var Object_Control_Time =new Map();
+function Group_Object_Control(uuid,json_s) {
+    if(iot3d == null) return;
+
+    let Ob = iot3d.GetModelByUuid(uuid)
+    if (Ob == undefined) return
+
+    console.log("uuid:",Ob)
+    let css2d = Ob.children[1]
+    let dt = Ob.children[2]
+    let dh = Ob.children[3]
+    // console.log("dt:",dt)
+    let dled = Ob.children[4].children[8].children[0]
+    // console.log("dled:",dled)
+    if(Object_Control_Time.has(uuid)){
+        // 关闭定时器
+        clearInterval(Object_Control_Time.get(uuid));
+        Object_Control_Time.delete(uuid);
+    }
+
+    let LED_color = f_panduan(json_s)
+
+    // if(f_panduan(json_s) != 1){
+    //     LED_color = 2
+    // }
+
+    // 定时器 -控制灯
+    let LED_f = true
+    Object_Control_Time.set(uuid,setInterval(function () {
+        if(LED_f){
+            LED_f = false
+        }else {
+            LED_f = true
+        }
+
+        // 模型 LED灯
+        if (LED_f){
+            switch (LED_color) {
+                case 1:  // 绿灯  正常
+                    dled.material.color.r = 0
+                    dled.material.color.g = 1
+                    dled.material.color.b = 0
+                    break
+                case 2:  // 红灯  产品
+                    dled.material.color.r = 1
+                    dled.material.color.g = 0
+                    dled.material.color.b = 0
+                    break
+                case 0:  // 黄灯  掉线
+                	dled.material.color.r = (1/255 * 227)
+                	dled.material.color.g = (1/255 * 227)
+                	dled.material.color.b = (1/255 * 227)
+                	break
+            }
+        }else {
+            // LED   白色灯
+            dled.material.color.r = 1
+            dled.material.color.g = 1
+            dled.material.color.b = 1
+        }
+
+
+        // css2d
+        switch (Vcss2d_show) {
+            case 0:
+                css2d.visible  = false
+                break;
+            case 1:
+                if (LED_f){
+                    css2d.visible  = true
+                }else {
+                    css2d.visible  = false
+                }
+                break;
+            case 2:
+                css2d.visible  = true
+                break;
+        }
+
+
+        iot3d.Render() // 刷新
+    }, 300));
+    // CSS2D
+    css2d.visible  = true
+
+    parent_m =f_search_parent(Ob)
+
+    switch (Vcss2d_show) {
+        case 0:
+        case 1:
+            switch (LED_color) {
+                case 1:  // 绿灯  正常
+                    css2d.Up_Html("<div class='panel_y css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\"  style='box-shadow: 0px 0px 10px #10ef00;background-color: #10ef00;'></div>")
+                    break
+                case 2:  // 红灯  产品
+                    css2d.Up_Html("<div class='panel_y css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\" style='box-shadow: 0px 0px 10px #ef0000;background-color: #ef0000;'></div>")
+                    break
+                case 0:  // 红灯  产品
+                    css2d.Up_Html("<div class='panel_y css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\" style='box-shadow: 0px 0px 10px #e3e3e3;background-color: rgba(0,0,0,0.26);'></div>")
+                    break
+            }
+            break;
+        case 2:
+            switch (LED_color) {
+                case 1:  // 绿灯  正常
+                    css2d.Up_Html("<div class='panel_s css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\"   style='background-color: #09ff18;'><div><span id='t'>"+json_s.T_name+"</span></div> <div>温度:<span id='t'>"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"</span></div><div>湿度:<span id='h'>"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"</span></div></div>")
+                    break
+                case 2:  // 红灯  产品
+                    css2d.Up_Html("<div class='panel_s css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\"   style='background-color: #ef0000;'><div><span id='t'>"+json_s.T_name+"</span></div><div>温度:<span id='t'>"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"</span></div><div>湿度:<span id='h'>"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"</span></div></div>")
+                    break
+                case 0:  // 红灯  产品
+                    css2d.Up_Html("<div class='panel_s css_2d_"+parent_m.uuid+"' onclick=\"f_DeviceonDblclick(\'"+ json_s.T_3dview +"\')\"   style='background-color: #e3e3e3;'><div><span id='t'>"+json_s.T_name+"</span></div><div>温度:<span id='t'>"+json_s.T_DeviceSensorData.T_t.toFixed(1)+"</span></div><div>湿度:<span id='h'>"+json_s.T_DeviceSensorData.T_rh.toFixed(1)+"</span></div></div>")
+                    break
+            }
+            break;
+    }
+    // console.log("json_s:",dt,json_s.T_t,json_s.T_rh)
+    dt.Up_Text(""+json_s.T_DeviceSensorData.T_t.toFixed(1))
+    dh.Up_Text(""+json_s.T_DeviceSensorData.T_rh.toFixed(1))
+
+}
+
+// 聚焦设备
+function f_DeviceonDblclick(uuid) {
+
+    Patrol_mode_is = true
+    // f_Patrol_mode()
+    Display_mode_is = 0
+    $("#Display_mode").html("关闭透视")
+    if(uuid == undefined) alert("设备没有绑定模型");
+    if(uuid.length > 0){
+        // 由于 可能开启了 巡逻,这里需要加延时,不然会抽搐
+        setTimeout(function(){
+            iot3d.startFocus(iot3d.GetModelByUuid(uuid),2)
+            // // 触发后 聚焦显示 设备名称
+            // setTimeout(function(){
+            //     Vcss2d_show = 2
+            //     f_v_v3d()
+            //     // 延时后 正常显示圆点
+            //     setTimeout(function(){
+            //         Vcss2d_show = 1
+            //         f_v_v3d()
+            //     },10000);
+            // },2000);
+
+        },500);
+
+    }
+}
+function dateChangeFormat(format, date) {
+    date = new Date(date);
+    const dataItem = {
+        'Y+': date.getFullYear().toString(),
+        'm+': (date.getMonth() + 1).toString(),
+        'd+': date.getDate().toString(),
+        'H+': date.getHours().toString(),
+        'M+': date.getMinutes().toString(),
+        'S+': date.getSeconds().toString(),
+    };
+    Object.keys(dataItem).forEach((item) => {
+        const ret = new RegExp(`(${item})`).exec(format);
+        if (ret) {
+            format = format.replace(ret[1], ret[1].length === 1 ? dataItem[item] : dataItem[item].padStart(ret[1].length, '0'));
+        }
+    });
+    return format;
+}
+// 时间比较
+function dateChangeFormat_xiangcha( date) {
+    // console.log("===========")
+    a_t = (new Date(dateChangeFormat('YYYY-mm-dd HH:MM:SS', date)).getTime()/1000)
+    b_t = ((new Date()) / 1000)
+
+    // console.log("a_t:",a_t,"b_t:",b_t,">",b_t - a_t)
+    return  parseInt(b_t - a_t) ;
+}
+
+
+// 判断状态   返回 0离线  1正常 2超标
+function f_panduan(Ds) {
+
+    // console.log("Ds:",Ds)
+    // 初始化状态
+    src_img = "记录.png"
+
+    // if(Ds.T_sn == "YD062289057646669" || Ds.T_sn == "KF868131063451706" ){
+    //     var myDate = new Date();
+    //     timexx= myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDate()
+    //     if(!timeX.isDuringDate(timexx+' 05:00', timexx+' 17:00')){
+    //         src_img = "离线.png"
+    //         break;
+    //     }
+    //
+    // }
+    if(Ds.T_DeviceSensorParameter.T_free == 1){
+        // 传感器 超标
+        console.log("闲置状态 ",Ds.T_id);
+        return 0
+    }
+    // 是否 离线
+    // if(Ds.T_online > 1)  {
+    //     // 传感器超时
+    //     // src_img = "离线-线.png"
+    //     // if(Ds.T_sn.indexOf("YD") != -1){
+    //     // 	src_img = "离线.png"
+    //     // }
+    //     return 0
+    // }
+    if(Ds.T_online != 1 && Ds.T_online_s != 1 ){
+        console.log("离线:",Ds.T_online , Ds.T_online_s)
+        return 0
+    }
+    if(Ds.T_online != 1 && Ds.T_online_s != 1 ){
+        console.log("离线:",Ds.T_online , Ds.T_online_s)
+        return 0
+    }
+    // 传感器正常
+    // if(Ds.T_sn.indexOf("YD") != -1){
+    // 	if(Ds.T_monitor == 0 ){
+    // 		src_img = "停止.png"
+    // 	}
+    // 	return 0
+    // }
+    // console.log("超标1:");
+    // 是否 超时
+    let outtime = 60 * 40
+    if( dateChangeFormat_xiangcha(Ds.T_DeviceSensorData.T_time) > outtime)  {
+        // 传感器超时
+        // src_img = "离线-线.png"
+        // if(Ds.T_sn.indexOf("YD") != -1){
+        // 	src_img = "离线.png"
+        // }
+        console.log("超时:",Ds.T_DeviceSensorData.T_time,dateChangeFormat_xiangcha(Ds.T_DeviceSensorData.T_time),Ds)
+        return 0
+    }
+    // console.log("超标1:",Ds.T_t , Ds.T_Tupper,Ds.T_t >=  Ds.T_Tupper);
+
+    // 是否 超标
+    if (( Ds.T_DeviceSensorParameter.T_Tlower > Ds.T_DeviceSensorData.T_t) || ( Ds.T_DeviceSensorData.T_t > Ds.T_DeviceSensorParameter.T_Tupper)){
+
+        console.log("温度超标", C_b.T_DeviceSensorParameter.T_Tlower , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorData.T_t , C_b.T_DeviceSensorParameter.T_Tupper)
+        return 2
+    }
+
+    if (( Ds.T_DeviceSensorParameter.T_RHlower > Ds.T_DeviceSensorData.T_rh) || ( Ds.T_DeviceSensorData.T_rh > Ds.T_DeviceSensorParameter.T_RHupper)){
+
+        console.log("湿度超标", C_b.T_DeviceSensorParameter.T_RHlower , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorData.T_rh , C_b.T_DeviceSensorParameter.T_RHupper)
+        return 2
+    }
+
+
+    // console.log("f_panduan:",Ds,caobiao)
+    // if(Ds.T_id == 1){
+    // 	console.log("Ds.T_id == 1:",Ds, caobiao);
+    // }
+    // console.log("超标2:",caobiao);
+    // if(Ds.T_DeviceSensorParameter.T_free == 0){
+    //     // 传感器 超标
+    //     // console.log("超标3:",Ds.T_id);
+    //     return 2
+    // }
+
+    return 1
+}
+
+
+function f_search_parent(x) {
+    if(x.parent.name == "Scene"){
+        return x
+    }
+    return f_search_parent(x.parent)
+}

+ 999 - 0
static/js/view.js

@@ -0,0 +1,999 @@
+
+$(window).load(function () {
+    $(".loading").fadeOut()
+
+    // 返回上一级 视图处理
+    C_keys_list = C_keys.split(",")
+    if (C_keys_list.length <= 1){
+        $("#v_back").hide();
+    }else {
+        $("#v_back").show();
+    }
+
+})
+
+/****/
+$(document).ready(function () {
+    var whei = $(window).width()
+    $("html").css({fontSize: whei / 20})
+    $(window).resize(function () {
+        var whei = $(window).width()
+        $("html").css({fontSize: whei / 20})
+    });
+});
+
+// 返回
+function f_v_back() {
+    C_keys_list = C_keys.split(",")
+    C_keys_list.pop()
+    document.location.href = "?T_key="+C_keys_list.join(",")
+}
+
+var V_kf_yd = 1
+function f_kf_open() {
+    $("#map_kf").css("opacity", 1);
+    $("#v_trail").css("opacity", 0);
+    $("#R_KF_Column").show();
+    $("#R_YD_Column").hide();
+    V_kf_yd = 1
+    f_view()
+}
+
+function f_yd_open() {
+    $("#map_kf").css("opacity", 0);
+    $("#v_trail").css("opacity", 1);
+    $("#R_KF_Column").hide();
+    $("#R_YD_Column").show();
+    V_kf_yd = 2
+    f_view()
+}
+
+// 视图数据改变
+function f_view() {
+    // 地图加载
+    if (V_kf_yd == 1) {
+        f_v_map();
+    }
+    // 轨迹加载
+    if (C_json.Device.T_移动总数 > 0 && V_kf_yd == 2) {
+        f_v_trail()
+    }
+
+    // 屏蔽按钮
+    if(C_json.Device.T_库房总数 == 0){
+        $("#v_open_KF").hide();
+    }
+    if(C_json.Device.T_移动总数 == 0){
+        $("#v_open_YD").hide();
+    }
+
+    $("#T_公司名称").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+    $("title").html(C_json.Company_name + "-冷链药品质量安全智慧中台")
+
+    // 设备类
+    $("#T_终端总数").html(C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+    $("#T_库房总数").html(C_json.Device.T_库房总数)
+    $("#T_移动总数").html(C_json.Device.T_移动总数)
+
+    $("#T_移动离线总数").html(C_json.Device.T_移动离线总数)
+    $("#T_移动监控总数").html(C_json.Device.T_移动监控总数)
+
+    // 报警类
+    // $("#T_库房报警总数").html(C_json.Warning.T_库房报警总数)
+    $("#T_库房未处理总数").html(C_json.Warning.T_库房未处理总数)
+    $("#T_库房设备报警数_今天").html(C_json.Warning.T_库房设备报警数_今天)
+    $("#T_库房报警设备数_今天").html(C_json.Warning.T_库房报警设备数_今天)
+    // $("#T_库房设备报警数_昨天").html(C_json.Warning.T_库房设备报警数_昨天)
+    // $("#T_库房设备报警数_近7天").html(C_json.Warning.T_库房设备报警数_近7天)
+    // $("#T_库房设备报警数_本月").html(C_json.Warning.T_库房设备报警数_本月)
+    // $("#T_库房设备报警数_上一月").html(C_json.Warning.T_库房设备报警数_上一月)
+
+    // $("#T_移动警数总数").html(C_json.Warning.T_移动警数总数)
+    $("#T_移动未处理总数").html(C_json.Warning.T_移动未处理总数)
+    $("#T_移动设备报警数_今天").html(C_json.Warning.T_移动设备报警数_今天)
+    // $("#T_移动设备报警数_昨天").html(C_json.Warning.T_移动设备报警数_昨天)
+    // $("#T_移动设备报警数_近7天").html(C_json.Warning.T_移动设备报警数_近7天)
+    // $("#T_移动设备报警数_本月").html(C_json.Warning.T_移动设备报警数_本月)
+    // $("#T_移动设备报警数_上一月").html(C_json.Warning.T_移动设备报警数_上一月)
+
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数)
+        w_x_ *= 100
+    }
+    $("#T_今日库房报警率").html(w_x_.toFixed(1) + "%")
+
+
+    $("#T_今日报警总数").html(parseInt(C_json.Warning.T_库房设备报警数_今天) + parseInt(C_json.Warning.T_移动设备报警数_今天))
+    w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天) + parseInt(C_json.Warning.T_移动报警设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / (C_json.Device.T_库房总数 + C_json.Device.T_移动总数)
+        w_x_ *= 100
+    }
+    $("#T_今日报警率").html(w_x_.toFixed(1) + "%")
+    // $("#T_今日报警率").html(parseInt(w_x_) + "%")
+    $("#T_今日未处理总数").html(parseInt(C_json.Warning.T_库房未处理总数) + parseInt(C_json.Warning.T_移动未处理总数))
+
+    // 任务类
+    $("#T_任务总数_今天").html(C_json.Task.T_任务总数_今天)
+    // $("#T_任务总数_昨天").html(C_json.Task.T_任务总数_昨天)
+    // $("#T_任务总数_近7天").html(C_json.Task.T_任务总数_近7天)
+    // $("#T_任务总数_本月").html(C_json.Task.T_任务总数_本月)
+    // $("#T_任务总数_上一月").html(C_json.Task.T_任务总数_上一月)
+
+    $("#T_任务设备数_今天").html(C_json.Task.T_任务设备数_今天)
+    // $("#T_任务设备数_昨天").html(C_json.Task.T_任务设备数_昨天 )
+    // $("#T_任务设备数_近7天").html(C_json.Task.T_任务设备数_近7天)
+    // $("#T_任务设备数_本月").html(C_json.Task.T_任务设备数_本月 )
+    // $("#T_任务设备数_上一月").html(C_json.Task.T_任务设备数_上一月)
+
+    w_x_ = parseInt(C_json.Task.T_任务设备数_今天)
+    if (w_x_ != 0) {
+        w_x_ = w_x_ / C_json.Device.T_移动总数
+        w_x_ *= 100
+    }
+    $("#T_今日闲置设备").html(w_x_.toFixed(1) + "%")
+
+    // 中间 视图显示
+    if (V_kf_yd == 1) {
+        // 库房端
+        $("#T_C_1").html(f_Company_Next_公司下一级统计(C_json))// 公司下一级统计
+        $("#T_C_2").html(C_json.Warning.T_库房设备报警数_今天)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_库房报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_库房总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("公司/门店 数量")
+        $("#T_Cn_2").html("今日库房报警次数")
+        $("#T_Cn_3").html("今日库房报警率")
+
+    } else {
+        // 移动端
+        $("#T_C_1").html(f_Company_Next_公司下一级统计(C_json))// 公司下一级统计
+        $("#T_C_2").html(C_json.Device.T_移动监控总数)// 公司下一级统计
+        w_x_ = parseInt(C_json.Warning.T_移动报警设备数_今天)
+        if (w_x_ != 0) {
+            w_x_ = w_x_ / C_json.Device.T_移动总数
+            w_x_ *= 100
+        }
+        $("#T_C_3").html(w_x_.toFixed(1) + "%")// 公司下一级统计
+
+        $("#T_Cn_1").html("公司/门店 数量")
+        $("#T_Cn_2").html("监控总数")
+        $("#T_Cn_3").html("今日移动端报警率")
+
+    }
+
+    // 报警统计
+    try {
+        $('#Company_Next_WarningG').liMarquee('destroy'); // 清除滚动
+    }
+    catch (e) {
+        alert(e);
+    }
+    $("#Company_Next_WarningG").html("<ul id=\"Company_Next_WarningL\"></ul>")// 清除内容
+    Company_Next_W_l = []
+    f_Company_Next_报警统计(C_json)
+    Company_Next_W_l_r = Company_Next_W_l.sort((a, b) => b.Warning - a.Warning);
+    for (var C_key in Company_Next_W_l_r){
+        C_b = Company_Next_W_l_r[C_key]
+        $("#Company_Next_WarningL").append("<li><p><span>" + C_b.name + "</span><span>" + (C_b.Device) + "</span><span>" + C_b.Warning + "%</span></p></li>")
+    }
+    // 开始滚动
+    // $('#Company_Next_WarningG').liMarquee({
+    //     direction: 'up',//身上滚动
+    //     runshort: false,//内容不足时不滚动
+    //     scrollamount: 20//速度
+    // });
+
+    // console.log("Company_Next_W_l:", Company_Next_W_l)
+    // 图表
+    echarts_报警设备数近7天曲线图()
+    echarts_设备报警率排名()
+    if (V_kf_yd == 1) {
+        echarts_库房端报警类型统计()
+    } else {
+        echarts_移动端任务曲线图()
+    }
+
+    // 任务统计
+    $('#Company_Next_TaskG').liMarquee('destroy'); // 清除滚动
+    $("#Company_Next_TaskG").html("<ul id=\"Company_Next_TaskL\"></ul>")// 清除内容
+    Company_Next_T_l = []
+    f_Company_Next_任务统计(C_json)
+    Company_Next_T_l_r = Company_Next_T_l.sort((a, b) => b.Task - a.Task);
+
+    for (var C_key in Company_Next_T_l_r){
+        C_b = Company_Next_T_l_r[C_key]
+        $("#Company_Next_TaskL").append("<li><p><span>" + C_b.name + "</span><span>" + (C_b.Task) + "</span><span>" + C_b.DeviceT.toFixed(1) + "%</span></p></li>")
+
+    }
+    // 开始滚动
+    // $('#Company_Next_TaskG').liMarquee({
+    //     direction: 'up',//身上滚动
+    //     runshort: false,//内容不足时不滚动
+    //     scrollamount: 20//速度
+    // });
+}
+
+
+// 公司下一级统计
+Company_Next_W_l = []
+
+function f_Company_Next_报警统计(C_j) {
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_报警统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Warning = 0
+        if (C_b.Warning.T_库房报警设备数_今天 > 0) {
+            Warning = parseInt((C_b.Device.T_库房总数 + C_b.Device.T_移动总数) / C_b.Warning.T_库房报警设备数_今天)
+        }
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+
+        Company_Next_W_l.push({
+            "name": C_b.Company_name,
+            "Device": C_b.Device.T_库房总数 + C_b.Device.T_移动总数,
+            "Warning": Warning
+        })
+    }
+
+}
+
+// 公司下一级任务统计
+Company_Next_T_l = []
+
+function f_Company_Next_任务统计(C_j) {
+
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        f_Company_Next_任务统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        // console.log({"name":C_b.Company_name,"Device":C_b.Device.T_库房总数+C_b.Device.T_移动总数,"Warning": Warning})
+        T_x_ = C_b.Task.T_任务设备数_今天
+        if(T_x_ != 0){
+            T_x_ = T_x_ / C_json.Device.T_移动总数
+            T_x_ *= 100
+        }
+
+        Company_Next_T_l.push({
+            "name": C_b.Company_name,
+            "Task": C_b.Task.T_任务总数_今天,
+            "DeviceT": T_x_.toFixed(1) + "%"
+        })
+
+    }
+
+}
+
+// 公司下一级统计
+function f_Company_Next_公司下一级统计(C_j) {
+    var Company_Next_num = 0
+    for (var C_key in C_j.Children) {
+        C_b = C_j.Children[C_key]
+        Company_Next_num += f_Company_Next_公司下一级统计(C_b)
+        if (C_b.Children.length != 0) continue;
+        Company_Next_num += 1
+
+    }
+    return Company_Next_num
+}
+
+// 设备报警率占比
+function echarts_报警设备数近7天曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_报警设备数近7天曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+
+    for (var C_key in C_json.Warning.T_报警设备数_近7天) {
+        C_b = C_json.Warning.T_报警设备数_近7天[C_key]
+
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_b)
+
+    }
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     data: ['库房端'],
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '15',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {  show: false},
+            position: 'bottom',
+            offset: 20,
+
+        }],
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel:  {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                name: '库房端',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data
+
+            },
+            // {
+            //     name: '移动端',
+            //     type: 'line',
+            //     smooth: true,
+            //     symbol: 'circle',
+            //     symbolSize: 5,
+            //     showSymbol: false,
+            //     lineStyle: {
+            //
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             width: 2
+            //         }
+            //     },
+            //     areaStyle: {
+            //         normal: {
+            //             color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+            //                 offset: 0,
+            //                 color: 'rgba(107, 221, 155, 0.4)'
+            //             }, {
+            //                 offset: 0.8,
+            //                 color: 'rgba(107, 221, 155, 0.1)'
+            //             }], false),
+            //             shadowColor: 'rgba(0, 0, 0, 0.1)',
+            //         }
+            //     },
+            //     itemStyle: {
+            //         normal: {
+            //             color: '#6bdd9b',
+            //             borderColor: 'rgba(107, 221, 155, .1)',
+            //             borderWidth: 5
+            //         }
+            //     },
+            //     data: [ 5, 3, 7, 1, 8, 3, 5]
+            //
+            // },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+// 设备报警率占比
+function echarts_设备报警率排名() {
+    var myChart = echarts.init(document.getElementById('echarts_设备报警率排名'));
+    // option = {
+    //     legend: {
+    //         icon:"circle",
+    //         top: "0",
+    //         width:'100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         data: ['库房端', '移动端'],
+    //         textStyle: {
+    //             color: "rgba(255,255,255,.5)" },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '10',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     xAxis: [{
+    //         type: 'category',
+    //         boundaryGap: false,
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //  fontSize:10
+    //             },
+    //         },
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+    //
+    //     }, {
+    //
+    //         axisPointer: {show: false},
+    //         axisLine: {  show: false},
+    //         position: 'bottom',
+    //         offset: 20,
+    //
+    //
+    //
+    //     }],
+    //
+    //     yAxis: [{
+    //         type: 'value',
+    //         axisTick: {show: false},
+    //         splitNumber: 4,
+    //         axisLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)'
+    //             }
+    //         },
+    //         axisLabel:  {
+    //             textStyle: {
+    //                 color: "rgba(255,255,255,.5)",
+    //                 //fontSize:10
+    //             },
+    //         },
+    //
+    //         splitLine: {
+    //             lineStyle: {
+    //                 color: 'rgba(255,255,255,.1)',
+    //                 type: 'dotted',
+    //             }
+    //         }
+    //     }],
+    //     series: [
+    //         {
+    //             name: '库房端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: 'rgba(31, 174, 234, 1)',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(31, 174, 234, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(31, 174, 234, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#1f7eea',
+    //                     borderColor: 'rgba(31, 174, 234, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [3, 6, 3, 6, 3, 9, 3]
+    //
+    //         },
+    //         {
+    //             name: '移动端',
+    //             type: 'line',
+    //             smooth: true,
+    //             symbol: 'circle',
+    //             symbolSize: 5,
+    //             showSymbol: false,
+    //             lineStyle: {
+    //
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     width: 2
+    //                 }
+    //             },
+    //             areaStyle: {
+    //                 normal: {
+    //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+    //                         offset: 0,
+    //                         color: 'rgba(107, 221, 155, 0.4)'
+    //                     }, {
+    //                         offset: 0.8,
+    //                         color: 'rgba(107, 221, 155, 0.1)'
+    //                     }], false),
+    //                     shadowColor: 'rgba(0, 0, 0, 0.1)',
+    //                 }
+    //             },
+    //             itemStyle: {
+    //                 normal: {
+    //                     color: '#6bdd9b',
+    //                     borderColor: 'rgba(107, 221, 155, .1)',
+    //                     borderWidth: 5
+    //                 }
+    //             },
+    //             data: [ 5, 3, 7, 1, 8, 3, 5]
+    //
+    //         },
+    //     ]
+    //
+    // };
+    yAxis_data = []
+    series_data = []
+    Company_Next_W_l_ = Company_Next_W_l.sort((a, b) => a.Warning - b.Warning).slice(-10);
+
+    for (var C_key in Company_Next_W_l_) {
+        C_b = Company_Next_W_l_[C_key]
+        if(C_b.Warning > 0){
+            yAxis_data.push(C_b.name)
+            series_data.push(C_b.Warning)
+        }
+
+    }
+
+    option = {
+        // title: {
+        //     text: 'World Population'
+        // },
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                type: 'shadow'
+            }
+        },
+        // legend: {},
+        grid: {
+            top: '0%',
+            left: '0%',
+            right: '0%',
+            bottom: '0%',
+            containLabel: true
+        },
+        xAxis: {
+            type: 'value',
+            boundaryGap: [0, 0.01],
+            show: false
+        },
+        yAxis: {
+            type: 'category',
+            data: yAxis_data
+        },
+        series: [
+            {
+                name: '报警率',
+                type: 'bar',
+                itemStyle: {
+                    color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+                        { offset: 0, color: '#596db0' },
+                        { offset: 0.5, color: '#4a63b4' },
+                        { offset:1, color: '#435eb7' }
+                    ])
+                },
+
+                data: series_data
+            }
+        ]
+    };
+    // option = {
+    //     legend: {
+    //         icon: "circle",
+    //         top: "0",
+    //         width: '100%',
+    //         right: 'center',
+    //         itemWidth: 10,
+    //         itemHeight: 10,
+    //         // textStyle: {
+    //         //     color: "rgba(255,255,255,.5)"
+    //         // },
+    //     },
+    //
+    //     tooltip: {
+    //         trigger: 'axis',
+    //         axisPointer: {
+    //             lineStyle: {
+    //                 color: '#dddc6b'
+    //             }
+    //         }
+    //     },
+    //     grid: {
+    //         left: '0',
+    //         top: '30',
+    //         right: '0',
+    //         bottom: '-15',
+    //         containLabel: true
+    //     },
+    //
+    //     dataset: [
+    //         {
+    //             dimensions: ['name', 'Device', "Warning"],
+    //             // source: [
+    //             //     ['11111111', 41],
+    //             //     ['22222222', 241],
+    //             //     ['333333333', 341],
+    //             //     ['4444444444', 141],
+    //             //     ['555555555', 421],
+    //             //     ['666666666', 141],
+    //             //     ['77777777', 241],
+    //             //     ['8888888888', 411],
+    //             //     ['9999999', 421],
+    //             //     ['123123123', 414],
+    //             //     ['456456456', 431],
+    //             //
+    //             // ]
+    //             source: Company_Next_W_l,
+    //         },
+    //         {
+    //             transform: {
+    //                 type: 'sort',
+    //                 config: {dimension: 'Warning', order: 'desc'}
+    //             }
+    //         }
+    //     ],
+    //     xAxis: {
+    //         type: 'category',
+    //         axisLabel: {interval: 0, rotate: 30},
+    //         max: 6 // only the largest 3 bars will be displayed
+    //     },
+    //     yAxis: {},
+    //     series: {
+    //         type: 'bar',
+    //         encode: {x: 'name', y: 'Warning'},
+    //         datasetIndex: 1
+    //     }
+    // };
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 移动端任务曲线图
+function echarts_移动端任务曲线图() {
+    var myChart = echarts.init(document.getElementById('echarts_移动端任务曲线图'));
+    xAxis_data = []
+    yAxis_data = []
+    for (var C_key in C_json.Task.T_任务总数_近7天) {
+        xAxis_data.push(C_key)
+        yAxis_data.push(C_json.Task.T_任务总数_近7天[C_key])
+    }
+
+    option = {
+        // legend: {
+        //     icon:"circle",
+        //     top: "0",
+        //     width:'100%',
+        //     right: 'center',
+        //     itemWidth: 10,
+        //     itemHeight: 10,
+        //     textStyle: {
+        //         color: "rgba(255,255,255,.5)" },
+        // },
+
+        tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+                lineStyle: {
+                    color: '#dddc6b'
+                }
+            }
+        },
+        grid: {
+            left: '0',
+            top: '5',
+            right: '17',
+            bottom: '0',
+            containLabel: true
+        },
+
+        xAxis: [{
+            type: 'category',
+            boundaryGap: false,
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //  fontSize:10
+                },
+            },
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            data: xAxis_data // ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+
+        }, {
+
+            axisPointer: {show: false},
+            axisLine: {show: false},
+            position: 'bottom',
+            offset: 20,
+
+
+        }],
+
+        yAxis: [{
+            type: 'value',
+            axisTick: {show: false},
+            splitNumber: 4,
+            axisLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)'
+                }
+            },
+            axisLabel: {
+                textStyle: {
+                    color: "rgba(255,255,255,.5)",
+                    //fontSize:10
+                },
+            },
+
+            splitLine: {
+                lineStyle: {
+                    color: 'rgba(255,255,255,.1)',
+                    type: 'dotted',
+                }
+            }
+        }],
+        series: [
+            {
+                // radius: ['40%', '70%'],
+                // center: ['50%', '74%'],
+                name: '任务次数',
+                type: 'line',
+                smooth: true,
+                symbol: 'circle',
+                symbolSize: 5,
+                showSymbol: false,
+                containLabel: true,
+                lineStyle: {
+                    normal: {
+                        color: 'rgba(31, 174, 234, 1)',
+                        width: 2
+                    }
+                },
+                areaStyle: {
+                    normal: {
+                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                            offset: 0,
+                            color: 'rgba(31, 174, 234, 0.4)'
+                        }, {
+                            offset: 0.8,
+                            color: 'rgba(31, 174, 234, 0.1)'
+                        }], false),
+                        shadowColor: 'rgba(0, 0, 0, 0.1)',
+                    }
+                },
+                itemStyle: {
+                    normal: {
+                        color: '#1f7eea',
+                        borderColor: 'rgba(31, 174, 234, .1)',
+                        borderWidth: 5
+                    }
+                },
+                data: yAxis_data // [3, 6, 3, 6, 3, 9, 3]
+            },
+        ]
+
+    };
+
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+// 库房端报警类型统计
+function echarts_库房端报警类型统计() {
+    var myChart = echarts.init(document.getElementById('echarts_库房端报警类型统计'));
+    data = []
+    data_num = 0
+    for (var C_key in C_json.Warning.T_库房报警类型统计) {
+        data_num += C_json.Warning.T_库房报警类型统计[C_key]
+        data.push({value: C_json.Warning.T_库房报警类型统计[C_key], name: C_key})
+    }
+    data.push({
+        // make an record to fill the bottom 50%
+        value: data_num,
+        itemStyle: {
+            // stop the chart from rendering this piece
+            color: 'none',
+            decal: {
+                symbol: 'none'
+            }
+        },
+        label: {
+            show: false
+        }
+    })
+
+
+    option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        // legend: {
+        //     top: '5%',
+        //     left: 'center',
+        //     // doesn't perfectly work with our tricks, disable it
+        //     selectedMode: false
+        // },
+
+        color: ['#45C2E0', '#C1EBDD', '#c0a9fa', '#75bef3', '#FF9393', '#e9aaff', '#ffc1a7'],
+        series: [
+            {
+                name: '报警类型',
+                type: 'pie',
+                radius: ['40%', '70%'],
+                center: ['50%', '74%'],
+                // adjust the start angle
+                startAngle: 180,
+                label: {
+                    color: "#C1EBDD",
+                    show: true,
+                    formatter(param) {
+                        // correct the percentage
+                        return param.name + ' (' + param.percent * 2 + '%)';
+                    }
+                },
+                data: data
+            }
+        ]
+    };
+
+    myChart.setOption(option);
+    window.addEventListener("resize", function () {
+        myChart.resize();
+    });
+    $(".sebtn a").click(function () {
+        $(this).addClass("active").siblings().removeClass("active")
+    })
+    $(".sebtn a").eq(0).click(function () {
+        myChart.setOption(option1);
+    })
+    $(".sebtn a").eq(1).click(function () {
+        myChart.setOption(option2);
+    })
+    $(".sebtn a").eq(2).click(function () {
+        myChart.setOption(option3);
+    })
+
+}
+
+
+

+ 47 - 0
static/province-json/in.html

@@ -0,0 +1,47 @@
+
+<!doctype html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>大数据可视化系统数据分析通用模版</title>
+    <script type="text/javascript" src="jquery.js"></script>
+</head>
+
+<body  style="user-select:none;overflow:hidden">
+</body>
+</html>
+
+
+<script>
+
+    function sleep(numberMillis) {
+        var now = new Date();
+        var exitTime = now.getTime() + numberMillis;
+        while (true) {
+            now = new Date();
+            if (now.getTime() > exitTime)
+                return;
+        }
+    }
+
+
+    list = ["北京","天津","河北","山西","内蒙古","辽宁","吉林","黑龙江","上海","江苏","浙江","安徽","福建","江西","山东","河南","湖北","湖南","广东","广西","海南","重庆","四川","贵州","云南","西藏","陕西","甘肃","青海","宁夏","新疆","台湾","香港","澳门"]
+    for (const arrayKey in list) {
+        a = list[arrayKey]
+        t = ""
+        console.log(a)
+        $.get(a+'.json', function (geoJson) {
+            t = ":"
+            for (const i in geoJson.features) {
+                oi = geoJson.features[i]
+
+                t += oi.properties.name+","
+            }
+            console.log(t)
+        })
+
+
+    }
+
+
+</script>

File diff suppressed because it is too large
+ 1 - 0
static/province-json/jquery.js


File diff suppressed because it is too large
+ 0 - 0
static/province-json/上海.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/云南.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/内蒙古.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/北京.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/台湾.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/吉林.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/四川.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/天津.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/宁夏.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/安徽.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/山东.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/山西.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/广东.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/广西.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/新疆.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/江苏.json


File diff suppressed because it is too large
+ 0 - 0
static/province-json/江西.json


Some files were not shown because too many files changed in this diff