schangxiang@126.com
2024-04-25 0e394ed580b09329ecaa8476bbb6334f8212b009
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
@@ -28,14 +28,18 @@
        private readonly ISysExcelTemplateService _sysExcelTemplateService;
        private readonly static object _lock = new();
        private readonly IRepository<WmsMaterialCustomer, MasterDbContextLocator> _wmsMaterialCustomerRep;
        private readonly IRepository<BaseCustomer, MasterDbContextLocator> _baseCustomerRep;
        private readonly IRepository<WmsSubstituteGood, MasterDbContextLocator> _wmsSubstituteGoodRep;
        private readonly IRepository<WmsControlRuleDetail, MasterDbContextLocator> _wmsControlRuleDetailRep;
        public WmsMaterialService(
            IRepository<WmsMaterial,MasterDbContextLocator> wmsMaterialRep
            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
            ,ISysExcelTemplateService sysExcelTemplateService
            , IRepository<WmsMaterialCustomer, MasterDbContextLocator> wmsMaterialCustomerRep
            , IRepository<BaseCustomer, MasterDbContextLocator> baseCustomerRep
            , IRepository<WmsSubstituteGood, MasterDbContextLocator> wmsSubstituteGoodRep
            , IRepository<WmsControlRuleDetail, MasterDbContextLocator> wmsControlRuleDetailRep
        )
        {
            _wmsMaterialRep = wmsMaterialRep;
@@ -43,7 +47,9 @@
         _sysDictDataRep = sysDictDataRep;
         _sysExcelTemplateService = sysExcelTemplateService;
            _wmsMaterialCustomerRep = wmsMaterialCustomerRep;
            _baseCustomerRep = baseCustomerRep;
            _wmsSubstituteGoodRep = wmsSubstituteGoodRep;
            _wmsControlRuleDetailRep = wmsControlRuleDetailRep;
        }
        /// <summary>
        /// 分页查询物料信息
@@ -156,9 +162,39 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("WmsMaterial/detail")]
        public async Task<WmsMaterialOutput> Get([FromQuery] QueryeWmsMaterialInput input)
        public async Task<WmsMaterialInfoOutput> Get([FromQuery] QueryeWmsMaterialInput input)
        {
            return (await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
            WmsMaterialInfoOutput resultInfo = new WmsMaterialInfoOutput();
            //获取物料信息
            var wmsMaterialInfo =(await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
            //获取替换物料信息
            var wmsSubstituteGoods = await _wmsSubstituteGoodRep.DetachedEntities
                                         .Where(u => u.MaterialCode == wmsMaterialInfo.MaterialName)
                                         .Where(u => u.IsDeleted == false)
                                         .Where(u => u.IsDisabled == false)
                                         .OrderBy(o => o.CreatedTime)
                                         .ProjectToType<WmsSubstituteGoodOutput>()
                                         .ToListAsync();
            //获取控制属性规则
            var wmsControlRuleDetails = await _wmsControlRuleDetailRep.DetachedEntities
                                              .Where(u => u.Id == wmsMaterialInfo.ControlRuleId)
                                              .Where(u => u.IsDeleted == false)
                                              .Where(u => u.IsDisabled == false)
                                              .OrderBy(o=>o.CreatedTime)
                                              .ProjectToType<WmsControlRuleDetailOutput>()
                                              .ToListAsync();
            //根据物料客户关联表获取往来信息
            var baseCustomers = await _baseCustomerRep.DetachedEntities.Join(_wmsMaterialCustomerRep.DetachedEntities, bc => bc.Id, mc => mc.CustId, (bc, mc) => new { bc, mc })
                                      .Where(p =>p.mc.MaterialId== wmsMaterialInfo.Id)
                                      .OrderBy(o => o.mc.CreatedTime)
                                      .ProjectToType<BaseCustomerOutput>()
                                      .ToListAsync();
            resultInfo.MaterialInfo = wmsMaterialInfo;
            resultInfo.SubstituteGoodList = wmsSubstituteGoods;
            resultInfo.ControlRuleDetailList = wmsControlRuleDetails;
            return resultInfo;
        }
        /// <summary>
@@ -220,6 +256,10 @@
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            foreach (var item in substituteGoodList)
            {
                item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 要调用生成 编号的方法 先用雪花ID
            }
            wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
            wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
@@ -314,6 +354,10 @@
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            foreach (var item in substituteGoodList)
            {
                item.SubstituteCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 要调用生成 编号的方法 先用雪花ID
            }
            if (materialCustomerList?.Count > 0)
            {