using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;
using ServerPartTransmission.Common;
namespace ServerPartTransmission.Business
{
public class SERVERPARTFEEDBACK
{
//存储数据库连接字符串
private string _OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"];
//声明数据库操作类
private OracleHelper oracleHelper;
///
/// 构造函数
///
public SERVERPARTFEEDBACK()
{
oracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1],
_OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]);
}
///
/// 更新或者插入来自区服上的心跳数据反馈数据
///
///
///
public string SaveServerpartFeedBack(string jsonString)
{
string strBack = "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":[]}";
//下列数组标记字段必须有值,需先做有效性判断。
string[] _RequiredDatas = new string[]
{
"SERVERPARTCODE",
"SHOPCODE",
"MACHINECODE"
};
string _ISCheckData = Validation.ISCheckData(jsonString, _RequiredDatas);
if (_ISCheckData != null)
{
strBack = _ISCheckData;
return strBack;
}
List _DataStateFeedback =
JsonHelper.JSONStringToListUTC(jsonString);
if (_DataStateFeedback == null || _DataStateFeedback.Count == 0)
{
strBack = "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[]}";
return strBack;
}
string _strServerPart = "";
var _ServerPartList = _DataStateFeedback.Select(p => p.SERVERPARTCODE).Distinct().ToArray();
foreach (var _ServerPartTemp in _ServerPartList)
{
_strServerPart += (string.IsNullOrWhiteSpace(_strServerPart) ? "'" : ",'") + _ServerPartTemp.Trim() + "'";
}
//取出该(这些)服务区既定字段的所有数据
DataTable _DataTable = oracleHelper.ExcuteSqlGetDataSet(
string.Format(@"SELECT SERVERPARTCODE,SHOPCODE,MACHINECODE FROM HIGHWAY_EXCHANGE.T_SERVERPARTFEEDBACK
WHERE SERVERPARTCODE IN ({0}) ", _strServerPart)).Tables[0];
List _InsertList = new List();//需插入的集合
List _UpdateList = new List();//需更新的集合
DataRow[] _DataRows = null; //临时DataRow数组
foreach (Model.EXCHANGE.SERVERPARTFEEDBACK _STATEFEEDBACK in _DataStateFeedback)
{
if (_DataTable != null && _DataTable.Rows.Count > 0)
{
_DataRows = _DataTable.Select(
string.Format(@" SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}' ",
_STATEFEEDBACK.SERVERPARTCODE, _STATEFEEDBACK.SHOPCODE, _STATEFEEDBACK.MACHINECODE));
if (_DataRows != null && _DataRows.Length > 0)
{
//记录已存在、需更新的数据
_UpdateList.Add(_STATEFEEDBACK);
continue;
}
}
//需更新的集合
_InsertList.Add(_STATEFEEDBACK);
}
if (_InsertList.Count + _UpdateList.Count != _DataStateFeedback.Count)
{
strBack = "{\"error\": -1 ,\"msg\": \"添加失败:数据分割失败!\",\"rows\":[]}";
return strBack;
}
if (_InsertList.Count > 0)
{
OperationDataHelper.InsertTableData(
oracleHelper, _InsertList, "HIGHWAY_EXCHANGE.T_SERVERPARTFEEDBACK");
}
if (_UpdateList.Count > 0)
{
try
{
OperationDataHelper.UpdateTableData(
oracleHelper, _UpdateList, "HIGHWAY_EXCHANGE.T_SERVERPARTFEEDBACK",
new string[] { "SERVERPARTCODE", "SHOPCODE", "MACHINECODE" }, true);
}
catch (Exception)
{
strBack = "{\"error\": 2 ,\"msg\": \"添加成功,更新失败!\",\"rows\":" +
JsonHelper.ListToJson(_UpdateList, "rows", false) + "}";
return strBack;
}
}
return strBack;
}
}
}