wangxinhui
2025-02-28 659b0ed98c87b164b96ac43b3c0c8a7d2f975bf2
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -17,6 +17,7 @@
using WIDESEA_Common.LocationEnum;
using MailKit.Search;
using WIDESEA_External.Model;
using WIDESEA_Core.CodeConfigEnum;
namespace WIDESEA_TaskInfoService
{
@@ -143,6 +144,14 @@
                (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews);
                if (result.Item1 != null && result.Item1.Count > 0)
                {
                    Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId);
                    TaskTypeEnum typeEnum = outboundOrder.OrderType switch
                    {
                        (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
                        (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate,
                        (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
                        _ => new TaskTypeEnum()
                    };
                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
                    result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                    result.Item3.ForEach(x =>
@@ -189,7 +198,7 @@
            {
                throw new Exception("未找到出库单明细信息");
            }
            if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus >= OrderDetailStatusEnum.New.ObjToInt())!=null)
            if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null)
            {
                throw new Exception("所选出库单明细存在出库中或已完成");
            }
@@ -202,7 +211,15 @@
                (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
                if (result.Item1 != null && result.Item1.Count > 0)
                {
                    tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
                    Dt_OutboundOrder outboundOrder =_outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
                    TaskTypeEnum typeEnum = outboundOrder.OrderType switch
                    {
                        (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
                        (int)OutOrderTypeEnum.Allocate=> TaskTypeEnum.OutAllocate,
                        (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
                        _ =>new TaskTypeEnum()
                    };
                    tasks = GetTasks(result.Item1, typeEnum);
                    result.Item2.ForEach(x =>
                    {
                        x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
@@ -267,6 +284,7 @@
        {
            try
            {
                #region MyRegion
                Dt_OutboundOrderDetail OrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId);
                if (OrderDetail == null)
@@ -355,44 +373,48 @@
                _stockRepository.StockInfoDetailRepository.UpdateData(upstockDetails);
                _stockRepository.StockInfoDetailRepository.DeleteData(destockDetails);
                _unitOfWorkManage.CommitTran();
                #endregion
                #region ä¸ŠæŠ¥ERP
                List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                outStockLockInfos.ForEach(x =>
                if (outboundOrder.OrderStatus == OutOrderStatusEnum.出库完成.ObjToInt() && outboundOrder.OrderType==OutOrderTypeEnum.Issue.ObjToInt())
                {
                    ERPPickItemModel pickItemModel = new ERPPickItemModel()
                    {
                        Lotno = x.BatchNo,
                        Qty = x.AssignQuantity.ToString(),
                        Location = warehouse.WarehouseCode
                    };
                    ERPPickModel pickModel = new ERPPickModel()
                    {
                        Rowindex = OrderDetail.RowNo,
                        Material = OrderDetail.MaterielCode,
                        Qty = pickItemModel.Qty,
                        Dataitem = new List<ERPPickItemModel> { pickItemModel }
                    };
                    eRPPickModels.Add(pickModel);
                });
                ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
                {
                    Pickcode = outboundOrder.UpperOrderNo,
                    PickList = eRPPickModels
                };
                ERPIssueModel issueModel = new ERPIssueModel()
                {
                    UniqueTag = outboundOrder.Id.ToString(),
                    Code = outboundOrder.OrderNo,
                    WarehouseCode = warehouse.WarehouseCode,
                    Docremark = "",
                    Deptno = outboundOrder.DepartmentCode,
                    Deptname = outboundOrder.DepartmentName,
                    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    Createuser = App.User.UserName,
                    Issitem = new List<ERPIssueItemModel>() { issueItemModel }
                };
                _invokeERPService.InvokeOutStandardsApi(issueModel);
                    //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
                    //outStockLockInfos.ForEach(x =>
                    //{
                    //    ERPPickItemModel pickItemModel = new ERPPickItemModel()
                    //    {
                    //        Lotno = x.BatchNo,
                    //        Qty = x.AssignQuantity.ToString(),
                    //        Location = warehouse.WarehouseCode
                    //    };
                    //    ERPPickModel pickModel = new ERPPickModel()
                    //    {
                    //        Rowindex = OrderDetail.RowNo,
                    //        Material = OrderDetail.MaterielCode,
                    //        Qty = pickItemModel.Qty,
                    //        Dataitem = new List<ERPPickItemModel> { pickItemModel }
                    //    };
                    //    eRPPickModels.Add(pickModel);
                    //});
                    //ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
                    //{
                    //    Pickcode = outboundOrder.UpperOrderNo,
                    //    PickList = eRPPickModels
                    //};
                    //ERPIssueModel issueModel = new ERPIssueModel()
                    //{
                    //    UniqueTag = outboundOrder.Id.ToString(),
                    //    Code = _outboundService.OutboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
                    //    WarehouseCode = warehouse.WarehouseCode,
                    //    Docremark = "",
                    //    Deptno = outboundOrder.DepartmentCode,
                    //    Deptname = outboundOrder.DepartmentName,
                    //    Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    //    Createuser = App.User.UserName,
                    //    Issitem = new List<ERPIssueItemModel>() { issueItemModel }
                    //};
                    _invokeERPService.InvokeOutStandardsApi(_outboundService.OutboundOrderService.GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
                }
                #endregion
                return WebResponseContent.Instance.OK();
@@ -421,6 +443,10 @@
                BaseDal.AddData(tasks);
                if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
                {
                    stockInfos.ForEach(x =>
                    {
                        x.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                    });
                    WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
                    if (!content.Status)
@@ -455,7 +481,7 @@
        /// </summary>
        /// <param name="keys">出库单明细主键</param>
        /// <returns></returns>
        public WebResponseContent GenerateOutboundTask(int[] keys)
        public WebResponseContent GenerateOutboundTasks(int[] keys)
        {
            try
            {
@@ -509,7 +535,7 @@
            {
                List<int> keys = _outboundService.OutboundOrderDetailService.Repository.QueryData(x => x.Id, x => x.OrderId == outboundId);
                return GenerateOutboundTask(keys.ToArray());
                return GenerateOutboundTasks(keys.ToArray());
            }
            catch (Exception ex)
            {