/* *所有关于Dt_materielinfo类的业务代码应在此处编写 *可使用repository.调用常用方法,获取EF/Dapper等信息 *如果需要事务请使用repository.DbContextBeginTransaction *也可使用DBServerProvider.手动获取数据库相关信息 *用户信息、权限、角色等使用UserContext.Current操作 *Dt_materielinfoService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter */ using WIDESEA.Core.BaseProvider; using WIDESEA.Core.Extensions.AutofacManager; using WIDESEA.Entity.DomainModels; using System.Linq; using WIDESEA.Core.Utilities; using System.Linq.Expressions; using WIDESEA.Core.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.Http; using WIDESEA.Services.IRepositories; using System; using WIDESEA.Core.ManageUser; using WIDESEA.Core.Enums; using WIDESEA.Core.Services; using System.Threading.Tasks; using Newtonsoft.Json; using System.Collections.Generic; using Microsoft.Extensions.Caching.Memory; using WIDESEA.Services.Repositories; using WIDESEA_Common.LogEnum; namespace WIDESEA.Services.Services { public partial class Dt_materielinfoService { private readonly IHttpContextAccessor _httpContextAccessor; private readonly IDt_materielinfoRepository _repository;//访问数据库 [ActivatorUtilitiesConstructor] public Dt_materielinfoService( IDt_materielinfoRepository dbRepository, IHttpContextAccessor httpContextAccessor ) : base(dbRepository) { _httpContextAccessor = httpContextAccessor; _repository = dbRepository; //多租户会用到这init代码,其他情况可以不用 //base.Init(dbRepository); } public override WebResponseContent Add(SaveModel saveDataModel) { WebResponseContent content = new WebResponseContent(); try { string suitMateriel = saveDataModel.MainData["materiel_suitMateriel"].ToString(); try { string[] array = suitMateriel.Split(','); } catch { return content.Error("适用车型格式错误。"); } saveDataModel.MainData["materiel_createtime"] = DateTime.Now; saveDataModel.MainData["materiel_creator"] = UserContext.Current.UserTrueName; saveDataModel.MainData["materiel_areaid"] = 1; saveDataModel.MainData["materiel_state"] = "Normal"; //saveDataModel.MainData["materiel_type"] = "A1001"; string materelId = saveDataModel.MainData["materiel_id"].ToString(); if (repository.Exists(x => x.materiel_id == materelId)) return content.Error("当前车型已存在,请勿重复添加."); content = base.Add(saveDataModel); } catch (Exception ex) { content.Error("添加车型失败:" + ex.Message); } finally { if (content.Status) content.OK("添加车型成功."); else content.Error("添加车型失败:" + content.Message); } return content; } public override WebResponseContent Update(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { saveModel.MainData["materiel_creator"] = UserContext.Current.UserTrueName; saveModel.MainData["materiel_createtime"] = DateTime.Now; content = base.Update(saveModel); } finally { if (content.Status) content.OK("修改车型成功."); else content.Error("修改车型失败:" + content.Message); } return content; } public override WebResponseContent Del(object[] keys, bool delList = true) { List listKeys = new List(); foreach (var item in keys) { listKeys.Add(Guid.Parse(item.ToString())); } List listMateriel = repository.Find(r => listKeys.Contains(r.materiel_pkid)); string[] listMaterielId = listMateriel.Select(r => r.materiel_id).ToArray(); if (listMaterielId.Contains("100")) return WebResponseContent.Instance.Error($"空托盘不能删除,不能删除。"); Dt_container_detail container = Dt_container_detailRepository.Instance.FindFirst(x => listMaterielId.Contains(x.containerdtl_materielid)); if (null != container) return WebResponseContent.Instance.Error($"当前库存存在车型{container.containerdtl_materielid},不能删除。"); LogRecord.WriteLog((int)LogEnum.System, $"{DateTime.Now + UserContext.Current.UserTrueName}->车型删除:" + listMateriel.Serialize()); //todo 将删除物料添加到历史记录 return base.Del(keys, delList); } public async Task GetValueByKey(SaveModel saveModel) { return await Task.Run(() => { Dt_materielinfo info = repository.FindFirst(x => x.materiel_id == saveModel.MainData["materiel_id"].ToString()); return new WebResponseContent { Status = true, Data = JsonConvert.SerializeObject(new { key = info.materiel_id, value = info.materiel_name }) }; }); } public async Task GetKeyValue() { return await Task.Run(() => { List infos = repository.Find(x => true); Dictionary pairs = new Dictionary(); for (int i = 0; i < infos.Count; i++) { pairs.Add(infos[i].materiel_id, infos[i].materiel_name); } return new WebResponseContent { Status = true, Data = pairs }; }); } } }