package etl import ( "leit.com/leit_seat_aps/common" "leit.com/leit_seat_aps/db" "time" ) /*etl执行方法集合*/ /* *方法:更新生产订单和客户订单 *逻辑:一个客户订单号对应多个生产订单号; *情况1: 如果生产订单号是40状态:那么生产订单号和客户订单号直接更新为40状态 *情况2: 如果生产订单号是80状态:如果客户订单号对应的生产订单有小于80的状态;那么客户订单不更新,只需要更新生产订单 */ func UpdatePlnWorkorder(finr int, workordernr string, status int) error { engine := Eloquent.Master() //判断传入状态 switch status { case 40: //更新生产订单表 _, err := engine.Table("pln_workorder").Cols("status").Where("finr = ? and workordernr = ? and status <= ?", finr, workordernr, status).Update(&map[string]interface{}{"status": 40}) if err != nil { return err } //查询生产订单对应的客户订单是否有小于80状态的订单 var pln db.Pln_workorder _, err = engine.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln) if err != nil { return err } //更新客户订单 _, err = engine.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ? and status <= ?", finr, pln.Custordernr, status).Update(&map[string]interface{}{"status": 40}) if err != nil { return err } case 80: //更新生产订单表 _, err := engine.Table("pln_workorder").Cols("status").Where("finr = ? and workordernr = ? and status <= ?", finr, workordernr, status).Update(&map[string]interface{}{"status": 80}) if err != nil { return err } //查询生产订单对应的客户订单是否有小于80状态的订单 var pln db.Pln_workorder _, err = engine.Table("pln_workorder").Where("finr = ? and workordernr = ?", finr, workordernr).Get(&pln) if err != nil { return err } var plc db.Pln_workorder ok, err := engine.Table("pln_workorder").Where("finr = ? and custordernr = ? and status < ?", finr, pln.Custordernr, status).Get(&plc) if err != nil { return err } if !ok { //生产订单不存在小于80的状态,更新生产订单 _, err := engine.Table("pln_custorder").Cols("status").Where("finr = ? and custordernr = ?", finr, pln.Custordernr).Update(&map[string]interface{}{"status": 80}) if err != nil { return err } } default: } return nil } //更新批次订单表 func UpdatePlnBatchorder(finr int, batchordernr string, status int, actqty int, optime string) error { engine := Eloquent.Master() //判断传入状态 switch status { case 40: //更新批次订单表 _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actbegtime").Where("finr = ? and batchordernr = ? and status <= ?", finr, batchordernr, status).Update(&map[string]interface{}{"status": 40, "actqty": actqty, "actbegtime": optime}) if err != nil { return err } case 80: //更新生产订单表 _, err := engine.Table("pln_batchorder").Cols("status", "actqty", "actendtime").Where("finr = ? and batchordernr = ? and status <= ?", finr, batchordernr, status).Update(&map[string]interface{}{"status": 80, "actqty": actqty, "actendtime": optime}) if err != nil { return err } default: } return nil } //清空接口缓存表里,三天前并且releaseflag为1的数据 func DelCacheData() { tick := time.Tick(24 * time.Hour) for { select { case <-tick: //获取三天前的字符串 ThreeDay := time.Now().AddDate(0,0,-3) ThreeDayStr := common.TimeFormat(ThreeDay,"yyyyMMddHHmmss") engine := Eloquent.Master() //删除pln_workorder_intstatus _, err := engine.Table("pln_workorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", db.G_DbEngine,ThreeDayStr).Delete(&db.Pln_workorder_intstatus{}) if err != nil { return } //删除pln_batchorder_intstatus _, err = engine.Table("pln_batchorder_intstatus").Where("finr = ? and credatuz <= ? and releaseflag = 1", db.G_DbEngine, ThreeDayStr).Delete(&db.Pln_batchorder_intstatus{}) if err != nil { return } return } } }