using AutoMapper; using DTO; using IServices; using System; using System.Collections.Generic; using System.Linq; using System.Text; using zhengcaioa.Models; namespace Services { public class SysCodeService: ISysCodeService { private readonly zhengcaioaContext _context; private readonly IMapper _mapper; public SysCodeService(zhengcaioaContext context, IMapper mapper) { _context = context; _mapper = mapper; } /// /// 分页查询 /// /// 查询分页实体 /// public ResultDataEntity SearchSysCodePaging(SysCodeSearchEntity searchEntity) { ResultDataEntity data = new ResultDataEntity(); var listCode = _context.SysCodes.Where(s => (searchEntity.CodeTable == "" ? true : s.CodeTable == searchEntity.CodeTable) && (searchEntity.CodeField == "" ? true : s.CodeField == searchEntity.CodeField) && (searchEntity.Comments == "" ? true : s.Comments.Contains(searchEntity.Comments)) && (searchEntity.RecStatus == "" ? s.RecStatus == "A" : s.RecStatus == searchEntity.RecStatus) ).ToList(); //if (searchEntity.totalrows == 0) //{ //获取总数 searchEntity.totalrows = listCode.Count; //} var list = listCode.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList(); var listSysCode = new List(); if (list.Count > 0) { list.ForEach(l => { listSysCode.Add(new SysCodeEntity() { Id = l.Id, CodeField = l.CodeField, CodeTable = l.CodeTable, Comments = l.Comments, Creater = l.Creater, Createtime = l.Createtime, RecStatus = l.RecStatus, Modifier = l.Modifier, Modifytime = l.Modifytime, CreatetimeStr = l.Createtime.ToString(), RecStatusName = l.RecStatus.ToString().Equals("A") ? "启用" : "停用", Url = "/SysCode/Edit?id=" + l.Id }); }); } data.LoadData(searchEntity, listSysCode); return data; } /// /// 按照编号查询数据 /// /// 需要查询key_id /// public SysCodeInfoEntity GetSysCodeInfo(string key_id) { var infoEntity = new SysCodeInfoEntity(); infoEntity.Result = true; //主表数据查询 var model = _context.SysCodes.Find(key_id); if (model.RecStatus != "A") { model = new SysCode(); } if (model == null || model.Id == null || model.Id == "") { infoEntity.Result = true; infoEntity.Message = "无法查询到数据"; } else { infoEntity.SysCode = new SysCodeEntity() { Id = model.Id, CodeField = model.CodeField, CodeTable = model.CodeTable, Comments = model.Comments, Creater = model.Creater, Createtime = model.Createtime, RecStatus = model.RecStatus, Modifier = model.Modifier, Modifytime = model.Modifytime, CreatetimeStr = model.Createtime.ToString(), RecStatusName = model.RecStatus.ToString().Equals("A") ? "启用" : "停用", Url = "/SysCode/Edit?id=" + model.Id }; var listdtl = _context.SysCodeDtls.Where(d => d.CodeId == key_id).OrderBy(x=>x.Sort).ToList(); var alldtl = new List(); if (listdtl.Count > 0) { listdtl.ForEach(l => { alldtl.Add(new SysCodeDtlEntity() { Id = l.Id, CodeId = l.CodeId, CodeSn = l.CodeSn, Comments = l.Comments, Contents = l.Contents, Sort = l.Sort, RecStatus = l.RecStatus, Creater = l.Creater, Createtime = l.Createtime, Modifier = l.Modifier, Modifytime = l.Modifytime }); }); } infoEntity.SysCodeDtlList = alldtl.Where(d => d.RecStatus == "A").ToList(); //隐码明细表 //infoEntity.DellDtlList = alldtl.Where(d => d.RecStatus == "D").ToList(); //隐码明细表 } return infoEntity; } public List GetCodeDataAll() { var listCode = new List(); listCode = (from a in _context.SysCodeDtls join b in _context.SysCodes on a.CodeId equals b.Id where a.RecStatus == "A" && b.RecStatus == "A" select new CodeDataEntity() { CodeId = b.Id, CodeTable = b.CodeTable, CodeField = b.CodeField, CodeSn = a.CodeSn, Comments = a.Comments, Contents = a.Contents, RecStatus = a.RecStatus, Sort = a.Sort } ).ToList(); return listCode; } public string GetComments(string codeTable, string codeField, string codeSn) { string result = string.Empty; var sysCode = _context.SysCodes.FirstOrDefault(x => x.CodeTable == codeTable && x.CodeField == codeField); if (sysCode != null) { var sysCodeDtl = _context.SysCodeDtls.FirstOrDefault(x => x.CodeId == sysCode.Id && x.CodeSn == codeSn); result = sysCodeDtl?.Comments; } return result; } /// /// 保存 /// /// 主键ID为0时新增否则修改 /// 返回执行结果 public ResultEntity SaveSysCode(SysCodeInfoEntity Entity) { var resultEntity = new ResultEntity(); var model = new SysCode() { Id = Entity.SysCode.Id, CodeTable = Entity.SysCode.CodeTable + "", CodeField = Entity.SysCode.CodeField + "", Comments = Entity.SysCode.Comments + "", RecStatus = Entity.SysCode.RecStatus + "", Creater = Entity.SysCode.Creater, Createtime = Entity.SysCode.Createtime, Modifier = Entity.SysCode.Modifier, Modifytime = Entity.SysCode.Modifytime }; //事务 resultEntity.Result = true; try { if (!string.IsNullOrEmpty(model.Id)) { var mModel = _context.SysCodes.Find(model.Id); if (mModel != null) { mModel.CodeField = model.CodeField; mModel.CodeTable = model.CodeTable; mModel.Comments = model.Comments; mModel.RecStatus = model.RecStatus; mModel.Modifier = model.Modifier; mModel.Modifytime = model.Modifytime; if (Entity.SysCodeDtlList.Count > 0) { Entity.SysCodeDtlList.ForEach(s => { if (string.IsNullOrEmpty(s.Id)) { _context.SysCodeDtls.Add(new SysCodeDtl() { Id = Guid.NewGuid().ToString(), CodeSn = s.CodeSn + "", CodeId = model.Id, Comments = s.Comments + "", Contents = s.Contents + "", RoleId = "", Sort = s.Sort, RecStatus = "A", Creater = model.Modifier, Createtime = model.Modifytime, Modifier = model.Modifier, Modifytime = model.Modifytime }); } else { var mDt = _context.SysCodeDtls.Find(s.Id); if (mDt != null) { mDt.CodeSn = s.CodeSn; mDt.Comments = s.Comments; mDt.Contents = s.Contents; mDt.Modifier = s.Modifier; mDt.Modifytime = s.Modifytime; mDt.Sort = s.Sort; } } }); } } } else { model.Id = Guid.NewGuid().ToString(); _context.SysCodes.Add(model); if (Entity.SysCodeDtlList.Count > 0) { Entity.SysCodeDtlList.ForEach(s => { _context.SysCodeDtls.Add(new SysCodeDtl() { Id = Guid.NewGuid().ToString(), CodeSn = s.CodeSn + "", RoleId = "", CodeId = model.Id, Comments = s.Comments + "", Contents = s.Contents + "", Sort = s.Sort, RecStatus = "A", Creater = model.Modifier, Createtime = model.Modifytime, Modifier = model.Modifier, Modifytime = model.Modifytime }); }); } } _context.SaveChanges(); } catch (Exception ex) { resultEntity.Message = "信息保存失败,请联系管理人员。" + ex.Message; ; resultEntity.Result = false; } return resultEntity; } /// /// 删除明细 /// /// 主id /// 明细id /// 用户 /// public ResultEntity ModifyDtlStatus(string id, string dtlid, string userid) { ResultEntity result = new ResultEntity(); result.Result = true; //if (id.Equals(-99)) //{ // result.Result = false; // result.Message = "该条明细数据不能删除"; // return result; //} try { string edit = "D"; var data = _context.SysCodeDtls.Find(dtlid); if (data == null) { return new ResultEntity { Result = false, Message = "未找到需要操作的数据" }; } if (data.RecStatus == "D") { edit = "A"; } data.RecStatus = edit; data.Modifier = userid; data.Modifytime = DateTime.Now; _context.SaveChanges(); } catch (Exception ex) { result.Result = false; result.Message = ex.Message; } return result; } /// /// 修改主表状态 /// /// 主id /// 用户 /// public ResultEntity ModifyStatus(string id, string userid) { ResultEntity result = new ResultEntity(); result.Result = true; var model = _context.SysCodes.Find(id); if (model != null) { model.RecStatus = "D"; model.Modifier = userid; model.Modifytime = DateTime.Now; _context.SaveChanges(); } return result; } /// /// 获取隐码所有列表 /// /// table /// fild /// public List GetSysCodeList(string table, string fild) { List dtlList = new List(); var model = _context.SysCodes.FirstOrDefault(s => s.CodeTable == table && s.CodeField == fild); if (model != null) { dtlList = _context.SysCodeDtls.Where(s => s.CodeId == model.Id).ToList(); } return dtlList; } /// /// 分页查询 /// /// 查询分页实体 /// public ResultDataEntity SearchSysCodeDtlPaging(SysCodeDtlSearchEntity searchEntity) { ResultDataEntity data = new ResultDataEntity(); var listCode = (from a in _context.SysCodeDtls.Where(x => x.RecStatus == "A") join b in _context.SysCodes.Where(x=>x.RecStatus=="A") on a.CodeId equals b.Id where b.CodeTable == searchEntity.CodeTable && b.CodeField == searchEntity.CodeField && (string.IsNullOrWhiteSpace(searchEntity.Comments) ? true : a.Comments.Contains(searchEntity.Comments)) && (string.IsNullOrWhiteSpace(searchEntity.CodeSn) ? true : a.CodeSn.Contains(searchEntity.CodeSn)) && (string.IsNullOrWhiteSpace(searchEntity.Contents) ? true : a.Contents.Contains(searchEntity.Contents)) && (string.IsNullOrWhiteSpace(searchEntity.WentiId) ? true : a.Contents == searchEntity.WentiId) && (string.IsNullOrWhiteSpace(searchEntity.Classify1) ? true : a.Classify1.Contains(searchEntity.Classify1)) select a ).OrderBy(x=>x.Sort).ToList(); if (!string.IsNullOrEmpty(searchEntity.Sort)) { listCode = listCode.OrderBy(x => x.CodeSn).ToList(); } else if (!string.IsNullOrEmpty(searchEntity.Sort1)) { listCode = listCode.OrderBy(x => x.Classify1).ThenBy(x=>x.CodeSn).ToList(); } //if (searchEntity.totalrows == 0) //{ //获取总数 searchEntity.totalrows = listCode.Count; //} var list = listCode.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList(); var listSysCode = new List(); if (list.Count > 0) { list.ForEach(l => { listSysCode.Add(new SysCodeDtlEntity() { Id = l.Id, CodeSn = l.CodeSn, CodeId = l.CodeId, Comments = l.Comments, Contents = l.Contents, Sort = l.Sort, Classify1 = l.Classify1, Classify2 = l.Classify2, Creater = l.Creater, Createtime = l.Createtime, RecStatus = l.RecStatus, Modifier = l.Modifier, Modifytime = l.Modifytime, CreatetimeStr = l.Createtime.ToString(), RecStatusName = l.RecStatus.ToString().Equals("A") ? "启用" : "停用", }); }); } data.LoadData(searchEntity, listSysCode); return data; } public SysCodeDtlEntity GetSysCodeDtlInfo(string key_id, string CodeTable, string CodeField, string WentiId = "") { var alldtl = new SysCodeDtlEntity(); var model = _context.SysCodeDtls.Find(key_id); if (model != null) { alldtl.Id = model.Id; alldtl.CodeId = model.CodeId; alldtl.CodeSn = model.CodeSn; alldtl.Comments = model.Comments; alldtl.Contents = model.Contents; alldtl.Sort = model.Sort; alldtl.RecStatus = model.RecStatus; alldtl.Creater = model.Creater; alldtl.Createtime = model.Createtime; alldtl.Modifier = model.Modifier; alldtl.Modifytime = model.Modifytime; alldtl.Classify1 = model.Classify1; alldtl.CreatetimeStr = model.Createtime.ToString(); alldtl.RecStatusName = model.RecStatus.ToString().Equals("A") ? "启用" : "停用"; } else { var syscode = _context.SysCodes.Where(x => x.RecStatus == "A" && x.CodeTable == CodeTable && x.CodeField == CodeField).FirstOrDefault(); if (syscode != null) { alldtl.Contents = WentiId; alldtl.CodeId = syscode.Id; } } return alldtl; } public List GetSysCodeDtlInfoss(string Classify1, string CodeTable, string CodeField, string WentiId = "") { List sysCodeDtlEntities = new List(); var models = _context.SysCodeDtls.Where(x => x.Classify1 == Classify1).OrderBy(x=>x.CodeSn).ToList(); ; if (models != null&& models.Count>0) { foreach (var model in models) { var alldtl = new SysCodeDtlEntity(); alldtl.Id = model.Id; alldtl.CodeId = model.CodeId; alldtl.CodeSn = model.CodeSn; alldtl.Comments = model.Comments; alldtl.Contents = model.Contents; alldtl.Sort = model.Sort; alldtl.RecStatus = model.RecStatus; alldtl.Creater = model.Creater; alldtl.Createtime = model.Createtime; alldtl.Modifier = model.Modifier; alldtl.Modifytime = model.Modifytime; alldtl.Classify1 = model.Classify1; alldtl.Classify2 = model.Classify2; alldtl.CreatetimeStr = model.Createtime.ToString(); alldtl.RecStatusName = model.RecStatus.ToString().Equals("A") ? "启用" : "停用"; sysCodeDtlEntities.Add(alldtl); } } else { var alldtl = new SysCodeDtlEntity(); var syscode = _context.SysCodes.Where(x => x.RecStatus == "A" && x.CodeTable == CodeTable && x.CodeField == CodeField).FirstOrDefault(); if (syscode != null) { alldtl.Contents = WentiId; alldtl.CodeId = syscode.Id; } alldtl.Classify1 = Classify1; sysCodeDtlEntities.Add(alldtl); } return sysCodeDtlEntities; } public ResultEntity SaveSysCodeDtl(SysCodeDtlEntity Entity) { var resultEntity = new ResultEntity(); //事务 resultEntity.Result = true; try { if (!string.IsNullOrEmpty(Entity.CodeSn)) { var list = _context.SysCodeDtls.Where(e => e.CodeSn == Entity.CodeSn && e.RecStatus == "A" && e.Id != Entity.Id && e.CodeId == Entity.CodeId).ToList(); if (list.Count > 0) { resultEntity.Result = false; resultEntity.Message = "该编码已经存在"; return resultEntity; } } if (!string.IsNullOrEmpty(Entity.Id)) { var mModel = _context.SysCodeDtls.Find(Entity.Id); if (mModel != null) { mModel.CodeSn = Entity.CodeSn + ""; mModel.RoleId = ""; mModel.CodeId = Entity.CodeId; mModel.Comments = Entity.Comments + ""; mModel.Contents = Entity.Contents + ""; mModel.Sort = Entity.Sort; mModel.RecStatus = "A"; mModel.Classify1 = Entity.Classify1; mModel.Modifier = Entity.Modifier; mModel.Modifytime = Entity.Modifytime; } } else { _context.SysCodeDtls.Add(new SysCodeDtl() { Id = Guid.NewGuid().ToString(), CodeSn = Entity.CodeSn + "", RoleId = "", CodeId = Entity.CodeId, Comments = Entity.Comments + "", Contents = Entity.Contents + "", Sort = Entity.Sort, RecStatus = "A", Creater = Entity.Modifier, Createtime = Entity.Modifytime, Modifier = Entity.Modifier, Modifytime = Entity.Modifytime, Classify1 = Entity.Classify1, }); } _context.SaveChanges(); } catch (Exception ex) { resultEntity.Message = "信息保存失败,请联系管理人员。" + ex.Message; ; resultEntity.Result = false; } return resultEntity; } public ResultEntity SaveSysCodeDtls(SysCodeDtlEntity Entity) { var resultEntity = new ResultEntity(); //事务 resultEntity.Result = true; try { var sysCodeDtls = _context.SysCodeDtls.Where(x => x.RecStatus == "A" && x.CodeId == Entity.CodeId && x.Classify1 == Entity.Classify1).ToList(); if (sysCodeDtls != null && sysCodeDtls.Count > 0) { foreach (var sysCodeDtl in sysCodeDtls) { _context.SysCodeDtls.Remove(sysCodeDtl); } } var CodeSns = Entity.CodeSns; if (CodeSns != null && CodeSns.Length > 0) { for (int i = 0; i < CodeSns.Length; i++) { if (!string.IsNullOrEmpty(Entity.CodeSns[i]) || !string.IsNullOrEmpty(Entity.Commentss[i]) ) { _context.SysCodeDtls.Add(new SysCodeDtl() { Id = Guid.NewGuid().ToString(), CodeSn = Entity.CodeSns[i], RoleId = "", CodeId = Entity.CodeId, Comments = Entity.Commentss[i], Contents = Entity.Contentss[i], Sort = Entity.Sorts[i], RecStatus = "A", Creater = Entity.Modifier, Createtime = Entity.Modifytime, Modifier = Entity.Modifier, Modifytime = Entity.Modifytime, Classify1 = Entity.Classify1, Classify2 = Entity.Classify2s[i], }); } } } _context.SaveChanges(); } catch (Exception ex) { resultEntity.Message = "信息保存失败,请联系管理人员。" + ex.Message; ; resultEntity.Result = false; } return resultEntity; } public ResultEntity addSysCodeDtls(SysCodeDtlEntity Entity) { var resultEntity = new ResultEntity(); //事务 resultEntity.Result = true; resultEntity.ReturnID = ""; try { //var sysCodeDtls = _context.SysCodeDtls.Where(x => x.RecStatus == "A" && x.CodeId == Entity.CodeId && x.Classify1 == Entity.Classify1).ToList(); //if (sysCodeDtls != null && sysCodeDtls.Count > 0) //{ // foreach (var sysCodeDtl in sysCodeDtls) // { // _context.SysCodeDtls.Remove(sysCodeDtl); // } //} var CodeSns = Entity.CodeSns; if (CodeSns != null && CodeSns.Length > 0) { for (int i = 0; i < CodeSns.Length; i++) { if (!string.IsNullOrEmpty(Entity.CodeSns[i]) || !string.IsNullOrEmpty(Entity.Commentss[i])) { var id = Guid.NewGuid().ToString(); _context.SysCodeDtls.Add(new SysCodeDtl() { Id = id, CodeSn = Entity.CodeSns[i], RoleId = "", CodeId = Entity.CodeId, Comments = Entity.Commentss[i], Contents = Entity.Contentss[i], Sort = Entity.Sorts[i], RecStatus = "A", Creater = Entity.Modifier, Createtime = Entity.Modifytime, Modifier = Entity.Modifier, Modifytime = Entity.Modifytime, Classify1 = Entity.Classify1, Classify2 = Entity.Classify2s[i], }); if(i == CodeSns.Length - 1) { resultEntity.ReturnID += Entity.CodeSns[i]; } else { resultEntity.ReturnID += Entity.CodeSns[i] + ","; } } } } _context.SaveChanges(); } catch (Exception ex) { resultEntity.Message = "信息保存失败,请联系管理人员。" + ex.Message; ; resultEntity.Result = false; } return resultEntity; } } }