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.

235 lines
9.6 KiB
C#

using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.Areas.CommMng.Models;
using HcUtility.Comm;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.MvcShipping.Helper;
using DSWeb.MvcShipping.Models.MsStevedores;
using System.Transactions;
using System.Data.SqlClient;
using DSWeb.DataAccess;
using DSWeb.Areas.MvcShipping.Models.MsOpCtnFeeModelModel;
namespace DSWeb.Areas.MvcShipping.DAL.MsOpCtnFeeModelDAL
{
public class MsOpCtnFeeModelDAL
{
public static List<MsOpCtnFeeModel> GetDataList (string condition )
{
string sql = "select *,(select top 1 (PORT+'-'+EDICODE) as CodeAndName from Code_Disport where EDICODE = PortAndYardCode) PortAndYardName from Op_Ctn_FEEMODEL where 1=1 and ModelType=1 ";
if (condition!="")
{
sql += " and "+ condition;
}
var list = new List<MsOpCtnFeeModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
{
while (reader.Read()) {
MsOpCtnFeeModel fm = new MsOpCtnFeeModel();
fm.GID = reader["GID"].ToString();
fm.ModelName = reader["ModelName"].ToString();
fm.PortAndYardCode = reader["PortAndYardCode"].ToString();
fm.PortAndYardName = reader["PortAndYardName"].ToString();
fm.Oper = reader["Oper"].ToString();
fm.Optime = reader["Optime"].ToString();
fm.GangNeiGangWai = reader["GangNeiGangWai"].ToString();
list.Add(fm);
}
}
return list;
}
public static List<MsOpCtnFeeDetailsModel> GetDataDetailsList ( string condition )
{
string sql = "select * from Op_Ctn_FEEMODEL_DETAILS ";
if (condition!=""&&condition!=null)
{
sql += " where " + condition;
}
sql += " order by jifeidengji ";
var list = new List<MsOpCtnFeeDetailsModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
{
while (reader.Read())
{
MsOpCtnFeeDetailsModel fmd = new MsOpCtnFeeDetailsModel();
fmd.GID = reader["GID"].ToString();
fmd.MainGID = reader["MainGID"].ToString();
fmd.XiangXing = reader["XiangXing"].ToString();
fmd.JiFeiDengJi = reader["JiFeiDengJi"].ToString();
fmd.ShouFuFangXiang = reader["ShouFuFangXiang"].ToString();
fmd.Optime = reader["Optime"].ToString();
fmd.JiFeiQuJian = reader["JiFeiQuJian"].ToString();
fmd.JiFeiDanJia = reader["JiFeiDanJia"].ToString();
fmd.Optime = reader["Optime"].ToString();
list.Add(fmd);
}
}
return list;
}
public static List<Ctn> GetCtn ( string condition = "" )
{
string sql = "select CTN from code_ctn";
if (condition!=""&&condition!=null)
{
sql += " where " + condition;
}
var list = new List<Ctn>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, sql))
{
while (reader.Read())
{
Ctn c = new Ctn();
c.CtnType = reader["CTN"].ToString();
list.Add(c);
}
}
return list;
}
public static bool Save ( MsOpCtnFeeModel fm, List<MsOpCtnFeeDetailsModel> fmdList, out string msg, out string MGID )
{
//保存主表
int Exmnum = 0;
int Exdnum = 0;
string GID = fm.GID;
string PGID = fm.GID;
bool mainRst = false;
string[] portstr = fm.PortAndYardName.Split('-');
if (portstr.Length > 1)
{
fm.PortAndYardCode = portstr[1];
}
Database db = DatabaseFactory.CreateDatabase();
if (GID==""||GID=="*")
{
//新增
GID = Guid.NewGuid().ToString();
PGID = GID;
StringBuilder sb = new StringBuilder();
sb.Append("insert into Op_Ctn_FEEMODEL (GID,ModelName,PortAndYardCode,Oper,ModelType,GangNeiGangWai) ");
sb.Append("values('" + GID + "','" + fm.ModelName + "','" + fm.PortAndYardCode + "','" + fm.Oper + "',1,'"+fm.GangNeiGangWai+"')");
Exmnum = db.ExecuteNonQuery(CommandType.Text, sb.ToString());
mainRst = Exmnum >0;
}
else
{
//修改
StringBuilder sb = new StringBuilder();
sb.Append("update Op_Ctn_FEEMODEL set ");
sb.Append("ModelName = '"+fm.ModelName+"',");
sb.Append("PortAndYardCode = '" + fm.PortAndYardCode + "',");
sb.Append("Oper = '" + fm.Oper + "',");
sb.Append("GangNeiGangWai = '" + fm.GangNeiGangWai + "'");
sb.Append(" where GID = '"+fm.GID+"'");
mainRst = db.ExecuteNonQuery(CommandType.Text,sb.ToString()) > 0;
}
if (mainRst)
{
try
{
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
//保存明细表
if (fmdList==null)
{
fmdList = new List<MsOpCtnFeeDetailsModel>();
}
foreach (var item in fmdList)
{
item.MainGID = PGID;
if (item.GID == "" || item.GID == "*")
{
//新增
string newGID = Guid.NewGuid().ToString();
item.GID = newGID;
StringBuilder sbd = new StringBuilder();
sbd.Append("insert into Op_Ctn_FEEMODEL_DETAILS (GID,MainGID,XiangXing,JiFeiDengJi,ShouFuFangXiang,JiFeiQuJian,JiFeiDanJia) ");
sbd.Append(" values (");
sbd.Append("'" + item.GID + "',");
sbd.Append("'" + item.MainGID + "',");
sbd.Append("'" + item.XiangXing + "',");
sbd.Append("'" + item.JiFeiDengJi + "',");
sbd.Append("'" + item.ShouFuFangXiang + "',");
sbd.Append("'" + item.JiFeiQuJian + "',");
sbd.Append("'" + item.JiFeiDanJia + "')");
var cmdInsertwork = db.GetSqlStringCommand(sbd.ToString());
Exdnum += db.ExecuteNonQuery(cmdInsertwork, tran);
}
else
{
//修改
StringBuilder sbd = new StringBuilder();
sbd.Append("update Op_Ctn_FEEMODEL_DETAILS set ");
sbd.Append("JiFeiDengJi='" + item.JiFeiDengJi + "',");
sbd.Append("ShouFuFangXiang='" + item.ShouFuFangXiang + "',");
sbd.Append("JiFeiQuJian='" + item.JiFeiQuJian + "',");
sbd.Append("JiFeiDanJia='" + item.JiFeiDanJia + "' ");
sbd.Append("where GID = '" + item.GID + "'");
var cmdUpdatework = db.GetSqlStringCommand(sbd.ToString());
Exdnum+= db.ExecuteNonQuery(cmdUpdatework, tran);
}
}
tran.Commit();
}
}
catch (Exception ex)
{
msg = "操作异常!"+ex.Message;
mainRst = false;
MGID = GID;
return mainRst;
}
MGID = GID;
msg ="操作完成!";
return mainRst;
}
else
{
MGID = GID;
msg ="主表数据保存失败!";
return false;
}
}
public static bool Delete(List<MsOpCtnFeeModel> list)
{
string ids = "";
try
{
foreach (var item in list)
{
ids += "'" + item.GID + "',";
}
ids = ids.Substring(0, ids.Length - 1);
string sql = "delete from Op_Ctn_FEEMODEL where gid in (" + ids + ")";
Database db = DatabaseFactory.CreateDatabase();
int rst = db.ExecuteNonQuery(CommandType.Text, sql);
return rst > 0;
}
catch (Exception ex)
{
return false;
throw;
}
}
}
}