schangxiang@126.com
2025-10-31 0d4d2290d26d47a0767ef39524936beab40142fe
DEmon/WebWIPAPI/Controllers/MesIntegrController.cs
@@ -3,15 +3,18 @@
using iWareCommon.Utils;
using iWareDataCore.BASE.Entity;
using iWareDataCore.BASE.Service;
using iWareDataCore.TASK.Service;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web.Hosting;
using System.Web.Mvc;
using WebWIPAPI.Models;
using WebWIPAPI.Properties;
using WebWIPAPI.Utils;
using static System.Runtime.CompilerServices.RuntimeHelpers;
using LogTextHelper = WebWIPAPI.Utils.LogTextHelper;
namespace WebWIPAPI.Controllers
@@ -108,6 +111,44 @@
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importInOrder", "");
                }
                //if (importMaterials.GroupBy(x => x.Code).Any(g => g.Count() > 1))
                //{
                //    responseMessage = new ApiResponse<string>()
                //    {
                //        Code = 500,
                //        Success = false,
                //        Message = "本次请求中物料号不能重复",
                //        Data = null,
                //    };
                //    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                //}
                // 按物料号分组,并找出有重复的组
                var duplicateGroups = importMaterials
                    .GroupBy(x => x.Code)
                    .Where(g => g.Count() > 1)
                    .ToList();
                if (duplicateGroups.Any())
                {
                    // 收集所有重复的物料号
                    var duplicateCodes = duplicateGroups
                        .Select(g => g.Key)  // 每个组的Key就是物料号(Code)
                        .OrderBy(code => code)  // 可选:排序,让输出更整齐
                        .ToList();
                    // 构造友好的提示信息
                    var message = $"本次入库请求中物料号不能重复,重复物料号有:{string.Join("、", duplicateCodes)}";
                    responseMessage = new ApiResponse<string>
                    {
                        Code = 500,
                        Success = false,
                        Message = message,
                        Data = null,
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                }
                #endregion
                #region 业务处理
@@ -179,7 +220,7 @@
        ///// <summary>
        ///// 导入出库单-版本1
        ///// 导入出库单-版本1(使用出库单据的版本)
        ///// </summary>
        ///// <param name="inputmaterials"></param>
        ///// <returns></returns>
@@ -261,7 +302,7 @@
        /// <summary>
        /// 导入出库单-版本2
        /// 导入出库单-版本2(选择库存出库的版本)
        /// </summary>
        /// <param name="inputmaterials"></param>
        /// <returns></returns>
@@ -296,12 +337,40 @@
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                }
                // 按物料号分组,并找出有重复的组
                var duplicateGroups = inputmaterials
                    .GroupBy(x => x.Code)
                    .Where(g => g.Count() > 1)
                    .ToList();
                if (duplicateGroups.Any())
                {
                    // 收集所有重复的物料号
                    var duplicateCodes = duplicateGroups
                        .Select(g => g.Key)  // 每个组的Key就是物料号(Code)
                        .OrderBy(code => code)  // 可选:排序,让输出更整齐
                        .ToList();
                    // 构造友好的提示信息
                    var message = $"本次出库请求中物料号不能重复,重复物料号有:{string.Join("、", duplicateCodes)}";
                    responseMessage = new ApiResponse<string>
                    {
                        Code = 500,
                        Success = false,
                        Message = message,
                        Data = null,
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                }
                #endregion
                #region 业务处理
                string typeName = "出库";
                handler_importOutOrder(typeName, inputmaterials, out msg);
                handler_OutOrder(inputmaterials, out msg);
                //handler_importOutOrder(typeName, inputmaterials, out msg);
                #endregion
@@ -439,5 +508,49 @@
            }
        }
        /// <summary>
        /// 选择库存出库的版本
        /// </summary>
        /// <param name="inputmaterials"></param>
        /// <param name="msg"></param>
        private void handler_OutOrder(List<InputMaterialEntity> inputmaterials, out string msg)
        {
            msg = "";
            //查找库存表中的id
            var qList = inputmaterials.Select(x => x.Code).ToList();
            List<int> ids = PlaceMaterialViewService.GetInstance().GetPlaceMaterialViewsByCodeList(qList, out msg);
            if (!string.IsNullOrEmpty(msg))
            {
                return;
            }
            // List<int> ids = GetSelectedDataKeyIDs(PlaceGrid);
            if (ids.Count > 0)
            {
                int count = MainTaskService.GetInstance().SaveOutMainTask(ids, out msg);
                var retMsg = msg;
                if (count > 0)
                {
                    //成功不需要写文字
                    //msg = "出库任务生成成功:" + retMsg;
                }
                else if (count == 0)
                {
                    msg = "出库任务已在任务队列中:" + retMsg;
                }
                else
                {
                    msg = "出库任务生成失败!:" + retMsg;
                }
            }
            else
            {
                msg = "要出库的物料没有可用库存";
            }
            //Alert.Show(msg);
            //WriteLog("库位物料出库" + msg, "库存管理");
        }
    }
}