xiaojiao
2026-03-23 f02d3a8ffc05a10a64859b2a16d5d43c8abb0fb9
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/BearingOutboundAction.cs
@@ -1,10 +1,12 @@
using Newtonsoft.Json;
using NPOI.HPSF;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using WIDESEA.Common;
using WIDESEA.Core.BaseProvider;
using WIDESEA.Core.Extensions;
using WIDESEA.Core.ManageUser;
using WIDESEA.Core.Services;
@@ -18,6 +20,7 @@
{
    public partial class CommonFunction
    {
        /// <summary>
        /// è½´æ‰¿å‡ºåº“
        /// </summary>
@@ -76,11 +79,16 @@
                foreach (var item in materielinfo)
                {
                    //        List<VV_ContainerInfo> listContainer = VV_ContainerInfoRepository.Instance.Find(r => !r.location_islocked
                    // && r.location_state == LocationState.LocationState_Stored.ToString() && r.containerdtl_madeUnit == Manufacturer
                    //&& r.containerdtl_standard.Contains(zcState) && r.materiel_id == item.materiel_id && r.containerdtl_standardResult == 1
                    // && (string.IsNullOrEmpty(r.csize_out_result) || r.csize_out_result == "合格") && r.containerdtl_qualityCheck == true
                    // && r.containerdtl_takeGoogsCheck == true);
                    List<VV_ContainerInfo> listContainer = VV_ContainerInfoRepository.Instance.Find(r => !r.location_islocked
             && r.location_state == LocationState.LocationState_Stored.ToString() && r.containerdtl_madeUnit == Manufacturer
            && r.containerdtl_standard.Contains(zcState) && r.materiel_id == item.materiel_id && r.containerdtl_standardResult == 1
             && (string.IsNullOrEmpty(r.csize_out_result) || r.csize_out_result == "合格") && r.containerdtl_qualityCheck == true
             && r.containerdtl_takeGoogsCheck == true);
            && r.containerdtl_standard.Contains(zcState) && r.materiel_id == materiel && r.containerdtl_standardResult == 1
             && (string.IsNullOrEmpty(r.csize_out_result) || r.csize_out_result == "合格"));
                    //listContainer = listContainer.OrderBy(x => DateTime.ParseExact(x.containerdtl_ProductDate,"yyyy-MM-dd",CultureInfo.InvariantCulture)).ToList();
@@ -181,6 +189,157 @@
            return content;
        }
        /// <summary>
        /// æ‰‹åŠ¨é€‰é…
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public static WebResponseContent Manual_configuration(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //轮对条码
                string barcode = saveModel.MainData["barcode"].ToString();
                //车型
                string materiel = saveModel.MainData["materiel"].ToString();
                //轴承状态新旧
                string zcState = saveModel.MainData["zcState"].ToString();
                //轴承厂家
                string Manufacturer = saveModel.MainData["Manufacturer"].ToString();
                //右防尘板
                string yfcbAVG = saveModel.MainData["yfcbAVG"]?.ToString();
                //左防尘板
                string zfcbAVG = saveModel.MainData["zfcbAVG"]?.ToString();
                //左油档
                string zydAVG = saveModel.MainData["zydAVG"]?.ToString();
                //右油档
                string yydAVG = saveModel.MainData["yydAVG"]?.ToString();
                //左轴径
                string zzjAVG = saveModel.MainData["zzjAVG"]?.ToString();
                //右轴径
                string yzjAVG = saveModel.MainData["yzjAVG"]?.ToString();
                //呼叫工位
                string targetStation = saveModel.MainData["targetStation"].ToString();
                //轴承方向
                string ZCdirection = saveModel.MainData["ZCdirection"].ToString();
                //轮对号
                string ldCode = saveModel.MainData["ldCode"].ToString();
                // åŽæ¡£å†…径值
                string csize_four_3 = saveModel.MainData["csize_four_3"].ToString();
                // åŽæ¡£å†…径结果
                string csize_four_result = saveModel.MainData["csize_four_result"].ToString();
                // è½´æ‰¿å†…径值
                string csize_in_value = saveModel.MainData["csize_in_value"].ToString();
                // è½´æ‰¿å†…径结果
                string csize_in_result = saveModel.MainData["csize_in_result"].ToString();
                // è½´æ‰¿ç¼–码
                string Bearing_code = saveModel.MainData["Bearing_code"].ToString();
                // èŽ·å–è½´æ‰¿è¯¦æƒ…æ•°æ®å’Œæµ‹é‡çš„æ•°æ®
                Dt_container_size_info_hty size_info_hty = Dt_container_size_info_htyRepository.Instance.Find(x => x.csize_barcode == Bearing_code).ToList().LastOrDefault();
                Dt_container_detail_hty detail_hty = Dt_container_detail_htyRepository.Instance.Find(x => x.containerdtl_goodsCode == Bearing_code).ToList().LastOrDefault();
                // æœ€ç»ˆçš„结果
                bool Flag = false;
                //左出库轴承
                VV_ContainerInfo leftContainer = null;
                //右出库轴承
                VV_ContainerInfo rightContainer = null;
                List<Dt_materielinfo> materielinfo = Dt_materielinfoRepository.Instance.Find(r => r.materiel_suitMateriel.Contains(materiel));
                //获取选配标准
                List<Dt_selection_standards> listStandard = null;
                foreach (var item in materielinfo)
                {
                    listStandard = Dt_selection_standardsRepository.Instance.Find(r => r.selection_carId == item.materiel_id
                 && r.selection_zc_manufacturer == Manufacturer && r.selection_zc_type.Contains(zcState));
                    if (null != listStandard && listStandard.Count > 0)
                        break;
                }
                if (listStandard.Count > 0 && listStandard != null)
                {
                    if (!(detail_hty.containerdtl_standardResult == 1))
                    {
                        return content.Error("称重结果不正常 ä¸èƒ½è¿›è¡Œæ‰‹åŠ¨é€‰é…");
                    }
                    if (!(detail_hty.containerdtl_materielid == materiel))
                    {
                        return content.Error("车型不一致 ä¸èƒ½è¿›è¡Œæ‰‹åŠ¨é€‰é…");
                    }
                    if (!(detail_hty.containerdtl_madeUnit == Manufacturer))
                    {
                        return content.Error("厂家不一致 ä¸èƒ½è¿›è¡Œæ‰‹åŠ¨é€‰é…");
                    }
                    if (!(detail_hty.containerdtl_standard.Contains(zcState)))
                    {
                        return content.Error("轴承新旧状态不一致 ä¸èƒ½è¿›è¡Œæ‰‹åŠ¨é€‰é…");
                    }
                    if ("left".Equals(ZCdirection))
                    {
                        string left_result = GetContainer2(listStandard, size_info_hty, zzjAVG, zfcbAVG, zydAVG, "left");
                        if (left_result == "True")
                        {
                            Flag = true;
                        }
                    }
                    else if ("right".Equals(ZCdirection))
                    {
                        string right_result = GetContainer2(listStandard, size_info_hty, yzjAVG, yfcbAVG, yydAVG, "right");
                        if (right_result == "True")
                        {
                            Flag = true;
                        }
                    }
                }
                else
                {
                    return content.Error("没有选配标准 ä¸èƒ½è¿›è¡Œæ‰‹åŠ¨é€‰é…");
                }
                if ("all".Equal(ZCdirection))
                {
                    if (null == leftContainer || null == rightContainer)
                        return content.Error("未找到可匹配的出库轴承,车型:" + materiel);
                }
                if (Flag)
                {
                    if ("left".Equals(ZCdirection))
                    {
                        CommonFunction.GetZCInfo2(size_info_hty, detail_hty, materiel, barcode, zfcbAVG, zydAVG, zzjAVG, ldCode, targetStation, "left", materiel);
                    }
                    if ("right".Equals(ZCdirection))
                    {
                        CommonFunction.GetZCInfo2(size_info_hty, detail_hty, materiel, barcode, zfcbAVG, zydAVG, zzjAVG, ldCode, targetStation, "right", materiel);
                    }
                    content.OK($"轴承选配成功,可以进行压装");
                }
                else
                    return content.Error("未找到对应的车型或者数据计算错误 ä¸èƒ½è¿›è¡Œé€‰é…ä»¥åŠåŽ‹è£…");
            }
            catch (Exception ex)
            {
                content.Error("创建手动选配失败:" + ex.Message);
            }
            finally
            {
                LogRecord.WriteLog((int)LogEnum.OutBound, $"{UserContext.Current.UserTrueName}轴承选配出库:参数:{saveModel.Serialize()},返回参数:{content.Serialize()}");
            }
            return content;
        }
        private static Dt_taskinfo GetOutboundTask(VV_ContainerInfo container, string target, string direction, object zcInfo)
        {
            Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == container.location_id);
