/// <summary> /// 新增任务,及任务相关的表(任务指标映射表、任务生命周期表) /// </summary> /// <param name="task"></param> /// <param name="indicatorIdList"></param> public static void createTask(Tb_taskInfo task, List <int> indicatorIdList, Dictionary <int, List <int> > brandModelIdDic) { using (EFMySqlDbContext context = new Db.EFMySqlDbContext()) { using (var transaction = context.Database.BeginTransaction()) { try { //新增任务信息 context.Tb_taskInfos.Add(task); context.SaveChanges(); context.Entry(task); int taskId = task.id; //添加任务生命周期 Tb_taskLifecycle lifecycle = new Tb_taskLifecycle(); lifecycle.taskId = taskId; lifecycle.taskStateDateTime = DateTime.Now; lifecycle.taskStateChangeExecutor = User.currentUser.name; lifecycle.taskState = (int)TaskStateEnum.Created; lifecycle.remark = string.Empty; context.Tb_taskLifecycles.Add(lifecycle); context.SaveChanges(); //添加任务型号映射 List <Tb_taskModelMap> tmmList = new List <Entity.Tb_taskModelMap>(); foreach (int brandId in brandModelIdDic.Keys) { foreach (int modelId in brandModelIdDic[brandId]) { Tb_taskModelMap tmm = new Tb_taskModelMap(); tmm.taskId = taskId; tmm.brandId = brandId; tmm.ModelId = modelId; tmmList.Add(tmm); } } context.Tb_taskModelMaps.AddRange(tmmList); context.SaveChanges(); //添加任务指标映射 List <Tb_taskIndicatorMap> timList = new List <Tb_taskIndicatorMap>(); foreach (int indicatorId in indicatorIdList) { Tb_taskIndicatorMap tim = new Tb_taskIndicatorMap(); tim.taskId = taskId; tim.indicatorId = indicatorId; timList.Add(tim); } context.Tb_taskIndicatorMaps.AddRange(timList); context.SaveChanges(); //提交数据库 transaction.Commit(); //更新任务生命周期缓存 TaskLifecycleCache.addCacheOnly(lifecycle); //更新品牌型号映射缓存 foreach (var tmm in tmmList) { TaskModelMapCache.addCacheOnly(tmm); } //更新指标映射缓存 foreach (var tim in timList) { TaskIndicatorMapCache.addCacheOnly(tim); } } catch (Exception ex) { transaction.Rollback(); throw ex; } } } }
public List <TaskResultModel> getData(int step, int round) { var taskIndicatorMapList = TaskIndicatorMapCache.getCache().Where(i => i.taskId == taskId).ToList(); var indicatorList = IndicatorCache.getCache(); var brandList = CodeCache.getBrand(); var modelList = CodeCache.getModel(); var taskModelList = TaskModelMapCache.getCache(); taskResultMapList = TaskResultCache.getCache().Where(t => t.taskId == taskId && t.taskRound == taskRound).ToList(); if (round == 1) { //todo ***************确定后将下列ToList都去掉****************** var brand_model_list = (from brand in brandList from model in modelList where brand.id == model.parentId select new { modelId = model.id, modelName = model.codeName, brandId = brand.id, brandName = brand.codeName }).ToList(); var task_model_indicator_list = (from taskIndicator in taskIndicatorMapList from taskModel in taskModelList from bm in brand_model_list where taskIndicator.taskId == taskId && taskModel.taskId == taskId && taskModel.ModelId == bm.modelId select new { taskIndicator, bm.brandId, bm.brandName, bm.modelId, bm.modelName }).ToList(); var list_indicator = (from indicator in task_model_indicator_list join result in taskResultMapList.Where(r => r.taskStep == step && r.taskRound == round) on new { indicator.taskIndicator.indicatorId, indicator.modelId } equals new { result.indicatorId, result.modelId } into temp from tt in temp.DefaultIfEmpty() select new { indicator, taskRecord = tt == null ? "" : tt.taskRecord, taskResult = tt == null ? 0 : tt.taskResult, taskRemark = tt == null ? "" : tt.taskRemark, attachment = tt == null ? "" : tt.attachment, taskExecutor = tt == null ? "" : tt.taskExecutor, taskDateTime = tt == null ? "" : tt.taskDateTime.ToString(), taskStep = tt == null ? 0 : tt.taskStep, modelId = tt == null ? 0 : tt.modelId, taskResultId = tt == null ? 0 : tt.id, supplement = tt == null ? "" : tt.supplement }).ToList(); allResultModelList = (from temp in list_indicator from indicator in indicatorList where temp.indicator.taskIndicator.indicatorId == indicator.id select new TaskResultModel { indicatorId = indicator.id, indicatorName = indicator.indicatorName, indicatorDesc = indicator.indicatorDesc, indicatorInstr = indicator.indicatorInstr, taskDateTime = temp.taskDateTime, taskStep = temp.taskStep, taskExecutor = temp.taskExecutor, taskRecord = temp.taskRecord, taskRemark = temp.taskRemark, attachment = temp.attachment, attachmentCount = (temp.attachment == string.Empty ? "" : temp.attachment.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Count() + "个") + (temp.supplement == "" ? "" : "(补)"), taskResult = temp.taskResult, modelId = temp.indicator.modelId, modelName = temp.indicator.modelName, brandId = temp.indicator.brandId, brandName = temp.indicator.brandName, taskResultId = temp.taskResultId, supplement = temp.supplement, isFillFinish = (temp.taskResult == 0 && temp.taskRecord == "") ? 0 : 1, isHaveModi = ((temp.taskResult != 0 || temp.taskRecord != "" || temp.taskRemark != "" || temp.attachment != "" || temp.supplement != "") ? 1:0) }).ToList(); } else { var initStepList = TaskResultCache.getCache().Where(r => r.taskId == taskId && r.taskRound == taskRound && r.taskResult == 0 && r.taskStep == 1).ToList(); var a = (from initStep in initStepList join result in TaskResultCache.getCache().Where(r => r.taskId == taskId && r.taskRound == taskRound && r.taskStep == step).ToList() on new { initStep.modelId, initStep.indicatorId } equals new { result.modelId, result.indicatorId } into temp from tt in temp.DefaultIfEmpty() select new Tb_taskResult { id = initStep.id, taskRecord = (tt == null?"": tt.taskRecord), attachment = (tt == null ?"":tt.attachment), taskResult = (tt == null?0:tt.taskResult), taskId = initStep.taskId, taskStep = step, taskRound = round, taskExecutor = initStep.taskExecutor, taskDateTime = tt == null? DateTime.Now: tt.taskDateTime, modelId = initStep.modelId, indicatorId = initStep.indicatorId, taskRemark = (tt == null ? "" : tt.taskRemark), supplement = (tt == null ? "" : tt.supplement), }).ToList(); allResultModelList = (from resultList in a from indicator in indicatorList from brand in brandList from model in modelList where resultList.modelId == model.id && model.parentId == brand.id && resultList.indicatorId == indicator.id && resultList.taskId == taskId && resultList.taskRound == round && resultList.taskStep == step select new TaskResultModel { indicatorId = resultList.indicatorId, indicatorName = indicator.indicatorName, indicatorDesc = indicator.indicatorDesc, indicatorInstr = indicator.indicatorInstr, brandId = brand.id, brandName = brand.codeName, modelId = model.id, modelName = model.codeName, taskStep = resultList.taskStep, taskExecutor = resultList.taskExecutor, taskDateTime = resultList.taskDateTime.ToString(), taskRecord = resultList.taskRecord, taskResult = resultList.taskResult, taskResultId = resultList.id, taskRemark = resultList.taskRemark, attachment = resultList.attachment, attachmentCount = (resultList.attachment == string.Empty ? "" : resultList.attachment.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Count() + "个") + (resultList.supplement == "" ? "" : "(补)"), supplement = resultList.supplement, isFillFinish = (resultList.taskResult == 0 && resultList.taskRecord == "") ? 0 : 1, isHaveModi = ((resultList.taskResult != 0 || resultList.taskRecord != "" || resultList.taskRemark != "" || resultList.attachment != "" || resultList.supplement != "") ? 1 : 0) }).ToList(); } pagingPanel.setDetail(allResultModelList.Count); return(allResultModelList.Skip(pageSize * (pageNum - 1)).Take(pageSize).ToList()); }
private List <TaskResultModel> GetReportInfo(int step, int round) { var taskIndicatorMapList = TaskIndicatorMapCache.getCache().Where(i => i.taskId == taskInfoId).ToList(); var indicatorList = IndicatorCache.getCache(); var brandList = CodeCache.getBrand(); var modelList = CodeCache.getModel(); var taskModelList = TaskModelMapCache.getCache(); var brand_model_list = (from brand in brandList from model in modelList where brand.id == model.parentId select new { modelId = model.id, modelName = model.codeName, brandId = brand.id, brandName = brand.codeName }).ToList(); var task_model_indicator_list = (from taskIndicator in taskIndicatorMapList from taskModel in taskModelList from bm in brand_model_list where taskIndicator.taskId == taskInfoId && taskModel.taskId == taskInfoId && taskModel.ModelId == bm.modelId select new { taskIndicator, bm.brandId, bm.brandName, bm.modelId, bm.modelName }).ToList(); var list_indicator = (from indicator in task_model_indicator_list join result in taskResultMapList.Where(r => r.taskStep == step && r.taskRound == round) on new { indicator.taskIndicator.indicatorId, indicator.modelId } equals new { result.indicatorId, result.modelId } into temp from tt in temp.DefaultIfEmpty() select new { indicator, taskRecord = tt == null ? "" : tt.taskRecord, taskResult = tt == null ? 0 : tt.taskResult, taskRemark = tt == null ? "" : tt.taskRemark, attachment = tt == null ? "" : tt.attachment, taskExecutor = tt == null ? "" : tt.taskExecutor, taskDateTime = tt == null ? "" : tt.taskDateTime.ToString(), taskStep = tt == null ? 0 : tt.taskStep, modelId = tt == null ? 0 : tt.modelId, taskResultId = tt == null ? 0 : tt.id, supplement = tt == null ? "" : tt.supplement }).ToList(); var allResultModelList = (from temp in list_indicator from indicator in indicatorList where temp.indicator.taskIndicator.indicatorId == indicator.id select new TaskResultModel { indicatorId = indicator.id, indicatorName = indicator.indicatorName, indicatorDesc = indicator.indicatorDesc, indicatorInstr = indicator.indicatorInstr, taskDateTime = temp.taskDateTime, taskStep = temp.taskStep, taskExecutor = temp.taskExecutor, taskRecord = temp.taskRecord, taskRemark = temp.taskRemark, attachment = temp.attachment, attachmentCount = (temp.attachment == string.Empty ? "" : temp.attachment.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Count() + "个") + (temp.supplement == "" ? "" : "(补)"), taskResult = temp.taskResult, modelId = temp.indicator.modelId, modelName = temp.indicator.modelName, brandId = temp.indicator.brandId, brandName = temp.indicator.brandName, taskResultId = temp.taskResultId, supplement = temp.supplement }).ToList(); return(allResultModelList); }