using AutoMapper; using Microsoft.Extensions.Logging; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using wms.dataservice.IDataSetvice; using wms.dto.request.sx; using wms.dto.response; using wms.dto.response.sx; using wms.service.IService; using wms.sqlsugar; using wms.sqlsugar.model; using wms.sqlsugar.model.sx; namespace wms.service.Service { public class SXService: ISXService { private readonly IMapper _mapper; private readonly ILogger _logger; private readonly ISXDataService _sxtDataService; public SXService(IMapper mapper, ILogger logger, ISXDataService sxtDataService) { _mapper = mapper; _logger = logger; _sxtDataService = sxtDataService; } Repository _docrepository => new Repository(); Repository _sxBaseContainer => new Repository(); Repository _sysconfigrepository => new Repository(); Repository _materrepository => new Repository(); Repository _billTaskrepository => new Repository(); Repository _baseWareHouserepository => new Repository(); Repository _baseWareLocationrepository => new Repository(); Repository _billBarcoderepository => new Repository(); Repository _billFbackPushrepository => new Repository(); Repository _billGroupStockrepository => new Repository(); Repository _billTaskHistoryrepository => new Repository(); Repository _sysJobrepository => new Repository(); Repository _sysJobApirepository => new Repository(); Repository _sxBillInvFlow => new Repository(); Repository _sxBillTaskDetail => new Repository(); Repository _sxBillLocationMap => new Repository(); ITenant _db => SqlSugarHelper.Db;//处理事务 /// /// 添加单据 /// /// public bool Add(sxBillDocument data1) { try { _db.BeginTran(); _docrepository.Insert(data1); _db.CommitTran(); } catch (Exception) { _db.RollbackTran(); throw; } return true; } /// /// 获取配置内容信息 /// /// 配置表code值 /// public string GetSysConfigContentByCode(string code) { //先读缓存 var cacheContent = RedisHelper.Get("sys_config" + code); if (!string.IsNullOrEmpty(cacheContent)) { return cacheContent; } var sysconf = _sysconfigrepository.GetSingle(p => p.Code == code); if (sysconf == null) { throw new Exception("数据表没有配置" + code); } var content = sysconf.SContent; string sysname = sysconf.Default1;//所属系统mes/erp RedisHelper.Set("sys_config" + code, content + "|" + sysname); return content; } /// /// 获取配置信息 /// /// /// public sxSysConfig GetSysConfigByCode(string code) { //Repository _billdtrepository = new Repository(); return _sysconfigrepository.GetSingle(p => p.Code == code); } /// /// 获取物料信息 /// /// /// public sxBaseMater GetBaseMaterByExpression(Expression> WhereExpression) { return _materrepository.GetSingle(WhereExpression); } /// /// 获取配置信息 /// /// /// public sxSysConfig GetSysConfigByExpression(Expression> WhereExpression) { return _sysconfigrepository.GetSingle(WhereExpression); } /// /// 获取单据信息 /// /// /// public sxBillDocument GetBillDocumentByExpression(Expression> WhereExpression) { return _docrepository.GetSingle(WhereExpression); } /// /// 获取反馈信息 /// /// /// public List GetBillFeedbackList(Expression> WhereExpression) { return _billFbackPushrepository.GetList(WhereExpression); } ///// ///// 获取单据信息 ///// ///// ///// //public sxBillDocument GetBillDocumentList(Expression> WhereExpression) //{ // return _billdtrepository.Context.Queryable((doc, conf) => new object[] { // JoinType.Left, doc.BState == conf.Code // }).Where((doc, conf) => doc.Status == 0) // .Select((bc, bm) => bc).First(); //} /// /// 更新SysConfig表字段 /// /// /// public bool UpdateSysConfigModelColumns(UpdateModelColumns updateModel) { return _sysconfigrepository.Update(updateModel.Columns, updateModel.WhereExpression); } public bool SyncMaterInfo(List ResData) { foreach (var item in ResData) { if (_materrepository.IsAny(p => p.Code == item.MatCode)) { _materrepository.UpdateModelColumns(p => new sxBaseMater() { IsHold = item.IsHold, HoldDuration = item.HoldDuration }, p => p.Code == item.MatCode); } else { var model = _mapper.Map(item); _materrepository.Insert(model); } } return true; } public SRes SpoolMaterialInfoTrans(SxSpoolMaterialInfoTransRequest reqDto) { var result = new SRes(); return result; } public SRes StockChange(SxStockChangeRequest reqDto) { var result = new SRes(); return result; } } }