/*******************************************************************************
* 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.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 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";
}
}
}
}