| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 | package apiimport (	"encoding/json"	"fmt"	"io/ioutil"	"net/http"	"strconv"	"tmr-watch/conf/setting"	"tmr-watch/http/handle/restful"	"tmr-watch/pkg/app"	"tmr-watch/pkg/e"	"github.com/Anderson-Lu/gofasion/gofasion"	"github.com/astaxie/beego/logs"	"github.com/gin-gonic/gin")type downloadedplan struct {	Id            int64  `json:"id"`	Mydate        string `json:"mydate"`	Projname      string `json:"projname"`	Datacaptureno string `json:"datacaptureno"`	Lweight       string `json:"lweight"`	Havebutton    string `json:"havebutton"`	Feedpname     string `json:"feedpname"`	Iscompleted   string `json:"iscompleted"`	Tmrtname      string `json:"tmrtname"`	Remark        string `json:"remark"`	Lpplantype    string `json:"lpplantype"`	Sort          string `json:"sort"`	Shifts        string `json:"shifts"`}type ReqGetDownloadedplanMaterial struct {	Pastureid     int64  `json:"pastureid"`	Datacaptureno int64  `json:"datacaptureno"`	Date          string `json:"date"`}func GetDownloadedplanMaterial1(c *gin.Context) {	// var reqInfo ReqGetDownloadedplanMaterial	// err := c.Bind(&reqInfo)	appG := app.Gin{C: c}	dataByte, _ := ioutil.ReadAll(c.Request.Body)	fsion := gofasion.NewFasion(string(dataByte))	date := fsion.Get("date").ValueStr()	// pastureid := fsion.Get("pastureid").ValueStr()	datacaptureno := fsion.Get("datacaptureno").ValueStr()	id := fsion.Get("id").ValueStr()	tx := restful.Engine.NewSession()	defer tx.Close()	pastureinfo := new(udPastureInfo)	err := tx.SQL(`select column_default  as pastureid,(select werks from pasture where pastureid = column_default)  werks  from    information_schema.COLUMNS	WHERE table_name = 'recweight' AND table_schema = ? AND column_name = 'pastureid'`, setting.DatabaseSetting.Name).GetFirst(pastureinfo).Error	if err != nil {		logs.Error(err)		return	}	pastureid := pastureinfo.Pastureid	tclassid := ""	tmrList, err := tx.SQL(` select tclassid from tmr where datacaptureno = ?  `, datacaptureno).QueryString()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	for _, tmr := range tmrList {		tclassid = tmr["tclassid"]	}	downloadedplanInfo := new(downloadedplan)	err = tx.SQL(` select  d.lpplantype,d.times shifts,d.id,date_format(d.mydate ,'%Y-%m-%d') as mydate ,d.projname,d.datacaptureno,d.lweight,d.havebutton,d.feedpname,d.iscompleted,d.remark,d.tmrtname from downloadedplan d	where d.mydate = ? and d.pastureid = ? and (d.datacaptureno is null or d.datacaptureno = ?) and  d.iscompleted = 0  	and ( (? IN(1,2) AND d.lpplanType IN (0,1))  OR (? IN (1,3) AND d.lpplanType IN (0,2))) 	and if(d.lpplantype = 2,if((select count(1) from downloadplandtl1 d1 	where d1.pid = (select id from downloadedplan dd where dd.mydate = d.mydate 		and dd.pastureId = d.pastureid and dd.lpplanType IN (0,1) and dd.pid = d.pid and dd.times = d.times ) 		and d1.type = 0 and d1.havebuttom = 0 ) >0 ,1,0 ),0) = 0  and (?= '' or d.id = ? )	 order by d.sort  `,		date, pastureid, datacaptureno, tclassid, tclassid, id, id).GetFirst(downloadedplanInfo).Error	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	if downloadedplanInfo.Id == 0 {		appG.Response(http.StatusOK, e.THROUGHOUt_THE_DAY_TO_END, nil)		return	}	_, err = tx.SQL(` update downloadedplan set havebutton = 1 ,intime = now() where id = ? and havebutton != 1 `, downloadedplanInfo.Id).Execute()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	_, err = tx.SQL(` update tmr set projid = ? ,lastbuttontime =? , nextsort = ifnull((select sort from downloadplandtl1  where pid = ? and intime is  null  order by sort limit 0,1),0 )  where datacaptureno = ?   and pastureid = ? `,		downloadedplanInfo.Id, date, downloadedplanInfo.Id, datacaptureno, pastureid).Execute()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	appG.Response(http.StatusOK, e.SUCCESS, downloadedplanInfo)}func GetSubPlan(c *gin.Context) {	appG := app.Gin{C: c}	dataByte, _ := ioutil.ReadAll(c.Request.Body)	parammaps := gofasion.NewFasion(string(dataByte))	pid := parammaps.Get("pid").ValueStr()	// pastureid := parammaps.Get("pastureid").ValueStr()	tx := restful.Engine.NewSession()	defer tx.Close()	pastureinfo := new(udPastureInfo)	err := tx.SQL(`select column_default  as pastureid,(select werks from pasture where pastureid = column_default)  werks  from    information_schema.COLUMNS	WHERE table_name = 'recweight' AND table_schema = ? AND column_name = 'pastureid'`, setting.DatabaseSetting.Name).GetFirst(pastureinfo).Error	if err != nil {		logs.Error(err)		return	}	pastureid := pastureinfo.Pastureid	downloadplandtl1List, err := tx.SQL(` select DATE_FORMAT(d1.begintime, '%Y-%m-%d %H:%i:%S') as begintime,	 DATE_FORMAT(d1.intime, '%Y-%m-%d %H:%i:%S') as intime ,f.id as feedid,d1.fname,d1.feedcode,f.autosecond,	f.autozone,d1.lweight,d1.sort,d1.buttontype,d1.actualweightminus,f.confirmstart,f.jmp from  downloadplandtl1 d1	 left join feed f 	on f.feedcode = d1.feedcode and f.pastureid = d1.pastureid  where d1.pid = ? and d1.pastureid = ? `, pid, pastureid).Query().List()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	downloadplandtl2List, err := tx.SQL(` select  d2.sort,DATE_FORMAT(d2.begintime, '%Y-%m-%d %H:%i:%S') as begintime ,DATE_FORMAT(d2.intime, '%Y-%m-%d %H:%i:%S')  as intime 	 ,d2.id,d2.pid,d2.fbarid,d2.fname as fbarname,d2.lweight,d.lpplantype,d2.actualweightminus ,ifnull(b.autozone,0) as autozone,ifnull(b.autosecond,"") as  autosecond,ifnull(b.isstart,1) as isstart 	 from  downloadplandtl2 d2	  join downloadedplan d  on d.id = d2.pid  	   left join  bar b on d2.fbarid = b.id where d2.pid = ? and d2.pastureid = ? `, pid, pastureid).Query().List()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	d1List := make([]map[string]interface{}, 0)	d2List := make([]map[string]interface{}, 0)	for _, d2item := range downloadplandtl2List {		data := make(map[string]interface{}, 0)		data["fbarid"] = d2item["fbarid"]		data["fbarname"] = d2item["fbarname"]		data["lweight"] = d2item["lweight"]		data["lpplantype"] = d2item["lpplantype"]		data["id"] = d2item["id"]		data["actualweightminus"] = d2item["actualweightminus"]		data["intime"] = d2item["intime"]		data["begintime"] = d2item["begintime"]		data["sort"] = d2item["sort"]		data["autozone"] = d2item["autozone"]		data["autosecond"] = d2item["autosecond"]		data["isstart"] = d2item["isstart"]		// data["jmp"] = d2item["jmp"]		d2List = append(d2List, data)	}	for _, d1item := range downloadplandtl1List {		d1 := make(map[string]interface{}, 0)		// lweight, _ := strconv.ParseFloat(d1item["lweight"].(string), 64)		d1["fname"] = d1item["fname"]		d1["feedcode"] = d1item["feedcode"]		d1["autosecond"] = d1item["autosecond"]		d1["autozone"] = d1item["autozone"]		d1["sort"] = d1item["sort"]		d1["buttontype"] = d1item["buttontype"]		d1["feedid"] = d1item["feedid"]		d1["lweight"] = d1item["lweight"]		d1["intime"] = d1item["intime"]		d1["begintime"] = d1item["begintime"]		d1["actualweightminus"] = d1item["actualweightminus"]		d1["confirmstart"] = d1item["confirmstart"]		d1["jmp"] = d1item["jmp"]		d1List = append(d1List, d1)	}	resData := make(map[string]interface{}, 0)	resData["mixing"] = d1List	resData["spillage"] = d2List	// data["plan"] = d1List	// dataList = append(dataList, data)	appG.Response(http.StatusOK, e.SUCCESS, resData)}func CompletePlan(c *gin.Context) {	appG := app.Gin{C: c}	dataByte, _ := ioutil.ReadAll(c.Request.Body)	parammaps := gofasion.NewFasion(string(dataByte))	pid := parammaps.Get("pid").ValueStr()	feedid := parammaps.Get("feedid").ValueStr()	lastactualweight := parammaps.Get("lastactualweight").ValueDefaultFloat64(0)	actualweightminus := parammaps.Get("actualweightminus").ValueDefaultFloat64(0)	actualweight := parammaps.Get("actualweight").ValueDefaultFloat64(0)	datacaptureno := parammaps.Get("datacaptureno").ValueStr()	begintime := parammaps.Get("begintime").ValueStr()	intime := parammaps.Get("intime").ValueStr()	sort := parammaps.Get("sort").ValueStr()	buttontype := parammaps.Get("buttontype").ValueStr()	lpplantype := parammaps.Get("lpplantype").ValueDefaultInt64(0)	d2id := parammaps.Get("d2id").ValueStr()	// pastureid := parammaps.Get("pastureid").ValueStr()	tx := restful.Engine.NewSession()	defer tx.Close()	fmt.Println(string(dataByte))	pastureinfo := new(udPastureInfo)	err := tx.SQL(`select column_default  as pastureid,(select werks from pasture where pastureid = column_default)  werks  from    information_schema.COLUMNS	WHERE table_name = 'recweight' AND table_schema = ? AND column_name = 'pastureid'`, setting.DatabaseSetting.Name).GetFirst(pastureinfo).Error	if err != nil {		logs.Error(err)		return	}	pastureid := pastureinfo.Pastureid	_, err = tx.SQL(` update downloadedplan set  tmrid = ( select id from tmr where  datacaptureno = ? and pastureid = ?) , 	tmrtname = ( select eqcode from tmr where  datacaptureno = ? and pastureid = ?) where id = ? and tmrid != ( select id from tmr where  datacaptureno = ? and pastureid = ?)`,		datacaptureno, pastureid, datacaptureno, pastureid, pid, datacaptureno, pastureid).Execute()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	if lpplantype == 0 {		_, err := tx.SQL(` update downloadplandtl1 set  begintime = ? , actualweightminus = ifnull(actualweightminus,0) +? ,		intime = ? ,actualweight = ? ,optdevice = ( select id from tmr where datacaptureno = ? and pastureid = ?),buttontype = ?,		havebuttom = 1,lastactualweight = ?  where pid = ?		and sort = ? and feedcode = (select feedcode from feed where id = ? ) and  (intime is null )`,			begintime, actualweightminus, intime, actualweight, datacaptureno, pastureid, buttontype, lastactualweight, pid, sort, feedid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		_, err = tx.SQL(` update downloadplandtl1_exec set begintime = ? ,actualweightminus = ifnull(actualweightminus,0)+ ? ,		intime = ? ,actualweight = ? ,optdevice = ( select id from tmr where datacaptureno = ? and pastureid = ?),buttontype = ?,havebuttom = 1,lastactualweight = ?  where pid = ?		and sort = ?  and  (intime is null ) `,			begintime, actualweightminus, intime, actualweight, datacaptureno, pastureid, buttontype, lastactualweight, pid, sort).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		d2List, err := tx.SQL(` select * from downloadplandtl2 where pid = ?  order by sort `, pid).Query().List()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		var sumlweight float64		for _, d2 := range d2List {			lweight, _ := strconv.ParseFloat(d2["lweight"].(string), 64)			sumlweight += lweight		}		for _, d2 := range d2List {			if actualweightminus <= 0 {				break			}			lweight, _ := strconv.ParseFloat(d2["lweight"].(string), 64)			actualweight := lweight / sumlweight * actualweightminus			last := lweight / sumlweight * lastactualweight			_, err := tx.SQL(` update downloadplandtl2 set actualweightminus = ifnull(actualweightminus,0)+?, actualweight = ?,			lastactualweight = ? , intime = ?,begintime = ? ,havebuttom = 1,buttontype = ? where id = ?   and  (intime is null ) `, actualweight,				actualweight, last, intime, begintime, buttontype, d2["id"]).Execute()			if err != nil {				logs.Error(err)				appG.Response(http.StatusInternalServerError, e.ERROR, err)				return			}		}		execExist, err := tx.SQL(` select id from downloadplandtl2 where pid = ? and  (intime is null )  `, pid).Exist()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		if !execExist {			_, err := tx.SQL(` update downloadedplan set iscompleted = 1, completedtime = ? where id = ?  `, intime, pid).Execute()			if err != nil {				logs.Error(err)				appG.Response(http.StatusInternalServerError, e.ERROR, err)				return			}		}		_, err = tx.SQL(` update tmr set projid = ? ,lastbuttontime =? , nextsort = 		(select sort from downloadplandtl1  where pid = ? and intime is  null  order by sort limit 0,1 )  where datacaptureno = ?  and pastureid = ?    `,			pid, intime, pid, datacaptureno, pastureid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}	} else if lpplantype == 1 {		_, err := tx.SQL(` update downloadplandtl2 set actualweightminus =ifnull(actualweightminus,0)+?, actualweight = ?,		lastactualweight = ? , intime = ? ,begintime = ?,havebuttom = 1,buttontype = ? where id = ?    and  (intime is null  )  `,			actualweightminus, actualweight, lastactualweight, intime, begintime, buttontype, d2id).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		_, err = tx.SQL(` update downloadplandtl1_exec set  actualweightminus =ifnull(actualweightminus,0)+?, actualweight = ?,		lastactualweight = ? , intime = ?,begintime= ? ,havebuttom = 1,buttontype= ?  where pid = ?     and  (intime is null )  and sort = ? `,			actualweightminus, actualweight, lastactualweight, intime, begintime, buttontype, pid, sort).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		_, err = tx.SQL(` update downloadplandtl1 set  actualweightminus =ifnull(actualweightminus,0)+?, actualweight = ?,		lastactualweight = ? , intime = ?,begintime=? ,havebuttom = 1,buttontype = ?  where pid = ?     and  (intime is null  )   and sort = ?  `,			actualweightminus, actualweight, lastactualweight, intime, begintime, buttontype, pid, sort).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		exist, err := tx.SQL(` select id from downloadplandtl2 where pid = ?  and intime is null `, pid).Exist()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		if !exist {			_, err := tx.SQL(` update downloadedplan set iscompleted = 1, completedtime = ? where id = ?   `, intime, pid).Execute()			if err != nil {				logs.Error(err)				appG.Response(http.StatusInternalServerError, e.ERROR, err)				return			}		}		_, err = tx.SQL(` update tmr set projid = ? ,lastbuttontime =? , nextsort = (select sort from downloadplandtl2  			where pid = ? and intime is  null  order by sort limit 0,1 )  where datacaptureno = ?  and pastureid = ?    `,			pid, intime, pid, datacaptureno, pastureid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}	} else if lpplantype == 2 {		_, err := tx.SQL(` update downloadplandtl1 set  begintime = ? , actualweightminus =ifnull(actualweightminus,0)+ ? ,		intime = ? ,actualweight = ? ,optdevice = ( select id from tmr where datacaptureno = ? and pastureid = ?),buttontype = ?,havebuttom = 1,lastactualweight = ?,begintime = ?  where pid = ?		and sort = ? and feedcode = (select feedcode from feed where id = ? )   and  (intime is null  )`,			begintime, actualweightminus, intime, actualweight, datacaptureno, pastureid, buttontype, lastactualweight, begintime, pid, sort, feedid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		_, err = tx.SQL(` update downloadplandtl1_exec set begintime = ? ,actualweightminus =ifnull(actualweightminus,0)+ ? ,		intime = ? ,actualweight = ? ,optdevice = ( select id from tmr where datacaptureno = ? and pastureid = ?),buttontype = ?,havebuttom = 1,lastactualweight = ?,begintime = ?  where pid = ?		and sort = ?   and  (intime is null )  `,			begintime, actualweightminus, intime, actualweight, datacaptureno, pastureid, buttontype, lastactualweight, begintime, pid, sort).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		_, err = tx.SQL(` update tmr set projid = ? ,lastbuttontime =? , nextsort = 		(select sort from downloadplandtl1  where pid = ? and intime is  null  order by sort limit 0,1 )  where datacaptureno = ?  and pastureid = ?    `,			pid, intime, pid, datacaptureno, pastureid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}	} else {		_, err := tx.SQL(` update downloadplandtl2 set actualweightminus =ifnull(actualweightminus,0)+?, actualweight = ?,		lastactualweight = ? , intime = ? ,havebuttom = 1,buttontype = ?,begintime = ? where id = ?     and  (intime is null )  `,			actualweightminus, actualweight, lastactualweight, intime, buttontype, begintime, d2id).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		exist, err := tx.SQL(` select id from downloadplandtl2 where pid = ? and intime is null`, pid).Exist()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		if !exist {			_, err := tx.SQL(` update downloadedplan set iscompleted = 1, completedtime = ? where id = ?   `, intime, pid).Execute()			if err != nil {				logs.Error(err)				appG.Response(http.StatusInternalServerError, e.ERROR, err)				return			}		}		_, err = tx.SQL(` update tmr set projid = ? ,lastbuttontime =? , nextsort =		 (select sort from downloadplandtl2  where pid = ? and intime is  null  order by sort limit 0,1 )  where datacaptureno = ?  and pastureid = ?  `,			pid, intime, pid, datacaptureno, pastureid).Execute()		if err != nil {			logs.Error(err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}	}	appG.Response(http.StatusOK, e.SUCCESS, true)}func AddRealTimeWeight(c *gin.Context) {	appG := app.Gin{C: c}	dataByte, _ := ioutil.ReadAll(c.Request.Body)	fsion := gofasion.NewFasion(string(dataByte))	pid := fsion.Get("pid").ValueStr()	// pastureid := fsion.Get("pastureid").ValueStr()	weightjson := fsion.Get("weightjson").ValueStr()	// weightjson	tx := restful.Engine.NewSession()	defer tx.Close()	pastureinfo := new(udPastureInfo)	err := tx.SQL(`select column_default  as pastureid,(select werks from pasture where pastureid = column_default)  werks  from    information_schema.COLUMNS	WHERE table_name = 'recweight' AND table_schema = ? AND column_name = 'pastureid'`, setting.DatabaseSetting.Name).GetFirst(pastureinfo).Error	if err != nil {		logs.Error(err)		return	}	pastureid := pastureinfo.Pastureid	dataList, err := tx.SQL(` select weightjson from recweightmuster where pid = ? and pastureid = ? `, pid, pastureid).QueryString()	if err != nil {		logs.Error("AddRealTimeWeight-error1: ", err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	weightList := make([]map[string]interface{}, 0)	if len(dataList) > 0 {		weight := ""		for _, item := range dataList {			weight = item["weightjson"]		}		list := make([]map[string]interface{}, 0)		err = json.Unmarshal([]byte(weight), &weightList)		if err != nil {			logs.Error("AddRealTimeWeight-error2: ", err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		err = json.Unmarshal([]byte(weightjson), &list)		if err != nil {			logs.Error("AddRealTimeWeight-error3: ", err)			appG.Response(http.StatusInternalServerError, e.ERROR, err)			return		}		weightList = append(weightList, list...)	} else {		json.Unmarshal([]byte(weightjson), &weightList)	}	weightbyte, err := json.Marshal(weightList)	if err != nil {		logs.Error("AddRealTimeWeight-error4: ", err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	_, err = tx.SQL(`REPLACE INTO recweightmuster (pid, pastureid, weightjson)values (?,?,?)`, pid, pastureid, string(weightbyte)).Execute()	if err != nil {		logs.Error("AddRealTimeWeight-error5: ", err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	appG.Response(http.StatusOK, e.SUCCESS, true)}func GetDownloadedplanMaterialList(c *gin.Context) {	appG := app.Gin{C: c}	dataByte, _ := ioutil.ReadAll(c.Request.Body)	fsion := gofasion.NewFasion(string(dataByte))	// pastureid := fsion.Get("pastureid").ValueStr()	date := fsion.Get("date").ValueStr()	datacaptureno := fsion.Get("datacaptureno").ValueStr()	// date := reqInfo.Date	// datacaptureno := reqInfo.Datacaptureno	tx := restful.Engine.NewSession()	defer tx.Close()	pastureinfo := new(udPastureInfo)	err := tx.SQL(`select column_default  as pastureid,(select werks from pasture where pastureid = column_default)  werks  from    information_schema.COLUMNS	WHERE table_name = 'recweight' AND table_schema = ? AND column_name = 'pastureid'`, setting.DatabaseSetting.Name).GetFirst(pastureinfo).Error	if err != nil {		logs.Error(err)		return	}	pastureid := pastureinfo.Pastureid	tclassid := ""	tmrList, err := tx.SQL(` select tclassid from tmr where datacaptureno = ?  `, datacaptureno).QueryString()	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	for _, tmr := range tmrList {		tclassid = tmr["tclassid"]	}	downloadedplanInfo := make([]*downloadedplan, 0)	err = tx.SQL(` select  d.lpplantype,d.times,d.sort,d.times shifts,d.id,date_format(d.mydate ,'%Y-%m-%d') as mydate ,d.projname,d.datacaptureno,d.lweight,d.havebutton,d.feedpname,d.iscompleted,d.remark,d.tmrtname from downloadedplan d	where d.mydate = ? and d.pastureid = ? and (d.datacaptureno is null or d.datacaptureno = ?) 	and ( (? IN(1,2) AND d.lpplanType IN (0,1))  OR (? IN (1,3) AND d.lpplanType IN (0,2))) 	and if(d.lpplantype = 2,if((select count(1) from downloadplandtl1 d1 	where d1.pid = (select id from downloadedplan dd where dd.mydate = d.mydate 		and dd.pastureId = d.pastureid and dd.lpplanType IN (0,1) and dd.pid = d.pid and dd.times = d.times ) 		and d1.type = 0 and d1.havebuttom = 0 ) >0 ,1,0 ),0) = 0	 order by d.sort  `,		date, pastureid, datacaptureno, tclassid, tclassid).Find(&downloadedplanInfo)	if err != nil {		logs.Error(err)		appG.Response(http.StatusInternalServerError, e.ERROR, err)		return	}	appG.Response(http.StatusOK, e.SUCCESS, downloadedplanInfo)}
 |