xiaojiao
2026-03-12 b174ea476eb1afd872985b2c261241a814e0185d
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA.Services/Services/ToMeasureDevice/ToMeasureDeviceService.cs
@@ -176,14 +176,216 @@
                            result = "不合格";
                        else
                        {
                        }
                        detail.containerdtl_text3 = result;
                        Dt_container_detailRepository.Instance.Update(detail, x => new { x.containerdtl_text1, x.containerdtl_text2, x.containerdtl_text3 }, true);
                        Dt_container_head head = Dt_container_headRepository.Instance.FindFirst(r => r.containerhead_id == Guid.Parse(detail.containerdtl_headid));
                        Dt_taskinfo task = Dt_taskinfoRepository.Instance.FindFirst(r => r.task_barcode == head.containerhead_barcode);
                        if (null == task)
                            task = new Dt_taskinfo() { task_creator = "手动上传." };
                        Guid tempguid = Guid.NewGuid();
                        dt_measureRecord record = new dt_measureRecord()
                        {
                            measure_barcode = head.containerhead_barcode,
                            measure_createTime = DateTime.Now,
                            measure_fcbAVG = string.IsNullOrEmpty(container_Size_Info.csize_four_3) ? 0 : decimal.Parse(container_Size_Info.csize_four_3),
                            measure_fcbAVG_result = container_Size_Info.csize_four_result,
                            measure_id = tempguid,
                            measure_locationId = task.task_fromlocationid,
                            measure_madeUnit = detail.containerdtl_madeUnit,
                            measure_materielId = detail.containerdtl_materielid,
                            measure_materielNumber = detail.containerdtl_goodsCode,
                            measure_materielType = detail.containerdtl_type,
                            measure_standa = detail.containerdtl_standard,
                            measure_userName = task.task_creator,
                            measure_weight = string.IsNullOrEmpty(detail.containerdtl_goodsWeight) ? 0 : decimal.Parse(detail.containerdtl_goodsWeight),
                            measure_ydAVG = string.IsNullOrEmpty(container_Size_Info.csize_three_3) ? 0 : decimal.Parse(container_Size_Info.csize_three_3),
                            measure_ydAVG_result = container_Size_Info.csize_three_result,
                            measure_zjAVG = string.IsNullOrEmpty(container_Size_Info.csize_in_value) ? 0 : decimal.Parse(container_Size_Info.csize_in_value),
                            measure_zjAVG_result = container_Size_Info.csize_in_result,
                            measure_result = result,
                            measure_wjAVG = string.IsNullOrEmpty(container_Size_Info.csize_out_value) ? 0 : decimal.Parse(container_Size_Info.csize_out_value),
                            measure_wj_result = container_Size_Info.csize_out_result,
                        };
                        if (result.Equals("合格"))
                        {
                            record.measure_uploadData = JsonConvert.SerializeObject(data);
                            record.measure_uploadResult = uploadStatus;
                            record.measure_uploadTime = DateTime.Now;
                            record.measure_uploadUser = "system";
                        }
                        dt_measureRecordRepository.Instance.Add(record, true);
                        if (result.Equals("合格"))
                        {
                            // æ•获变量副本,避免线程安全问题
                            Guid mesTempGuid = tempguid;
                            string mesContainerDtlNumber = detail.containerdtl_number;
                            string mesDataJson = JsonConvert.SerializeObject(data);
                            Task.Run(async () =>
                            {
                                string resultString = string.Empty;
                                try
                                {
                                    EndpointAddress address = new EndpointAddress(ToMesService.POSTURL);
                                    ErpWebService.Service_EQPSoapClient client = new ErpWebService.Service_EQPSoapClient(new BasicHttpBinding(), address);
                                    // å…³é”®ä¿®æ­£ï¼šæŠŠ .Result æ”¹æˆ await,真正异步
                                    var res = await client.ReportToSCEAsync(mesContainerDtlNumber, mesDataJson);
                                    resultString = res.Body.ReportToSCEResult;
                                    //Task<ErpWebService.ReportToSCEResponse> res = client.ReportToSCEAsync(detail.containerdtl_number, JsonConvert.SerializeObject(data));
                                    //resultString = res.Result.Body.ReportToSCEResult;
                                    // æ›´æ–°ä¸Šä¼ çŠ¶æ€ä¸ºå·²ä¸Šä¼ 
                                    dt_measureRecord dt_MeasureRecord = dt_measureRecordRepository.Instance.FindFirst(x => x.measure_id == mesTempGuid);
                                    if (dt_MeasureRecord != null)
                                    {
                                        dt_MeasureRecord.measure_uploadResult = "已上传";
                                        dt_measureRecordRepository.Instance.Update(dt_MeasureRecord, true);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    //LogRecord.WriteLog((int)LogEnum.Mes, $"上传MES异常:{ex.Message},参数:{mesDataJson}");
                                }
                                finally
                                {
                                    LogRecord.WriteLog((int)LogEnum.Mes, $"测量上传MES参数:{mesDataJson},结果:{resultString}");
                                }
                            });
                        }
                    }
                    resultDic.Add("status", "1");
                    resultDic.Add("message", "Success");
                    resultDic.Add("data", null);
                }
                else
                {
                    resultDic.Add("status", "-1");
                    resultDic.Add("message", $"没有找到对应ID的轴承记录:【{identitfierId}】");
                    resultDic.Add("data", null);
                    //state = "失败";
                }
            }
            catch (Exception ex)
            {
                resultDic.Add("status", "-1");
                resultDic.Add("message", ex.Message);
                resultDic.Add("data", null);
                // state = "失败";
            }
            //CommonFunction.AddInterfaceLogAction(data, resultDic, state, "PostGoodsData");
            return resultDic;
        }
        public static Dictionary<string, object> PostGoodsData2(Dictionary<string, object> data)
        {
            Dictionary<string, object> resultDic = new Dictionary<string, object>();
            //string state = "成功";
            try
            {
                LogRecord.WriteLog((int)LogEnum.MeasureResult, $"===接收===>接收到测量设备的测量结果:{JsonConvert.SerializeObject(data)}");
                //获取轴承识别号,找到对应的测量记录,将测量数据填充
                string identitfierId = data["ID"].ToString();
                //
                Dt_container_size_info container_Size_Info = Dt_container_size_infoRepository.Instance.FindFirst(x => x.csize_barcode == identitfierId);
                //Dt_container_size_info container_Size_Info = Dt_container_size_infoRepository.Instance.FindFirst(x => true);
                if (container_Size_Info != null)
                {
                    container_Size_Info.csize_in_1 = data["BearingInnerDiameter11"].ToString();
                    container_Size_Info.csize_in_2 = data["BearingInnerDiameter12"].ToString();
                    container_Size_Info.csize_in_3 = data["BearingInnerDiameter13"].ToString();
                    container_Size_Info.csize_in_4 = data["BearingInnerDiameter14"].ToString() + "_" + data["BearingInnerDiameter1Avg"].ToString();
                    container_Size_Info.csize_in_5 = data["BearingInnerDiameter21"].ToString();
                    container_Size_Info.csize_in_6 = data["BearingInnerDiameter22"].ToString();
                    container_Size_Info.csize_in_7 = data["BearingInnerDiameter23"].ToString();
                    container_Size_Info.csize_in_8 = data["BearingInnerDiameter24"].ToString() + "_" + data["BearingInnerDiameter2Avg"].ToString();
                    container_Size_Info.csize_in_9 = data["BearingInnerDiameter31"].ToString();
                    container_Size_Info.csize_in_10 = data["BearingInnerDiameter32"].ToString();
                    container_Size_Info.csize_in_11 = data["BearingInnerDiameter33"].ToString();
                    container_Size_Info.csize_in_12 = data["BearingInnerDiameter34"].ToString() + "_" + data["BearingInnerDiameter3Avg"].ToString();
                    container_Size_Info.csize_in_13 = data["BearingInnerDiameter41"].ToString();
                    container_Size_Info.csize_in_14 = data["BearingInnerDiameter42"].ToString();
                    container_Size_Info.csize_in_15 = data["BearingInnerDiameter43"].ToString();
                    container_Size_Info.csize_in_16 = data["BearingInnerDiameter44"].ToString() + "_" + data["BearingInnerDiameter4Avg"].ToString();
                    //轴承内径平均值
                    container_Size_Info.csize_in_value = data["BearingInnerDiameterAvg"].ToString();
                    //轴承内径合格否
                    container_Size_Info.csize_in_result = data["BearingInnerDiameterQualified"].ToString();
                    container_Size_Info.csize_out_1 = data["BearingOuterDiameter11"].ToString();
                    container_Size_Info.csize_out_2 = data["BearingOuterDiameter12"].ToString();
                    container_Size_Info.csize_out_3 = data["BearingOuterDiameter13"].ToString();
                    container_Size_Info.csize_out_4 = data["BearingOuterDiameter14"].ToString() + "_" + data["BearingOuterDiameter1Avg"].ToString();
                    container_Size_Info.csize_out_5 = data["BearingOuterDiameter21"].ToString();
                    container_Size_Info.csize_out_6 = data["BearingOuterDiameter22"].ToString();
                    container_Size_Info.csize_out_7 = data["BearingOuterDiameter23"].ToString();
                    container_Size_Info.csize_out_8 = data["BearingOuterDiameter24"].ToString() + "_" + data["BearingOuterDiameter2Avg"].ToString();
                    container_Size_Info.csize_out_9 = data["BearingOuterDiameter31"].ToString();
                    container_Size_Info.csize_out_10 = data["BearingOuterDiameter32"].ToString();
                    container_Size_Info.csize_out_11 = data["BearingOuterDiameter33"].ToString();
                    container_Size_Info.csize_out_12 = data["BearingOuterDiameter34"].ToString() + "_" + data["BearingOuterDiameter3Avg"].ToString();
                    container_Size_Info.csize_out_13 = data["BearingOuterDiameter41"].ToString();
                    container_Size_Info.csize_out_14 = data["BearingOuterDiameter42"].ToString();
                    container_Size_Info.csize_out_15 = data["BearingOuterDiameter43"].ToString();
                    container_Size_Info.csize_out_16 = data["BearingOuterDiameter44"].ToString() + "_" + data["BearingOuterDiameter4Avg"].ToString();
                    //轴承外径平均值
                    container_Size_Info.csize_out_value = data["BearingOuterDiameterAvg"].ToString();
                    //轴承外径合格否
                    container_Size_Info.csize_out_result = data["BearingOuterDiameterQualified"].ToString();
                    container_Size_Info.csize_three_1 = data["BearingOilGearDiameter1"].ToString();
                    container_Size_Info.csize_three_2 = data["BearingOilGearDiameter2"].ToString();
                    //挡油内径平均值
                    container_Size_Info.csize_three_3 = data["BearingOilGearDiameterAvg"].ToString();
                    //挡油内径合格否
                    container_Size_Info.csize_three_result = data["BearingOilGearDiameterQualified"].ToString();
                    container_Size_Info.csize_four_1 = data["BearingTailgateDiameter1"].ToString();
                    container_Size_Info.csize_four_2 = data["BearingTailgateDiameter2"].ToString();
                    //后挡内径平均值
                    container_Size_Info.csize_four_3 = data["BearingTailgateDiameterAvg"].ToString();
                    //后挡内径合格否
                    container_Size_Info.csize_four_result = data["BearingTailgateDiameterQualified"].ToString();
                    Dt_container_size_infoRepository.Instance.Update(container_Size_Info, true);
                    Guid id = Guid.Parse(container_Size_Info.csize_container_detail_id);
                    Dt_container_detail detail = Dt_container_detailRepository.Instance.FindFirst(r => r.containerdtl_id == id);
                    if (null != detail)
                    {
                        detail.containerdtl_text1 = "已测量";
                        detail.containerdtl_text2 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        data.Add("weight", detail.containerdtl_goodsWeight);
                        string uploadStatus = "未上传";
                        string result = "合格";
                        if ("不合格".Equals(container_Size_Info.csize_in_result) || "不合格".Equals(container_Size_Info.csize_out_result)
                            || "不合格".Equals(container_Size_Info.csize_three_result) || "不合格".Equals(container_Size_Info.csize_four_result))
                            result = "不合格";
                        else
                        {
                            string resultString = string.Empty;
                            try
                            {
                                EndpointAddress address = new EndpointAddress(ToMesService.POSTURL);
                                ErpWebService.Service_EQPSoapClient client = new ErpWebService.Service_EQPSoapClient(new BasicHttpBinding(), address);
                                Task<ErpWebService.ReportToSCEResponse> res = client.ReportToSCEAsync(detail.containerdtl_number, JsonConvert.SerializeObject(data));
                                resultString = res.Result.Body.ReportToSCEResult;
                                uploadStatus = "已上传";
                                //EndpointAddress address = new EndpointAddress(ToMesService.POSTURL);
                                //ErpWebService.Service_EQPSoapClient client = new ErpWebService.Service_EQPSoapClient(new BasicHttpBinding(), address);
                                //Task<ErpWebService.ReportToSCEResponse> res = client.ReportToSCEAsync(detail.containerdtl_number, JsonConvert.SerializeObject(data));
                                //resultString = res.Result.Body.ReportToSCEResult;
                                //uploadStatus = "已上传";
                            }
                            catch
                            {
@@ -260,6 +462,7 @@
        /// <summary>
        /// æµ‹é‡è®¾å¤‡è°ƒç”¨æ­¤æŽ¥å£ä¸ŠæŠ¥è®¾å¤‡çŠ¶æ€ï¼ŒåŒæ—¶ä½œä¸ºå¿ƒè·³æ£€æµ‹æŽ¥å£ç¡®ä¿ä¸ŽWMS的连接
        /// </summary>