| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | 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<SXService> _logger;        private readonly ISXDataService _sxtDataService;        public SXService(IMapper mapper, ILogger<SXService> logger, ISXDataService sxtDataService)        {            _mapper = mapper;            _logger = logger;            _sxtDataService = sxtDataService;        }        Repository<sxBillDocument> _docrepository => new Repository<sxBillDocument>();        Repository<sxBaseContainer> _sxBaseContainer => new Repository<sxBaseContainer>();        Repository<sxSysConfig> _sysconfigrepository => new Repository<sxSysConfig>();        Repository<sxBaseMater> _materrepository => new Repository<sxBaseMater>();        Repository<sxBillTask> _billTaskrepository => new Repository<sxBillTask>();        Repository<sxBaseWarehouse> _baseWareHouserepository => new Repository<sxBaseWarehouse>();        Repository<sxBaseWareLocation> _baseWareLocationrepository => new Repository<sxBaseWareLocation>();        Repository<sxBillBarcode> _billBarcoderepository => new Repository<sxBillBarcode>();        Repository<sxBillFeedbackPush> _billFbackPushrepository => new Repository<sxBillFeedbackPush>();        Repository<sxBillContainer> _billGroupStockrepository => new Repository<sxBillContainer>();        Repository<sxBillTaskHistory> _billTaskHistoryrepository => new Repository<sxBillTaskHistory>();        Repository<sxSysJob> _sysJobrepository => new Repository<sxSysJob>();        Repository<sxSysJobApiRelation> _sysJobApirepository => new Repository<sxSysJobApiRelation>();        Repository<sxBillInvFlow> _sxBillInvFlow => new Repository<sxBillInvFlow>();        Repository<sxBillTaskDetail> _sxBillTaskDetail => new Repository<sxBillTaskDetail>();        Repository<sxBillLocationMap> _sxBillLocationMap => new Repository<sxBillLocationMap>();        ITenant _db => SqlSugarHelper.Db;//处理事务        /// <summary>        /// 添加单据        /// </summary>        /// <returns></returns>        public bool Add(sxBillDocument data1)        {            try            {                _db.BeginTran();                _docrepository.Insert(data1);                _db.CommitTran();            }            catch (Exception)            {                _db.RollbackTran();                throw;            }            return true;        }        /// <summary>        /// 获取配置内容信息        /// </summary>        /// <param name="code">配置表code值</param>        /// <returns></returns>        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;        }        /// <summary>        /// 获取配置信息        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public sxSysConfig GetSysConfigByCode(string code)        {            //Repository<dynamic> _billdtrepository = new Repository<dynamic>();            return _sysconfigrepository.GetSingle(p => p.Code == code);        }        /// <summary>        /// 获取物料信息        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public sxBaseMater GetBaseMaterByExpression(Expression<Func<sxBaseMater, bool>> WhereExpression)        {            return _materrepository.GetSingle(WhereExpression);        }        /// <summary>        /// 获取配置信息        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public sxSysConfig GetSysConfigByExpression(Expression<Func<sxSysConfig, bool>> WhereExpression)        {            return _sysconfigrepository.GetSingle(WhereExpression);        }        /// <summary>        /// 获取单据信息        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public sxBillDocument GetBillDocumentByExpression(Expression<Func<sxBillDocument, bool>> WhereExpression)        {            return _docrepository.GetSingle(WhereExpression);        }        /// <summary>        /// 获取反馈信息        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public List<sxBillFeedbackPush> GetBillFeedbackList(Expression<Func<sxBillFeedbackPush, bool>> WhereExpression)        {            return _billFbackPushrepository.GetList(WhereExpression);        }        ///// <summary>        ///// 获取单据信息        ///// </summary>        ///// <param name="code"></param>        ///// <returns></returns>        //public sxBillDocument GetBillDocumentList(Expression<Func<sxBillDocument, bool>> WhereExpression)        //{        //    return _billdtrepository.Context.Queryable<sxBillDocument, sxSysConfig>((doc, conf) => new object[] {        //      JoinType.Left, doc.BState == conf.Code        //    }).Where((doc, conf) => doc.Status == 0)        //    .Select((bc, bm) => bc).First();        //}        /// <summary>        /// 更新SysConfig表字段        /// </summary>        /// <param name="updateModel"></param>        /// <returns></returns>        public bool UpdateSysConfigModelColumns(UpdateModelColumns<sxSysConfig> updateModel)        {            return _sysconfigrepository.Update(updateModel.Columns, updateModel.WhereExpression);        }        public bool SyncMaterInfo(List<SXSyncMaterInfoResponseItem> 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<sxBaseMater>(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;        }    }}
 |