222
schangxiang@126.com
2024-11-21 0eaa55a507f09c22a65b962d726872ece93acff5
222
已修改14个文件
571 ■■■■■ 文件已修改
CC/iWareCC_ASRS/Connected Services/StationService/Reference.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/StationService/StationService.wsdl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/StationService/item2.xsd 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/StationService/item3.xsd 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Inbound/1、DataProcess_BZ39.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Inbound/2、DataProcess_RobotBuffer_FinishTask.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Outbound/1、DataProcess_RobotBuffer_AutoQiTaoOutbound.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvComm.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForRead.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForWrite.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationModel/Station_CacheEntity.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationService/IStationService.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDA/iWareSda/Devices/4-Station/StationService/StationService.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CC/iWareCC_ASRS/Connected Services/StationService/Reference.cs
@@ -472,6 +472,9 @@
        private short W_HeightField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_InboundFinishConfirmField;
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private bool W_IsRotateField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
@@ -598,6 +601,19 @@
                if ((this.W_HeightField.Equals(value) != true)) {
                    this.W_HeightField = value;
                    this.RaisePropertyChanged("W_Height");
                }
            }
        }
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool W_InboundFinishConfirm {
            get {
                return this.W_InboundFinishConfirmField;
            }
            set {
                if ((this.W_InboundFinishConfirmField.Equals(value) != true)) {
                    this.W_InboundFinishConfirmField = value;
                    this.RaisePropertyChanged("W_InboundFinishConfirm");
                }
            }
        }
@@ -1419,6 +1435,12 @@
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IStationService/WriteQiTaoInfo", ReplyAction="http://tempuri.org/IStationService/WriteQiTaoInfoResponse")]
        System.Threading.Tasks.Task<iWareCC.StationService.SdaResEntity> WriteQiTaoInfoAsync(int deviceId, string stationCode, bool value);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IStationService/InboundFinishConfirm", ReplyAction="http://tempuri.org/IStationService/InboundFinishConfirmResponse")]
        iWareCC.StationService.SdaResEntity InboundFinishConfirm(int deviceId, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IStationService/InboundFinishConfirm", ReplyAction="http://tempuri.org/IStationService/InboundFinishConfirmResponse")]
        System.Threading.Tasks.Task<iWareCC.StationService.SdaResEntity> InboundFinishConfirmAsync(int deviceId, string stationCode);
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IStationService/WriteInStoreTaskInfo", ReplyAction="http://tempuri.org/IStationService/WriteInStoreTaskInfoResponse")]
        iWareCC.StationService.SdaResEntity WriteInStoreTaskInfo(int deviceId, string stationCode, string toPlaceNo, short length, short width, short height);
        
@@ -1551,6 +1573,14 @@
            return base.Channel.WriteQiTaoInfoAsync(deviceId, stationCode, value);
        }
        
        public iWareCC.StationService.SdaResEntity InboundFinishConfirm(int deviceId, string stationCode) {
            return base.Channel.InboundFinishConfirm(deviceId, stationCode);
        }
        public System.Threading.Tasks.Task<iWareCC.StationService.SdaResEntity> InboundFinishConfirmAsync(int deviceId, string stationCode) {
            return base.Channel.InboundFinishConfirmAsync(deviceId, stationCode);
        }
        public iWareCC.StationService.SdaResEntity WriteInStoreTaskInfo(int deviceId, string stationCode, string toPlaceNo, short length, short width, short height) {
            return base.Channel.WriteInStoreTaskInfo(deviceId, stationCode, toPlaceNo, length, width, height);
        }
CC/iWareCC_ASRS/Connected Services/StationService/StationService.wsdl
@@ -69,6 +69,12 @@
  <wsdl:message name="IStationService_WriteQiTaoInfo_OutputMessage">
    <wsdl:part name="parameters" element="tns:WriteQiTaoInfoResponse" />
  </wsdl:message>
  <wsdl:message name="IStationService_InboundFinishConfirm_InputMessage">
    <wsdl:part name="parameters" element="tns:InboundFinishConfirm" />
  </wsdl:message>
  <wsdl:message name="IStationService_InboundFinishConfirm_OutputMessage">
    <wsdl:part name="parameters" element="tns:InboundFinishConfirmResponse" />
  </wsdl:message>
  <wsdl:message name="IStationService_WriteInStoreTaskInfo_InputMessage">
    <wsdl:part name="parameters" element="tns:WriteInStoreTaskInfo" />
  </wsdl:message>
