| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 | 
							- package zc
 
- import (
 
- 	"fmt"
 
- 	"net/http"
 
- 	"strconv"
 
- 	"strings"
 
- 	"time"
 
- 	"tmr-watch/http/handle/restful"
 
- 	"tmr-watch/pkg/app"
 
- 	"tmr-watch/pkg/e"
 
- 	"github.com/astaxie/beego/logs"
 
- 	"github.com/gin-gonic/gin"
 
- 	"github.com/robfig/cron"
 
- )
 
- func SyncZC() {
 
- 	duetimecst, _ := time.ParseInLocation("15:04:05", "00:00:15", time.Local)
 
- 	duetimecst1, _ := time.ParseInLocation("15:04:05", "00:00:00", time.Local)
 
- 	spec := fmt.Sprintf("@every %v", duetimecst.Sub(duetimecst1))
 
- 	c := cron.New()
 
- 	c.AddFunc(spec, func() {
 
- 		updateTmrStatus()
 
- 		// count1, err := restful.SqlServerEngine.Table("PFGL").QueryString()
 
- 		// fmt.Println(err, count1)
 
- 	})
 
- 	c.Start()
 
- }
 
- // 同步配方到正诚
 
- func SyncSCJH(c *gin.Context) {
 
- 	appG := app.Gin{C: c}
 
- 	count1, err := restful.SqlServerEngine.Table("COMM").Where(` Status = 1 `).Count()
 
- 	fmt.Println(err)
 
- 	if count1 == 0 {
 
- 		appG.Response(http.StatusOK, e.SUCCESS, "本都生产状态,禁止更新生产计划与配方!")
 
- 		return
 
- 	}
 
- 	now := time.Now().Format("2006-01-02 15:04:05")
 
- 	feedtempletList := GetFeedtempletList(time.Now().Format("2006-01-02"))
 
- 	feedtempletMapList := make(map[string][]map[string]string)
 
- 	for _, ft := range feedtempletList {
 
- 		feedtempletMapList[ft["tname"]] = append(feedtempletMapList[ft["tname"]], ft)
 
- 	}
 
- 	// n := 0
 
- 	restful.SqlServerEngine.SQL(`  delete from PFGL`).Execute()
 
- 	for k, ftList := range feedtempletMapList {
 
- 		// count, _ := restful.SqlServerEngine.Table("PFGL").Where(` PFMC = ? `, k).Count()
 
- 		// n++
 
- 		// if count > 0 {
 
- 		// 	var wlmcstr []string
 
- 		// 	var wlmc []interface{}
 
- 		// 	wlmc = append(wlmc, now, ftList[0]["tcode"])
 
- 		// 	var i, n int
 
- 		// 	for _, ft := range ftList {
 
- 		// 		if strings.Index(ft["fclass"], "小料") > -1 {
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d", 40+n+1))
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d", 40+n+1))
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d", 40+n+1))
 
- 		// 			n++
 
- 		// 		} else {
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d", i+1))
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d", i+1))
 
- 		// 			wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d", i+1))
 
- 		// 			i++
 
- 		// 		}
 
- 		// 		// wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d = ? ", i+1))
 
- 		// 		// wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d = ? ", i+1))
 
- 		// 		// wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d = ?", i+1))
 
- 		// 		if _, ok := ft["fname"]; ok {
 
- 		// 			wlmc = append(wlmc, ft["fname"])
 
- 		// 		} else {
 
- 		// 			wlmc = append(wlmc, "")
 
- 		// 		}
 
- 		// 		if _, ok := ft["fweight"]; ok {
 
- 		// 			wlmc = append(wlmc, ft["fweight"])
 
- 		// 		} else {
 
- 		// 			wlmc = append(wlmc, "0")
 
- 		// 		}
 
- 		// 		wlmc = append(wlmc, i)
 
- 		// 	}
 
- 		// 	for i := len(ftList); i < 50; i++ {
 
- 		// 		wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d = ? ", i+1))
 
- 		// 		wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d = ? ", i+1))
 
- 		// 		wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d = ?", i+1))
 
- 		// 		wlmc = append(wlmc, "", "0", "0")
 
- 		// 	}
 
- 		// 	wlmc = append(wlmc, k)
 
- 		// 	_, err := restful.SqlServerEngine.SQL(fmt.Sprintf("update PFGL set XGRQ = ?,PFBM = ? ,%s where PFMC = ? ", strings.Join(wlmcstr, ",")), wlmc...).Execute()
 
- 		// 	fmt.Println(err, wlmc)
 
- 		// } else {
 
- 		// 	// PFBM := ""
 
- 		var vlues, wlmcstr []string
 
- 		var wlmc []interface{}
 
- 		wlmc = append(wlmc, k, now, ftList[0]["tcode"])
 
- 		vlues = append(vlues, "?", "?", "?")
 
- 		var i, n int
 
- 		for _, ft := range ftList {
 
- 			if strings.Index(ft["fclass"], "小料") > -1 {
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d", 40+n+1))
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d", 40+n+1))
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d", 40+n+1))
 
- 				n++
 
- 			} else {
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLMC_%d", i+1))
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLZL_%d", i+1))
 
- 				wlmcstr = append(wlmcstr, fmt.Sprintf("WLSX_%d", i+1))
 
- 				i++
 
- 			}
 
- 			if _, ok := ft["fname"]; ok {
 
- 				wlmc = append(wlmc, ft["fname"])
 
- 			} else {
 
- 				wlmc = append(wlmc, "")
 
- 			}
 
- 			if _, ok := ft["fweight"]; ok {
 
- 				wlmc = append(wlmc, ft["fweight"])
 
- 			} else {
 
- 				wlmc = append(wlmc, "0")
 
- 			}
 
- 			if strings.Index(ft["fclass"], "小料") > -1 {
 
- 				wlmc = append(wlmc, n)
 
- 			} else {
 
- 				wlmc = append(wlmc, i)
 
- 			}
 
- 			vlues = append(vlues, "?", "?", "?")
 
- 		}
 
- 		restful.SqlServerEngine.SQL(fmt.Sprintf("insert into PFGL(PFMC,XGRQ,PFBM,%s)values(%s)", strings.Join(wlmcstr, ","),
 
- 			strings.Join(vlues, ",")), wlmc...).Execute()
 
- 	}
 
- 	downloadedplanList, err := restful.Engine.SQL(`  
 
- select t.* from 
 
- (select d.id,d.datacaptureno,d.tmrtname,d2.havebuttom,d.iscompleted,d2.fname,d2.lweight,d.lweight allweight,d.projname,d.sort,d2.sort barsort,d.templetname,d2.intime , 
 
- 	round((d2.lweight/d.lweight*100),0)PFBL,f.ccount
 
-   from downloadedplan d 
 
- join downloadplandtl2 d2 on d2.pid = d.id
 
- join feedp f on f.barid = d2.fbarid 
 
-   where d.mydate = ? and d.enable = 1 and d.lpplantype= 0 and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0  
 
- UNION  all 
 
- select d.id, d.datacaptureno,d.tmrtname,d2.havebuttom,d.iscompleted,d2.fname,d2.lweight,d.lweight allweight,d.projname,d.sort,d2.sort barsort,d.templetname,d2.intime , 
 
- round((d2.lweight/d.lweight*100),0)PFBL  ,f.ccount
 
- from downloadedplan d  
 
- join downloadplandtl2 d2 on d2.pid = (select id from downloadedplan  where pid = d.pid  and mydate = d.mydate and  lpplantype= 2)
 
- join feedp f on f.barid = d2.fbarid 
 
- where d.mydate = ? and d.enable = 1 and d.lpplantype= 1  and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0    ) t 
 
- order by t.sort,t.barsort `, time.Now().Format("2006-01-02"), time.Now().Format("2006-01-02")).QueryString()
 
- 	if err != nil {
 
- 		appG.Response(http.StatusOK, e.SUCCESS, "计划查询失败!!!")
 
- 		return
 
- 	}
 
- 	var list []string
 
- 	//把推送过的计划id保存到列表中
 
- 	zcpushList, _ := restful.Engine.SQL(`select * from zcpush where  date_format(date ,'%Y-%m-%d') = ?   `, time.Now().Format("2006-01-02")).QueryString()
 
- 	for _, item := range zcpushList {
 
- 		list = append(list, item["downloadedplan"])
 
- 	}
 
- 	if len(list) > 0 {
 
- 		noWxz, _ := restful.SqlServerEngine.Table("SCJH").Where(`  Replace(WCZT,' ','')  != N'未选择' `).Count()
 
- 		if noWxz == 0 {
 
- 			restful.Engine.SQL(`delete from zcpush where  date_format(date ,'%Y-%m-%d') = ?   `, time.Now().Format("2006-01-02")).Execute()
 
- 		} else if noWxz > 0 {
 
- 			appG.Response(http.StatusOK, e.SUCCESS, "上传成功!")
 
- 			return
 
- 		}
 
- 	} else {
 
- 		restful.SqlServerEngine.SQL(` delete from SCJH  `).Execute()
 
- 	}
 
- 	restful.SqlServerEngine.SQL(` delete from SCJH  where Replace(WCZT,' ','')  = N'未选择' `).Execute()
 
- 	num := make(map[string]int, 0)
 
- 	tmrmap := make(map[string]string, 0)
 
- 	for _, item := range downloadedplanList {
 
- 		num[item["id"]] = 0
 
- 	}
 
- 	for _, item := range downloadedplanList {
 
- 		exist := false
 
- 		for _, id := range list {
 
- 			if id == item["id"] {
 
- 				exist = true
 
- 				break
 
- 			}
 
- 		}
 
- 		//如果已经推送过直接返回
 
- 		if exist {
 
- 			continue
 
- 		}
 
- 		//执行完成的直接返回
 
- 		if item["iscompleted"] == "1" {
 
- 			continue
 
- 		}
 
- 		if _, ok := tmrmap[item["datacaptureno"]]; ok {
 
- 			//判断同tmr车是否已经有计划推送过
 
- 			if tmrmap[item["datacaptureno"]] != item["id"] {
 
- 				continue
 
- 			}
 
- 		} else {
 
- 			// 首次推送
 
- 			tmrmap[item["datacaptureno"]] = item["id"]
 
- 			restful.Engine.SQL(` insert into zcpush(downloadedplan,sort,date,datacaptureno)values(?,?,now(),?)`, item["id"], item["sort"], item["datacaptureno"]).Execute()
 
- 		}
 
- 		num[item["id"]]++
 
- 		restful.SqlServerEngine.SQL(`insert SCJH(SXCH,PFMC,LSMC,LSTS,PFBL,WCZT,TMRS)values(?,?,?,?,?,?,?)`, item["sort"], item["templetname"], item["fname"],
 
- 			item["ccount"], item["PFBL"], "未完成", item["datacaptureno"]).Execute()
 
- 	}
 
- 	restful.SqlServerEngine.SQL(` update COMM set int_1 = 1 `).Execute()
 
- 	appG.Response(http.StatusOK, e.SUCCESS, "上传成功!")
 
- }
 
