Commit a7422830 by 鸣鸿

删除目录fmPlugin

parent a088791e
#include "fmPlugin.h"
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QVariant>
#include <QDebug>
#include <QSettings>
FmPlugin &FmPlugin::GetInstance()
{
static FmPlugin fmPlugin;
return fmPlugin;
}
bool FmPlugin::ConnectDb(const QString &host, const QString &username, const QString &password, const QString &dbname, QString &error)
{
// TODO(用于鲜丰演示)
return true;
// 清除之前的连接
QSqlDatabase::removeDatabase(m_db.connectionName());
m_db = QSqlDatabase::addDatabase("QODBC");
m_db.setConnectOptions(QString("SQL_ATTR_LOGIN_TIMEOUT=5;SQL_ATTR_CONNECTION_TIMEOUT=5"));
m_db.setDatabaseName(QString("Driver={sql server}; server=%1; database=%2; uid=%3; pwd=%4")
.arg(host).arg(dbname).arg(username).arg(password));
if(m_db.open())
{
error = QString("success");
m_db.close();
return true;
}else
{
error = m_db.lastError().text();
return false;
}
}
bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId, QDateTime &dateTime, QString &error)
{
// TODO(用于鲜丰演示)
QSettings set("tmp.ini", QSettings::IniFormat);
storeId = set.value("storeId").toString();
posId = QString("001");
cashierId = QString("001");
return true;
if(!m_db.open())
{
error = m_db.lastError().text();
return false;
}
QSqlQuery query = QSqlQuery(m_db);
// 获取门店号
QString queryStoreId("select sys_var_value from sys_t_system where sys_var_id='g_branch_no';");
query.prepare(queryStoreId);
if (!query.exec())
{
error = query.lastError().text();
m_db.close();
return false;
}
query.next();
storeId = query.value(0).toString();
m_storeId = storeId;
// 获取营业日
QString queryDateTime("select sys_var_value from sys_t_system where sys_var_id='dBusiness';");
query.prepare(queryDateTime);
if (!query.exec())
{
error = query.lastError().text();
m_db.close();
return false;
}
query.next();
dateTime = query.value(0).toDateTime();
posId="1";
cashierId="1";
error = QString("success");
m_db.close();
return true;
}
bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &error)
{
// TODO(用于鲜丰演示)
CashierObject obj;
obj.id = "001";
obj.name = "鲜丰测试";
cashiersList.append(obj);
return true;
if(!m_db.open())
{
error = m_db.lastError().text();
return false;
}
// 获取在班收银员信息
QSqlQuery query = QSqlQuery(m_db);
QString queryCashiers("select * from v_km_cashshift;");
query.prepare(queryCashiers);
if (!query.exec())
{
error = query.lastError().text();
m_db.close();
return false;
}
while(query.next())
{
CashierObject cashierObj;
cashierObj.id = query.value(0).toString();
cashierObj.name = query.value(1).toString();
cashierObj.shiftId = query.value(2).toString();
cashierObj.shiftName = query.value(3).toString();
cashiersList.append(cashierObj);
}
error = QString("success");
m_db.close();
return true;
}
bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashierId, const QString &cashierName, const QString &shiftId, const QString &shiftName, QString &error)
{
// TODO(用于鲜丰演示)
return true;
m_orderObject = orderObject;
if(!m_db.open())
{
error = m_db.lastError().text();
return false;
}
// 先插入顾客信息不管成功与否不影响后续操作
int custid = -1;
_InsertInto_p_t_fmwm_custinfo(custid);
// 开启事务
if(!m_db.transaction())
{
error = m_db.lastError().text();
m_db.close();
return false;
}
// 插入三张临时表后执行存储过程有一个失败则回滚
if(_InsertInto_d_t_food_fmbill0(cashierId, cashierName, shiftId, shiftName, custid))
{
if(_InsertInto_d_t_food_fmbills0())
{
if(_InsertInto_d_t_bill_fmpay0())
{
if(_Exec_pr_fmwm())
{
// 都成功则提交
m_db.commit();
error = QString("success");
m_db.close();
return true;
}
}
}
}
// 回滚
error = m_lastError;
m_db.rollback();
m_db.close();
return false;
}
bool FmPlugin::GetStockInfo(QList<StockObject> &stockList, QString &error)
{
if(!m_db.open())
{
error = m_db.lastError().text();
return false;
}
StockObject stock;
QSqlQuery query = QSqlQuery(m_db);
QString queryStock("select * from v_km_clearfood;");
query.prepare(queryStock);
if (!query.exec())
{
error = query.lastError().text();
m_db.close();
return false;
}
while(query.next())
{
stock.id = query.value(0).toString();
stock.num = query.value(2).toInt();
stockList.append(stock);
}
error = QString("success");
m_db.close();
return true;
}
bool FmPlugin::_InsertInto_p_t_fmwm_custinfo(int &custid)
{
QSqlQuery query = QSqlQuery(m_db);
// 插入顾客信息表
QString queryInsert("insert into p_t_fmwm_custinfo(cphone, ccust_n, ssex, saddr) \
values(?,?,?,?) select @@identity;");
query.prepare(queryInsert);
query.bindValue(0, m_orderObject->phone);
query.bindValue(1, m_orderObject->customer);
query.bindValue(2, "");
query.bindValue(3, m_orderObject->address);
if(!query.exec())
{
return false;
}
query.next();
custid = query.value(0).toInt();
return true;
}
bool FmPlugin::_InsertInto_d_t_food_fmbill0(const QString& cashierId, const QString& cashierName, const QString& shiftId, const QString& shiftName, int custid)
{
QSqlQuery query = QSqlQuery(m_db);
// 查询营业日
QDateTime dbussiness;
QString queryDateTime("select sys_var_value from sys_t_system where sys_var_id='dBusiness';");
query.prepare(queryDateTime);
if (!query.exec())
{
m_lastError = query.lastError().text();
return false;
}
query.next();
dbussiness = query.value(0).toDateTime();
// 插入到临时表
QString queryInsert("insert into d_t_food_fmbill0(cbill_c,cbranch_c,dBusiness,"
"ccashier_c, ccashier_n, cshift_c, cshift_n,"
"iguestnum,dtbilltime,dtsettletime,noughtamt,npayamt,"
"ndisamt,sbilltype,fmwmbillid,sprovider,nfreight,icustid)"
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);");
query.prepare(queryInsert);
query.bindValue(0, m_orderObject->order_id);
query.bindValue(1, m_storeId);
query.bindValue(2, dbussiness);
query.bindValue(3, cashierId);
query.bindValue(4, cashierName);
query.bindValue(5, shiftId);
query.bindValue(6, shiftName);
query.bindValue(7, m_orderObject->remark.mid(m_orderObject->remark.lastIndexOf(':')+1).toInt());
query.bindValue(8, QDateTime::fromTime_t(m_orderObject->create_time));
query.bindValue(9, QDateTime::fromTime_t(m_orderObject->create_time));
query.bindValue(10, _Penny2Dollar(m_orderObject->shop_fee));
query.bindValue(11, _Penny2Dollar(m_orderObject->shop_fee));
query.bindValue(12, _Penny2Dollar(m_orderObject->discount_fee));
query.bindValue(13, QString("\351\200\201\351\244\220\345\215\225"));// 送餐单
query.bindValue(14, m_orderObject->order_id);
query.bindValue(15, m_orderObject->channelName);
query.bindValue(16, m_orderObject->pay_type.compare("在线支付") ? "0" : _Penny2Dollar(m_orderObject->send_fee));
query.bindValue(17, custid);
if(!query.exec())
{
m_lastError = query.lastError().text();
return false;
}
return true;
}
bool FmPlugin::_InsertInto_d_t_food_fmbills0()
{
QSqlQuery query = QSqlQuery(m_db);
// 插入商品详情
QString queryInsert("insert into d_t_food_fmbills0(cbill_c,cfoodbill,"
"cfood_c,cfood_n,nqty,nprc,namt)"
"values(?,?,?,?,?,?,?);");
query.prepare(queryInsert);
for(int i=0; i<m_orderObject->proList.count(); i++)
{
query.bindValue(0, m_orderObject->order_id);
query.bindValue(1, QString("%1").arg(QString::number(i+1),4,QChar('0')));
query.bindValue(2, m_orderObject->proList.at(i)->pid);
query.bindValue(3, m_orderObject->proList.at(i)->name);
query.bindValue(4, QString::number(m_orderObject->proList.at(i)->productAmount));
query.bindValue(5, _Penny2Dollar(m_orderObject->proList.at(i)->price));
query.bindValue(6, _Penny2Dollar(m_orderObject->proList.at(i)->price*m_orderObject->proList.at(i)->productAmount));
if(!query.exec())
{
m_lastError = query.lastError().text();
return false;
}
}
return true;
}
bool FmPlugin::_InsertInto_d_t_bill_fmpay0()
{
QSqlQuery query = QSqlQuery(m_db);
// 插入支付详情
QString queryInsert("insert into d_t_bill_fmpay0(cbill_c,"
"cbillpay,cpay_c,cpay_n,npayamt)"
"values(?,?,?,?,?);");
query.prepare(queryInsert);
query.bindValue(0, m_orderObject->order_id);
query.bindValue(1, "01");
QString cpay_c, cpay_n;
if(!m_orderObject->pay_type.compare("在线支付"))
{
if(!m_orderObject->channel.compare("mtwm"))
{
cpay_c = QString("14");
cpay_n = QString("\347\276\216\345\233\242\345\244\226\345\215\226");//美团外卖
}else if(!m_orderObject->channel.compare("fmwd"))
{
cpay_c = QString("13");
cpay_n = QString("\345\276\256\344\277\241\345\244\226\345\215\226");//微店外卖
}
}else
{
cpay_c = QString("01");
cpay_n = QString("\347\216\260\351\207\221");//现金
}
query.bindValue(2, cpay_c);
query.bindValue(3, cpay_n);
query.bindValue(4, _Penny2Dollar(m_orderObject->shop_fee));
if(!query.exec())
{
m_lastError = query.lastError().text();
return false;
}
return true;
}
bool FmPlugin::_Exec_pr_fmwm()
{
QSqlQuery query = QSqlQuery(m_db);
query.prepare("exec pr_fmwm ?, ? output;");
query.bindValue(0, m_orderObject->order_id);
query.bindValue(1, 0, QSql::Out);
if(!query.exec())
{
m_lastError = query.lastError().text();
return false;
}
if(query.boundValue(1).toInt() != 1)
{
m_lastError = QString("pr_fmwm result[%1]").arg(query.boundValue(1).toInt());
return false;
}
return true;
}
QString FmPlugin::_Penny2Dollar(int penny)
{
double dollar = (double)penny/100;
return QString::number(dollar,'f',2);
}
#ifndef FMPLUGIN_H
#define FMPLUGIN_H
#include "fmplugin_global.h"
#include "Model/orderObject.h"
#include "Model/cashierObject.h"
#include "Model/stockObject.h"
#include <QtSql/QSqlDatabase>
#include <QDateTime>
class PluginWorker;
class FMPLUGINSHARED_EXPORT FmPlugin
{
public:
static FmPlugin& GetInstance();
/* 功能:连接数据库
* 参数:[1]IP[2]用户名[3]密码[4]库名[5]错误
* 返回:是否成功
* */
bool ConnectDb(const QString& host, const QString& username, const QString& password,
const QString& dbname, QString& error);
/* 功能:获取门店信息
* 参数:[1]门店编号[2]收银机编号[3]收银员编号[4]营业日[5]错误
* 返回:是否成功
* */
bool GetStoreInfo(QString& storeId, QString& posId, QString& cashierId,
QDateTime& dateTime, QString& error);
/* 功能:获取在班收银员信息
* 参数:[1]收银员列表[2]错误信息
* 返回:是否成功
* */
bool GetOnDutyCashiers(QList<CashierObject>& cashiersList, QString& error);
/* 功能:写入销售单
* 参数:[1]订单对象[2]错误信息
* 返回:是否成功
* */
bool DoOrderEntry(OrderObject const *orderObject, const QString& cashierId, const QString& cashierName,
const QString& shiftId, const QString& shiftName, QString& error);
/* 功能:获取库存信息
* 参数:[1]_out库存信息
* 返回:是否成功
* */
bool GetStockInfo(QList<StockObject>& stockList, QString& error);
private:
FmPlugin(){}
FmPlugin(FmPlugin const&);
FmPlugin& operator=(FmPlugin const&);
// 数据库对象
QSqlDatabase m_db;
// 门店号
QString m_storeId;
// 订单对象
const OrderObject *m_orderObject;
// 错误信息
QString m_lastError;
/* 功能:写入表p_t_fmwm_custinfo(顾客信息表)
* 参数:[1]_out信息ID
* 返回:true成功false失败
* */
bool _InsertInto_p_t_fmwm_custinfo(int &custid);
/* 功能:写入表d_t_food_fmbill0(销售主表)
* 参数:[1]收银员ID[2]收银员姓名[3]班次ID[4]班次名称[5]顾客信息ID
* 返回:true成功false失败
* */
bool _InsertInto_d_t_food_fmbill0(const QString& cashierId, const QString& cashierName,
const QString& shiftId, const QString& shiftName, int custid);
/* 功能:写入表d_t_food_fmbills0(销售明细表)
* 参数:NULL
* 返回:true成功false失败
* */
bool _InsertInto_d_t_food_fmbills0();
/* 功能:写入表d_t_food_fmpay0(支付表)
* 参数:NULL
* 返回:true成功false失败
* */
bool _InsertInto_d_t_bill_fmpay0();
/* 功能:执行存储过程pr_fmwm
* 参数:NULL
* 返回:true成功false失败
* */
bool _Exec_pr_fmwm();
/* 功能:将【分】转化为【元】
* 参数:[1]分
* 返回:元
* */
QString _Penny2Dollar(int penny);
};
#endif // FMPLUGIN_H
#-------------------------------------------------
#
# Project created by QtCreator 2016-07-20T15:00:08
#
#-------------------------------------------------
QT -= gui
QT += sql
TARGET = fmPlugin
TEMPLATE = lib
DEFINES += FMPLUGIN_LIBRARY
INCLUDEPATH += ../fmTakeaway
SOURCES += \
fmPlugin.cpp
HEADERS +=\
fmplugin_global.h \
fmPlugin.h
unix {
target.path = /usr/lib
INSTALLS += target
}
#ifndef FMPLUGIN_GLOBAL_H
#define FMPLUGIN_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(FMPLUGIN_LIBRARY)
# define FMPLUGINSHARED_EXPORT Q_DECL_EXPORT
#else
# define FMPLUGINSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // FMPLUGIN_GLOBAL_H
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