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 }