Browse Source

提交修改车型服务

master
娄文智 3 years ago
parent
commit
de5531ed4a
7 changed files with 87 additions and 50 deletions
  1. +5
    -3
      config/config.go
  2. +2
    -0
      config/config.yaml
  3. +10
    -0
      db/Pln_custorder_carmodelver.go
  4. +15
    -1
      db/Pln_workorder.go
  5. +16
    -7
      seq/Parsecarmodel.go
  6. +22
    -28
      service/Asn.go
  7. +17
    -11
      service/Workline.go

+ 5
- 3
config/config.go View File

@ -33,6 +33,7 @@ type EnvConfig struct {
Outbox string `yaml:"outbox"` Outbox string `yaml:"outbox"`
Day int `yaml:"day"` Day int `yaml:"day"`
Num int `yaml:"num"` Num int `yaml:"num"`
TimeInterval int64 `yaml:"timeinterval"`
Printobjtype string `yaml:"printobjtype"` Printobjtype string `yaml:"printobjtype"`
Msgtype string `yaml:"msgtype"` Msgtype string `yaml:"msgtype"`
Begtime string `yaml:"begtime"` Begtime string `yaml:"begtime"`
@ -41,20 +42,21 @@ type EnvConfig struct {
Packtog bool `yaml:"packtog"` Packtog bool `yaml:"packtog"`
} }
var ConfValue EnvConfig
//read yaml config //read yaml config
//注:path为yaml或yml文件的路径 //注:path为yaml或yml文件的路径
func ReadYamlConfig(path string) (*EnvConfig, error) { func ReadYamlConfig(path string) (*EnvConfig, error) {
conf := &EnvConfig{}
f, err := os.Open(path) f, err := os.Open(path)
if err != nil { if err != nil {
return nil, err return nil, err
} else { } else {
yaml.NewDecoder(f).Decode(conf)
yaml.NewDecoder(f).Decode(&ConfValue)
} }
defer f.Close() defer f.Close()
return conf, nil
return &ConfValue, nil
} }
var AppConfig Config var AppConfig Config


+ 2
- 0
config/config.yaml View File

@ -34,6 +34,8 @@ inbox: Template\\Inbox
outbox: Template\\Outbox outbox: Template\\Outbox
# 间隔时间 # 间隔时间
day: 7 day: 7
#Etcd间隔时间(毫秒为单位)
timeinterval: 100
# 备份类型 # 备份类型
printobjtype: "BBAASN" printobjtype: "BBAASN"
# 锁定区间 # 锁定区间


+ 10
- 0
db/Pln_custorder_carmodelver.go View File

