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,
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 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;
}
}
}