hudong
2025-06-18 fb5c3be6709ba89053dc75c9fabfb94cb89c6be1
修改重点逻辑修改
定时充电优化
1个文件已添加
6个文件已修改
159 ■■■■ 已修改文件
HH.WCS.Mobox3.pinggao.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Program.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsSpaHelper.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/WCSCore.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dispatch/NDC.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/CGRels.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
process/TaskProcess.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.pinggao.csproj
@@ -190,6 +190,7 @@
    <Compile Include="HH\WCS\Mobox3\pinggao\models\SapRo1ot.cs" />
    <Compile Include="models\BaseModel.cs" />
    <Compile Include="models\Area.cs" />
    <Compile Include="models\CGRels.cs" />
    <Compile Include="models\DAPING.cs" />
    <Compile Include="models\MaterialVoucher.cs" />
    <Compile Include="models\OutboundRecord.cs" />
Program.cs
@@ -116,6 +116,8 @@
                tasks.Add(GetTask(WMSCore.CheckDistributionCNTROrder));
                //tasks.Add(GetTask(WMSCore.TransportTask));
                tasks.Add(GetTask(WCSCore.Dispatch));
                //定时重置
                tasks.Add(GetTask(WCSCore.DSCZ));
                tasks.Add(GetTask(WCSCore.Dispatch1));
                //添加自定义线程
api/WmsSpaHelper.cs
@@ -1895,11 +1895,16 @@
                        }
                        else if (!string.IsNullOrEmpty(model.item_code))
                        {
                            var starts = db.Queryable<CntrItemRel>().Where(cir => cir.S_CNTR_TYPE == "半托" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault();
                            if (starts!=null)
                         var khsta=   db.Queryable<CGRels>().Where(cir => cir.S_CNTR_TYPE == "半托" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault();
                            if (khsta != null)
                            {
                                LogHelper.Info($"starts{starts}");
                                var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == starts.S_CNTR_CODE).ToList().FirstOrDefault();
                                LogHelper.Info($"starts{khsta}");
                                var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.S_CNTR_CODE).ToList().FirstOrDefault();
                                LogHelper.Info($"starts1{starts12}");
                                start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault();
                                LogHelper.Info($"starts2{start}");
@@ -1908,17 +1913,27 @@
                            }
                            else
                            {
                                var starts = db.Queryable<CntrItemRel>().Where(cir => cir.S_CNTR_TYPE == "半托" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault();
                                if (starts!=null)
                                {
                                    LogHelper.Info($"{model.cntr_code}容器货品存在该物料,请配置物料容器");
                                    result.resultMsg = $"容器货品存在该物料,请配置物料容器";
                                    result.resultCode = 1;
                                    return result;
                                }
                                else
                                {
                                var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray();
                                var S_LOC_CODElist = db.Queryable<LocCntrRel>().Where(s => !list.Contains(s.S_CNTR_CODE)).Select(s => s.S_LOC_CODE).ToArray();
                                start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).ToList().FirstOrDefault();
                                var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault();
                                model.cntr_code = starts12?.S_CNTR_CODE;
                                }
                            }
                           
                        }
@@ -3143,6 +3158,23 @@
                                #endregion
                                if (cntr != null)
                                {
                                    #region 客户指定容器表
                                    var cir2 = db.Queryable<CGRels>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.N_BS_ROW_NO == item.N_ROW_NO ).First();
                                    if (cir2 != null)
                                    {
                                        cir2.S_CNTR_TYPE = S_CNTR_TYPE;
                                        db.Updateable(cir2).UpdateColumns(it => new {  it.S_CNTR_TYPE }).ExecuteCommand();
                                    }
                                    else
                                    {
                                        //2.插入新的容器物料信息(容器号不变S_SERIAL_NO = item.S_SERIAL_NO,)
                                        cir2 = new CGRels { S_CNTR_TYPE = S_CNTR_TYPE, S_CNTR_CODE = cntr.S_CODE.Trim(), N_BS_ROW_NO = item.N_ROW_NO, S_ITEM_CODE = item.item_code };
                                        db.Insertable<CGRels>(cir2).ExecuteCommand();
                                    }
                                    #endregion
                                    #region 1.查看是否有相同物料批次的信息,如果有要累加,不同批次的可以分开
                                    var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.S_BATCH_NO == item.S_BATCH_NO && a.N_BS_ROW_NO == item.N_ROW_NO && a.S_BS_NO == item.arrival_no).First();
                                    if (cir != null)
