1
647556386
2026-02-04 e53663247b2d2395a6bbaa485e3b4e5c85f0fb92
1
已修改3个文件
73 ■■■■■ 文件已修改
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs
@@ -318,7 +318,10 @@
                {
                    return content.Error($"未找到该条码{palletDto.Barcode}需调入智仓的信息");
                }
                if(allocateMaterialInfo.WarehouseCode != palletDto.WarehouseType)
                {
                    return content.Error($"该条码调入仓库为{allocateMaterialInfo.WarehouseCode},与选择的{palletDto.WarehouseType}仓库不一致");
                }
                stockInfo.Details.Add(new Dt_StockInfoDetail
                {
                    StockId = stockInfo == null ? 0 : stockInfo.Id,
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -103,8 +103,10 @@
        {
            try
            {
                var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
                var outboundOrder = Db.Queryable<Dt_OutboundOrder>()
                    .Where(x => x.UpperOrderNo == model.UpperOrderNo)
                    .Includes(x => x.Details)
                    .First();
                if (outboundOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到出库单信息");
@@ -118,12 +120,12 @@
                List<int> detailIds = new List<int>();
                var materielCodes = model.Details.Select(x => x.MaterielCode).Distinct().ToList();
                var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().Where(x => materielCodes.Contains(x.MaterielCode)).ToList();
                var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>()
                    .Where(x => materielCodes.Contains(x.MaterielCode))
                    .ToList();
                foreach (var item in model.Details)
                {
                    var outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.lineNo == item.lineNo);
                    if (outboundOrderDetail == null)
                    {
@@ -143,25 +145,43 @@
                            BarcodeUnit = item.Unit,
                        };
                        var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                        item.Unit = issueoStockResult.Unit;
                        item.OrderQuantity = issueoStockResult.Quantity;
                        outboundOrderDetail.Unit = issueoStockResult.Unit;
                        outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                        var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
                        item.MoveQty = moveissueoStockResult.Quantity;
                        outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
                        if (materielInfos.Any())
                        {
                            outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                        }
                        outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                        outboundOrderDetails.Add(outboundOrderDetail);
                    }
                    else
                    {
                        if(item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty)
                        #region é”å®šçŠ¶æ€ä¸‹éžæ•°é‡å­—æ®µä¸€è‡´æ€§æ ¡éªŒ
                        if (outboundOrderDetail.LockQuantity != 0)
                        {
                            var isFieldChanged = !string.Equals(outboundOrderDetail.MaterielCode, item.MaterielCode)
                                || !string.Equals(outboundOrderDetail.SupplyCode, item.SupplyCode)
                                || !string.Equals(outboundOrderDetail.BatchNo, item.BatchNo)
                                || !string.Equals(outboundOrderDetail.Unit, item.Unit)
                                || !string.Equals(outboundOrderDetail.WarehouseCode, item.WarehouseCode)
                                || !string.Equals(outboundOrderDetail.lineNo, item.lineNo)
                                || outboundOrderDetail.MoveQty != item.MoveQty;
                            if (isFieldChanged)
                            {
                                return WebResponseContent.Instance.Error($"行号{item.lineNo}已锁定出库(锁定数量:{outboundOrderDetail.LockQuantity}),仅允许修改订单数量,禁止修改物料/批次/仓库等其他信息");
                            }
                        }
                        #endregion
                        #region åŽŸæœ‰æ•°é‡æ ¡éªŒé€»è¾‘ä¿ç•™
                        if (item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty)
                        {
                            return WebResponseContent.Instance.Error($"修改的行号{item.lineNo}数量超过了智仓出库锁定数量加上挪料数量,不允许修改");
                        }
                        if(outboundOrderDetail.LockQuantity == 0)
                        #endregion
                        #region å­—段赋值逻辑:锁定状态仅改数量,未锁定则全量更新
                        if (outboundOrderDetail.LockQuantity == 0)
                        {
                            outboundOrderDetail.lineNo = item.lineNo;
                            outboundOrderDetail.MaterielCode = item.MaterielCode;
@@ -170,10 +190,10 @@
                            outboundOrderDetail.Unit = item.Unit;
                            outboundOrderDetail.WarehouseCode = item.WarehouseCode;
                            outboundOrderDetail.MoveQty = item.MoveQty;
                            outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                            outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
                            outboundOrderDetail.BarcodeQty = item.OrderQuantity;
                            outboundOrderDetail.BarcodeUnit = item.Unit;
                            var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                            outboundOrderDetail.Unit = issueoStockResult.Unit;
                            outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
@@ -184,16 +204,14 @@
                        {
                            outboundOrderDetail.OrderQuantity = item.OrderQuantity;
                        }
                        if (materielInfos.Any())
                        {
                            outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                        }
                        #endregion
                        outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                        updateoutboundOrderDetails.Add(outboundOrderDetail);
                        detailIds.Add(outboundOrderDetail.Id);
                    }
                }
                outboundOrder.UpperOrderNo = model.UpperOrderNo;
                outboundOrder.BusinessType = model.BusinessType;
@@ -205,22 +223,22 @@
                _unitOfWorkManage.BeginTran();
                foreach (var item in deletePurchaseOrderDetails)
                {
                    if(item.LockQuantity > 0)
                    if (item.LockQuantity > 0)
                    {
                        return WebResponseContent.Instance.Error($"原单据行号{item.lineNo}已经锁定出库,不允许删除,请重新更改数据推送");
                    }
                    // _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.自动删除);
                    _outboundOrderDetailRepository.DeleteData(item);
                }
                _outboundOrderDetailRepository.UpdateData(updateoutboundOrderDetails);
                _outboundOrderDetailRepository.AddData(outboundOrderDetails);
                if(outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
                if (outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
                {
                    outboundOrder.OrderStatus = (int)OutOrderStatusEnum.出库完成;
                }
                BaseDal.UpdateData(outboundOrder);
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -748,7 +748,7 @@
                string requestData = string.Empty;
                List<string> lineNos = new List<string>();
                Dt_AllocateMaterialInfo allocateMaterialInfo = _allocateMaterialInfo.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                if (outboundOrder.OrderStatus == OutOrderStatusEnum.出库完成.ObjToInt() && outboundOrder.OrderStatus == 0 && allocateMaterialInfo == null)
                if (outboundOrder.OrderStatus == OutOrderStatusEnum.出库完成.ObjToInt() && outboundOrder.ReturnToMESStatus == 0 && allocateMaterialInfo == null)
                {
                    Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                    if (allocateOrder == null)