@@ -133,6 +139,10 @@
    <wsdl:operation name="WriteQiTaoInfo">
      <wsdl:input wsaw:Action="http://tempuri.org/IStationService/WriteQiTaoInfo" message="tns:IStationService_WriteQiTaoInfo_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IStationService/WriteQiTaoInfoResponse" message="tns:IStationService_WriteQiTaoInfo_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="InboundFinishConfirm">
      <wsdl:input wsaw:Action="http://tempuri.org/IStationService/InboundFinishConfirm" message="tns:IStationService_InboundFinishConfirm_InputMessage" />
      <wsdl:output wsaw:Action="http://tempuri.org/IStationService/InboundFinishConfirmResponse" message="tns:IStationService_InboundFinishConfirm_OutputMessage" />
    </wsdl:operation>
    <wsdl:operation name="WriteInStoreTaskInfo">
      <wsdl:input wsaw:Action="http://tempuri.org/IStationService/WriteInStoreTaskInfo" message="tns:IStationService_WriteInStoreTaskInfo_InputMessage" />
@@ -243,6 +253,15 @@
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="InboundFinishConfirm">
      <soap:operation soapAction="http://tempuri.org/IStationService/InboundFinishConfirm" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="WriteInStoreTaskInfo">
      <soap:operation soapAction="http://tempuri.org/IStationService/WriteInStoreTaskInfo" style="document" />
      <wsdl:input>
CC/iWareCC_ASRS/Connected Services/StationService/item2.xsd
@@ -155,6 +155,21 @@
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="InboundFinishConfirm">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="deviceId" type="xs:int" />
        <xs:element minOccurs="0" name="stationCode" nillable="true" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="InboundFinishConfirmResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="InboundFinishConfirmResult" nillable="true" type="q11:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="WriteInStoreTaskInfo">
    <xs:complexType>
      <xs:sequence>
@@ -170,7 +185,7 @@
  <xs:element name="WriteInStoreTaskInfoResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteInStoreTaskInfoResult" nillable="true" type="q11:SdaResEntity" />
        <xs:element xmlns:q12="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteInStoreTaskInfoResult" nillable="true" type="q12:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
@@ -186,7 +201,7 @@
  <xs:element name="WriteStation_FinishACKResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q12="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteStation_FinishACKResult" nillable="true" type="q12:SdaResEntity" />
        <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteStation_FinishACKResult" nillable="true" type="q13:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
@@ -204,7 +219,7 @@
  <xs:element name="WriteScanValidateACKResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteScanValidateACKResult" nillable="true" type="q13:SdaResEntity" />
        <xs:element xmlns:q14="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteScanValidateACKResult" nillable="true" type="q14:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
@@ -222,7 +237,7 @@
  <xs:element name="WriteStation_XigangGetDataForOutResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element xmlns:q14="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteStation_XigangGetDataForOutResult" nillable="true" type="q14:SdaResEntity" />
        <xs:element xmlns:q15="http://schemas.datacontract.org/2004/07/iWareSda" minOccurs="0" name="WriteStation_XigangGetDataForOutResult" nillable="true" type="q15:SdaResEntity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
