| | |
| | | _wmsInOutStockRecordRepository = wmsInOutStockRecordRepository; |
| | | } |
| | | |
| | | /// 动态构造查询条件 |
| | | /// </summary> |
| | | /// <param name="input">输入参数</param> |
| | | /// <returns></returns> |
| | | private FunReturnResultModel<Expression<Func<WmsPlace, bool>>> DynamicGetQueryPlaceParams(GetWmsPlaceInput input) |
| | | { |
| | | // 动态构造查询条件 |
| | | var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsPlace, GetWmsPlaceInput>(input); |
| | | if (!whereConditions.IsSuccess) |
| | | { |
| | | throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); |
| | | } |
| | | |
| | | //也可再次自定义构建查询条件 |
| | | Expression<Func<WmsPlace, bool>> extendExpression = a => a.IsDeleted == false; |
| | | // 使用 System.Linq.PredicateBuilder 的 And |
| | | var pres = (System.Linq.Expressions.Expression<Func<WmsPlace, bool>>)(whereConditions.data); |
| | | whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); |
| | | |
| | | return whereConditions; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查找空库位 |
| | |
| | | // 1. 获取所有库存和库位信息 |
| | | var stockList = await _wmsMaterialStockRepository.GetListAsync(whereConditions); |
| | | |
| | | var placeList = await _wmsPlaceRepository.GetListAsync(new WmsPlace { StorageTypeNo = Domain.Shared.Enums.PlaceTypeEnum.YUANLIAOKUWEI }); |
| | | var placeConditions = DynamicGetQueryPlaceParams(new GetWmsPlaceInput { StorageTypeNo = (int)PlaceTypeEnum.YUANLIAOKUWEI }); |
| | | |
| | | var placeList = await _wmsPlaceRepository.GetListByFilterAsync(placeConditions.data); |
| | | var allPlaceList = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(placeList.Where(x => !x.IsDisabled).ToList()); |
| | | |
| | | // 2. 查找相同物料型号和编号的库存(按库存量降序) |
| | |
| | | { |
| | | var record = new WmsInOutStockRecord |
| | | { |
| | | TaskNo = input.TaskNo, |
| | | TaskNo = string.IsNullOrEmpty(input.OrderNo) ? "Task_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") : input.OrderNo, |
| | | OrderNo = input.OrderNo, |
| | | StockType = StockTypeEnum.Move, |
| | | ContainerNo = item.ContainerNo, |
| | |
| | | { |
| | | var record = new WmsInOutStockRecord |
| | | { |
| | | TaskNo = input.TaskNo, |
| | | TaskNo = string.IsNullOrEmpty(input.OrderNo) ? "Task_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") : input.OrderNo, |
| | | OrderNo = input.OrderNo, |
| | | StockType = StockTypeEnum.Move, |
| | | ContainerNo = item.ContainerNo, |