using Cksoft.Data; using Cksoft.Unity; using DllEapEntity.Dtos; using DllEapEntity.OFILM; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DllEapDal.OFILM { /// /// 区域负责人 /// public class RegionChargerDal { private IDatabase CurrDb = null; public RegionChargerDal(IDatabase db) { CurrDb = db; } /// /// 获取区域负责人 /// /// /// public async Task> Get(string regionName, string factory, string plant, string chargeName) { string errorinfo = string.Empty; var sql = $@"select distinct b.fname as RegionName,b.id as RegionId,c.fname as plant,d.fname as factory from factoryregion a inner join factoryregion b on a.parentid=b.id inner join factoryregion c on b.parentid=c.id inner join factoryregion d on c.parentid=d.id where 1=1 "; if (!string.IsNullOrEmpty(regionName)) { sql += $" and b.fName like '%{regionName}%' "; } if (!string.IsNullOrEmpty(factory)) { sql += $" and d.fName like '%{factory}%' "; } if (!string.IsNullOrEmpty(plant)) { sql += $" and c.fName like '%{plant}%' "; } sql += "order by factory,plant,RegionName"; var regions = await CurrDb.FindListAsync(sql, null); IEnumerable da; if (regions != null && regions.Count() > 0) { string str = ""; if (!string.IsNullOrEmpty(chargeName)) { str =$@"and a.chargeName='{chargeName}'"; } var chargers = await CurrDb.FindListForConditionAsync(str, ref errorinfo); foreach (var item in regions) { item.ChargeName = chargers?.FirstOrDefault(c => c.RegionId == item.RegionId)?.ChargeName; item.Remark = chargers?.FirstOrDefault(c => c.RegionId == item.RegionId)?.Remark; } if (!string.IsNullOrEmpty(chargeName)) { var list = new List(); foreach (var item in regions) { if (item.ChargeName != null) list.Add(item); } da = list.AsEnumerable(); } else { da = regions; } } else { da = regions; } return new LayuiModel { count = regions?.Count() ?? 0, data = da }; } /// /// 修改负责人 /// /// /// public async Task AddOrUpdate(RegionCharger model) { string errorinfo = string.Empty; var exist = (await CurrDb.FindListForConditionAsync($" " + $"and a.regionId = {model.RegionId}", ref errorinfo)).FirstOrDefault(); if (exist != null) { exist.ChargeName = model.ChargeName; exist.Remark = model.Remark; exist.ModCode = model.ModCode; exist.ModTime = DateTime.Now; CurrDb.UpdateFor(exist, model.ModCode); } else { CurrDb.InsertFor(model, model.RecCode); } return new EapResponse { Code = 1 }; } } }