CC/iWareCC_ASRS/Connected Services/StationService/item3.xsd
@@ -41,6 +41,7 @@
      <xs:element minOccurs="0" name="W_Destination_In" type="xs:int" />
      <xs:element minOccurs="0" name="W_Destination_Out" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_Height" type="xs:short" />
      <xs:element minOccurs="0" name="W_InboundFinishConfirm" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_IsRotate" type="xs:boolean" />
      <xs:element minOccurs="0" name="W_KittingInfo" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="W_Length" type="xs:short" />
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Inbound/1¡¢DataProcess_BZ39.cs
@@ -92,10 +92,11 @@
                                //记录任务
                                var _id = Yitter.IdGenerator.YitIdHelper.NextId();
                                var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                                var task = new wms_rbline_task()
                                {
                                    Id = _id,
                                    TaskNo = _id.ToString(),
                                    TaskNo = plcTaskNo,
                                    UPI = upiObj.UPI,
                                    Length = upiObj.Length,
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Inbound/2¡¢DataProcess_RobotBuffer_FinishTask.cs
@@ -95,6 +95,21 @@
                                var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
                                place.PlaceStatus = (int)PlaceStatusEnum.正常;
                                //给PLC推送任务完成确认信号
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, rgvLocation);
                                    if (!res.result)
                                    {
                                        SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,InboundFinishConfirmAsync è¿”回:{res.resMsg}";
                                        continue;
                                    }
                                    else
                                    {
                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发入库任务 æˆåŠŸ,InboundFinishConfirmAsync,参数: ç«™ç‚¹{rgvLocation}");
                                    }
                                }
                                wmsDB.SaveChanges();
                            }
                        }
CC/iWareCC_ASRS/ThreadService/02_BZ39¹¤Î»£¨²¹°åºó¹¤Î»£©/Outbound/1¡¢DataProcess_RobotBuffer_AutoQiTaoOutbound.cs
@@ -60,10 +60,11 @@
                                            //生成出库任务
                                            //记录任务
                                            var _id = Yitter.IdGenerator.YitIdHelper.NextId();
                                            var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                                            var new_task = new wms_rbline_task()
                                            {
                                                Id = _id,
                                                TaskNo = _id.ToString(),
                                                TaskNo = plcTaskNo,
                                                UPI = x.Upi,
                                                Length = x.Length,
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvComm.cs
@@ -118,6 +118,13 @@
        /// </summary>
        [Description("放料Y偏移")]
        public string W_Y_Offset { get; set; }
        /// <summary>
        /// å…¥åº“完成已确认
        /// </summary>
        [Description("入库完成已确认")]
        public bool W_InboundFinishConfirm { get; set; }
    }
    /// <summary>
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForRead.cs
@@ -18,80 +18,6 @@
        [Description("心跳")]
        public string R_HandShake { get; set; }
        /// <summary>
        /// 1015扫码
        /// </summary>
        [Description("1015扫码")]
        public string R_1015_Scan { get; set; }
        /// <summary>
        /// 1019扫码
        /// </summary>
        [Description("1019扫码")]
        public string R_1019_Scan { get; set; }
        /// <summary>
        /// 1019发动机的扫码
        /// </summary>
        [Description("1019发动机的扫码")]
        public string R_1019_CargoNoScan { get; set; }
        /// <summary>
        /// 1002扫码
        /// </summary>
        [Description("1002扫码")]
        public string R_1002_Scan { get; set; }
        /// <summary>
        /// 1004扫码
        /// </summary>
        [Description("1004扫码")]
        public string R_1004_Scan { get; set; }
        /// <summary>
        /// 1006扫码
        /// </summary>
        [Description("1006扫码")]
        public string R_1006_Scan { get; set; }
        /// <summary>
        /// 1007扫码
        /// </summary>
        [Description("1007扫码")]
        public string R_1007_Scan { get; set; }
        /// <summary>
        /// 1009的1层检测光电
        /// </summary>
        [Description("1009的1层检测光电")]
        public string R_1009_High1 { get; set; }
        /// <summary>
        /// 1009的2层检测光电
        /// </summary>
        [Description("1009的2层检测光电")]
        public string R_1009_High2 { get; set; }
        /// <summary>
        /// 1009的3层检测光电
        /// </summary>
        [Description("1009的3层检测光电")]
        public string R_1009_High3 { get; set; }
        /// <summary>
        /// Station任务完成
        /// </summary>
        [Description("Station任务完成")]
        public string R_Station_Finish { get; set; }
        /// <summary>
        /// Station当前坐标
        /// </summary>
        [Description("Station当前坐标")]
        public string R_Station_Coordinate { get; set; }
        #region è¯»çš„站点
SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForWrite.cs
@@ -19,95 +19,6 @@
        [Description("心跳")]
        public string W_HandShake { get; set; }
        /// <summary>
        /// 1015重新扫码,写为true表示重新扫码,写为false,表示关闭重新扫码。当wcs读到值后,就写为false
        /// </summary>
        [Description("1015重新扫码")]
        public string W_1015_ReScan { get; set; }
        /// <summary>
        /// 1019重新扫码,写为true表示重新扫码,写为false,表示关闭重新扫码。当wcs读到值后,就写为false
        /// </summary>
        [Description("1019重新扫码")]
        public string W_1019_ReScan { get; set; }
        /// <summary>
        /// Station_完成ACK
        /// </summary>
        [Description("Station_完成ACK")]
        public string W_Station_FinishACK { get; set; }
        /// <summary>
        /// 1002扫描失败信号
        /// </summary>
        [Description("1002扫描失败信号")]
        public string W_1002_ScanFailACK { get; set; }
        /// <summary>
        /// 1004扫描失败信号
        /// </summary>
        [Description("1004扫描失败信号")]
        public string W_1004_ScanFailACK { get; set; }
        /// <summary>
        /// 1006扫描失败信号
        /// </summary>
        [Description("1006扫描失败信号")]
        public string W_1006_ScanFailACK { get; set; }
        /// <summary>
        /// 1007扫描失败信号
        /// </summary>
        [Description("1007扫描失败信号")]
        public string W_1007_ScanFailACK { get; set; }
        /// <summary>
        /// 1002扫描成功信号
        /// </summary>
        [Description("1002扫描成功信号")]
        public string W_1002_ScanSuccessACK { get; set; }
        /// <summary>
        /// 1004扫描成功信号
        /// </summary>
        [Description("1004扫描成功信号")]
        public string W_1004_ScanSuccessACK { get; set; }
        /// <summary>
        /// 1006扫描成功信号
        /// </summary>
        [Description("1006扫描成功信号")]
        public string W_1006_ScanSuccessACK { get; set; }
        /// <summary>
        /// 1007扫描成功信号
        /// </summary>
        [Description("1007扫描成功信号")]
        public string W_1007_ScanSuccessACK { get; set; }
        /// <summary>
        /// å‡ºåº“发动机的型号 ã€Editby shaocx,2023-07-23】
        /// </summary>
        [Description("出库发动机的型号")]
        public string W_Out_MaterialModel { get; set; }
        /// <summary>
        /// å‡ºåº“发动机的订货号 ã€Editby shaocx,2023-07-23】
        /// </summary>
        [Description("出库发动机的订货号")]
        public string W_Out_OrderNo { get; set; }
        /// <summary>
        /// å‡ºåº“发动机的编号 ã€Editby shaocx,2023-07-23】
        /// </summary>
        [Description("出库发动机的编号")]
        public string W_Out_SerialNumber { get; set; }
        #region å†™çš„站点
SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs
@@ -199,7 +199,7 @@
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + true + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                       stationObj.W_DataFinish);
                    return false;
                }
                int i_result = 0;
@@ -215,7 +215,7 @@
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + value + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                      stationObj.W_DataFinish);
                    return false;
                }
                return true;
@@ -224,7 +224,36 @@
            {
                msg = ex.Message;
                var logcontext = string.Format("向Station地址{0}  " + value + "出现异常:" + JsonConvert.SerializeObject(ex),
                        this.DBBlockForWrite.W_1015_ReScan);
                      "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
        public bool InboundFinishConfirm(string stationCode, out string msg)
        {
            try
            {
                msg = "";
                var stationObj = this.DBBlockForWrite.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                var view_stationObj = this.View.W_StationForWriteCommList.Where(x => x.StationCode == stationCode).FirstOrDefault();
                MessageModel b2 = this.plcService.WriteValuePoint(stationObj.W_InboundFinishConfirm, true, view_stationObj.W_DataFinish);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + true + "失败,返回结果:" + b2.resMsg,
                        stationObj.W_InboundFinishConfirm);
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Statio å…¥åº“完成确认 å‡ºçް异叏:" + JsonConvert.SerializeObject(ex),
                        "");
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
@@ -242,7 +271,7 @@
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™ è¯»ç è§£æžå®Œæˆ " + true + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                       stationObj.W_DataFinish);
                    return false;
                }
