|  | @@ -7,6 +7,7 @@ import (
 | 
											
												
													
														|  |  	"fmt"
 |  |  	"fmt"
 | 
											
												
													
														|  |  	"io/ioutil"
 |  |  	"io/ioutil"
 | 
											
												
													
														|  |  	"net/http"
 |  |  	"net/http"
 | 
											
												
													
														|  | 
 |  | +	"strconv"
 | 
											
												
													
														|  |  	"strings"
 |  |  	"strings"
 | 
											
												
													
														|  |  	"time"
 |  |  	"time"
 | 
											
												
													
														|  |  	"tmr-watch/conf/setting"
 |  |  	"tmr-watch/conf/setting"
 | 
											
										
											
												
													
														|  | @@ -37,7 +38,7 @@ func YqCron() {
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	token := getToken()
 |  |  	token := getToken()
 | 
											
												
													
														|  | -	fmt.Println("aaaaaaaaaaaa   ", token)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	syncBar(token, pastureinfo.Pastureid, pastureinfo.Werks)
 | 
											
												
													
														|  |  	c := cron.New()
 |  |  	c := cron.New()
 | 
											
												
													
														|  |  	c.AddFunc("0 0 1 * * *", func() {
 |  |  	c.AddFunc("0 0 1 * * *", func() {
 | 
											
												
													
														|  |  		token := getToken()
 |  |  		token := getToken()
 | 
											
										
											
												
													
														|  | @@ -48,6 +49,7 @@ func YqCron() {
 | 
											
												
													
														|  |  		YcUtirPush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 |  |  		YcUtirPush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 | 
											
												
													
														|  |  		YcMaterialIssuePush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 |  |  		YcMaterialIssuePush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 | 
											
												
													
														|  |  		YcBarFeedRemainPush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 |  |  		YcBarFeedRemainPush(pastureinfo.Pastureid, pastureinfo.Werks, now, token)
 | 
											
												
													
														|  | 
 |  | +		syncBar(token, pastureinfo.Pastureid, pastureinfo.Werks)
 | 
											
												
													
														|  |  	})
 |  |  	})
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	c.AddFunc("0 0 6 * * *", func() {
 |  |  	c.AddFunc("0 0 6 * * *", func() {
 | 
											
										
											
												
													
														|  | @@ -133,7 +135,7 @@ func getToken() string {
 | 
											
												
													
														|  |  	apiKey := "3c6bbff8cf1e496eb8eb9025cd8537fh"
 |  |  	apiKey := "3c6bbff8cf1e496eb8eb9025cd8537fh"
 | 
											
												
													
														|  |  	secretKey := "26b5d9f63b6142de8f102afb1aa2eb7g"
 |  |  	secretKey := "26b5d9f63b6142de8f102afb1aa2eb7g"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	req, err := http.NewRequest("POST", "https://test.vmuyun.com/base-server/outSide/token", nil)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	req, err := http.NewRequest("POST", "https://vmuyun.com/base-server/outSide/token", nil)
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		logs.Error(err)
 |  |  		logs.Error(err)
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
										
											
												
													
														|  | @@ -170,7 +172,7 @@ func getToken() string {
 | 
											
												
													
														|  |  func postPush(data string, msgtype int, tx *xorm.Session, pastureId, token string) {
 |  |  func postPush(data string, msgtype int, tx *xorm.Session, pastureId, token string) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	// jsonStr, _ := json.Marshal(data)
 |  |  	// jsonStr, _ := json.Marshal(data)
 | 
											
												
													
														|  | -	url := "https://test.vmuyun.com/project-server/openApi/feeding/pushData"
 |  | 
 | 
											
												
													
														|  | 
 |  | +	url := "https://vmuyun.com/project-server/openApi/feeding/pushData"
 | 
											
												
													
														|  |  	req, err := http.NewRequest("POST", url, strings.NewReader((data)))
 |  |  	req, err := http.NewRequest("POST", url, strings.NewReader((data)))
 | 
											
												
													
														|  |  	if err != nil {
 |  |  	if err != nil {
 | 
											
												
													
														|  |  		logs.Error(err)
 |  |  		logs.Error(err)
 | 
											
										
											
												
													
														|  | @@ -552,3 +554,668 @@ func YcMaterialIssuePush(pastureId, farmId, date, token string) error {
 | 
											
												
													
														|  |  	fmt.Println(reqJson)
 |  |  	fmt.Println(reqJson)
 | 
											
												
													
														|  |  	return nil
 |  |  	return nil
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func syncBar(token, pastureid, werks string) {
 | 
											
												
													
														|  | 
 |  | +	req, err := http.NewRequest("GET", "https://vmuyun.com/project-server/openApi/feeding/penList", nil)
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		// return nil
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	req.Header.Set("Authorization", token)
 | 
											
												
													
														|  | 
 |  | +	req.Header.Set("Content-Type", "application/json")
 | 
											
												
													
														|  | 
 |  | +	client := &http.Client{}
 | 
											
												
													
														|  | 
 |  | +	resp, err := client.Do(req)
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	defer resp.Body.Close()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	body, _ := ioutil.ReadAll(resp.Body)
 | 
											
												
													
														|  | 
 |  | +	data := make(map[string]interface{}, 0)
 | 
											
												
													
														|  | 
 |  | +	json.Unmarshal(body, &data)
 | 
											
												
													
														|  | 
 |  | +	dataList := data["data"].([]interface{})
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	tx := restful.Engine.NewSession()
 | 
											
												
													
														|  | 
 |  | +	defer tx.Close()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for _, item := range dataList {
 | 
											
												
													
														|  | 
 |  | +		arg := item.(map[string]interface{})
 | 
											
												
													
														|  | 
 |  | +		fmt.Println(arg)
 | 
											
												
													
														|  | 
 |  | +		if fmt.Sprintf("%v", arg["farmId"]) == werks {
 | 
											
												
													
														|  | 
 |  | +			_, err := tx.Exec(` insert into bar(pen,bname,bcode,pastureid)values(?,?,?,?)  ON DUPLICATE KEY UPDATE  pen = ? `, arg["districtName"],
 | 
											
												
													
														|  | 
 |  | +				fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"]), fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"]), pastureid, arg["houseName"])
 | 
											
												
													
														|  | 
 |  | +			fmt.Println(err)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +			// insertSql := `insert into feedp(pastureid,barname,barid,ccount)VALUES(?,?,(select id from bar where bname = ?),?)
 | 
											
												
													
														|  | 
 |  | +			// 	ON DUPLICATE KEY UPDATE ccount = ? ,barname = ?  `
 | 
											
												
													
														|  | 
 |  | +			// _, err = tx.SQL(insertSql, pastureid, fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"]),
 | 
											
												
													
														|  | 
 |  | +			// 	fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"]), arg["sheepCount"], arg["sheepCount"],
 | 
											
												
													
														|  | 
 |  | +			// 	fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"])).Execute()
 | 
											
												
													
														|  | 
 |  | +			// fmt.Println(err)
 | 
											
												
													
														|  | 
 |  | +			// tx.SQL(` select  from feedp where barname = ? `)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +			// barList := make([]*bar,0)
 | 
											
												
													
														|  | 
 |  | +			// b := new(bar)
 | 
											
												
													
														|  | 
 |  | +			// b.BarName = fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"])
 | 
											
												
													
														|  | 
 |  | +			// b.Ccount = arg["sheepCount"]
 | 
											
												
													
														|  | 
 |  | +			// 	err = tx.SQL(`	select fp.barname,fp.ccount,ratio,ft.tname ftname,ifnull((select tratio from fpdetail  where barid = fp.barid  and times = 1 ),0) times1,
 | 
											
												
													
														|  | 
 |  | +			// ifnull((select tratio from fpdetail  where barid = fp.barid  and times = 2 ),0) times2 ,
 | 
											
												
													
														|  | 
 |  | +			// ifnull((select tratio from fpdetail  where barid = fp.barid  and times = 3 ),0) times3 ,
 | 
											
												
													
														|  | 
 |  | +			// ifnull((select tratio from fpdetail  where barid = fp.barid  and times = 4 ),0) times4 ,
 | 
											
												
													
														|  | 
 |  | +			// ifnull((select tratio from fpdetail  where barid = fp.barid  and times =5 ),0) times5  ,
 | 
											
												
													
														|  | 
 |  | +			// ifnull((select tratio from fpdetail  where barid = fp.barid  and times =6 ),0) times6
 | 
											
												
													
														|  | 
 |  | +			//  from feedp fp  join feedtemplet ft on ft.id = fp.ftid  where ratio > 0 and fp.barname = ? `, fmt.Sprintf("%v-%v", arg["houseName"], arg["compartmentName"])).GetFirst(b).Error
 | 
											
												
													
														|  | 
 |  | +			// fmt.Println(err)
 | 
											
												
													
														|  | 
 |  | +			// fpdBatchEdit(pastureid, b)
 | 
											
												
													
														|  | 
 |  | +			// {"pastureId":"1653271339","barList":[{"barname":"14","ccount":155,"ratio":"100.00","ftname":"高产2配方",
 | 
											
												
													
														|  | 
 |  | +			// "times1":"41","times2":"25","times3":"25","times4":0,"times5":0,"times6":0}]}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +type bar struct {
 | 
											
												
													
														|  | 
 |  | +	BarName string  `xorm:"barname"`
 | 
											
												
													
														|  | 
 |  | +	Ccount  string  `xorm:"ccount"`
 | 
											
												
													
														|  | 
 |  | +	Ratio   string  `xorm:"ratio"`
 | 
											
												
													
														|  | 
 |  | +	Ftname  string  `xorm:"ftname"`
 | 
											
												
													
														|  | 
 |  | +	Times1  float64 `xorm:"times1"`
 | 
											
												
													
														|  | 
 |  | +	Times2  float64 `xorm:"times2"`
 | 
											
												
													
														|  | 
 |  | +	Times3  float64 `xorm:"times3"`
 | 
											
												
													
														|  | 
 |  | +	Times4  float64 `xorm:"times4"`
 | 
											
												
													
														|  | 
 |  | +	Times5  float64 `xorm:"times5"`
 | 
											
												
													
														|  | 
 |  | +	Times6  float64 `xorm:"times6"`
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func fpdBatchEdit(pastureid string, b *bar) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	// appG := app.Gin{C: c}
 | 
											
												
													
														|  | 
 |  | +	// dataByte, _ := ioutil.ReadAll(c.Request.Body)
 | 
											
												
													
														|  | 
 |  | +	// fsions := gofasion.NewFasion(string(dataByte))
 | 
											
												
													
														|  | 
 |  | +	// barList := fsions.Get("barList").Array()
 | 
											
												
													
														|  | 
 |  | +	// pastureid := fsions.Get("pastureId").ValueStr()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	tx := restful.Engine.NewSession()
 | 
											
												
													
														|  | 
 |  | +	defer tx.Close()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	oldFpdList, err := tx.SQL(` select  ifnull(ROUND((1-ptsrate)*weight,2)-ptuse,"") fweight,fpd.id,fpd.barname,fpd.weight,fpd.times,fp.ftweight,fp.supplyweight  from fpdetail fpd
 | 
											
												
													
														|  | 
 |  | +	join feedp fp on fp.barid = fpd.barid and fpd.pastureid = fp.pastureid where fpd.pastureid = ?`, pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		// appG.Response(http.StatusInternalServerError, e.ERROR, false)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	// for _, barFsions := range barList {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	dataexcel := make(map[string]interface{}, 0)
 | 
											
												
													
														|  | 
 |  | +	dataexcel["barname"] = b.BarName
 | 
											
												
													
														|  | 
 |  | +	dataexcel["ccount"] = b.Ccount
 | 
											
												
													
														|  | 
 |  | +	dataexcel["ratio"] = b.Ratio
 | 
											
												
													
														|  | 
 |  | +	dataexcel["ftname"] = b.Ftname
 | 
											
												
													
														|  | 
 |  | +	// dataexcel["ptsfname"] = barFsions.Get("ptsfname").ValueStr()
 | 
											
												
													
														|  | 
 |  | +	if dataexcel["ftname"] == "" || dataexcel["ccount"] == "0" || dataexcel["ratio"] == "0" {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	dataexcel["1"] = b.Times1
 | 
											
												
													
														|  | 
 |  | +	dataexcel["2"] = b.Times2
 | 
											
												
													
														|  | 
 |  | +	dataexcel["3"] = b.Times3
 | 
											
												
													
														|  | 
 |  | +	dataexcel["4"] = b.Times4
 | 
											
												
													
														|  | 
 |  | +	dataexcel["5"] = b.Times5
 | 
											
												
													
														|  | 
 |  | +	dataexcel["6"] = b.Times6
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	ftexist, err := tx.SQL(` select id from  feedp where barname = ?  and pastureid = ? and ftname = ?  `, dataexcel["barname"], pastureid, dataexcel["ftname"]).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !ftexist {
 | 
											
												
													
														|  | 
 |  | +		fmt.Println(dataexcel["barname"], pastureid, dataexcel["ftname"])
 | 
											
												
													
														|  | 
 |  | +		tx.SQL(` delete from lpplandtl1 where barname = ? and pastureid = ?  `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		tx.SQL(`  update fpdetail set ptuse = 0  where  barname = ? and pastureid = ?   `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	exist, err := tx.SQL(` select id from  feedp where barname = ?  and pastureid = ?  `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist {
 | 
											
												
													
														|  | 
 |  | +		_, err := tx.SQL(` insert into  feedp(pastureid,barid,barname,ccount)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,?) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"], 0).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	var feedpargs []interface{}
 | 
											
												
													
														|  | 
 |  | +	upFeedpSql := `update  feedp set ccount = ? ,ratio = ? ,ccountratio = ?*(?*0.01)  `
 | 
											
												
													
														|  | 
 |  | +	feedpargs = append(feedpargs, dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"])
 | 
											
												
													
														|  | 
 |  | +	if _, ok := dataexcel["ftname"]; ok {
 | 
											
												
													
														|  | 
 |  | +		feedpargs = append(feedpargs, dataexcel["ftname"], pastureid, dataexcel["ftname"])
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += ` , ftid = (select id from feedtemplet where tname = ? and pastureid = ? ),ftname = ? `
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += `,ftweight = (select sum(fweight) fweight from ftdetail 
 | 
											
												
													
														|  | 
 |  | +	where  ftid = (select  id from feedtemplet  where tname = ? and pastureid = ?  )) *  (?*(?*0.01)) `
 | 
											
												
													
														|  | 
 |  | +		feedpargs = append(feedpargs, dataexcel["ftname"], pastureid, dataexcel["ccount"], dataexcel["ratio"])
 | 
											
												
													
														|  | 
 |  | +	} else {
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += ` , ftid = -1,ftname = '' ,ftweight = 0 `
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	if _, ok := dataexcel["ptsfname"]; ok {
 | 
											
												
													
														|  | 
 |  | +		feedpargs = append(feedpargs, dataexcel["ptsfname"], pastureid, dataexcel["ptsfname"])
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += ` , ptsfid = (select id from feedtemplet where tname = ? and pastureid = ? ),ptsfname = ? `
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += `,supplyweight = (select sum(fweight) fweight from ftdetail 
 | 
											
												
													
														|  | 
 |  | +	where  ftid = (select  id from feedtemplet  where tname = ? and pastureid = ?  )) *  (?*(?*0.01))`
 | 
											
												
													
														|  | 
 |  | +		feedpargs = append(feedpargs, dataexcel["ptsfname"], pastureid, dataexcel["ccount"], dataexcel["ratio"])
 | 
											
												
													
														|  | 
 |  | +	} else {
 | 
											
												
													
														|  | 
 |  | +		upFeedpSql += ` , ptsfid = -1,ptsfname = '',supplyweight = 0  `
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	upFeedpSql += " where barname = ?  and pastureid = ?  "
 | 
											
												
													
														|  | 
 |  | +	feedpargs = append(feedpargs, dataexcel["barname"], pastureid)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFeedpSql, feedpargs...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	exist1, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times = 1 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	if !exist1 {
 | 
											
												
													
														|  | 
 |  | +		_, err := tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,1,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	exist2, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times = 2 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist2 {
 | 
											
												
													
														|  | 
 |  | +		_, err = tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,2,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	exist3, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times =3 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist3 {
 | 
											
												
													
														|  | 
 |  | +		_, err = tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,3,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	exist4, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times = 4 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist4 {
 | 
											
												
													
														|  | 
 |  | +		_, err = tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,4,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	exist5, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times = 5 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist5 {
 | 
											
												
													
														|  | 
 |  | +		_, err = tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,5,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	exist6, err := tx.SQL(` select id from  fpdetail where barname = ?  and pastureid = ? and times = 6 `, dataexcel["barname"], pastureid).Exist()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	if !exist6 {
 | 
											
												
													
														|  | 
 |  | +		_, err = tx.SQL(` insert into  fpdetail(pastureid,barid,barname,times,ptuse,ptsuse,ptsrate,ptsid,ptid)values(?,(select id from bar where  bname = ? and pastureid = ? ),?,6,0,0,0,-1,-1) `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, dataexcel["barname"], pastureid, dataexcel["barname"]).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	upFpdSql := ` update fpdetail set  tratio = ? ,weight = (? *0.01) * ((select sum(fweight) fweight from ftdetail 
 | 
											
												
													
														|  | 
 |  | +	where  ftid = (select  id from feedtemplet  where tname = ? and pastureid = ?  )) *  (?*(?*0.01))) ,cowcount = ? ,
 | 
											
												
													
														|  | 
 |  | +	ccountradio= ?,ptid= (select id from feedtemplet where tname = ? and pastureid = ? )   where barname = ?
 | 
											
												
													
														|  | 
 |  | +	and pastureid = ? and times = ?`
 | 
											
												
													
														|  | 
 |  | +	var fpdargs1 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs1 = append(fpdargs1, dataexcel["1"], dataexcel["1"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 1)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs1...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	var fpdargs2 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs2 = append(fpdargs2, dataexcel["2"], dataexcel["2"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 2)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs2...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	var fpdargs3 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs3 = append(fpdargs3, dataexcel["3"], dataexcel["3"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 3)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs3...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	var fpdargs4 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs4 = append(fpdargs4, dataexcel["4"], dataexcel["4"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 4)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs4...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	var fpdargs5 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs5 = append(fpdargs5, dataexcel["5"], dataexcel["5"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 5)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs5...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	var fpdargs6 []interface{}
 | 
											
												
													
														|  | 
 |  | +	fpdargs6 = append(fpdargs6, dataexcel["6"], dataexcel["6"], dataexcel["ftname"], pastureid,
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ccount"], dataexcel["ratio"], dataexcel["ccount"], dataexcel["ratio"],
 | 
											
												
													
														|  | 
 |  | +		dataexcel["ftname"], pastureid, dataexcel["barname"], pastureid, 6)
 | 
											
												
													
														|  | 
 |  | +	_, err = tx.SQL(upFpdSql, fpdargs6...).Execute()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	// _, err = tx.SQL(`call updateLPPbyFPChange(?,( select id from feedp where barname = ?  and pastureid = ?))`, pastureid, dataexcel["barname"], pastureid).Execute()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	newList, err := tx.SQL(` select  ifnull(ROUND((1-ptsrate)*weight,2)-ptuse,"") fweight,id,ptid,weight,times from fpdetail where barname = ? and  pastureid = ? `, dataexcel["barname"], pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	// oldFpdList, err := tx.SQL(` select  fpd.id,fpd.barname,fpd.weight,fpd.times,fp.ftweight,fp.supplyweight  from fpdetail fpd
 | 
											
												
													
														|  | 
 |  | +	// join feedp fp on fp.barid = fpd.barid and fpd.pastureid = fp.pastureid where fpd.pastureid = ?`, pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	upFpdetailList := make([]*upFpdetail, 0)
 | 
											
												
													
														|  | 
 |  | +	for _, newfpd := range newList {
 | 
											
												
													
														|  | 
 |  | +		for _, oldfpd := range oldFpdList {
 | 
											
												
													
														|  | 
 |  | +			if oldfpd["id"].(int64) == newfpd["id"].(int64) {
 | 
											
												
													
														|  | 
 |  | +				var oldweight, newweight float64
 | 
											
												
													
														|  | 
 |  | +				if oldfpd["weight"] != nil {
 | 
											
												
													
														|  | 
 |  | +					oldweight, _ = strconv.ParseFloat(oldfpd["weight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				if newfpd["weight"] != nil {
 | 
											
												
													
														|  | 
 |  | +					newweight, _ = strconv.ParseFloat(newfpd["weight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				fweight, _ := strconv.ParseFloat(newfpd["fweight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +				upFpdetailList = append(upFpdetailList, &upFpdetail{
 | 
											
												
													
														|  | 
 |  | +					Old:     oldweight,
 | 
											
												
													
														|  | 
 |  | +					New:     newweight,
 | 
											
												
													
														|  | 
 |  | +					Times:   newfpd["times"].(int64),
 | 
											
												
													
														|  | 
 |  | +					Ptid:    newfpd["ptid"].(int64),
 | 
											
												
													
														|  | 
 |  | +					Fweight: fweight,
 | 
											
												
													
														|  | 
 |  | +					Id:      oldfpd["id"].(int64),
 | 
											
												
													
														|  | 
 |  | +				})
 | 
											
												
													
														|  | 
 |  | +				break
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	updateFpdetailByBar(pastureid, dataexcel["barname"].(string), upFpdetailList)
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +type lpplandtlInfo struct {
 | 
											
												
													
														|  | 
 |  | +	Id          int64   `xorm:"id"`
 | 
											
												
													
														|  | 
 |  | +	Pastureid   int64   `xorm:"pastureid"`
 | 
											
												
													
														|  | 
 |  | +	Lppid       int64   `xorm:"lppid"`
 | 
											
												
													
														|  | 
 |  | +	Barid       int64   `xorm:"barid"`
 | 
											
												
													
														|  | 
 |  | +	Barname     string  `xorm:"barname"`
 | 
											
												
													
														|  | 
 |  | +	Fpdid       int64   `xorm:"fpdid"`
 | 
											
												
													
														|  | 
 |  | +	Fttype      int64   `xorm:"fttype"`
 | 
											
												
													
														|  | 
 |  | +	Lweight     float64 `xorm:"lweight"`
 | 
											
												
													
														|  | 
 |  | +	Sort        int64   `xorm:"sort"`
 | 
											
												
													
														|  | 
 |  | +	Tmrid       int64   `xorm:"tmrid"`
 | 
											
												
													
														|  | 
 |  | +	Tmrname     string  `xorm:"tmrname"`
 | 
											
												
													
														|  | 
 |  | +	Cowcount    int64   `xorm:"cowcount"`
 | 
											
												
													
														|  | 
 |  | +	Ccountradio float64 `xorm:"ccountradio"`
 | 
											
												
													
														|  | 
 |  | +	Background  string  `xorm:"background"`
 | 
											
												
													
														|  | 
 |  | +	Lweighthis  float64 `xorm:"lweighthis"`
 | 
											
												
													
														|  | 
 |  | +	Maxweight   float64 `xorm:"maxweight"`
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +type upFpdetail struct {
 | 
											
												
													
														|  | 
 |  | +	Old     float64
 | 
											
												
													
														|  | 
 |  | +	New     float64
 | 
											
												
													
														|  | 
 |  | +	Times   int64
 | 
											
												
													
														|  | 
 |  | +	Ptid    int64
 | 
											
												
													
														|  | 
 |  | +	Fweight float64
 | 
											
												
													
														|  | 
 |  | +	Id      int64
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func updateFpdetailByBar(pastureid, barname string, dataList []*upFpdetail) error {
 | 
											
												
													
														|  | 
 |  | +	tx := restful.Engine.NewSession()
 | 
											
												
													
														|  | 
 |  | +	defer tx.Close()
 | 
											
												
													
														|  | 
 |  | +	tx.Begin()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	fpdList, err := tx.SQL(` select  id,ifnull(ROUND((1-ifnull(ptsrate,0))*weight,2),"") weight,ptuse,times  from fpdetail where pastureid = ?  and barname = ? order by times `,
 | 
											
												
													
														|  | 
 |  | +		pastureid, barname).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for _, fpd := range fpdList {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		lpplandList, err := tx.SQL(` select  lppland.id,ifnull(lppland.lweight,0) lweight from lpplandtl1 lppland join lpplan lpp on lpp.id = lppland.lppid 
 | 
											
												
													
														|  | 
 |  | +where lppland.pastureid = ?  and lppland.fpdid = ? and lpp.times = ?  order by lpp.sort desc  `,
 | 
											
												
													
														|  | 
 |  | +			pastureid, fpd["id"], fpd["times"]).Query().List()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			return err
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		var lweight float64
 | 
											
												
													
														|  | 
 |  | +		for _, lppland := range lpplandList {
 | 
											
												
													
														|  | 
 |  | +			lweight1, _ := strconv.ParseFloat(lppland["lweight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +			lweight += lweight1
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		fpdweight, _ := strconv.ParseFloat(fpd["weight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +		ptuse, _ := strconv.ParseFloat(fpd["ptuse"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		if fpdweight >= ptuse && lweight == ptuse {
 | 
											
												
													
														|  | 
 |  | +			continue
 | 
											
												
													
														|  | 
 |  | +		} else {
 | 
											
												
													
														|  | 
 |  | +			if lweight <= fpdweight {
 | 
											
												
													
														|  | 
 |  | +				_, err := tx.SQL(` update fpdetail set ptuse = ?  where id = ? `, lweight, fpd["id"]).Execute()
 | 
											
												
													
														|  | 
 |  | +				if err != nil {
 | 
											
												
													
														|  | 
 |  | +					tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +					logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +					return err
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			} else {
 | 
											
												
													
														|  | 
 |  | +				weight := lweight - fpdweight
 | 
											
												
													
														|  | 
 |  | +				_, err = tx.SQL(`UPDATE fpdetail SET ptuse=? 
 | 
											
												
													
														|  | 
 |  | +				WHERE pastureid=? AND id=?`, fpdweight, pastureid, fpd["id"]).Execute()
 | 
											
												
													
														|  | 
 |  | +				if err != nil {
 | 
											
												
													
														|  | 
 |  | +					tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +					logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +					return err
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				for _, lppland := range lpplandList {
 | 
											
												
													
														|  | 
 |  | +					lpplandlweight, _ := strconv.ParseFloat(lppland["lweight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +					if weight >= lpplandlweight {
 | 
											
												
													
														|  | 
 |  | +						weight = weight - lpplandlweight
 | 
											
												
													
														|  | 
 |  | +						_, err := tx.SQL(` delete from  lpplandtl1  where id = ? `, lppland["id"]).Execute()
 | 
											
												
													
														|  | 
 |  | +						if err != nil {
 | 
											
												
													
														|  | 
 |  | +							tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +							logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +							return err
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					} else {
 | 
											
												
													
														|  | 
 |  | +						lpplandlweight, _ := strconv.ParseFloat(lppland["lweight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +						_, err := tx.SQL(` update   lpplandtl1 set lweight = ? where id = ? `, lpplandlweight-weight, lppland["id"]).Execute()
 | 
											
												
													
														|  | 
 |  | +						if err != nil {
 | 
											
												
													
														|  | 
 |  | +							tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +							logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +							return err
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +						weight = 0
 | 
											
												
													
														|  | 
 |  | +						break
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for _, list := range dataList {
 | 
											
												
													
														|  | 
 |  | +		ftmap := make(map[string]interface{})
 | 
											
												
													
														|  | 
 |  | +		ftmap["old"] = list.Old
 | 
											
												
													
														|  | 
 |  | +		ftmap["new"] = list.New
 | 
											
												
													
														|  | 
 |  | +		ftmap["times"] = list.Times
 | 
											
												
													
														|  | 
 |  | +		ftmap["ptid"] = strconv.FormatInt(list.Ptid, 10)
 | 
											
												
													
														|  | 
 |  | +		ftmap["ptsid"] = ""
 | 
											
												
													
														|  | 
 |  | +		// fmt.Println(ftmap)
 | 
											
												
													
														|  | 
 |  | +		// select * from (SELECT TRIM(id) id,times,tratio,ifnull(ROUND(ptsrate*weight,2)-ptsuse,"") weight,TRIM(barid) barid,TRIM(pastureid) pastureid,TRIM(ptid) ptid,TRIM(ptsid ) ptsid ,
 | 
											
												
													
														|  | 
 |  | +		// (select bname  from bar where pastureid =fpdetail.pastureid and id = fpdetail.barid ) barname,concat(0) AS fttype,cowcount,ccountradio,1 isfill  FROM fpdetail
 | 
											
												
													
														|  | 
 |  | +		// WHERE fpdetail.pastureid = ?   and barname = ? and  times = ?
 | 
											
												
													
														|  | 
 |  | +		// UNION
 | 
											
												
													
														|  | 
 |  | +		fpdDataList, err := tx.SQL(`
 | 
											
												
													
														|  | 
 |  | +			SELECT TRIM(id) id,times,tratio,ifnull(ROUND((1-ptsrate)*weight,2)-ptuse,"") weight,TRIM(barid) barid,TRIM(pastureid) pastureid,TRIM(ptid) ptid,TRIM(ptsid ) ptsid ,
 | 
											
												
													
														|  | 
 |  | +			(select bname  from bar where pastureid =fpdetail.pastureid and id = fpdetail.barid ) barname,concat(1) AS fttype,cowcount,ccountradio,0 isfill  FROM fpdetail
 | 
											
												
													
														|  | 
 |  | +			WHERE fpdetail.pastureid = ?  and barname = ? and  times = ? `, pastureid, barname, ftmap["times"]).Query().List()
 | 
											
												
													
														|  | 
 |  | +		// fmt.Println(pastureid, id, ftmap["times"], pastureid, id, ftmap["times"])
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		for _, fpd := range fpdDataList {
 | 
											
												
													
														|  | 
 |  | +			if fpd["times"].(int64) == ftmap["times"].(int64) && (fpd["ptid"].(string) == ftmap["ptid"].(string) || fpd["ptsid"].(string) == ftmap["ptsid"].(string)) {
 | 
											
												
													
														|  | 
 |  | +				// fttype := -1
 | 
											
												
													
														|  | 
 |  | +				// if fpd["fttype"].(string) == "1" {
 | 
											
												
													
														|  | 
 |  | +				fttype := 1
 | 
											
												
													
														|  | 
 |  | +				// }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				var fweight float64
 | 
											
												
													
														|  | 
 |  | +				var lweight float64
 | 
											
												
													
														|  | 
 |  | +				lpplandtl1List := make([]*lpplandtlInfo, 0)
 | 
											
												
													
														|  | 
 |  | +				err = tx.SQL(`select lppland.*,t.maxstirfeed  maxweight from lpplan lpp
 | 
											
												
													
														|  | 
 |  | +					join lpplandtl1 lppland on lpp.id = lppland.lppid  
 | 
											
												
													
														|  | 
 |  | +					join tmr t on t.id = lpp.tmrid
 | 
											
												
													
														|  | 
 |  | +					where lppland.fpdid =?
 | 
											
												
													
														|  | 
 |  | +					and lppland.fttype = ? and lpp.pastureid = ?  and lpp.times  = ? order by lpp.sort desc `,
 | 
											
												
													
														|  | 
 |  | +					fpd["id"], fttype, pastureid, ftmap["times"]).Find(&lpplandtl1List)
 | 
											
												
													
														|  | 
 |  | +				if err != nil {
 | 
											
												
													
														|  | 
 |  | +					tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +					logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				// [map[barid:4719430583171155825 barname:泌乳1-5西 ccountradio:131 cowcount:30 fttype:0 id:4828050527277810688 isfill:1 pastureid:1705635208 ptid:83
 | 
											
												
													
														|  | 
 |  | +				//  ptsid:-1 times:1 tratio:48.000 weight:0.00] map[barid:4719430583171155825
 | 
											
												
													
														|  | 
 |  | +				//  barname:泌乳1-5西 ccountradio:131 cowcount:30 fttype:1 id:4828050527277810688 isfill:0 pastureid:1705635208 ptid:83 ptsid:-1 times:1 tratio:48.000 weight:32.0
 | 
											
												
													
														|  | 
 |  | +				weight, _ := strconv.ParseFloat(fpd["weight"].(string), 64)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				var w float64
 | 
											
												
													
														|  | 
 |  | +				var status int
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				if ftmap["new"].(float64) < ftmap["old"].(float64) && weight <= 0 {
 | 
											
												
													
														|  | 
 |  | +					if weight >= 0 {
 | 
											
												
													
														|  | 
 |  | +						continue
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +					w = weight
 | 
											
												
													
														|  | 
 |  | +					status = 0
 | 
											
												
													
														|  | 
 |  | +				} else {
 | 
											
												
													
														|  | 
 |  | +					// if weight-(ftmap["new"].(float64)-ftmap["old"].(float64)) > 0 {
 | 
											
												
													
														|  | 
 |  | +					// 	continue
 | 
											
												
													
														|  | 
 |  | +					// }
 | 
											
												
													
														|  | 
 |  | +					w = weight
 | 
											
												
													
														|  | 
 |  | +					status = 1
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				// for _, lppland := range lpplandtl1List {
 | 
											
												
													
														|  | 
 |  | +				// 	lweight += lppland.Lweight
 | 
											
												
													
														|  | 
 |  | +				// }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				for _, lppland := range lpplandtl1List {
 | 
											
												
													
														|  | 
 |  | +					lpplandInfo := new(lpplandtlInfo)
 | 
											
												
													
														|  | 
 |  | +					err := tx.SQL(` select ifnull(sum(lweight),0) lweight from lpplandtl1  where lppid = ? `, lppland.Lppid).GetFirst(lpplandInfo).Error
 | 
											
												
													
														|  | 
 |  | +					lweight = lpplandInfo.Lweight
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +					if status == 1 {
 | 
											
												
													
														|  | 
 |  | +						// if w <= lppland.Lweight {
 | 
											
												
													
														|  | 
 |  | +						if lppland.Maxweight <= lweight {
 | 
											
												
													
														|  | 
 |  | +							continue
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +						if w+lweight <= lppland.Maxweight {
 | 
											
												
													
														|  | 
 |  | +							lppland.Lweight += w
 | 
											
												
													
														|  | 
 |  | +							lweight += w
 | 
											
												
													
														|  | 
 |  | +							fweight += w
 | 
											
												
													
														|  | 
 |  | +							w = 0
 | 
											
												
													
														|  | 
 |  | +						} else {
 | 
											
												
													
														|  | 
 |  | +							w = w - (lppland.Maxweight - lweight)
 | 
											
												
													
														|  | 
 |  | +							n := (lppland.Maxweight - lweight)
 | 
											
												
													
														|  | 
 |  | +							lppland.Lweight = lppland.Lweight + n
 | 
											
												
													
														|  | 
 |  | +							lweight += n
 | 
											
												
													
														|  | 
 |  | +							fweight += n
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					} else {
 | 
											
												
													
														|  | 
 |  | +						if lppland.Lweight == 0 {
 | 
											
												
													
														|  | 
 |  | +							continue
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +						if w+lppland.Lweight >= 0 {
 | 
											
												
													
														|  | 
 |  | +							lppland.Lweight = lppland.Lweight + w
 | 
											
												
													
														|  | 
 |  | +							lweight = lweight + w
 | 
											
												
													
														|  | 
 |  | +							fweight = fweight + w
 | 
											
												
													
														|  | 
 |  | +							w = 0
 | 
											
												
													
														|  | 
 |  | +						} else {
 | 
											
												
													
														|  | 
 |  | +							w = w + lppland.Lweight
 | 
											
												
													
														|  | 
 |  | +							lweight = lweight - lppland.Lweight
 | 
											
												
													
														|  | 
 |  | +							fweight = fweight - lppland.Lweight
 | 
											
												
													
														|  | 
 |  | +							lppland.Lweight = 0
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +					if lppland.Lweight > 0 {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +						_, err = tx.SQL(`update lpplandtl1  set Lweight = ?  where id = ? and pastureid = ?`, lppland.Lweight, lppland.Id, pastureid).Execute()
 | 
											
												
													
														|  | 
 |  | +						if err != nil {
 | 
											
												
													
														|  | 
 |  | +							tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +							logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +							return err
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					} else {
 | 
											
												
													
														|  | 
 |  | +						_, err = tx.SQL(`delete from  lpplandtl1    where id = ? and pastureid = ?`, lppland.Id, pastureid).Execute()
 | 
											
												
													
														|  | 
 |  | +						if err != nil {
 | 
											
												
													
														|  | 
 |  | +							tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +							logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +							return err
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +					if w == 0 {
 | 
											
												
													
														|  | 
 |  | +						break
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				_, err = tx.SQL(`UPDATE fpdetail SET ptuse=IF(?=1,IF(ptuse+? <0,0,ptuse+?),ptuse),
 | 
											
												
													
														|  | 
 |  | +					ptsuse=IF(?=0,IF(ptsuse+?<0,0,ptsuse+?),ptsuse)
 | 
											
												
													
														|  | 
 |  | +					WHERE pastureid=? AND id=?`, fttype, fweight, fweight, fttype, fweight, fweight, pastureid, fpd["id"]).Execute()
 | 
											
												
													
														|  | 
 |  | +				if err != nil {
 | 
											
												
													
														|  | 
 |  | +					tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +					logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				if w == 0 {
 | 
											
												
													
														|  | 
 |  | +					break
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	err = tx.Commit()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		tx.Rollback()
 | 
											
												
													
														|  | 
 |  | +		return err
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	now := time.Now()
 | 
											
												
													
														|  | 
 |  | +	newLpplandtl1List, err := tx.SQL(` select  lppland.* from lpplandtl1  lppland   where lppland.barname = ?  and pastureid = ? `, barname, pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return nil
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	newFpdDataList, err := tx.SQL(` select *  from fpdetail where barname = ?  and pastureid = ?  `, barname, pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return nil
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	newFeedpList, err := tx.SQL(` select *  from feedp    where barname = ?  and pastureid = ?  `, barname, pastureid).Query().List()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +		return nil
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for _, newLpplandtl1 := range newLpplandtl1List {
 | 
											
												
													
														|  | 
 |  | +		_, err := tx.SQL(` insert into lpplandtl1history(pastureid,lppid,barid,barname,fpdid,fttype,lweight,sort,tmrid,tmrname,
 | 
											
												
													
														|  | 
 |  | +						background,cowcount,ccountradio,lweighthis,createdate)
 | 
											
												
													
														|  | 
 |  | +					values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,
 | 
											
												
													
														|  | 
 |  | +			newLpplandtl1["pastureid"], newLpplandtl1["lppid"], newLpplandtl1["barid"],
 | 
											
												
													
														|  | 
 |  | +			newLpplandtl1["barname"], newLpplandtl1["fpdid"], newLpplandtl1["fttype"],
 | 
											
												
													
														|  | 
 |  | +			newLpplandtl1["lweight"], newLpplandtl1["sort"], newLpplandtl1["tmrid"],
 | 
											
												
													
														|  | 
 |  | +			newLpplandtl1["tmrname"], newLpplandtl1["background"], newLpplandtl1["cowcount"],
 | 
											
												
													
														|  | 
 |  | +			newLpplandtl1["ccountradio"], newLpplandtl1["lweighthis"], now).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			// appG.Response(http.StatusOK, e.ERROR, false)
 | 
											
												
													
														|  | 
 |  | +			return err
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	for _, newFpd := range newFpdDataList {
 | 
											
												
													
														|  | 
 |  | +		_, err := tx.SQL(` insert into fpdetailhistory(pastureid,barid,barname,times,tratio,weight,ptsrate,cowcount,ccountradio,ptid,ptsid,ptuse,ptsuse,supplement,createdate)
 | 
											
												
													
														|  | 
 |  | +					 values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`, newFpd["pastureid"], newFpd["barid"], newFpd["barname"], newFpd["times"],
 | 
											
												
													
														|  | 
 |  | +			newFpd["tratio"], newFpd["weight"], newFpd["ptsrate"], newFpd["cowcount"], newFpd["ccountradio"],
 | 
											
												
													
														|  | 
 |  | +			newFpd["ptid"], newFpd["ptsid"], newFpd["ptuse"], newFpd["ptsuse"], newFpd["supplement"], now).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			// appG.Response(http.StatusOK, e.ERROR, false)
 | 
											
												
													
														|  | 
 |  | +			return err
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	for _, newFeedp := range newFeedpList {
 | 
											
												
													
														|  | 
 |  | +		_, err := tx.SQL(` insert into feedphistory(pastureid,barname,barid,softccount,ccount,ratio,ccountratio,ftid,
 | 
											
												
													
														|  | 
 |  | +					ftname,ptsfid,ptsfname,feedweight,ftweight,supplyweight,owner,createdate)
 | 
											
												
													
														|  | 
 |  | +				values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,
 | 
											
												
													
														|  | 
 |  | +			newFeedp["pastureid"], newFeedp["barname"], newFeedp["barid"],
 | 
											
												
													
														|  | 
 |  | +			newFeedp["softccount"], newFeedp["ccount"], newFeedp["ratio"],
 | 
											
												
													
														|  | 
 |  | +			newFeedp["ccountratio"], newFeedp["ftid"], newFeedp["ftname"],
 | 
											
												
													
														|  | 
 |  | +			newFeedp["ptsfid"], newFeedp["ptsfname"], newFeedp["feedweight"],
 | 
											
												
													
														|  | 
 |  | +			newFeedp["ftweight"], newFeedp["supplyweight"], newFeedp["owner"], now).Execute()
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			logs.Error(err)
 | 
											
												
													
														|  | 
 |  | +			// appG.Response(http.StatusOK, e.ERROR, false)
 | 
											
												
													
														|  | 
 |  | +			return err
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	return nil
 | 
											
												
													
														|  | 
 |  | +}
 |