@@ -3252,7 +3284,7 @@
                                        S_DO_NO = itemscddll.LLDH,
                                        S_AREA_CODE = "HJQ",
                                        N_ROW_NO = "",
                                        S_ITEM_CODE = a.WLBM,
                                        S_ITEM_CODE = a.ZJBM,
                                        S_ITEM_NAME = "",
                                        F_QTY = a.XQSL,
                                        S_ZJBM = a.ZJBM,
@@ -3354,7 +3386,7 @@
                    db.BeginTran();
                    foreach (var itemscddll in model.ROOT.SCDDLL)
                    {
                        var wlbmList = itemscddll.ITEM.Select(x => x.WLBM).Distinct().ToList();
                        var wlbmList = itemscddll.ITEM.Select(x => x.ZJBM).Distinct().ToList();
                        var itemlist = db.Queryable<TN_Material>()
                        .Where(it => wlbmList.Contains(it.S_ITEM_CODE))  // 使用 IN 查询
                        .ToList();
@@ -3377,13 +3409,13 @@
                            {
                                foreach (var a in itemscddll.ITEM)
                                {
                                    var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault();
                                    var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault();
                                    if (item == null)
                                    {
                                        lLDReturnRoots.GC = itemscddll.GC;
                                        lLDReturnRoots.LLDH = itemscddll.LLDH;
                                        lLDReturnRoots.MSGCODE = 1;
                                        lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                        lLDReturnRoots.MSGDESP = $"物料{a.ZJBM}物料主数据不存在该物料";
                                        iTEMs.Add(lLDReturnRoots);
                                        continue;
@@ -3393,7 +3425,7 @@
                                        S_DO_NO = itemscddll.LLDH,
                                        S_AREA_CODE = "HJQ",
                                        N_ROW_NO = "",
                                        S_ITEM_CODE = a.WLBM,
                                        S_ITEM_CODE = a.ZJBM,
                                        S_ITEM_NAME = item?.S_ITEM_NAME,
                                        F_QTY = a.XQSL,
                                        S_ZJBM = a.ZJBM,
@@ -3468,21 +3500,21 @@
                                        lLDReturnRoots.GC = itemscddll.GC;
                                        lLDReturnRoots.LLDH = itemscddll.LLDH;
                                        lLDReturnRoots.MSGCODE = 1;
                                        lLDReturnRoots.MSGDESP = $"执行中领料单,物料{a.WLBM}物料不允许删除";
                                        lLDReturnRoots.MSGDESP = $"执行中领料单,物料{a.ZJBM}物料不允许删除";
                                        iTEMs.Add(lLDReturnRoots);
                                        continue;
                                    }
                                    var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList();
                                    var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).ToList();
                                    if (po1.Count() == 0)  //无则新增物料明细
                                    {
                                        var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault();
                                        var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault();
                                        if (item == null)
                                        {
                                            ;
                                            lLDReturnRoots.GC = itemscddll.GC;
                                            lLDReturnRoots.LLDH = itemscddll.LLDH;
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                            lLDReturnRoots.MSGDESP = $"物料{a.ZJBM}物料主数据不存在该物料";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                        }
@@ -3491,7 +3523,7 @@
                                            S_DO_NO = itemscddll.LLDH,
                                            S_AREA_CODE = "HJQ",
                                            N_ROW_NO = "",
                                            S_ITEM_CODE = a.WLBM,
                                            S_ITEM_CODE = a.ZJBM,
                                            S_ITEM_NAME = item.S_ITEM_NAME,
                                            F_QTY = a.XQSL,
                                            S_ZJBM = a.ZJBM,
@@ -3524,7 +3556,7 @@
                                            lLDReturnRoots.GC = itemscddll.GC;
                                            lLDReturnRoots.LLDH = itemscddll.LLDH;
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"更新失败,更新数量必须大于当前物料数量{a.WLBM}";
                                            lLDReturnRoots.MSGDESP = $"更新失败,更新数量必须大于当前物料数量{a.ZJBM}";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                        }
@@ -3538,40 +3570,40 @@
                                {
                                    if (a.LLDSCBS == "Y")//如果是删除标识则删除当前所属出库单明细 不是删除标记 则进行增改判断
                                    {
                                        var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).FirstOrDefault();
                                        var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).FirstOrDefault();
                                        if (po1 != null)  //无则新增物料明细
                                        {
                                            tN_Ll_Details.Add(po1);
                                            //   db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand();
                                            //   db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.ZJBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand();
                                        }
                                        else
                                        {
                                            //result.code = 1;
                                            //result.msg = $"物料{a.WLBM}物料数据不存在 无法删除";
                                            //throw new Exception($"物料{a.WLBM}物料数据不存在 无法删除");
                                            //result.msg = $"物料{a.ZJBM}物料数据不存在 无法删除";
                                            //throw new Exception($"物料{a.ZJBM}物料数据不存在 无法删除");
                                            lLDReturnRoots.GC = itemscddll.GC;
                                            lLDReturnRoots.LLDH = itemscddll.LLDH;
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"删除的物料{a.WLBM}物料数据不存在 无法删除";
                                            lLDReturnRoots.MSGDESP = $"删除的物料{a.ZJBM}物料数据不存在 无法删除";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                        }
                                    }
                                    else
                                    {
                                        var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList();
                                        var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).ToList();
                                        if (po1.Count() == 0)  //无则新增物料明细
                                        {
                                            var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault();
                                            var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault();
                                            if (item == null)
                                            {
                                                //result.code = 1;
                                                //result.msg = $"物料{a.WLBM}物料主数据不存在该物料";
                                                //throw new Exception($"物料{a.WLBM}物料主数据不存在该物料");
                                                //result.msg = $"物料{a.ZJBM}物料主数据不存在该物料";
                                                //throw new Exception($"物料{a.ZJBM}物料主数据不存在该物料");
                                                lLDReturnRoots.GC = itemscddll.GC;
                                                lLDReturnRoots.LLDH = itemscddll.LLDH;
                                                lLDReturnRoots.MSGCODE = 1;
                                                lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                                lLDReturnRoots.MSGDESP = $"物料{a.ZJBM}物料主数据不存在该物料";
                                                iTEMs.Add(lLDReturnRoots);
                                                continue;
                                            }
@@ -3580,7 +3612,7 @@
                                                S_DO_NO = itemscddll.LLDH,
                                                S_AREA_CODE = "HJQ",
                                                N_ROW_NO = "",
                                                S_ITEM_CODE = a.WLBM,
                                                S_ITEM_CODE = a.ZJBM,
                                                S_ITEM_NAME = item.S_ITEM_NAME,
                                                F_QTY = a.XQSL,
                                                S_ZJBM = a.ZJBM,
core/WCSCore.cs
@@ -141,11 +141,18 @@
            }
        } internal static void Dispatch1() {
        }
        internal static void Dispatch1() {
            //查询任务
            //获取所有等待的任务
            TaskProcess.SendCd();
        }
        internal static void DSCZ()
        {
            //查询任务
            //获取所有等待的任务
            TaskProcess.SendCZ();
        }
        /// <summary>
        /// 杭奥堆垛机信号反馈
dispatch/NDC.cs
@@ -79,11 +79,12 @@
            }
        }
        private static string GetReqStr(int ts, Dictionary<string, string> param)
        {
            //< Order  TS = '60'  Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_TN_Location + "' To = '" + end.CN_N_AGV_TN_Location + "'  No = '" + mst.S_CODE + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "'  N_CNTR_COUNT = ''   FRow = '" + sFloor + "'  TRow = '" + eFloor + "' />
            var sb = new StringBuilder();
            sb.Append($"<Req> ");
            sb.Append($"<Req><Order ");
            if (ts != 0)
            {
                sb.Append($"TS='{ts}'");
models/CGRels.cs
New file
@@ -0,0 +1,23 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WCS.Mobox3.pinggao.models
{
    [SugarTable("TN_CG_DETAILS")]
    public class CGRels : BaseModel
    {
        //public string S_CG_ID { get; set; }
        /// <summary>
        /// 产品序列号
        /// </summary>
        public string S_CNTR_TYPE { get; set; }
        public string S_CNTR_CODE { get; set; }
        public string N_BS_ROW_NO { get; set; }
        public string S_ITEM_CODE { get; set; }
    }
}
process/TaskProcess.cs
@@ -588,12 +588,7 @@
                DateTime currentDate = DateTime.Now;
                // 格式化输出时分部分
                string currentHourMinute = currentDate.ToString("HH:mm");
                if (currentHourMinute == "00:00")
                {
                    dstart.N_STATE = 0;
                    db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand();
                }
                if (dstart.S_TIME == currentHourMinute)
                {
                    var dic = new Dictionary<string, string>();
@@ -636,6 +631,30 @@
            return result;
        }
        public static bool SendCZ()
        {
            var db = new SqlHelper<object>().GetInstance();
            var dstart = db.Queryable<TN_CD>().Where(s => s.N_STATE == 1).First();
            var result = false;
            if (dstart != null)
            {
                DateTime currentDate = DateTime.Now;
                // 格式化输出时分部分
                string currentHourMinute = currentDate.ToString("HH:mm");
                if (currentHourMinute == "00:00")
                {
                    dstart.N_STATE = 0;
                    db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand();
                }
                result = true;
            }
            return result;
        }
        /// <summary>
        /// 推送任务
        /// </summary>