package service
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"leit.com/leit_seat_aps/common"
|
|
"leit.com/leit_seat_aps/db"
|
|
"leit.com/leit_seat_aps/glog"
|
|
)
|
|
|
|
// 生产包装处理引擎
|
|
type BL_MESPrintEngine struct {
|
|
PackTmpDict map[string]BL_ProdPackTmp // 生产包装单模板
|
|
}
|
|
|
|
// 加载生产包装单模板
|
|
func (mespe *BL_MESPrintEngine) LoadPackTemplates() (err error) {
|
|
var(
|
|
ppaktmp db.Prod_packtemplate
|
|
ppaktmplst []db.Prod_packtemplate
|
|
bl_ppaktmp BL_ProdPackTmp
|
|
)
|
|
// 初始化
|
|
mespe.PackTmpDict = make(map[string]BL_ProdPackTmp)
|
|
// 加载生产包装单模板
|
|
if ppaktmplst, err = ppaktmp.GetAll(); err != nil {
|
|
err = errors.New(fmt.Sprintf("获取生产包装模板失败%v",err))
|
|
return
|
|
}
|
|
// 将模板字典化
|
|
for _, ppaktmp = range ppaktmplst {
|
|
bl_ppaktmp = BL_ProdPackTmp{PackTmplId: ppaktmp.Packtemplateid, Paktmpltab: ppaktmp}
|
|
mespe.PackTmpDict[bl_ppaktmp.PackTmplId] = bl_ppaktmp
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 读取并解析生产包装单下达消息
|
|
func (mespe *BL_MESPrintEngine) ParseOpenPrintMsg() (err error) {
|
|
var(
|
|
mesmsgtab db.Mes_msg
|
|
mesmsgtablst []db.Mes_msg
|
|
ppakordtab db.Prod_packorder
|
|
bl_mesmsg BL_Mesmsg
|
|
printheadtab db.Printheadtab
|
|
)
|
|
|
|
// 读取MES开口的打印消息
|
|
if mesmsgtablst, err = mesmsgtab.GetOpenPrintMessages(); err != nil{
|
|
err = errors.New(fmt.Sprintf("获取MES开口打印消息失败%v",err))
|
|
}
|
|
// 遍历消息
|
|
for _, mesmsgtab = range mesmsgtablst {
|
|
bl_mesmsg = BL_Mesmsg{Msgid: mesmsgtab.Msgid, MsgObjid: mesmsgtab.Msgobjid,
|
|
MsgType: mesmsgtab.Msgtype, MsgEvent: mesmsgtab.Msgevent, MsgcPara1: mesmsgtab.Msg_cpara1, Msgtab: mesmsgtab}
|
|
switch mesmsgtab.Msgtype {
|
|
// 生产包装打印消息
|
|
case common.MESMSG_TYPE_PACK:
|
|
// 获取包装单,基于打印模板生成打印数据
|
|
ppakordtab = db.Prod_packorder{Finr:db.G_FINR,Packorderid: mesmsgtab.Msgobjid}
|
|
if ppakordtab, err = ppakordtab.SelectOne(); err != nil {
|
|
glog.InfoExtln("生产包装打印消息解析", "获取包装单失败:",mesmsgtab.Msgobjid, err)
|
|
continue
|
|
}
|
|
// 生成打印数据
|
|
if printheadtab, err = bl_mesmsg.GeneratePrintDataForPackOrder(ppakordtab, mespe); err != nil {
|
|
// 更新订单消息的出错状态和出错消息
|
|
if err = bl_mesmsg.Pending(err.Error()); err != nil {
|
|
glog.InfoExtln("生产包装打印消息解析", "生成包装单打印数据失败:", mesmsgtab.Msgobjid, err)
|
|
continue
|
|
}
|
|
} else {
|
|
// 将打印数据插入到打印服务的数据库
|
|
printheadtab = printheadtab
|
|
|
|
|
|
// 关闭订单消息
|
|
if err = bl_mesmsg.Close(); err != nil {
|
|
glog.InfoExtln("生产包装打印消息解析", "关闭包装单打印消息失败:", err)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|