ProjectService.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. #include "ProjectService.h"
  2. #include "SqlDBHelper.h"
  3. #include <QDebug>
  4. ProjectService::ProjectService(QObject *parent) { }
  5. //新增项目
  6. int ProjectService::AddProjectInfo(const ProjectInfo &projectInfo)
  7. {
  8. int ret = -1;
  9. try {
  10. Transaction t(SqlDBHelper::getDatabase());
  11. InsertQuery query = t.insertInto(
  12. "t_project_info(`project_name`, `remark`, `task_name`, `estimate_time`, `estimate_objective`, "
  13. "`estimate_dept`, `estimate_person`,`estimate_type`, `positional_titles`, `create_time`)");
  14. NonQueryResult result =
  15. query.values(projectInfo.projectName, projectInfo.remark, projectInfo.taskName,
  16. projectInfo.estimateTime, projectInfo.estimateObjective, projectInfo.estimateDept,
  17. projectInfo.estimatePerson, projectInfo.estimateType, projectInfo.positionalTitles,
  18. QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"))
  19. .exec();
  20. t.commit();
  21. ret = result.lastInsertId().toInt();
  22. } catch (const DBException &ex) {
  23. qDebug() << ex.lastError.text();
  24. }
  25. return ret;
  26. }
  27. //更新项目信息
  28. bool ProjectService::UpdateProjectInfo(const ProjectInfo &proInfo)
  29. {
  30. bool ret = false;
  31. try {
  32. Transaction t(SqlDBHelper::getDatabase());
  33. t.update("t_project_info")
  34. .set("project_name", proInfo.projectName)
  35. .set("remark", proInfo.remark)
  36. .set("task_name", proInfo.taskName)
  37. .set("estimate_time", proInfo.estimateTime)
  38. .set("estimate_objective", proInfo.estimateObjective)
  39. .set("estimate_dept", proInfo.estimateDept)
  40. .set("estimate_person", proInfo.estimatePerson)
  41. .set("estimate_type", proInfo.estimateType)
  42. .set("positional_titles", proInfo.positionalTitles)
  43. .set("update_time", proInfo.updateTime)
  44. .where("id = ?", proInfo.id);
  45. t.commit();
  46. ret = true;
  47. } catch (const DBException &ex) {
  48. qDebug() << ex.lastError.text();
  49. }
  50. return ret;
  51. }
  52. //更新脑图ID
  53. bool ProjectService::UpdateDemandById(int enjId, int demandId)
  54. {
  55. bool ret = false;
  56. try {
  57. Transaction t(SqlDBHelper::getDatabase());
  58. t.update("t_project_info").set("demand_mind_id", demandId).where("id = ?", enjId);
  59. t.commit();
  60. ret = true;
  61. } catch (const DBException &ex) {
  62. qDebug() << ex.lastError.text();
  63. }
  64. return ret;
  65. }
  66. bool ProjectService::UpdateGeneralById(int enjId, int generalId)
  67. {
  68. bool ret = false;
  69. try {
  70. Transaction t(SqlDBHelper::getDatabase());
  71. t.update("t_project_info").set("general", generalId).where("id = ?", enjId);
  72. t.commit();
  73. ret = true;
  74. } catch (const DBException &ex) {
  75. qDebug() << ex.lastError.text();
  76. }
  77. return ret;
  78. }
  79. bool ProjectService::UpdateProgrammeById(int enjId, int programmeId)
  80. {
  81. bool ret = false;
  82. try {
  83. Transaction t(SqlDBHelper::getDatabase());
  84. t.update("t_project_info").set("programme_mind_id", programmeId).where("id = ?", enjId);
  85. t.commit();
  86. ret = true;
  87. } catch (const DBException &ex) {
  88. qDebug() << ex.lastError.text();
  89. }
  90. return ret;
  91. }
  92. //获取项目详情
  93. bool ProjectService::QueryProjectById(ProjectInfo *proJectInfo, int id)
  94. {
  95. QSqlDatabase db = SqlDBHelper::getDatabase();
  96. QSqlQuery query(db);
  97. bool ret = false;
  98. QString selectSql =
  99. QString("SELECT id, project_name,remark,task_name,estimate_time,estimate_objective,estimate_dept,"
  100. "estimate_person,positional_titles,create_time,update_time,estimate_type FROM "
  101. "t_project_info WHERE id = %1")
  102. .arg(id);
  103. if (query.exec(selectSql)) {
  104. if (query.next()) {
  105. if (query.isNull(0) == false) {
  106. proJectInfo->id = query.value(0).toInt();
  107. proJectInfo->projectName = query.value(1).toString();
  108. proJectInfo->remark = query.value(2).toString();
  109. proJectInfo->taskName = query.value(3).toString();
  110. proJectInfo->estimateTime = query.value(4).toString();
  111. proJectInfo->estimateObjective = query.value(5).toString();
  112. proJectInfo->estimateDept = query.value(6).toString();
  113. proJectInfo->estimatePerson = query.value(7).toString();
  114. proJectInfo->positionalTitles = query.value(8).toString();
  115. proJectInfo->createTime = query.value(9).toString();
  116. proJectInfo->updateTime = query.value(10).toString();
  117. proJectInfo->estimateType = query.value(11).toString();
  118. }
  119. ret = true;
  120. }
  121. } else {
  122. qDebug() << query.lastError();
  123. }
  124. return ret;
  125. }
  126. //判断项目名是否存在
  127. bool ProjectService::QueryProjectByName(QString name)
  128. {
  129. QSqlDatabase db = SqlDBHelper::getDatabase();
  130. QSqlQuery query(db);
  131. bool ret = false;
  132. QString selectSql =
  133. QString("SELECT id, project_name,remark,task_name,estimate_time,estimate_objective,estimate_dept,"
  134. "estimate_person,positional_titles,create_time,update_time,estimate_type FROM "
  135. "t_project_info WHERE project_name = %1")
  136. .arg(name);
  137. if (query.exec(selectSql)) {
  138. if (query.next()) {
  139. ret = true;
  140. }
  141. } else {
  142. qDebug() << query.lastError();
  143. }
  144. return ret;
  145. }
  146. bool ProjectService::QueryAll(QList<ProjectInfo *> *projectInfoList)
  147. {
  148. QSqlDatabase db = SqlDBHelper::getDatabase();
  149. QSqlQuery query(db);
  150. bool ret = false;
  151. QString selectSql =
  152. QString("SELECT id, project_name, remark,task_name,estimate_time,estimate_objective,estimate_dept,"
  153. "estimate_person,positional_titles,create_time,update_time,estimate_type FROM "
  154. "t_project_info order by create_time desc");
  155. if (query.exec(selectSql)) {
  156. while (query.next()) {
  157. if (query.isNull(0) == false) {
  158. ProjectInfo *projectInfo = new ProjectInfo();
  159. projectInfo->id = query.value(0).toInt();
  160. projectInfo->projectName = query.value(1).toString();
  161. projectInfo->remark = query.value(2).toString();
  162. projectInfo->taskName = query.value(3).toString();
  163. projectInfo->estimateTime = query.value(4).toString();
  164. projectInfo->estimateObjective = query.value(5).toString();
  165. projectInfo->estimateDept = query.value(6).toString();
  166. projectInfo->estimatePerson = query.value(7).toString();
  167. projectInfo->positionalTitles = query.value(8).toString();
  168. projectInfo->createTime = query.value(9).toString();
  169. projectInfo->updateTime = query.value(10).toString();
  170. projectInfo->estimateType = query.value(11).toString();
  171. projectInfoList->append(projectInfo);
  172. }
  173. ret = true;
  174. }
  175. } else {
  176. qDebug() << query.lastError();
  177. }
  178. return ret;
  179. }
  180. //根据id删除
  181. bool ProjectService::DeleteById(int id)
  182. {
  183. bool ret = false;
  184. try {
  185. qDebug() << __FUNCTION__ << __LINE__
  186. << SqlDBHelper::getDatabase().driver()->hasFeature(QSqlDriver::Transactions) << endl;
  187. Transaction t(SqlDBHelper::getDatabase());
  188. t.deleteFrom("t_project_info").where("id = ?", id);
  189. t.commit();
  190. ret = true;
  191. } catch (const DBException &ex) {
  192. qDebug() << ex.lastError.text();
  193. }
  194. return ret;
  195. }
  196. bool ProjectService::SelectAllByPage(QList<ProjectInfo *> *projectInfoList, int &totalPages, int page, int pageSize,
  197. QString name)
  198. {
  199. qDebug() << "page=" << page << ";pageSize=" << pageSize << ";name=" << name;
  200. int offset = (page - 1) * pageSize;
  201. name = "'%" + name + "%'";
  202. QSqlDatabase db = SqlDBHelper::getDatabase();
  203. QSqlQuery query(db);
  204. bool ret = false;
  205. QString selectSql =
  206. QString("SELECT id, project_name, remark,task_name,estimate_time,estimate_objective,estimate_dept,"
  207. "estimate_person,positional_titles,create_time,update_time,estimate_type FROM "
  208. "t_project_info where project_name like %1 order by create_time desc")
  209. .arg(name);
  210. QString selectByPage = QString(" LIMIT %1 OFFSET %2 ").arg(pageSize).arg(offset);
  211. selectSql.append(selectByPage);
  212. qDebug() << selectSql;
  213. if (query.exec(selectSql)) {
  214. while (query.next()) {
  215. if (query.isNull(0) == false) {
  216. ProjectInfo *projectInfo = new ProjectInfo();
  217. projectInfo->id = query.value(0).toInt();
  218. projectInfo->projectName = query.value(1).toString();
  219. projectInfo->remark = query.value(2).toString();
  220. projectInfo->taskName = query.value(3).toString();
  221. projectInfo->estimateTime = query.value(4).toString();
  222. projectInfo->estimateObjective = query.value(5).toString();
  223. projectInfo->estimateDept = query.value(6).toString();
  224. projectInfo->estimatePerson = query.value(7).toString();
  225. projectInfo->positionalTitles = query.value(8).toString();
  226. projectInfo->createTime = query.value(9).toString();
  227. projectInfo->updateTime = query.value(10).toString();
  228. projectInfo->estimateType = query.value(11).toString();
  229. projectInfoList->append(projectInfo);
  230. }
  231. }
  232. QString selectSqlAll = QString("SELECT COUNT(*) FROM t_project_info where project_name like %1 ").arg(name);
  233. if (query.exec(selectSqlAll)) {
  234. query.next();
  235. totalPages = query.value(0).toInt();
  236. qDebug() << "------------" << totalPages;
  237. ret = true;
  238. }
  239. } else {
  240. qDebug() << query.lastError();
  241. }
  242. return ret;
  243. }