|
|
using Dapper;
|
|
|
using Estsh.Core.Base;
|
|
|
using Estsh.Core.Dapper;
|
|
|
using Estsh.Core.Wms.IRepositories;
|
|
|
using Estsh.Core.Model.Result;
|
|
|
using Estsh.Core.Repositories;
|
|
|
using System.Collections;
|
|
|
using System.Data;
|
|
|
using System.Text;
|
|
|
using System.Text.Json;
|
|
|
using Estsh.Core.Models;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using Estsh.Core.Model.EnumUtil;
|
|
|
using Estsh.Core.Util;
|
|
|
using Microsoft.Extensions.Primitives;
|
|
|
using Estsh.Core.Extensions;
|
|
|
|
|
|
namespace Estsh.Core.Wms.Repositories
|
|
|
{
|
|
|
public abstract class WmsResultRepository<T> : IWmsResultRepository<T>, IDependency where T : IfBase
|
|
|
{
|
|
|
protected DapperDbContext dapperDbContext { get; set; }
|
|
|
public WmsResultRepository(DapperDbContext _dapperDbContext)
|
|
|
{
|
|
|
dapperDbContext = _dapperDbContext;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取WMS执行结果
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<T> GetRusultInfo(string tableName)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder query = new StringBuilder(1024);
|
|
|
query.Append("SELECT top 1000 * ");
|
|
|
query.Append("FROM " + tableName + " (readpast) ");
|
|
|
query.Append("WHERE SYNFLG = 'N' ");
|
|
|
query.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<T>(query.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public List<WmsJis> GetRusultInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder query = new StringBuilder(1024);
|
|
|
query.Append("SELECT * ");
|
|
|
query.Append(" from WMS_JIS ");//as a left join (select distinct part_no,is_wings from MES_WMS_PG_RECEIVE ) as b on a.MATNR=b.part_no
|
|
|
query.Append("WHERE SYNFLG = 'N' ");
|
|
|
query.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsJis>(query.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 将WMS执行结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult doResultsPush(List<WmsJis> dataList, string tableName, string interfaceName)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name = @methodName");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString(), new { methodName = interfaceName });
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
var ZzWmsnums = dataList.Select(a => a.ZzWmsnum).Distinct().ToList();
|
|
|
foreach (var ZzWmsnum in ZzWmsnums)
|
|
|
{
|
|
|
sqlList.Clear();
|
|
|
parametersList.Clear();
|
|
|
|
|
|
var sidList = dataList.Where(a => a.ZzWmsnum == ZzWmsnum).ToList();
|
|
|
string WmsNumGUID = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
SapInterfaceRequest<WmsJis> request = new Model.Result.SapInterfaceRequest<WmsJis>();
|
|
|
request.sid = WmsNumGUID;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = sidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update " + tableName + " set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZZ_WMSNUM=@ZZ_WMSNUM");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZZ_WMSNUM", ZzWmsnum);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
parameters.Add("@ERRMSG", result.message);//异常消息
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (!responseResult.Contains("500 Internal Server Error"))
|
|
|
{
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", WmsNumGUID);
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(sidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
#region
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS把确认的盘点结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsCycr> GetInventoryResultsInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder query = new StringBuilder(1024);
|
|
|
query.Append("SELECT * ");
|
|
|
query.Append("FROM wms_cycr (readpast) ");
|
|
|
query.Append("WHERE SYNFLG = 'N' ");
|
|
|
query.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsCycr>(query.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS把确认的盘点结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertInventoryResultsInfo(List<WmsCycr> cycrList)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name='InsertInventoryResultsInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString());
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var cycrSids = cycrList.Select(a => a.Sid).Distinct().ToList();
|
|
|
foreach (var cycrSid in cycrSids)
|
|
|
{
|
|
|
var cycrSidList = cycrList.Where(a => a.Sid == cycrSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<WmsCycr> request = new Model.Result.SapInterfaceRequest<WmsCycr>();
|
|
|
request.sid = cycrSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = cycrSidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update wms_cycr set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", cycrSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(cycrSidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS把采购收货的质检判定结果(合格入库)信息传到SAP
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsInqc> GetQualityInspectionResultsInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM wms_inqc (readpast) ");
|
|
|
sql.Append("WHERE synflg in = 'N' ");//未同步数据
|
|
|
sql.Append("order by RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsInqc>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS把采购收货的质检判定结果(合格入库)信息传到SAP
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertQualityInspectionResultsInfo(List<WmsInqc> wmsInqcs)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name='InsertQualityInspectionResultsInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString());
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var inqcSids = wmsInqcs.Select(a => a.Sid).Distinct().ToList();
|
|
|
foreach (var movrSid in inqcSids)
|
|
|
{
|
|
|
var inqcSidList = wmsInqcs.Where(a => a.Sid == movrSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<WmsInqc> request = new Model.Result.SapInterfaceRequest<WmsInqc>();
|
|
|
request.sid = movrSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = inqcSidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update wms_movr set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", movrSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(inqcSidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS把退货过帐结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsRetr> GetSupplierReturnResultInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM wms_retr (readpast) ");
|
|
|
sql.Append("WHERE SYNFLG = 'N' ");
|
|
|
sql.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsRetr>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS把退货过帐结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertSupplierReturnResultInfo(List<WmsRetr> wmsRetrs)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult sapInterfaceResult = new SapInterfaceResult();
|
|
|
|
|
|
StringBuilder ifSqlStringBuilder = new StringBuilder(1024);
|
|
|
ifSqlStringBuilder.Append("select * from sys_if_config (nolock) where method_name='InsertSupplierReturnResultInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(ifSqlStringBuilder.ToString());
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
sapInterfaceResult.success = false;
|
|
|
sapInterfaceResult.message = "地址获取失败,请检查接口配置表。";
|
|
|
return sapInterfaceResult;
|
|
|
}
|
|
|
string url = sysIfConfig.IfUrl;//获取接口地址
|
|
|
|
|
|
|
|
|
|
|
|
StringBuilder OQSqlStringBuilder = new StringBuilder(1024);
|
|
|
OQSqlStringBuilder.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
OQSqlStringBuilder.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
|
|
|
DynamicParameters OQdynamic = new DynamicParameters();
|
|
|
OQdynamic.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
OQdynamic.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
OQdynamic.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(wmsRetrs));
|
|
|
OQdynamic.Add("@ACTFLG", 'N');
|
|
|
dbConn.Execute(OQSqlStringBuilder.ToString(), OQdynamic);
|
|
|
|
|
|
SapInterfaceRequest<WmsRetr> request = new Model.Result.SapInterfaceRequest<WmsRetr>();
|
|
|
request.sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
request.inum = sysIfConfig.IfCode;//接口编码
|
|
|
request.objModel = wmsRetrs;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(url, request);
|
|
|
if (string.IsNullOrEmpty(responseResult))
|
|
|
{
|
|
|
sapInterfaceResult.success = false;
|
|
|
sapInterfaceResult.message = "供应商退货结果接口-返回值为空";
|
|
|
return sapInterfaceResult;
|
|
|
}
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
SapInterfaceResult result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsRetrs.Count; i++)
|
|
|
{
|
|
|
WmsRetr wmsRetr = wmsRetrs[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_retr set ");
|
|
|
sql.Append(" SYNFLG = 'Y',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZINSTNO=@ZINSTNO and ZEILE=@ZEILE and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZINSTNO", wmsRetr.Zinstno);//编号
|
|
|
parameters.Add("@ZEILE", wmsRetr.Zeile);//行号
|
|
|
parameters.Add("@MATNR", wmsRetr.Matnr);//物料编码
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", result.message);//消息
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsRetrs.Count; i++)
|
|
|
{
|
|
|
WmsRetr wmsRetr = wmsRetrs[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_retr set ");
|
|
|
sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZINSTNO=@ZINSTNO and ZEILE=@ZEILE and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZINSTNO", wmsRetr.Zinstno);//编号
|
|
|
parameters.Add("@ZEILE", wmsRetr.Zeile);//行号
|
|
|
parameters.Add("@MATNR", wmsRetr.Matnr);//物料编码
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", result.message);//异常消息
|
|
|
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsRetrs.Count; i++)
|
|
|
{
|
|
|
WmsRetr wmsRetr = wmsRetrs[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_retr set ");
|
|
|
sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZINSTNO=@ZINSTNO and ZEILE=@ZEILE and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZINSTNO", wmsRetr.Zinstno);//编号
|
|
|
parameters.Add("@ZEILE", wmsRetr.Zeile);//行号
|
|
|
parameters.Add("@MATNR", wmsRetr.Matnr);//物料编码
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
result.success = false;
|
|
|
result.message = responseResult;
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS把库存物料的转储(从SAP的一个库存地点到另一个库存地点,或报废出库,委外发运、零星出入库)执行结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsMovr> GetInventoryDumpResultInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM wms_movr (readpast) ");
|
|
|
sql.Append("WHERE SYNFLG = 'N' ");
|
|
|
sql.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsMovr>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS把库存物料的转储(从SAP的一个库存地点到另一个库存地点,或报废出库,委外发运、零星出入库)执行结果传到SAP
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertInventoryDumpResultInfo(List<WmsMovr> wmsMovrs)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name='InsertInventoryDumpResultInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString());
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var movrSids = wmsMovrs.Select(a => a.Sid).Distinct().ToList();
|
|
|
foreach (var movrSid in movrSids)
|
|
|
{
|
|
|
var movrSidList = wmsMovrs.Where(a => a.Sid == movrSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<WmsMovr> request = new Model.Result.SapInterfaceRequest<WmsMovr>();
|
|
|
request.sid = movrSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = movrSidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update wms_movr set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", movrSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(movrSidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS将每次发运的信息传递给SAP,SAP用于创建交货单。
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsJis> GetSalesAndShippingResultsInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM wms_jis (readpast) ");
|
|
|
sql.Append("WHERE SYNFLG = 'N' ");
|
|
|
sql.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsJis>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS将每次发运的信息传递给SAP,SAP用于创建交货单。
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertSalesAndShippingResultsInfo(List<WmsJis> wmsJisInterfaces)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult sapInterfaceResult = new SapInterfaceResult();
|
|
|
|
|
|
StringBuilder ifSqlStringBuilder = new StringBuilder(1024);
|
|
|
ifSqlStringBuilder.Append("select * from sys_if_config (nolock) where method_name='InsertSalesAndShippingResultsInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(ifSqlStringBuilder.ToString());
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
sapInterfaceResult.success = false;
|
|
|
sapInterfaceResult.message = "地址获取失败,请检查接口配置表。";
|
|
|
return sapInterfaceResult;
|
|
|
}
|
|
|
string url = sysIfConfig.IfUrl;//获取接口地址
|
|
|
|
|
|
|
|
|
StringBuilder OQSqlStringBuilder = new StringBuilder(1024);
|
|
|
OQSqlStringBuilder.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
OQSqlStringBuilder.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
|
|
|
DynamicParameters OQdynamic = new DynamicParameters();
|
|
|
OQdynamic.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
OQdynamic.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
OQdynamic.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(wmsJisInterfaces));
|
|
|
OQdynamic.Add("@ACTFLG", 'N');
|
|
|
dbConn.Execute(OQSqlStringBuilder.ToString(), OQdynamic);
|
|
|
|
|
|
SapInterfaceRequest<WmsJis> request = new Model.Result.SapInterfaceRequest<WmsJis>();
|
|
|
request.sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
request.inum = sysIfConfig.IfCode;//接口编码
|
|
|
request.objModel = wmsJisInterfaces;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(url, request);
|
|
|
if (string.IsNullOrEmpty(responseResult))
|
|
|
{
|
|
|
sapInterfaceResult.success = false;
|
|
|
sapInterfaceResult.message = "销售发货结果JIS接口-返回值为空";
|
|
|
return sapInterfaceResult;
|
|
|
}
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
SapInterfaceResult result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsJisInterfaces.Count; i++)
|
|
|
{
|
|
|
WmsJis wmsJis = wmsJisInterfaces[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_jis set ");
|
|
|
sql.Append(" SYNFLG = 'Y',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZZ_WMSNUM=@ZZ_WMSNUM and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZZ_WMSNUM", wmsJis.ZzWmsnum);//WMS发运单据号(按车)
|
|
|
parameters.Add("@MATNR", wmsJis.Matnr);//物料号
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", result.message);//消息
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
return result;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsJisInterfaces.Count; i++)
|
|
|
{
|
|
|
WmsJis wmsJis = wmsJisInterfaces[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_jis set ");
|
|
|
sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZZ_WMSNUM=@ZZ_WMSNUM and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZZ_WMSNUM", wmsJis.ZzWmsnum);//WMS发运单据号(按车)
|
|
|
parameters.Add("@MATNR", wmsJis.Matnr);//物料号
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", result.message);//异常消息
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
for (int i = 0; i < wmsJisInterfaces.Count; i++)
|
|
|
{
|
|
|
WmsJis wmsJis = wmsJisInterfaces[i];
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("update wms_jis set ");
|
|
|
sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where ZZ_WMSNUM=@ZZ_WMSNUM and MATNR=@MATNR");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
parameters.Add("@ZZ_WMSNUM", wmsJis.ZzWmsnum);//WMS发运单据号(按车)
|
|
|
parameters.Add("@MATNR", wmsJis.Matnr);//物料号
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
parametersList.Add(parameters);
|
|
|
}
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
result.success = false;
|
|
|
result.message = responseResult;
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS将每次发运的信息传递给SAP,SAP用于对交货单发货。
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<WmsNjsi> GetSalesAndDeliveryPlansInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM wms_njsi (readpast) ");
|
|
|
sql.Append("WHERE SYNFLG = 'N' ");
|
|
|
sql.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<WmsNjsi>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加WMS将每次发运的信息传递给SAP,SAP用于对交货单发货。
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertSalesAndDeliveryPlanInfo(List<WmsNjsi> wmsNjsis)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name='InsertSalesAndDeliveryPlanInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString());
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var njsiSids = wmsNjsis.Select(a => a.Sid).Distinct().ToList();
|
|
|
foreach (var movrSid in njsiSids)
|
|
|
{
|
|
|
var njsiSidList = wmsNjsis.Where(a => a.Sid == movrSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<WmsNjsi> request = new Model.Result.SapInterfaceRequest<WmsNjsi>();
|
|
|
request.sid = movrSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = njsiSidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update wms_movr set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", movrSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(njsiSidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// WMS将每次发运的信息传递给SAP,SAP用于对交货单发货。
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public List<MesMovtrn> GetProductionReportInfo()
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
sql.Append("SELECT * FROM MES_MOVTRN (readpast) ");
|
|
|
sql.Append("WHERE SYNFLG = 'N' ");
|
|
|
sql.Append("ORDER BY RECTIM ");
|
|
|
|
|
|
return dbConn.Query<MesMovtrn>(sql.ToString()).ToList();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 添加MES发送生产汇报信息给SAP
|
|
|
/// </summary>
|
|
|
/// <param name="sapCu"></param>
|
|
|
/// <returns></returns>
|
|
|
public SapInterfaceResult InsertProductionReportInfo(List<MesMovtrn> mesMovtrns)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name='InsertProductionReportInfo'");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString());
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var movtrnSids = mesMovtrns.Select(a => a.Sid).Distinct().ToList();
|
|
|
foreach (var movtrnSid in movtrnSids)
|
|
|
{
|
|
|
var movtrnSidList = mesMovtrns.Where(a => a.Sid == movtrnSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<MesMovtrn> request = new Model.Result.SapInterfaceRequest<MesMovtrn>();
|
|
|
request.sid = movtrnSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = movtrnSidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update MES_MOVTRN set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", movtrnSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(movtrnSidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//SapInterfaceResult sapInterfaceResult = new SapInterfaceResult();
|
|
|
|
|
|
//StringBuilder ifSqlStringBuilder = new StringBuilder(1024);
|
|
|
//ifSqlStringBuilder.Append("select * from sys_if_config (nolock) where method_name='InsertProductionReportInfo'");
|
|
|
//SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(ifSqlStringBuilder.ToString());
|
|
|
//if (sysIfConfig == null)
|
|
|
//{
|
|
|
// sapInterfaceResult.success = false;
|
|
|
// sapInterfaceResult.message = "地址获取失败,请检查接口配置表。";
|
|
|
// return sapInterfaceResult;
|
|
|
//}
|
|
|
//string url = sysIfConfig.IfUrl;//获取接口地址
|
|
|
|
|
|
//StringBuilder OQSqlStringBuilder = new StringBuilder(1024);
|
|
|
//OQSqlStringBuilder.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
//OQSqlStringBuilder.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
|
|
|
//DynamicParameters OQdynamic = new DynamicParameters();
|
|
|
//OQdynamic.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
//OQdynamic.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
//OQdynamic.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(mesMovtrns));
|
|
|
//OQdynamic.Add("@ACTFLG", 'N');
|
|
|
//dbConn.Execute(OQSqlStringBuilder.ToString(), OQdynamic);
|
|
|
|
|
|
//SapInterfaceRequest<MesMovtrnInterface> request = new Model.Result.SapInterfaceRequest<MesMovtrnInterface>();
|
|
|
//request.sid = Guid.NewGuid().ToString().Replace("-", "");
|
|
|
//request.inum = sysIfConfig.IfCode;//接口编码
|
|
|
//request.objModel = mesMovtrns;
|
|
|
|
|
|
//string responseResult = HttpClientHelper.HttpPostByJsonMathod(url, request);
|
|
|
//if (string.IsNullOrEmpty(responseResult))
|
|
|
//{
|
|
|
// sapInterfaceResult.success = false;
|
|
|
// sapInterfaceResult.message = "生产汇报接口-返回值为空";
|
|
|
// return sapInterfaceResult;
|
|
|
//}
|
|
|
//if (responseResult.Contains("message"))
|
|
|
//{
|
|
|
// SapInterfaceResult result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
// if (result.success == true)
|
|
|
// {
|
|
|
// List<string> sqlList = new List<string>();
|
|
|
// List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
// for (int i = 0; i < mesMovtrns.Count; i++)
|
|
|
// {
|
|
|
// MesMovtrnInterface mesMovtrn = mesMovtrns[i];
|
|
|
// StringBuilder sql = new StringBuilder(1024);
|
|
|
// sql.Append("update MES_MOVTRN set ");
|
|
|
// sql.Append(" SYNFLG = 'Y',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
// sql.Append("where GUID=@GUID");
|
|
|
// sqlList.Add(sql.ToString());
|
|
|
|
|
|
// DynamicParameters parameters = new DynamicParameters();
|
|
|
// parameters.Add("@GUID", mesMovtrn.Guid);//
|
|
|
// parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
// parameters.Add("@ERRMSG", result.message);//消息
|
|
|
// parametersList.Add(parameters);
|
|
|
// }
|
|
|
|
|
|
// this.ExecuteTransaction(sqlList, parametersList);
|
|
|
// return result;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// List<string> sqlList = new List<string>();
|
|
|
// List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
// for (int i = 0; i < mesMovtrns.Count; i++)
|
|
|
// {
|
|
|
// MesMovtrnInterface mesMovtrn = mesMovtrns[i];
|
|
|
// StringBuilder sql = new StringBuilder(1024);
|
|
|
// sql.Append("update MES_MOVTRN set ");
|
|
|
// sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
// sql.Append("where GUID=@GUID");
|
|
|
// sqlList.Add(sql.ToString());
|
|
|
|
|
|
// DynamicParameters parameters = new DynamicParameters();
|
|
|
// parameters.Add("@GUID", mesMovtrn.Guid);//
|
|
|
// parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
// parameters.Add("@ERRMSG", result.message);//异常消息
|
|
|
// parametersList.Add(parameters);
|
|
|
// }
|
|
|
|
|
|
// this.ExecuteTransaction(sqlList, parametersList);
|
|
|
// return result;
|
|
|
// }
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// List<string> sqlList = new List<string>();
|
|
|
// List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
// for (int i = 0; i < mesMovtrns.Count; i++)
|
|
|
// {
|
|
|
// MesMovtrnInterface mesMovtrn = mesMovtrns[i];
|
|
|
// StringBuilder sql = new StringBuilder(1024);
|
|
|
// sql.Append("update MES_MOVTRN set ");
|
|
|
// sql.Append(" SYNFLG = 'E',SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
// sql.Append("where ruid=@ruid");
|
|
|
// sqlList.Add(sql.ToString());
|
|
|
|
|
|
// DynamicParameters parameters = new DynamicParameters();
|
|
|
// parameters.Add("@GUID", mesMovtrn.Guid);//
|
|
|
// parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
// parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
// parametersList.Add(parameters);
|
|
|
// }
|
|
|
|
|
|
// this.ExecuteTransaction(sqlList, parametersList);
|
|
|
// SapInterfaceResult result = new SapInterfaceResult();
|
|
|
// result.success = false;
|
|
|
// result.message = responseResult;
|
|
|
// return result;
|
|
|
//}
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
/// 批量执行sql,带事务
|
|
|
/// </summary>
|
|
|
/// <param name="sqlStrings"></param>
|
|
|
/// <param name="parameterList"></param>
|
|
|
/// <param name="commandTimeout"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool ExecuteTransaction(List<string> sqlStrings, List<DynamicParameters> parameterList, int? commandTimeout = null)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
bool isClosed = dbConn.State == ConnectionState.Closed;
|
|
|
if (isClosed)
|
|
|
{
|
|
|
dbConn.Open();
|
|
|
}
|
|
|
//开启事务
|
|
|
using (var transaction = dbConn.BeginTransaction())
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
bool successCount = true;
|
|
|
for (int i = 0; i < sqlStrings.Count; i++)
|
|
|
{
|
|
|
dbConn.Execute(sqlStrings[i], parameterList[i], transaction, commandTimeout);
|
|
|
}
|
|
|
//提交事务
|
|
|
transaction.Commit();
|
|
|
return true;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
//回滚事务
|
|
|
LogHelper.Error("ExecuteTransaction", ex);
|
|
|
transaction.Rollback();
|
|
|
dbConn.Close();
|
|
|
dbConn.Dispose();
|
|
|
throw ex;
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
dbConn.Close();
|
|
|
dbConn.Dispose();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public SapInterfaceResult doResultsPush(List<T> dataList, string tableName, string interfaceName)
|
|
|
{
|
|
|
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
|
|
|
{
|
|
|
SapInterfaceResult result = new SapInterfaceResult();
|
|
|
List<string> sqlList = new List<string>();
|
|
|
List<DynamicParameters> parametersList = new List<DynamicParameters>();
|
|
|
StringBuilder sql = new StringBuilder(1024);
|
|
|
DynamicParameters parameters = new DynamicParameters();
|
|
|
|
|
|
sql.Append("select * from sys_if_config (nolock) where method_name = @methodName");
|
|
|
SysIfConfig sysIfConfig = dbConn.QueryFirst<SysIfConfig>(sql.ToString(), new { methodName = interfaceName });
|
|
|
|
|
|
if (sysIfConfig == null)
|
|
|
{
|
|
|
result.success = false;
|
|
|
result.message = "地址获取失败,请检查接口配置表。";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
var sids = dataList.Select(a => a.Sid).Distinct().ToList();
|
|
|
var lastSid = dataList.Last();
|
|
|
foreach (var cycrSid in sids)
|
|
|
{
|
|
|
// 清除sql执行list。
|
|
|
sqlList.Clear();
|
|
|
parametersList.Clear();
|
|
|
|
|
|
if (dataList.Count == 1000)
|
|
|
{
|
|
|
if (cycrSid == lastSid.Sid)
|
|
|
continue;
|
|
|
}
|
|
|
var sidList = dataList.Where(a => a.Sid == cycrSid).ToList();
|
|
|
|
|
|
SapInterfaceRequest<T> request = new Model.Result.SapInterfaceRequest<T>();
|
|
|
request.sid = cycrSid;
|
|
|
request.inum = sysIfConfig.IfCode;
|
|
|
request.objModel = sidList;
|
|
|
|
|
|
string responseResult = HttpClientHelper.HttpPostByJsonMathod(sysIfConfig.IfUrl, request);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(responseResult.ToString()))
|
|
|
{
|
|
|
sql.Clear();
|
|
|
sql.Append("update " + tableName + " set ");
|
|
|
sql.Append(" SYNFLG = @SYNFLG,SYNTIM=@SYNTIM,ERRMSG=@ERRMSG ");
|
|
|
sql.Append("where SID=@SID");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", cycrSid);
|
|
|
parameters.Add("@SYNTIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));//同步时间
|
|
|
|
|
|
|
|
|
if (responseResult.Contains("message"))
|
|
|
{
|
|
|
result = Newtonsoft.Json.JsonConvert.DeserializeObject<SapInterfaceResult>(responseResult);
|
|
|
|
|
|
parameters.Add("@ERRMSG", result.message);//异常消息
|
|
|
if (result.success == true)
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "Y");//同步状态
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (!responseResult.Contains("500 Internal Server Error"))
|
|
|
{
|
|
|
parameters.Add("@ERRMSG", responseResult);//异常消息
|
|
|
parameters.Add("@SYNFLG", "E");//同步状态
|
|
|
}
|
|
|
}
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
sql.Clear();
|
|
|
sql.Append("INSERT INTO dbo.OQ(SID,CRETIM,XMLCON,ACTFLG) ");
|
|
|
sql.Append(" VALUES(@SID,@CRETIM,@XMLCON,@ACTFLG) ");
|
|
|
sqlList.Add(sql.ToString());
|
|
|
|
|
|
parameters = new DynamicParameters();
|
|
|
parameters.Add("@SID", Guid.NewGuid().ToString().Replace("-", ""));
|
|
|
parameters.Add("@CRETIM", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
|
parameters.Add("@XMLCON", Newtonsoft.Json.JsonConvert.SerializeObject(sidList));
|
|
|
parameters.Add("@ACTFLG", 'N');
|
|
|
parametersList.Add(parameters);
|
|
|
|
|
|
this.ExecuteTransaction(sqlList, parametersList);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
result.message = "执行同步完成";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|