SupportDBservice.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. using QWPlatform.IService;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using PMS.BusinessModels.Account;
  8. using PMS.BusinessModels.Problem;
  9. using System.Data;
  10. using QWPlatform.SystemLibrary.LogManager;
  11. using PMS.Plugins.Common;
  12. namespace PMS.DBService.SupportManager
  13. {
  14. public class SupportDBservice : DataServiceBase
  15. {
  16. protected override void DBFctory(string conName)
  17. {
  18. base.DBFctory(conName);
  19. }
  20. //技术支持登记问题
  21. public ProblemStateModel RegisterSupportProblem(ProblemBusinessModel model, UserInfo user, string id,string AssignPerson)
  22. {
  23. ProblemStateModel state = new ProblemStateModel();
  24. try
  25. {
  26. //根据项目产品模块ID获取产品ID
  27. string CPID = SelectProjectModualInfo(model.CPID).Rows[0]["产品ID"].ToString();
  28. state.Count = 0;
  29. //问题性质
  30. int Nature = SelectNature(model.WTXZ).Rows[0]["代码"].ToInt32();
  31. //读取紧急程度
  32. DataTable dt = SelectBuilder.From("基础编码").Columns("代码").Where("ID", model.JJDM).Select();
  33. string JJCD = dt.Rows[0]["代码"].ToString();
  34. //反馈人
  35. var FKR = string.Empty;
  36. if (model.FKR.Length > 0)
  37. {
  38. DataTable dd = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.FKR).Select();
  39. if (dd.Rows.Count == 0)
  40. {
  41. FKR = model.FKR;
  42. }
  43. else
  44. {
  45. FKR = dd.Rows[0]["姓名"].ToString();
  46. }
  47. }
  48. if (model.YFCLRID.IsNullOrEmpty())//获取研发人员
  49. {
  50. model.YFCLR = "";
  51. }
  52. else
  53. {
  54. model.YFCLR = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.YFCLRID).Select().Rows[0]["姓名"].ToString();
  55. }
  56. if (model.CSCLRID.IsNullOrEmpty())//获取测试人员
  57. {
  58. model.CSCLR = "";
  59. }
  60. else
  61. {
  62. model.CSCLR = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.CSCLRID).Select().Rows[0]["姓名"].ToString();
  63. }
  64. int? FromID = null;
  65. if (!string.IsNullOrEmpty(model.LYDM))
  66. { //来源代码
  67. FromID = SelectBuilder.From("基础编码").Columns("代码").Where("ID", model.LYDM).Select().Rows[0]["代码"]
  68. .ToInt32();
  69. }
  70. //登记问题是否选择机构
  71. if (model.JGID.Length > 0)
  72. {
  73. dt = SelectBuilder.From("项目问题流程").Columns("工作流目录ID").Where("项目ID", model.XMID).Where("机构ID", model.JGID).Select();
  74. }
  75. else
  76. {
  77. dt = SelectBuilder.From("项目问题流程").Columns("工作流目录ID").Where("项目ID", model.XMID).Where("机构ID is null").Select();
  78. }
  79. //工作流目录ID
  80. int CatalogID = int.Parse((dt.Rows[0]["工作流目录ID"].ToString()));
  81. DataTable dz = SelectBuilder.From("问题工作流程").Columns("ID").Columns("环节ID").Where("目录ID", CatalogID).Where("名称", "技术支持处理").Select();
  82. int FlowID = dz.Rows[0]["ID"].ToInt32();//流程ID
  83. int RingID = dz.Rows[0]["环节ID"].ToInt32();//环节ID
  84. var Registertime = this.DataBaseBuilder.GetDateTime;
  85. //添加数据到问题记录表中
  86. state.Count = InsertBuilder.Insert("问题记录")
  87. .Column("ID", id)
  88. .Column("编号", model.BH)
  89. .Column("模块ID", model.MKID)
  90. .Column("项目ID", model.XMID)
  91. .Column("渠道ID", model.QDID)
  92. .Column("产品ID", CPID)
  93. .Column("机构ID", model.JGID)
  94. .Column("紧急代码", JJCD)
  95. .Column("紧急描述", model.JJMS)
  96. .Column("要求时间", model.YQSJ)
  97. .Column("问题类型", 1)
  98. .Column("登记人", user.Name)
  99. .Column("登记人ID", user.PersonID)
  100. .Column("版本号", model.BBH)
  101. .Column("解决版本", model.JJBB)
  102. .Column("解决版本状态", model.JJBBZT)
  103. .Column("问题描述", model.WTMS)
  104. .Column("登记日期", Registertime)
  105. .Column("反馈日期", model.DJRJ)
  106. .Column("问题标题", model.WTBT)
  107. .Column("反馈人", FKR)
  108. .Column("技术支持", 1)
  109. .Column("研发协助", 0)
  110. .Column("项目处理", 1)
  111. .Column("是否终止", 0)
  112. .Column("是否解决", 0)
  113. .Column("环节ID", RingID)
  114. .Column("来源代码", FromID)
  115. .Column("问题性质", Nature)
  116. .Column("是否受理", 0)
  117. .Column("流程ID", FlowID)
  118. .Column("迭代ID", model.DDID)
  119. .Column("研发处理人ID", model.YFCLRID)
  120. .Column("测试处理人ID", model.CSCLRID)
  121. .Column("研发处理人", model.YFCLR)
  122. .Column("测试处理人", model.CSCLR)
  123. .Execute();
  124. if (state.Count == 1)
  125. {
  126. //问题记录过程ID
  127. state.ProblemProcessID = Guid.NewGuid().ToString();
  128. state.Count = InsertBuilder.Insert("问题记录过程")
  129. .Column("ID", state.ProblemProcessID)
  130. .Column("问题ID", id)
  131. .Column("记录人ID", user.PersonID)
  132. .Column("记录时间", Registertime)
  133. .Column("当前流程ID", FlowID)
  134. .Column("状态", 1)
  135. .Column("耗时", 0)
  136. .Column("描述", "登记问题")
  137. .Execute();
  138. }
  139. //是否直接处理
  140. if (model.RegisterType == 2)
  141. {
  142. string HelperName = user.Name;
  143. string HelperID = user.PersonID;
  144. if (model.XZRID != "")
  145. {
  146. //根据协助人ID获取姓名
  147. HelperName = SelectBuilder.From("人员信息").Where("ID", model.XZRID).Columns("姓名").Select().Rows[0]["姓名"].ToString();
  148. HelperID = model.XZRID;
  149. }
  150. var dealtime = this.DataBaseBuilder.GetDateTime;
  151. UpdateBuilder.Update("问题记录")
  152. .Where("ID", id)
  153. .Column("是否解决", 1)
  154. .Column("是否受理", 1)
  155. .Column("解决方案", model.JJFA)
  156. .Column("受理人", HelperName)
  157. .Column("受理人ID", HelperID)
  158. .Execute();
  159. InsertBuilder.Insert("问题记录过程")
  160. .Column("ID", Guid.NewGuid().ToString())
  161. .Column("问题ID", id)
  162. .Column("记录人ID", user.PersonID)
  163. .Column("记录时间", dealtime.AddSeconds(1))
  164. .Column("结束时间", dealtime.AddSeconds(1))
  165. .Column("当前流程ID", FlowID)
  166. .Column("状态", 7)
  167. .Column("耗时", 0)
  168. .Column("描述", model.JJFA)
  169. .Execute();
  170. UpdateBuilder.Update("问题记录过程").Where("ID", state.ProblemProcessID).Column("结束时间", dealtime.AddSeconds(1)).Execute();
  171. }
  172. //直接提交
  173. if (model.RegisterType==1)
  174. {
  175. int Development = 0;
  176. //根据当前流程ID获取下个流程ID以及环节ID
  177. dt = SelectBuilder.From("问题工作流程").Where("ID", FlowID).Columns("目标ID").Select();
  178. int NextFlowID = dt.Rows[0]["目标ID"].ToInt32();
  179. dt = SelectBuilder.From("问题工作流程").Where("ID", NextFlowID).Columns("环节ID").Select();
  180. int NextRingID = dt.Rows[0]["环节ID"].ToInt32();
  181. if (NextRingID==5)
  182. {
  183. Development = 1;
  184. }
  185. //数据库时间
  186. var time = this.DataBaseBuilder.GetDateTime;
  187. //根据受理人ID获取对应的受理人姓名
  188. string SLR = SelectBuilder.From("人员信息").Where("ID", AssignPerson).Columns("姓名").Select().Rows[0]["姓名"].ToString();
  189. //修改问题记录信息
  190. UpdateBuilder.Update("问题记录")
  191. .Where("ID", id)
  192. .Column("研发协助", Development)
  193. .Column("环节ID", NextRingID)
  194. .Column("流程ID", NextFlowID)
  195. .Column("是否受理",1)
  196. .Column("受理人", SLR)
  197. .Column("受理人ID", AssignPerson)
  198. .Column("受理时间",time)
  199. .Column("指派人", SLR)
  200. .Column("指派人ID", AssignPerson)
  201. .Column("指派时间", time)
  202. .Execute();
  203. //添加一条提交记录
  204. InsertBuilder.Insert("问题记录过程")
  205. .Column("ID", Guid.NewGuid().ToString())
  206. .Column("问题ID", id)
  207. .Column("记录人ID", user.PersonID)
  208. .Column("记录时间", time.AddSeconds(1))
  209. .Column("当前流程ID", NextFlowID)
  210. .Column("来源流程ID",FlowID)
  211. .Column("状态", 5)
  212. .Column("耗时", 0)
  213. .Column("描述", "直接提交")
  214. .Column("指派人ID", AssignPerson)
  215. .Execute();
  216. UpdateBuilder.Update("问题记录过程").Where("ID", state.ProblemProcessID).Column("结束时间", time.AddSeconds(1)).Execute();
  217. }
  218. return state;
  219. }
  220. catch (Exception ex)
  221. {
  222. Logger.Instance.Error("执行RegisterSupportProblem出错", ex);
  223. state.Count = 0;
  224. return state;
  225. }
  226. }
  227. //项目产品模块信息
  228. public DataTable SelectProjectModualInfo(string CPID)
  229. {
  230. return SelectBuilder.From("项目产品模块").Columns("产品ID").Columns("版本").Where("ID", CPID).Select();
  231. }
  232. //根据性质ID返回性质代码
  233. public DataTable SelectNature(string wTXZ)
  234. {
  235. return SelectBuilder.From("基础编码").Columns("代码").Columns("显示名").Columns("ID").Where("ID", wTXZ).Where("启用", 1).Select();
  236. }
  237. }
  238. }