1432 lines
55 KiB
C#
1432 lines
55 KiB
C#
|
using System;
|
|||
|
using System.Collections;
|
|||
|
using System.IO;
|
|||
|
using System.Data;
|
|||
|
using Cosmos.Common;
|
|||
|
using Cosmos.UserFrame;
|
|||
|
using Cosmos.CommonManager;
|
|||
|
using Cosmos.ServiceProvider;
|
|||
|
using Cosmos.BaseFrame;
|
|||
|
using System.Diagnostics;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 start
|
|||
|
using Newtonsoft.Json;
|
|||
|
using Newtonsoft.Json.Linq;
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 end
|
|||
|
|
|||
|
//#20180710 LOCAL IP 가져오기 start
|
|||
|
using System.Net;
|
|||
|
using System.Net.NetworkInformation;
|
|||
|
//#20180710 LOCAL IP 가져오기 end
|
|||
|
|
|||
|
|
|||
|
namespace Cosmos.Service
|
|||
|
{
|
|||
|
public class PosSpec : IServiceUs
|
|||
|
{
|
|||
|
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
|
|||
|
private PosStatus m_cPosStatus = new PosStatus(); //기본정보 참조
|
|||
|
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
|
|||
|
protected IDataCommonUs m_cDataCommon = null; // 판매공통 모듈
|
|||
|
private IICReaderUs m_cICReader = null; // IC리더기
|
|||
|
private ISignPadUs m_cSignPad = null; // 사인패드
|
|||
|
|
|||
|
private readonly string m_FIELD_DIV = "|";
|
|||
|
private readonly string m_LINE_DIV = "#~";
|
|||
|
|
|||
|
private string m_sWmiClass = "";
|
|||
|
private string m_sWin32Product = "";
|
|||
|
|
|||
|
public PosSpec()
|
|||
|
{
|
|||
|
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
|
|||
|
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
|
|||
|
m_cICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
|
|||
|
m_cSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public string Execute(string[] aParam)
|
|||
|
{
|
|||
|
|
|||
|
string sRet = UserCom.RST_ERR;
|
|||
|
string sSendData = "";
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
sSendData += GetBios(); //BIOS
|
|||
|
sSendData += GetBoard(); //BOARD
|
|||
|
sSendData += GetCpu(); //CPU
|
|||
|
sSendData += GetPosPgm(); //POS PROGRAM VERSION
|
|||
|
sSendData += GetDB(); //DB
|
|||
|
sSendData += GetDisk(); //DISK
|
|||
|
sSendData += GetMemory(); //MEMORY
|
|||
|
sSendData += GetNetWork(); //NETWORK
|
|||
|
sSendData += GetVideo(); //VIDEO
|
|||
|
sSendData += GetOS(); //OS
|
|||
|
|
|||
|
//#20180710 Real OS 가져오기 start
|
|||
|
sSendData += GetRealOS(); //RealOS
|
|||
|
//#20180710 Real OS 가져오기 end
|
|||
|
|
|||
|
sSendData += GetSignPad(); //SIGNPAD
|
|||
|
sSendData += GetProduct(); //PRODUCT
|
|||
|
sSendData += GetReader(); //CARDREADER
|
|||
|
sSendData += GetDeviceStatus(); // 주변장치 상태 정보 가져오기
|
|||
|
sSendData += GetLastLogData(); // 로그, 매출 최초 일자
|
|||
|
sSendData += GetPosSystem(); // 인증 버전
|
|||
|
sSendData += GetCpiMstData(); // 캠페인코드(2017.06.21)
|
|||
|
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 start
|
|||
|
//ISP -> 인터넷 서비스 제공자
|
|||
|
sSendData += Get_IP_ISP();
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 end
|
|||
|
|
|||
|
//#20180710 LOCAL IP 가져오기 start
|
|||
|
sSendData += GetLocalIP(); //LOCAL IP
|
|||
|
//#20180710 LOCAL IP 가져오기 end
|
|||
|
|
|||
|
//sSendData += GetFiles(); //FILE
|
|||
|
|
|||
|
//앞 구분자 자르기
|
|||
|
sSendData = sSendData.Substring(2);
|
|||
|
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
"▶ POS SPEC SEND DATA :" + sSendData);
|
|||
|
|
|||
|
//전문 보내기
|
|||
|
sRet = ExecuteIrtPosSpec(sSendData);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
return sRet;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#region POS SPEC 전문 송신
|
|||
|
/// <summary>
|
|||
|
/// POS SPEC 전문 송신
|
|||
|
/// </summary>
|
|||
|
/// <param name="aParam"></param>
|
|||
|
/// <param name="aRet"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string ExecuteIrtPosSpec(string sSystemData)
|
|||
|
{
|
|||
|
string sRet = UserCom.RST_ERR;
|
|||
|
int iRecvTimeOut = 10000;
|
|||
|
|
|||
|
Hashtable htRecvData = new Hashtable();
|
|||
|
Hashtable htSendData = new Hashtable();
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
// 조회
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.POS_SPEC_INQ);
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.STOR_CD, m_cPosStatus.Base.StoreNo);
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.SALE_DT, DateTime.Now.ToString("yyyyMMdd"));
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.POS_NO, m_cPosStatus.Base.PosNo);
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.SYSTEM_DATA, sSystemData);
|
|||
|
htSendData.Add(Column.IQ_POS_SPEC.DATA.RES_CD, "");
|
|||
|
|
|||
|
|
|||
|
sRet = m_cDataCommon.ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.SysInfoPort, iRecvTimeOut, htSendData, ref htRecvData);
|
|||
|
|
|||
|
if (sRet != UserCom.RST_OK)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "SPEC SEND FAIL : " + sRet);
|
|||
|
sRet = UserCom.RST_ERR;
|
|||
|
return sRet;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (htRecvData[Column.IQ_POS_SPEC.DATA.RES_CD].ToString() == "00")
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "POS SPEC SEND SUCCESS");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "SPEC SEND FAIL RSN_CD : " + htRecvData[Column.IQ_POS_SPEC.DATA.RES_CD].ToString());
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
sRet = UserCom.RST_OK;
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
|
|||
|
}
|
|||
|
return sRet;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region System API 데이터 조회
|
|||
|
/// <summary>
|
|||
|
/// Return a hardware identifier
|
|||
|
/// </summary>
|
|||
|
/// <param name="wmiClass"></param>
|
|||
|
/// <param name="wmiProperty"></param>
|
|||
|
/// <param name="wmiMustBeTrue"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
|
|||
|
{
|
|||
|
string result = "";
|
|||
|
bool bCheck = false;
|
|||
|
|
|||
|
System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
|
|||
|
System.Management.ManagementObjectCollection moc = mc.GetInstances();
|
|||
|
foreach (System.Management.ManagementObject mo in moc)
|
|||
|
{
|
|||
|
if (wmiMustBeTrue != "")
|
|||
|
{
|
|||
|
bCheck = mo[wmiMustBeTrue].ToString() == "True" ? true : false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bCheck = true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (bCheck == true)
|
|||
|
{
|
|||
|
|
|||
|
//Only get the first one
|
|||
|
if (result == "")
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
result = mo[wmiProperty].ToString();
|
|||
|
break;
|
|||
|
}
|
|||
|
catch { }
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Return a hardware identifier
|
|||
|
/// </summary>
|
|||
|
/// <param name="wmiClass"></param>
|
|||
|
/// <param name="wmiProperty"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string identifier(string wmiClass, string wmiProperty)
|
|||
|
{
|
|||
|
return identifier(wmiClass, wmiProperty, "");
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 조회 데이터 포멧팅
|
|||
|
/// <summary>
|
|||
|
/// 조회 데이터 치환
|
|||
|
/// </summary>
|
|||
|
/// <param name="sInData"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string DataReplace(string sInData)
|
|||
|
{
|
|||
|
|
|||
|
string sData = "";
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
sData = sInData.Replace(m_FIELD_DIV, "").Replace(m_LINE_DIV, "").Replace("\n", "");
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
return sData;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 전송 데이터 포멧팅
|
|||
|
/// </summary>
|
|||
|
/// <param name="sWmiClass"></param>
|
|||
|
/// <param name="sWmiInstance"></param>
|
|||
|
/// <param name="sInstanceValue"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string DataFormat(string sWmiClass, string sWmiInstance, string sInstanceValue)
|
|||
|
{
|
|||
|
return DataFormat(sWmiClass, sWmiInstance, sInstanceValue, "");
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 전송 데이터 포멧팅
|
|||
|
/// </summary>
|
|||
|
/// <param name="sWmiClass"></param>
|
|||
|
/// <param name="sWmiInstance"></param>
|
|||
|
/// <param name="sInstanceValue"></param>
|
|||
|
/// <param name="AddValues"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string DataFormat(string sWmiClass, string sWmiInstance, string sInstanceValue, string AddValues)
|
|||
|
{
|
|||
|
string sRetData = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
if (AddValues == "")
|
|||
|
{
|
|||
|
sRetData = string.Format("{4}{1}{0}{2}{0}{3}", m_FIELD_DIV, sWmiClass, sWmiInstance, DataReplace(sInstanceValue), m_LINE_DIV);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
sRetData += string.Format("{4}{1}{0}{2}{0}{3} {5}", m_FIELD_DIV, sWmiClass, sWmiInstance, DataReplace(sInstanceValue), m_LINE_DIV, AddValues);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 사이즈 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <param name="byteCount"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetFileSize(double byteCount)
|
|||
|
{
|
|||
|
|
|||
|
string size = "0 Bytes";
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
if (byteCount >= 1099511627776.0)
|
|||
|
size = String.Format("{0:##.##}", byteCount / 1099511627776.0) + " TB";
|
|||
|
else if (byteCount >= 1073741824.0)
|
|||
|
size = String.Format("{0:##.##}", byteCount / 1073741824.0) + " GB";
|
|||
|
else if (byteCount >= 1048576.0)
|
|||
|
size = String.Format("{0:##.##}", byteCount / 1048576.0) + " MB";
|
|||
|
else if (byteCount >= 1024.0)
|
|||
|
size = String.Format("{0:##.##}", byteCount / 1024.0) + " KB";
|
|||
|
else if (byteCount > 0 && byteCount < 1024.0)
|
|||
|
size = byteCount.ToString() + " Bytes";
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
return size;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region CPU 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// CPU 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetCpu()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "CPU";
|
|||
|
m_sWin32Product = "Win32_Processor";
|
|||
|
|
|||
|
string retVal = identifier(m_sWin32Product, "Name");
|
|||
|
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Name", retVal);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Bios 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Bios 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetBios()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "BIOS";
|
|||
|
m_sWin32Product = "Win32_BIOS";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Name");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Name", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "SerialNumber");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "SerialNumber", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "SMBIOSBIOSVersion");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "SMBIOSBIOSVersion", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Disk 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Disk 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetDisk()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "DISK";
|
|||
|
m_sWin32Product = "Win32_DiskDrive";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Model");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Model", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "InterfaceType");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "InterfaceType", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Size");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
|
|||
|
//int iMaxMem = (int)(CmUtil.DoubleParse(retVal) / 1000000000);
|
|||
|
|
|||
|
//sRetData += DataFormat(m_sWmiClass, "Size", iMaxMem.ToString(), "GB");
|
|||
|
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Size", GetFileSize(CmUtil.DoubleParse(retVal)));
|
|||
|
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Board 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Board 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetBoard()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "BOARD";
|
|||
|
m_sWin32Product = "Win32_BaseBoard";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Product");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Product", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "SerialNumber");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "SerialNumber", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Manufacturer");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Manufacturer", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Video 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Video 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetVideo()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "VIDEO";
|
|||
|
m_sWin32Product = "Win32_VideoController";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Name");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Name", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "VideoModeDescription");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "VideoModeDescription", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "CurrentHorizontalResolution") + " X " + identifier("Win32_VideoController", "CurrentVerticalResolution");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Resolution", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region NetWork 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// NetWork 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetNetWork()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "NETWORK";
|
|||
|
m_sWin32Product = "Win32_NetworkAdapterConfiguration";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "MACAddress", "IPEnabled");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "MACAddress", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Memory 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Memory 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetMemory()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "MEMORY";
|
|||
|
m_sWin32Product = "Win32_ComputerSystem";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "TotalPhysicalMemory");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
|
|||
|
//int iMaxMem = (int)(CmUtil.DoubleParse(retVal) / 1024);
|
|||
|
|
|||
|
//sRetData += DataFormat(m_sWmiClass, "TotalVisibleMemorySize", iMaxMem.ToString(), "MB");
|
|||
|
sRetData += DataFormat(m_sWmiClass, "TotalPhysicalMemory", GetFileSize(CmUtil.DoubleParse(retVal)));
|
|||
|
|
|||
|
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region OS 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// OS 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetOS()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "OS";
|
|||
|
m_sWin32Product = "Win32_OperatingSystem";
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "Caption");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Caption", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "SerialNumber");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "SerialNumber", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
retVal = identifier(m_sWin32Product, "CSDVersion");
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "CSDVersion", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Files 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Files 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetFiles()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "FILE";
|
|||
|
|
|||
|
if (System.IO.Directory.Exists(BaseCom.NxBinPath))
|
|||
|
{
|
|||
|
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(BaseCom.NxBinPath);
|
|||
|
|
|||
|
foreach (var item in di.GetFiles())
|
|||
|
{
|
|||
|
|
|||
|
//if (item.Extension.ToUpper() == ".EXE" || item.Extension.ToUpper() == ".DLL" || item.Extension.ToUpper() == ".OCX" || item.Extension.ToUpper() == ".COM")
|
|||
|
//{
|
|||
|
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(item.FullName);
|
|||
|
retVal = myFileVersionInfo.FileVersion;
|
|||
|
|
|||
|
if (retVal == "" || retVal == null)
|
|||
|
{
|
|||
|
retVal = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|||
|
}
|
|||
|
|
|||
|
sRetData += DataFormat(m_sWmiClass, item.Name, retVal);
|
|||
|
//sRetData += string.Format("{4}{1}{0}{2}{0}{3}", m_FIELD_DIV, "FILE", item.Name, DataReplace(retVal), m_LINE_DIV);
|
|||
|
//}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region SignPad 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// SignPad 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetSignPad()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "SIGNPAD";
|
|||
|
|
|||
|
//응답메시지 (모델명(10) + 펌웨어버젼(20) + App버젼(30) + RF버젼(30) + 시리얼번호(30) + POS연동타입(1)
|
|||
|
if (m_cSignPad.GetSignPadInfo(ref retVal) == true)
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ModelName", CmUtil.MidH(retVal, 0, 9).Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "FirmwareVersion", CmUtil.MidH(retVal, 10, 20).Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "AppVersion", CmUtil.MidH(retVal, 30, 30).Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "RFVersion", CmUtil.MidH(retVal, 60, 30).Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "SerialNumber", CmUtil.MidH(retVal, 90, 30).Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "PosConnectedType", CmUtil.MidH(retVal, 120, 1).Trim());
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region DB 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// DB 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetDB()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "DB";
|
|||
|
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Version", m_cPosStatus.Base.MstDownDate);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 프로그램 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// 프로그램 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetPosPgm()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
string sProgramVer = "";
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
CmMessage cmPosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
|
|||
|
|
|||
|
m_sWmiClass = "POS_PGM";
|
|||
|
|
|||
|
for (int iLoop = 10; iLoop <= 19; iLoop++)
|
|||
|
{
|
|||
|
sProgramVer = CmUtil.StringNullEmpty(cmPosConfig.GetMessage("PGMVER").GetMessageValue("ProgramVer" + iLoop));
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ProgramVer" + iLoop, string.Format("{0}", sProgramVer == "" ? "2016011000001" : sProgramVer));
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Product 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// Product 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetProduct()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "PRODUCT";
|
|||
|
m_sWin32Product = "";
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region CARDREADER 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// CARDREADER 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetReader()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "CARDREADER";
|
|||
|
m_sWin32Product = "";
|
|||
|
|
|||
|
DeviceStatus m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
|
|||
|
|
|||
|
if (m_cDevStatus.ICReader.UseYn == false)
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "CardRederType", "MSR");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "CardRederType", "IC");
|
|||
|
|
|||
|
if (m_cICReader != null)
|
|||
|
{
|
|||
|
string[] arRet = m_cICReader.GetStatus_ICReader(PosConst.POS_CARD_READER_DEVICE_TYPE.IC_READER);
|
|||
|
|
|||
|
if (arRet != null && arRet.Length > 6)
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "HwStatus", arRet[0].Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "IntegrityStatus", arRet[1].Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "CardInStatus", arRet[2].Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ReaderName", arRet[3].Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ReaderVersion", arRet[4].Trim());
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ModuleId", arRet[5].Trim());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 주변장치 상태 정보 가져오기
|
|||
|
/// <summary>
|
|||
|
/// 주변장치 상태 정보 가져오기
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetDeviceStatus()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "DEVICE_STATUS";
|
|||
|
|
|||
|
//프린터
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_PRINTER", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosPrinterStatus));
|
|||
|
|
|||
|
//IC리더기
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_ICREADER", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosICReaderStatus));
|
|||
|
|
|||
|
//CAT 단말기
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_CAT", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosCATStatus));
|
|||
|
|
|||
|
//돈통
|
|||
|
//sRetData += DataFormat(m_sWmiClass, "POS_CASHDRAWER", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosCashDrawerStatus));
|
|||
|
|
|||
|
//저울
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_SCALE", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosScaleStatus));
|
|||
|
|
|||
|
//사인패드
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_SIGNPAD", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosSignPadStatus));
|
|||
|
|
|||
|
//라벨프린터
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_LABELPRINT", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosLabelPrinterStatus));
|
|||
|
|
|||
|
//MSR
|
|||
|
//sRetData += DataFormat(m_sWmiClass, "POS_MSR", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosMsrStatus));
|
|||
|
|
|||
|
//폴디스플레이
|
|||
|
sRetData += DataFormat(m_sWmiClass, "POS_SCALEPOLEDISP", ConvertSetDeviceStatus(m_cPosStatus.Base.OlePosScalePoleDispStatus));
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 로그, 매출 최초 일자
|
|||
|
/// <summary>
|
|||
|
/// 로그, 매출 최초 일자
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetLastLogData()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
string sQuery = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "LAST_LOG_DATE";
|
|||
|
|
|||
|
IMasterUs m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
|
|||
|
|
|||
|
if (m_cMstService != null)
|
|||
|
{
|
|||
|
sQuery = " SELECT MIN(SALE_DT) AS SALE_DT ";
|
|||
|
sQuery += " FROM POSLOG..TR_SALE_HEADER";
|
|||
|
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
|
|||
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|||
|
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
|
|||
|
|
|||
|
System.Data.DataTable dt = m_cMstService.Select(new string[] { sQuery });
|
|||
|
|
|||
|
if (!(dt == null || dt.Rows.Count == 0))
|
|||
|
{
|
|||
|
System.Data.DataRow dr = dt.Rows[0];
|
|||
|
|
|||
|
//매출 헤더 최초 일자
|
|||
|
sRetData += DataFormat(m_sWmiClass, "TR_FRIST_SALE", dr["SALE_DT"].ToString());
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 로그 최초 일자
|
|||
|
if (Directory.Exists(BaseCom.NxLogPath))
|
|||
|
{
|
|||
|
DirectoryInfo di = new DirectoryInfo(BaseCom.NxLogPath);
|
|||
|
|
|||
|
foreach (var item in di.GetFiles().OrderByDescending(f => f.LastWriteTime))
|
|||
|
{
|
|||
|
//로그 최초 일자
|
|||
|
sRetData += DataFormat(m_sWmiClass, "FRIST_TEXT_LOG", item.LastWriteTime.ToString("yyyyMMdd"));
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 상태값 문자 변환
|
|||
|
/// <summary>
|
|||
|
/// 상태값 문자 변환
|
|||
|
/// </summary>
|
|||
|
/// <param name="sData"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private string ConvertSetDeviceStatus(string sData)
|
|||
|
{
|
|||
|
string sRetData = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (sData == "" || sData == UserCom.RST_IGNORE) //사용 안함
|
|||
|
{
|
|||
|
sRetData = "NO";
|
|||
|
}
|
|||
|
else if (sData == UserCom.RST_OK) //정상
|
|||
|
{
|
|||
|
sRetData = "OK";
|
|||
|
}
|
|||
|
else //그외 에러
|
|||
|
{
|
|||
|
sRetData = "NG";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region POS SYSTEM INFO
|
|||
|
/// <summary>
|
|||
|
/// POS SYSTEM INFO
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetPosSystem()
|
|||
|
{
|
|||
|
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
StringBuilder sbVer = null;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
if (m_cICReader != null)
|
|||
|
{
|
|||
|
m_sWmiClass = "POS_SYSTEM_INFO";
|
|||
|
|
|||
|
//여전법 인증 번호
|
|||
|
sRetData += DataFormat(m_sWmiClass, "AUTH_SOFTWARE_VER", CmUtil.MidH(m_cPosStatus.Base.Auth_POS_SW_Ver.ToString(), 0, 16));
|
|||
|
|
|||
|
//IC리더기
|
|||
|
sbVer = m_cICReader.SetAuthInfoString(PosConst.POS_CARD_READER_DEVICE_TYPE.IC_READER);
|
|||
|
if (sbVer.ToString() != "")
|
|||
|
sRetData += DataFormat(m_sWmiClass, "AUTH_ICREADER_VER", CmUtil.MidH(sbVer.ToString(), 0, 16));
|
|||
|
|
|||
|
|
|||
|
//사인패드
|
|||
|
sbVer = m_cICReader.SetAuthInfoString(PosConst.POS_CARD_READER_DEVICE_TYPE.SAIGNPAD);
|
|||
|
if (sbVer.ToString() != "")
|
|||
|
sRetData += DataFormat(m_sWmiClass, "AUTH_SIGNPAD_VER", CmUtil.MidH(sbVer.ToString(), 0, 16));
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 캠페인마스터 정보(2017.06.21)
|
|||
|
/// <summary>
|
|||
|
/// 캠페인마스터 정보
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string GetCpiMstData()
|
|||
|
{
|
|||
|
string sRetData = string.Empty;
|
|||
|
string sQuery = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
m_sWmiClass = "MST_CPI";
|
|||
|
|
|||
|
IMasterUs m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
|
|||
|
if (m_cMstService == null) return "";
|
|||
|
|
|||
|
// 캠페인 마스터
|
|||
|
sQuery = " SELECT * FROM POSMST..MST_CPI WITH(NOLOCK) ";
|
|||
|
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
|
|||
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|||
|
sQuery += " AND '" + DateTime.Now.ToString("yyyyMMdd") + "' BETWEEN STARTDAY AND FNSHDAY ";
|
|||
|
sQuery += " AND PRGRS_STATUS = 'C'";
|
|||
|
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
|
|||
|
//sQuery += " ORDER BY CPI_CD ";
|
|||
|
|
|||
|
DataTable dtMstCpi = m_cMstService.Select(new string[] { sQuery });
|
|||
|
if (dtMstCpi == null || dtMstCpi.Rows.Count <= 0) return "";
|
|||
|
|
|||
|
foreach (DataRow dr in dtMstCpi.Rows)
|
|||
|
{
|
|||
|
// 캠페인 코드 설정
|
|||
|
sRetData += DataFormat(m_sWmiClass, CmUtil.GetDataRowStr(dr, PosMst.MST_CPI.DATA.CPI_CD), "");
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 start
|
|||
|
#region REAL IP, ISP
|
|||
|
/// <summary>
|
|||
|
/// REAL IP, ISP 정보
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private string Get_IP_ISP()
|
|||
|
{
|
|||
|
string sRetData = string.Empty;
|
|||
|
string sQuery = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
string url = "http://ipinfo.io/json";
|
|||
|
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
|
|||
|
System.Net.WebResponse resp = req.GetResponse();
|
|||
|
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
|
|||
|
string response = sr.ReadToEnd().Trim();
|
|||
|
|
|||
|
JObject jo = JObject.Parse(response);
|
|||
|
|
|||
|
string sRealIP = jo["ip"].ToString();
|
|||
|
string sISP = jo["org"].ToString();
|
|||
|
|
|||
|
m_sWmiClass = "NETWORK";
|
|||
|
|
|||
|
sRetData += DataFormat(m_sWmiClass, "REALIP", sRealIP);
|
|||
|
sRetData += DataFormat(m_sWmiClass, "ISP", sISP);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
|
|||
|
}
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
//#20180322 포스스팩에 REAL IP, ISP 추가 end
|
|||
|
|
|||
|
//#20180710 Real OS 가져오기 start
|
|||
|
#region Real OS 가져오기
|
|||
|
private string GetRealOS()
|
|||
|
{
|
|||
|
string sRetData = string.Empty;
|
|||
|
string retVal = string.Empty;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
#region 또다른방법
|
|||
|
/*
|
|||
|
OperatingSystem OS = Environment.OSVersion;
|
|||
|
string sWinName = string.Empty;
|
|||
|
switch (OS.Platform)
|
|||
|
{
|
|||
|
case PlatformID.Win32Windows:
|
|||
|
if (OS.Version.Major == 4)
|
|||
|
{
|
|||
|
switch (OS.Version.Minor)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
sWinName = "Windows 95";
|
|||
|
break;
|
|||
|
case 10:
|
|||
|
sWinName = "Windows 98";
|
|||
|
break;
|
|||
|
case 90:
|
|||
|
sWinName = "Window Me";
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case PlatformID.Win32NT:
|
|||
|
if (OS.Version.Major == 4)
|
|||
|
{
|
|||
|
switch (OS.Version.Minor)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
sWinName = "Windows NT 4.0";
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (OS.Version.Major == 5)
|
|||
|
{
|
|||
|
switch (OS.Version.Minor)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
sWinName = "Windows 2000";
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
sWinName = "Windows XP";
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
sWinName = "Window Server 2003";
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else if (OS.Version.Major == 6)
|
|||
|
{
|
|||
|
switch (OS.Version.Minor)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
sWinName = "Windows Vista";
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
*/
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 구포스방법
|
|||
|
|
|||
|
m_sWmiClass = "OS";
|
|||
|
|
|||
|
string strTempXPEmbedded = "SYSTEM\\WPA\\EMBEDDED";
|
|||
|
string strTempEBStandard2009 = "SYSTEM\\WPA\\WES";
|
|||
|
string strTempEMPOSReady2009 = "SYSTEM\\WPA\\POSREADY";
|
|||
|
string strTempWEPOS = "SYSTEM\\WPA\\WEPOS";
|
|||
|
|
|||
|
OperatingSystem OS = Environment.OSVersion;
|
|||
|
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
"▶ Platform :" + OS.Platform.ToString() + ", Version Major :" + OS.Version.Major + ", OS ServicePack :" + OS.ServicePack + ", OS Version :" + OS.Version + ", OS VersionString :" + OS.VersionString);
|
|||
|
|
|||
|
// xp 계열
|
|||
|
if (OS.Platform == PlatformID.Win32NT && OS.Version.Major == 5)
|
|||
|
{
|
|||
|
//1. Windows XP Embedded
|
|||
|
Microsoft.Win32.RegistryKey rgTempXPEmbedded = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strTempXPEmbedded, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree); //
|
|||
|
if (rgTempXPEmbedded != null)
|
|||
|
{
|
|||
|
retVal = "Windows XP Embedded " + OS.ServicePack;
|
|||
|
}
|
|||
|
|
|||
|
//2. Windows Embedded Standard 2009
|
|||
|
Microsoft.Win32.RegistryKey rgTempEBStandard2009 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strTempEBStandard2009, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree); //Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree
|
|||
|
if (rgTempEBStandard2009 != null)
|
|||
|
{
|
|||
|
retVal = "Windows Embedded Standard 2009 " + OS.ServicePack;
|
|||
|
}
|
|||
|
|
|||
|
//3. Windows Embedded POSReady 2009
|
|||
|
Microsoft.Win32.RegistryKey rgTempEMPOSReady2009 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strTempEMPOSReady2009, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree); //Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree
|
|||
|
if (rgTempEMPOSReady2009 != null)
|
|||
|
{
|
|||
|
retVal = "Windows Embedded POSReady 2009 " + OS.ServicePack;
|
|||
|
}
|
|||
|
|
|||
|
//4. Windows Embedded for Point of Service(WEPOS)
|
|||
|
Microsoft.Win32.RegistryKey rgTempWEPOS = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strTempWEPOS, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree); //Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree
|
|||
|
if (rgTempWEPOS != null)
|
|||
|
{
|
|||
|
retVal = "Windows Embedded for Point of Service " + OS.ServicePack;
|
|||
|
}
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
"▶ XP - GetRealOS :" + retVal);
|
|||
|
|
|||
|
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Real_OS", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_sWmiClass = "OS";
|
|||
|
m_sWin32Product = "Win32_OperatingSystem";
|
|||
|
|
|||
|
string sCaption = "";
|
|||
|
string sCSDVersion = "";
|
|||
|
sCaption = identifier(m_sWin32Product, "Caption");
|
|||
|
sCSDVersion = identifier(m_sWin32Product, "CSDVersion");
|
|||
|
|
|||
|
retVal = sCaption + sCSDVersion;
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
"▶ 7 - GetRealOS :" + retVal);
|
|||
|
|
|||
|
if (retVal != "")
|
|||
|
{
|
|||
|
sRetData += DataFormat(m_sWmiClass, "Real_OS", retVal);
|
|||
|
retVal = "";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
ex.ToString());
|
|||
|
}
|
|||
|
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion Real OS 가져오기
|
|||
|
//#20180710 Real OS 가져오기 end
|
|||
|
|
|||
|
|
|||
|
//#20180710 LOCAL IP 가져오기 start
|
|||
|
#region Local IP
|
|||
|
private string GetLocalIP()
|
|||
|
{
|
|||
|
string myIP = "";
|
|||
|
string strHostName = "";
|
|||
|
string sRetData = string.Empty;
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
m_sWmiClass = "NETWORK";
|
|||
|
|
|||
|
strHostName = System.Net.Dns.GetHostName();
|
|||
|
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
|
|||
|
foreach (IPAddress ipAddress in ipEntry.AddressList)
|
|||
|
{
|
|||
|
if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
|
|||
|
{
|
|||
|
myIP = ipAddress.ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
sRetData += DataFormat(m_sWmiClass, "LOCAL_IP", myIP);
|
|||
|
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
"▶ LOCAL_IP :" + myIP);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|||
|
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
|
|||
|
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|||
|
ex.ToString());
|
|||
|
}
|
|||
|
return sRetData;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
//#20180710 LOCAL IP 가져오기 end
|
|||
|
|
|||
|
}
|
|||
|
}
|