#ifndef BLL_DBOPE_H
#define BLL_DBOPE_H
#include <QObject>
#include <QSqlDatabase>
class BLL_DBOpe : public QObject
{
Q_OBJECT
public:
enum DBOpeType {
QueryRecipeList = 0, // 查询菜谱列表
QueryRecipeStep = 1, // 查询菜谱预览步骤
QueryRecipeActStep = 2, // 查询菜谱操作步骤
IsExistQueryRecipe = 3, // 查询菜谱是否存在
GetRecipeTotalData = 4, // 获取菜谱全部数据
ModifyRecipeActStep = 5 // 修改菜谱操作步骤
};
enum ReplyErrorType {
NoError = 0, // 无错误
ParseError = 1, // 数据解析错误
ReplyError = 2 // 回复错误
};
explicit BLL_DBOpe(QObject *parent = nullptr);
virtual ~BLL_DBOpe();
// 关闭菜谱数据库
void closeDb()
{
if (m_db.isOpen()) {
m_db.close();
}
}
// 打开菜谱数据库
bool openDb();
// 数据库操作
QVariantMap operateDB(QVariantMap vMap);
// 判断菜谱是否被收藏
int judgeIsRecipeCollected(QString recipeCode);
// 数据库通用操作
bool commonOpeDB(QString str);
// 写入本地数据库
bool writeRecipeData(QVariantMap vMap);
// 获取数据库的菜谱数据
QVariantMap getRecipeTotalData(QVariantMap vMap);
// 删除每日菜谱资源
bool deleteEveryDayRecipe();
// 更新每日菜谱标志
bool updateEveryDayFlag(QVariantMap vMap);
signals:
private:
// 连接数据库
void connectDB();
// 查询菜谱列表
QVariantMap queryRecipeList(QString str, bool is_local);
// 查询菜谱预览步骤
QVariantMap queryRecipeStep(QString str, bool is_local);
// 获取菜谱预览步骤
QVariantMap getRecipeStep(QJsonObject obj);
// 查询菜谱操作步骤
QVariantMap queryRecipeActStep(QString str, bool is_local);
// 获取菜谱烹饪步骤
QVariantMap getRecipeActStep(QJsonObject obj);
// 查询菜谱是否存在
QVariantMap isExistRecipe(QString str, bool is_local);
// 修改菜谱操作步骤
QVariantMap modifyRecipeActStep(QVariantMap vMap);
private:
QSqlDatabase m_db;
QSqlDatabase m_localDb;
};
#endif // BLL_DBOPE_H
#include "bll_dbope.h"
#include <QSqlQuery>
#include <QJsonObject>
#include <QJsonDocument>
#include <QSqlError>
#include <QJsonArray>
#include <QGuiApplication>
#include <QDateTime>
#include <QUrl>
#include <QDebug>
#include <QDir>
BLL_DBOpe::BLL_DBOpe(QObject *parent) : QObject(parent)
{
connectDB();
}
void BLL_DBOpe::connectDB()
{
m_db = QSqlDatabase::addDatabase("QSQLITE", "cheifMachine");
m_db.setDatabaseName(QGuiApplication::applicationDirPath()+"/recipe/cheifMachine.db");
if (!m_db.open()) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< m_db.lastError().type()<< m_db.lastError().text();
}
m_localDb = QSqlDatabase::addDatabase("QSQLITE", "local");
m_localDb.setDatabaseName(QGuiApplication::applicationDirPath()+"/recipe/local.db");
if (!m_localDb.open()) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< m_localDb.lastError().type()<< m_localDb.lastError().text();
}
}
BLL_DBOpe::~BLL_DBOpe()
{
m_db.close();
m_localDb.close();
}
bool BLL_DBOpe::openDb()
{
if (!m_db.open()) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< m_db.lastError().type()<< m_db.lastError().text();
return false;
}
return true;
}
QVariantMap BLL_DBOpe::operateDB(QVariantMap vMap)
{
QVariantMap info;
int type = vMap.value("type").toInt();
bool is_local = vMap.value("is_local").toBool();
QString queryStr = vMap.value("query").toString();
if (type == DBOpeType::QueryRecipeList) {
info = queryRecipeList(queryStr, is_local);
} else if (type == DBOpeType::QueryRecipeStep) {
info = queryRecipeStep(queryStr, is_local);
} else if (type == DBOpeType::QueryRecipeActStep) {
info = queryRecipeActStep(queryStr, is_local);
} else if (type == DBOpeType::IsExistQueryRecipe) {
info = isExistRecipe(queryStr, is_local);
} else if (type == DBOpeType::ModifyRecipeActStep) {
info = modifyRecipeActStep(vMap);
}
return info;
}
bool BLL_DBOpe::commonOpeDB(QString str)
{
QSqlQuery query = m_localDb.exec(str);
int ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
return false;
}
return true;
}
int BLL_DBOpe::judgeIsRecipeCollected(QString recipeCode)
{
QString str = QString("select isCollected from recipe where recipeCode = '%1'")
.arg(recipeCode);
QSqlQuery query = m_localDb.exec(str);
int ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
int isCollected = 0;
while (query.next()) {
isCollected = query.value(0).toInt();
}
return isCollected;
}
QVariantMap BLL_DBOpe::queryRecipeList(QString str, bool is_local)
{
QVariantMap vRecipeContent;
QVariantList vMapList;
QSqlQuery query;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
while (query.next()) {
QVariantMap vMap;
QString recipeData = query.value(0).toString();
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(recipeData.toUtf8(), &error);
if (doc.isObject()) {
QString imgUrl = doc.object().value("imageVertical").toString();
QUrl url(imgUrl);
if (url.isLocalFile()) {
imgUrl = "file://"+QGuiApplication::applicationDirPath()+url.path();
}
QString recipeName = doc.object().value("recipeName").toString();
QString recipeCode = doc.object().value("recipeId").toString();
vMap.insert("recipeImg", imgUrl);
vMap.insert("recipeCnName", recipeName);
vMap.insert("recipeCode", recipeCode);
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<error.errorString();
}
vMapList.append(vMap);
}
vRecipeContent.insert("recipeContent", vMapList);
return vRecipeContent;
}
QVariantMap BLL_DBOpe::queryRecipeStep(QString str, bool is_local)
{
QVariantMap vMap;
QSqlQuery query;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
if (query.next()) {
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(query.value(0).toString().toUtf8(), &error);
if (doc.isObject()) {
vMap = getRecipeStep(doc.object());
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<error.errorString();
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
return vMap;
}
QVariantMap BLL_DBOpe::queryRecipeActStep(QString str, bool is_local)
{
QVariantMap vMap;
QSqlQuery query;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
if (query.next()) {
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(query.value(0).toString().toUtf8(), &error);
if (doc.isObject()) {
vMap = getRecipeActStep(doc.object());
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<error.errorString();
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
return vMap;
}
QVariantMap BLL_DBOpe::isExistRecipe(QString str, bool is_local)
{
QVariantMap vMap;
QSqlQuery query;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
if (query.next()) {
int rows = query.value(0).toInt();
if (rows > 0) {
vMap.insert("isExist", true);
} else {
vMap.insert("isExist", false);
}
} else {
vMap.insert("isExist", false);
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
return vMap;
}
QVariantMap BLL_DBOpe::getRecipeActStep(QJsonObject obj)
{
QVariantMap vCookStepMap;
QVariantList vMapList;
QString dirPath = QGuiApplication::applicationDirPath();
dirPath.append("/recipe/Image/finishImg/");
QJsonObject sizeForm = obj.value("sizeForm").toArray().at(0).toObject();
// 实际做菜步骤
QJsonArray cookStepList = sizeForm.value("curve").toArray();
foreach (QJsonValue recipeObj, cookStepList) {
QVariantMap vMap;
if (recipeObj.isObject()) {
// 动画
QJsonArray uiValue = recipeObj.toObject().value("uiValue").toArray();
vMap.insert("gifType", uiValue.at(1).toInt());
int dispType = uiValue.at(0).toInt();
// 界面id
vMap.insert("dispType", dispType);
if (dispType == 140) { // 烹饪页面
int func = recipeObj.toObject().value("tool").toInt();
int press = recipeObj.toObject().value("press").toInt();
int temp = recipeObj.toObject().value("temperature").toInt();
int fire = recipeObj.toObject().value("fire").toInt();
switch (func) {
case 1: // 翻炒
// 温度/压力/火力
vMap.insert("temp", fire);
break;
case 2: // 压力煮
vMap.insert("temp", press);
break;
case 3: // 慢炖
vMap.insert("temp", fire);
break;
case 4: // 低温烹饪
vMap.insert("temp", temp);
break;
case 5: // 烘烤
vMap.insert("temp", temp);
break;
case 6: // 无水焗
vMap.insert("temp", press);
break;
case 7: // 保温
vMap.insert("temp", temp);
break;
case 8: // 煮饭
break;
case 9: // 煮粥
vMap.insert("temp", press);
break;
case 10: // 无压煮
vMap.insert("temp", fire);
break;
case 11: // 收汁
vMap.insert("temp", fire);
break;
case 12: // 焯水
vMap.insert("temp", fire);
break;
case 13: // 蒸制
vMap.insert("temp", fire);
break;
case 14: // 揉面
break;
case 15: // 发酵
vMap.insert("temp", temp);
break;
default:
break;
}
QString actStep = recipeObj.toObject().value("content").toArray().at(0).toObject().value("text").toString();
// 提示语
vMap.insert("actStep", actStep);
// 功能
vMap.insert("func", recipeObj.toObject().value("tool").toInt());
// 盖子类型
vMap.insert("lid", recipeObj.toObject().value("cup").toInt());
// 时间
vMap.insert("timeRange", recipeObj.toObject().value("time").toInt());
// 速度
vMap.insert("speed", recipeObj.toObject().value("speed").toInt());
// 排气
vMap.insert("exhaust", recipeObj.toObject().value("air").toInt());
} else if (dispType == 143) { // 结束页面
QString actStep = recipeObj.toObject().value("content").toArray().at(0).toObject().value("text").toString();
// 提示语
vMap.insert("actStep", actStep);
QString finishImg = sizeForm.value("recipeId").toString()+".jpg";
QString imgUrl = "file://" + dirPath + finishImg;
// 结束图片
vMap.insert("finishImg", imgUrl);
} else if (dispType == 137 || dispType == 139) { // 137:计时纯文本 139:称重纯文本
// 计时时间
int countTime = recipeObj.toObject().value("countTime").toInt();
vMap.insert("countTime", countTime*60);
// 文本
QStringList actStepList;
QJsonArray actStep = recipeObj.toObject().value("content").toArray();
foreach (QJsonValue str, actStep) {
actStepList.append(str.toObject().value("text").toString());
}
vMap.insert("actStepList", actStepList);
} else {
// 提示语
QStringList actStepList;
QJsonArray actStep = recipeObj.toObject().value("content").toArray();
foreach (QJsonValue str, actStep) {
actStepList.append(str.toObject().value("text").toString());
}
vMap.insert("actStepList", actStepList);
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<"getRecipeActStep data is not Json!";
}
vMapList.append(vMap);
}
vCookStepMap.insert("CookStep", vMapList);
return vCookStepMap;
}
QVariantMap BLL_DBOpe::getRecipeStep(QJsonObject obj)
{
QString dirPath = QGuiApplication::applicationDirPath();
dirPath.append("/recipe/Image/recipeStepImage/");
QVariantMap vDetailMap;
QVariantList vMapList;
QJsonObject sizeForm = obj.value("sizeForm").toArray().at(0).toObject();
// 步骤
QJsonArray recipeDetailList = sizeForm.value("step").toArray();
foreach (QJsonValue recipeObj, recipeDetailList) {
QVariantMap vMap;
if (recipeObj.isObject()) {
int type = recipeObj.toObject().value("type").toInt();
if (type == 1) { // 预览步骤
vMap.insert("actConnent", recipeObj.toObject().value("content").toString());
vMapList.append(vMap);
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<"getRecipeDetail step is not Json!";
}
}
vDetailMap.insert("RecipeAction", vMapList);
//食材
vMapList.clear();
recipeDetailList = sizeForm.value("foodList").toArray();
foreach (QJsonValue recipeObj, recipeDetailList) {
QVariantMap vMap;
if (recipeObj.isObject()) {
int foodType = recipeObj.toObject().value("foodType").toInt();
if (foodType == 1) { // 主料
vMap.insert("isMain", true);
} else { //辅料
vMap.insert("isMain", false);
}
// 食材名称
vMap.insert("ingredientName", recipeObj.toObject().value("foodName").toString());
// 食材数量1
vMap.insert("ingredientQuantity", recipeObj.toObject().value("weight").toString());
// 单位1
vMap.insert("quantityUnit1", recipeObj.toObject().value("unitName").toString());
// 食材数量2
QString ingredientQuantity2 = recipeObj.toObject().value("secondWeight").toString();
// 单位2
QString quantityUnit2 = recipeObj.toObject().value("secondUnitName").toString();
// 食材数量2+单位2
vMap.insert("quantityUnit2", ingredientQuantity2+quantityUnit2);
// 食材用处
vMap.insert("ingredientAcy", recipeObj.toObject().value("deal").toString());
vMapList.append(vMap);
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<"getRecipeDetail ingredient is not Json!";
}
}
vDetailMap.insert("RecipeIngredients", vMapList);
// 提示
vMapList.clear();
recipeDetailList = sizeForm.value("step").toArray();
foreach (QJsonValue recipeObj, recipeDetailList) {
QVariantMap vMap;
if (recipeObj.isObject()) {
int type = recipeObj.toObject().value("type").toInt();
// 提示内容
if (type == 2) {
vMap.insert("tipContent", recipeObj.toObject().value("content").toString());
vMapList.append(vMap);
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<"getRecipeDetail tip is not Json!";
}
}
vDetailMap.insert("RecipeTips", vMapList);
// 配件
vMapList.clear();
if (sizeForm.contains("cookTool")) {
recipeDetailList = sizeForm.value("cookTool").toArray();
foreach (QJsonValue recipeObj, recipeDetailList) {
QVariantMap vMap;
if (recipeObj.isObject()) {
// 配件名称
vMap.insert("toolName", recipeObj.toObject().value("name").toString());
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<"getRecipeDetail tool is not Json!";
}
vMapList.append(vMap);
}
vDetailMap.insert("RecipeTools", vMapList);
}
// 营养价值
vMapList.clear();
QVariantMap map;
// 时间范围
map.insert("timeRange", sizeForm.value("recipeTime").toString());
// 时间单位
map.insert("timeUnitName", sizeForm.value("timeUnitName").toString());
// 菜谱简介
map.insert("recipeContent", sizeForm.value("recipeContent").toString());
// 份量
map.insert("sizeName", sizeForm.value("sizeName").toString());
// 口味
QJsonArray tasteArr = obj.value("taste").toArray();
if (tasteArr.size() > 1) {
map.insert("taste", "多种");
} else {
map.insert("taste", tasteArr.at(0).toObject().value("name").toString());
}
// 难度
map.insert("degree", obj.value("difficulty").toString());
// 图片
QString imgName = obj.value("recipeId").toString()+".jpg";
QString imgUrl = "file://" + dirPath + imgName;
map.insert("recipeStepImage", imgUrl);
// 菜谱名称
map.insert("recipeCnName", obj.value("recipeName").toString());
vMapList.append(map);
vDetailMap.insert("RecipeNutri", vMapList);
return vDetailMap;
}
bool BLL_DBOpe::updateEveryDayFlag(QVariantMap vMap)
{
QString recipeCode = vMap.value("recipeId").toString();
QSqlQuery query(m_localDb);
QString updateEveryDay = QString("update recipe set isEveryDay = 1, modifyTime = '%1' where recipeCode = '%2'").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")).arg(recipeCode);
bool result = query.exec(updateEveryDay);
if (!result) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<query.lastQuery()<<query.lastError().type()<< query.lastError().text();
return false;
}
return true;
}
bool BLL_DBOpe::writeRecipeData(QVariantMap vMap)
{
QString recipeCode = vMap.value("recipeId").toString();
QString recipeName = vMap.value("recipeName").toString();
QJsonObject jsObj = vMap.value("recipeData").toJsonObject();
QJsonDocument doc(jsObj);
QString recipeData = QString(doc.toJson());
QSqlQuery query(m_localDb);
query.prepare("insert into recipe (recipeCode, recipeName, recipeData) values (:recipeCode, :recipeName, :recipeData)");
query.bindValue(":recipeCode", recipeCode);
query.bindValue(":recipeName", recipeName);
query.bindValue(":recipeData", recipeData);
query.exec();
int ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<query.lastQuery()<<query.lastError().type()<< query.lastError().text();
return false;
}
return true;
}
QVariantMap BLL_DBOpe::getRecipeTotalData(QVariantMap Map)
{
QString recipeId = Map.value("recipeId").toString();
bool is_local = Map.value("is_local").toBool();
QString str = QString("select * from recipe where recipeCode = '%1'").arg(recipeId);
QSqlQuery query;
int errorType = ReplyErrorType::NoError;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
errorType = ReplyErrorType::ReplyError;
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
QVariantMap recipeMap;
if (query.next()) {
QString recipeCode = query.value(0).toString();
QString recipeName = query.value(1).toString();
QString recipeData = query.value(2).toString();
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(recipeData.toUtf8(), &error);
if (doc.isObject()) {
QVariantMap vMap;
vMap.insert("recipeId", recipeCode);
vMap.insert("recipeName", recipeName);
vMap.insert("recipeData", doc.object());
recipeMap.insert("recipeInfo", vMap);
errorType = ReplyErrorType::NoError;
} else {
errorType = ReplyErrorType::ParseError;
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<error.errorString();
}
} else {
errorType = ReplyErrorType::ReplyError;
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
}
recipeMap.insert("replyError", errorType);
return recipeMap;
}
bool BLL_DBOpe::deleteEveryDayRecipe()
{
QString str = "select recipeCode from recipe where isEveryDay = 1";
QSqlQuery query = m_localDb.exec(str);
int ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
return false;
}
QStringList list;
while (query.next()) {
QString recipeId = query.value(0).toString();
recipeId += ".*";
list.append(recipeId);
}
QString dirPath = "recipe/Image/recipeImage";
QDir dir(dirPath);
// 删除缩略图
QStringList fileList = dir.entryList(list, QDir::Files);
foreach (QString str, fileList) {
dir.remove(str);
}
// 删除详情图
dir.setPath("recipe/Image/recipeStepImage");
fileList = dir.entryList(list, QDir::Files);
foreach (QString str, fileList) {
dir.remove(str);
}
// 删除步骤结束图
dir.setPath("recipe/Image/finishImg");
fileList = dir.entryList(list, QDir::Files);
foreach (QString str, fileList) {
dir.remove(str);
}
str = "delete from recipe where isEveryDay = 1";
query = m_localDb.exec(str);
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
return false;
}
return true;
}
QVariantMap BLL_DBOpe::modifyRecipeActStep(QVariantMap vMap)
{
QVariantMap info;
// 获取菜谱步骤
QString recipeCode = vMap.value("recipeCode").toString();
int defaultVal = vMap.value("defaultVal").toInt();
int weightVal = vMap.value("weightVal").toInt();
if (weightVal < 350) {
weightVal = 350;
} else if (weightVal > 1000) {
weightVal = 1000;
}
qreal ratio = weightVal*1.0/defaultVal;
bool is_local = vMap.value("is_local").toBool();
QString str = vMap.value("query").toString();
QSqlQuery query;
int ret = 0;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
info.insert("error", 1);
return info;
}
QJsonObject recipeData;
if (query.next()) {
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(query.value(0).toString().toUtf8(), &error);
if (doc.isObject()) {
recipeData = doc.object();
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<error.errorString();
info.insert("error", 1);
return info;
}
} else {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<< str << query.lastError().type()<< query.lastError().text();
info.insert("error", 1);
return info;
}
// 修改菜谱操作步骤
if (!recipeData.isEmpty()) {
QJsonObject sizeFormObj = recipeData.value("sizeForm").toArray().at(0).toObject();
QJsonArray curve = sizeFormObj.value("curve").toArray();
int len = curve.size();
for (int j = 0; j < len; ++j) {
QJsonObject obj = curve.at(j).toObject();
if (obj.contains("adjust")) {
QJsonArray adjust = obj.value("adjust").toArray();
int size = adjust.size();
for (int i = 0; i < size; ++i) {
int v = qRound(adjust.at(i).toInt()*ratio);
adjust.replace(i, v);
}
obj.insert("adjust", adjust);
curve.replace(j, obj);
}
if (obj.contains("time")) {
int time = qRound(obj.value("time").toInt()*ratio);
obj.insert("time", time);
curve.replace(j, obj);
}
}
sizeFormObj.insert("curve", curve);
QJsonArray sizeForm = recipeData.value("sizeForm").toArray();
sizeForm.replace(0, sizeFormObj);
recipeData.insert("sizeForm",sizeForm);
// 更新数据库
QJsonDocument doc(recipeData);
QString data = QString(doc.toJson());
QString str = QString("update recipe set recipeData = '%1' where recipeCode = '%2'").arg(data).arg(recipeCode);
QSqlQuery query;
if (is_local) {
query = m_localDb.exec(str);
} else {
query = m_db.exec(str);
}
int ret = query.lastError().type();
if (ret != 0) {
qDebug()<<__FILE__<<__FUNCTION__<<__LINE__<<query.lastQuery()<<query.lastError().type()<< query.lastError().text();
info.insert("error", 1);
return info;
}
} else {
info.insert("error", 1);
}
info.insert("error", 0);
return info;
}