|
|
- 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
- }
|