@@ -267,24 +426,24 @@
                queryble = queryble.Where(r => r.csize_four_result != "不合格");
            ////油档
            Dt_selection_standards ydStand = listStand.Find(r => r.selection_standard_type == "3");
            if (null != ydStand)
            {
                if (!string.IsNullOrEmpty(ydAVG))
                {
                    //上限
                    decimal ydStandQty_positive = ydStand.selection_positive_value.GetValueOrDefault();
                    //下限
                    decimal ydStandQty_negative = ydStand.selection_negative_value.GetValueOrDefault();
                    decimal mesStand = decimal.Parse(ydAVG);
                    queryble = queryble.Where(r => r.csize_three_result == "合格" && (mesStand - decimal.Parse(r.csize_three_3)) >= ydStandQty_negative
                    && mesStand - (decimal.Parse(r.csize_three_3)) <= ydStandQty_positive);
                }
                else
                    queryble = queryble.Where(r => r.csize_three_result != "不合格");
            }
            else
                queryble = queryble.Where(r => r.csize_three_result != "不合格");
            //Dt_selection_standards ydStand = listStand.Find(r => r.selection_standard_type == "3");
            //if (null != ydStand)
            //{
            //    if (!string.IsNullOrEmpty(ydAVG))
            //    {
            //        //上限
            //        decimal ydStandQty_positive = ydStand.selection_positive_value.GetValueOrDefault();
            //        //下限
            //        decimal ydStandQty_negative = ydStand.selection_negative_value.GetValueOrDefault();
            //        decimal mesStand = decimal.Parse(ydAVG);
            //        queryble = queryble.Where(r => r.csize_three_result == "合格" && (mesStand - decimal.Parse(r.csize_three_3)) >= ydStandQty_negative
            //        && mesStand - (decimal.Parse(r.csize_three_3)) <= ydStandQty_positive);
            //    }
            //    else
            //        queryble = queryble.Where(r => r.csize_three_result != "不合格");
            //}
            //else
            //    queryble = queryble.Where(r => r.csize_three_result != "不合格");
