/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:SmartDeviceService.cs * 2.功能描述:接收智能设备请求 * 编辑履历: * 作者 日期 版本 修改内容 * 陈晓野 2018/10/25 1.00 新建 *******************************************************************************/ using System; using System.Data; using System.ServiceModel; using System.ServiceModel.Activation; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Service.BarcodePrintService; using Dongke.IBOSS.PRD.Service.DataModels; using Dongke.IBOSS.PRD.Service.PMModuleLogic; using Dongke.IBOSS.PRD.Service.SmartDeviceService; using Dongke.IBOSS.PRD.WCF.Contracts; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.WinForm.Controls.InvoiceLayout; using Newtonsoft.Json.Linq; namespace Dongke.IBOSS.PRD.WCF.Services { /// /// 智能设备对接服务 /// [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(ConfigurationName = "SmartDeviceService", InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = false)] public class SmartDeviceService : ISmartDevice { /// /// 连接测试 /// /// /// public string Test(string message) { return message + " is ok"; } /// /// 自动扫描计件 /// /// public void AddWorkPiece(string accountCode, string userCode, string userPassword, int procedureID, string barcode) { try { DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, LocalPath.LogExePath + "SmartDevice\\"); return; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; //DataTable barcodeTable = new DataTable(); //barcodeTable.TableName = "barcodeTable"; //barcodeTable.Columns.Add("BarCode"); //barcodeTable.Columns.Add("UserID"); //barcodeTable.Columns.Add("UserCode"); //barcodeTable.Columns.Add("UserName"); //barcodeTable.Columns.Add("LogoID"); //DataRow drCollectType = barcodeTable.NewRow(); //drCollectType["BarCode"] = barcode; //drCollectType["UserID"] = sUserInfo.UserID; //drCollectType["UserCode"] = sUserInfo.UserCode; //drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString(); //barcodeTable.Rows.Add(drCollectType); DataTable barcodeTable = userInfo; barcodeTable.Columns.Add("LogoID"); barcodeTable.Columns.Add("BarCode"); barcodeTable.Rows[0]["BarCode"] = barcode; ProcedureEntity procedureInfo = null; DataTable dt = PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo); if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dt.Rows[0]["out_errMsg"].ToString())) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, JsonHelper.ToJson(dt), LocalPath.LogExePath + "SmartDevice\\"); } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, ex.ToString(), LocalPath.LogExePath); } } /// /// 自动扫描计件 /// /// public string AddWorkPieceByStatus(string accountCode, string userCode, string userPassword, int procedureID, string barcode, string remarks) { try { DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; DataTable barcodeTable = userInfo; barcodeTable.Columns.Add("LogoID"); barcodeTable.Columns.Add("BarCode"); barcodeTable.Columns.Add("Remarks"); barcodeTable.Rows[0]["BarCode"] = barcode; barcodeTable.Rows[0]["Remarks"] = remarks; ProcedureEntity procedureInfo = null; DataTable dt = PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo); if (dt != null && dt.Rows.Count > 0) { string out_msg = dt.Rows[0]["out_errMsg"].ToString(); if (!string.IsNullOrWhiteSpace(out_msg)) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, JsonHelper.ToJson(dt), LocalPath.LogExePath + "SmartDevice\\"); if (out_msg.StartsWith("无效条码")) { return "EP-01"; } if (out_msg.Contains("不能到达该工序")) { return "EP-02"; } return "EP-00"; } } return "OK"; } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine + userPassword + System.Environment.NewLine + " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode, ex.ToString(), LocalPath.LogExePath); return "EE"; } } /// /// 自动扫描计件(3车间) /// /// public string AddWorkPieceByStatus3(string accountCode, string userCode, string userPassword, int procedureID, string barcode, string remarks) { string inputCode = $" accountCode:{accountCode} userCode:{userCode} userPassword:{userPassword} procedureID:{procedureID} barcode:{barcode} remarks:{remarks}"; try { DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; DataTable barcodeTable = userInfo; barcodeTable.Columns.Add("LogoID"); barcodeTable.Columns.Add("BarCode"); barcodeTable.Columns.Add("Remarks"); barcodeTable.Rows[0]["BarCode"] = barcode; barcodeTable.Rows[0]["Remarks"] = remarks; ProcedureEntity procedureInfo = null; DataTable dt = PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo); if (dt != null && dt.Rows.Count > 0) { string out_msg = dt.Rows[0]["out_errMsg"].ToString(); if (!string.IsNullOrWhiteSpace(out_msg)) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + JsonHelper.ToJson(dt), LocalPath.LogExePath + "SmartDevice\\"); //if (out_msg.StartsWith("无效条码")) //{ // return "EP-01=" + out_msg; //} //if (out_msg.Contains("不能到达该工序")) //{ // return "EP-02=" + out_msg; //} return "EP-00=" + out_msg; } } return "OK"; } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode+ex.ToString(), LocalPath.LogExePath); return "EE"; } } /// /// 注浆接口 xuwei add 2019-11-19 /// /// /// /// /// public string SetGroutingLineDetail(string accountCode, string userCode, string lineCode, string groutingData, string remarks) { string inputCode = $" accountCode:{accountCode} userCode:{userCode} lineCode:{lineCode} groutingData:{groutingData} remarks:{remarks}"; try { #region 验证用户 并配置参数 sUserInfo DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; #endregion ServiceResultEntity sre = SmartDeviceLogic.SetGroutingLineDetail(lineCode, groutingData, sUserInfo); if (sre.Status == Constant.ServiceResultStatus.Success) { return "OK"; } else { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + sre.Message, LocalPath.LogExePath + "SmartDevice\\"); return $"EG={sre.Message}"; } } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode+ex.ToString(), LocalPath.LogExePath); return "EE"; } } /// /// 登窑、入窑、出窑 接口 xuwei add 2019-11-19 /// /// /// /// /// public string AddWorkPieceKiln(string accountCode, string userCode, int procedureID, string kilnCarCode, string barCodeAndPosition, string remarks) { string inputCode = $" accountCode:{accountCode} userCode:{userCode} procedureID:{procedureID} kilnCarCode:{kilnCarCode} barCodeAndPosition:{barCodeAndPosition} remarks:{remarks}"; try { #region 验证用户 并配置参数 sUserInfo DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; #endregion #region 按窑车号取窑车信息 DataTable carInfo = SmartDeviceLogic.getKilnCarByCode(kilnCarCode); if (carInfo == null || carInfo.Rows.Count == 0) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, "窑车不存在" + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EP-01"; } #endregion #region 配置参数 barcodeTable //入窑参数 //"Barcode": "11100000012", //"KilnCarName": "TK21", //"KilnCode": "TK2", //"UserCode": "F8", //"UserID": 55, //"UserName": "胡贤万", //"KilnCarID": 35, //"KilnName": "新窑炉", //"KilnCarPosition": 2, //"KilnCarCode": "TK21", //"KilnID": 3 DataTable barcodeTable = new DataTable(); //入窑 卸窑 配置参数 barcodeTable if (string.IsNullOrWhiteSpace(barCodeAndPosition)) { barcodeTable.TableName = "barcodeTable"; barcodeTable.Columns.Add("UserID"); barcodeTable.Columns.Add("UserCode"); barcodeTable.Columns.Add("UserName"); barcodeTable.Columns.Add("KilnID"); barcodeTable.Columns.Add("KilnCode"); barcodeTable.Columns.Add("KilnName"); barcodeTable.Columns.Add("KilnCarCode"); barcodeTable.Columns.Add("KilnCarID"); barcodeTable.Columns.Add("KilnCarName"); barcodeTable.Columns.Add("Remarks"); DataRow drCollectType = barcodeTable.NewRow(); drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString(); drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString(); drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString(); drCollectType["KilnID"] = carInfo.Rows[0]["KilnID"].ToString(); drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString(); drCollectType["KilnName"] = carInfo.Rows[0]["KilnName"].ToString(); drCollectType["KilnCarID"] = carInfo.Rows[0]["KilnCarID"].ToString(); drCollectType["KilnCarCode"] = carInfo.Rows[0]["KilnCarCode"].ToString(); drCollectType["KilnCarName"] = carInfo.Rows[0]["KilnCarName"].ToString(); drCollectType["Remarks"] = remarks; barcodeTable.Rows.Add(drCollectType); } else { //登窑 添加数据 配置参数 barcodeTable barcodeTable.TableName = "barcodeTable"; barcodeTable.Columns.Add("UserID"); barcodeTable.Columns.Add("UserCode"); barcodeTable.Columns.Add("UserName"); barcodeTable.Columns.Add("BarCode"); barcodeTable.Columns.Add("KilnID"); barcodeTable.Columns.Add("KilnCode"); barcodeTable.Columns.Add("KilnName"); barcodeTable.Columns.Add("KilnCarID"); barcodeTable.Columns.Add("KilnCarCode"); barcodeTable.Columns.Add("KilnCarName"); barcodeTable.Columns.Add("KilnCarPosition"); barcodeTable.Columns.Add("Remarks"); JArray barCodeArray = JArray.Parse(barCodeAndPosition); for (int i = 0; i < barCodeArray.Count; i++) { DataRow drCollectType = barcodeTable.NewRow(); drCollectType["BarCode"] = barCodeArray[i]["barCode"].ToString(); drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString(); drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString(); drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString(); drCollectType["KilnID"] = carInfo.Rows[0]["KilnID"].ToString(); drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString(); drCollectType["KilnName"] = carInfo.Rows[0]["KilnName"].ToString(); drCollectType["KilnCarID"] = carInfo.Rows[0]["KilnCarID"].ToString(); drCollectType["KilnCarCode"] = carInfo.Rows[0]["KilnCarCode"].ToString(); drCollectType["KilnCarName"] = carInfo.Rows[0]["KilnCarName"].ToString(); drCollectType["KilnCarPosition"] = barCodeArray[i]["kilnCarPosition"].ToString(); drCollectType["Remarks"] = remarks; barcodeTable.Rows.Add(drCollectType); } } #endregion #region 调用原始业务逻辑 DataTable dt = SmartDeviceLogic.AddWorkPieceKiln(procedureID, barcodeTable, sUserInfo); #endregion #region 输出结果 if (dt != null && dt.Rows.Count > 0) { string out_msg = dt.Rows[0]["out_errMsg"].ToString(); if (!string.IsNullOrWhiteSpace(out_msg)) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + JsonHelper.ToJson(dt), LocalPath.LogExePath + "SmartDevice\\"); //if (out_msg.StartsWith("无效条码")) //{ // return "EP-01"; //} //if (out_msg.Contains("不能到达该工序")) //{ // return "EP-02=" + out_msg; //} return "EP-00=" + out_msg; } } return "OK"; #endregion } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + ex.ToString(), LocalPath.LogExePath); return "EE"; } } /// /// 条码、外箱码、服务码打印 /// /// /// /// /// /// /// public string PrintBarcode(string accountCode, string userCode, string barcode, int? printerID, int copies, string remarks) { string inputCode = $" accountCode:{accountCode} userCode:{userCode} barcode:{barcode} printerID:{printerID} copies:{copies} remarks:{remarks}"; try { #region 验证用户 并配置参数 sUserInfo DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; #endregion #region 调用原始业务逻辑 ServiceResultEntity sre = BarcodePrintLogic.PrintBarcode_3C(barcode, copies, printerID, sUserInfo, 1); if (sre.Status != Constant.ServiceResultStatus.Success) { return "EE=" + sre.Message; } #endregion #region 输出结果 return "OK"; #endregion } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + ex.ToString(), LocalPath.LogExePath); return "EE"; } } /// /// 条码、外箱码、服务码打印 /// /// /// /// /// /// /// public string PrintBarcodeTest(string accountCode, string userCode, string barcode, int? printerID, int copies, string remarks, int printWay) { string inputCode = $" accountCode:{accountCode} userCode:{userCode} barcode:{barcode} printerID:{printerID} copies:{copies} remarks:{remarks}"; try { #region 验证用户 并配置参数 sUserInfo DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode); if (userInfo == null) { OutputLog.TraceLog(LogPriority.Warning, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, " userInfo is null " + inputCode, LocalPath.LogExePath + "SmartDevice\\"); return "EU-01"; } SUserInfo sUserInfo = new SUserInfo(); sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]); sUserInfo.AccountCode = accountCode; sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]); sUserInfo.UserCode = userCode; #endregion #region 调用原始业务逻辑 ServiceResultEntity sre = BarcodePrintLogic.PrintBarcode_3C(barcode, copies, printerID, sUserInfo, printWay); if (sre.Status != Constant.ServiceResultStatus.Success) { return "EE=" + sre.Message; } #endregion #region 输出结果 return "OK"; #endregion } catch (Exception ex) { OutputLog.TraceLog(LogPriority.Error, this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, inputCode + ex.ToString(), LocalPath.LogExePath); return "EE"; } } } }