|
@@ -19,6 +19,7 @@ import (
|
|
|
|
|
|
"github.com/astaxie/beego/logs"
|
|
"github.com/astaxie/beego/logs"
|
|
MQTT "github.com/eclipse/paho.mqtt.golang"
|
|
MQTT "github.com/eclipse/paho.mqtt.golang"
|
|
|
|
+ mqtt "github.com/eclipse/paho.mqtt.golang"
|
|
"github.com/robfig/cron"
|
|
"github.com/robfig/cron"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -27,14 +28,23 @@ func InitMqttClient() {
|
|
c, pubTopic := MqttClient()
|
|
c, pubTopic := MqttClient()
|
|
deviceHeartbeat(c, pubTopic)
|
|
deviceHeartbeat(c, pubTopic)
|
|
|
|
|
|
|
|
+ // now := time.Now().AddDate(0, 0, -5).Format("2006-01-02")
|
|
|
|
+ // stirPush(c, pubTopic, now)
|
|
|
|
+ // dustingPush(c, pubTopic, now)
|
|
|
|
+ // equipmentAccuracyPush(c, pubTopic, now)
|
|
|
|
+ // finishedWeightPush(c, pubTopic, now)
|
|
|
|
+ // feedtempletPush(c, pubTopic)
|
|
|
|
+ // CompletedTrainNumberPush(c, pubTopic, now)
|
|
|
|
+
|
|
mqttCron := cron.New()
|
|
mqttCron := cron.New()
|
|
mqttCron.AddFunc("10 06 * * *", func() {
|
|
mqttCron.AddFunc("10 06 * * *", func() {
|
|
|
|
+ now := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
|
|
|
|
+ stirPush(c, pubTopic, now)
|
|
|
|
+ dustingPush(c, pubTopic, now)
|
|
|
|
+ equipmentAccuracyPush(c, pubTopic, now)
|
|
|
|
+ finishedWeightPush(c, pubTopic, now)
|
|
feedtempletPush(c, pubTopic)
|
|
feedtempletPush(c, pubTopic)
|
|
- stirPush(c, pubTopic)
|
|
|
|
- dustingPush(c, pubTopic)
|
|
|
|
- equipmentAccuracyPush(c, pubTopic)
|
|
|
|
- finishedWeightPush(c, pubTopic)
|
|
|
|
- CompletedTrainNumberPush(c, pubTopic)
|
|
|
|
|
|
+ CompletedTrainNumberPush(c, pubTopic, now)
|
|
})
|
|
})
|
|
mqttCron.Start()
|
|
mqttCron.Start()
|
|
}
|
|
}
|
|
@@ -53,17 +63,23 @@ func MqttClient() (MQTT.Client, string) {
|
|
var deviceName string = setting.YynserverSetting.DeviceName
|
|
var deviceName string = setting.YynserverSetting.DeviceName
|
|
var deviceSecret string = setting.YynserverSetting.DeviceSecret
|
|
var deviceSecret string = setting.YynserverSetting.DeviceSecret
|
|
|
|
|
|
- // set timestamp, clientid, subscribe topic and publish topic
|
|
|
|
|
|
+ // product_key =k03txxLKFae
|
|
|
|
+ // device_name =4623_p_breed
|
|
|
|
+ // device_secret =d06ababb2b10ba25bca3041e35ac604d
|
|
|
|
+ // host = iot-010a5xth.mqtt.iothub.aliyuncs.com
|
|
|
|
+ // farmId=1830004623
|
|
|
|
+ // heartBeat=18300046234623_p_breed
|
|
|
|
+ // TopicName=/k03txxLKFae/4623_p_breed/user/heatwatch/tmrBreed/post
|
|
|
|
+
|
|
var timeStamp string = strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
var timeStamp string = strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
- var clientId string = "go_device_id_0001"
|
|
|
|
|
|
+ var clientId string = "go" + setting.YynserverSetting.FarmId
|
|
var subTopic string = "/" + productKey + "/" + deviceName + "/user/heatwatch/tmrBreed/get"
|
|
var subTopic string = "/" + productKey + "/" + deviceName + "/user/heatwatch/tmrBreed/get"
|
|
var pubTopic string = "/" + productKey + "/" + deviceName + "/user/heatwatch/tmrBreed/post"
|
|
var pubTopic string = "/" + productKey + "/" + deviceName + "/user/heatwatch/tmrBreed/post"
|
|
|
|
|
|
// set the login broker url
|
|
// set the login broker url
|
|
var raw_broker bytes.Buffer
|
|
var raw_broker bytes.Buffer
|
|
- raw_broker.WriteString("tls://")
|
|
|
|
- raw_broker.WriteString(productKey)
|
|
|
|
- raw_broker.WriteString(".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883")
|
|
|
|
|
|
+ raw_broker.WriteString("tcp://")
|
|
|
|
+ raw_broker.WriteString("iot-010a5xth.mqtt.iothub.aliyuncs.com:1883")
|
|
opts := MQTT.NewClientOptions().AddBroker(raw_broker.String())
|
|
opts := MQTT.NewClientOptions().AddBroker(raw_broker.String())
|
|
|
|
|
|
// calculate the login auth info, and set it into the connection options
|
|
// calculate the login auth info, and set it into the connection options
|
|
@@ -82,39 +98,15 @@ func MqttClient() (MQTT.Client, string) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // create and start a client using the above ClientOptions
|
|
|
|
- c := MQTT.NewClient(opts)
|
|
|
|
- if token := c.Connect(); token.Wait() && token.Error() != nil {
|
|
|
|
- logging.Error("mqtt Connect err: ", token.Error())
|
|
|
|
|
|
+ c := mqtt.NewClient(opts)
|
|
|
|
|
|
|
|
+ if token := c.Connect(); token.Wait() && token.Error() != nil {
|
|
|
|
+ fmt.Println(token.Error())
|
|
|
|
+ os.Exit(1)
|
|
}
|
|
}
|
|
- fmt.Print("Connect aliyun IoT Cloud Sucess\n")
|
|
|
|
-
|
|
|
|
- // if token := c.Subscribe(subTopic, 0, feedHeatwatch); token.Wait() && token.Error() != nil {
|
|
|
|
- // fmt.Println(token.Error())
|
|
|
|
- // os.Exit(1)
|
|
|
|
- // }
|
|
|
|
- // subscribe to subTopic("/a1Zd7n5yTt8/deng/user/get") and request messages to be delivered
|
|
|
|
-
|
|
|
|
- // fmt.Println("Subscribe topic "+subTopic+" success\n", c.IsConnected())
|
|
|
|
|
|
|
|
- // publish 5 messages to pubTopic("/a1Zd7n5yTt8/deng/user/update")
|
|
|
|
- // for i := 0; i < 50; i++ {
|
|
|
|
- // fmt.Println("publish msg:", i)
|
|
|
|
- // text := fmt.Sprintf("ABC #%d", i)
|
|
|
|
- // token := c.Publish(pubTopic, 0, false, text)
|
|
|
|
- // fmt.Println("publish msg: ", text)
|
|
|
|
- // token.Wait()
|
|
|
|
-
|
|
|
|
- // time.Sleep(2 * time.Second)
|
|
|
|
- // }
|
|
|
|
- // unsubscribe from subTopic("/a1Zd7n5yTt8/deng/user/get")
|
|
|
|
- // if token := c.Unsubscribe(subTopic); token.Wait() && token.Error() != nil {
|
|
|
|
- // fmt.Println(token.Error())
|
|
|
|
- // os.Exit(1)
|
|
|
|
- // }
|
|
|
|
|
|
+ fmt.Print("Connect aliyun IoT Cloud Sucess\n")
|
|
|
|
|
|
- // c.Disconnect(250)
|
|
|
|
return c, pubTopic
|
|
return c, pubTopic
|
|
}
|
|
}
|
|
|
|
|
|
@@ -191,10 +183,27 @@ func feedtempletPush(c MQTT.Client, pubTopic string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
- dataList, err := tx.SQL(`select f.id as recipeId , f.tname recipeName,ft.id ingId,ft.fname ingName,ft.fweight afQty,
|
|
|
|
- ft.sort mixNo,fd.allowratio allowableError ,fd.fclass ingType, ft.fweight * ( fd.dry /100 ) dmQty,null recipeCost
|
|
|
|
- from feedtemplet f join ftdetail ft on ft.ftid = f.id join feed fd on fd.id = ft.fid
|
|
|
|
- `).Query().List()
|
|
|
|
|
|
+ dataList, err := tx.SQL(`SELECT
|
|
|
|
+ f.id AS recipeId,
|
|
|
|
+ f.tname recipeName,
|
|
|
|
+ ft.id ingId,
|
|
|
|
+ ifnull(fd.fname,fdy.fname) ingName,
|
|
|
|
+ if(fd.fname is not null, ft.fweight,fty.fweight) afQty,
|
|
|
|
+ ft.sort mixNo,
|
|
|
|
+ ifnull(fd.allowratio,fdy.allowratio) allowableError,
|
|
|
|
+ ifnull(fd.fclass,fdy.fclass) ingType,
|
|
|
|
+ if(fd.fname is not null,ft.fweight * ( fd.dry / 100 ), fty.fweight * ( fdy.dry / 100 )) dmQty,
|
|
|
|
+ '' recipeCost
|
|
|
|
+FROM
|
|
|
|
+ feedtemplet f
|
|
|
|
+ JOIN ftdetail ft ON ft.ftid = f.id
|
|
|
|
+ left JOIN feed fd ON fd.id = ft.fid
|
|
|
|
+ left join feedtemplet fy on fy.id = ft.preftid
|
|
|
|
+ left join ftdetail fty on fty.ftid = fy.id
|
|
|
|
+ left JOIN feed fdy ON fdy.id = fty.fid
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ `).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -203,7 +212,7 @@ func feedtempletPush(c MQTT.Client, pubTopic string) {
|
|
pushStr := `{
|
|
pushStr := `{
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method":"getfeedtempletinfo",
|
|
"method":"getfeedtempletinfo",
|
|
"rowCount": "1",
|
|
"rowCount": "1",
|
|
"resultData":%s
|
|
"resultData":%s
|
|
@@ -220,33 +229,36 @@ func feedtempletPush(c MQTT.Client, pubTopic string) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-func stirPush(c MQTT.Client, pubTopic string) {
|
|
|
|
|
|
+func stirPush(c MQTT.Client, pubTopic, date string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
dataList, err := tx.SQL(`SELECT
|
|
dataList, err := tx.SQL(`SELECT
|
|
- d.mydate dropDate,
|
|
|
|
- d.projname tmrNo,
|
|
|
|
|
|
+ DATE_FORMAT(d.mydate,'%Y-%m-%d') loadDate,
|
|
|
|
+ d.sort tmrNo,
|
|
d.times loadShift,
|
|
d.times loadShift,
|
|
d.tempid recipeId,
|
|
d.tempid recipeId,
|
|
d.templetname recipeName,
|
|
d.templetname recipeName,
|
|
f.feedcode ingId,
|
|
f.feedcode ingId,
|
|
d1.fname ingName,
|
|
d1.fname ingName,
|
|
- f.fclass ingType,
|
|
|
|
|
|
+ 12 ingType,
|
|
f.dry dmPct,
|
|
f.dry dmPct,
|
|
d1.sort mixNo,
|
|
d1.sort mixNo,
|
|
- d1.feedallowratio allowableError,
|
|
|
|
|
|
+ d1.feedallowratio allowable_error,
|
|
d1.lweight expWeight,
|
|
d1.lweight expWeight,
|
|
d1.actualweightminus actualWeight,
|
|
d1.actualweightminus actualWeight,
|
|
- d1.begintime startTime,
|
|
|
|
- d1.intime endTime
|
|
|
|
|
|
+ if((select count(1) from downloadplandtl1 where pid = d.id and sort < d1.sort order by sort desc) >0 ,(select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadplandtl1 where pid = d.id and sort < d1.sort order by sort desc limit 1),DATE_FORMAT(d.intime,'%Y-%m-%d %H:%i:%s') ) startTime,
|
|
|
|
+ DATE_FORMAT(d1.intime,'%Y-%m-%d %H:%i:%s') endTime , ifnull(if(d.driverId !=0 ,(select drivername from driver where id = d.driverId),(SELECT dr.driver FROM dutyrecord dr
|
|
|
|
+ WHERE dr.pastureid = d.pastureid AND dr.eqid = d.tmrid and dr.times= d.times AND dr.operatetime <=d.mydate
|
|
|
|
+ ORDER BY dr.operatetime DESC LIMIT 1)),'')tmrName
|
|
FROM
|
|
FROM
|
|
downloadedplan d
|
|
downloadedplan d
|
|
JOIN downloadplandtl1 d1 ON d1.pid = d.id
|
|
JOIN downloadplandtl1 d1 ON d1.pid = d.id
|
|
JOIN feed f ON f.feedcode = d1.feedcode
|
|
JOIN feed f ON f.feedcode = d1.feedcode
|
|
AND f.pastureid = d.pastureid
|
|
AND f.pastureid = d.pastureid
|
|
WHERE
|
|
WHERE
|
|
- DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1) ,'%Y-%m-%d' )`).Query().List()
|
|
|
|
|
|
+ DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = ?
|
|
|
|
+ `, date).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -255,16 +267,17 @@ WHERE
|
|
pushStr := `{
|
|
pushStr := `{
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method":"uploadadddata",
|
|
"method":"uploadadddata",
|
|
- "rowCount": "1",
|
|
|
|
|
|
+ "rowCount": "%d",
|
|
"resultData":%s
|
|
"resultData":%s
|
|
}
|
|
}
|
|
}`
|
|
}`
|
|
if len(dataList) > 0 {
|
|
if len(dataList) > 0 {
|
|
b, _ := json.Marshal(dataList)
|
|
b, _ := json.Marshal(dataList)
|
|
- pushStr = fmt.Sprintf(pushStr, setting.YynserverSetting.FarmId, string(b))
|
|
|
|
|
|
+ pushStr = fmt.Sprintf(pushStr, setting.YynserverSetting.FarmId, len(dataList), string(b))
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
|
|
+
|
|
fmt.Println("publish msg: ", pushStr, token.Error())
|
|
fmt.Println("publish msg: ", pushStr, token.Error())
|
|
// token.Wait()
|
|
// token.Wait()
|
|
// time.Sleep(2 * time.Second)
|
|
// time.Sleep(2 * time.Second)
|
|
@@ -272,28 +285,34 @@ WHERE
|
|
}
|
|
}
|
|
|
|
|
|
// 撒料信息
|
|
// 撒料信息
|
|
-func dustingPush(c MQTT.Client, pubTopic string) {
|
|
|
|
|
|
+func dustingPush(c MQTT.Client, pubTopic, date string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
dataList, err := tx.SQL(`SELECT
|
|
dataList, err := tx.SQL(`SELECT
|
|
- d.mydate dropDate,
|
|
|
|
- d.projname tmrNo,
|
|
|
|
- d.times loadShift,
|
|
|
|
- d2.fbarid penId,
|
|
|
|
- b.bcode penName,
|
|
|
|
- d2.cowcount cowCount,
|
|
|
|
- d2.sort feedingNo,
|
|
|
|
- d2.lweight expWeight,
|
|
|
|
- d2.actualweightminus actualWeight,
|
|
|
|
- d2.begintime startTime,
|
|
|
|
- d2.intime endTime
|
|
|
|
-FROM
|
|
|
|
- downloadedplan d
|
|
|
|
- JOIN downloadplandtl2 d2 ON d2.pid = d.id
|
|
|
|
- JOIN bar b ON b.id = d2.fbarid
|
|
|
|
-WHERE
|
|
|
|
- DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1) ,'%Y-%m-%d' )`).Query().List()
|
|
|
|
|
|
+ ifnull(if(d.driverId !=0 ,(select drivername from driver where id = d.driverId),(SELECT dr.driver FROM dutyrecord dr
|
|
|
|
+ WHERE dr.pastureid = d.pastureid AND dr.eqid = d.tmrid and dr.times= d.times AND dr.operatetime <=d.mydate
|
|
|
|
+ ORDER BY dr.operatetime DESC LIMIT 1)),'')tmrName ,
|
|
|
|
+ DATE_FORMAT(d.mydate,'%Y-%m-%d') dropDate,
|
|
|
|
+ d.sort tmrNo,
|
|
|
|
+ d.times dropShift,
|
|
|
|
+ d2.fbarid penId,
|
|
|
|
+ b.bname penName,
|
|
|
|
+ fp.ccount cowCount,
|
|
|
|
+ d2.sort feedingNo,
|
|
|
|
+ d2.lweight expWeight,
|
|
|
|
+ d2.actualweightminus actualWeight,
|
|
|
|
+ if((select count(1) from downloadplandtl2 where pid = d.id and sort < d2.sort order by sort desc) >0 ,(select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadplandtl2 where pid = d.id and sort < d2.sort order by sort desc limit 1), (select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadplandtl1 where pid = d.id order by sort desc limit 1) ) startTime,
|
|
|
|
+ DATE_FORMAT(d2.intime,'%Y-%m-%d %H:%i:%s') endTime
|
|
|
|
+ FROM
|
|
|
|
+ downloadedplan d
|
|
|
|
+ JOIN downloadplandtl2 d2 ON d2.pid = d.id
|
|
|
|
+ JOIN bar b ON b.id = d2.fbarid
|
|
|
|
+ join feedp fp on fp.barid = b.id
|
|
|
|
+ join tmr t on t.id = d.tmrid
|
|
|
|
+ left join driver on driver.drivercode = t.eqcode
|
|
|
|
+ WHERE
|
|
|
|
+ DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = ? `, date).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -302,15 +321,15 @@ WHERE
|
|
pushStr := `{
|
|
pushStr := `{
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method":"uploaddiliverdata",
|
|
"method":"uploaddiliverdata",
|
|
- "rowCount": "1",
|
|
|
|
|
|
+ "rowCount": "%d",
|
|
"resultData":%s
|
|
"resultData":%s
|
|
}
|
|
}
|
|
}`
|
|
}`
|
|
if len(dataList) > 0 {
|
|
if len(dataList) > 0 {
|
|
b, _ := json.Marshal(dataList)
|
|
b, _ := json.Marshal(dataList)
|
|
- pushStr = fmt.Sprintf(pushStr, setting.YynserverSetting.FarmId, string(b))
|
|
|
|
|
|
+ pushStr = fmt.Sprintf(pushStr, setting.YynserverSetting.FarmId, len(dataList), string(b))
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
fmt.Println("publish msg: ", pushStr, token.Error())
|
|
fmt.Println("publish msg: ", pushStr, token.Error())
|
|
// token.Wait()
|
|
// token.Wait()
|
|
@@ -333,7 +352,7 @@ func deviceHeartbeat(c MQTT.Client, pubTopic string) {
|
|
device := cron.New()
|
|
device := cron.New()
|
|
device.AddFunc(spec1, func() {
|
|
device.AddFunc(spec1, func() {
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
token := c.Publish(pubTopic, 2, false, pushStr)
|
|
- fmt.Println("publish msg: ", pushStr, token.Error())
|
|
|
|
|
|
+ fmt.Println("publish msg: ", pushStr, token.Error(), time.Now())
|
|
// token.Wait()
|
|
// token.Wait()
|
|
})
|
|
})
|
|
// }
|
|
// }
|
|
@@ -342,13 +361,24 @@ func deviceHeartbeat(c MQTT.Client, pubTopic string) {
|
|
}
|
|
}
|
|
|
|
|
|
// 准确率
|
|
// 准确率
|
|
-func equipmentAccuracyPush(c MQTT.Client, pubTopic string) {
|
|
|
|
|
|
+func equipmentAccuracyPush(c MQTT.Client, pubTopic, date string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
- dataList, err := tx.SQL(`select t.tname tname,1-abs(sum(d1.actualweightminus)- sum(d1.lweight))/sum(d1.lweight) rate ,d.mydate rateDate from downloadedplan d join downloadplandtl1 d1 on d1.pid = d.id join tmr t on t.datacaptureno = d.datacaptureno
|
|
|
|
- where DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1) ,'%Y-%m-%d' )
|
|
|
|
- group by d.datacaptureno`).Query().List()
|
|
|
|
|
|
+ dataList, err := tx.SQL(`SELECT
|
|
|
|
+ t.tname Name,
|
|
|
|
+ 1-abs (
|
|
|
|
+ sum( d1.actualweightminus )- sum( d1.lweight ))/ sum( d1.lweight ) Rate,
|
|
|
|
+ d.mydate RateDate , DATE_FORMAT(d.intime,'%Y-%m-%d %H:%i:%s') startTime,
|
|
|
|
+ (select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadplandtl2 where pid = d.id order by sort desc limit 1) endTime
|
|
|
|
+FROM
|
|
|
|
+ downloadedplan d
|
|
|
|
+ JOIN downloadplandtl1 d1 ON d1.pid = d.id
|
|
|
|
+ JOIN tmr t ON t.datacaptureno = d.datacaptureno
|
|
|
|
+WHERE
|
|
|
|
+ DATE_FORMAT( d.mydate, '%Y-%m-%d' ) = ? and d.lpplantype in(0,1)
|
|
|
|
+GROUP BY
|
|
|
|
+ d.datacaptureno`, date).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -358,7 +388,7 @@ func equipmentAccuracyPush(c MQTT.Client, pubTopic string) {
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
"resultData": %s,
|
|
"resultData": %s,
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method": "uploadrate",
|
|
"method": "uploadrate",
|
|
"rowCount": %d
|
|
"rowCount": %d
|
|
}
|
|
}
|
|
@@ -374,13 +404,21 @@ func equipmentAccuracyPush(c MQTT.Client, pubTopic string) {
|
|
}
|
|
}
|
|
|
|
|
|
// 完成重量
|
|
// 完成重量
|
|
-func finishedWeightPush(c MQTT.Client, pubTopic string) {
|
|
|
|
|
|
+func finishedWeightPush(c MQTT.Client, pubTopic, date string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
- dataList, err := tx.SQL(`select sum(d1.actualweightminus) CompleteWeught,sum(d1.lweight) planWeight,d.mydate weightDate
|
|
|
|
- from downloadedplan d join downloadplandtl1 d1 on d1.pid = d.id join tmr t on t.datacaptureno = d.datacaptureno
|
|
|
|
- where DATE_FORMAT( d.mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1),'%Y-%m-%d' )`).Query().List()
|
|
|
|
|
|
+ dataList, err := tx.SQL(`SELECT
|
|
|
|
+ sum( d1.actualweightminus ) completeWeight,
|
|
|
|
+ sum( d1.lweight ) planWeight,
|
|
|
|
+ d.mydate weightDate , DATE_FORMAT(d.intime,'%Y-%m-%d %H:%i:%s') startTime,
|
|
|
|
+ (select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadedplan where mydate = d.mydate and intime is not null order by sort desc limit 1) endTime
|
|
|
|
+FROM
|
|
|
|
+ downloadedplan d
|
|
|
|
+ JOIN downloadplandtl1 d1 ON d1.pid = d.id
|
|
|
|
+ JOIN tmr t ON t.datacaptureno = d.datacaptureno
|
|
|
|
+WHERE
|
|
|
|
+ DATE_FORMAT( d.mydate, '%Y-%m-%d' ) = ? and lpplantype in(0,1)`, date).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -390,7 +428,7 @@ func finishedWeightPush(c MQTT.Client, pubTopic string) {
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
"resultData": %s,
|
|
"resultData": %s,
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method": "uploadweight",
|
|
"method": "uploadweight",
|
|
"rowCount": "1"
|
|
"rowCount": "1"
|
|
}
|
|
}
|
|
@@ -406,14 +444,16 @@ func finishedWeightPush(c MQTT.Client, pubTopic string) {
|
|
}
|
|
}
|
|
|
|
|
|
// 完成车次
|
|
// 完成车次
|
|
-func CompletedTrainNumberPush(c MQTT.Client, pubTopic string) {
|
|
|
|
|
|
+func CompletedTrainNumberPush(c MQTT.Client, pubTopic, date string) {
|
|
tx := restful.Engine.NewSession()
|
|
tx := restful.Engine.NewSession()
|
|
defer tx.Close()
|
|
defer tx.Close()
|
|
|
|
|
|
- dataList, err := tx.SQL(`select (select count(1) from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1),'%Y-%m-%d' ) ) planCar,
|
|
|
|
- (select count(1) from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = DATE_FORMAT(subdate(now(),1),'%Y-%m-%d' ) and iscompleted = 1 ) CompleteCar ,
|
|
|
|
- DATE_FORMAT(subdate(now(),1),'%Y-%m-%d' ) carDate
|
|
|
|
- `).Query().List()
|
|
|
|
|
|
+ dataList, err := tx.SQL(` select (select count(1) from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = ? and lpplantype in(0,1) ) planCar,
|
|
|
|
+ (select count(1) from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = ? and iscompleted = 1 and lpplantype in(0,1)) CompleteCar ,
|
|
|
|
+ ? carDate,
|
|
|
|
+ (select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = ? and iscompleted = 1 and lpplantype in(0,1) order by intime asc limit 1 ) startTime,
|
|
|
|
+ (select DATE_FORMAT(intime,'%Y-%m-%d %H:%i:%s') from downloadedplan where DATE_FORMAT(mydate ,'%Y-%m-%d' ) = ? and iscompleted = 1 and lpplantype in(0,1) and intime is not null order by intime desc limit 1 ) endTime
|
|
|
|
+ `, date, date, date, date, date).QueryString()
|
|
if err != nil {
|
|
if err != nil {
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
logs.Error("feedtempletPush-error-1:", err)
|
|
return
|
|
return
|
|
@@ -423,7 +463,7 @@ func CompletedTrainNumberPush(c MQTT.Client, pubTopic string) {
|
|
"apiId": "getKPTData",
|
|
"apiId": "getKPTData",
|
|
"param": {
|
|
"param": {
|
|
"resultData": %s,
|
|
"resultData": %s,
|
|
- "farmId": %s,
|
|
|
|
|
|
+ "farmId": "%s",
|
|
"method": "uploadcarnumber",
|
|
"method": "uploadcarnumber",
|
|
"rowCount": "1"
|
|
"rowCount": "1"
|
|
}
|
|
}
|