SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.7 KiB

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
}