Commit b35fabb6 by wuyang.zou

优化编译程序目标文件

优化 Dockerfile 内容,方便打包 stg 、prod 环境 镜像程序包;
优化日志输出

Version: 5.2023.11.10
parent e857251c
#! /bin/bash
./configure -prefix /home/freemud/arm_build_all/qt_aarch64 \
-openssl-linked \
OPENSSL_PREFIX='/home/freemud/arm_build_all/openssl-1.1.1v-arm/built_arm_ok' OPENSSL_LIBS='-lssl -lcrypto' \
-opensource -confirm-license \
-release \
-strip \
-shared \
-xplatform myaarch64 \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
--libpng=qt \
--libjpeg=qt \
-recheck-all
...@@ -2,11 +2,9 @@ ...@@ -2,11 +2,9 @@
【主要是安装运行在 x86_64 host能够编译 arm版本程序的源代码,aarch-*-gcc aarch-*g++】 【主要是安装运行在 x86_64 host能够编译 arm版本程序的源代码,aarch-*-gcc aarch-*g++】
【 /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc || aarch64-linux-gnu-g++ 】 【 /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc || aarch64-linux-gnu-g++ 】
2、安装 x86_64 host 能够运行的 Qt Creater 以及 Qt源代码: qt-everywhere-src-5.12.9.tar.xz 2、安装 x86_64 host 能够运行的 Qt Creater 以及 Qt源代码: qt-everywhere-src-5.12.9.tar.xz
【 /home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/mkspecs/myaarch64 】 【 /home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/mkspecs/myaarch64 】
3、编译 能支持arm版本 的 qmake 编译器文件,以及arm版本相关 qt 库文件; 3、编译 能支持arm版本 的 qmake 编译器文件,以及arm版本相关 qt 库文件;
【需依赖提前使用 aarch-*-gcc 编译好 arm 版本的 openssl 头文件 和 库】 【需依赖提前使用 aarch-*-gcc 编译好 arm 版本的 openssl 头文件 和 库】
【/home/freemud/arm_build_all/openssl-1.1.1v-arm 】 【/home/freemud/arm_build_all/openssl-1.1.1v-arm 】
...@@ -18,31 +16,28 @@ ...@@ -18,31 +16,28 @@
.......\ .......\
4、使用 x86_64 host 能够运行的 Qt Creater 新增能 构建arm程序 qmake编译器套件; 4、使用 x86_64 host 能够运行的 Qt Creater 新增能 构建arm程序 qmake编译器套件;
【构建完成:/home/freemud/arm_build_all/qt_aarch64/bin/qmake && lib && include】 【构建完成:/home/freemud/arm_build_all/qt_aarch64/bin/qmake && lib && include】
5、使用arm版本的qmake套件 编译现有的 PmsPlugin 程序的源代码; 5、使用arm版本的qmake套件 编译现有的 PmsPlugin 程序的源代码;
【openssl 库版本原因,需要调整 长连接部分(加解密函数方法),注释源代码,一步一个脚印调试 应用程序异常退出的原因】 【openssl 库版本原因,需要调整 长连接部分(加解密函数方法),注释源代码,一步一个脚印调试 应用程序异常退出的原因】
6、使用 Mac电脑(M1 M2 cpu架构,就是 arm架构)安装 docker,再安装 ubuntu:20.04 容器镜像; 6、使用 Mac电脑(M1 M2 cpu架构,就是 arm架构)安装 docker,再安装 ubuntu:20.04 容器镜像;
在镜像中安装 mysqlclient-dev 包,从而获得 arm 版本的 libmysqlclient.so 和 include 文件; 在镜像中安装 mysqlclient-dev 包,从而获得 arm 版本的 libmysqlclient.so 和 include 文件;
【这样就不用在 x86_64 host 中编译 arm 版本的 libmysqlclient.so (此过程非常复杂)】 【这样就不用在 x86_64 host 中编译 arm 版本的 libmysqlclient.so (此过程非常复杂)】
【/home/freemud/arm_build_all/mysql-client】 【/home/freemud/arm_build_all/mysql-client】
7、使用 arm版本的 libmysqlclient.so 和 include 头文件,编译 Qt 应用程序需要依赖的 libqsqlmysql.so 库文件 7、使用 arm版本的 libmysqlclient.so 和 include 头文件,编译 Qt 应用程序需要依赖的 libqsqlmysql.so 库文件
(应用程序需要依赖这个文件,对Mysql数据库进行连接,并进行数据操作) (应用程序需要依赖这个文件,对Mysql数据库进行连接,并进行数据操作)
【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/src/plugins/sqldrivers】 【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/src/plugins/sqldrivers】
【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/plugins/sqldrivers/libqsqlmysql.so】 【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/plugins/sqldrivers/libqsqlmysql.so】
8、将 应用程序的依赖库进行 打包,拷贝到 容器镜像中进行运行测试,以及后期的联调; 8、将 应用程序的依赖库进行 打包,拷贝到 容器镜像中进行运行测试,以及后期的联调;
【/home/freemud/arm_build_all/build-takeout-aarch64_qt_5_12-Release/bin/PmsPlugin && lib && config 】 【/home/freemud/arm_build_all/build-takeout-aarch64_qt_5_12-Release/bin/PmsPlugin && lib && config 】
9、将容器镜像进行打包,为后续 lib办公室的物理机进行运行测试; 9、将容器镜像进行打包,为后续 lib办公室的物理机进行运行测试;
【无】 【无】
10、新增容器核心 心跳检查接口,以及新增日志滚动清理逻辑;
From ubuntu:20.04 From ubuntu:20.04
MAINTAINER freeemud<wuyang.zou@starbucks.cn>
ENV TZ Asia/Shanghai ENV TZ Asia/Shanghai
RUN apt-get update && apt-get install -y tzdata RUN apt-get update && apt-get install -y tzdata
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
RUN echo 'Asia/Shanghai' >/etc/timezone RUN echo 'Asia/Shanghai' >/etc/timezone
COPY ./bin /data/bin COPY ./bin /data/bin
COPY ./bin/config-prod.ini /data/bin/config.ini
Copy ./run.sh /data Copy ./run.sh /data
WORKDIR /data WORKDIR /data
......
From ubuntu:20.04
MAINTAINER freeemud<wuyang.zou@starbucks.cn>
ENV TZ Asia/Shanghai
RUN apt-get update && apt-get install -y tzdata
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
RUN echo 'Asia/Shanghai' >/etc/timezone
COPY ./bin /data/bin
COPY ./bin/config-stg.ini /data/bin/config.ini
Copy ./run.sh /data
WORKDIR /data
ENTRYPOINT ["bash","run.sh"]
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64" export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64"
#export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64" #export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64"
/home/admin/pcsPlugin/bin/PmsPlugin /home/admin/pcsPlugin/bin/PcsPlugin
#/data/bin/PmsPlugin #/data/bin/PcsPlugin
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
#export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64" #export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64"
export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64" export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64"
#/home/admin/pcsPlugin/bin/PmsPlugin #/home/admin/pcsPlugin/bin/PcsPlugin
/data/bin/PmsPlugin /data/bin/PcsPlugin
文件用途介绍: ================ 文件用途介绍: ================
1、Dockerfile 用于将开发机上可执行程序 以及依赖库等文件,进行打包成下镜像文件;
打包镜像文件命令:sudo docker build . -t harbor-ppe1.eniot.io/edge/pcs-plugin:tag_pcs-plugin_v4_20231024_002
2、run.sh. 是应用程序启动脚本文件; 1、Dockerfile 用于将开发机上可执行程序 以及依赖库等文件,进行打包成下镜像文件;
PcsPlugin应用, 打包成镜像文件命令:
sudo docker build . -t harbor-ppe1.eniot.io/edge/pcs-plugin:tag_pcs-plugin_v4_20231024_002 【默认使用 Dockerfile 文件进行镜像打包】
sudo docker build . -f Dockerfile-Stg -t harbor-ppe1.eniot.io/edge/pcs-plugin:tag_pcs-plugin_v4_20231024_002 【Stg:指定 Dockerfile-Stg 文件进行镜像打包】
sudo docker build . -f Dockerfile-Prod -t harbor-ppe1.eniot.io/edge/pcs-plugin:tag_pcs-plugin_v4_20231024_002 【Prod:指定 Dockerfile-Prod 文件进行镜像打包】
2、run.sh 是应用程序启动脚本文件;
3、bin 文件夹是 PmsPlugin 程序可以运行的全部程序文件目录; 3、bin 文件夹是 PcsPlugin 程序可以运行的全部程序文件目录;
======== 开发机器环境介绍 =========== ======== Box 开发机器环境介绍 ===========
机器ip:10.73.194.155 机器ip:10.73.194.155 账户:admin 密码:En&viSi0n!#%
账户:admin
密码:En&viSi0n!#%
======== 插件的心跳检查接口 =========== ======== 插件的心跳检查接口 ===========
curl --location 'http://127.0.0.1:24409/healthCheck' \ curl --location 'http://127.0.0.1:24409/healthCheck' \
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data '' --data ''
======== 手动启动本地镜像(非系统角色)环境;初期调试使用 ================ ======== 本机开发调试:手动启动本地镜像(非系统角色)环境;初期调试使用 ================
sudo docker run --net="host" -p 24409:24409 --name pcsPlugin33 -it -d pcs-plugin:v4.2023.10.24 bash sudo docker run --net="host" -p 24409:24409 --name pcsPlugin33 -it -d pcs-plugin:v4.2023.10.24 bash
sudo docker run --net="host" -p 24409:24409 --name pcsPlugin3 -v /home/admin/pcsPlugin:/data -it -d ubuntu:20.04 bash
sudo docker run -p 24409:24409 --name pcsPlugin2 -v /home/admin/pcsPlugin:/data -it -d ubuntu:20.04 bash
======== 将镜像保存到本地文件; ================ ======== 操作镜像文件:保存导出,拷贝,导入================
sudo docker image ls 【查看镜像列表】 sudo docker image ls 【查看镜像列表】
sudo docker save -o pcs-plugin_v4.2023.10.24.tar pcs-plugin:v4.2023.10.24 【将目标 镜像(仓库:tag)保存本地压缩包文件】 sudo docker save -o pcs-plugin_v4.2023.10.24.tar pcs-plugin:v4.2023.10.24 【将目标镜像(仓库:tag)保存本地压缩包文件】
sudo chown admin:admin /home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar 【修改压缩文件的 Owner,方便后续的 拷贝】 sudo chown admin:admin /home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar 【修改压缩文件的Owner,方便后续的拷贝】
sudo scp -r admin@10.73.194.155:/home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar /Users/wzou/Desktop/Arm_Pcs_Ctr 【scp开发机器镜像包,到本地进行传输】
sudo docker load -i pcs-plugin_v4.2023.10.24.tar 【将镜像压缩文件,导入到服务端的docker的镜像列表中】
sudo scp -r admin@10.73.194.155:/home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar /Users/wzou/Desktop/Arm_Pcs_Ctr 【scp拷贝】
sudo docker load -i pcs-plugin_v4.2023.10.24.tar 【将镜像压缩文件,导入到docker的镜像列表中】
======= docker 扩展使用 ================ ======= docker 扩展使用 ================
https://blog.csdn.net/weixin_45505313/article/details/125020076 https://blog.csdn.net/weixin_45505313/article/details/125020076
将正在运行的容器打包成 image: 将正在运行的容器打包成 image:
sudo docker commit -a "wuyang.zou" -m "Create PcsPlugin Init Image" bf4ef2b8f77e pcs-plugin:v4.2023.10.24 sudo docker commit -a "wuyang.zou" -m "Create PcsPlugin Init Image" bf4ef2b8f77e pcs-plugin:v4.2023.10.24
sha256:49fba71465aa39e1db64fd21a68f52e070e010d4e89819c904de0a3a95514e15 sha256:49fba71465aa39e1db64fd21a68f52e070e010d4e89819c904de0a3a95514e15
==== 打包镜像 番外篇:【目前已经使用 Dockerfile 文件进行打包了 】====
https://blog.csdn.net/weixin_45505313/article/details/125020076
【保存镜像】docker save 镜像id -o E:\Docker\redis.tar 仓库名 【保存镜像】docker save 镜像id -o E:\Docker\redis.tar 仓库名
【加载镜像】docker load -i E:\Docker\redis.tar 【加载镜像】docker load -i E:\Docker\redis.tar
-------------------------------------------------------------
【将镜像以一个指定名字的容器运行起来】docker run -d -p 24409:24409 --name pcsPlugin ubuntu 【将镜像以一个指定名字的容器运行起来】docker run -d -p 24409:24409 --name pcsPlugin ubuntu
【停止正在运行的容器】docker stop pcsPlugin 【停止正在运行的容器】docker stop pcsPlugin
【以bash与正在运行的容器进行交互】docker exec -it pcsPlugin bash 【以bash与正在运行的容器进行交互】docker exec -it pcsPlugin bash
ubuntu 20.04. images id : 15c9d636cadd ubuntu 20.04. images id : 15c9d636cadd
----------------------------------------------------------------------------------- -----------------------------------------------------------------------------------
sudo docker ps --all 【有停止的容器】 sudo docker ps --all 【包含停止状态的容器】
sudo docker container ls 【容器id: fae29cc16c70】 sudo docker container ls 【容器id: fae29cc16c70】
sudo docker container logs sudo docker container logs 【查看容器日志信息】
sudo docker run --net="host" -p 24409:24409 --name pcsPlugin3 -v /home/admin/pcsPlugin:/data -it -d ubuntu:20.04 bash
sudo docker exec -it c67b5bf46833 bash 【进入正在运行的容器】 sudo docker exec -it c67b5bf46833 bash 【进入正在运行的容器】
=============== 自己的镜像运行设置 时区的配置 ================================== =============== 镜像运行设置时区 ======================
ENV TZ=Asia/Shanghai ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && \ RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata 作者:Docker内容分享 https://www.bilibili.com/read/cv25758166/ 出处:bilibili dpkg-reconfigure -f noninteractive tzdata
...@@ -97,7 +97,7 @@ bool SocketCommunicate::connectTcpSvr() ...@@ -97,7 +97,7 @@ bool SocketCommunicate::connectTcpSvr()
connect(_sslSocket, &QSslSocket::bytesWritten, [this] (quint64 writebyte) { Q_UNUSED(writebyte); _isTimeout = false; emit writeReady(); } ); connect(_sslSocket, &QSslSocket::bytesWritten, [this] (quint64 writebyte) { Q_UNUSED(writebyte); _isTimeout = false; emit writeReady(); } );
//下载证书接口(需要门店号 & 设备号)待调试, 评估是否需要保存证书文件: //下载证书接口(需要门店号 & 设备号)待调试, 评估是否需要保存证书文件:
QLOG_INFO() << "connectTcpSvr:: Get Certificate From Url: ......................"; QLOG_INFO() << QString("connectTcpSvr:: Get Certificate From Url: ......................");
std::string tempMacAddress = ""; std::string tempMacAddress = "";
std::string tempIpAddress = ""; std::string tempIpAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress , tempIpAddress ); int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress , tempIpAddress );
......
...@@ -339,7 +339,7 @@ void FlowControl::_ClickToLogin() ...@@ -339,7 +339,7 @@ void FlowControl::_ClickToLogin()
{ {
QLOG_INFO()<<QString("[<<<<---FlowControl::_ClickToLogin() PmsPlugin Try Login Now,If Failed Then Retry After 6s--->>>>]"); QLOG_INFO()<<QString("[<<<<---FlowControl::_ClickToLogin() PmsPlugin Try Login Now,If Failed Then Retry After 6s--->>>>]");
_PmsMachineReqTryLogin(); _PmsMachineReqTryLogin();
}else{ } else {
m_loginTimer->start(1000*60*2); m_loginTimer->start(1000*60*2);
} }
} }
...@@ -430,7 +430,7 @@ void FlowControl::_NotifyPmsPullOrder() ...@@ -430,7 +430,7 @@ void FlowControl::_NotifyPmsPullOrder()
void FlowControl::_NotifyPmsUpdateOrder() void FlowControl::_NotifyPmsUpdateOrder()
{ {
if ( !m_simValidOrdersList.isEmpty() ) { if ( !m_simValidOrdersList.isEmpty() ) {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_NotifyPmsUpdateOrder: m_simValidOrdersList.count()=%1, m_waitUpdateOrderList.count()=%2, Priority Process Insert List--->>>>>]") QLOG_INFO()<<QString("[<<<<---_NotifyPmsUpdateOrder: m_simValidOrdersList.count()=%1, m_waitUpdateOrderList.count()=%2, Priority Process Insert List--->>>>>]")
.arg( m_simValidOrdersList.count() ).arg( m_waitUpdateOrderList.count() ); .arg( m_simValidOrdersList.count() ).arg( m_waitUpdateOrderList.count() );
m_notifyPmsUpdateTimer->start(1000*3); m_notifyPmsUpdateTimer->start(1000*3);
return; return;
...@@ -438,11 +438,11 @@ void FlowControl::_NotifyPmsUpdateOrder() ...@@ -438,11 +438,11 @@ void FlowControl::_NotifyPmsUpdateOrder()
if(!m_waitUpdateOrderList.isEmpty()) if(!m_waitUpdateOrderList.isEmpty())
{ {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_NotifyPmsUpdateOrder: m_waitUpdateOrderList.isEmpty()=%1, m_waitUpdateOrderList.count()=%2--->>>>>]") QLOG_INFO()<<QString("[<<<<---_NotifyPmsUpdateOrder: m_waitUpdateOrderList.isEmpty()=%1, m_waitUpdateOrderList.count()=%2--->>>>>]")
.arg( m_waitUpdateOrderList.isEmpty()?1:0 ).arg( m_waitUpdateOrderList.count() ); .arg( m_waitUpdateOrderList.isEmpty()?1:0 ).arg( m_waitUpdateOrderList.count() );
m_notifyPmsUpdateTimer->start(1000*1); m_notifyPmsUpdateTimer->start(1000*1);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FM插件 向PMS数据库插入数据; 并添加 Redis --->>>>]"); QLOG_INFO()<<QString("[<<<<---Fm Plugin Insert Into PCS DB, And Append Redis --->>>>]");
QString listFirstOrderId = m_waitUpdateOrderList.takeFirst(); QString listFirstOrderId = m_waitUpdateOrderList.takeFirst();
OrderObject* orderObject = m_FmOrdersMap.value(listFirstOrderId); OrderObject* orderObject = m_FmOrdersMap.value(listFirstOrderId);
...@@ -478,7 +478,7 @@ void FlowControl::_NotifyPmsUpdateOrder() ...@@ -478,7 +478,7 @@ void FlowControl::_NotifyPmsUpdateOrder()
break; break;
} else { } else {
QLOG_ERROR()<<QString("[<<<<---FlowControl::_NotifyPmsUpdateOrder _AppendOrderInfo2Redis Failed, Try Again--->>>>]"); QLOG_ERROR()<<QString("[<<<<---FlowControl::_NotifyPmsUpdateOrder _AppendOrderInfo2Redis Failed, Try Again--->>>>]");
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_NotifyPmsUpdateOrder() Begin initQtRedisClient()--->>>>]"); QLOG_INFO()<<QString("[<<<<---FlowControl::_NotifyPmsUpdateOrder() Begin initQtRedisClient()--->>>>]");
m_initPmsRedisRet = QtRedisClient::getInstance().initQtRedisClient(); m_initPmsRedisRet = QtRedisClient::getInstance().initQtRedisClient();
continue; continue;
} }
...@@ -491,10 +491,10 @@ void FlowControl::_NotifyPmsUpdateOrder() ...@@ -491,10 +491,10 @@ void FlowControl::_NotifyPmsUpdateOrder()
PmsOrdersData::getInstance().deleteOrderData(orderObject); PmsOrdersData::getInstance().deleteOrderData(orderObject);
} }
//将此订单添加汇报队列中; 参数2: "1":代表成功; "2":代表失败; 参数3:入机备注; //将此订单添加汇报队列中; 参数2: "1":代表成功; "2":代表失败; 参数3:入机备注;
_AddOrderInfo2ReportList(orderObject,QString("2"),QString::fromLocal8Bit("Order Insert/Update PMS DB Failed !!!")); _AddOrderInfo2ReportList(orderObject,QString("2"),QString("Order Insert/Update PMS DB Failed !!!"));
} }
} else { } else {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_NotifyPmsUpdateOrder Insert Mysql DB orderObject Is Null:--->>>>]"); QLOG_INFO()<<QString("[<<<<---FlowControl::_NotifyPmsUpdateOrder Insert Mysql DB orderObject Is Null:--->>>>]");
} }
} else { } else {
m_notifyPmsUpdateTimer->start(1000*5); m_notifyPmsUpdateTimer->start(1000*5);
...@@ -512,7 +512,7 @@ void FlowControl::_NotifyCyclePullAllOrder() ...@@ -512,7 +512,7 @@ void FlowControl::_NotifyCyclePullAllOrder()
//定期拉取OMS门店全部有效订单 间隔为:10分钟; //定期拉取OMS门店全部有效订单 间隔为:10分钟;
//m_cyclePullAllOrderTimer->start(1000*60*10); //m_cyclePullAllOrderTimer->start(1000*60*10);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_NotifyCyclePullAllOrder Next Pull All Order Time: %1--->>>>]") QLOG_INFO()<<QString("[<<<<---FlowControl::_NotifyCyclePullAllOrder Next Pull All Order Time: %1--->>>>]")
.arg(QDateTime::currentDateTime().addSecs(60*10).toString("yyyy-MM-dd hh:mm:ss")); .arg(QDateTime::currentDateTime().addSecs(60*10).toString("yyyy-MM-dd hh:mm:ss"));
} }
...@@ -721,8 +721,7 @@ bool FlowControl::_SimValidOrdersListIsEmpty(){ ...@@ -721,8 +721,7 @@ bool FlowControl::_SimValidOrdersListIsEmpty(){
void FlowControl::_InitDataBeforeLogin(){ void FlowControl::_InitDataBeforeLogin(){
QLOG_INFO()<<"[<<<<---FlowControl::_InitDataBeforeLogin:Openssl support--->>>>]:"; QLOG_INFO()<<"[<<<<---FlowControl::_InitDataBeforeLogin:Openssl support--->>>>]:"<< QSslSocket::supportsSsl(); //exec will dump;
// << QSslSocket::supportsSsl(); //exec will dump;
m_loginSocket = new BillSocket(this); m_loginSocket = new BillSocket(this);
m_pullOrderSocket = new BillSocket(this); m_pullOrderSocket = new BillSocket(this);
m_reportOMSRecordOrderSocket = new BillSocket(this); m_reportOMSRecordOrderSocket = new BillSocket(this);
...@@ -785,6 +784,7 @@ bool FlowControl::_Login() ...@@ -785,6 +784,7 @@ bool FlowControl::_Login()
result = false; result = false;
emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("登录失败![%1]").arg(recvJson[JSON_MESSAGE].toString())); emit showAlert(AlertForm::MSGERROR, QString::fromLocal8Bit("登录失败![%1]").arg(recvJson[JSON_MESSAGE].toString()));
m_loginErrorCount++; m_loginErrorCount++;
m_bFirstRecvInfo =false; // _Login() 自驱动, _ClickToLogin() -> _PmsMachineReqTryLogin()-> 双重触发;
} else { } else {
m_storeName = recvJson[JSON_STORENAME].toString(); m_storeName = recvJson[JSON_STORENAME].toString();
m_openTcpChannel = recvJson[JSON_OPEN_TCP_CHANNEL].toBool(); m_openTcpChannel = recvJson[JSON_OPEN_TCP_CHANNEL].toBool();
...@@ -871,6 +871,7 @@ bool FlowControl::_Login() ...@@ -871,6 +871,7 @@ bool FlowControl::_Login()
return result; return result;
} }
void FlowControl::_PullOrderData() void FlowControl::_PullOrderData()
{ {
if(m_orderPullList.isEmpty()) if(m_orderPullList.isEmpty())
...@@ -1878,7 +1879,7 @@ void FlowControl::_CrondClearExpireOrder() ...@@ -1878,7 +1879,7 @@ void FlowControl::_CrondClearExpireOrder()
//QDateTime currentDateTime= QDateTime::currentDateTime(); //--按秒数来验证ok-- //QDateTime currentDateTime= QDateTime::currentDateTime(); //--按秒数来验证ok--
QDate currentDate= QDate::currentDate(); QDate currentDate= QDate::currentDate();
//QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]").arg(currentDateTime.toString("yyyy-MM-dd hh:mm:ss")); //--按秒数来验证OK-- //QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]").arg(currentDateTime.toString("yyyy-MM-dd hh:mm:ss")); //--按秒数来验证OK--
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: 清理内存中订单数据的清理日期:%1 --->>>>]").arg(currentDate.toString("yyyy-MM-dd")); QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder: Clear Memory Order Data, Clear Datetime: %1 --->>>>]").arg(currentDate.toString("yyyy-MM-dd"));
OrderObject *order=nullptr; OrderObject *order=nullptr;
m_OrderEntryMutex.lock(); m_OrderEntryMutex.lock();
foreach (order, m_FmOrdersMap.values()) { foreach (order, m_FmOrdersMap.values()) {
...@@ -1889,14 +1890,14 @@ void FlowControl::_CrondClearExpireOrder() ...@@ -1889,14 +1890,14 @@ void FlowControl::_CrondClearExpireOrder()
} }
//QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder-> order->createTime Or expectDate :%1--->>>>]").arg(order->createTime); //--按秒数来验证ok-- //QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder-> order->createTime Or expectDate :%1--->>>>]").arg(order->createTime); //--按秒数来验证ok--
QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder-> order createDate Or expectDate :%1--->>>>]").arg(createDate.toString("yyyy-MM-dd")); QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder-> Order CreateDate Or ExpectDate :%1--->>>>]").arg(createDate.toString("yyyy-MM-dd"));
//qint64 seconds = createDateTime.secsTo(currentDateTime); //--按秒数来验证ok-- //qint64 seconds = createDateTime.secsTo(currentDateTime); //--按秒数来验证ok--
qint64 days = createDate.daysTo(currentDate); qint64 days = createDate.daysTo(currentDate);
//QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: 相差多少秒:%1--->>>>]").arg(seconds); //--按秒数来验证ok-- //QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: 相差多少秒:%1--->>>>]").arg(seconds); //--按秒数来验证ok--
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: 相差多少天:%1--->>>>]").arg(days); QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: Diff %1 Days--->>>>]").arg(days);
if(days>=1) if(days>=1)
{ {
QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: Emit Signal:Clear Order orderID:%1--->>>>]").arg(order->id); QLOG_INFO()<<QString("[<<<<---_CrondClearExpireOrder: ClearExpireOrder: Emit Signal: Clear OrderId: %1--->>>>]").arg(order->id);
emit clearorder(order->id,order->orderStatus); emit clearorder(order->id,order->orderStatus);
m_FmOrdersMap.value(order->id)->deleteLater(); m_FmOrdersMap.value(order->id)->deleteLater();
m_FmOrdersMap.remove(order->id); m_FmOrdersMap.remove(order->id);
...@@ -1917,7 +1918,7 @@ void FlowControl::_CrondClearExpireOrder() ...@@ -1917,7 +1918,7 @@ void FlowControl::_CrondClearExpireOrder()
if ( RepOMSRecOrderIn ) { if ( RepOMSRecOrderIn ) {
QDate recordDate = QDate::fromString( (RepOMSRecOrderIn->recordDate ).mid(0,10),"yyyy-MM-dd"); QDate recordDate = QDate::fromString( (RepOMSRecOrderIn->recordDate ).mid(0,10),"yyyy-MM-dd");
qint64 recordDays = recordDate.daysTo(currentDate); qint64 recordDays = recordDate.daysTo(currentDate);
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireRecordOrderInfo: 相差多少天:%1--->>>>]").arg(recordDays); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_CrondClearExpireOrder: ClearExpireRecordOrderInfo: Diff %1 Day--->>>>]").arg(recordDays);
if ( recordDays >= 1 ) { if ( recordDays >= 1 ) {
m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn ); m_orderRecordRepOMSList.removeOne( RepOMSRecOrderIn );
delete RepOMSRecOrderIn; delete RepOMSRecOrderIn;
......
...@@ -31,7 +31,7 @@ void LocalHttpServer::run() ...@@ -31,7 +31,7 @@ void LocalHttpServer::run()
healthCheckReplyObject.insert("status","ok"); healthCheckReplyObject.insert("status","ok");
healthCheckReplyObject.insert("statusCode","100"); healthCheckReplyObject.insert("statusCode","100");
healthCheckReplyObject.insert("currentDatetime", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); healthCheckReplyObject.insert("currentDatetime", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
QLOG_INFO() << QString("[<<<<---FM PmsPlugin Response healthCheck Result:--->>>>]") << healthCheckReplyObject; QLOG_INFO() << QString("[<<<<---FM PcsPlugin Response healthCheck Result:--->>>>]") << healthCheckReplyObject;
session->replyJsonObject(healthCheckReplyObject); session->replyJsonObject(healthCheckReplyObject);
} else { } else {
// QString recvData = QString::fromUtf8(session->requestRawData()); // QString recvData = QString::fromUtf8(session->requestRawData());
...@@ -70,25 +70,26 @@ void LocalHttpServer::run() ...@@ -70,25 +70,26 @@ void LocalHttpServer::run()
} }
/***将FM外卖插件中的合法有效数据返回给上面Http发过来的请求***/ /***将FM外卖插件中的合法有效数据返回给上面Http发过来的请求***/
replyObject = FlowControl::GetInstance()._PackHttpReplyJson( status, msg, data,iscontinue, pushOrderId ); replyObject = FlowControl::GetInstance()._PackHttpReplyJson( status, msg, data,iscontinue, pushOrderId );
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PmsPlugin Response Http Result:--->>>>]") << replyObject; QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PcsPlugin Response Http Result:--->>>>]") << replyObject;
session->replyJsonObject(replyObject); session->replyJsonObject(replyObject);
} }
} }
/***解析FM外卖插件HTTP服务与Http请求的会话连接是否断开: 会话连接断开***/ /***解析FM外卖插件HTTP服务与Http请求的会话连接是否断开: 会话连接断开***/
else{ else{
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PmsPlugin Http Service & Http Session Disconnect--->>>>]"); QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PcsPlugin Http Service & Http Session Disconnect--->>>>]");
} }
} ); } );
/***FM外卖插件绑定启动HTTP服务的端口***/ /***FM外卖插件绑定启动HTTP服务的端口***/
int port = ConfigManger::GetInstance().GetHttpServerPort(); int port = ConfigManger::GetInstance().GetHttpServerPort();
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PmsPlugin Http Listen Port: %1 :--->>>>]").arg(port); QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PcsPlugin Http Listen Port: %1 :--->>>>]").arg(port);
if(m_tcpServerManage->listen( QHostAddress::Any, port))
if ( m_tcpServerManage->listen( QHostAddress::Any, port ) )
{ {
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PmsPlugin Http Listen Port Bind Successful !!!--->>>>]"); QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PcsPlugin Http Listen Port Bind Successful !!!--->>>>]");
}else{ } else {
QLOG_INFO() << QString::fromLocal8Bit("[<<<<---FM PmsPlugin Http Listen Port Bind Failed !!!--->>>>]"); QLOG_ERROR() << QString::fromLocal8Bit("[<<<<---FM PcsPlugin Http Listen Port Bind Failed !!!--->>>>]");
} }
} }
......
...@@ -12,7 +12,7 @@ include("./QsLog/QsLog.pri") ...@@ -12,7 +12,7 @@ include("./QsLog/QsLog.pri")
include("./JQLibrary/JQLibrary.pri") include("./JQLibrary/JQLibrary.pri")
include("./qredisclient/qredisclient.pri") include("./qredisclient/qredisclient.pri")
TARGET = PmsPlugin TARGET = PcsPlugin
TEMPLATE = app TEMPLATE = app
CONFIG +=c++11 CONFIG +=c++11
......
...@@ -76,7 +76,7 @@ int main(int argc, char *argv[]) ...@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
LoadTheme(APP_THEME); LoadTheme(APP_THEME);
QLOG_INFO() << QString("[<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]"); QLOG_INFO() << QString("[<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]");
QLOG_INFO() << QString("[<<<<<<<-- fmPmsPlugin Start Version: %1 -->>>>>>>>]").arg(APP_VERSION); QLOG_INFO() << QString("[<<<<<<<-- fmPcsPlugin Start Version: %1 -->>>>>>>>]").arg(APP_VERSION);
QLOG_INFO() << QString("[<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]"); QLOG_INFO() << QString("[<<<<<<<<<<<<<<<<<<<<<<<<<---->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]");
// UnitTest; // UnitTest;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#define APP_THEME "deaufult" #define APP_THEME "deaufult"
// #define APP_VERSION "4.2023.10.12" // #define APP_VERSION "4.2023.10.12"
#define APP_VERSION "5.2023.10.29" #define APP_VERSION "5.2023.11.10"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn" #define SERVER_PASSWORD "posoperator@freemud.cn"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2023-10-29T15:43:29. --> <!-- Written by QtCreator 4.11.1, 2023-10-29T19:50:09. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment