/*******************************************************************************
* 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-19 增加 按窑车号 查询窑车数据 方法
public static DataTable getKilnCarByCode(string kilnCarCode)
{
IDBConnection conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
conn.Open();
DataTable kilnCar = conn.GetSqlResultToDt($@"
SELECT
k.KILNID,
k.KILNCODE,
k.KILNNAME,
c.KILNCARID,
c.KILNCARCODE,
c.KILNCARNAME
FROM
TP_MST_KILN k
LEFT JOIN TP_MST_KILNCAR c ON k.KILNID = c.KILNID
WHERE
c.VALUEFLAG = '1'
AND c.KILNCARCODE = '{kilnCarCode}'
");
conn.Close();
return kilnCar;
}
//xuwei end
//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 lineCode, string groutingData, SUserInfo sUserInfo)
{
IDBConnection conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
string sqlString = "select t.userid, u.usercode, u.username, t.groutinglineid\n" +
" from tp_pc_groutingline t\n" +
" inner join tp_mst_user u\n" +
" on u.userid = t.userid\n" +
" where t.groutinglinecode = :lineCode\n" +
" and t.valueflag='1'\n" +
" and t.gmouldstatus = 1";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":lineCode", lineCode),
};
DataTable dt = conn.GetSqlResultToDt(sqlString, paras);
if (dt == null || dt.Rows.Count == 0)
{
ServiceResultEntity sre = new ServiceResultEntity();
sre.Status = Constant.ServiceResultStatus.NoSearchResults;
sre.Message = $"成型线{lineCode}不存在或当前状态不能注浆";
return sre;
}
sUserInfo.UserID = Convert.ToInt32(dt.Rows[0]["userid"]);
sUserInfo.UserCode = dt.Rows[0]["usercode"] + "";
return PDAModuleLogic.PDAModuleLogic.SetGroutingLineDetail(groutingData, sUserInfo);
}
///
/// 登窑 入窑 卸窑
///
///
///
///
///
///
///
public static DataTable AddWorkPieceKiln(int procedureID, DataTable barcodeTable, SUserInfo sUserInfo)
{
ProcedureEntity procedureInfo = null;
ServiceResultEntity sre = new ServiceResultEntity();
return PMModuleLogic.PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo);
}
//xuwei end
#region 恒洁三水三车间对接乾润工序用
///
/// 获取条码返回数据
///
///
///
public static DataTable GetGroutingdailydetail(string barcode)
{
IDBConnection conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
try
{
string sqlString = "SELECT \n" +
" t.barcode\n" +
" ,t.goodscode\n" +
" ,t.materialcode\n" +
" ,g.goodstypeid\n" +
" ,g.goods_line_type\n" +
" ,t.goodsleveltypeid\n" +
" ,t.GROUTINGLINECODE\n" +
" ,t.GROUTINGLINENAME\n" +
" FROM tp_pm_groutingdailydetail t\n" +
" INNER JOIN tp_mst_goods g\n" +
" ON g.goodsid = t.goodsid\n" +
" WHERE t.barcode = :barcode";
OracleParameter[] paras = new OracleParameter[]
{
new OracleParameter(":barcode", barcode),
};
DataTable data = conn.GetSqlResultToDt(sqlString, paras);
return data;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
//public static string AddSmartLog(string )
//{
//}
#endregion
}
}