SmartFormService.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. using PMS.BusinessModels.SmartForm;
  2. using PMS.EntityModels.SmartForm;
  3. using PMS.Plugins.Common;
  4. using QWPlatform.IService;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.SqlClient;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace PMS.DBService.SmartForm
  13. {
  14. public class SmartFormService : DataServiceBase
  15. {
  16. protected override void DBFctory(string conName)
  17. {
  18. base.DBFctory(conName);
  19. }
  20. /// <summary>
  21. /// 添加和修改分类
  22. /// </summary>
  23. /// <param name="type">1新增,2修改</param>
  24. /// <param name="model"></param>
  25. /// <returns></returns>
  26. public bool AddCategory(int type, ZNBDFLModel model)
  27. {
  28. if (type == 1)
  29. {
  30. model.ID = Guid.NewGuid().ToString();
  31. return this.InsertBuilder.Column("ID", model.ID)
  32. .Column("上级ID", model.上级ID)
  33. .Column("序号", model.序号)
  34. .Column("名称", model.名称)
  35. .Column("应用性质", model.应用性质)
  36. .Column("应用范围", model.应用范围)
  37. .Insert("智能表单分类")
  38. .Execute()>0;
  39. }
  40. else
  41. {
  42. return this.UpdateBuilder
  43. .Column("上级ID", model.上级ID)
  44. .Column("序号", model.序号)
  45. .Column("名称", model.名称)
  46. .Column("应用性质", model.应用性质)
  47. .Column("应用范围", model.应用范围)
  48. .Update("智能表单分类")
  49. .Where("id",model.ID)
  50. .Execute()>0;
  51. }
  52. }
  53. public bool DelCategory(ZNBDFLModel model, ref string msg)
  54. {
  55. var number = this.SqlBuilder.SqlText("select count(1) from 智能表单模板 t where t.分类id=:FLID").Parameters("FLID",model.ID).Select<int>();
  56. if(number>0)
  57. {
  58. msg = "当前分类还有表单,不允许删除!";
  59. return false;
  60. }
  61. number = this.SqlBuilder.SqlText("select count(1) from 智能表单分类 t where t.上级ID=:FLID").Parameters("FLID", model.ID).Select<int>();
  62. if (number > 0)
  63. {
  64. msg = "当前分类还有下级分类,不允许删除!";
  65. return false;
  66. }
  67. var state = this.DeleteBulider
  68. .Delete("智能表单分类")
  69. .Where("id", model.ID)
  70. .Execute()>0;
  71. return state;
  72. }
  73. /// <summary>
  74. /// 获取所有分类
  75. /// </summary>
  76. /// <returns></returns>
  77. public List<TreeStruct> GetCategory( string id)
  78. {
  79. List<TreeStruct> treeStructs = new List<TreeStruct>();
  80. var dt=new DataTable();
  81. if (id!=null)
  82. {
  83. dt = this.SqlBuilder.SqlText("select id,上级id as sjid, 名称 as text from 智能表单分类 t where 上级ID=:id ").Parameters("id",id).Select();
  84. }
  85. else
  86. {
  87. dt = this.SqlBuilder.SqlText("select id,上级id as sjid, 名称 as text from 智能表单分类 t ").Select();
  88. }
  89. if(dt.Rows.Count>0)
  90. {
  91. treeStructs = Tools.ConvertToList<TreeStruct>(dt);
  92. }
  93. return treeStructs;
  94. }
  95. #region 表单
  96. /// <summary>
  97. /// 增加数据记录【智能表单信息】
  98. /// </summary>
  99. /// <param name="model"></param>
  100. /// <returns></returns>
  101. public int Add(ZNBCXXModel model)
  102. {
  103. model.ID = Guid.NewGuid().ToString();
  104. model.JLSJ = this.DataBaseBuilder.GetDateTime;
  105. model.ZT = 1;
  106. model.SetDataFactory(this.DataFactoryObject);
  107. return model.Insert();
  108. }
  109. /// <summary>
  110. /// 更新数据库记录【智能表单信息】
  111. /// </summary>
  112. /// <param name="model"></param>
  113. /// <returns></returns>
  114. public int UpdateSmartForm(ZNBCXXModel model)
  115. {
  116. return this.UpdateBuilder.Update("智能表单信息").Column("分类ID", model.FLID).Column("名称", model.MC).Column("标题", model.BT)
  117. .Column("填写提示", model.TXTS).Column("填写限制", model.TXXZ).Column("处理模式", model.CLMS)
  118. .Column("备注", model.BZ).Column("状态", model.ZT).Column("是否提醒", model.SFTX)
  119. .Column("邮件推送", model.YJTS).Column("提醒号码", model.TXHM).Column("审核提醒", model.SHTX).Column("是否包含附件", model.SHBHFJ)
  120. .Column("审核邮件推送", model.SHYJTS).Column("审核提醒号码", model.SHTXHM).Where("ID", model.ID).Execute();
  121. }
  122. /// <summary>
  123. /// 删除数据记录【智能表单信息】
  124. /// </summary>
  125. /// <param name="model"></param>
  126. /// <returns></returns>
  127. public int Delete(ZNBCXXModel model)
  128. {
  129. model.SetDataFactory(this.DataFactoryObject);
  130. return model.Delete("ID");
  131. }
  132. /// <summary>
  133. /// 查询数据对象并进行赋值【查询智能表单信息】
  134. /// </summary>
  135. /// <param name="id"></param>
  136. /// <returns></returns>
  137. public ZNBCXX BdxxSelect(string id)
  138. {
  139. ZNBCXX ListModel = new ZNBCXX();
  140. var dt = this.SqlBuilder.SqlText(@"select j.id,j.分类id as FLID,j.名称 as MC,j.标题 as BT,j.填写提示 as TXTS,j.填写限制 as TXXZ ,j.处理模式 as CLMS
  141. , j.备注 as BZ , j.建立时间 as JLSJ ,
  142. m.表单内容 as BDNR,m.表单处理内容 as BDCLNR,
  143. m.更新时间,j.状态 as ZT ,j.提醒号码 as TXHM , j.邮件推送 as YJTS ,j.是否提醒 SFTX, j.审核提醒 as SHTX , j.审核提醒号码 as SHTXHM ,j.审核邮件推送 SHYJTS,j.是否包含附件 SHBHFJ,m.id as BDMBID
  144. from 智能表单信息 j ,智能表单模板 m where j.id=:id and m.表单id=j.id order by m.版本号 desc ").Parameters("id", id).Select();
  145. if (dt.Rows.Count > 0)
  146. {
  147. ListModel = Tools.ConvertToList<ZNBCXX>(dt).FirstOrDefault();
  148. }
  149. return ListModel;
  150. }
  151. /// <summary>
  152. /// 列表查询
  153. /// </summary>
  154. /// <returns></returns>
  155. public List<ZNBCXXModel> BdxxSelectList(ZNBCXXModel model)
  156. {
  157. //SQL查询参数
  158. List<IDataParameter> listDP = new List<IDataParameter>();
  159. var dataSqlWhere = "";
  160. if (model.FLID!="0")
  161. {
  162. dataSqlWhere += " j.分类id =:FLID";
  163. listDP.Add(new SqlParameter("FLID", model.FLID));
  164. }
  165. else
  166. {
  167. dataSqlWhere += " j.状态 =1";
  168. }
  169. List<ZNBCXXModel> ListModel = new List<ZNBCXXModel>();
  170. var dt = this.SqlBuilder.SqlText(@"select j.id,j.分类id as FLID,j.名称 as MC,j.标题 as BT,j.填写提示 as TXTS,j.填写限制 as TXXZ ,j.处理模式 as CLMS
  171. , j.备注 as BZ , j.提醒号码 as TXHM , j.邮件推送 as YJTS , j.建立时间 as JLSJ , j.状态 as ZT from 智能表单信息 j where " + dataSqlWhere + " order by j.建立时间 asc ").Parameters(listDP.ToArray()).Select();
  172. if (dt.Rows.Count > 0)
  173. {
  174. ListModel = Tools.ConvertToList<ZNBCXXModel>(dt);
  175. }
  176. return ListModel;
  177. }
  178. /// <summary>
  179. /// 增加数据记录【智能表单模板】
  180. /// </summary>
  181. /// <param name="model"></param>
  182. /// <returns></returns>
  183. public int Add(ZNBCMBModel model)
  184. {
  185. var number = this.SqlBuilder.SqlText("select nvl( max( 版本号),0)+1 from 智能表单模板 t where t.表单ID=:BDID").Parameters("BDID", model.BDID).Select<int>();
  186. model.BBH = number;
  187. model.ID = Guid.NewGuid().ToString();
  188. model.GXSJ = this.DataBaseBuilder.GetDateTime;
  189. model.SetDataFactory(this.DataFactoryObject);
  190. return model.Insert();
  191. }
  192. /// <summary>
  193. /// 删除数据记录【智能表单模板】
  194. /// </summary>
  195. /// <param name="model"></param>
  196. /// <returns></returns>
  197. public int Delete(ZNBCMBModel model)
  198. {
  199. model.SetDataFactory(this.DataFactoryObject);
  200. return model.Delete("ID");
  201. }
  202. /// <summary>
  203. /// 查询数据对象并进行赋值【智能表单模板】
  204. /// </summary>
  205. /// <returns></returns>
  206. public ZNBCMBModel Select(ZNBCMBModel model)
  207. {
  208. model.SetDataFactory(this.DataFactoryObject);
  209. model.Select();
  210. return model;
  211. }
  212. /// <summary>
  213. /// 列表查询【智能表单模板】
  214. /// </summary>
  215. /// <returns></returns>
  216. public List<ZNBCMBModel> SelectList(ZNBCMBModel model)
  217. {
  218. model.SetDataFactory(this.DataFactoryObject);
  219. return model.SelectList<ZNBCMBModel>();
  220. }
  221. #endregion
  222. #region 表单填写记录
  223. /// <summary>
  224. /// 列表查询【表单填写记录】
  225. /// </summary>
  226. /// <param name="model"></param>
  227. /// <returns></returns>
  228. public List<BDTXJL> SelectRecordList(SelectBDTXJLModel model, string classID )
  229. {
  230. int total = 0;
  231. List<BDTXJL> ListModel = new List<BDTXJL>();
  232. List<IDataParameter> listDP = new List<IDataParameter>();
  233. var dataSqlWhere = "";
  234. if (!model.BDXXID.IsNullOrEmpty())
  235. {
  236. dataSqlWhere += " and t.表单信息ID =:BDXXID";
  237. listDP.Add(new SqlParameter("BDXXID", model.BDXXID));
  238. }
  239. if (!model.QDID.IsNullOrEmpty())
  240. {
  241. dataSqlWhere += " and t.渠道ID =:QDID";
  242. listDP.Add(new SqlParameter("QDID", model.QDID));
  243. }
  244. if (!model.XMID.IsNullOrEmpty())
  245. {
  246. dataSqlWhere += " and t.项目ID =:XMID";
  247. listDP.Add(new SqlParameter("XMID", model.XMID));
  248. }
  249. if (!model.BZ.IsNullOrEmpty())
  250. {
  251. model.BZ= model.BZ.TrimEnd(',');
  252. dataSqlWhere += " and t.填报状态 in (select * from table(f_split_string(:BZ))) ";
  253. listDP.Add(new SqlParameter("BZ", string.Join(",", model.BZ)));
  254. }
  255. if(classID=="1")
  256. {
  257. dataSqlWhere += " and j.分类ID =:分类ID";
  258. listDP.Add(new SqlParameter("分类ID", "1"));
  259. }
  260. if (model.TBSJ_START != null)
  261. {
  262. dataSqlWhere += " and t.填报时间 BETWEEN :start_date AND to_date(:end_date ,'yyyy-mm-dd hh24:mi:ss') ";
  263. listDP.Add(new SqlParameter("start_date", model.TBSJ_START));
  264. listDP.Add(new SqlParameter("end_date", model.TBSJ_END + " 23:59:59"));
  265. }
  266. var dt = this.SqlBuilder.SqlText(@"select t.id,
  267. t.表单名 as BDM,
  268. t.表单结果 as BDJG,
  269. t.表单处理结果 as BDCLJG,
  270. t.表单内容 as BDNR,
  271. t.表单处理内容 as BDCLNR,
  272. t.填报状态 as TBZT,
  273. t.填报人 as TBR,
  274. t.填报时间 as TBSJ,
  275. t.审核人 as SHR,
  276. t.审核时间 as SHSJ,
  277. t.渠道名称 as QDMC,
  278. t.项目名称 as XMMC,
  279. t.表单模板ID as BDMBID,
  280. t.表单信息id as BDXXID,
  281. j.是否包含附件 SHBHFJ,
  282. t.备注 as BZ
  283. from 表单填写记录 t ,智能表单信息 j where j.id=t.表单信息id " + dataSqlWhere + " order by t.填报时间 desc ").Parameters(listDP.ToArray())
  284. .Paging(model.page, model.rows).Select(out total);
  285. model.total = total;
  286. if (dt.Rows.Count > 0)
  287. {
  288. ListModel = Tools.ConvertToList<BDTXJL>(dt);
  289. }
  290. return ListModel;
  291. }
  292. /// <summary>
  293. /// 填写表单
  294. /// </summary>
  295. /// <param name="model"></param>
  296. /// <returns></returns>
  297. public bool AddRecord(BDTXJLModel model)
  298. {
  299. model.ID = Guid.NewGuid().ToString();
  300. model.TBSJ = this.DataBaseBuilder.GetDateTime;
  301. model.SetDataFactory(this.DataFactoryObject);
  302. return model.Insert()>0;
  303. }
  304. /// <summary>
  305. /// 根据手机号获取系统账号信息
  306. /// </summary>
  307. /// <param name="tel"></param>
  308. /// <returns></returns>
  309. public DataTable GetPushAccountInfo(string tel)
  310. {
  311. var dt = this.SqlBuilder.SqlText(@"select * from 系统账户 where 账户 in (select * from table(f_split_string(:tel)))").Parameters("tel", string.Join(",", tel)).Select();
  312. return dt;
  313. }
  314. /// <summary>
  315. /// 根据人员ID获取系统账户的信息
  316. /// </summary>
  317. /// <returns></returns>
  318. public DataTable GetSysAccountInfo(string id)
  319. {
  320. string sql = "select * from 系统账户 where 人员ID=:id";
  321. DataTable dt = SqlBuilder.SqlText(sql).Parameters("id", id).Select();
  322. return dt;
  323. }
  324. /// <summary>
  325. /// 更新表单记录
  326. /// </summary>
  327. /// <param name="model"></param>
  328. /// <param name="type">1:更新处理结果,2更新通过、退回状态,3修改填写记录,4删除5暂存</param>
  329. /// <returns></returns>
  330. public bool UpdateRecord(BDTXJLModel model,int type)
  331. {
  332. var state = false;
  333. if(type== 1)
  334. {
  335. model.SHSJ = this.DataBaseBuilder.GetDateTime;
  336. state = this.UpdateBuilder.Update("表单填写记录").Column("表单处理结果", model.BDCLJG).Column("审核人ID", model.SHRID).Column("审核人", model.SHR).Column("审核时间", model.SHSJ).Where("ID", model.ID).Execute()>0;
  337. }
  338. else if (type == 2)
  339. {
  340. model.SHSJ = this.DataBaseBuilder.GetDateTime;
  341. if(model.TBZT==1)
  342. {
  343. state = this.UpdateBuilder.Update("表单填写记录").Column("填报状态", model.TBZT).Column("审核人ID", model.SHRID).Column("审核人", model.SHR).Column("审核时间", model.SHSJ).Where("ID", model.ID).Execute() > 0;
  344. }
  345. else if (model.TBZT == 2)
  346. {
  347. state = this.UpdateBuilder.Update("表单填写记录").Column("填报状态", model.TBZT).Column("审核人ID","").Column("审核人", "").Column("审核时间", null).Where("ID", model.ID).Execute() > 0;
  348. }
  349. }
  350. else if (type == 3)
  351. {
  352. model.TBSJ = this.DataBaseBuilder.GetDateTime;
  353. model.TBZT = 0;
  354. state = this.UpdateBuilder.Update("表单填写记录").Column("表单结果", model.BDJG).Column("填报状态", model.TBZT).Column("填报时间", model.TBSJ).Where("ID", model.ID).Execute() > 0;
  355. }
  356. else if (type == 4)
  357. {
  358. state = this.DeleteBulider.Delete("表单填写记录").Where("ID", model.ID).Execute() > 0;
  359. }
  360. else if (type == 5)
  361. {
  362. model.TBSJ = this.DataBaseBuilder.GetDateTime;
  363. model.TBZT = 3;
  364. state = this.UpdateBuilder.Update("表单填写记录").Column("表单结果", model.BDJG).Column("填报状态", model.TBZT).Column("填报时间", model.TBSJ).Where("ID", model.ID).Execute() > 0;
  365. }
  366. return state;
  367. }
  368. /// <summary>
  369. /// 查询我的填报记录
  370. /// </summary>
  371. /// <param name="model"></param>
  372. /// <returns></returns>
  373. public List<BDTXJL> MyRecordList(BDTXJLModel model)
  374. {
  375. List<IDataParameter> listDP = new List<IDataParameter>();
  376. var dataSqlWhere = " 1=1 ";
  377. if (!model.TBRID.IsNullOrEmpty())
  378. {
  379. dataSqlWhere += " and t.填报人ID=:TBRID ";
  380. listDP.Add(new SqlParameter("TBRID", model.TBRID));
  381. }
  382. if (!model.BDM.IsNullOrEmpty())
  383. {
  384. dataSqlWhere += " and ( t.表单名 like '%'||:BDM||'%' or t.项目名称 like '%'||:BDM||'%' )";
  385. listDP.Add(new SqlParameter("BDM", model.BDM));
  386. }
  387. if (!model.ID.IsNullOrEmpty())
  388. {
  389. dataSqlWhere += " and t. ID=:ID";
  390. listDP.Add(new SqlParameter("ID", model.ID));
  391. }
  392. List<BDTXJL> ListModel = new List<BDTXJL>();
  393. var dt = this.SqlBuilder.SqlText(@"select t.id,
  394. t.表单名 as BDM,
  395. t.表单结果 as BDJG,
  396. t.表单处理结果 as BDCLJG,
  397. t.表单内容 as BDNR,
  398. t.表单处理内容 as BDCLNR,
  399. t.填报状态 as TBZT,
  400. t.填报人 as TBR,
  401. t.填报人ID as TBRID,
  402. t.填报时间 as TBSJ,
  403. t.审核人 as SHR,
  404. t.审核时间 as SHSJ,
  405. t.渠道名称 as QDMC,
  406. t.项目名称 as XMMC,
  407. t.表单模板ID as BDMBID,
  408. t.表单信息id as BDXXID,
  409. t.备注 as BZ
  410. from 表单填写记录 t where " + dataSqlWhere + " order by t.填报时间 desc ").Parameters(listDP.ToArray()).Select();
  411. if (dt.Rows.Count > 0)
  412. {
  413. ListModel = Tools.ConvertToList<BDTXJL>(dt);
  414. }
  415. return ListModel;
  416. }
  417. #endregion
  418. }
  419. }