using System.Data; using YLErp.Commons; using YLErp.Core.DBModels; using YLErp.Model; using YLErp.Modules; namespace YLErp.BLL { public class SuperviseUndelryingBLL : YLBaseService { public SuperviseUndelryingBLL(OptUserInfo userInfo) : base(userInfo) { } private readonly YLContext db = new YLContext(); /// /// 查询所有报送标的代码 /// /// /// public List GetAll(Supervise_UndelryingReq req) { var undelrying = req.undelrying.TrimToNull(); var query = (from source in db.supervise_undelrying where undelrying == null || source.undelrying.Contains(undelrying) select source).AsQueryable().ToList(); return query; } /// /// 批量删除监管报送参数 /// public void DeleteSuperviseUndelryings(IEnumerable superviseUndelryingIds) { var superviseUndelryingIdList = superviseUndelryingIds.ToList(); var superviseUndelryingList = DbContext.supervise_undelrying.Where(O => superviseUndelryingIdList.Contains(O.id)).ToList(); DbContext.supervise_undelrying.RemoveRange(superviseUndelryingList); DbContext.SaveChanges(); } /// /// excel导入监管报送参数 /// /// /// /// public ImportResultModel superviseUndelryingImportFromExcel(Stream streamIn) { var importModels = Enumerable.Empty(); var rowIndex = 0; try { var ds = Office.ExcelHelper.ReadExcelAsDataSet(streamIn); if (ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1) { throw new ServiceException("读取导入数据失败:数据为空") { Tag = "111" }; } var table = ds.Tables[0]; var reader = new DataRowReader(table); var list = new List(); rowIndex = 1; foreach (DataRow row in table.Rows) { rowIndex++; if (row.ItemArray.All(n => string.IsNullOrWhiteSpace(n?.ToString()))) { continue; } reader.SetDataRow(row); var ul = reader.GetString("代码", false); //代码为空时,跳过这条数据 if (string.IsNullOrEmpty(ul)) { continue; } var ul_cfmmc = reader.GetString("报送代码CFMMC", false); var model = list.FirstOrDefault(n => n.undelrying == ul); if (model == null) { model = new ImportModel { undelrying = ul, undelrying_CFMMC = ul_cfmmc, }; list.Add(model); } else { model.undelrying = ul; model.undelrying_CFMMC = ul_cfmmc; } } importModels = list.ToArray(); } catch (ServiceException se) { if (se.Tag != null) throw; throw new ServiceException($"第{rowIndex}行,发生错误:{se.Message}"); } catch (Exception ex) { LogFactory.GetLogger("导入监管报送参数").Error(ex); throw new ServiceException($"第{rowIndex}行,发生错误:{ex.Message}", ex); } if (!importModels.Any()) { throw new ServiceException("没有可导入的数据"); } var result = new ImportResultModel { TotalCount = importModels.Count() }; foreach (var item in importModels) { var underlying = item.undelrying; var superviseUndelrying = DbContext.supervise_undelrying.FirstOrDefault(n => n.undelrying == underlying); if (superviseUndelrying == null) { DbContext.supervise_undelrying.Add(new supervise_undelrying { undelrying = item.undelrying, undelrying_CFMMC = item.undelrying_CFMMC, CreateTime = DateTime.Now }); result.SuccessCount++; } else { superviseUndelrying.undelrying_CFMMC = item.undelrying_CFMMC; result.SuccessCount++; } } DbContext.SaveChanges(); return result; } class ImportModel { public string undelrying { get; set; } public string undelrying_CFMMC { get; set; } } } }