1
dengjunjie
2025-02-20 37ea017aad42d0682d068b65e82aa62ea9e2c1ea
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -10,7 +10,9 @@
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.WCSInfo;
using WIDESEA_IBasicRepository;
using WIDESEA_IRecordRepository;
using WIDESEA_IRecordService;
@@ -31,6 +33,63 @@
            }
            return stockInfo;
        }
        /// <summary>
        /// æ·»åŠ ç»„ç›˜/库存信息
        /// </summary>
        /// <returns></returns>
        public WebResponseContent AddStockInfo(ref Dt_StockInfo stockInfo, ref Dt_InboundOrder inboundOrder, ProductionlineDTO productionlineDTO)
        {
            WebResponseContent content = new WebResponseContent().OK();
            try
            {
                var materielCode = productionlineDTO.traytype.ToString();
                if (inboundOrder != null)
                {
                    var inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == productionlineDTO.batchNo);
                    materielCode = inboundOrderDetail.MaterielCode;
                    inboundOrderDetail.ReceiptQuantity++;
                    inboundOrderDetail.OrderDetailStatus = inboundOrderDetail.OverInQuantity == inboundOrderDetail.OrderQuantity ? OrderDetailStatusEnum.Over.ObjToInt() : OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
                    if (inboundOrder.Details.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null)
                    {
                        inboundOrder.OrderStatus = InboundStatusEnum.入库完成.ObjToInt();
                    }
                    else if (inboundOrder.OrderStatus == InboundStatusEnum.未开始.ObjToInt())
                    {
                        inboundOrder.OrderStatus = InboundStatusEnum.入库中.ObjToInt();
                    }
                }
                var materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
                if (materielInfo == null) throw new Exception($"未找到物料信息,物料编码【{materielCode}】");
                Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                {
                    Status = StockStatusEmun.组盘暂存.ObjToInt(),
                    OrderNo = inboundOrder?.OrderNo,
                    StockId = stockInfo.Id != 0 ? stockInfo.Id : 0,
                    MaterielName = materielInfo.MaterielName,
                    MaterielCode = materielInfo.MaterielCode,
                    BatchNo = inboundOrder.Details.FirstOrDefault().BatchNo,
                    StockQuantity = 1,// productionlineDTO.QtySum,
                    SerialNumber = "",
                    //SerialNumber = $"{inboundOrder.OrderNo} | {materielInfo.MaterielCode} | {pdaMaterielGroupDTO.BatchNo} | {pdaMaterielGroupDTO.ReceiptQuantity}",
                    Creater = "System"
                };
                if (stockInfo.Id == 0)
                {
                    stockInfo.PalletCode = productionlineDTO.Barcode;
                    stockInfo.StockStatus = StockStatusEmun.组盘暂存.ObjToInt();
                    stockInfo.Creater = "System";
                    stockInfo.Remark = productionlineDTO.productQty;
                }
                stockInfo.Details.Add(stockInfoDetail);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        public void AddMaterielGroup(Dt_StockInfo stockInfo)
        {