Admin
2025-12-03 d41acebbd89f171b0eeb205fca4f68043ca85f95
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ToAPP/Partial/SaveCZInfo.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using Masuit.Tools;
using Newtonsoft.Json;
using SharpCompress.Compressors.Xz;
using System.Reflection.Emit;
using WIDESEA_Common;
@@ -18,15 +19,20 @@
    public partial class ToAPPService
    {
        /// <summary>
        /// ä¿å­˜è½¦è½´æ•°æ®
        /// ä¿å­˜è½¦è½´æ•°æ®ï¼ˆè½¦è½®é€‰é…ï¼‰
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent SaveCZInfo(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                string CZjson = Newtonsoft.Json.JsonConvert.SerializeObject(saveModel, Newtonsoft.Json.Formatting.Indented);
                // æå–任务数据
                LogFactory.GetLog("车轮选配出库接收车轴数据").Info(true, $"车轴传递的数据:{CZjson}");
                //如当前存在未开始入库的车轮或制动盘数据,则禁止保存新数据 ä»¥é˜²æ•°æ®æ··ä¹±
                var waitInbound = _CZInfo_MesRepository.QueryFirst(x => x.CurrentStatue == "0");
                if (waitInbound != null) throw new Exception("当前存在未开始入库的车轴数据,请先上架启动后再保存信息!");
@@ -138,6 +144,19 @@
                string wxrw = saveModel.MainData["wxrw"].ToString();
                if (string.IsNullOrEmpty(wxrw)) throw new Exception("选配失败:维修任务参数为空");
                int zuixiaoz = 0;
                int zuidaz = 0;
                if (newOrOld == "1")
                {
                    //最小值
                     zuixiaoz = int.Parse(saveModel.MainData["zuixiaoz"].ToString());
                    //最大值
                     zuidaz = int.Parse(saveModel.MainData["zuidaz"].ToString());
                }
                string level = string.Empty;
                //string rightlevel = string.Empty;
                if ("all".Equals(wheelsPosition))
@@ -163,6 +182,8 @@
                if (rw != newOrOld) throw new Exception("选配失败:选配新旧轮与维修任务解析不一致");
                string wheelsProps = CheckTaskChangeHelper.CheckTaskwheelsProps(wxrw);
                Dt_SelectionStandards selectionStandards = _SelectionStandardsRepository.QueryFirst(x => x.CarType.Contains(Cartype) && x.mttype == mttype && x.neworold == newOrOld && level.Contains(x.gkdj));
                if (selectionStandards == null) throw new Exception($"此车型{Cartype}的选配标准异常,请核对选配标准信息!");
@@ -174,7 +195,7 @@
                    Creater = "admin",
                    CurrentStatue = "1",
                    CZH = czh,
                    CZXH = czxh,
                    CZXH = czxh,    //车轴型号
                    LDTM = ldtm,
                    MTTYPE = mttype,
                    ZLZA1 = zlzA1,
@@ -205,8 +226,11 @@
                    YLZZJ = ylzzj,
                    ZLZDJ = leftLevel,
                    YLZDJ = rightLevel,
                    WXRW = wxrw
                    WXRW = wxrw,
                    TemporaryState=0,
                };
                //左出库车轮
                Dt_WheelsStock leftContainer = null;
@@ -217,8 +241,83 @@
                var hourpara = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_Parameters, SysConfigConst.TempHour);
                int hour = hourpara.ConfigValue.ObjToInt();
                //找出所有符合条件的库存车轮
                var WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now);
                List<Dt_WheelsStock> WheelsList = null;
                //特殊车轴型号()
                //M1A  å¯¹åº” è½¦åž‹    CRH1A  CRH1A-200
                //M1B  å¯¹åº” è½¦åž‹    CRH1B  CRHA1A-250
                //M1C  å¯¹åº” è½¦åž‹    CRH1C  CRH1A-A
                if (czxh == "M1A")
                {
                    if (CZInfo_Mes.MTTYPE == "T")
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && (x.Wheels_CarType == "CRH1A" || x.Wheels_CarType == "CRH1A-200") && x.Wheels_Statue == 0);
                    }
                    else
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1A" || x.Wheels_CarType == "CRH1A-200") && x.Wheels_Statue == 0);
                    }
                }
                else if (czxh == "M1B")
                {
                    if (CZInfo_Mes.MTTYPE == "T")
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && (x.Wheels_CarType == "CRH1B" || x.Wheels_CarType == "CRHA1A-250") && x.Wheels_Statue == 0);
                    }
                    else
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1B" || x.Wheels_CarType == "CRHA1A-250") && x.Wheels_Statue == 0);
                    }
                }
                else if (czxh == "M1C")
                {
                    if (CZInfo_Mes.MTTYPE == "T")
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && (x.Wheels_CarType == "CRH1C" || x.Wheels_CarType == "CRH1A-A") && x.Wheels_Statue == 0);
                    }
                    else
                    {
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1C" || x.Wheels_CarType == "CRH1A-A") && x.Wheels_Statue == 0);
                    }
                }
                else
                {
                    if (CZInfo_Mes.MTTYPE == "T")
                    {
                        //找出所有符合条件的库存车轮
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.Wheels_Statue == 0);
                    }
                    else
                    {
                        //找出所有符合条件的库存车轮
                        WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && x.Wheels_Statue == 0);
                    }
                }
                if (newOrOld=="1")
                {
                    //foreach (var item in WheelsList)
                    //{
                    //    decimal ygrjz = decimal.Parse(item.Wheels_ygljz);
                    //    if (ygrjz < zuixiaoz || ygrjz > zuidaz)
                    //    WheelsList.Remove(item);
                    //}
                    foreach (var item in WheelsList.ToList())
                    {
                        decimal ygrjz = decimal.Parse(item.Wheels_ygljz);
                        if (ygrjz < zuixiaoz || ygrjz > zuidaz)
                            WheelsList.Remove(item);
                    }
                }
                //x.Wheels_CarType  == CZInfo_Mes.CHEXING && x.Wheels_ldtm == CZInfo_Mes.LDTM && selectionStandards.CarType.Contains(x.Wheels_CarType)
                if (null != WheelsList && WheelsList.Count > 0)
                {
@@ -226,37 +325,47 @@
                    {
                        if (null == leftContainer)
                        {
                            leftContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "left", newOrOld);
                            leftContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "left", newOrOld, 2);
                            if (null != leftContainer)
                                WheelsList.Remove(leftContainer);
                        }
                        if (null == rightContainer)
                        {
                            rightContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "right", newOrOld);
                            rightContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "right", newOrOld, 2);
                            if (null != rightContainer)
                                WheelsList.Remove(rightContainer);
                        }
                        //if (null == leftContainer || null == rightContainer)
                        if (null == leftContainer || null == rightContainer)
                            return content.Error("未找到两侧可匹配的出库车轮,车型:" + Cartype);
                        if(newOrOld == "1")
                        {
                            //此处判断两个预估值相减,是否在范围内
                            decimal difference = decimal.Parse(leftContainer.Wheels_ygljz) - decimal.Parse(rightContainer.Wheels_ygljz);
                            decimal absoluteDifference = Math.Abs(difference);
                            if (absoluteDifference > selectionStandards.Estimatedvalue)
                            {
                                return content.Error("未找到两侧可匹配的出库车轮,预估值不在范围内,车型:" + Cartype);
                            }
                        }
                    }
                    else if ("left".Equals(wheelsPosition))
                    {
                        leftContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "left", newOrOld);
                        leftContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "left", newOrOld , 1);
                        //if (null == leftContainer)
                    }
                    else if ("right".Equals(wheelsPosition))
                    {
                        rightContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "right", newOrOld);
                        rightContainer = _WheelsStockService.GetSelectionWheelsStock(WheelsList, selectionStandards, CZInfo_Mes, "right", newOrOld ,1);
                        //if (null == rightContainer)
                    }
                }
                if ("all".Equals(wheelsPosition))
                {
                    if (null == leftContainer || null == rightContainer)
                        return content.Error("未找到两侧可匹配的出库车轮,车型:" + Cartype);
                }
                if (null != leftContainer || null != rightContainer)
                {
@@ -264,6 +373,7 @@
                    List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
                    List<Dt_WheelsStock> wheelsStocks = new List<Dt_WheelsStock>();
                    List<WMSTaskDTO> listTaskDTO = new List<WMSTaskDTO>();
                    if (null != leftContainer)
                    {
                        Dt_Task leftTask = CreateOutTask(leftContainer, czCode);
@@ -306,13 +416,16 @@
                            WheelsNewOrOld = leftContainer.Wheels_NewOrOld,
                            wheels_gkcc = leftContainer.Wheels_gkcc,
                            wheels_mttype = leftContainer.Wheels_mttype,
                            WheelsLX = leftContainer.Wheels_ldxh
                            WheelsLX = leftContainer.Wheels_ldxh,
                            axle_czh= czCode,
                        };
                        listTask.Add(leftTask);
                        listTaskDTO.Add(leftTaskDTO);
                        wheelsStocks.Add(leftContainer);
                        locationInfos.Add(lefolocation);
                        CZInfo_Mes.LeftCLTM = leftContainer.Wheels_Num;
                        CZInfo_Mes.LeftCLinterference= (decimal.Parse(CZInfo_Mes.ZLZZJ) -decimal.Parse(leftContainer.Wheels_gkcc)).ToString();
                    }
                    if (null != rightContainer)
                    {
@@ -361,6 +474,8 @@
                        listTaskDTO.Add(rihgtTaskDTO);
                        wheelsStocks.Add(rightContainer);
                        locationInfos.Add(rightlocation);
                        CZInfo_Mes.RightCLTM = rightContainer.Wheels_Num;
                        CZInfo_Mes.RightCLinterference = (decimal.Parse(CZInfo_Mes.YLZZJ) - decimal.Parse(rightContainer.Wheels_gkcc)).ToString();
                    }
                    _unitOfWorkManage.BeginTran(); //开启事务
@@ -396,6 +511,18 @@
                        WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());
                        if (respone.Status)
                        {
                            LogFactory.GetLog("车轮选配出库").Info(true, $"\r\r-----------------------------------------------------------");
                            LogFactory.GetLog("车轮选配出库").Info(true, $"车轴编号:{CZInfo_Mes.CZH}");
                            // æå–任务数据
                            LogFactory.GetLog("车轮选配出库").Info(true, $"车轴传递的数据:{CZjson}");
                            LogFactory.GetLog("车轮选配出库").Info(true, $"\r\r>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                            LogFactory.GetLog("车轮选配出库").Info(true, $"筛选的车轮数据:{wheelsStocks.ToJsonString()}");
                            LogFactory.GetLog("车轮选配出库").Info(true, $"\r\r-----------------------------------------------------------");
                            _unitOfWorkManage.CommitTran();  //提交事务
                            content.OK($"车轮出库任务下发给WCS成功.");
                        }