dengjunjie
2 天以前 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_ProductionLine.cs
@@ -25,20 +25,16 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(productionlineDTO.Barcode);
                if (stockInfo != null) throw new Exception($"托盘【{productionlineDTO.Barcode}】已存在库存信息");
                stockInfo = new Dt_StockInfo();
                stockInfo.Details = new List<Dt_StockInfoDetail>();
                #region MyRegion
                string OrderNo = productionlineDTO.batchNo.Substring(0, 8);// DateTime.Now.ToString("yyMMdd");
                Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(OrderNo);
                if (inboundOrder == null) throw new Exception($"未找到批号为【{OrderNo}】的入库单");
                //var BatchNo = string.Join("", productionlineDTO.batchNo.Except(OrderNo));
                var BatchNo = productionlineDTO.batchNo.Substring(8);
                Dt_InboundOrderDetail? inboundOrderDetail = inboundOrder.Details.Where(x => x.BatchNo == BatchNo).FirstOrDefault();
                if (inboundOrderDetail == null) throw new Exception($"批号【{OrderNo}】的入库单未找到柜号【{BatchNo}】");
                if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) throw new Exception($"批号【{OrderNo}】的柜号【{BatchNo}】可组盘数量不足");
                Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == productionlineDTO.Barcode);
                if (inventoryInfo != null) throw new Exception($"托盘【{productionlineDTO.Barcode}】已存在库存信息");
                Dt_InboundOrderDetail inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == productionlineDTO.batchNo);
                if (inboundOrderDetail == null) throw new Exception($"未找到批号【{productionlineDTO.batchNo}】的入库单");
                if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < 1) throw new Exception($"批号【{productionlineDTO.batchNo}】的可组盘数量不足");
                Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.Id == inboundOrderDetail.OrderId);
                if (inboundOrder == null) throw new Exception($"未找到批号为【{productionlineDTO.batchNo}】的入库单");
                var materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterielCode);
                if (materielInfo == null) throw new Exception($"未找到物料信息,物料编码【{inboundOrderDetail.MaterielCode}】");
                Dt_Task dt_Task = new Dt_Task()
                {
                    CurrentAddress = productionlineDTO.stationCode,
@@ -56,12 +52,39 @@
                    Dispatchertime = DateTime.Now,
                };
                productionlineDTO.batchNo = BatchNo;
                content = _stockService.StockInfoService.AddStockInfo(ref stockInfo, ref inboundOrder, productionlineDTO);
                if (!content.Status) throw new Exception(content.Message);
                var productionDate = DateTime.Now.ToString("yyyy-MM-dd");
                var validityPeriod = DateTime.Now.AddDays(materielInfo.Validity).ToString("yyyy-MM-dd");//加天
                //var validityPeriod = DateTime.Now.AddMonths(materielInfo.Validity).ToString("yyyy-MM-dd");//加月
                //var validityPeriod = DateTime.Now.AddYears(materielInfo.Validity).ToString("yyyy-MM-dd");//加年
                #region åº“å­˜
                inventoryInfo = new Dt_InventoryInfo()
                {
                    BatchNo = productionlineDTO.batchNo,
                    MaterielCode = inboundOrderDetail.MaterielCode,
                    MaterielName = inboundOrderDetail.MaterielName,
                    PalletCode = productionlineDTO.Barcode,
                    ProductionDate = productionDate,
                    StockStatus = StockStatusEmun.组盘暂存.ObjToInt(),
                    ProductStatus = ProductStatusEmun.待检1.ObjToInt(),
                    ShelfLife = materielInfo.Validity,
                    ValidityPeriod = validityPeriod,
                    Creater = "System"
                };
                #endregion
                #region å…¥åº“单
                inboundOrder.OrderStatus = InboundStatusEnum.入库中.ObjToInt();
                var Item1 = _inboundService.InboundOrderDetailService.GetBoxStockQuantity(inboundOrderDetail);
                inventoryInfo.StockQuantity = Item1.StockQuantity;
                inventoryInfo.BoxQuantity = Item1.BoxQuantity;
                inboundOrderDetail.ReceiptQuantity = inboundOrderDetail.ReceiptQuantity + Item1.StockQuantity;
                inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
                #endregion
                Db.Ado.BeginTran();
                _inboundService.InbounOrderService.UpdateDataWithDetail(inboundOrder);
                _stockService.StockInfoService.AddMaterielGroup(stockInfo);
                _inboundService.InbounOrderService.UpdateData(inboundOrder);
                _inboundService.InboundOrderDetailService.UpdateData(inboundOrderDetail);
                _inventoryInfoRepository.AddData(inventoryInfo);
                AddData(dt_Task);
                content.OK(data: dt_Task);
                Db.Ado.CommitTran();