/*******************************************************************************
* Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
* 类的信息:
* 1.程序名称:SmartDeviceLogic.cs
* 2.功能描述:接收智能设备请求。
* 编辑履历:
* 作者 日期 版本 修改内容
* 陈晓野 2018/10/25 1.00 新建
*******************************************************************************/
using System;
using System.Data;
using Dongke.IBOSS.PRD.Basics.DataAccess;
using Dongke.IBOSS.PRD.Service.DataModels;
using Dongke.IBOSS.PRD.WCF.DataModels;
using Dongke.IBOSS.PRD.Basics.BaseResources;
using Oracle.ManagedDataAccess.Client;
namespace Dongke.IBOSS.PRD.Service.SmartDeviceService
{
///
/// 处理智能设备请求
///
public class SmartDeviceLogic
{
///
/// 验证连接信息
///
///
///
///
public static DataTable CheckUserCode(string accountcode, string usercode)
{
IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
con.Open();
string sqlString = "SELECT a.accountid, a.accountcode, u.userid, u.usercode, u.username\n" +
" FROM tp_mst_user u\n" +
" INNER JOIN tp_mst_account a\n" +
" ON a.accountid = u.accountid\n" +
" WHERE u.valueflag = '1'\n" +
" AND u.usercode = :usercode\n" +
" AND a.accountcode = :accountcode";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":usercode",OracleDbType.Varchar2, usercode,ParameterDirection.Input),
new OracleParameter(":accountcode",OracleDbType.Varchar2, accountcode,ParameterDirection.Input),
};
DataTable userInfo = con.GetSqlResultToDt(sqlString, paras);
if (userInfo == null || userInfo.Rows.Count == 0)
{
return null;
}
return userInfo;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.ConnState == ConnectionState.Open)
{
con.Close();
}
}
}
//xuwei add 2019-11-15 增加 plc 的 注浆 登窑 入窑 卸窑 方法
///
/// 通过 accountCode 和 userCode 自动从系统获取userinfo 用来通过原业务逻辑验证
///
///
///
///
public static SUserInfo getUserInfoByDoLogin(string acountCode,string userCode)
{
SUserInfo sUser = new SUserInfo();
#region 直接从库里读取密码备用
IDBConnection conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
string password = conn.GetSqlResultToStr($@"
SELECT
PASSWORD
FROM
TP_MST_USER
WHERE
ACCOUNTCODE = '{acountCode}'
AND USERCODE = '{userCode}'
");
conn.Close();
#endregion
#region 设置登录参数
LoginRequestEntity para = new LoginRequestEntity();
para.AccountCode = acountCode;
para.UserCode = userCode;
para.Password = password;
para.ComputerName = "PLC";
para.IPAddress = "0.0.0.0";
para.MACAddress = "00:00:00:00:00:00";
para.SessionKey = null;
#endregion
#region 调用标准登录接口获取UserInfo 参数 activeType 0 pc登录 1 移动端登录
LoginResultEntity result = DKIBOSSPRDLogic.DKIBOSSPRDLogic.DoLogin(para, "0");
sUser.AccountCode = result.CurrentUserEntity.AccountCode;
sUser.AccountID = result.CurrentUserEntity.AccountID;
sUser.ComputerName = para.ComputerName;
sUser.IPAddress = para.IPAddress;
sUser.MACAddress = para.MACAddress;
sUser.OrganizationCode = result.CurrentUserEntity.OrganizationCode;
sUser.OrganizationID = result.CurrentUserEntity.OrganizationID;
sUser.SessionKey = result.CurrentUserEntity.SessionKey;
sUser.UserCode = result.CurrentUserEntity.UserCode;
sUser.UserID = result.CurrentUserEntity.UserID;
#endregion
return sUser;
}
///
/// 通过 accountCode 和 userCode 获取 userinfo
///
///
///
///
public static SUserInfo getUserInfo(string accountCode,string userCode)
{
SUserInfo sUser = new SUserInfo();
DataTable dt = CheckUserCode(accountCode, userCode);
if(dt.Rows.Count>0)
{
sUser.AccountCode = accountCode;
sUser.AccountID = Convert.ToInt32(dt.Rows[0]["accountid"]);
sUser.UserCode = userCode;
sUser.UserID = Convert.ToInt32(dt.Rows[0]["userid"]);
}
return sUser;
}
///
/// 注浆
///
///
///
///
///
public static ServiceResultEntity SetGroutingLineDetail(string accountCode, string userCode, string groutingData)
{
return PDAModuleLogic.PDAModuleLogic.SetGroutingLineDetail(groutingData, getUserInfo(accountCode, userCode));
}
///
/// 登窑 入窑 卸窑
///
///
///
///
///
///
///
public static ServiceResultEntity AddWorkPieceKiln(string accountCode, string userCode, int procedureID, DataTable barcodeTable, out ProcedureEntity procedureInfo)
{
ServiceResultEntity sre = new ServiceResultEntity();
DataTable dt = PMModuleLogic.PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, getUserInfo(accountCode, userCode), out procedureInfo);
if(dt.Rows.Count>0)
{
sre.Status = dt.Rows[0]["out_errMsg"].ToString() == "" ? Constant.ServiceResultStatus.Success : Constant.ServiceResultStatus.Other;
sre.Result = dt.Rows[0]["out_errMsg"].ToString();
dt.TableName = "result";
sre.Data.Tables.Add(dt);
}
return sre;
}
//xuwei end
}
}