AFC地铁交通项目——呼和浩特(hhht)项目总结——WS限制售票命令

操作员通过图形操作界面设定或取消设定售票限制时,MLC WS产生本数据。

由原本的SVR售票限制命令修改而来:


  • .在OpData文件中新增CAfcMLCOpDataSaleCtrlCmd类(由CAfcOpDataSaleCtrlCmd类复制而来)

添加操作员ID,char型

将车站ID改为vector容器类型用以配合——配置文件(SleSchedule.SaleLimitation_AFC_DT_04005234.ini)——循环读取一条记录里面的多个车站ID

并将类对象按照word文档要求全部初始化。


  • 在OpData文件中新增MlcSaleCtrlCmd结构体(由SaleCtrlCmd结构体复制而来)

添加操作员ID 和 车站数量 两个新的结构体变量 String类型。

只修改友元函数中变量名,在向业务层模块日志文件流式输出MlcSaleCtrlCmd信息时没有添加新结构体变量。


  • 在afcSleScheduleOpTransformTool.cpp文件中添加MlcGetDataFromBuffer函数(由GetDataFromBuffer复制而来)

内容没有做修改,因为都是同样的处理。


  • 在afcSleScheduleOpTransformTool.cpp文件中的GetOnePackage函数中添加新的else if分支

进入分支条件:

// WS售票限制命令 67129908———0x04005234
			else if (uiBMsgCode == WM_SLESCHEDULE_WSSALECTRLCMD)

根据配置文件信息读取数据包时——主要新增For循环来将多个车站ID存放在WS类对象中的,vector容器类型的,车站ID对象中。

最后将解析数据完毕的CAfcMLCOpDataSaleCtrlCmd类对象放入函数形参中的最后一项——vector容器中。


在afcSleScheduleOpMD.cpp文件内

添加ON_MSG(WM_SLESCHEDULE_WSSALECTRLCMD,        MLCOnSaleCtrlCmd,                CAfcSleScheduleOpMD);——用以实现接收对应信号的相关处理。

MLCOnSaleCtrlCmd函数由OnSaleCtrlCmd函数复制而来。——修改了用来解包的函数


新增用来解包的函数 MLCDealSaleCtrlCmd——由 DealSaleCtrlCmd函数复制而来。

在内部修改了sSaleCtrlCmd的类类型由SaleCtrlCmd改为MlcSaleCtrlCmd。

将之后的第一个if判断修改为:

if (bOK && vRcvOpData.size() == 1 && vRcvOpData[0] != NULL) {
		pclSaleCtrlCmd = (CAfcMLCOpDataSaleCtrlCmd*)vRcvOpData[0];//更改强制转换类型
		sSaleCtrlCmd.ucCmdType = pclSaleCtrlCmd->ucCmdType;
		sSaleCtrlCmd.strUserID = pclSaleCtrlCmd->strUserID;			//添加操作员ID
		sSaleCtrlCmd.ucStationNum = pclSaleCtrlCmd->ucStationNum;	//添加车站数量
		GetLocalTimeString(sSaleCtrlCmd.strEffctTime);
	}

将 “处理手工下发的售票限制命令 备注”  至  “清理内存,释放空间 备注”  之间的内容放入一个For循环中,并在For循环每次开始时设定读取的车站ID

for (auto it = pclSaleCtrlCmd->m_vStationId.begin(); it != pclSaleCtrlCmd->m_vStationId.end(); it++) {
		sSaleCtrlCmd.strStationID = *it;
......
}

新增MLCDealSaleCtrlCmdAck函数——由DealSaleCtrlCmdAck函数复制而来。

修改将所有的SaleCtrlCmd类对象改为MlcSaleCtrlCmd类对象。

 

 

 

你可能感兴趣的:(AFC地铁交通项目——呼和浩特(hhht)项目总结——WS限制售票命令)