You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
14 KiB
246 lines
14 KiB
using ICSSoft.ERPWMS.Entity;
|
|
using Microsoft.Data.SqlClient;
|
|
using Microsoft.IdentityModel.Protocols;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ICSSoft.ERPWMS.SQL
|
|
{
|
|
public class CreateVendorInfo
|
|
{
|
|
public static Result Create(List<CreateVendorEntity> entitylist)
|
|
{
|
|
Result res = new Result();
|
|
try
|
|
{
|
|
string jsonstr = JsonConvert.SerializeObject(entitylist);
|
|
Log.WriteLogFile(jsonstr, "创建供应商日志");
|
|
StringBuilder sb = new StringBuilder();//接口返回Message
|
|
foreach (CreateVendorEntity entity in entitylist)
|
|
{
|
|
SqlConnection conn = new SqlConnection(ICSHelper.ReadConfig(ICSHelper.FileNameCompanyCon)["ERP"].ToString());
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
|
|
if (string.IsNullOrWhiteSpace(entity.cVenCode))
|
|
{
|
|
throw new Exception("存在表头供应商编码为空!");
|
|
}
|
|
else
|
|
{
|
|
//if (entity.dStopDate == null)
|
|
//{
|
|
// throw new Exception("停用日期参数为空!");
|
|
//}
|
|
if (string.IsNullOrWhiteSpace(entity.WorkPoint))
|
|
{
|
|
throw new Exception("站点参数为空!");
|
|
}
|
|
string WorkPoint = ICSHelper.GetConnectStringTest(entity.WorkPoint);
|
|
|
|
if (WorkPoint == "NotExit")
|
|
{
|
|
throw new Exception("站点编码不存在!");
|
|
}
|
|
|
|
|
|
string 停用日期 = "null";
|
|
if (entity.dStopDate!=null)
|
|
{
|
|
停用日期 = "'" + entity.dStopDate + "'";
|
|
}
|
|
|
|
#region 验证供应商编码是否重复
|
|
string sqlCheck = "Select cVenCode from {0}.dbo.Vendor where cVenCode ='{1}'";
|
|
sqlCheck = string.Format(sqlCheck, WorkPoint, entity.cVenCode);
|
|
DataTable dtCheck = ICSHelper.SQlReturnData(sqlCheck, cmd);
|
|
if (dtCheck != null && dtCheck.Rows.Count > 0)
|
|
{
|
|
throw new Exception("供应商编码已存在!");
|
|
}
|
|
#endregion
|
|
|
|
#region 表头数据
|
|
string sql = "";
|
|
if (string.IsNullOrWhiteSpace(entity.cDCCode) && !string.IsNullOrWhiteSpace(entity.cVCCode))
|
|
{
|
|
sql = @"Insert into {16}.dbo.Vendor(cVenCode,cVenName,cVenAbbName,cVCCode,cVenRegCode,cVenHeadCode,fRegistFund,cVenExch_name,bVenTax,iVenTaxRate,
|
|
cVenPUOMProtocol,cVenIType,cDCCode,dEndDate,cCreatePerson,dVenCreateDatetime,bVenHomeBranch,iVenGSPType,bVenAccPeriodMng,bLicenceDate,
|
|
bBusinessDate,bProxyDate,bPassGMP,bVenCargo,bProxyForeign,bVenService,dVenDevDate)
|
|
Values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',
|
|
'{8}','{9}','{10}','{11}',null,{13},'{14}','{15}',0,0,0,0,0,0,0,1,0,0,'{17}');";
|
|
}
|
|
if (string.IsNullOrWhiteSpace(entity.cDCCode) && string.IsNullOrWhiteSpace(entity.cVCCode))
|
|
{
|
|
sql = @"Insert into {16}.dbo.Vendor(cVenCode,cVenName,cVenAbbName,cVCCode,cVenRegCode,cVenHeadCode,fRegistFund,cVenExch_name,bVenTax,iVenTaxRate,
|
|
cVenPUOMProtocol,cVenIType,cDCCode,dEndDate,cCreatePerson,dVenCreateDatetime,bVenHomeBranch,iVenGSPType,bVenAccPeriodMng,bLicenceDate,
|
|
bBusinessDate,bProxyDate,bPassGMP,bVenCargo,bProxyForeign,bVenService,dVenDevDate)
|
|
Values ('{0}','{1}','{2}',null,'{4}','{5}','{6}','{7}',
|
|
'{8}','{9}','{10}','{11}',null,{13},'{14}','{15}',0,0,0,0,0,0,0,1,0,0,'{17}');";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(entity.cDCCode) && string.IsNullOrWhiteSpace(entity.cVCCode))
|
|
{
|
|
sql = @"Insert into {16}.dbo.Vendor(cVenCode,cVenName,cVenAbbName,cVCCode,cVenRegCode,cVenHeadCode,fRegistFund,cVenExch_name,bVenTax,iVenTaxRate,
|
|
cVenPUOMProtocol,cVenIType,cDCCode,dEndDate,cCreatePerson,dVenCreateDatetime,bVenHomeBranch,iVenGSPType,bVenAccPeriodMng,bLicenceDate,
|
|
bBusinessDate,bProxyDate,bPassGMP,bVenCargo,bProxyForeign,bVenService,dVenDevDate)
|
|
Values ('{0}','{1}','{2}',null,'{4}','{5}','{6}','{7}',
|
|
'{8}','{9}','{10}','{11}','{12}',{13},'{14}','{15}',0,0,0,0,0,0,0,1,0,0,'{17}');";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(entity.cDCCode) && !string.IsNullOrWhiteSpace(entity.cVCCode))
|
|
{
|
|
sql = @"Insert into {16}.dbo.Vendor(cVenCode,cVenName,cVenAbbName,cVCCode,cVenRegCode,cVenHeadCode,fRegistFund,cVenExch_name,bVenTax,iVenTaxRate,
|
|
cVenPUOMProtocol,cVenIType,cDCCode,dEndDate,cCreatePerson,dVenCreateDatetime,bVenHomeBranch,iVenGSPType,bVenAccPeriodMng,bLicenceDate,
|
|
bBusinessDate,bProxyDate,bPassGMP,bVenCargo,bProxyForeign,bVenService,dVenDevDate)
|
|
Values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',
|
|
'{8}','{9}','{10}','{11}','{12}',{13},'{14}','{15}',0,0,0,0,0,0,0,1,0,0,'{17}');";
|
|
}
|
|
sql = string.Format(sql, entity.cVenCode, entity.cVenName, entity.cVenAbbName, entity.cVCCode, entity.cVenRegCode, entity.cVenHeadCode, entity.fRegistFund,
|
|
entity.cVenExch_name, entity.bVenTax, entity.iVenTaxRate, entity.cVenPUOMProtocol, entity.cVenIType, entity.cDCCode, 停用日期,
|
|
entity.cCreatePerson, entity.dVenCreateDatetime, WorkPoint, entity.dVenCreateDatetime);
|
|
Log.WriteLogFile(sql, "创建供应商SQL日志");
|
|
if (!ICSHelper.ExecuteNonQuery(sql, cmd))
|
|
{
|
|
throw new Exception("新增供应商表头失败!");
|
|
}
|
|
#endregion
|
|
|
|
#region 表体数据
|
|
if (entity.list.Count > 0)
|
|
{
|
|
//验证表体中是否存在默认银行设置
|
|
List<CreateVendorDetailEntity> listBool = entity.list.Where(x => x.bDefault == true).ToList();
|
|
if (listBool.Count == 0)
|
|
{
|
|
throw new Exception("默认银行未设置!");
|
|
}
|
|
//验证表体中默认银行设置是否大于1个
|
|
if (listBool.Count > 1)
|
|
{
|
|
throw new Exception("默认银行设置数大于1!");
|
|
}
|
|
|
|
//获取表体最大ID
|
|
//int Sort = 0;
|
|
//string sqlID = "select max(ID) ID from {0}.dbo.VendorBank";
|
|
//sqlID = string.Format(sqlID, entity.WorkPoint);
|
|
//DataTable dtID = U8Helper.SQlReturnData(sqlID, cmd);
|
|
//if (dtID != null && dtID.Rows.Count > 0)
|
|
//{
|
|
// Sort = Convert.ToInt32(dtID.Rows[0]["ID"].ToString()) + 1;//首条ID
|
|
//}
|
|
bool InserFlag = true;
|
|
string sqlDetail = "";
|
|
foreach (CreateVendorDetailEntity detail in entity.list)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(detail.cVenCode))
|
|
{
|
|
InserFlag = false;
|
|
sb.Append("存在表体供应商编码为空!!!");
|
|
break;
|
|
}
|
|
if (detail.cVenCode != entity.cVenCode)
|
|
{
|
|
InserFlag = false;
|
|
sb.Append("表体供应商编码与表头不一致,表头供应商编码为:" + entity.cVenCode + ",表体供应商编码为:" + detail.cVenCode + "!!!");
|
|
break;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(detail.cAccountNum))
|
|
{
|
|
InserFlag = false;
|
|
sb.Append("银行账号为空,供应商编码为:" + detail.cVenCode + "!!!");
|
|
break;
|
|
}
|
|
|
|
//验证所属银行
|
|
string sqlBank = "Select cbankcode from {0}.dbo.AA_Bank Where cbankname ='{1}'";
|
|
sqlBank = string.Format(sqlBank, WorkPoint, detail.cBank);
|
|
DataTable dtBank = ICSHelper.SQlReturnData(sqlBank, cmd);
|
|
if (dtBank!=null&&dtBank.Rows.Count>0)
|
|
{
|
|
detail.cBank = dtBank.Rows[0]["cbankcode"].ToString();
|
|
}
|
|
else
|
|
{
|
|
InserFlag = false;
|
|
sb.Append("所属银行不存在,供应商编码为:" + detail.cVenCode + "!!!");
|
|
break;
|
|
}
|
|
|
|
|
|
sqlDetail += " Insert into {0}.dbo.VendorBank(cVenCode,cBranch,cBank,cAccountNum,cAccountName,bDefault) Values ('{1}','{2}','{3}','{4}','{5}','{6}');";
|
|
sqlDetail = string.Format(sqlDetail, WorkPoint, detail.cVenCode, detail.cBranch, detail.cBank, detail.cAccountNum, detail.cAccountName, detail.bDefault);
|
|
|
|
//Sort++;
|
|
}
|
|
|
|
if (InserFlag)
|
|
{
|
|
Log.WriteLogFile(sqlDetail, "创建供应商SQL日志");
|
|
if (!ICSHelper.ExecuteNonQuery(sqlDetail, cmd))
|
|
{
|
|
throw new Exception("新增供应商表体失败!");
|
|
}
|
|
cmd.Transaction.Commit();
|
|
}
|
|
else
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
sb.Append("表体为空,表头供应商编码为:" + entity.cVenCode + "!!!");
|
|
continue;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
sb.Append("执行报错,供应商编码为:" + entity.cVenCode + ",报错信息:" + ex.Message + "!!!");
|
|
continue;
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
|
|
if (sb.Length > 0)
|
|
{
|
|
res.IsSuccess = false;
|
|
res.Message = sb.ToString();
|
|
}
|
|
else
|
|
{
|
|
res.IsSuccess = true;
|
|
res.Message = "执行成功!";
|
|
}
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.IsSuccess = false;
|
|
res.Message = ex.Message;
|
|
return res;
|
|
}
|
|
}
|
|
}
|
|
}
|