首页 > 其他 > 详细

接收电文基本写法以及步骤

时间:2021-03-04 12:13:48      阅读:89      评论:0      收藏:0      [点我收藏+]

先将电文配置中字段截取导出,选取字段到数据库使用select语句查询比对字段是否一致,不一致的字段记录,在数据项中添加,比对完成保证两边数据项一致后,开始编写接收电文函数代码如下,基本格式都一致

/*************************************************
Copyright:Baosight Software LTD.co Copyright (c) 2010
Author:136675
Date:2018-07-09
Version:1.0
Description: 转炉炉次报告
**************************************************/


/***** C++ 的标准头文件部分 *****/
#include "stdafx.h"
#include "epex.h"
#include "tmmsm23.h"

BM2F_ENTERACE_TELE(mmsm_sb3ua4_rcv);

/*校验电文发送字段长度函数*/
int f_tableObjectCheck9999(ITableObject2& obj);
int f_mmsm_sb3ua4_rcv(EIClass * bcls_rec, EIClass * bcls_ret, CDbConnection * conn)
{
    CTracer log(__FUNCTION__);

    /* ***** 自定义变量 ***** */
    CString sqlstr;
    int doFlag = 0;
    CString tc_no;
    CString tele_str;
    CString TC_NO = "SB3UA4";
    CString proc_div = "";//处理区分
    CString uid = s.userid;//获取用户id
    CString datetimeNow = CDateTime::Now().ToString("yyyyMMddHHmmss");//获取系统时间
    EPEX epex;
    //定义表的实体对象
    CTMMSM23 tmmsm23(conn);
    

    CDbCommand cmd_inq(conn);

    try
    {
        //接收电文内容
        tele_str = (CString)epex.GetTele();
        Log::Trace("", __FUNCTION__, "tele_str = [{0}]", (const char *)epex.GetTele());
        int count = bcls_rec->Tables[0].Rows.get_Count();
        Log::Trace("", __FUNCTION__, "count = [{0}]", count);
        if (count < 0)
        {
            //系统错误信息
            sprintf(s.msg, "获取电文内容出错。");
            throw CApplicationException(-1, s.msg, log.Location);
        }

        tc_no = CString(s.username);
        if (tc_no != "SB3UA4")
        {
            sprintf(s.msg, "应用电文号应为SB3UA4");
            s.flag = -1;
            throw CApplicationException(-1, s.msg, s.svc_name);
        }
        for (int i = 0; i < count; i++)
        {
            tmmsm23.Reset();
            tmmsm23.MergeFrom(bcls_rec->Tables[0].Rows[i]);
            tmmsm23.TrimOrBlank();
            proc_div = bcls_rec->Tables[0].Rows[i]["PROC_DIV"].ToString();
            Log::Trace("", __FUNCTION__, "proc_div = [{0}]", proc_div);
            if (proc_div == "1")
            {
                if (tmmsm23.QueryCount("SM_PLAN_NO,HEAT_NO,MAT_CODE") > 0)
                {
                    Log::Trace("", __FUNCTION__, "操作类型 = [{0}]", "修改");
                    tmmsm23.REC_CREATE_TIME = datetimeNow;
                    tmmsm23.REC_CREATOR = uid;
                    tmmsm23.REC_REVISE_TIME = datetimeNow;
                    tmmsm23.REC_REVISOR = uid;
                    f_tableObjectCheck9999(tmmsm23);
                    tmmsm23.Update("SM_PLAN_NO,HEAT_NO,MAT_CODE");
                }
                else
                {
                    Log::Trace("", __FUNCTION__, "操作类型 = [{0}]", "新增");
                    tmmsm23.REC_CREATE_TIME = datetimeNow;
                    tmmsm23.REC_CREATOR = uid;
                    tmmsm23.REC_REVISE_TIME = datetimeNow;
                    tmmsm23.REC_REVISOR = uid;
                    f_tableObjectCheck9999(tmmsm23);
                    tmmsm23.Insert();
                }
            }
            if (proc_div == "2")
            {
                Log::Trace("", __FUNCTION__, "操作类型 = [{0}]", "删除");
                tmmsm23.Delete();
            }


        }
        strcpy(s.msg, _RES("PSSMS0000176")/*电文接受成功!*/);//处理成功。  
        
    }
    catch (CDbException& ex)  //捕获数据库操作异常
    {
        CFormattable arguments[] = { ex.GetCode() };
        CMessageFormat::Format(s.msg, "数据库处理出错,sqlcode=[{0}]。请联系系统维护人员。", arguments, 1);
        CString str = sqlstr + "\r\n" + ex.GetMsg();
        strncpy(s.sysmsg, (const char*)str, sizeof(s.sysmsg) - 1);
        s.flag = -1;
        doFlag = -1;      //数据库异常时返回-1,事务将被回滚
    }
    catch (CApplicationException& ex)  //捕获应用错误
    {
        s.flag = ex.GetCode();
        doFlag = -1;
    }
    catch (CException& ex)
    {
        strncpy(s.msg, (const char*)ex.GetMsg(), sizeof(s.msg) - 1);
        s.flag = ex.GetCode();
        doFlag = -1;
    }

    return doFlag;


}

 

接收电文基本写法以及步骤

原文:https://www.cnblogs.com/yjy1412/p/14479044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!