using QWPlatform.IService; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PMS.BusinessModels.Account; using PMS.BusinessModels.Problem; using System.Data; using QWPlatform.SystemLibrary.LogManager; using PMS.Plugins.Common; namespace PMS.DBService.SupportManager { public class SupportDBservice : DataServiceBase { protected override void DBFctory(string conName) { base.DBFctory(conName); } //技术支持登记问题 public ProblemStateModel RegisterSupportProblem(ProblemBusinessModel model, UserInfo user, string id,string AssignPerson) { ProblemStateModel state = new ProblemStateModel(); try { //根据项目产品模块ID获取产品ID string CPID = SelectProjectModualInfo(model.CPID).Rows[0]["产品ID"].ToString(); state.Count = 0; //问题性质 int Nature = SelectNature(model.WTXZ).Rows[0]["代码"].ToInt32(); //读取紧急程度 DataTable dt = SelectBuilder.From("基础编码").Columns("代码").Where("ID", model.JJDM).Select(); string JJCD = dt.Rows[0]["代码"].ToString(); //反馈人 var FKR = string.Empty; if (model.FKR.Length > 0) { DataTable dd = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.FKR).Select(); if (dd.Rows.Count == 0) { FKR = model.FKR; } else { FKR = dd.Rows[0]["姓名"].ToString(); } } if (model.YFCLRID.IsNullOrEmpty())//获取研发人员 { model.YFCLR = ""; } else { model.YFCLR = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.YFCLRID).Select().Rows[0]["姓名"].ToString(); } if (model.CSCLRID.IsNullOrEmpty())//获取测试人员 { model.CSCLR = ""; } else { model.CSCLR = SelectBuilder.From("人员信息").Columns("姓名").Where("ID", model.CSCLRID).Select().Rows[0]["姓名"].ToString(); } int? FromID = null; if (!string.IsNullOrEmpty(model.LYDM)) { //来源代码 FromID = SelectBuilder.From("基础编码").Columns("代码").Where("ID", model.LYDM).Select().Rows[0]["代码"] .ToInt32(); } //登记问题是否选择机构 if (model.JGID.Length > 0) { dt = SelectBuilder.From("项目问题流程").Columns("工作流目录ID").Where("项目ID", model.XMID).Where("机构ID", model.JGID).Select(); } else { dt = SelectBuilder.From("项目问题流程").Columns("工作流目录ID").Where("项目ID", model.XMID).Where("机构ID is null").Select(); } //工作流目录ID int CatalogID = int.Parse((dt.Rows[0]["工作流目录ID"].ToString())); DataTable dz = SelectBuilder.From("问题工作流程").Columns("ID").Columns("环节ID").Where("目录ID", CatalogID).Where("名称", "技术支持处理").Select(); int FlowID = dz.Rows[0]["ID"].ToInt32();//流程ID int RingID = dz.Rows[0]["环节ID"].ToInt32();//环节ID var Registertime = this.DataBaseBuilder.GetDateTime; //添加数据到问题记录表中 state.Count = InsertBuilder.Insert("问题记录") .Column("ID", id) .Column("编号", model.BH) .Column("模块ID", model.MKID) .Column("项目ID", model.XMID) .Column("渠道ID", model.QDID) .Column("产品ID", CPID) .Column("机构ID", model.JGID) .Column("紧急代码", JJCD) .Column("紧急描述", model.JJMS) .Column("要求时间", model.YQSJ) .Column("问题类型", 1) .Column("登记人", user.Name) .Column("登记人ID", user.PersonID) .Column("版本号", model.BBH) .Column("解决版本", model.JJBB) .Column("解决版本状态", model.JJBBZT) .Column("问题描述", model.WTMS) .Column("登记日期", Registertime) .Column("反馈日期", model.DJRJ) .Column("问题标题", model.WTBT) .Column("反馈人", FKR) .Column("技术支持", 1) .Column("研发协助", 0) .Column("项目处理", 1) .Column("是否终止", 0) .Column("是否解决", 0) .Column("环节ID", RingID) .Column("来源代码", FromID) .Column("问题性质", Nature) .Column("是否受理", 0) .Column("流程ID", FlowID) .Column("迭代ID", model.DDID) .Column("研发处理人ID", model.YFCLRID) .Column("测试处理人ID", model.CSCLRID) .Column("研发处理人", model.YFCLR) .Column("测试处理人", model.CSCLR) .Execute(); if (state.Count == 1) { //问题记录过程ID state.ProblemProcessID = Guid.NewGuid().ToString(); state.Count = InsertBuilder.Insert("问题记录过程") .Column("ID", state.ProblemProcessID) .Column("问题ID", id) .Column("记录人ID", user.PersonID) .Column("记录时间", Registertime) .Column("当前流程ID", FlowID) .Column("状态", 1) .Column("耗时", 0) .Column("描述", "登记问题") .Execute(); } //是否直接处理 if (model.RegisterType == 2) { string HelperName = user.Name; string HelperID = user.PersonID; if (model.XZRID != "") { //根据协助人ID获取姓名 HelperName = SelectBuilder.From("人员信息").Where("ID", model.XZRID).Columns("姓名").Select().Rows[0]["姓名"].ToString(); HelperID = model.XZRID; } var dealtime = this.DataBaseBuilder.GetDateTime; UpdateBuilder.Update("问题记录") .Where("ID", id) .Column("是否解决", 1) .Column("是否受理", 1) .Column("解决方案", model.JJFA) .Column("受理人", HelperName) .Column("受理人ID", HelperID) .Execute(); InsertBuilder.Insert("问题记录过程") .Column("ID", Guid.NewGuid().ToString()) .Column("问题ID", id) .Column("记录人ID", user.PersonID) .Column("记录时间", dealtime.AddSeconds(1)) .Column("结束时间", dealtime.AddSeconds(1)) .Column("当前流程ID", FlowID) .Column("状态", 7) .Column("耗时", 0) .Column("描述", model.JJFA) .Execute(); UpdateBuilder.Update("问题记录过程").Where("ID", state.ProblemProcessID).Column("结束时间", dealtime.AddSeconds(1)).Execute(); } //直接提交 if (model.RegisterType==1) { int Development = 0; //根据当前流程ID获取下个流程ID以及环节ID dt = SelectBuilder.From("问题工作流程").Where("ID", FlowID).Columns("目标ID").Select(); int NextFlowID = dt.Rows[0]["目标ID"].ToInt32(); dt = SelectBuilder.From("问题工作流程").Where("ID", NextFlowID).Columns("环节ID").Select(); int NextRingID = dt.Rows[0]["环节ID"].ToInt32(); if (NextRingID==5) { Development = 1; } //数据库时间 var time = this.DataBaseBuilder.GetDateTime; //根据受理人ID获取对应的受理人姓名 string SLR = SelectBuilder.From("人员信息").Where("ID", AssignPerson).Columns("姓名").Select().Rows[0]["姓名"].ToString(); //修改问题记录信息 UpdateBuilder.Update("问题记录") .Where("ID", id) .Column("研发协助", Development) .Column("环节ID", NextRingID) .Column("流程ID", NextFlowID) .Column("是否受理",1) .Column("受理人", SLR) .Column("受理人ID", AssignPerson) .Column("受理时间",time) .Column("指派人", SLR) .Column("指派人ID", AssignPerson) .Column("指派时间", time) .Execute(); //添加一条提交记录 InsertBuilder.Insert("问题记录过程") .Column("ID", Guid.NewGuid().ToString()) .Column("问题ID", id) .Column("记录人ID", user.PersonID) .Column("记录时间", time.AddSeconds(1)) .Column("当前流程ID", NextFlowID) .Column("来源流程ID",FlowID) .Column("状态", 5) .Column("耗时", 0) .Column("描述", "直接提交") .Column("指派人ID", AssignPerson) .Execute(); UpdateBuilder.Update("问题记录过程").Where("ID", state.ProblemProcessID).Column("结束时间", time.AddSeconds(1)).Execute(); } return state; } catch (Exception ex) { Logger.Instance.Error("执行RegisterSupportProblem出错", ex); state.Count = 0; return state; } } //项目产品模块信息 public DataTable SelectProjectModualInfo(string CPID) { return SelectBuilder.From("项目产品模块").Columns("产品ID").Columns("版本").Where("ID", CPID).Select(); } //根据性质ID返回性质代码 public DataTable SelectNature(string wTXZ) { return SelectBuilder.From("基础编码").Columns("代码").Columns("显示名").Columns("ID").Where("ID", wTXZ).Where("启用", 1).Select(); } } }