@@ -250,7 +279,7 @@
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™ åº“位号 " + toPlaceNo + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                      stationObj.W_Destination_In);
                    return false;
                }
@@ -258,21 +287,21 @@
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™ é•¿åº¦ " + length + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                      stationObj.W_Length);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Width, width, view_stationObj.W_Width);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™ å®½åº¦ " + width + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                      stationObj.W_Width);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(stationObj.W_Height, height, view_stationObj.W_Height);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™ é«˜åº¦ " + height + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_1015_ReScan);
                     stationObj.W_Height);
                    return false;
                }
@@ -298,51 +327,8 @@
        /// <returns></returns>
        public bool WriteStation_FinishACK(int deviceId, bool value, int plcTaskId, out string msg)
        {
            try
            {
                msg = "";
                Thread.Sleep(1000);//停留2秒
                MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Station_FinishACK, value, this.View.W_Station_FinishACK);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + value + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_Station_FinishACK);
                    Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                    return false;
                }
                //重新再读取,判断是否写入正确,如果写入不正确,就认为失败 ã€Editby shaocx,2023-04-03】
                Thread.Sleep(1000);//停留3秒
                bool finishStation = (bool)this.plcService.ReadValuePoint(this.DBBlockForRead.R_Station_Finish, typeof(bool));
                bool finisAck = (bool)this.plcService.ReadValuePoint(this.DBBlockForWrite.W_Station_FinishACK, typeof(bool));
                if (finisAck == false && finishStation == true)
                {
                    this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Station_FinishACK, value, this.View.W_Station_FinishACK);//重发一次 20230503 çދ铮
                    Thread.Sleep(1000);//停留2秒
                    finishStation = (bool)this.plcService.ReadValuePoint(this.DBBlockForRead.R_Station_Finish, typeof(bool));
                    finisAck = (bool)this.plcService.ReadValuePoint(this.DBBlockForWrite.W_Station_FinishACK, typeof(bool));
                    if (finisAck == false && finishStation == true)
                    {
                        msg = string.Format("向Station地址{0} å†™  " + value + "失败,SDA返回结果:true,但是SDA再次读取PLC的地址时,获取的结果是FALSE,即认定为写入失败",
                                            this.DBBlockForWrite.W_Station_FinishACK);
                        Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                        return false;
                    }
                }
                Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "写入W_Station_FinishACK(" + this.DBBlockForWrite.W_Station_FinishACK + ")值为" + value + "成功!因为PLC任务号:" + plcTaskId);
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("向Station地址{0}  " + value + "出现异常:" + JsonConvert.SerializeObject(ex),
                        this.DBBlockForWrite.W_Station_FinishACK);
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
@@ -356,93 +342,7 @@
        public bool WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId, out string msg)
        {
            msg = "";
            MessageModel b2 = null;
            string address_fail = "";
            string address_success = "";
            try
            {
                switch (stationCode)
                {
                    case "1002":
                        address_fail = this.DBBlockForWrite.W_1002_ScanFailACK;
                        address_success = this.DBBlockForWrite.W_1002_ScanSuccessACK;
                        break;
                    case "1004":
                        address_fail = this.DBBlockForWrite.W_1004_ScanFailACK;
                        address_success = this.DBBlockForWrite.W_1004_ScanSuccessACK;
                        break;
                    case "1006":
                        address_fail = this.DBBlockForWrite.W_1006_ScanFailACK;
                        address_success = this.DBBlockForWrite.W_1006_ScanSuccessACK;
                        break;
                    case "1007":
                        address_fail = this.DBBlockForWrite.W_1007_ScanFailACK;
                        address_success = this.DBBlockForWrite.W_1007_ScanSuccessACK;
                        break;
                    default:
                        throw new Exception("不支持的站点");
                }
                if (isReset)
                {//是重置
                    b2 = this.plcService.WriteValuePoint(address_success, false, this.View.W_1002_ScanSuccessACK);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} å†™  " + false + "失败,返回结果:" + b2.resMsg,
                           address_success);
                        Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                        return false;
                    }
                    b2 = this.plcService.WriteValuePoint(address_fail, false, this.View.W_1002_ScanFailACK);
                    if (!b2.result)
                    {
                        msg = string.Format("向Station地址{0} å†™  " + false + "失败,返回结果:" + b2.resMsg,
                           address_fail);
                        Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                        return false;
                    }
                }
                else
                {//不是重置
                    if (value)
                    {//表示扫描验证通过
                        b2 = this.plcService.WriteValuePoint(address_success, true, this.View.W_1002_ScanSuccessACK);
                        if (!b2.result)
                        {
                            msg = string.Format("向Station地址{0} å†™  " + true + "失败,返回结果:" + b2.resMsg,
                               address_success);
                            Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                            return false;
                        }
                    }
                    else
                    {//表示扫描验证不通过
                        b2 = this.plcService.WriteValuePoint(address_fail, true, this.View.W_1002_ScanFailACK);
                        if (!b2.result)
                        {
                            msg = string.Format("向Station地址{0} å†™  " + true + "失败,返回结果:" + b2.resMsg,
                               address_fail);
                            Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                            return false;
                        }
                    }
                }
                Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "WriteScanFailACK方法,写入 å››ä¸ªå…¥åº“口扫描失败ACK赋值 ScanFailACK(" + address_fail + ")值为" + value + "成功!因为PLC任务号:" + plcTaskId + ",isReset:" + isReset);
                return true;
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                var logcontext = string.Format("WriteScanFailACK方法,向Station地址{0}  " + value + "出现异常:" + JsonConvert.SerializeObject(ex),
                       address_fail);
                if (value)
                {
                    logcontext = string.Format("WriteScanFailACK方法,向Station地址{0}  " + value + "出现异常:" + JsonConvert.SerializeObject(ex),
                       address_success);
                }
                Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex);
                return false;
            }
        }
