dengjunjie
2025-10-24 d55ef610a530c2ab0a30d6ecdc1e7e4ab54cc896
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/InventoryServices.cs
@@ -122,7 +122,9 @@
                        case "1": //入库
                            {
                                #region å¤„理入库订单
                                Dt_CabinOrder cabinOrder = BaseDal.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == request.orderNo && x.Warehouse_no == WarehouseEnum.立库.ObjToInt().ToString("000")).Includes(x => x.Details).First();
                                var reslut = WarehouseEnum.立库.ObjToInt().ToString("000");
                                Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == request.orderNo && x.Warehouse_no ==reslut).Includes(x => x.Details).First();
                                //Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == request.orderNo && x.Warehouse_no == "001").Includes(x => x.Details).First();
                                if (cabinOrder == null || cabinOrder.OdrderStatus == "已完成")
                                    throw new Exception($"入库单已完成");
                                Dt_CabinOrderDetail cabinOrderDetail = cabinOrder.Details.Where(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo && x.Status == 1).First();
@@ -136,7 +138,7 @@
                                if (cabinOrderDetail.Order_Inqty == cabinOrderDetail.Order_qty)
                                    cabinOrderDetail.OrderDetailStatus = "已完成";
                                BaseDal.Db.Updateable(cabinOrderDetail).ExecuteCommand();
                                var cabinOrder1 = BaseDal.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == cabinOrder.Order_no && x.Warehouse_no == WarehouseEnum.立库.ObjToInt().ToString("000")).Includes(x => x.Details).First();
                                var cabinOrder1 = BaseDal.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == cabinOrder.Order_no && x.Warehouse_no == reslut).Includes(x => x.Details).First();
                                if (!cabinOrder1.Details.Where(x => x.OrderDetailStatus != "已完成").Any())
                                    cabinOrder.OdrderStatus = "已完成";
                                BaseDal.Db.Updateable(cabinOrder).ExecuteCommand();
@@ -237,37 +239,40 @@
                                #endregion
                                //UpdateInboundOrderDetailStatus(request.orderNo, detail.batchNo, detail.productCode);
                                break;
                            }
                        case "2":
                            #region æ‰¾å‡ºåº“任务
                            Dt_SupplyTask supplyTask = Db.Queryable<Dt_SupplyTask>().Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo && x.OrderNo == request.orderNo && x.WarehouseCode == WarehouseEnum.立库.ObjToInt().ToString("000") && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt()).First();
                            if (supplyTask == null) throw new Exception($"未找到订单号【{request.orderNo}】物料编号【{detail.productCode}】的出库任务");
                            #endregion
                            #region å¤„理出库单、库存信息、出库任务、调拨任务
                            _deliveryOrderServices.OutTaskFinish(supplyTask);
                            #endregion
                            break;
                        case "2":
                            {
                                #region æ‰¾å‡ºåº“任务
                                Dt_SupplyTask supplyTask = Db.Queryable<Dt_SupplyTask>().Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo && x.OrderNo == request.orderNo && x.WarehouseCode == WarehouseEnum.立库.ObjToInt().ToString("000") && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt()).First();
                                if (supplyTask == null) throw new Exception($"未找到订单号【{request.orderNo}】物料编号【{detail.productCode}】的出库任务");
                                if (supplyTask.StockQuantity != orderQty) throw new Exception($"订单号【{request.orderNo}】物料编号【{detail.productCode}】的出库数量与出库任务数量不相等");
                                #endregion
                                #region å¤„理出库单、库存信息、出库任务、调拨任务
                                _deliveryOrderServices.OutTaskFinish(supplyTask);
                                #endregion
                            }
                            break;
                        case "3": // ç›˜ç‚¹
                            decimal diff = detail.ea ?? 0;             // å·®å¼‚æ•°
                            int flag = detail.isLossOrProfit ?? 3;     // 1=盘亏, 2=盘盈, 3=盘中
                            if (flag == 1) // ç›˜äº
                            {
                                //库存数-差异数=盘亏
                                //batch.SupplyQuantity += (batch.StockQuantity - diff);
                                //batch.Remark = "盘点单回传 - ç›˜äº";
                            }
                            else if (flag == 2) // ç›˜ç›ˆ
                            {
                                //库存数+差异数=盘盈
                                //batch.SupplyQuantity += (batch.StockQuantity + diff);
                                //batch.Remark = "盘点单回传 - ç›˜ç›ˆ";
                            }
                            else // ç›˜ä¸­
                            {
                                //batch.Remark = "盘点单回传 - ç›˜ä¸­";
                                #region æ‰¾ç›˜ç‚¹ä»»åŠ¡
                                Dt_SupplyTask supplyTask = Db.Queryable<Dt_SupplyTask>().Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo && x.OrderNo == request.orderNo && x.WarehouseCode == WarehouseEnum.立库.ObjToInt().ToString("000") && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt()).First();
                                if (supplyTask == null) throw new Exception($"未找到订单号【{request.orderNo}】物料编号【{detail.productCode}】的盘点任务");
                                #endregion
                                if (detail.isLossOrProfit == 1) // ç›˜äº
                                {
                                    supplyTask.SupplyQuantity = supplyTask.StockQuantity - detail.ea;
                                }
                                else if (detail.isLossOrProfit == 2) // ç›˜ç›ˆ
                                {
                                    supplyTask.SupplyQuantity = supplyTask.StockQuantity + detail.ea;
                                }
                                else // ç›˜ä¸­
                                {
                                    supplyTask.SupplyQuantity = supplyTask.StockQuantity;
                                }
                               _deliveryOrderServices.CheckTaskFinish(supplyTask);
                            }
                            break;
                    }