@@ -344,6 +503,57 @@
            return queryble.OrderBy(r => r.containerdtl_ProductDate).ThenBy(r => r.containerdtl_createtime).FirstOrDefault();
        }
        public static string GetContainer2(List<Dt_selection_standards> listStand, Dt_container_size_info_hty size_info_hty,
         string zjAVG, string fcbAVG, string ydAVG, string direction)
        {
            //IQueryable<VV_ContainerInfo> queryble = listContainer.AsQueryable();
            //轴承内径
            Dt_selection_standards zjStand = listStand.Find(r => r.selection_standard_type == "1");
            if (null != zjStand)
            {
                if (!string.IsNullOrEmpty(zjAVG))
                {
                    //上限
                    decimal zjStandQty_positive = zjStand.selection_positive_value.GetValueOrDefault();
                    //下限
                    decimal zjStandQty_negative = zjStand.selection_negative_value.GetValueOrDefault();
                    decimal mesStand = decimal.Parse(zjAVG);
                    bool flag = size_info_hty.csize_in_result == "合格" && mesStand - (decimal.Parse(size_info_hty.csize_in_value)) >= zjStandQty_negative
                                && mesStand - (decimal.Parse(size_info_hty.csize_in_value)) <= zjStandQty_positive;
                    if (!flag)
                    {
                        return direction + "的方向 è½´æ‰¿å†…径 è¿‡ç›ˆé‡ä¸ç¬¦åˆ å€¼ä¸º," + (mesStand - (decimal.Parse(size_info_hty.csize_in_value))).ToString();
                    }
                }
            }
            ////防尘板
            Dt_selection_standards fcbStand = listStand.Find(r => r.selection_standard_type == "2");
            if (null != fcbStand)
            {
                if (!string.IsNullOrEmpty(fcbAVG))
                {
                    //上限
                    decimal fcbStandQty_positive = fcbStand.selection_positive_value.GetValueOrDefault();
                    //下限
                    decimal fcbStandQty_negative = fcbStand.selection_negative_value.GetValueOrDefault();
                    decimal mesStand = decimal.Parse(fcbAVG);
                    bool flag = size_info_hty.csize_four_result == "合格" && mesStand - (decimal.Parse(size_info_hty.csize_four_3)) >= fcbStandQty_negative
                    && mesStand - (decimal.Parse(size_info_hty.csize_four_3)) <= fcbStandQty_positive;
                    if (!flag)
                    {
                        return direction + "的方向 é˜²å°˜æ¿ è¿‡ç›ˆé‡ä¸ç¬¦åˆ å€¼ä¸º," + (mesStand - (decimal.Parse(size_info_hty.csize_four_3))).ToString();
                    }
                }
            }
            return "True";
        }
    }