heshaofeng
2 小时以前 b1a419c2886666934da6499ee552516d0769562e
Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215
已修改4个文件
79 ■■■■ 文件已修改
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs
@@ -92,6 +92,9 @@
        [Description("智仓入智仓组盘暂存")]
        æ™ºä»“入智仓组盘暂存 = 15,
        [Description("盘点出库锁定")]
        ç›˜ç‚¹å‡ºåº“锁定 = 16,
        [Description("送检库存完成")]
        é€æ£€åº“存完成 = 19,
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
@@ -358,7 +358,7 @@
                _detailRepository.UpdateData(outboundOrderDetails);
                if (pickedDetails.Any())
                {
                    UpdateStockStatus(pickedDetails.Select(x => x.PalletCode).ToList(), StockStatusEmun.出库锁定.ObjToInt());
                    UpdateStockStatus(pickedDetails.Select(x => x.PalletCode).ToList(), StockStatusEmun.出库锁定.ObjToInt(),outboundOrder);
                    UpdateLocationStatus(pickedDetails.Select(x => x.LocationCode).ToList(), LocationStatusEnum.Lock.ObjToInt());
                }
                //重检单不拣选,去掉锁定记录回库,再次组盘时扣除原条码
@@ -984,11 +984,16 @@
            }
        }
        public bool UpdateStockStatus(List<string> palletCodes, int status)
        public bool UpdateStockStatus(List<string> palletCodes, int status,Dt_OutboundOrder outOrder)
        {
            try
            {
                List<Dt_StockInfo> stockInfos = _stockInfoRepository.QueryData(x => palletCodes.Contains(x.PalletCode));
                ///智仓调智仓单据记录
                if(outOrder.OrderType == 117)
                {
                    stockInfos.ForEach(stockInfo => stockInfo.Remark = outOrder.OrderNo);
                }
                stockInfos.ForEach(stockInfo => stockInfo.StockStatus = status);
                _stockInfoRepository.UpdateData(stockInfos);
                return true;
@@ -2251,6 +2256,48 @@
                    return content.Error($"未找到托盘{palletCode}库存信息不允许回库");
                }
                var task = await _taskRepository.Db.Queryable<Dt_Task>()
                    .Where(x => x.PalletCode == palletCode)
                    .FirstAsync();
                if (task != null)
                {
                    return content.Error($"托盘{palletCode}存在任务回库失败!");
                }
                // åˆ†é…æ–°è´§ä½
                var newLocation = _locationInfoService.AssignLocation(stock.LocationType);
                if (newLocation == null)
                {
                    return WebResponseContent.Instance.Error("没有空闲库位可回库");
                }
                if(stock.Remark !=null && stock.Remark != "")
                {
                    Dt_OutboundOrder outboundOrder = _outboundRepository.QueryFirst(x => x.OrderNo == stock.Remark && x.OrderType == 117 && x.OrderStatus == OutOrderStatusEnum.出库中.ObjToInt());
                    if (outboundOrder != null)
                    {
                        // 1. æ ¹æ®è®¢å•号查询调拨物料信息
                        List<Dt_AllocateMaterialInfo> allocateMaterialInfos = _allocateMaterialInfoRepository.QueryData(x => x.OrderNo == outboundOrder.OrderNo);
                        // 2. åˆ¤æ–­æ˜¯å¦å­˜åœ¨è°ƒæ‹¨ç‰©æ–™ï¼Œæ²¡æœ‰åˆ™ç›´æŽ¥è·³è¿‡æ ¡éªŒ
                        if (allocateMaterialInfos != null && allocateMaterialInfos.Any())
                        {
                            // 3. æå–所有 Barcode é›†åˆ
                            List<string> barcodes = allocateMaterialInfos.Select(x => x.Barcode).ToList();
                            // 4. æ ¹æ® Barcode æ‰¹é‡æŸ¥è¯¢åº“存明细
                            List<Dt_StockInfoDetail> stockInfoDetails = _stockDetailRepository.QueryData(x => barcodes.Contains(x.Barcode) && x.OrderNo == outboundOrder.OrderNo);
                            // 5. æ•°é‡å¯¹æ¯”:不相等 â†’ æœªå…¨éƒ¨ç»„盘完成
                            if (barcodes.Count != stockInfoDetails.Count)
                            {
                                return WebResponseContent.Instance.Error($"智仓调智仓单据{outboundOrder.OrderNo}尚未全部组盘完成,请先进行组盘再回库单据相关料箱");
                            }
                        }
                    }
                }
                if (stock.Details.Count <= 0)
                {
                    stock.PalletType = (int)PalletTypeEnum.Empty;
@@ -2354,23 +2401,6 @@
                    stock.StockStatus = (int)StockStatusEmun.入库确认;
                    stock.LocationCode = "";
                }
                var task = await _taskRepository.Db.Queryable<Dt_Task>()
                    .Where(x => x.PalletCode == palletCode)
                    .FirstAsync();
                if (task != null)
                {
                    return content.Error($"托盘{palletCode}存在任务回库失败!");
                }
                // åˆ†é…æ–°è´§ä½
                var newLocation = _locationInfoService.AssignLocation(stock.LocationType);
                if(newLocation == null)
                {
                    return WebResponseContent.Instance.Error("没有空闲库位可回库");
                }
                var newTask = new Dt_Task()
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -1091,6 +1091,7 @@
                stockInfo.LocationCode = locationInfo.LocationCode;
                stockInfo.PalletCode = task.PalletCode;
                stockInfo.LocationCode = task.TargetAddress;
                stockInfo.Remark ="";
                stockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                _stockRepository.UpdateData(stockInfo);
@@ -1346,6 +1347,7 @@
                // æ›´æ–°åº“存信息
                stockInfo.LocationCode = task.TargetAddress;
                stockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                stockInfo.Remark = "";
                // æ›´æ–°åº“存明细状态
                if (stockInfo.Details != null && stockInfo.Details.Any())
@@ -2259,7 +2261,7 @@
                {
                    return content.Error($"盘点单{task.OrderNo}盘点已完成或未开始");
                }
                if (stockInfo.StockStatus != StockStatusEmun.出库锁定.ObjToInt())
                if (stockInfo.StockStatus != StockStatusEmun.盘点出库锁定.ObjToInt())
                {
                    return content.Error($"{stockInfo.PalletCode}库存状态不正确");
                }
@@ -2351,7 +2353,7 @@
                {
                    _logger.LogInformation($"InEmptyTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
                }
                return content;
                return content.OK();
            }
            catch (Exception ex)
            {
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -1181,7 +1181,7 @@
                }
                stockInfos.ForEach(x =>
                {
                    x.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                    x.StockStatus = StockStatusEmun.盘点出库锁定.ObjToInt();
                });
                tasks.ForEach(x =>
                {