- //获取当天精料配方
 
- func GetFeedtempletList(now string) []map[string]string {
 
- 	feedtempletList, err := restful.Engine.SQL(`select fd.fclass,f.tname,(select tcode from feedtemplet where id = f.id) tcode,ft.fname,ft.fweight,ft.sort  from feedtempletdate f join ftdetail ft on ft.ftid = f.id  
 
- 	join feed fd on fd.id = ft.fid   where fd.smtmrid >0  and date = ?   order by f.sort,ft.sort`, now).QueryString()
 
- 	if err != nil {
 
- 		logs.Error(err)
 
- 	}
 
- 	return feedtempletList
 
- }
 
- func updateTmrStatus() {
 
- 	commList, err := restful.SqlServerEngine.Table("COMM").QueryString()
 
- 	if err != nil {
 
- 		logs.Error(err)
 
- 		return
 
- 	}
 
- 	comm := commList[0]
 
- 	restful.Engine.SQL(` update zccomm set  int_2 = ?  where id = 1 `, comm["Int_2"]).Execute()
 
- 	if comm["Status"] == "1" {
 
- 		now := time.Now().Format("2006-01-02")
 
- 		count, _ := restful.Engine.Table("downloadedplan").Where(` mydate = ?`, now).Where(`lpplantype in(0,1)`).Count()
 
- 		// total, _ := restful.Engine.Table("downloadedplan").Where(` mydate = ?`, now).Where(`lpplantype in(0,1)`).Where(`havebutton = 1 `).Count()
 
- 		havebuttontotal, _ := restful.Engine.Table("downloadedplan").Where(` mydate = ?`, now).Where(`lpplantype in(0,1,2)`).Where(`havebutton = 1 `).Count()
 
- 		iscompletedtotal, _ := restful.Engine.Table("downloadedplan").Where(` mydate = ?`, now).Where(`lpplantype in(0,1,2)`).Where(`iscompleted = 1 `).Count()
 
- 		if count == 0 {
 
- 			restful.SqlServerEngine.SQL(` update COMM set  int_1 = ? `, 0).Execute()
 
- 		} else if havebuttontotal != iscompletedtotal {
 
- 			restful.SqlServerEngine.SQL(` update COMM set  int_1 = ? `, 2).Execute()
 
- 		} else if havebuttontotal > 0 && iscompletedtotal > 0 {
 
- 			restful.SqlServerEngine.SQL(` update COMM set int_1 = ? `, 4).Execute()
 
- 		} else {
 
- 			restful.SqlServerEngine.SQL(` update COMM set int_1 = ? `, 1).Execute()
 
- 		}
 
- 		downloadedplanList, err := restful.Engine.SQL(`
 
- 	select t.* from
 
- 	(select  d.id,d.havebutton,d.sort,datacaptureno   from downloadedplan d
 
- 	  where d.mydate = ? and d.enable = 1 and d.lpplantype= 0 and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0  
 
- 	UNION  all
 
- 	select d.id,d.havebutton,d.sort,datacaptureno from downloadedplan d
 
- 	where d.mydate = ? and d.enable = 1 and d.lpplantype= 1  and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0   ) t
 
- 	order by t.sort `, now, now).QueryString()
 
- 		if err != nil {
 
- 			logs.Error(err)
 
- 			return
 
- 		}
 
- 		tmrMap := make(map[string][]map[string]string, 0)
 
- 		for _, item := range downloadedplanList {
 
- 			tmrMap[item["datacaptureno"]] = append(tmrMap[item["datacaptureno"]], item)
 
- 		}
 
- 		for datacaptureno, tmrList := range tmrMap {
 
- 			zcpushList, _ := restful.Engine.SQL(`select * from zcpush where  date_format(date ,'%Y-%m-%d') = ? and datacaptureno = ? order by date desc limit 1  `, now, datacaptureno).QueryString()
 
- 			zcpush := make(map[string]string)
 
- 			if len(zcpushList) == 0 {
 
- 				continue
 
- 			} else {
 
- 				zcpush = zcpushList[0]
 
- 			}
 
- 			data := make(map[string]string, 0)
 
- 			exist := true
 
- 			for _, item := range tmrList {
 
- 				itemsort, _ := strconv.Atoi(item["sort"])
 
- 				zcsort, _ := strconv.Atoi(zcpush["sort"])
 
- 				//按顺序下推相同tmr如果还没有开始发料 就不更新下一个
 
- 				if zcpush["downloadedplan"] == item["id"] && item["havebutton"] == "0" {
 
- 					break
 
- 				} else if zcsort < itemsort {
 
- 					data = item
 
- 					exist = false
 
- 					break
 
- 				}
 
- 			}
 
- 			if !exist {
 
- 				restful.Engine.SQL(` insert into zcpush(downloadedplan,sort,date,datacaptureno)values(?,?,now(),?)`, data["id"], data["sort"], data["datacaptureno"]).Execute()
 
- 				list, err := restful.Engine.SQL(`
 
- 				select t.* from 
 
- 				(select d.id,d.datacaptureno,d.tmrtname,d2.havebuttom,d.iscompleted,d2.fname,d2.lweight,d.lweight allweight,d.projname,d.sort,d2.sort barsort,d.templetname,d2.intime , 
 
- 					round((d2.lweight/d.lweight*100),0)PFBL,f.ccount
 
- 				  from downloadedplan d 
 
- 				join downloadplandtl2 d2 on d2.pid = d.id
 
- 				join feedp f on f.barid = d2.fbarid 
 
- 				  where d.id = ? and d.enable = 1 and d.lpplantype= 0 and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0  
 
- 				UNION  all 
 
- 				select d.id, d.datacaptureno,d.tmrtname,d2.havebuttom,d.iscompleted,d2.fname,d2.lweight,d.lweight allweight,d.projname,d.sort,d2.sort barsort,d.templetname,d2.intime , 
 
- 				round((d2.lweight/d.lweight*100),0)PFBL  ,f.ccount
 
- 				from downloadedplan d  
 
- 				join downloadplandtl2 d2 on d2.pid = (select id from downloadedplan  where pid = d.pid  and mydate = d.mydate and  lpplantype= 2)
 
- 				join feedp f on f.barid = d2.fbarid 
 
- 				where d.id = ? and d.enable = 1 and d.lpplantype= 1  and (select count(1) from downloadplandtl1  where pid = d.id  and type = 1) >0    ) t 
 
- 				order by t.sort,t.barsort  `, data["id"], data["id"]).QueryString()
 
- 				if err != nil {
 
- 					logs.Error(err)
 
- 					return
 
- 				}
 
- 				for _, arg := range list {
 
- 					restful.SqlServerEngine.SQL(`insert SCJH(SXCH,PFMC,LSMC,LSTS,PFBL,WCZT,TMRS)values(?,?,?,?,?,?,?)`, arg["sort"], arg["templetname"], arg["fname"],
 
- 						arg["ccount"], arg["PFBL"], "未完成", arg["datacaptureno"]).Execute()
 
- 				}
 
- 				restful.SqlServerEngine.SQL(` update COMM set int_1 = 1 `).Execute()
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |