You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1049 lines
50 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
using HcUtility.Comm;
using DSWeb.Areas.MvcShipping.Models.Disport;
using System.Text.RegularExpressions;
using DSWeb.Areas.MvcShipping.Models.MsOpCtnRentBuy;
using WebSqlHelper;
using System.Data.Common;
using DSWeb.MvcShipping.Models.MsOpCtnStatus;
using DSWeb.MvcShipping.Models.PortRef;
using DSWeb.Areas.MvcShipping.Comm;
namespace DSWeb.Areas.MvcShipping.DAL.MsOpCtnRentBuy
{
public class op_ctn_outin
{
// 查询op_ctn_outin语句
static public List<op_ctn_outinModel> GetDataList(string strCondition, string userid, string usercode, string orgcode, string sort = null)
{
StringBuilder sb = new StringBuilder(" select o.gid,");
sb.Append("(case when o.status=1 then '新建' when o.status=2 then '提交审核' when o.status=3 then '审核' end) statusref, ");
sb.Append("(case when ctntype=1 then '买箱' when ctntype=2 then '租入' when ctntype=3 then '租出' when ctntype=4 then '卖箱' end) ctntyperef, ");
sb.Append("cntrowner,o.cnsource,buytime,selltime,rent_begintime,rent_endtime,o.REMARKS,BSDATE,INPUTBY,AUDITBY,BSNO,SHOWNAME,SELLBY,RENTDAY,(select showname from [user] where gid=auditby) as shr ");
sb.Append(" from op_ctn_outin as o inner join [user] as u on(u.gid=o.inputby)");
if (!string.IsNullOrEmpty(strCondition))
{
sb.Append(" where " + strCondition + " order by bsdate desc");
}
else
{
sb.Append(" order by bsdate desc");
}
return SetData(sb);
}
#region 根据ID进行查询
static public List<op_ctn_outinModel> op_ctn_outinByID(string GID)
{
StringBuilder sb = new StringBuilder(" select o.gid,");
sb.Append("(case when status=1 then '新建' when status=2 then '提交审核' when status=3 then '审核' end) statusref, ");
sb.Append("(case when ctntype=1 then '买箱' when ctntype=2 then '租入' when ctntype=3 then '租出' when ctntype=4 then '卖箱' end) ctntyperef,");
sb.Append("cntrowner,cnsource,buytime,selltime,rent_begintime,rent_endtime,REMARKS,BSDATE,INPUTBY,AUDITBY,BSNO,SHOWNAME,SELLBY,RENTDAY");
sb.Append(",(select showname from [user] where gid=auditby) as shr from op_ctn_outin as o inner join [user] as u on(u.gid=o.inputby) where o.gid='" + GID + "'");
return SetData(sb);
}
#endregion
#region 查询当前登录用户
static public List<op_ctn_outinModel> getuser(string userid)
{
string sql = "select showname from [user] where gid='" + userid + "'";
return SetUser(sql);
}
private static List<op_ctn_outinModel> SetUser(string sb)
{
var headList = new List<op_ctn_outinModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sb.ToString()))
{
while (reader.Read())
{
op_ctn_outinModel data = new op_ctn_outinModel();
#region Set DB data to Object
data.INPUTBY = Convert.ToString(reader["showname"]);
data.BSDATE = DateTime.Now.ToShortDateString().ToString();
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
private static List<op_ctn_outinModel> SetData(StringBuilder sb)
{
var headList = new List<op_ctn_outinModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sb.ToString()))
{
while (reader.Read())
{
op_ctn_outinModel data = new op_ctn_outinModel();
#region Set DB data to Object
data.GID = Convert.ToString(reader["gid"]);
data.STATUSREF = Convert.ToString(reader["statusref"]);
data.CTNTYPEREF = Convert.ToString(reader["ctntyperef"]);
data.CNTROWNER = Convert.ToString(reader["cntrowner"]);
data.CNSOURCE = Convert.ToString(reader["cnsource"]);
data.RENTDAY = Convert.ToString(reader["RENTDAY"]);
data.SELLTIME = Convert.ToString(reader["selltime"]);
if (data.SELLTIME == null || data.SELLTIME == "")
{
}
else
{
data.SELLTIME = Convert.ToDateTime(data.SELLTIME).ToString("yyyy-MM-dd");
}
data.RENT_BEGINTIME = Convert.ToString(reader["rent_begintime"]);
if (data.RENT_BEGINTIME == null || data.RENT_BEGINTIME == "")
{
}
else
{
data.RENT_BEGINTIME = Convert.ToDateTime(data.RENT_BEGINTIME).ToString("yyyy-MM-dd");
}
data.RENT_ENDTIME = Convert.ToString(reader["rent_endtime"]);
if (data.RENT_ENDTIME == null || data.RENT_ENDTIME == "")
{
}
else
{
data.RENT_ENDTIME = Convert.ToDateTime(data.RENT_ENDTIME).ToString("yyyy-MM-dd");
}
data.BUYTIME = Convert.ToString(reader["buytime"]);
if (data.BUYTIME==null||data.BUYTIME=="")
{
}
else
{
data.BUYTIME = Convert.ToDateTime(data.BUYTIME).ToString("yyyy-MM-dd");
}
data.Remarks = Convert.ToString(reader["REMARKS"]);
data.BSDATE = Convert.ToString(reader["BSDATE"]);
if (data.BSDATE == null || data.BSDATE == "")
{
}
else
{
data.BSDATE = Convert.ToDateTime(data.BSDATE).ToString("yyyy-MM-dd");
}
data.INPUTBY = Convert.ToString(reader["SHOWNAME"]);
data.AUDITBY = Convert.ToString(reader["shr"]);
data.BSNO = Convert.ToString(reader["BSNO"]);
data.SELLBY = Convert.ToString(reader["SELLBY"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#region 删除
public static DBResult DeleteDetail(op_ctn_outinModel headData)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmd = db.GetSqlStringCommand("delete from op_ctn_outin where gid='" + headData.GID + "'");
db.ExecuteNonQuery(cmd, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "删除出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "删除成功";
return result;
}
#endregion
#region 根据GID删除
public static void Deletexh(op_ctn_outinModel xh)
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmd = db.GetSqlStringCommand(" delete from container_info where gid='" + xh.GID + "'");
db.ExecuteNonQuery(cmd, tran);
tran.Commit();
}
catch (Exception)
{
throw;
}
finally {
conn.Close();
}
}
}
#endregion
#region 提交审核
public static DBResult UpdateDetail(op_ctn_outinModel headData,string st,string userid)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
#region 数据状态处理
if (st=="3")
{
if (headData.STATUSREF=="新建")
{
result.Success = false;
result.Message = "该数据还未提交审核";
return result;
}
else if (headData.STATUSREF == "审核")
{
result.Success = false;
result.Message = "该数据已经审核通过,无需再次审核";
return result;
}
else
{
int ys = 0;
string fy = "";
string status = "";
switch (headData.CTNTYPEREF)
{
case "买箱":
ys = 2;//应付
status = "1";
InsertCon(status,headData);
fy = "买箱费";
break;
case "租入":
ys = 2;//应付
status = "1";
InsertCon(status,headData);
fy = "租入箱费";
break;
case "租出":
ys = 1;//应收
status = "4";
InsertCon(status,headData);
fy = "租出箱费";
break;
case "卖箱":
ys = 1;//应收
status = "7";
InsertCon(status,headData);
fy = "卖箱费";
break;
default:
break;
}
string id = " linkgid='" + headData.GID + "'";
if (GetBodyList(id).Count>0)
{
InsertShr(headData,userid);
SaveFee(GetBodyList(id),headData,userid,ys,fy);
}
}
}
if (st == "2")
{
if (headData.STATUSREF == "审核")
{
result.Success = false;
result.Message = "该数据已经审核通过";
return result;
}
else if (headData.STATUSREF == "提交审核")
{
result.Success = false;
result.Message = "该数据已经提交审核,无需再次提交";
return result;
}
}
if (st == "4")
{
if (headData.STATUSREF == "新建")
{
result.Success = false;
result.Message = "该数据还未通过审核,无法提交";
return result;
}
else if (headData.STATUSREF == "提交审核")
{
result.Success = false;
result.Message = "该数据还未通过审核,无法提交";
return result;
}
else
{
Deletexh(headData);
}
var deletefree = db.GetSqlStringCommand("delete from ch_fee where bsno='" + headData.GID + "'");
db.ExecuteNonQuery(deletefree, tran);
var c = db.GetSqlStringCommand("update op_ctn_outin set [status]='" + 1 + "' where gid='" + headData.GID + "'");
db.ExecuteNonQuery(c, tran);
tran.Commit();
InsertShr(headData,"");
result.Success = true;
result.Message = "取消审核成功";
return result;
}
if (st == "1")
{
if (headData.STATUSREF == "审核")
{
result.Success = false;
result.Message = "该数据已经审核通过";
return result;
}
else if (headData.STATUSREF == "新建")
{
result.Success = false;
result.Message = "该数据还未提交审核";
return result;
}
}
#endregion
var cmd = db.GetSqlStringCommand("update op_ctn_outin set [status]='"+st+"' where gid='" + headData.GID + "'");
db.ExecuteNonQuery(cmd, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
if (st=="1")
{
result.Message = "取消成功";
}
else if (st=="2")
{
result.Message = "提交审核成功";
}
else if (st=="4")
{
result.Message = "取消审核成功";
}
else
{
result.Message = "审核通过";
}
return result;
}
#region 审核完之后插入审核人
public static void InsertShr(op_ctn_outinModel xh,string userid)
{
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmd = db.GetSqlStringCommand("update op_ctn_outin set AUDITBY='" + userid + "' where gid='" + xh.GID + "'");
db.ExecuteNonQuery(cmd, tran);
tran.Commit();
}
catch (Exception)
{
throw;
}
}
}
#endregion
#endregion
#region 查看有没有重复的箱子
public static int cfBSNO(string bsno)
{
try
{
string csql = "select count(bsno) as c from op_ctn_outin where bsno='" + bsno+ "'";
int findresult = Convert.ToInt32(findname(csql));
return findresult;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 读取数据库返回结果
private static string findname(string strSql)
{
string c = "";
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
#region Set DB data to Object
c = Convert.ToString(reader["c"]);
#endregion
}
reader.Close();
}
return c;
}
#endregion
public static DBResult SDetail(op_ctn_outinModel headData, List<op_ctn_outinmxModel> bodyList, string userid, string status, string opstatus)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
if (opstatus=="add")
{
if (cfBSNO(headData.BSNO) > 0)
{
result.Success = false;
result.Message = "保存出现错误,委托单号不可以重复";
return result;
}
}
string sql = "";
var cmdDelete = db.GetSqlStringCommand("delete from op_ctn_outin where gid='" + headData.GID + "'");
db.ExecuteNonQuery(cmdDelete, tran);
headData.GID = headData.DM_ID;
switch (status)
{
case "1":
string youmaobing = headData.SELLBY;
sql = string.Format("insert into op_ctn_outin(gid,[status],ctnType,CNTROWNER,CNSOURCE,BUYTIME,BSNO,REMARKS,INPUTBY,BSDATE,sellby) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')",
headData.GID, 1, status, headData.CNTROWNER, headData.CNSOURCE, Convert.ToDateTime(headData.BUYTIME).ToString("yyyy-MM-dd"), headData.BSNO, headData.Remarks, userid, DateTime.Now.ToString("yyyy-MM-dd"),youmaobing);
break;
case "2":
sql = string.Format("insert into op_ctn_outin(gid,[status],ctnType,CNTROWNER,CNSOURCE,SELLBY,RENT_BEGINTIME,RENT_ENDTIME,BSNO,RENTDAY,REMARKS,INPUTBY,BSDATE) values"
+ "('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','" + headData.Remarks + "','" + userid + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "')", headData.GID, 1, status,
headData.CNTROWNER,headData.CNSOURCE,headData.SELLBY,headData.RENT_BEGINTIME,headData.RENT_ENDTIME,headData.BSNO,headData.RENTDAY);
break;
case "3":
sql = string.Format("insert into op_ctn_outin(gid,[status],ctnType,CNTROWNER,CNSOURCE,SELLBY,RENT_BEGINTIME,RENT_ENDTIME,BSNO,RENTDAY,REMARKS,INPUTBY,BSDATE) values"
+ "('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','" + headData.Remarks + "','" + userid + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "')", headData.GID, 1, status,
headData.CNTROWNER, headData.CNSOURCE, headData.SELLBY, headData.RENT_BEGINTIME, headData.RENT_ENDTIME, headData.BSNO, headData.RENTDAY);
break;
case "4":
sql = string.Format("insert into op_ctn_outin(gid,[status],ctnType,CNTROWNER,CNSOURCE,SELLBY,SELLTIME,BSNO,REMARKS,INPUTBY,BSDATE) values"
+ "('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", headData.GID, 1, status, headData.CNTROWNER,
headData.CNSOURCE, headData.SELLBY, headData.SELLTIME, headData.BSNO, headData.Remarks, userid, DateTime.Now.ToString("yyyy-MM-dd"));
break;
default:
break;
}
var cmd = db.GetSqlStringCommand(sql);
db.ExecuteNonQuery(cmd, tran);
tran.Commit();
var t = conn.BeginTransaction();
var cmdDeletemx = db.GetSqlStringCommand("delete from op_ctn_outinmx where LINKGID='" + headData.GID + "'");
db.ExecuteNonQuery(cmdDeletemx, t);
t.Commit();
var tn = conn.BeginTransaction();
if (bodyList != null)
{
#region 处理数据
foreach (var enumValue in bodyList)
{
string GidMx = Guid.NewGuid().ToString();
switch (enumValue.STATUS)
{
case "可用":
enumValue.STATUS = "1";
break;
case "已用":
enumValue.STATUS = "2";
break;
case "维修":
enumValue.STATUS = "3";
break;
case "停用":
enumValue.STATUS = "4";
break;
case "退租":
enumValue.STATUS = "5";
break;
case "灭失":
enumValue.STATUS = "6";
break;
case "卖出":
enumValue.STATUS = "7";
break;
default:
break;
}
switch (enumValue.ONEWAY)
{
case "√":
enumValue.ONEWAY = "0";
break;
case "×":
enumValue.ONEWAY = "1";
break;
}
switch (enumValue.FREEUSE)
{
case "√":
enumValue.FREEUSE = "0";
break;
case "×":
enumValue.FREEUSE = "1";
break;
}
if (enumValue.UnitPrice == null || enumValue.UnitPrice == "")
{
enumValue.UnitPrice = "0";
}
if (enumValue.cntage == null || enumValue.cntage == "")
{
}
else
{
string[] a = Regex.Split(enumValue.cntage, "GMT", RegexOptions.IgnoreCase);
enumValue.cntage = DateTime.Parse(a[0]).ToString("yyyy-MM-dd HH:mm:ss");
}
#endregion
string sqlc = "delete from op_ctn_outinmx where cntrno='" + enumValue.CNTRNO + "'";
var cd = db.GetSqlStringCommand(sqlc);
db.ExecuteNonQuery(cd, tn);
if (isCntrNO(enumValue.CNTRNO)==false)
{
result.Message = "箱号不符合规范";
result.Success = false;
return result;
}
string sqlmxz = string.Format("insert into op_ctn_outinmx(gid,linkgid,cnttype,cntrno,unitprice,"
+"currency,[status],cnsource,sport,scustname,remarks,cntage,eport,ecustname,oneway,freeuse)"
+ "values('" + GidMx + "','" + headData.GID + "','" + enumValue.cntype + "','" + enumValue.CNTRNO + "','" +
enumValue.UnitPrice + "','{0}','{1}','{2}','{3}','{4}','{5}',{6},'{7}','{8}','{9}','{10}')",
enumValue.Currency, enumValue.STATUS, enumValue.cnsource, enumValue.SPORT, enumValue.sCustName, enumValue.REMARKS,
sqlnull(enumValue.cntage), enumValue.EPORT, enumValue.eCustName, enumValue.ONEWAY, enumValue.FREEUSE);
var cmdmx = db.GetSqlStringCommand(sqlmxz);
db.ExecuteNonQuery(cmdmx, tn);
}
}
tn.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "保存成功";
return result;
}
#region 查询明细表根据linkGID
static public List<op_ctn_outinmxModel> GetBodyList(string strCondition, string sort = null)
{
var strSql = new StringBuilder();
//2018年3月22日12:01:53 修改bug
//strSql.Append("select gid,linkgid,cnttype,cntrno,unitprice,currency,[status],cnsource,sport,scustname,remarks,");
//strSql.Append("cntage,eport,ecustname,oneway,freeuse,(select defaultrate from code_currency where codename=op_ctn_outinmx.currency) as code_currency from op_ctn_outinmx ");
strSql.Append(@"select ox.*,
cc.defaultrate as code_currency
from op_ctn_outinmx ox
left join code_currency cc on ox.currency = cc.CODENAME ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition + " order by id");
}
return SetBodyData(strSql);
}
private static List<op_ctn_outinmxModel> SetBodyData(StringBuilder strSql)
{
var bodyList = new List<op_ctn_outinmxModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
op_ctn_outinmxModel data = new op_ctn_outinmxModel();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.LINKGID = Convert.ToString(reader["LINKGID"]);
data.cntype = Convert.ToString(reader["cnttype"]);
data.CNTRNO = Convert.ToString(reader["cntrno"]);
data.UnitPrice = Convert.ToString(reader["unitprice"]);
data.Currency = Convert.ToString(reader["currency"]);
data.STATUS = Convert.ToString(reader["status"]);
data.code_currency = Convert.ToString(reader["code_currency"]);
switch (data.STATUS)
{
case "1":
data.STATUS = "可用";
break;
case "2":
data.STATUS = "已用";
break;
case "3":
data.STATUS = "维修";
break;
case "4":
data.STATUS = "停用";
break;
case "5":
data.STATUS = "退租";
break;
case "6":
data.STATUS = "灭失";
break;
case "7":
data.STATUS = "卖出";
break;
default:
break;
}
data.cnsource = Convert.ToString(reader["cnsource"]);
data.SPORT = Convert.ToString(reader["sport"]);
data.sCustName = Convert.ToString(reader["scustname"]);
data.REMARKS = Convert.ToString(reader["remarks"]);
data.EPORT = Convert.ToString(reader["eport"]);
data.eCustName = Convert.ToString(reader["ecustname"]);
data.ONEWAY = Convert.ToString(reader["oneway"]);
if (data.ONEWAY == "0")
{
data.ONEWAY = "√";
}
else if (data.ONEWAY == "1")
{
data.ONEWAY = "×";
}
data.FREEUSE = Convert.ToString(reader["freeuse"]);
if (data.FREEUSE=="0")
{
data.FREEUSE = "√";
}
else if (data.FREEUSE == "1")
{
data.FREEUSE = "×";
}
data.cntage = Convert.ToString(reader["cntage"]);
if (data.cntage == null || data.cntage == "")
{
}
else
{
data.cntage = Convert.ToDateTime(data.cntage).ToString("yyyy-MM-dd");
}
#endregion
bodyList.Add(data);
}
reader.Close();
}
return bodyList;
}
#endregion
#region 导入Excel
public static DBResult ImportTrainDetailData(string data, HttpRequestBase request, DataTable table, out string msg, out List<op_ctn_outinmxModel> headList)
{
var result = new DBResult();
msg = "";
headList = new List<op_ctn_outinmxModel>();
if (table == null) throw new ArgumentNullException("table");
var billNoList = new List<string>();
Database db = DatabaseFactory.CreateDatabase();
StringBuilder sb = new StringBuilder("");
using (DbConnection connection = db.CreateConnection())
{
connection.Open();
try
{
DbTransaction T = connection.BeginTransaction();
foreach (DataRow row in table.Rows)
{
string GidMx = Guid.NewGuid().ToString();
if (Convert.ToString(row["箱龄"]).Trim() == null || Convert.ToString(row["箱龄"]).Trim() == "")
{
}
else
{
row["箱龄"] = Convert.ToDateTime(row["箱龄"]).ToString("yyyy-MM-dd");
}
if (isCntrNO(row["箱号"].ToString().Trim())==false)
{
sb.Append(row["箱号"].ToString()+",");
}
else
{
if (Convert.ToString(row["单价(金额)"]).Trim() == "")
{
}
string sql = "delete from op_ctn_outinmx where cntrno='" + Convert.ToString(row["箱号"]).Trim() + "'";
var cd = db.GetSqlStringCommand(sql);
db.ExecuteNonQuery(cd, T);
string sqlmx = string.Format("insert into op_ctn_outinmx(gid,linkgid,cnttype,cntrno,unitprice,"
+ "currency,[status],cnsource,sport,scustname,remarks,cntage,eport,ecustname,oneway,freeuse)"
+ "values('" + GidMx + "','" + data + "','" + Convert.ToString(row["箱型"]).Trim() + "','" + Convert.ToString(row["箱号"]).Trim() + "','" + DTS(Convert.ToString(row["单价(金额)"]).Trim()) + "','{0}','{1}','{2}','{3}','{4}','{5}',{6},'{7}','{8}','{9}','{10}')",
Convert.ToString(row["币别"]).Trim(), business.getStatus(Convert.ToString(row["状态"]).Trim()), Convert.ToString(row["箱源"]).Trim(),
Convert.ToString(row["启用港口"]).Trim(), Convert.ToString(row["启用场站"]).Trim(), Convert.ToString(row["备注"]).Trim(),
sqlnull(Convert.ToString(row["箱龄"]).Trim()), Convert.ToString(row["结束位置港口"]).Trim(), Convert.ToString(row["结束位置场站"]).Trim(),
Convert.ToString(row["oneway"]).Trim(), Convert.ToString(row["freeuse"]).Trim());
var cmdmx = db.GetSqlStringCommand(sqlmx);
db.ExecuteNonQuery(cmdmx, T);
}
}
T.Commit();
string ss = "";
ss = sb.ToString();
if (ss!="")
{
result.Message = "导入成功,以下箱号不符合规范,未能导入:</br>"+ss;
}
else
{
result.Message = "导入成功";
}
result.Success = true;
}
catch (Exception exception)
{
//Tran.Rollback();
result.Success = false;
result.Message = exception.Message;
}
}
return result;
}
public static string DTS(string s) {
if (s == ""||s==null)
{
s = "0";
}
return s;
}
#endregion
#region 查询需要插入集装箱表(container_info)中的数据
static public void InsertCon(string st,op_ctn_outinModel headData)
{
var strSql = new StringBuilder();
//2018年3月21日11:33:27 中司 租箱提交报错 SQL逻辑有BUG
//strSql.Append("select o.gid,m.cntrno,o.cntrowner,m.CNTTYPE,m.cnsource,o.BUYTIME,o.rent_begintime,o.rent_endtime,o.selltime,");
//strSql.Append("m.status,m.REMARKS,m.sport,(select portid from code_disport where port=m.sport) as s,m.sCustName,m.eport,(select portid from code_disport where port=m.eport) as e,m.eCustName from op_ctn_outin as o left join ");
//strSql.Append("op_ctn_outinmx as m on(o.gid=m.linkgid) where o.gid='" + headData.GID + "'");
strSql.Append(@"select o.gid,m.cntrno,o.cntrowner,m.CNTTYPE,m.cnsource,o.BUYTIME,o.rent_begintime,o.rent_endtime,
o.selltime,m.status,m.REMARKS,m.sport,
scd.PORTID s,
m.sCustName,m.eport,
ecd.PORTID e,m.eCustName
from op_ctn_outin as o
left join op_ctn_outinmx as m on(o.gid=m.linkgid)
left join code_disport scd on scd.PORT = m.SPORT
left join code_disport ecd on ecd.PORT = m.EPORT
where o.gid='"+headData.GID+"'");
GetInsertData(st,strSql);
}
private static List<MsCtn> GetInsertData(string st,StringBuilder strSql)
{
var bodyList = new List<MsCtn>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
while (reader.Read())
{
MsCtn data = new MsCtn();
#region Set DB data to Object
data.gid = Convert.ToString(reader["gid"]);
data.cntrno = Convert.ToString(reader["cntrno"]);
data.cntrowner = Convert.ToString(reader["cntrowner"]);
data.cntype = Convert.ToString(reader["CNTTYPE"]);
data.cnsource = Convert.ToString(reader["cnsource"]);
data.buytime = Convert.ToString(reader["BUYTIME"]);
if (data.buytime == null || data.buytime == "")
{
}
else
{
data.buytime = Convert.ToDateTime(data.buytime).ToString("yyyy-MM-dd");
}
data.rent_begintime = Convert.ToString(reader["rent_begintime"]);
if (data.rent_begintime == null || data.rent_begintime == "")
{
}
else
{
data.rent_begintime = Convert.ToDateTime(data.rent_begintime).ToString("yyyy-MM-dd");
}
data.rent_endtime = Convert.ToString(reader["rent_endtime"]);
if (data.rent_endtime == null || data.rent_endtime == "")
{
}
else
{
data.rent_endtime = Convert.ToDateTime(data.rent_endtime).ToString("yyyy-MM-dd");
}
data.selltime = Convert.ToString(reader["selltime"]);
if (data.selltime == null || data.selltime == "")
{
}
else
{
data.selltime = Convert.ToDateTime(data.selltime).ToString("yyyy-MM-dd");
}
int status = -1;
if (reader["status"].ToString().Trim()!=null&&reader["status"].ToString().Trim()!="")
{
status = Convert.ToInt32(st);
}
data.REMARK = Convert.ToString(reader["REMARKS"]);
data.beginpostion = reader["s"].ToString();//启用位置
data.position = reader["e"].ToString();
#endregion
#region 添加数据库
bodyList.Add(data);
if (data!=null)
{
string sql = string.Format("insert into container_info (gid,cntrno,cntrowner,cntype,cnsource,buytime,rent_begintime"
+ ",rent_endtime,[status],position,REMARK,beginpostion,selltime) values('" + data.gid + "','{0}','{1}','{2}','{3}',{4},{5},{6},'{7}','{8}','{9}','{10}'," + sqlnull(data.selltime) + ")", data.cntrno,
data.cntrowner, data.cntype, data.cnsource, sqlnull(data.buytime), sqlnull(data.rent_begintime), sqlnull(data.rent_endtime), status, data.position,
data.REMARK, data.beginpostion);
var cmdmx = db.GetSqlStringCommand(sql);
db.ExecuteNonQuery(cmdmx, tran);
}
#endregion
}
tran.Commit();
reader.Close();
}
}
return bodyList;
}
#endregion
#region 插入费用明细
public static DBResult SaveFee(List<op_ctn_outinmxModel> bodyList,op_ctn_outinModel headData,string userid, int ctnnum,string fy)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"INSERT INTO ch_fee(GID, BSNO, FEETYPE, FEENAME, FEEDESCRIPTION, CUSTOMERTYPE, CUSTOMERNAME, UNIT, UNITPRICE, QUANTITY, AMOUNT, CURRENCY,
EXCHANGERATE, REASON, REMARK, COMMISSIONRATE,ENTEROPERATOR, ENTERDATE,ISOPEN, ISADVANCEDPAY, SORT, FEESTATUS, FEEFRT,
TAXRATE,NOTAXAMOUNT,ACCTAXRATE,LINENUM,TAXUNITPRICE,MODIFIEDUSER,MODIFIEDTIME,WMSOUTBSNO,PREAMOUNT,INPUTMODE,IsCrmOrderFee)
VALUES
(@gid,@bsno,@fee_type,@fee_name,@fee_description,@customer_type,@customer_name,@unit,@unit_price,@quantity,@amount,@currency,
@exchange_rate,@reason,@remark,@comm_rate,@enter_operator,@enter_date,@is_open,@is_advance_pay,@sort,@fee_status,@fee_frt,
@taxrate,@notaxamount,@acctaxrate,@LINENUM,@taxunit_price,@MODIFIEDUSER,@MODIFIEDTIME,@WMSOUTBSNO,@PREAMOUNT,@INPUTMODE,@IsCrmOrderFee) ");
if (bodyList != null)
{
foreach (var enumValue in bodyList)
{
if (fy=="买箱费"||fy=="卖箱费")
{
headData.RENTDAY = "1";
}
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@gid", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@bsno", DbType.String, headData.GID);
db.AddInParameter(cmdInsert, "@fee_type", DbType.Int16, ctnnum);
db.AddInParameter(cmdInsert, "@fee_name", DbType.String, fy);
db.AddInParameter(cmdInsert, "@customer_type", DbType.String, "");
db.AddInParameter(cmdInsert, "@customer_name", DbType.String, headData.SELLBY);
db.AddInParameter(cmdInsert, "@unit", DbType.String, enumValue.cntype);
if (ctnnum != 0)
db.AddInParameter(cmdInsert, "@unit_price", DbType.Decimal, enumValue.UnitPrice);
else db.AddInParameter(cmdInsert, "@unit_price", DbType.Decimal,enumValue.UnitPrice);
// db.AddInParameter(cmdInsert, "@unit_price", DbType.Decimal, enumValue.UNITPRICE);
db.AddInParameter(cmdInsert, "@fee_description", DbType.String, "");
db.AddInParameter(cmdInsert, "@quantity", DbType.Decimal, Convert.ToDouble(headData.RENTDAY));
if (ctnnum != 0)
db.AddInParameter(cmdInsert, "@amount", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
else db.AddInParameter(cmdInsert, "@amount", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
db.AddInParameter(cmdInsert, "@currency", DbType.String, enumValue.Currency);
if (enumValue.code_currency=="")
{
enumValue.code_currency = "0";
}
db.AddInParameter(cmdInsert, "@exchange_rate", DbType.Decimal, Convert.ToDouble(enumValue.code_currency));
db.AddInParameter(cmdInsert, "@reason", DbType.String, "");
db.AddInParameter(cmdInsert, "@remark", DbType.String, "");
// db.AddInParameter(cmdInsert, "@CARGO_GID", DbType.String, enumValue.PRICETYPE);
db.AddInParameter(cmdInsert, "@comm_rate", DbType.Decimal, 0);
db.AddInParameter(cmdInsert, "@enter_operator", DbType.String, userid);
db.AddInParameter(cmdInsert, "@enter_date", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdInsert, "@is_open", DbType.String, "0");
db.AddInParameter(cmdInsert, "@is_advance_pay", DbType.String, "0");
db.AddInParameter(cmdInsert, "@sort", DbType.Int16,0);
db.AddInParameter(cmdInsert, "@fee_status", DbType.Int16, 0);
db.AddInParameter(cmdInsert, "@fee_frt", DbType.String, "");
db.AddInParameter(cmdInsert, "@taxrate", DbType.Decimal, 0);
if (ctnnum != 0)
db.AddInParameter(cmdInsert, "@notaxamount", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
else db.AddInParameter(cmdInsert, "@notaxamount", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
db.AddInParameter(cmdInsert, "@acctaxrate", DbType.Decimal, 0);
db.AddInParameter(cmdInsert, "@LINENUM", DbType.Int16, 0);
if (ctnnum != 0)
db.AddInParameter(cmdInsert, "@taxunit_price", DbType.Decimal,enumValue.UnitPrice);
else db.AddInParameter(cmdInsert, "@taxunit_price", DbType.Decimal, enumValue.UnitPrice);
// db.AddInParameter(cmdInsert, "@taxunit_price", DbType.Decimal, enumValue.UNITPRICE);
db.AddInParameter(cmdInsert, "@MODIFIEDUSER", DbType.String, userid);
db.AddInParameter(cmdInsert, "@MODIFIEDTIME", DbType.String, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
db.AddInParameter(cmdInsert, "@WMSOUTBSNO", DbType.String, "");
if (ctnnum != 0)
db.AddInParameter(cmdInsert, "@PREAMOUNT", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
else db.AddInParameter(cmdInsert, "@PREAMOUNT", DbType.Decimal, Convert.ToDouble(enumValue.UnitPrice) * Convert.ToDouble(headData.RENTDAY));
if (headData.CTNTYPEREF == "买箱" || headData.CTNTYPEREF == "租入")
db.AddInParameter(cmdInsert, "@INPUTMODE", DbType.String, "应付费用");
else if (headData.CTNTYPEREF == "卖出" || headData.CTNTYPEREF == "租出")
db.AddInParameter(cmdInsert, "@INPUTMODE", DbType.String, "应收费用");
else db.AddInParameter(cmdInsert, "@INPUTMODE", DbType.String, "");
db.AddInParameter(cmdInsert, "@IsCrmOrderFee", DbType.String, "1");
db.ExecuteNonQuery(cmdInsert, tran);
}
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = "保存成功" + result.Message;
return result;
}
#endregion
#region 箱号是否规范
public static bool isCntrNO(string no)
{
if (no==null||no=="")
{
return false;
}
String regex = @"^[a-zA-Z]{4}\d{7}$";
if (Regex.IsMatch(no, regex))
{
return true;
}
else
{
return false;
}
}
#endregion
static public object sqlnull(string s) {
if (s==""||s==null)
{
return "null";
}
else
{
return "\'"+s+"\'";
}
}
}
}