1
wangxinhui
2024-12-28 88d52606d0db8fb0343ebcd2d53c8df62fd05f2a
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -1,5 +1,6 @@
using AutoMapper;
using HslCommunication.WebSocket;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -152,17 +153,7 @@
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                MatSerNumAnalysisModel model = new MatSerNumAnalysisModel()
                {
                    MaterielCode = "504907335",
                    LotNo = "20241217001",
                    ProductionDate = "2024-12-17",
                    EffectiveDate = "2025-12-17",
                    PurchaseOrderNo = "POHA02241227285",
                    Quantity = 1,
                    SerialNumber = "M:504907335,BS:20241217001,DM:2024-12-17,DE:2025-12-17,Q:1,PO:POHA02241227285"
                };//测试
                //CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum);
                MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum);
                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterielCode);
                if (materielInfo == null)
                {
@@ -567,15 +558,97 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo)
        /// <summary>
        /// å…¥åº“完成上报ERP
        /// </summary>
        /// <returns></returns>
        public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo,Dt_InboundOrder inboundOrder)
        {
            WebResponseContent content=new WebResponseContent();
            try
            {
                if (inboundOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                if (inboundOrder.OrderStatus == InOrderStatusEnum.入库完成.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"入库单据已完成");
                }
                List<ERPInboundDetailModel> detailModels = new List<ERPInboundDetailModel>();
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到仓库信息");
                }
                List<Dt_InboundOrderDetail> inboundOrderDetails = new List<Dt_InboundOrderDetail>();
                foreach (var item in stockInfo.Details)
                {
                    Dt_InboundOrderDetail? inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x=>x.RowNo==item.InboundOrderRowNo);
                    if (inboundOrderDetail == null)
                    {
                        continue;
                    }
                    ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
                    {
                        ExpiryDate = item.EffectiveDate ?? "",
                        LocationCode = warehouse.WarehouseCode,
                        MaterialsCode = item.MaterielCode,
                        MfgDate = item.ProductionDate ?? "",
                        QtyCustoms = "0",
                        Quantity = item.StockQuantity.ToString(),
                        Rack = stockInfo.LocationCode,
                        ReceiptCode = inboundOrder.UpperOrderNo,
                        ReceiptSerNo = item.InboundOrderRowNo.ToString()
                    };
                    inboundOrderDetail.OverInQuantity += detailModel.Quantity.ObjToInt();
                    if (inboundOrderDetail.OverInQuantity== inboundOrderDetail.OrderQuantity)
                    {
                        inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
                    }
                    inboundOrderDetails.Add(inboundOrderDetail);
                    detailModels.Add(detailModel);
                }
                ERPInboundModel model = new ERPInboundModel()
                {
                    Code = inboundOrder.InboundOrderNo,
                    CreatorCode = "TC20082",//测试
                    EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
                    StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    SuppliersId = inboundOrder.SupplierId,
                    Type = "S",
                    UniqueTag = inboundOrder.Id.ToString(),
                    WarehouseCode = warehouse.WarehouseCode,
                    Way = 1,
                    Details = detailModels
                };
                //入库明细新增完成数量
                int newCount = inboundOrderDetails.Select(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
                //入库明细原完成数量
                int oldCount = inboundOrder.Details.Select(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count;
                string response = _invokeERPService.InvokeInboundOrderApi(model);
                ErpRequestContent requestContent = JsonConvert.DeserializeObject<ErpRequestContent>(response);
                if (requestContent==null)
                {
                    return WebResponseContent.Instance.Error();
                }
                if (requestContent.res==0)
                {
                    return WebResponseContent.Instance.Error(requestContent.Data);
                }
                _unitOfWorkManage.BeginTran();
                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails);
                if (inboundOrder.Details.Count == (newCount + oldCount))
                {
                    inboundOrder.OrderStatus = InOrderStatusEnum.入库完成.ObjToInt();
                    _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
                }
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
@@ -599,13 +672,9 @@
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                if (inboundOrder.OrderStatus != InOrderStatusEnum.入库完成.ObjToInt())
                if (inboundOrder.OrderStatus == InOrderStatusEnum.入库完成.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"入库单据未完成");
                }
                if (inboundOrder.Details.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) != null)
                {
                    return WebResponseContent.Instance.Error($"入库明细未完成");
                    return WebResponseContent.Instance.Error($"入库单据已完成");
                }
                List<Dt_StockInfo> stockInfos = Db.Queryable<Dt_StockInfo>().Where(x => x.Details.Any(v => v.OrderNo == inboundOrder.InboundOrderNo)).Includes(x => x.Details).ToList();
@@ -658,9 +727,7 @@
                    Way = 1,
                    Details = detailModels
                };
                string response = _invokeERPService.InvokeInboundOrderApi(model);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)