已修改8个文件
322 ■■■■ 文件已修改
DEmon/WebWIPAPI/Controllers/MesIntegrController.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareCc/CreateMainTask/chain/保存生成的入库任务.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareCc/CreateMainTask/chain/根据扫码生成入库主任务.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareCc/CreateOutMainTask/chain/保存生成的出库任务.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareCc/CreateOutMainTask/chain/生成出库主任务.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareDataCore/ORM/TASKMainTask.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DEmon/iWareDataCore/TASK/Entity/MainTaskEntity.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,17 @@
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importInOrder", "");
                }
                if (importMaterials.Select(x => x.Code).Distinct().Count() != 1)
                {
                    responseMessage = new ApiResponse<string>()
                    {
                        Code = 500,
                        Success = false,
                        Message = "本次请求中物料号不能重复",
                        Data = null,
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                }
                #endregion
                #region ä¸šåŠ¡å¤„ç†
@@ -179,7 +193,7 @@
        ///// <summary>
        ///// å¯¼å…¥å‡ºåº“单-版本1
        ///// å¯¼å…¥å‡ºåº“单-版本1(使用出库单据的版本)
        ///// </summary>
        ///// <param name="inputmaterials"></param>
        ///// <returns></returns>
@@ -261,7 +275,7 @@
        /// <summary>
        /// å¯¼å…¥å‡ºåº“单-版本2
        /// å¯¼å…¥å‡ºåº“单-版本2(选择库存出库的版本)
        /// </summary>
        /// <param name="inputmaterials"></param>
        /// <returns></returns>
@@ -296,12 +310,24 @@
                    };
                    return ApiResponseHelper.ReturnApiResponse(responseMessage, "importOutOrder", "");
                }
                if (inputmaterials.Select(x => x.Code).Distinct().Count() != 1)
                {
                    responseMessage = new ApiResponse<string>()
                    {
                        Code = 500,
                        Success = false,
                        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 +465,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, "库存管理");
        }
    }
}
DEmon/iWareCc/CreateMainTask/chain/±£´æÉú³ÉµÄÈë¿âÈÎÎñ.cs
@@ -12,7 +12,7 @@
namespace iWareCc.CreateMainTask.chain
{
    public  class ä¿å­˜ç”Ÿæˆçš„入库任务: IHandler
    public class ä¿å­˜ç”Ÿæˆçš„入库任务 : IHandler
    {
        /// <summary>
        /// è¯¥èŠ‚ç‚¹çš„ä¸‹ä¸€ä¸ªèŠ‚ç‚¹
@@ -23,7 +23,7 @@
            set { nextHandler = value; }
        }
         private ConveyorEntity Conveyor;
        private ConveyorEntity Conveyor;
        private MainTaskContainer MainTaskContainer;
@@ -46,8 +46,12 @@
                try
                {
                    var task = MainTaskContainer.MainTask;
                    var mater = dbModel.BASEMaterials.FirstOrDefault(x=>x.code==task.MaterialCode);
                    var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.materialid == mater.id);
                    var mater = dbModel.BASEMaterials.FirstOrDefault(x => x.code == task.MaterialCode);
                    //修复bug:查询出入库单据信息 ã€Editby shaocx,2025-09-29】
                    //var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.materialid == mater.id);
                    var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.id == task.InOutListDetailId);
                    inoutlistdetail.isfinish = 1;
                    dbModel.TASKMainTasks.Add(task.ToOrm());
DEmon/iWareCc/CreateMainTask/chain/¸ù¾ÝɨÂëÉú³ÉÈë¿âÖ÷ÈÎÎñ.cs
@@ -17,7 +17,7 @@
namespace iWareCc.CreateMainTask.chain
{
  public  class æ ¹æ®æ‰«ç ç”Ÿæˆå…¥åº“主任务: IHandler
    public class æ ¹æ®æ‰«ç ç”Ÿæˆå…¥åº“主任务 : IHandler
    {
        /// <summary>
        /// è¯¥èŠ‚ç‚¹çš„ä¸‹ä¸€ä¸ªèŠ‚ç‚¹
@@ -62,7 +62,7 @@
                            var placematerial = dbModel.BASEPlaceMaterialViews.FirstOrDefault(x => x.materialcode == sc.RCheckMaterialCode.Trim());
                            if (placematerial != null)
                            {
                                // alarm.SendGateAlarmTask((int)ESendCode.已在立库中不能入库);
                                LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成入库主任务流程", "物料号:{0}", sc.RCheckMaterialCode + "已在立库中");
                                sc.RCheckMaterialCode = "";
@@ -82,7 +82,7 @@
                                return;
                            }
                            var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == sc.RCheckMaterialCode.Trim() && x.tasktype == (int)EMainTaskType.入库任务&&x.status==0);
                            var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == sc.RCheckMaterialCode.Trim() && x.tasktype == (int)EMainTaskType.入库任务 && x.status == 0);
                            if (task != null)
                            {
                                //alarm.SendGateAlarmTask((int)ESendCode.已存在该任务);
@@ -117,6 +117,10 @@
                                islots = 0,
                                priority = 0,
                                //赋值 ã€Editby shaocx,2025-09-29】
                                InOutListDetailId = inoutlistdetail.id,
                                //ListNo = inoutlistdetail.listno,
                            };
                            MainTaskContainer.MainTask = new MainTaskEntity(matask);
                        }
