dengjunjie
2025-07-09 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -1,4 +1,5 @@
using AutoMapper;
using Microsoft.IdentityModel.Tokens;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -53,7 +54,9 @@
        public override WebResponseContent AddData(SaveModel saveModel)
        {
            InboundOrderAddDTO orderAddDTO = saveModel.MainData.DicToModel<InboundOrderAddDTO>();
            //orderAddDTO.orderNo=DateTime.Now.ToString("yyyyMMddHHmmss");
            orderAddDTO.Details = saveModel.DetailData.DicToIEnumerable<InboundOrderDetailAddDTO>();
            orderAddDTO.orderNo = orderAddDTO.Details.FirstOrDefault().BatchNo;
            return AddInboundOrder(orderAddDTO);
        }
@@ -72,13 +75,28 @@
                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
                #endregion
                List<string> LocationCodes = orderAddDTO.Details
                    .Where(x => !string.IsNullOrEmpty(x.LocationCode))
                    .Select(x => x.LocationCode).ToList();
                Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO);
                //inboundOrder.OrderNo = DateTime.Now.ToString("yyMMddHHmmss");
                inboundOrder.OrderStatus = InboundStatusEnum.未开始.ObjToInt();
                bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                Db.Ado.BeginTran();
                if (LocationCodes.Any())
                {
                    content = _basicService.LocationInfoService.UpdateStatus(LocationCodes, LocationStatusEnum.PalletLock.ObjToInt());
                    if (!content.Status)
                        throw new Exception(content.Message);
                }
                BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                Db.Ado.CommitTran();
                content = WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                content = WebResponseContent.Instance.Error(ex.Message);
            }
            finally
@@ -88,6 +106,54 @@
            return content;
        }
        public override WebResponseContent UpdateData(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0) throw new Exception($"入库单明细不能为空");
                List<InboundOrderDetailAddDTO> inboundOrderDetail = saveModel.DetailData.DicToIEnumerable<InboundOrderDetailAddDTO>();
                //if (inboundOrderDetail.FirstOrDefault(x => x.OrderDetailStatus > 0) != null) throw new Exception($"订单已开始组盘入库");
                //var inboundOrderDetails = _inboundOrderDetailService.Db.Queryable<Dt_InboundOrderDetail>().Where(x => saveModel.DelKeys.Contains(x.Id)).ToList();
                //if (inboundOrderDetails.Count > 0)
                //{
                //    if (inboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.New.ObjToInt()) != null)
                //        throw new Exception($"存在已组盘工单,已先解盘");
                //}
                content = base.UpdateData(saveModel);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        public override WebResponseContent DeleteData(object[] keys)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //var inboundOrders = BaseDal.QueryData(x => keys.Contains(x.Id));
                var inboundOrders = BaseDal.Db.Queryable<Dt_InboundOrder>().Includes(x => x.Details).Where(x => keys.Contains(x.Id)).ToList();
                if (inboundOrders.Count < 1) throw new Exception("未找到入库单");
                List<Dt_InboundOrderDetail> orderDetails = new List<Dt_InboundOrderDetail>();
                foreach (var item in inboundOrders)
                {
                    if (item.Details.Where(x => x.ReceiptQuantity != x.OverInQuantity).Any())
                        throw new Exception("存在未入库完成托盘");
                    orderDetails.AddRange(item.Details);
                    item.Details = null;
                }
                BaseDal.DeleteAndMoveIntoHty(inboundOrders, OperateType.人工删除);
                content.Status = _inboundOrderDetailService.Repository.DeleteAndMoveIntoHty(orderDetails, OperateType.人工删除);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// éªŒè¯å•据添加DTO对象
        /// </summary>
@@ -113,7 +179,7 @@
                return (false, "有物料信息未录入,请录入物料信息", inboundOrderAddDTO);
            }
            if (BaseDal.QueryFirst(x => x.UpperOrderNo == inboundOrderAddDTO.UpperOrderNo && !string.IsNullOrEmpty(x.UpperOrderNo)) != null)
            if (BaseDal.QueryFirst(x => x.OrderNo == inboundOrderAddDTO.orderNo && !string.IsNullOrEmpty(x.OrderNo)) != null)
            {
                return (false, "单据已存在", inboundOrderAddDTO);
            }