|
|
@ -152,12 +152,10 @@ func ParseTodCustorderNew() { |
|
|
|
vcovlst []db.VCustorderVer |
|
|
|
bl_co service.BL_CustOrder |
|
|
|
cust db.Pln_custorder |
|
|
|
errlst db.Pln_custorder_errorlst |
|
|
|
mail db.Sendmailtab |
|
|
|
mailsubject, mailbody string |
|
|
|
verr service.BL_VerifyError |
|
|
|
i, j int |
|
|
|
bRet bool |
|
|
|
todrule string |
|
|
|
session *xorm.Session |
|
|
|
) |
|
|
|
|
|
|
@ -255,68 +253,16 @@ func ParseTodCustorderNew() { |
|
|
|
bl_co.Bl_verrdict[verr.GetDictKey()] = verr |
|
|
|
|
|
|
|
//添加邮件预警
|
|
|
|
host := projtablst[i].Emailserver_host + ":" + common.ValueToString(projtablst[i].Emailserver_port, "") |
|
|
|
body := "项目号: " + todProj.Projectid + "\r\nCustordernr 订单号: " + errlst.Custordernr + "\r\nErrorinfo :" + errlst.Errorinfo + "\r\nPartfamilyid :" + errlst.Partfamilyid + "\r\nPartid :" + errlst.Partid |
|
|
|
mail.Status = "waiting" |
|
|
|
mail.Body = body |
|
|
|
mail.Subject = "Reorder的消息的更新" |
|
|
|
mail.Name = projtablst[i].From_email |
|
|
|
mail.Tomail = projtablst[i].Tod_error_to_recievers |
|
|
|
mail.Host = host |
|
|
|
mail.Password = projtablst[i].From_pwd |
|
|
|
mail.Username = projtablst[i].From_email |
|
|
|
err = mail.Add() |
|
|
|
if err != nil { |
|
|
|
mailsubject = "客户订单号重复错误" |
|
|
|
mailbody = "项目号: " + todProj.Projectid + "\r\n客户订单号: " + bl_co.Oemordernr + "\r\nErrorinfo : 半年内重复!" |
|
|
|
if err = SendTodErrorEmail(projtablst[i],mailsubject, mailbody); err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 如果是指定供应组的SEQ+1发邮件预警
|
|
|
|
if todrule, err = service.GetSysStringParameter(2, bl_co.Projnr, "TOD_EMAIL_RULE"); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
kvlst := strings.Split(todrule, ";") |
|
|
|
if len(kvlst) > 0 { |
|
|
|
for idx, _ := range kvlst { |
|
|
|
rulelst := strings.Split(kvlst[idx], ":") |
|
|
|
// 蒋rulest[0]转化为整型与bl_co.SeqType 比较,如果相等,则比较1开始的供应组
|
|
|
|
seqtype := common.ValueToInt(rulelst[0], 0) |
|
|
|
if seqtype == 1 { |
|
|
|
supplygroups := make(map[string]string) //去除第一个元素
|
|
|
|
for k, v := range rulelst { |
|
|
|
if k > 0 { |
|
|
|
key := v |
|
|
|
supplygroups[key] = v |
|
|
|
} |
|
|
|
} |
|
|
|
//Pln_custorder_ver_partlst
|
|
|
|
for _, jdv := range vcovlst[j].Pln_custorder_ver.Partlst { |
|
|
|
key := jdv.Supplygroupid |
|
|
|
_, ok := supplygroups[key] |
|
|
|
if ok { |
|
|
|
//添加邮件预警
|
|
|
|
host := projtablst[i].Emailserver_host + ":" + common.ValueToString(projtablst[i].Emailserver_port, "") |
|
|
|
body := "项目号: " + todProj.Projectid + "\r\nErrorinfo : TOD SEQ+1更新订单" + "\r\nOemordernr :" + vcovlst[j].Pln_custorder_ver.Oemordernr |
|
|
|
mail.Status = "waiting" |
|
|
|
mail.Body = body |
|
|
|
mail.Subject = "SEQ+1的消息的更新" |
|
|
|
mail.Name = projtablst[i].From_email |
|
|
|
mail.Tomail = projtablst[i].Tod_error_to_recievers |
|
|
|
mail.Host = host |
|
|
|
mail.Password = projtablst[i].From_pwd |
|
|
|
mail.Username = projtablst[i].From_email |
|
|
|
err = mail.Add() |
|
|
|
if err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
AlertForCustOrderUpdateTodByRule(projtablst[i], bl_co, vcovlst[j] ) |
|
|
|
|
|
|
|
// 查询获得客户订单的供应组的零件清单
|
|
|
|
if err = bl_co.GetSupplyGroupPartList(&todProj); err != nil { |
|
|
@ -412,17 +358,8 @@ func ParseTodCustorderNew() { |
|
|
|
|
|
|
|
if bl_co.SeqType == 1 && bl_co.Custordertab.Status >= common.CO_STATUS_RELEASED { |
|
|
|
//添加邮件预警
|
|
|
|
host := projtablst[i].Emailserver_host + ":" + common.ValueToString(projtablst[i].Emailserver_port, "") |
|
|
|
body := "项目号: " + todProj.Projectid + "\r\nErrorinfo : TOD SEQ+1更新订单" + "\r\nOemordernr :" + vcovlst[j].Pln_custorder_ver.Oemordernr + "状态>=26(已下达)" |
|
|
|
mail.Status = "waiting" |
|
|
|
mail.Body = body |
|
|
|
mail.Subject = "SEQ+1 更新报警" |
|
|
|
mail.Name = projtablst[i].From_email |
|
|
|
mail.Tomail = projtablst[i].Tod_error_to_recievers |
|
|
|
mail.Host = host |
|
|
|
mail.Password = projtablst[i].From_pwd |
|
|
|
mail.Username = projtablst[i].From_email |
|
|
|
err = mail.Add() |
|
|
|
mailsubject = "SEQ+1的客户订单已下达" |
|
|
|
mailbody = "项目号: " + todProj.Projectid + "\r\n客户订单号: " + bl_co.Oemordernr + "\r\nErrorinfo : 已下达,SEQ+1更新出错!" |
|
|
|
if err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
@ -441,18 +378,9 @@ func ParseTodCustorderNew() { |
|
|
|
} |
|
|
|
|
|
|
|
//添加邮件预警
|
|
|
|
host := projtablst[i].Emailserver_host + ":" + common.ValueToString(projtablst[i].Emailserver_port, "") |
|
|
|
body := "项目号: " + todProj.Projectid + "\r\nCustordernr 订单号: " + vcovlst[j].Pln_custorder_ver.Custordernr + "\r\nErrorinfo : TOD SEQ+2更新订单" + "\r\nPartfamilyid :" + vcovlst[j].Pln_custorder_ver.Partfamilyid + "\r\nOemordernr :" + vcovlst[j].Pln_custorder_ver.Oemordernr |
|
|
|
mail.Status = "waiting" |
|
|
|
mail.Body = body |
|
|
|
mail.Subject = "Reorder的消息的更新" |
|
|
|
mail.Name = projtablst[i].From_email |
|
|
|
mail.Tomail = projtablst[i].Tod_error_to_recievers |
|
|
|
mail.Host = host |
|
|
|
mail.Password = projtablst[i].From_pwd |
|
|
|
mail.Username = projtablst[i].From_email |
|
|
|
err = mail.Add() |
|
|
|
if err != nil { |
|
|
|
mailsubject = "客户订单取消" |
|
|
|
mailbody = "项目号: " + todProj.Projectid + "\r\n客户订单号: " + bl_co.Oemordernr + "\r\n提示信息 : 客户订单接收到+2请求,取消!" |
|
|
|
if err = SendTodErrorEmail(projtablst[i], mailsubject, mailbody); err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
|
} |
|
|
@ -708,3 +636,69 @@ func ReadTodXlsx() { |
|
|
|
time.Sleep(10 * time.Second) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 发送TOD解析错误或警示邮件
|
|
|
|
func SendTodErrorEmail(projtab db.Me_project, subject, errinfo string)(err error){ |
|
|
|
var mail db.Sendmailtab |
|
|
|
|
|
|
|
mail.Status = "waiting" |
|
|
|
mail.Body = errinfo |
|
|
|
mail.Subject = projtab.Projectid + "-->" + subject |
|
|
|
mail.Name = projtab.From_email |
|
|
|
mail.Tomail = projtab.Tod_error_to_recievers |
|
|
|
mail.Host = projtab.Emailserver_host + ":" + common.ValueToString(projtab.Emailserver_port, "") |
|
|
|
mail.Password = projtab.From_pwd |
|
|
|
mail.Username = projtab.From_email |
|
|
|
err = mail.Add() |
|
|
|
if err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 为项目指定的供应组发送SEQ+1的预警邮件(基于指定供应组)
|
|
|
|
func AlertForCustOrderUpdateTodByRule(projtab db.Me_project, bl_co service.BL_CustOrder, vcov db.VCustorderVer ){ |
|
|
|
var( |
|
|
|
err error |
|
|
|
idx,seqtype,k int |
|
|
|
todrule,v,mailsubject,mailbody string |
|
|
|
kvlst,rulelst []string |
|
|
|
sgdict map[string]string |
|
|
|
exist bool |
|
|
|
) |
|
|
|
|
|
|
|
// 获取项目指定的TOD邮件规则
|
|
|
|
if todrule, err = service.GetSysStringParameter(2, bl_co.Projnr, "TOD_EMAIL_RULE"); err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
kvlst = strings.Split(todrule, ";") |
|
|
|
if len(kvlst) > 0 { |
|
|
|
for idx, _ = range kvlst { |
|
|
|
rulelst = strings.Split(kvlst[idx], ":") |
|
|
|
// 蒋rulest[0]转化为整型与bl_co.SeqType 比较,如果相等,则比较1开始的供应组
|
|
|
|
seqtype = common.ValueToInt(rulelst[0], 0) |
|
|
|
if seqtype == 1 { |
|
|
|
sgdict = make(map[string]string) //去除第一个元素
|
|
|
|
for k, v = range rulelst { |
|
|
|
if k > 0 { |
|
|
|
sgdict[v] = v |
|
|
|
} |
|
|
|
} |
|
|
|
// 遍历客户订单的 Pln_custorder_ver_partlst 获取供应组
|
|
|
|
exist = false |
|
|
|
for _, jdv := range vcov.Pln_custorder_ver.Partlst { |
|
|
|
if _, exist = sgdict[jdv.Supplygroupid]; exist { |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
if exist { |
|
|
|
mailsubject = "SEQ+1提醒" |
|
|
|
mailbody = "项目号: " + bl_co.Custordertab.Projnr + "\r\n客户订单号: " + bl_co.Oemordernr + "\r\n提示信息 : 客户订单接收到+1请求,取消!" |
|
|
|
if err = SendTodErrorEmail(projtab, mailsubject, mailbody); err != nil { |
|
|
|
glog.InfoExtln("发送邮件", "err is :", err) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |