/// <summary> /// 发送通知 /// </summary> /// <param name="sid"></param> /// <param name="da">不在同一个事务中,查询不到id</param> /// <returns></returns> private bool PushMessage(int sid, TASM_SUPPORT_Da da) { if (Entites.AppConfig.IsPush == false) { Logger.LogInformation("不发送消息通知,若需要请打开配置文件"); return(true); } try { var model = da.SelectBySid4Push(sid); string title = $"您有一份新的任务,问题管理表编号[{model.CODE}],请登录售后管理系统查看详情。"; StringBuilder content = new StringBuilder(); content.AppendLine($"项目名称:{model.PROJECTNAME}[{model.PROJECTCODE}]"); content.AppendLine($"问题机型:{model.MACHINENAME}[{model.MACHINESERIAL}]"); content.AppendLine($"问题类型:{ Enum.GetName(typeof(SupportProblemType), model.TYPE)}"); content.AppendLine($"当前处理人:{model.CONDUCTORNAME}"); content.AppendLine($"流程节点:{Enum.GetName(typeof(SupportendPoint), model.STATUS).Replace('_', '>')}"); content.AppendLine($"问题描述:{model.CONTENT}"); PushHelper.PushWeChat(model.ConductorWorkId, title, content.ToString()); return(true); } catch (Exception e) { Logger.LogInformation("" + e); return(false); } }
public IActionResult SupportUpdate(TASM_SUPPORT info) { TASM_SUPPORT_Da support = new TASM_SUPPORT_Da(); TASM_SUPPORT_HIS_Da his = new TASM_SUPPORT_HIS_Da(); var hisModel = his.SelectBySidType(info.SID, 0); support.Db.BeginTran(); hisModel.PRE_USER = info.CREATOR; hisModel.NEXT_USER = info.CONDUCTOR; if (his.Db.Updateable(hisModel).ExecuteCommand() < 1) { support.Db.RollbackTran(); return(FailMessage()); } if (support.Db.Updateable(info).ExecuteCommand() < 1) { support.Db.RollbackTran(); return(FailMessage()); } support.Db.CommitTran(); return(SuccessMessage()); }
/// <summary> /// 生成工单编号 /// </summary> /// <param name="projectcode"></param> /// <returns></returns> public string GetSupportCode(string projectcode) { TASM_SUPPORT_Da da = new TASM_SUPPORT_Da(); string code = projectcode + "-" + da.SelectSupprotCodeIndex(); return(code); }
public IActionResult SupportInfo(int sid) { TASM_SUPPORT_Da support = new TASM_SUPPORT_Da(); var model = support.SelectById(sid); return(SuccessResult(model)); }
private bool UpdateSupport(TASM_SUPPORT supportModel, TASM_SUPPORT_Da support_manager, int nextUser, int supportStatus, int pmcId) { supportModel.MEMBERID = pmcId; supportModel.STATUS = supportStatus; //修改工单状态 supportModel.CONDUCTOR = nextUser; //工单流转到下一处理人员, 修改处理人员,此处 PMC处理人员 和 下一处理人员共用一个字段 supportModel.STATE = 1; //工单处理中 return(support_manager.CurrentDb.Update(supportModel)); //修改工单表 }
/// <summary> /// 创建工单 /// </summary> /// <param name="daSupport"></param> /// <param name="item"></param> /// <returns></returns> private bool CreateSupport(TASM_SUPPORT_Da daSupport, ExcelModel item, ref int sid, ref TASM_SUPPORT supportModel) { try { logger.Info("===创建工单开始===!"); //step1 添加工单主表, supportModel = new Entites.CodeGenerator.TASM_SUPPORT(); supportModel.CREATOR = GetUserIdByName(item.CreateName); //工单初始创建人 supportModel.CONTENT = item.Content; //问题描述 supportModel.TYPE = item.SupportType; supportModel.SEVERITY = item.Severity; supportModel.FINDATE = ConventDateTime(item.Createtime); supportModel.CONDUCTOR = GetUserIdByName(item.ConductorName); supportModel.STATUS = item.EndPiont; supportModel.STATE = item.ConductorStatus; supportModel.MID = GetsMachineByName(item.MachineCode); supportModel.CODE = GetSupportCode(Project.CODE); supportModel.TITLE = "导入数据"; supportModel.CREATETIME = DateTime.Now; sid = daSupport.Db.Insertable(supportModel).ExecuteReturnIdentity(); logger.Info("插入工单表"); //step2 添加历史表 TASM_SUPPORT_HIS_Da supportHis = new TASM_SUPPORT_HIS_Da(); TASM_SUPPORT_HIS supportHisModel = new TASM_SUPPORT_HIS(); supportHisModel.SID = sid; supportHisModel.PRE_USER = supportModel.CREATOR; //上一处理人 supportHisModel.NEXT_USER = supportModel.CONDUCTOR; //下一处理人 supportHisModel.PRE_STATUS = 0; //上一状态,订单初始创建,为0 supportHisModel.NEXT_STATUS = 0; //下一状态,订单初始创建 下一状态为 现场处理,状态0,此处创建订单不做为状态,默认创建 和 创建后未处理状态都是0 supportHisModel.TYPE = 0; //类型,也代表着是哪个表的数据 初始为0 supportHisModel.TID = sid; //数据id 根据type 那张表,看是哪一条数据。 supportHisModel.REMARKS = "工单创建,等待技术处理,导入数据"; supportHisModel.CREATETIME = DateTime.Now; supportHis.Db.Insertable(supportHisModel); logger.Info("插入历史表:创建工单"); logger.Info("===创建工单结束===!"); return(true); } catch (Exception ex) { logger.Error("创建工单失败" + ex); return(false); } }
public IActionResult ListSupport(ApiListModelBase model) { TASM_SUPPORT_Da da = new TASM_SUPPORT_Da(); SqlSugar.PageModel p = new SqlSugar.PageModel(); p.PageIndex = model.pageindex; p.PageSize = model.pagesize; List <TASM_SUPPORT> list = da.ListByWhere(model.keywords, ref p); return(SuccessResultList(list, p)); }
private bool UpdateSupport(TASM_SUPPORT supportModel, TASM_SUPPORT_Da support_manager, int nextUser, int supportStatus, int pid) { supportModel.MEMBERID = pid; supportModel.STATUS = supportStatus; //修改工单状态 supportModel.CONDUCTOR = nextUser; //工单流转到下一处理人员, 修改处理人员,此处 PMC处理人员 和 下一处理人员共用一个字段 if (supportModel.STATUS == 6 || supportModel.STATUS == 7) { supportModel.STATE = 2; //工单已完成, 工单状态 只有创建时,是待办, 技术处理之后 就变成 处理中了, supportModel.CONDUCTOR = supportModel.CREATOR; //工单,完成之后,没有下一处理人, 处理人变成创建人,但不产生新的personal数据 } return(support_manager.CurrentDb.Update(supportModel)); //修改工单表 }
public IActionResult GetReportCount() { TASM_PROJECTManager project = new TASM_PROJECTManager(); int pcount = project.SelectProjectCount(); TASM_MACHINEManager machine = new TASM_MACHINEManager(); int mcount = machine.SelectMachineCount(); TASM_SUPPORT_Da support = new TASM_SUPPORT_Da(); int scount = support.SelectSupportCount(); var details = support.SelectCount(); int cpnumber = (int)((Convert.ToDecimal(details.Complete) / Convert.ToDecimal(scount)) * 100); //工单完成率,百分比 return(Json(new { ProjectCount = pcount, MachineCount = mcount, SupportCount = scount, SupportWaite = details.Wait, SupportBeing = details.Being, SupportComplete = details.Complete, Cpnumber = cpnumber })); }
/// <summary> /// 创建工单主表 /// </summary> /// <param name="model"></param> /// <param name="da"></param> /// <param name="sid"></param> /// <param name="supportModel"></param> /// <returns></returns> private bool InsertSupport(SupportCreateModel model, TASM_SUPPORT_Da da, ref int sid, ref TASM_SUPPORT supportModel) { TASM_PROJECTManager projectda = new TASM_PROJECTManager(); TASM_PROJECT projectmodel = projectda.CurrentDb.GetById(model.ProjectId); string code = projectmodel.CODE + "-" + da.SelectSupprotCodeIndex(); supportModel = new TASM_SUPPORT() { CREATOR = model.CreatorId, CONDUCTOR = model.ConductorId, CONTENT = model.Content, CREATETIME = DateTime.Now, FINDATE = model.FindDate, MEMBERID = 0, PROJECT = model.ProjectId, SEVERITY = model.Severity, STATUS = 0, TITLE = model.Title, TYPE = model.Type, STATE = 0, MID = model.Mid, CODE = code }; sid = da.CurrentDb.InsertReturnIdentity(supportModel); if (sid <= 0) { Msg = "添加操作历史失败!"; return(false); } return(true); }
private void btn_star_ClickAsync(object sender, EventArgs e) { //若有缺失用户直接指定 曾丽蓉 string filepath = this.tb_filePath.Text; IExcelImporter Importer = new ExcelImporter(); var result = Importer.Import <ExcelModel>(filepath); if (result.Result.Data == null) { MessageBox.Show("读取excel失败!"); return; } List <ExcelModel> list = result.Result.Data.ToList(); //TODO: 将excel 拆成5张表 TASM_SUPPORT_Da daSupport = new TASM_SUPPORT_Da(); daSupport.Db.BeginTran(); //事务开 try { int i = 0; foreach (var item in list) { i++; logger.Info("===============导入开始==============" + i); Log("===============导入开始==============" + i); int sid = 0; //工单id TASM_SUPPORT supportModel = new TASM_SUPPORT(); Log("No:" + i + "创建工单-开始"); if (!CreateSupport(daSupport, item, ref sid, ref supportModel)) { daSupport.Db.RollbackTran(); logger.Info("===============导入失败====创建工单失败==========" + item.Content); Log("No:" + i + "创建工单-失败"); continue; } Log("No:" + i + "创建工单-结束"); //判断是否有现场处理节点, if (item.IsDisposerPoint.Trim() == "否" || string.IsNullOrWhiteSpace(item.IsDisposerPoint)) { //没有的话,继续下一条 Log("===============导入结束=========没有Disposer节点=====" + i); continue; } Log("No:" + i + "现场处理-开始"); if (!CreateDisposer(supportModel, item, sid)) { daSupport.Db.RollbackTran(); logger.Info("===============导入失败====创建现场处理失败==========" + item.Content); Log("No:" + i + "现场处理-失败"); continue; } Log("No:" + i + "现场处理-结束"); if (item.IsPmcPoint.Trim() == "否" || string.IsNullOrWhiteSpace(item.IsPmcPoint)) { //没有的话,继续下一条 Log("===============导入结束=========没有Pmc节点=====" + i); continue; } Log("No:" + i + "PMC处理-开始"); if (!CreatePmcOrder(supportModel, item, sid)) { daSupport.Db.RollbackTran(); logger.Info("===============导入失败====PMC处理失败==========" + item.Content); Log("No:" + i + "PMC处理失败-失败"); continue; } Log("No:" + i + "PMC处理-结束"); if (item.IsSitePoint == "否" || string.IsNullOrWhiteSpace(item.IsSitePoint)) { //没有的话,继续下一条 Log("===============导入结束=========没有site节点=====" + i); continue; } Log("No:" + i + "现场处理-开始"); if (!CreateSiteCheck(supportModel, item, sid)) { daSupport.Db.RollbackTran(); logger.Info("===============导入失败====现场处理失败==========" + item.Content); Log("No:" + i + "现场处理失败-失败"); continue; } Log("No:" + i + "现场处理-结束"); if (item.IsPrincipalPoint == "否" || string.IsNullOrWhiteSpace(item.IsPrincipalPoint)) { Log("===============导入结束=========没有principal节点=====" + i); continue; } if (!CreatePrincipal(supportModel, item, sid)) { daSupport.Db.RollbackTran(); logger.Info("===============导入失败====审核失败==========" + item.Content); Log("No:" + i + "审核处理失败-失败"); continue; } Log("===============导入结束==============" + i); logger.Info("===============导入结束==============" + i); } } catch (Exception ex) { daSupport.Db.RollbackTran(); logger.Info("程序异常,外层捕捉:" + ex); } }
/// <summary> /// 创建工单 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool Create(SupportCreateModel model) { DataAccess.TASM_SUPPORT_Da da = new TASM_SUPPORT_Da(); try { da.Db.BeginTran(); Logger.LogInformation("=====开始创建工单========"); int sid = 0; TASM_SUPPORT supportModel = new TASM_SUPPORT(); //插入工单表 if (!InsertSupport(model, da, ref sid, ref supportModel)) { Logger.LogInformation("插入工单表失败"); da.Db.RollbackTran(); return(false); } //插入操作历史表 if (!InsertHistory(supportModel, sid)) { Logger.LogInformation("插入历史表失败"); da.Db.RollbackTran(); return(false); } //添加处理人表 if (!InsertPersonal(supportModel, sid)) { Logger.LogInformation("插入处理人表失败"); da.Db.RollbackTran(); return(false); } //修改附件信息 if (!UpdateAttachment(model, sid)) { Logger.LogInformation("修改附件信息失败"); da.Db.RollbackTran(); return(false); } //添加推送消息 if (!InsertPush(model, sid)) { Logger.LogInformation("添加推送消息失败"); da.Db.RollbackTran(); return(false); } //发送通知-----非推送消息,推送消息 需要windows服务去跑 if (!PushMessage(sid, da)) { Logger.LogInformation("推送消息失败"); da.Db.RollbackTran(); return(false); } Logger.LogInformation("=====结束创建工单========"); da.Db.CommitTran(); this.Msg = "创建成功!"; return(true); } catch (Exception e) { da.Db.RollbackTran(); Logger.LogInformation("" + e); this.Msg = "创建工单失败!"; return(false); } }
/// <summary> /// 删除工单 /// </summary> /// <param name="sid"></param> /// <returns></returns> public bool Delete(int sid) { TASM_SUPPORT_Da support = new TASM_SUPPORT_Da(); support.Db.BeginTran(); try { if (!support.CurrentDb.DeleteById(sid)) { support.Db.RollbackTran(); this.Msg = "删除工单主表失败"; Logger.LogInformation("删除工单主表失败!"); return(false); } TASM_SUPPORT_DISPOSER_Da disposer = new TASM_SUPPORT_DISPOSER_Da(); if (disposer.Db.Queryable <TASM_SUPPORT_DISPOSER>().Where(s => s.SID == sid).Count() > 0) { if (disposer.Db.Deleteable <TASM_SUPPORT_DISPOSER>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除责任人处理失败"; Logger.LogInformation("删除责任人处理失败!"); return(false); } } TASM_SUPPORT_PMC_Da pmc = new TASM_SUPPORT_PMC_Da(); if (pmc.Db.Queryable <TASM_SUPPORT_PMC>().Where(s => s.SID == sid).Count() > 0) { if (pmc.Db.Deleteable <TASM_SUPPORT_PMC>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "售后内勤删除失败!"; Logger.LogInformation("售后内勤删除失败!"); return(false); } } TASM_SUPPORT_SITE_Da site = new TASM_SUPPORT_SITE_Da(); if (site.Db.Queryable <TASM_SUPPORT_SITE>().Where(s => s.SID == sid).Count() > 0) { if (site.Db.Deleteable <TASM_SUPPORT_SITE>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除现场信息失败!"; Logger.LogInformation("删除现场信息失败!"); return(false); } } TASM_SUPPORT_PRINCIPAL_Da principal = new TASM_SUPPORT_PRINCIPAL_Da(); if (principal.Db.Queryable <TASM_SUPPORT_PRINCIPAL>().Where(s => s.SID == sid).Count() > 0) { if (principal.Db.Deleteable <TASM_SUPPORT_PRINCIPAL>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除审核信息失败!"; Logger.LogInformation("删除审核信息失败!"); return(false); } } TASM_SUPPORT_HIS_Da his = new TASM_SUPPORT_HIS_Da(); if (his.Db.Queryable <TASM_SUPPORT_HIS>().Where(s => s.SID == sid).Count() > 0) { if (his.Db.Deleteable <TASM_SUPPORT_HIS>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除审核信息失败!"; Logger.LogInformation("删除审核信息失败!"); return(false); } } TASM_SUPPORT_PERSONAL_Da personal = new TASM_SUPPORT_PERSONAL_Da(); if (personal.Db.Queryable <TASM_SUPPORT_PERSONAL>().Where(s => s.SID == sid).Count() > 0) { if (personal.Db.Deleteable <TASM_SUPPORT_PERSONAL>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除审核信息失败!"; Logger.LogInformation("删除审核信息失败!"); return(false); } } TASM_SUPPORT_PUSH_Da push = new TASM_SUPPORT_PUSH_Da(); if (push.Db.Queryable <TASM_SUPPORT_PUSH>().Where(s => s.SID == sid).Count() > 0) { if (push.Db.Deleteable <TASM_SUPPORT_PUSH>().Where(s => s.SID == sid).ExecuteCommand() <= 0) { support.Db.RollbackTran(); this.Msg = "删除审核信息失败!"; Logger.LogInformation("删除审核信息失败!"); return(false); } } support.Db.CommitTran(); return(true); } catch (Exception e) { Logger.LogInformation(e.ToString()); support.Db.RollbackTran(); return(false); } }
private void btn_star_Click(object sender, EventArgs e) { logger.Debug("Debug"); logger.Info("Info"); logger.Error("Error"); logger.Warn("Warn"); string filepath = this.tb_filePath.Text; IExcelImporter Importer = new ExcelImporter(); var result = Importer.Import <ExcelModel>(filepath); if (result.Result.Data == null) { MessageBox.Show("读取excel失败!" + result.Result.Exception); return; } List <ExcelModel> list = result.Result.Data.ToList(); int i = 0; foreach (var item in list) { TASM_SUPPORT_Da daSupport = new TASM_SUPPORT_Da(); daSupport.Db.BeginTran(); //事务开 i++; logger.Info("===============导入开始==============" + i); Log("===============导入开始==============" + i); int sid = 0; //工单id TASM_SUPPORT supportModel = new TASM_SUPPORT(); Log("No:" + i + "创建工单-开始"); if (!CreateSupport(daSupport, item, ref sid, ref supportModel)) { logger.Info("===============导入失败====创建工单失败==========" + item.Content); Log("No:" + i + "创建工单-失败"); Log("===============导入失败====创建工单失败==========" + item.Content); daSupport.Db.RollbackTran(); continue; } Log("No:" + i + "创建工单-结束 sid:" + sid); //判断是否有技术处理节点, if (item.IsDisposerPoint.Trim() == "否" || string.IsNullOrWhiteSpace(item.IsDisposerPoint)) { //没有的话,继续下一条 Log("===============导入结束=========没有Disposer节点=====" + i); logger.Info("===============导入结束=========没有Disposer节点=====" + i); daSupport.Db.CommitTran(); continue; } Log("No:" + i + "技术处理-开始"); if (!CreateDisposer(supportModel, item, sid)) { logger.Info("===============导入失败====创建技术处理失败==========" + item.Content); Log("No:" + i + "技术处理-失败"); Log("===============导入失败====创建技术处理失败==========" + item.Content); daSupport.Db.RollbackTran(); continue; } Log("No:" + i + "技术处理-结束" + sid); //既没有PMC节点 也没有 site节点,则表示 没有PMC处理,也没有 现场处理,则该订单直接判断,审核环节也不要了, 直接下一条 if ((item.IsPmcPoint.Trim() == "否" || string.IsNullOrWhiteSpace(item.IsPmcPoint)) && (item.IsSitePoint == "否" || string.IsNullOrWhiteSpace(item.IsSitePoint))) { //没有的话,继续下一条 Log("===============导入结束=========没有Pmc节点=====" + i); logger.Info("===============导入结束=========没有Pmc节点=====" + i); daSupport.Db.CommitTran(); continue; } // 如果是有PMC 节点, 则插入PMC节点, 该情况可能发生,没有PMC节点,但是有site节点。所以 这里判断有PMC则插入,没有则还是要下去判断site节点。 if (item.IsPmcPoint.Trim() == "是") { Log("No:" + i + "PMC处理-开始"); if (!CreatePmcOrder(supportModel, item, sid)) { logger.Info("===============导入失败====PMC处理失败==========" + item.Content); Log("No:" + i + "PMC处理失败-失败"); Log("===============导入失败====PMC处理失败==========" + item.Content); daSupport.Db.RollbackTran(); continue; } Log("No:" + i + "PMC处理-结束"); } if (item.IsSitePoint == "否" || string.IsNullOrWhiteSpace(item.IsSitePoint)) { //没有的话,继续下一条 logger.Info("===============导入结束=========没有site节点=====" + i); Log("===============导入结束=========没有site节点=====" + i); daSupport.Db.CommitTran(); continue; } Log("No:" + i + "现场处理-开始"); if (!CreateSiteCheck(supportModel, item, sid)) { logger.Info("===============导入失败====现场处理失败==========" + item.Content); Log("No:" + i + "现场处理失败-失败"); Log("===============导入失败====现场处理失败==========" + item.Content); daSupport.Db.RollbackTran(); continue; } Log("No:" + i + "现场处理-结束"); if (item.IsPrincipalPoint == "否" || string.IsNullOrWhiteSpace(item.IsPrincipalPoint)) { logger.Info("===============导入结束=========没有principal节点=====" + i); Log("===============导入结束=========没有principal节点=====" + i); daSupport.Db.CommitTran(); continue; } if (!CreatePrincipal(supportModel, item, sid)) { logger.Info("===============导入失败====审核失败==========" + item.Content); Log("No:" + i + "审核处理失败-失败"); Log("===============导入失败====审核失败==========" + item.Content); daSupport.Db.RollbackTran(); continue; } daSupport.Db.CommitTran(); Log("===============导入结束==============" + i); logger.Info("===============导入结束==============" + i); } }
public IActionResult SelectCount() { TASM_SUPPORT_Da da = new TASM_SUPPORT_Da(); return(SuccessResult(da.SelectCount())); }
public bool Create(AddPmcCheckModel model) { TASM_SUPPORT_PMC_Da manager = new TASM_SUPPORT_PMC_Da(); try { manager.Db.BeginTran(); int pmcId = 0; //1,添加 PMC处理表数据 if (!InsertPmc(model, manager, ref pmcId)) { this.Msg = "创建PMC处理信息失败!"; manager.Db.RollbackTran(); return(false); } TASM_SUPPORT_Da support_manager = new TASM_SUPPORT_Da(); var supportModel = support_manager.CurrentDb.GetById(model.SID); //工单id 查询工单信息 //2,当前处理人员发生修改,新增一条 修改记录 history if (!InsertHistory(model, manager, supportModel, pmcId, model.SUPPORTSTATUS, model.NEXTUSER)) { this.Msg = "创建操作历史失败!"; manager.Db.RollbackTran(); return(false); } //3,新的处理人员再新增一条 处理信息(顺序不能变) 取了工单处理人,为个人处理表的创建人,顺序不能变 if (!InsertPersonal(supportModel.CONDUCTOR, model.NEXTUSER, model.SUPPORTSTATUS, model.SID)) { this.Msg = "分发工单失败!"; manager.Db.RollbackTran(); return(false); } //4,修改工单表的状态 if (!UpdateSupport(supportModel, support_manager, model.NEXTUSER, model.SUPPORTSTATUS, pmcId)) { this.Msg = "修改工单信息失败!"; manager.Db.RollbackTran(); return(false); } //5,修改个人信息处理表 if (!UpdatePersonal(model.PERSONALID)) { this.Msg = "修改个人处理状态失败!"; manager.Db.RollbackTran(); return(false); } //6,添加推送消息 if (!InsertPush(model, pmcId)) { this.Msg = "修改个人处理状态失败!"; manager.Db.RollbackTran(); return(false); } //7,发送通知 if (!PushMessage(model.SID, support_manager)) { Logger.LogInformation("推送消息失败"); manager.Db.RollbackTran(); return(false); } manager.Db.CommitTran(); return(true); } catch (Exception e) { manager.Db.RollbackTran(); return(false); } }