@ -76,6 +76,16 @@ func (t *Pln_custorder_carmodelver) Insert(session *xorm.Session) error {
return nil return nil
} }
//删
func (t *Pln_custorder_carmodelver) DelSession(session *xorm.Session) bool {
_, err := session.Where("finr = ? and oemordernr = ? and projnr = ?",G_FINR, t.Oemordernr, t.Projnr).Delete(&Pln_custorder_carmodelver{})
if err != nil {
return false
}
return true
}
//删 //删
func (t *Pln_custorder_carmodelver) Del() bool { func (t *Pln_custorder_carmodelver) Del() bool {
e := G_DbEngine e := G_DbEngine


+ 15
- 1
db/Pln_workorder.go View File

@ -137,11 +137,22 @@ func (t *Pln_workorder) UpdateFieldsWo(session *xorm.Session, fields string) (ok
//根据生产订单状态,改变客户订单 //根据生产订单状态,改变客户订单
func (t *Pln_workorder) UpdateCustorderByWorkorder(session *xorm.Session, custordernr string) error { func (t *Pln_workorder) UpdateCustorderByWorkorder(session *xorm.Session, custordernr string) error {
var plc Pln_workorder var plc Pln_workorder
var co Pln_custorder
ok, err := session.Table("pln_workorder").Where("finr = ? and custordernr = ? and status < ?", G_FINR, custordernr, common.WO_STATUS_CLOSED).Get(&plc) ok, err := session.Table("pln_workorder").Where("finr = ? and custordernr = ? and status < ?", G_FINR, custordernr, common.WO_STATUS_CLOSED).Get(&plc)
if err != nil { if err != nil {
return err return err
} }
if !ok { if !ok {
result, err := session.Table("pln_custorder").Where("finr = ? and custordernr = ?", G_FINR, custordernr).Get(&co)
if err != nil {
return err
}
if !result {
return errors.New("没有该记录!")
}
if co.Status == common.WO_STATUS_CLOSED {
return nil
}
//生产订单不存在小于80的状态,更新生产订单 //生产订单不存在小于80的状态,更新生产订单
res, err := session.Table("pln_custorder").Cols("status", "lastuser").Where("finr = ? and custordernr = ?", G_FINR, custordernr).Update(&map[string]interface{}{"status": common.WO_STATUS_CLOSED, "lastuser": "asn_service"}) res, err := session.Table("pln_custorder").Cols("status", "lastuser").Where("finr = ? and custordernr = ?", G_FINR, custordernr).Update(&map[string]interface{}{"status": common.WO_STATUS_CLOSED, "lastuser": "asn_service"})
if err != nil { if err != nil {
@ -158,7 +169,10 @@ func (t *Pln_workorder) UpdateCustorderByWorkorder(session *xorm.Session, custor
func (t *Pln_workorder) SelectByCustorder(session *xorm.Session, custordernr string) bool { func (t *Pln_workorder) SelectByCustorder(session *xorm.Session, custordernr string) bool {
var plc Pln_workorder var plc Pln_workorder
ok, err := session.Table("pln_workorder").Where("finr = ? and custordernr = ? and worklineid = ? and status < ?", G_FINR, custordernr, "GRAMMER", common.WO_STATUS_CLOSED).Get(&plc) ok, err := session.Table("pln_workorder").Where("finr = ? and custordernr = ? and worklineid = ? and status < ?", G_FINR, custordernr, "GRAMMER", common.WO_STATUS_CLOSED).Get(&plc)
if err != nil || ok {
if err != nil{
return false
}
if ok{
return false return false
} }
return true return true


+ 16
- 7
seq/Parsecarmodel.go View File

@ -23,24 +23,24 @@ func RunCarmodelParser(projnr string) (err error) {
msgtablst []db.Order_msg msgtablst []db.Order_msg
cotab db.Pln_custorder cotab db.Pln_custorder
cotablst []db.Pln_custorder cotablst []db.Pln_custorder
cocmvtab db.Pln_custorder_carmodelver
cocmvtab, delmvtab db.Pln_custorder_carmodelver
i int i int
ok, match, isnew, alert bool ok, match, isnew, alert bool
cmid, alertinfo string cmid, alertinfo string
version int version int
createtime time.Time
dura time.Duration
createtime time.Time
dura time.Duration
session *xorm.Session session *xorm.Session
) )
bl_proj.Projectid = projnr bl_proj.Projectid = projnr
// 第一步:加载项目的相关数据和已有车型规格 // 第一步:加载项目的相关数据和已有车型规格
if err = bl_proj.GetCarModelList(); err != nil { if err = bl_proj.GetCarModelList(); err != nil {
glog.InfoExtln("解析车型", "GetCarModelList is:",err)
glog.InfoExtln("解析车型", "GetCarModelList is:", err)
return return
} }
fmt.Println("加载项目:", projnr, "的车型主数据成功!") fmt.Println("加载项目:", projnr, "的车型主数据成功!")
glog.InfoExtln("解析车型", "加载项目:",projnr)
glog.InfoExtln("解析车型", "加载项目:", projnr)
// 第二步:加载项目的零件数据 // 第二步:加载项目的零件数据
if err = bl_proj.GetPartList(); err != nil { if err = bl_proj.GetPartList(); err != nil {
return return
@ -61,7 +61,7 @@ func RunCarmodelParser(projnr string) (err error) {
for i = 0; i < len(msgtablst); i++ { for i = 0; i < len(msgtablst); i++ {
// 消息创建时间超过10分钟以上再处理(等客户订单的多个SEQ文件凑齐) // 消息创建时间超过10分钟以上再处理(等客户订单的多个SEQ文件凑齐)
if createtime, err = common.DateParse(msgtablst[i].Credatuz, "YmdHis"); err != nil { if createtime, err = common.DateParse(msgtablst[i].Credatuz, "YmdHis"); err != nil {
fmt.Println("消息",msgtablst[i].Msgid,"的创建时间无法解析!")
fmt.Println("消息", msgtablst[i].Msgid, "的创建时间无法解析!")
continue continue
} }
dura = time.Now().Sub(createtime) dura = time.Now().Sub(createtime)
@ -133,7 +133,16 @@ func RunCarmodelParser(projnr string) (err error) {
version = bl_cmspec.Version version = bl_cmspec.Version
} }
} }
//删掉对应的车型
delmvtab = db.Pln_custorder_carmodelver{Finr: db.G_FINR}
delmvtab.Oemordernr = msgtablst[i].Msgobjid
delmvtab.Projnr = msgtablst[i].Msg_cpara1
res := delmvtab.DelSession(session)
if !res {
session.Rollback()
session.Close()
return
}
// 更新OEM订单的车型规格表 // 更新OEM订单的车型规格表
cocmvtab = db.Pln_custorder_carmodelver{Finr: db.G_FINR} cocmvtab = db.Pln_custorder_carmodelver{Finr: db.G_FINR}
cocmvtab.Carmodelid = bl_cm.Carmodelid cocmvtab.Carmodelid = bl_cm.Carmodelid


+ 22
- 28
service/Asn.go View File

@ -94,10 +94,8 @@ func (bt *BL_Tier2ASN) CLoseTier2WorkOrder() (err error) {
} }
// 关闭生产订单 // 关闭生产订单
match = true match = true
isflag := false
for i = 0; i < len(cotab.Wotablst); i++ { for i = 0; i < len(cotab.Wotablst); i++ {
if strings.TrimSpace(cotab.Wotablst[i].Supplygroupid) != strings.TrimSpace(bl_t2ord.Asnordertab.Supplygroupid) || strings.TrimSpace(cotab.Wotablst[i].Partfamilyid) != strings.TrimSpace(bl_t2ord.Asnordertab.Partfamilyid) { if strings.TrimSpace(cotab.Wotablst[i].Supplygroupid) != strings.TrimSpace(bl_t2ord.Asnordertab.Supplygroupid) || strings.TrimSpace(cotab.Wotablst[i].Partfamilyid) != strings.TrimSpace(bl_t2ord.Asnordertab.Partfamilyid) {
isflag = true
continue continue
} }
if cotab.Wotablst[i].Status < common.WO_STATUS_CLOSED && cotab.Wotablst[i].Status >= common.WO_STATUS_RELEASED { if cotab.Wotablst[i].Status < common.WO_STATUS_CLOSED && cotab.Wotablst[i].Status >= common.WO_STATUS_RELEASED {
@ -133,7 +131,6 @@ func (bt *BL_Tier2ASN) CLoseTier2WorkOrder() (err error) {
cotab.Wotablst[i].Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss") cotab.Wotablst[i].Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss")
res, err := cotab.Wotablst[i].UpdateFieldsWo(session, "status, lastmodif, lastuser") res, err := cotab.Wotablst[i].UpdateFieldsWo(session, "status, lastmodif, lastuser")
if err != nil || res < 1 { if err != nil || res < 1 {
isflag = true
session.Rollback() session.Rollback()
glog.InfoExtln("grammerasn", "err :", err) glog.InfoExtln("grammerasn", "err :", err)
continue continue
@ -143,7 +140,6 @@ func (bt *BL_Tier2ASN) CLoseTier2WorkOrder() (err error) {
glog.InfoExtln("grammerasn", "err :", err) glog.InfoExtln("grammerasn", "err :", err)
continue continue
} else { } else {
isflag = true
err = errors.New(fmt.Sprintf("扶手订单%s 订单状态不符合!", cotab.Wotablst[i].Workordernr)) err = errors.New(fmt.Sprintf("扶手订单%s 订单状态不符合!", cotab.Wotablst[i].Workordernr))
glog.InfoExtln("grammerasn", "err :", err) glog.InfoExtln("grammerasn", "err :", err)
session.Rollback() session.Rollback()
@ -156,30 +152,28 @@ func (bt *BL_Tier2ASN) CLoseTier2WorkOrder() (err error) {
glog.InfoExtln("grammerasn", "err :", err) glog.InfoExtln("grammerasn", "err :", err)
return return
} }
if !isflag {
//判断该客户订单是否有小于80的GRAMMEER订单,如果存在则不更新
ok := wotab.SelectByCustorder(session, cotab.Custordernr)
if ok {
glog.InfoExtln("grammerasninfo", "bl_t2ord.Asnordertab.Asnnr :", bl_t2ord.Asnordertab.Asnnr)
glog.InfoExtln("grammerasninfo", "bl_t2ord.Asnordertab.Asnnr :", bl_t2ord.Asnordertab.Oemordernr)
//置位对应的工单
cache := new(db.Jit_asnorder_cache)
cache.Asnnr = bl_t2ord.Asnordertab.Asnnr
cache.Oemordernr = bl_t2ord.Asnordertab.Oemordernr
cache.Partfamilyid = bl_t2ord.Asnordertab.Partfamilyid
cache.Flag = 1
cache.Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss")
cache.Lastuser = "asn_service"
if err = cache.UpdateFields(session, "flag,lastmodif,lastuser"); err != nil {
glog.InfoExtln("grammerasn", "err :", err)
session.Rollback()
return
}
} else {
glog.InfoExtln("grammerasn暂时不能置位的订单", "cotab.Custordernr :", cotab.Custordernr)
glog.InfoExtln("grammerasn", "err :", err)
//判断该客户订单是否有小于80的GRAMMEER订单,如果存在则不更新
ok := wotab.SelectByCustorder(session, cotab.Custordernr)
glog.InfoExtln("grammerasn", "ok :", ok)
if ok {
glog.InfoExtln("grammerasninfo", "bl_t2ord.Asnordertab.Asnnr :", bl_t2ord.Asnordertab.Asnnr)
glog.InfoExtln("grammerasninfo", "bl_t2ord.Asnordertab.Asnnr :", bl_t2ord.Asnordertab.Oemordernr)
//置位对应的工单
cache := new(db.Jit_asnorder_cache)
cache.Asnnr = bl_t2ord.Asnordertab.Asnnr
cache.Oemordernr = bl_t2ord.Asnordertab.Oemordernr
cache.Partfamilyid = bl_t2ord.Asnordertab.Partfamilyid
cache.Flag = 1
cache.Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss")
cache.Lastuser = "asn_service"
if err = cache.UpdateFields(session, "flag,lastmodif,lastuser"); err != nil {
glog.InfoExtln("grammerasn", "err :", err)
session.Rollback()
return
} }
} else {
glog.InfoExtln("grammerasn暂时不能置位的订单", "cotab.Custordernr :", cotab.Custordernr)
} }
session.Commit() session.Commit()
} }
@ -203,6 +197,6 @@ func (bt *BL_Tier2ASN) SetParsedStatus() (err error) {
return return
} }
//删除文件对应的缓存 //删除文件对应的缓存
cache.DelInfo()
//cache.DelInfo()
return return
} }

+ 17
- 11
service/Workline.go View File

@ -5,6 +5,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"leit.com/leit_seat_aps/common" "leit.com/leit_seat_aps/common"
conf "leit.com/leit_seat_aps/config"
"leit.com/leit_seat_aps/db" "leit.com/leit_seat_aps/db"
"leit.com/leit_seat_aps/etcd" "leit.com/leit_seat_aps/etcd"
"leit.com/leit_seat_aps/glog" "leit.com/leit_seat_aps/glog"
@ -140,7 +141,7 @@ func (bl_wl *BL_Workline) LoadPlannedTask() (err error) {
// 基于指定派工数量获取产线需派工生产订单 // 基于指定派工数量获取产线需派工生产订单
// 返回需要派工下达的排好序的生产订单 // 返回需要派工下达的排好序的生产订单
func (bl_wl *BL_Workline) GetTaskToReleaseByQty() (bl_wolst []BL_WorkOrder,err error) {
func (bl_wl *BL_Workline) GetTaskToReleaseByQty() (bl_wolst []BL_WorkOrder, err error) {
var ( var (
totalRelQty int totalRelQty int
toRelQty int toRelQty int
@ -229,8 +230,8 @@ LOOP:
swet2 = wotablst2[0].Swet swet2 = wotablst2[0].Swet
} }
//记录日志 //记录日志
glog.InfoExtln("scheduler","swet1",swet1)
glog.InfoExtln("scheduler","swet2",swet2)
glog.InfoExtln("scheduler", "swet1", swet1)
glog.InfoExtln("scheduler", "swet2", swet2)
if common.ValueIsEmpty(swet1) { if common.ValueIsEmpty(swet1) {
if common.ValueIsEmpty(swet2) { if common.ValueIsEmpty(swet2) {
@ -315,7 +316,7 @@ LOOP:
} }
} }
} }
} else if len(data) == 1{
} else if len(data) == 1 {
//项目1 //项目1
info1 := strings.Split(data[0], ":") info1 := strings.Split(data[0], ":")
if len(info1) >= 2 { if len(info1) >= 2 {
@ -349,7 +350,7 @@ LOOP:
bl_wo.Workordertab = wotablst1[i] bl_wo.Workordertab = wotablst1[i]
bl_wolst = append(bl_wolst, bl_wo) bl_wolst = append(bl_wolst, bl_wo)
} }
}else {
} else {
return return
} }
} }
@ -393,7 +394,7 @@ LOOP:
// 基于指定时间点获取产线需派工生产订单 // 基于指定时间点获取产线需派工生产订单
// 返回需要派工下达的排好序的生产订单 // 返回需要派工下达的排好序的生产订单
func (bl_wl *BL_Workline) GetTaskToReleaseByTime() (bl_wolst []BL_WorkOrder,err error) {
func (bl_wl *BL_Workline) GetTaskToReleaseByTime() (bl_wolst []BL_WorkOrder, err error) {
var ( var (
i int i int
wotablst []db.Pln_workorder wotablst []db.Pln_workorder
@ -1116,9 +1117,9 @@ LOOPTIME:
looptime++ looptime++
if len(wotablst) > 0 { if len(wotablst) > 0 {
startseq = wotablst[0].Schedseq + 1 startseq = wotablst[0].Schedseq + 1
} else if looptime >= 100{
} else if looptime >= 100 {
startseq = 1 startseq = 1
}else {
} else {
glog.InfoExtln("排序调度", "LOOP起始排序号 = ", bl_wl.WorklineId, startseq) glog.InfoExtln("排序调度", "LOOP起始排序号 = ", bl_wl.WorklineId, startseq)
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
goto LOOPTIME goto LOOPTIME
@ -1133,7 +1134,12 @@ LOOPTIME:
err = etcd.G_jobLock.TryLock("lock") err = etcd.G_jobLock.TryLock("lock")
if err != nil { if err != nil {
fmt.Println("seq groutine lock fail!") fmt.Println("seq groutine lock fail!")
time.Sleep(10 * time.Millisecond)
if conf.ConfValue.TimeInterval < 1 {
time.Sleep(10 * time.Millisecond)
} else {
time.Sleep(time.Duration(conf.ConfValue.TimeInterval) * time.Millisecond)
}
glog.InfoExtln("排序调度", "conf.ConfValue.TimeInterval = ",conf.ConfValue.TimeInterval)
goto LOOP goto LOOP
} }
//开启事务 //开启事务
@ -1150,7 +1156,7 @@ LOOPTIME:
wotab.Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss") wotab.Lastmodif = common.Date(time.Now().Unix(), "YYYYMMDDHHmmss")
// 处理生产订单的拣料零件 // 处理生产订单的拣料零件
if err = wotab.UpdateFields(session,"schedseq,status,pickstatus,lastmodif"); err != nil {
if err = wotab.UpdateFields(session, "schedseq,status,pickstatus,lastmodif"); err != nil {
glog.InfoExtln("排序调度", "err is : ", err) glog.InfoExtln("排序调度", "err is : ", err)
session.Rollback() session.Rollback()
session.Close() session.Close()
@ -1179,7 +1185,7 @@ LOOPTIME:
startseq = startseq + 1 startseq = startseq + 1
// 更新客户订单状态 // 更新客户订单状态
cotab = db.Pln_custorder{Finr: db.G_FINR, Custordernr: wotab.Custordernr, Status: common.WO_STATUS_RELEASED} cotab = db.Pln_custorder{Finr: db.G_FINR, Custordernr: wotab.Custordernr, Status: common.WO_STATUS_RELEASED}
err = cotab.UpdateToFields(session,"status")
err = cotab.UpdateToFields(session, "status")
if err != nil { if err != nil {
glog.InfoExtln("排序调度", "err is : ", err) glog.InfoExtln("排序调度", "err is : ", err)
session.Rollback() session.Rollback()


Loading…
Cancel
Save