@@ -646,33 +546,6 @@
            try
            {
                msg = "";
                MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_MaterialModel, value__Out_MaterialModel, this.View.W_Out_MaterialModel);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + value__Out_MaterialModel + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_Out_MaterialModel);
                    Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_OrderNo, value_Out_OrderNo, this.View.W_Out_OrderNo);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + value_Out_OrderNo + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_Out_OrderNo);
                    Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                    return false;
                }
                b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_SerialNumber, value_Out_SerialNumber, this.View.W_Out_SerialNumber);
                if (!b2.result)
                {
                    msg = string.Format("向Station地址{0} å†™  " + value_Out_SerialNumber + "失败,返回结果:" + b2.resMsg,
                        this.DBBlockForWrite.W_Out_SerialNumber);
                    Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null);
                    return false;
                }
                Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, $"写入 å‘动机出库,给西港PLC发送发动机数据成功!任务号{plcTaskId},机型{value__Out_MaterialModel},订货号{value_Out_OrderNo},编号{value_Out_SerialNumber}" + plcTaskId);
                return true;
            }
            catch (Exception ex)
SDA/iWareSda/Devices/4-Station/StationModel/Station_CacheEntity.cs
@@ -137,6 +137,7 @@
                #region å†™å…¥
                // W_HandShake = W_DBHeaderWithSeparate + "0.0",
                #endregion
            };