@@ -133,12 +137,12 @@
                            nextHandler.Handle();
                        }
                    }
                    else
                    else
                    {
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成入库主任务流程", "未检测到有扫码信息");
                        return;
                    }
                }
                catch (Exception ex)
                {
DEmon/iWareCc/CreateOutMainTask/chain/±£´æÉú³ÉµÄ³ö¿âÈÎÎñ.cs
@@ -11,7 +11,7 @@
namespace iWareCc.CreateOutMainTask.chain
{
   public class ä¿å­˜ç”Ÿæˆçš„出库任务 : IHandler
    public class ä¿å­˜ç”Ÿæˆçš„出库任务 : IHandler
    {
        /// <summary>
        /// è¯¥èŠ‚ç‚¹çš„ä¸‹ä¸€ä¸ªèŠ‚ç‚¹
@@ -29,7 +29,7 @@
        /// </summary>
        /// <param name="resultContainer">结果容器</param>
        /// <param name="decompositionTaskContainer">WIP任务容器</param>
        public ä¿å­˜ç”Ÿæˆçš„出库任务( MainTaskContainer decompositionTaskContainer)
        public ä¿å­˜ç”Ÿæˆçš„出库任务(MainTaskContainer decompositionTaskContainer)
        {
            this.MainTaskContainer = decompositionTaskContainer;
        }
@@ -43,7 +43,11 @@
                {
                    var task = MainTaskContainer.MainTask;
                    var mater = dbModel.BASEMaterials.FirstOrDefault(x => x.code == task.MaterialCode);
                    var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.materialid == mater.id);
                    //修复bug:查询出入库单据信息 ã€Editby shaocx,2025-09-29】
                    //var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.materialid == mater.id);
                    var inoutlistdetail = dbModel.BASEInOutListDetails.FirstOrDefault(x => x.id == task.InOutListDetailId);
                    inoutlistdetail.isfinish = 1;
                    dbModel.TASKMainTasks.Add(task.ToOrm());
DEmon/iWareCc/CreateOutMainTask/chain/Éú³É³ö¿âÖ÷ÈÎÎñ.cs
@@ -15,7 +15,7 @@
namespace iWareCc.CreateOutMainTask.chain
{
    public class ç”Ÿæˆå‡ºåº“主任务: IHandler
    public class ç”Ÿæˆå‡ºåº“主任务 : IHandler
    {
        /// <summary>
        /// è¯¥èŠ‚ç‚¹çš„ä¸‹ä¸€ä¸ªèŠ‚ç‚¹
@@ -33,7 +33,7 @@
        /// </summary>
        /// <param name="resultContainer">结果容器</param>
        /// <param name="decompositionTaskContainer">WIP任务容器</param>
        public ç”Ÿæˆå‡ºåº“主任务( MainTaskContainer mainTaskContainer)
        public ç”Ÿæˆå‡ºåº“主任务(MainTaskContainer mainTaskContainer)
        {
            this.MainTaskContainer = mainTaskContainer;
        }
@@ -47,8 +47,8 @@
                try
                {
                    var inoutlistdetail = dbModel.BASEInOutListDetailViews.FirstOrDefault(x =>x.isfinish== 0&&x.typename=="出库");
                    var inoutlistdetail = dbModel.BASEInOutListDetailViews.FirstOrDefault(x => x.isfinish == 0 && x.typename == "出库");
                    if (inoutlistdetail == null)
                    {
@@ -58,24 +58,24 @@
                    string materialcode = inoutlistdetail.materialcode;
                    var placematerial = dbModel.BASEPlaceMaterialViews.FirstOrDefault(x => x.materialcode == materialcode);
                    if (placematerial == null)
                     {
                         inoutlistdetail.isfinish = 1;
                         dbModel.SaveChanges();
                                     // alarm.SendGateAlarmTask((int)ESendCode.已在立库中不能入库);
                         LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", materialcode + "不在立库中");
                    {
                        inoutlistdetail.isfinish = 1;
                        dbModel.SaveChanges();
                        // alarm.SendGateAlarmTask((int)ESendCode.已在立库中不能入库);
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", materialcode + "不在立库中");
                        return;
                     }
                    }
                    var tasknew = dbModel.TASKPartTasks.FirstOrDefault(x => x.type == (int)EPartTaskType.输送机任务 && x.isreleased == (int)EYesOrNo.否 && x.isfinished == (int)EYesOrNo.否 && x.materialcode == materialcode && x.maintasktype == (int)EMainTaskType.出库任务);
                    if (tasknew != null)
                    {
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", materialcode + "已在要执行的任务序列中");
                          return;
                        return;
                    }
                    var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == materialcode && x.tasktype == (int)EMainTaskType.出库任务&&x.status == 0);
                    var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == materialcode && x.tasktype == (int)EMainTaskType.出库任务 && x.status == 0);
                    if (task != null)
                    {
                       LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", "该任务已存在");
                       return;
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动生成出库主任务流程", "物料号:{0}", "该任务已存在");
                        return;
                    }
                    TASKMainTask matask = new TASKMainTask()
                    {
@@ -95,9 +95,14 @@
                        decompositiontimes = 0,
                        islots = 0,
                        priority = 0,
                        //赋值 ã€Editby shaocx,2025-09-29】
                        InOutListDetailId = inoutlistdetail.id,
                        ListNo = inoutlistdetail.listno,
                    };
                    MainTaskContainer.MainTask = new MainTaskEntity(matask);
                    if (nextHandler != null)
                    {
                        nextHandler.Handle();
DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs
@@ -43,12 +43,12 @@
        /// <summary>
        /// èŽ·å–å„ç§çŠ¶æ€çš„åº“ä½
        /// </summary>
        /// <returns></returns>
        public List<PlaceStatusNumEntity> GetPlaceStatusNum(out string msg)
        public List<PlaceStatusNumEntity> GetPlaceStatusNum(out string msg)
        {
            msg = "";
            List<PlaceStatusNumEntity> psnlst = new List<PlaceStatusNumEntity>();
@@ -77,7 +77,7 @@
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public List<PlaceMaterialViewEntity> GetPlacePreview(out string msg)
        public List<PlaceMaterialViewEntity> GetPlacePreview(out string msg)
        {
            msg = "";
            List<PlaceMaterialViewEntity> psnlst = new List<PlaceMaterialViewEntity>();
@@ -119,7 +119,7 @@
                    return mcore.BASEPlaceMaterialViews.FirstOrDefault(x => x.materialcode == materialcode).placecode;
                }
            }
            catch (Exception ex)
            {
@@ -128,5 +128,40 @@
            }
        }
        /// <summary>
        /// æ ¹æ®ç‰©æ–™ä¿¡æ¯åˆ—表找取指定的库位物料信息 ã€Editby shaocx,2025-09-29】
        /// </summary>
        /// <param name="materialcode"></param>
        /// <returns></returns>
        public List<int> GetPlaceMaterialViewsByCodeList(List<string> materialcodeList, out string msg)
        {
            msg = "";
            try
            {
                using (DbModelCore mcore = new DbModelCore())
                {
                    var list = mcore.BASEPlaceMaterialViews.Where(x => materialcodeList.Contains(x.materialcode)).ToList();
                    foreach (var item in list)
                    {
                        if (!materialcodeList.Contains(item.materialcode))
                        {
                            msg = $"唯一编码{item.materialcode}没有库存";
                            return null;
                        }
                    }
                    return list.Select(x => x.id).ToList();
                }
            }
            catch (Exception ex)
            {
                msg = "异常:" + ex.ToString();
                LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetPlaceMaterialViewsByCodeList", ex.Message);
                return null;
            }
        }
    }
}
DEmon/iWareDataCore/ORM/TASKMainTask.cs
@@ -51,5 +51,16 @@
        public int islots { get; set; }
        public int priority { get; set; }
        /// <summary>
        /// è¡¨BASEInOutListDetail的ID  ã€Editby shaocx,2025-09-29】
        /// </summary>
        public int? InOutListDetailId { get; set; }
        /// <summary>
        /// è¡¨BASEInOutList的ListNo   ã€Editby shaocx,2025-09-29】
        /// </summary>
        public string ListNo { get; set; }
    }
}
DEmon/iWareDataCore/TASK/Entity/MainTaskEntity.cs
@@ -10,79 +10,90 @@
namespace iWareDataCore.TASK.Entity
{
   public class MainTaskEntity : ICommonEntity<TASKMainTask>
    public class MainTaskEntity : ICommonEntity<TASKMainTask>
    {
        /// <summary>
        /// 1主任务主键
        /// </summary>  
        public int Id { get; set; }
       /// <summary>
       /// ç³»ç»Ÿç¼–号
       /// </summary>
        /// <summary>
        /// ç³»ç»Ÿç¼–号
        /// </summary>
        public string SysCode { get; set; }
       /// <summary>
       /// ä»»åŠ¡ç¼–å·
       /// </summary>
        /// <summary>
        /// ä»»åŠ¡ç¼–å·
        /// </summary>
        public string TaskNo { get; set; }
       /// <summary>
       /// å‘送时间
       /// </summary>
        /// <summary>
        /// å‘送时间
        /// </summary>
        public DateTime SendTime { get; set; }
       /// <summary>
       /// èµ·å§‹ä½ç½®
       /// </summary>
        /// <summary>
        /// èµ·å§‹ä½ç½®
        /// </summary>
        public string SourcePlace { get; set; }
       /// <summary>
       /// ç›®æ ‡ä½ç½®
       /// </summary>
        /// <summary>
        /// ç›®æ ‡ä½ç½®
        /// </summary>
        public string ToPlace { get; set; }
       /// <summary>
       /// æ‰¹æ¬¡å·
       /// </summary>
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public string ProcessCardNumber { get; set; }
       /// <summary>
       /// ç‰©æ–™å·
       /// </summary>
        /// <summary>
        /// ç‰©æ–™å·
        /// </summary>
        public string MaterialCode { get; set; }
       /// <summary>
       /// æ•°é‡
       /// </summary>
        /// <summary>
        /// æ•°é‡
        /// </summary>
        public int Quantity { get; set; }
       /// <summary>
       /// ä»»åŠ¡ç±»åž‹
       /// </summary>
        /// <summary>
        /// ä»»åŠ¡ç±»åž‹
        /// </summary>
        public int TaskType { get; set; }
       /// <summary>
       ///状态
       /// </summary>
        /// <summary>
        ///状态
        /// </summary>
        public int Status { get; set; }
       /// <summary>
       /// åˆ†è§£æ—¶é—´
       /// </summary>
        /// <summary>
        /// åˆ†è§£æ—¶é—´
        /// </summary>
        public DateTime DecompositionTime { get; set; }
       /// <summary>
       /// åé¦ˆçŠ¶æ€
       /// </summary>
        /// <summary>
        /// åé¦ˆçŠ¶æ€
        /// </summary>
        public int WipStatus { get; set; }
       /// <summary>
       /// åˆ†è§£æ¬¡æ•°
       /// </summary>
        /// <summary>
        /// åˆ†è§£æ¬¡æ•°
        /// </summary>
        public int DecompositionTimes { get; set; }
       /// <summary>
       /// å·¥åŒ…
       /// </summary>
        /// <summary>
        /// å·¥åŒ…
        /// </summary>
        public string PackageNo { get; set; }
       /// <summary>
       /// æ˜¯å¦æ‰¹æ¬¡å…¥åº“(0:否;1:是)
       /// </summary>
        /// <summary>
        /// æ˜¯å¦æ‰¹æ¬¡å…¥åº“(0:否;1:是)
        /// </summary>
        public int IsLots { get; set; }
       /// <summary>
       /// ä¼˜å…ˆçº§
       /// </summary>
        /// <summary>
        /// ä¼˜å…ˆçº§
        /// </summary>
        public int Priority { get; set; }
        /// <summary>
        /// è¡¨BASEInOutListDetail的ID  ã€Editby shaocx,2025-09-29】
        /// </summary>
        public int? InOutListDetailId { get; set; }
        /// <summary>
        /// è¡¨BASEInOutList的ListNo   ã€Editby shaocx,2025-09-29】
        /// </summary>
        public string ListNo { get; set; }
        public List<MaterialViewEntity> Materials { get; set; }
        /// <summary>
@@ -105,8 +116,8 @@
        /// <returns></returns>
        public static Dictionary<string, string> GetColumnMap()
        {
            return new Dictionary<string, string>()
            {
            return new Dictionary<string, string>()
            {
                {"Id", "id"},
                {"SysCode", "syscode"},
                {"TaskNo", "taskno"},
@@ -123,6 +134,8 @@
                {"DecompositionTimes","decompositiontimes"},
                {"IsLots","islots"},
                {"Priority","priority"},
                  {"InOutListDetailId","InOutListDetailId"},
                    {"ListNo","ListNo"},
                {"PackageNo","packageno"}
            };
        }
@@ -146,7 +159,7 @@
        }
        public static Dictionary<string, string> GetOutColumnMap()
        {
            return new Dictionary<string, string>()
            return new Dictionary<string, string>()
            { 
                //{"Id", "id"},
                {"SysCode", "syscode"},
@@ -164,6 +177,8 @@
                {"DecompositionTimes","decompositiontimes"},
                {"IsLots","islots"},
                {"Priority","priority"},
                  {"InOutListDetailId","InOutListDetailId"},
                    {"ListNo","ListNo"},
                {"PackageNo","packageno"}
            };
        }