public JsonResult DoImport() { var success = true; var message = "保存成功!"; var user = OperatorProvider.Provider.Current(); string deptid = this.Request["deptid"]; string deptcode = this.Request["deptcode"]; if (this.Request.Files.Count > 0) { try { var book = new Workbook(this.Request.Files[0].InputStream); var sheet = book.Worksheets[0]; var result = new List <RiskFactorSetEntity>(); var items = new List <RiskFactorSetEntity>(); for (int i = 2; i <= sheet.Cells.MaxDataRow; i++) { var riskFactorSetEntity = new RiskFactorSetEntity(); riskFactorSetEntity.Content = sheet.Cells[i, 0].StringValue; if (string.IsNullOrEmpty(riskFactorSetEntity.Content.Trim())) { throw new ArgumentException("第" + (i + 1) + "行,危险因素不能为空"); } //riskFactorSetEntity.DeptId = deptid; riskFactorSetEntity.measures = new List <MeasureSetEntity>(); for (int j = 1; j <= sheet.Cells.MaxDataColumn; j++) { if (!string.IsNullOrEmpty(sheet.Cells[i, j].StringValue)) { var measure = new MeasureSetEntity() { Content = sheet.Cells[i, j].StringValue }; riskFactorSetEntity.measures.Add(measure); } } result.Add(riskFactorSetEntity); int measuresNum = riskFactorSetEntity.measures.Where(x => x.Content.Trim().Length > 0).Count(); if (measuresNum < 1) { throw new ArgumentException("第" + (i + 1) + "行,防范措施至少填写一项"); } } var ary = deptid.Split(','); foreach (var item in ary) { foreach (var item1 in result) { var rk = new RiskFactorSetEntity() { Content = item1.Content, DeptId = item, measures = new List <MeasureSetEntity>() }; foreach (var item2 in item1.measures) { rk.measures.Add(new MeasureSetEntity() { Content = item2.Content }); } items.Add(rk); } } foreach (var item in items) { riskFactorSetBLL.SaveForm(item); } } catch (CellsException e) { success = false; message = "请选择正确的导入文件"; } catch (Exception e) { success = false; message = e.Message; } } return(Json(new AjaxResult() { type = success ? ResultType.success : ResultType.error, message = message })); }
/// <summary> /// 新增一条防范措施 /// </summary> /// <param name="entity"></param> public void Insert(MeasureSetEntity entity) { service.Insert(entity); }
/// <summary> /// 保存危险因素及防范措施 /// </summary> /// <param name="entity"></param> public void SaveForm(RiskFactorSetEntity entity) { var res = DbFactory.Base().BeginTrans(); try { Repository <RiskFactorSetEntity> resRiskFactorSet = new Repository <RiskFactorSetEntity>(DbFactory.Base()); //当前班组下,此危险因素是否存在 RiskFactorSetEntity riskFactorSetEntity = null; if (!string.IsNullOrEmpty(entity.ID)) { riskFactorSetEntity = resRiskFactorSet.FindEntity(x => x.ID == entity.ID); } else { riskFactorSetEntity = resRiskFactorSet.FindEntity(x => x.Content == entity.Content && x.DeptId == entity.DeptId); } if (riskFactorSetEntity == null) { //新增 entity.Create(); res.Insert(entity); //防范措施处理 if (entity.measures != null && entity.measures.Count > 0) { for (int i = 0; i < entity.measures.Count; i++) { var m = entity.measures[i]; m.ID = Guid.NewGuid().ToString(); m.CreateDate = DateTime.Now; m.RiskFactorId = entity.ID; m.Sort = i; res.Insert(m); } } } else { //编辑 riskFactorSetEntity.Modify(riskFactorSetEntity.ID); riskFactorSetEntity.Content = entity.Content; riskFactorSetEntity.DeptId = entity.DeptId; riskFactorSetEntity.DeptName = entity.DeptName; this.BaseRepository().Update(riskFactorSetEntity); //如果有需要删除的防范措施 if (entity.measureids != null && entity.measureids.Count > 0) { foreach (string measureid in entity.measureids) { res.Delete <MeasureSetEntity>(measureid); } } //防范措施处理 if (entity.measures != null && entity.measures.Count > 0) { var sort = 0; //取防范措施个数 Repository <MeasureSetEntity> measureSet = new Repository <MeasureSetEntity>(DbFactory.Base()); var ss = measureSet.IQueryable().Where(t => t.RiskFactorId == riskFactorSetEntity.ID).ToList(); if (ss.Count > 0) { sort = ss.Max(x => x.Sort).Value; } for (int i = 0; i < entity.measures.Count; i++) { var m = entity.measures[i]; if (string.IsNullOrEmpty(m.ID)) { sort++; m.ID = Guid.NewGuid().ToString(); m.CreateDate = DateTime.Now; m.RiskFactorId = riskFactorSetEntity.ID; m.Sort = sort; res.Insert(m); } else { MeasureSetEntity measureSetEntity = measureSet.FindEntity(m.ID); measureSetEntity.Content = m.Content; res.Update(measureSetEntity); } } var removed = ss.Where(x => !entity.measures.Any(y => y.ID == x.ID)).ToList(); measureSet.Delete(removed); } else { //如果防范措施为0,且keyValue不是空,则说明是编辑时,删除了所有的防范措施,这时危险因素也删除 if (!string.IsNullOrEmpty(entity.ID)) { res.Delete <RiskFactorSetEntity>(entity.ID); } } } res.Commit(); } catch (Exception ex) { res.Rollback(); throw ex; } }