@@ -178,51 +179,6 @@
            return _dbBlockForWrite;
        }
        ///// <summary>
        ///// è¯»å–地址集合赋值
        ///// </summary>
        ///// <param name="_dbBlockForWrite"></param>
        ///// <param name="_dbBlockForRead"></param>
        //private static StationDBForWrite SetW_StationForWriteCommList2()
        //{
        //    StationDBForWrite _dbBlockForRead = new StationDBForWrite()
        //    {
        //        //TODO:这里写配置的DB地址
        //        #region è¯»å–
        //        W_HandShake = "0.0",
        //        #endregion
        //    };
        //    //读取地址
        //    double default_STP = 2.0;
        //    double default_Destination = 4.0;
        //    double default_TaskID = 6.0;
        //    int addValue = 16;
        //    _dbBlockForRead.W_StationForWriteCommList = new List<StationDBForWriteComm>();
        //    for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++)
        //    {
        //        var stationCode = WareSdaStruct.StationStationList[i];
        //        if (i > 0)
        //        {
        //            default_STP += addValue;
        //            default_Destination += addValue;
        //            default_TaskID += addValue;
        //        }
        //        _dbBlockForRead.W_StationForWriteCommList.Add(new StationDBForWriteComm()
        //        {
        //            StationCode = stationCode,
        //            W_STP = default_STP.ToString("0.0"),
        //            W_Destination = default_Destination.ToString("0.0"),
        //            W_TaskID = default_TaskID.ToString("0.0"),
        //        });
        //    }
        //    return _dbBlockForRead;
        //}
        /// <summary>
        /// è¯»å–地址集合赋值
@@ -235,24 +191,9 @@
            {
                //TODO:这里写配置的DB地址
                #region è¯»å–
                R_HandShake = R_DBHeaderWithSeparate + "0.0",
                // R_HandShake = R_DBHeaderWithSeparate + "0.0",
                //注意:这里用的扫描的地址块
                R_1015_Scan = R_DBHeader_ScanWithSeparate + "48.0",
                R_1019_Scan = R_DBHeader_ScanWithSeparate + "356.0",
                R_1019_CargoNoScan = R_DBHeader_ScanWithSeparate + "378.0",
                R_1002_Scan = R_DBHeader_ScanWithSeparate + "108.0",
                R_1004_Scan = R_DBHeader_ScanWithSeparate + "168.0",
                R_1006_Scan = R_DBHeader_ScanWithSeparate + "228.0",
                R_1007_Scan = R_DBHeader_ScanWithSeparate + "288.0",
                R_1009_High1 = R_DBHeader_ScanWithSeparate + "300.0",
                R_1009_High2 = R_DBHeader_ScanWithSeparate + "300.1",
                R_1009_High3 = R_DBHeader_ScanWithSeparate + "300.2",
                R_Station_Finish = R_DBHeaderWithSeparate + "349.0",
                R_Station_Coordinate = R_DBHeader_ScanWithSeparate + "304.0"
                R_StationForReadCommList = new List<StationDBForReadComm>()
                #endregion
            };
SDA/iWareSda/Devices/4-Station/StationService/IStationService.cs
@@ -93,6 +93,15 @@
        SdaResEntity WriteQiTaoInfo(int deviceId, string stationCode, bool value);
        /// <summary>
        /// å…¥åº“完成已确认
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        [OperationContract]
        SdaResEntity InboundFinishConfirm(int deviceId, string stationCode);
        /// <summary>
        /// å†™å…¥å…¥åº“任务信息
        /// </summary>
        /// <param name="deviceId"></param>
SDA/iWareSda/Devices/4-Station/StationService/StationService.cs
@@ -439,6 +439,38 @@
        }
        /// <summary>
        /// å…¥åº“完成已确认
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public SdaResEntity InboundFinishConfirm(int deviceId, string stationCode)
        {
            SdaResEntity _SdaResEntity = new SdaResEntity();
            try
            {
                var StationResult = Station_CacheEntity.GetDeviceObj(deviceId);
                if (!StationResult.result)
                {
                    return StationResult;
                }
                var Station = StationResult.resData as StationEntity;
                string msg = "";
                var result = Station.InboundFinishConfirm(stationCode, out msg);
                _SdaResEntity.result = result;
                _SdaResEntity.resMsg = msg;
                return _SdaResEntity;
            }
            catch (Exception ex)
            {
                _SdaResEntity.result = false;
                _SdaResEntity.resMsg = ex.Message;
                return _SdaResEntity;
            }
        }
        /// <summary>
        /// å†™å…¥å…¥åº“任务信息
        /// </summary>
        /// <param name="deviceId"></param>