Skip to content

Commit

Permalink
new support for devstat
Browse files Browse the repository at this point in the history
  • Loading branch information
qclu committed Feb 18, 2017
1 parent 67c7b81 commit 61b9f9e
Show file tree
Hide file tree
Showing 18 changed files with 231 additions and 222 deletions.
4 changes: 3 additions & 1 deletion altertable.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use orm_test;
use qcdatabase;
alter table qc_administrator convert to character set utf8;
alter table qc_department convert to character set utf8;
alter table qc_dev_model convert to character set utf8;
Expand All @@ -11,5 +11,7 @@ alter table qc_reagent_model convert to character set utf8;
alter table qc_reagent_rel convert to character set utf8;
alter table qc_reagent_produce convert to character set utf8;
alter table qc_sw_version convert to character set utf8;
alter table qc_dev_log convert to character set utf8;
alter table qc_dev_stat convert to character set utf8;


2 changes: 1 addition & 1 deletion conf/app.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
appname = qcserver
httpport = 8088
httpport = 8080
runmode = dev
autorender = true
copyrequestbody = true
Expand Down
2 changes: 2 additions & 0 deletions controllers/administratorctl.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ func (this *QcAdministratorCtl) Prepare() {
func (o *QcAdministratorCtl) Post() {
var ob models.QcAdministrator
var err error
o.logger.LogInfo("request body:", string(o.Ctx.Input.RequestBody))
json.Unmarshal(o.Ctx.Input.RequestBody, &ob)
o.logger.LogInfo("username: ", ob.Username)
pob, err := models.CreateQcAdmin(o.dbSync, ob.Username, ob.Password, ob.Role)
if err != nil {
o.logger.LogError("database operation err: ", err)
Expand Down
152 changes: 33 additions & 119 deletions controllers/devlog.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package controllers

import (
"encoding/json"
"github.com/astaxie/beego"
"qcserver/models"
"qcserver/util/log"
Expand All @@ -15,154 +14,69 @@ type QcDevLogCtl struct {
dbSync *models.DBSync
}

func (this *QcDevLog) Prepare() {
func (this *QcDevLogCtl) Prepare() {
this.logger = log.GetLog()
this.dbSync = models.GetDBSync()
}

// @router /list [get]
func (h *QcDevLog) GetList() {
func (h *QcDevLogCtl) GetList() {
pgidx_str := h.GetString("pageidx")
h.logger.LogInfo("pageidx: ", pgidx_str)
pgidx, err := strconv.Atoi(pgidx_str)
if err != nil {
h.logger.LogError("failed to parse 'pageidx' from request, err: ", err)
h.Data["json"] = "invalid parse 'pageidx' from request, err: " + err.Error()
h.ServeJSON()
return
}
pgsize_str := h.GetString("pagesize")
h.logger.LogInfo("pagesize: ", pgsize_str)
pgsize, err := strconv.Atoi(pgsize_str)
if err != nil {
h.logger.LogError("failed to parse 'pagesize' from request, err: ", err)
h.Data["json"] = "invalid parse 'pagesize' from request, err: " + err.Error()
h.ServeJSON()
return
}
msgtype := h.GetString("type")
h.logger.LogInfo("type: ", msgtype)
devsn := h.GetString("sn")
h.logger.LogInfo("sn: ", devsn)
logs, err := h.dbSync.GetQcDevLogCond(pgidx, pgsize, msgtype, devsn)
if err != nil {
h.logger.LogError("database operation err: ", err)
h.Data["json"] = "failed to get dev logs, err: " + err.Error()
h.ServeJSON()
return
}
//entcnt, _ := h.dbSync.GetTotalCnt(models.DB_T_QCPRODUCT)
res_data := make(map[string]interface{})
res_data["totalnum"] = len(qcps)
res_data["objects"] = qcps
h.Data["json"] = res_data
h.ServeJSON()
return
}

// @router / [PUT]
func (h *QcQcProductCtl) Update() {
idstr := h.GetString("id")
if len(idstr) == 0 {
h.logger.LogError("failed to parse qcproduct name from request")
h.Data["json"] = "failed to parse qcproduct name from request"
h.ServeJSON()
return
}
id, _ := strconv.Atoi(idstr)
qcp, err := h.dbSync.GetQcQcProductWithId(id)
if err != nil {
h.logger.LogError("failed to get qcproduct[", id, "] from database, err: ", err)
h.Data["json"] = "failed to get qcproduct[" + idstr + "] from database, err: " + err.Error()
h.ServeJSON()
return
}
new_name := h.GetString("name")
if len(new_name) > 0 {
qcp.Name = new_name
}
new_regmodel := h.GetString("reagentmodel")
if len(new_regmodel) > 0 {
new_regmodel_obj, err := h.dbSync.GetQcReagentModel(new_regmodel)
if err != nil {
h.logger.LogError("failed to get regmodel[", new_regmodel, "] info, err: ", err)
h.Data["json"] = "failed to get regmodel[" + new_regmodel + "] info, err: " + err.Error()
h.ServeJSON()
return
}
qcp.RegModel = new_regmodel_obj
}
new_anno := h.GetString("annotation")
if len(new_anno) > 0 {
qcp.Annotation = new_anno
}
new_tea := h.GetString("tea")
if len(new_tea) > 0 {
tea, err := strconv.ParseFloat(new_tea, 64)
if len(pgidx_str) > 0 {
h.logger.LogInfo("pageidx: ", pgidx_str)
_, err := strconv.Atoi(pgidx_str)
if err != nil {
h.logger.LogError("invalid parameter for 'tea'[", new_tea, "] info, err: ", err)
h.Data["json"] = "invalid parameter for 'tea'[" + new_tea + "] info, err: " + err.Error()
h.logger.LogError("failed to parse 'pageidx' from request, err: ", err)
h.Data["json"] = "invalid parse 'pageidx' from request, err: " + err.Error()
h.ServeJSON()
return
}
qcp.Tea = tea
}
new_rg := h.GetString("range")
if len(new_rg) > 0 {
qcp.Range = new_rg
}
new_nsd := h.GetString("nsd")
if len(new_nsd) > 0 {
nsd, err := strconv.ParseFloat(new_nsd, 64)
if err != nil {
h.logger.LogError("invalid parameter for 'nsd'[", new_nsd, "] info, err: ", err)
h.Data["json"] = "invalid parameter for 'nsd'[" + new_nsd + "] info, err: " + err.Error()
h.ServeJSON()
return
}
qcp.Nsd = nsd
}
new_fixd := h.GetString("fixdeviation")
if len(new_fixd) > 0 {
fixd, err := strconv.ParseFloat(new_fixd, 64)
pgsize_str := h.GetString("pagesize")
if len(pgsize_str) > 0 {
h.logger.LogInfo("pagesize: ", pgsize_str)
_, err := strconv.Atoi(pgsize_str)
if err != nil {
h.logger.LogError("invalid parameter for 'fixdeviation'[", new_fixd, "] info, err: ", err)
h.Data["json"] = "invalid parameter for 'fixdeviation'[" + new_fixd + "] info, err: " + err.Error()
h.logger.LogError("failed to parse 'pagesize' from request, err: ", err)
h.Data["json"] = "invalid parse 'pagesize' from request, err: " + err.Error()
h.ServeJSON()
return
}
qcp.FixedDeviation = fixd
}
new_percent := h.GetString("percent")
if len(new_percent) > 0 {
percent, err := strconv.ParseFloat(new_percent, 64)
msgtype_str := h.GetString("type")
if len(msgtype_str) > 0 {
h.logger.LogInfo("msgtype: ", msgtype_str)
_, err := strconv.Atoi(msgtype_str)
if err != nil {
h.logger.LogError("invalid parameter for 'percent'[", new_percent, "] info, err: ", err)
h.Data["json"] = "invalid parameter for 'percent'[" + new_percent + "] info, err: " + err.Error()
h.logger.LogError("failed to parse 'type' from request, err: ", err)
h.Data["json"] = "invalid parse 'type' from request, err: " + err.Error()
h.ServeJSON()
return
}
qcp.Percent = percent
}
new_cv := h.GetString("cv")
if len(new_cv) > 0 {
cv, err := strconv.ParseFloat(new_cv, 64)
devsn_str := h.GetString("sn")
if len(devsn_str) > 0 {
h.logger.LogInfo("devsn: ", devsn_str)
_, err := strconv.Atoi(devsn_str)
if err != nil {
h.logger.LogError("invalid parameter for 'cv'[", new_cv, "] info, err: ", err)
h.Data["json"] = "invalid parameter for 'cv'[" + new_cv + "] info, err: " + err.Error()
h.logger.LogError("failed to parse 'sn' from request, err: ", err)
h.Data["json"] = "invalid parse 'sn' from request, err: " + err.Error()
h.ServeJSON()
return
}
qcp.Cv = cv
}
err = h.dbSync.UpdateQcQcProduct(qcp)
logs, err := h.dbSync.GetQcDevLogCond(pgidx_str, pgsize_str, msgtype_str, devsn_str)
if err != nil {
h.logger.LogError("failed to update qcproduct[", id, "], err: ", err)
h.Data["json"] = "failed to update qcproduct[" + idstr + "], err: " + err.Error()
h.logger.LogError("database operation err: ", err)
h.Data["json"] = "failed to get dev logs, err: " + err.Error()
h.ServeJSON()
return
}
h.Data["json"] = qcp
//entcnt, _ := h.dbSync.GetTotalCnt(models.DB_T_QCPRODUCT)
res_data := make(map[string]interface{})
res_data["totalnum"] = len(logs)
res_data["objects"] = logs
h.Data["json"] = res_data
h.ServeJSON()
return
}
4 changes: 2 additions & 2 deletions controllers/devrelctl.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func (h *QcDevRelCtl) Get() {
h.ServeJSON()
return
}
devrel, err = h.dbSync.GetQcDevRelWithId(id)
devrel, err = h.dbSync.GetQcDevRelWithId(uint64(id))
if err != nil {
h.logger.LogError("database operation err: ", err)
h.Data["json"] = "database operation err: " + err.Error()
Expand Down Expand Up @@ -189,7 +189,7 @@ func (h *QcDevRelCtl) Update() {
return
}
id, _ := strconv.Atoi(idstr)
devrel, err := h.dbSync.GetQcDevRelWithId(id)
devrel, err := h.dbSync.GetQcDevRelWithId(uint64(id))
if err != nil {
h.logger.LogError("failed to get devrel[id: ", idstr, "] from database, err: ", err)
h.Data["json"] = "failed to get devrel[id:" + idstr + "] from database, err: " + err.Error()
Expand Down
41 changes: 23 additions & 18 deletions controllers/mapgeneratorctl.go
Original file line number Diff line number Diff line change
@@ -1,41 +1,46 @@
package controllers

import (
"encoding/json"
//"encoding/json"
"github.com/astaxie/beego"
"qcserver/models"
"strconv"
"qcserver/util/log"
)

// Operations about object
type QcMapGeneratorCtl struct {
beego.Controller
logger *log.Log
dbSync *models.DBSync
}

func (this *QcMapGeneratorCtl) Prepare() {
this.logger = log.GetLog()
this.dbSync = models.GetDBSync()
}

type QcGisInfo struct {
Longitude float64
Latitude float64
}

type QcMapLocationInfo struct {
City string
Gis []QcGisInfo
}

// @router / [post]
func (h *QcMapGeneratorCtl) Post() {
var loc_param QcMapLocationInfo
// @router / [get]
func (h *QcMapGeneratorCtl) Get() {
h.logger.LogInfo("request body: ", string(h.Ctx.Input.RequestBody))
err := json.Unmarshal(h.Ctx.Input.RequestBody, &loc_param)
cityname := h.GetString("city")
tmpgisdata, err := h.dbSync.GetAllGisInfo()
if err != nil {
h.logger.LogError("error: ", err.Error())
}
h.logger.LogInfo("location param: ", loc_param.City)
h.Data["City"] = loc_param.City
h.Data["Gis"] = loc_param.Gis
type GisInfo struct {
Longitude float64
Latitude float64
}
var gislist []GisInfo
for index := 0; index < len(tmpgisdata); index++ {
var gisdata GisInfo
gisdata.Longitude, _ = strconv.ParseFloat(tmpgisdata[index].Longitude, 64)
gisdata.Latitude, _ = strconv.ParseFloat(tmpgisdata[index].Latitude, 64)
gislist = append(gislist, gisdata)
}

h.Data["City"] = cityname
h.Data["Gis"] = gislist
h.TplName = "bdmaptest.tpl"
}
2 changes: 1 addition & 1 deletion lastupdate.tmp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"/root/workspace/gobench/src/qcserver/controllers":1485021138309828135}
{"/root/workspace/gobench/src/qcserver/controllers":1485021138309828135,"/usr/local/gofile/src/qcserver/controllers":1485110755035051398}
18 changes: 17 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"math/rand"
"qcserver/models"
_ "qcserver/routers"
"qcserver/tcpnetwork"
"qcserver/util/log"
"time"
)
Expand Down Expand Up @@ -879,7 +880,22 @@ func main() {
return
}
logger.LogInfo("Info: log module start...")
models.DBSyncInit("mysql", "root:123qwe@/orm_test?charset=utf8")

err = models.DBSyncInit("mysql", "root:1qaz@WSX@/qcdatabase?charset=utf8")
if err != nil {
logger.LogError("Failed to start database process module, err:", err)
return
}

//start tcp service
tcpserver := tcpnetwork.NewTcpServer("118.178.188.139:14444")
err = tcpserver.Listen()
if err != nil {
logger.LogError("Failed to start tcpserver listening routine, err:", err)
return
}
go tcpserver.Start()

beego.BConfig.RunMode = "dev"
beego.SetViewsPath("views")
beego.Run()
Expand Down
1 change: 1 addition & 0 deletions models/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const (
DB_T_HWVERSION = "qc_hw_version"
DB_T_SWVERSION = "qc_sw_version"
DB_T_DEVLOG = "qc_dev_log"
DB_T_DEVSTAT = "qc_dev_stat"
)

//error definition
Expand Down
19 changes: 19 additions & 0 deletions models/dbSync.go
Original file line number Diff line number Diff line change
Expand Up @@ -1999,3 +1999,22 @@ func (d *DBSync) GetDevmodelCntOfMethodologyName(mth_name string) (int64, error)
}
return d.GetDevmodelCntOfMethodologyId(mth.Id)
}

type QcGisInfo struct {
Longitude string
Latitude string
}

func (d *DBSync) GetAllGisInfo() ([]*QcGisInfo, error) {
var gisdata []*QcGisInfo
var err error
d.mutex.Lock()
defer d.mutex.Unlock()
o := orm.NewOrm()
rs := o.Raw("select latitude, longitude from " + DB_T_DEVSTAT + " where id >=0 ")
if _, err = rs.QueryRows(&gisdata); err != nil {
d.logger.LogError("Failed to list gis info, error: ", err)
return nil, err
}
return gisdata, nil
}
Loading

0 comments on commit 61b9f9e

Please sign in to comment.