using System; using System.Data; using System.Collections.Generic; using System.Collections; using System.Text; using DSWeb.MvcShipping.Models.MsOpSubSeaOrder; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.EntityDA; using DSWeb.Areas.CommMng.Models; using HcUtility.Comm; using System.Data.SqlClient; using DSWeb.DataAccess; using WebSqlHelper; using DSWeb.MvcShipping.Models.MsOpSeae; using System.IO; using DSWeb.MvcShipping.Models.FtpSet; using System.Text.RegularExpressions; using DSWeb.MvcShipping.Models.MsFeeTemplate; using DSWeb.MvcShipping.DAL.MsFeeTemplate; namespace DSWeb.MvcShipping.DAL.MsOpSubSeaOrderDAL { public class MsOpSubSeaOrderDAL { #region 查询 static public List GetDataList(string strCondition, string billtype,int ortype, string userid, string usercode, string companyid, string sort = null) { //if (!string.IsNullOrEmpty(strCondition)) //{ // strCondition = strCondition + " and (Companyid='" + companyid + "' or Agentid='"+companyid+"') and BILLTYPE="+billtype; //} //else //{ // strCondition = " (Companyid='" + companyid + "' or Agentid='"+companyid+"') and BILLTYPE=" + billtype; //} if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and BILLTYPE=" + billtype; } else { strCondition = " BILLTYPE=" + billtype; } var rangstr = GetRangDAStr("index", userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } // var strSql = new StringBuilder(); strSql.Append("SELECT ORDNO,BSNO,ORSTATUS,ORTYPE,ORREASON,BSDATE,MBLNO,HBLNO,CUSTOMERNAME"); strSql.Append(",SHIPPER,CONSIGNEE,NOTIFYPARTY,VESSEL,VOYNO,ETD,ETA,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE"); strSql.Append(",PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT"); strSql.Append(",PREPARDAT,PAYABLEAT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS"); strSql.Append(",KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN"); strSql.Append(",REMARK,AUDITOPERATOR,AUDITDATE,DPAGE,DLABEL,LINKMAN,BILLTYPE,COMPANYID,AGENTID,SPCHARGE"); strSql.Append(",SHIPPERCODE,SHIPPERCOUNTRY,SHIPPERTEL,CONSIGNEECODE,CONSIGNEECOUNTRY,CONSIGNEETEL,NOTIFYPARTYCODE,NOTIFYPARTYCOUNTRY,NOTIFYPARTYTEL"); if (ortype == 1) { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN 'RECEIVE' WHEN '1' THEN 'POSTED' WHEN '2' THEN 'REJECTED' else 'ENTRY' end) as ORSTATUSREF "); } else { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN '确认' WHEN '1' THEN '提交' WHEN '2' THEN '驳回' else '录入' end) as ORSTATUSREF "); } strSql.Append(",(SELECT [NAME] from company where GID=B.COMPANYID) as COMPANY "); strSql.Append(",(SELECT [NAME] from company where GID=B.AGENTID) as AGENT "); strSql.Append(",dbo.F_GetBillDrFeeStatus(B.ORDNO) DRFEESTATUS"); strSql.Append(",dbo.F_GetBillCrFeeStatus(B.ORDNO) CRFEESTATUS"); strSql.Append(" from op_sub_seaorder B"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } // var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by BSDATE desc"); } return SetData(strSql); } static public string GetDataListStr(string strCondition, string billtype, int ortype, string userid, string usercode, string companyid, string sort = null) { //if (!string.IsNullOrEmpty(strCondition)) //{ // strCondition = strCondition + " and (Companyid='" + companyid + "' or Agentid='" + companyid + "') and BILLTYPE=" + billtype; //} //else //{ // strCondition = " (Companyid='" + companyid + "' or Agentid='" + companyid + "') and BILLTYPE=" + billtype; //} if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and BILLTYPE=" + billtype; } else { strCondition = " BILLTYPE=" + billtype; } var rangstr = GetRangDAStr("index", userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } // var strSql = new StringBuilder(); strSql.Append("SELECT ORDNO,B.BSNO,ORSTATUS,ORTYPE,ORREASON,BSDATE,MBLNO,HBLNO,CUSTOMERNAME"); strSql.Append(",SHIPPER,CONSIGNEE,NOTIFYPARTY,VESSEL,VOYNO,ETD,ETA,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE"); strSql.Append(",PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT"); strSql.Append(",PREPARDAT,PAYABLEAT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS"); strSql.Append(",KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN"); strSql.Append(",REMARK,AUDITOPERATOR,AUDITDATE,DPAGE,DLABEL,LINKMAN,BILLTYPE,COMPANYID,AGENTID,SPCHARGE"); strSql.Append(",SHIPPERCODE,SHIPPERCOUNTRY,SHIPPERTEL,CONSIGNEECODE,CONSIGNEECOUNTRY,CONSIGNEETEL,NOTIFYPARTYCODE,NOTIFYPARTYCOUNTRY,NOTIFYPARTYTEL"); if (ortype == 1) { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN 'RECEIVE' WHEN '1' THEN 'POSTED' WHEN '2' THEN 'REJECTED' else 'ENTRY' end) as ORSTATUSREF "); } else { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN '确认' WHEN '1' THEN '提交' WHEN '2' THEN '驳回' else '录入' end) as ORSTATUSREF "); } strSql.Append(",(SELECT [NAME] from company where GID=B.COMPANYID) as COMPANY "); strSql.Append(",(SELECT [NAME] from company where GID=B.AGENTID) as AGENT "); strSql.Append(",dbo.F_GetBillDrFeeStatus(B.ORDNO) DRFEESTATUS"); strSql.Append(",dbo.F_GetBillCrFeeStatus(B.ORDNO) CRFEESTATUS"); strSql.Append(" from op_sub_seaorder B"); strSql.Append(" LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=B.ORDNO) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } // var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by BSDATE desc"); } return strSql.ToString(); } static public MsOpSubSeaOrder GetData(string condition,int ortype) { var strSql = new StringBuilder(); strSql.Append("SELECT ORDNO,BSNO,ORSTATUS,ORTYPE,ORREASON,BSDATE,MBLNO,HBLNO,CUSTOMERNAME"); strSql.Append(",SHIPPER,CONSIGNEE,NOTIFYPARTY,VESSEL,VOYNO,ETD,ETA,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE"); strSql.Append(",PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT"); strSql.Append(",PREPARDAT,PAYABLEAT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS"); strSql.Append(",KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN"); strSql.Append(",REMARK,AUDITOPERATOR,AUDITDATE,DPAGE,DLABEL,LINKMAN,BILLTYPE,COMPANYID,AGENTID,SPCHARGE"); strSql.Append(",SHIPPERCODE,SHIPPERCOUNTRY,SHIPPERTEL,CONSIGNEECODE,CONSIGNEECOUNTRY,CONSIGNEETEL,NOTIFYPARTYCODE,NOTIFYPARTYCOUNTRY,NOTIFYPARTYTEL"); if (ortype == 1) { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN 'RECEIVE' WHEN '1' THEN 'POSTED' WHEN '2' THEN 'REJECTED' else 'ENTRY' end) as ORSTATUSREF "); } else { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN '确认' WHEN '1' THEN '提交' WHEN '2' THEN '驳回' else '录入' end) as ORSTATUSREF "); } strSql.Append(",(SELECT [NAME] from company where GID=B.COMPANYID ) as COMPANY "); strSql.Append(",(SELECT [NAME] from company where GID=B.AGENTID ) as AGENT "); strSql.Append(",dbo.F_GetBillDrFeeStatus(B.ORDNO) DRFEESTATUS"); strSql.Append(",dbo.F_GetBillCrFeeStatus(B.ORDNO) CRFEESTATUS"); strSql.Append(" from op_sub_seaorder B"); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" where " + condition); } var list=SetData(strSql); if (list.Count > 0) return list[0]; return new MsOpSubSeaOrder(); } private static List SetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaOrder data = new MsOpSubSeaOrder(); #region Set DB data to Object data.ORDNO = Convert.ToString(reader["ORDNO"]);//委托 data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号 data.ORSTATUS = Convert.ToString(reader["ORSTATUS"]);//主编号 data.ORSTATUSREF = Convert.ToString(reader["ORSTATUSREF"]);//委托编号 data.ORREASON = Convert.ToString(reader["ORREASON"]);//分提单号 data.BSDATE = Convert.ToDateTime(reader["BSDATE"]);//接单日期 data.MBLNO = Convert.ToString(reader["MBLNO"]);//主提单号 data.HBLNO = Convert.ToString(reader["HBLNO"]);//分提单号 data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);//委托单位 data.SHIPPER = Convert.ToString(reader["SHIPPER"]);//收货人内容 data.CONSIGNEE = Convert.ToString(reader["CONSIGNEE"]);//收货人内容 data.NOTIFYPARTY = Convert.ToString(reader["NOTIFYPARTY"]);//通知人内容 data.VESSEL = Convert.ToString(reader["VESSEL"]);//船名 data.VOYNO = Convert.ToString(reader["VOYNO"]);//航次 if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToDateTime(reader["ETD"]).ToString("yyyy-MM-dd");//到港日期 if (reader["ETA"] != DBNull.Value) data.ETA = Convert.ToDateTime(reader["ETA"]).ToString("yyyy-MM-dd");//预抵日期 data.PORTLOADID = Convert.ToString(reader["PORTLOADID"]);//装货港代码 data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]);//装货港 data.PORTDISCHARGEID = Convert.ToString(reader["PORTDISCHARGEID"]);//卸货港代码 data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]);//卸货港 data.PlACERECEIPT = Convert.ToString(reader["PlACERECEIPT"]);//收货地 data.PLACEDELIVERYID = Convert.ToString(reader["PLACEDELIVERYID"]);//交货地代码 data.PLACEDELIVERY = Convert.ToString(reader["PLACEDELIVERY"]);//交货地 data.DESTINATIONID = Convert.ToString(reader["DESTINATIONID"]);//目的地代码 data.DESTINATION = Convert.ToString(reader["DESTINATION"]);//目的地 data.NOBILL = Convert.ToString(reader["NOBILL"]);//提单份数 data.ISSUETYPE = Convert.ToString(reader["ISSUETYPE"]);//签单方式 if (reader["ISSUEDATE"] != DBNull.Value) data.ISSUEDATE = Convert.ToDateTime(reader["ISSUEDATE"]).ToString("yyyy-MM-dd");//到港日期 data.ISSUEPLACE = Convert.ToString(reader["ISSUEPLACE"]);//签单地点 data.BLFRT = Convert.ToString(reader["BLFRT"]);//付费方式 data.PREPARDAT = Convert.ToString(reader["PREPARDAT"]);//预付地点 data.PAYABLEAT = Convert.ToString(reader["PAYABLEAT"]);//到付地点 data.SERVICE = Convert.ToString(reader["SERVICE"]);//运输条款 data.MARKS = Convert.ToString(reader["MARKS"]);//唛头 data.NOPKGS = Convert.ToString(reader["NOPKGS"]);//件数包装 data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);//货物描述 data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);//品名 data.GROSSWEIGHT = Convert.ToString(reader["GROSSWEIGHT"]);//货物毛重 data.MEASUREMENT = Convert.ToString(reader["MEASUREMENT"]);//货物尺码 data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数 data.KINDPKGS = Convert.ToString(reader["KINDPKGS"]);//件数包装 data.KGS = Convert.ToDecimal(reader["KGS"]);//毛重 data.CBM = Convert.ToDecimal(reader["CBM"]);//立方数/尺码 data.TOTALNO = Convert.ToString(reader["TOTALNO"]);//件数大写 data.CNTRTOTAL = Convert.ToString(reader["CNTRTOTAL"]);//集装箱全部内容 data.INPUTBY = Convert.ToString(reader["INPUTBY"]);//录入人 data.CARGOID = Convert.ToString(reader["CARGOID"]);//货物标识 data.DCLASS = Convert.ToString(reader["DCLASS"]);//危险品分类/等级 data.DUNNO = Convert.ToString(reader["DUNNO"]);//危险品编号 data.DPAGE = Convert.ToString(reader["DPAGE"]);//危险品页号 data.DLABEL = Convert.ToString(reader["DLABEL"]);//危险品标签 data.LINKMAN = Convert.ToString(reader["LINKMAN"]);//危险品联系人 data.REEFERF = Convert.ToString(reader["REEFERF"]);//冷藏通风量 data.TEMPID = Convert.ToString(reader["TEMPID"]);//温度单位 data.TEMPSET = Convert.ToString(reader["TEMPSET"]);//设置温度 data.TEMPMAX = Convert.ToString(reader["TEMPMAX"]);//最高温度 data.TEMPMIN = Convert.ToString(reader["TEMPMIN"]);//最低温度 data.REMARK = Convert.ToString(reader["REMARK"]);//备注 data.BILLTYPE = Convert.ToInt16(reader["BILLTYPE"]);//装运方式 data.COMPANYID = Convert.ToString(reader["COMPANYID"]);//装运方式 data.AGENTID = Convert.ToString(reader["AGENTID"]);//卸货代理 data.AGENT = Convert.ToString(reader["AGENT"]);//卸货代理 data.AUDITOPERATOR = Convert.ToString(reader["AUDITOPERATOR"]);//审核人 data.AUDITDATE = Convert.ToString(reader["AUDITDATE"]);//审核日期 data.COMPANY = Convert.ToString(reader["COMPANY"]);//卸货代理 data.SHIPPERCODE = Convert.ToString(reader["SHIPPERCODE"]);//卸货代理 data.SHIPPERCOUNTRY = Convert.ToString(reader["SHIPPERCOUNTRY"]);//卸货代理 data.SHIPPERTEL = Convert.ToString(reader["SHIPPERTEL"]);//卸货代理 data.CONSIGNEECODE = Convert.ToString(reader["CONSIGNEECODE"]);//卸货代理 data.CONSIGNEECOUNTRY = Convert.ToString(reader["CONSIGNEECOUNTRY"]);//卸货代理 data.CONSIGNEETEL = Convert.ToString(reader["CONSIGNEETEL"]);//卸货代理 data.NOTIFYPARTYCODE = Convert.ToString(reader["NOTIFYPARTYCODE"]);//卸货代理 data.NOTIFYPARTYCOUNTRY = Convert.ToString(reader["NOTIFYPARTYCOUNTRY"]);//卸货代理 data.NOTIFYPARTYTEL = Convert.ToString(reader["NOTIFYPARTYTEL"]);//卸货代理 data.DRFEESTATUS = getfeestatus(Convert.ToString(reader["DRFEESTATUS"])); data.CRFEESTATUS = getfeestatus(Convert.ToString(reader["CRFEESTATUS"])); if (reader["SPCHARGE"] != DBNull.Value) data.SPCHARGE = Convert.ToBoolean(reader["SPCHARGE"]); #endregion headList.Add(data); } reader.Close(); } return headList; } public static string getfeestatus(string feestatusint) { var result = ""; if (feestatusint == "0:") { return "审核通过"; } else if (feestatusint == "1:") { return "录入状态"; } else if (feestatusint == "2:") { return "提交审核"; } else if (feestatusint == "8:") { return "部分结算"; } else if (feestatusint == "9:") { return "结算完毕"; } else if (feestatusint == "") { return "未录入"; } else if (feestatusint == "3:") { return "申请修改"; } else if (feestatusint == "4:") { return "申请删除"; } else if (feestatusint.IndexOf("6:") > -1) { return "驳回提交"; } else if (feestatusint.IndexOf("7:") > -1) { return "驳回申请"; } else if (feestatusint.IndexOf("1:") > -1) { return "部分录入"; } else if (feestatusint.IndexOf("2:") > -1) { return "部分提交"; } else if (feestatusint.IndexOf("9:") > -1) { return "部分结算"; } else if (feestatusint.IndexOf("8:") > -1) { return "部分结算"; } else if (feestatusint.IndexOf("0:") > -1) { return "部分审核"; } else if (feestatusint.IndexOf("2:") > -1) { return "部分提交"; } return result; } #endregion #region 集装箱 static public List GetBodyList(string strCondition) { var strSql = new StringBuilder(); strSql.Append("SELECT [CTN_ID],[BSNO],[CTNCODE],[CTNALL],[CNTRNO],[SEALNO],[PKGS],[KGS],[CBM],[REMARK],[CTNSOURCE],[STATUS] from op_seaorder_ctn"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } strSql.Append(" order by BSNO,cast (ISNULL(CTNCODE,0) as int),CTNALL"); return SetBodyData(strSql); } private static List SetBodyData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaOrderCtn data = new MsOpSubSeaOrderCtn(); #region Set DB data to Object data.CTN_ID = Convert.ToString(reader["CTN_ID"]);//编号 data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号 data.CTNCODE = Convert.ToString(reader["CTNCODE"]);//表现形式 data.CTNALL = Convert.ToString(reader["CTNALL"]);//表现形式 data.CNTRNO = Convert.ToString(reader["CNTRNO"]);//箱号 data.SEALNO = Convert.ToString(reader["SEALNO"]);//封号 if (reader["PKGS"] != DBNull.Value) data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数 if (reader["KGS"] != DBNull.Value) data.KGS = Convert.ToDecimal(reader["KGS"]);//重量(货重) if (reader["CBM"] != DBNull.Value) data.CBM = Convert.ToDecimal(reader["CBM"]);//尺码 data.REMARK = Convert.ToString(reader["REMARK"]);//备注 data.CTNSOURCE = Convert.ToString(reader["CTNSOURCE"]);//备注 data.STATUS = Convert.ToString(reader["STATUS"]);//备注 #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } #endregion #region 保存集装箱 public static DBResult SaveDetail(MsOpSubSeaOrder headData, List bodyList, string userid) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (bodyList != null) { foreach (var enumValue in bodyList) { int SIZE = int.Parse(enumValue.CTNALL.ToString().Trim().Substring(0, 2)); string CTN = enumValue.CTNALL.ToString().Trim().Substring(2); int iTEU = int.Parse(enumValue.CTNALL.ToString().Trim().Substring(0, 1)); // if (enumValue.BSNO == "*") { var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + headData.BSNO + "','" + enumValue.CTNCODE + "','" + enumValue.CTNALL + "','" + enumValue.CNTRNO + "','" + enumValue.SEALNO + "','" + enumValue.PKGS + "'," + enumValue.KGS + "," + enumValue.CBM + ",'" + enumValue.REMARK + "','" + enumValue.CTNSOURCE + "','" + enumValue.STATUS + "')"); db.ExecuteNonQuery(cmdInsert, tran); } else { var cmdUpdate = db.GetSqlStringCommand(@"update op_seaorder_ctn set CTNCODE='" + enumValue.CTNCODE + "',CTNALL='" + enumValue.CTNALL + "',CNTRNO='" + enumValue.CNTRNO + "',SEALNO='" + enumValue.SEALNO + "',PKGS='" + enumValue.PKGS + "',KGS=" + enumValue.KGS + ",CBM=" + enumValue.CBM + ",REMARK='" + enumValue.REMARK + "',CTNSOURCE='" + enumValue.CTNSOURCE + "',STATUS='" + enumValue.STATUS + "' where BSNO='" + enumValue.BSNO + "' AND CTN_ID='" + enumValue.CTN_ID + "'"); db.ExecuteNonQuery(cmdUpdate, tran); } } } // tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } // getCNTRTOTAL(headData.BSNO, "op_sub_seaorder"); // result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static void getCNTRTOTAL(string strBSNO, string bstype) { string strCNTRTOTAL = ""; string str = ""; T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); DataSet dsDisp = T_ALL_DA.GetAllSQL("select * from code_ctn_disp");// where CORPID = '" + strCORPID + "'"; DataSet ds = T_ALL_DA.GetAllSQL("select * from op_seaorder_ctn where BSNO='" + strBSNO.Trim() + "'"); if (ds != null) { if (ds.Tables[0].Rows.Count > 0) { str = "select CTNALL,count(*) as hj from op_seaorder_ctn where BSNO='" + strBSNO.Trim() + "' group by CTNALL order by CTNALL"; ds = T_ALL_DA.GetAllSQL(str); foreach (DataTable myTable in ds.Tables) { foreach (DataRow myRow in myTable.Rows)//遍历表 { strCNTRTOTAL += myRow["CTNALL"].ToString().Trim() + "*" + myRow["hj"].ToString().Trim() + " / "; } } strCNTRTOTAL = strCNTRTOTAL.Trim().Substring(0, strCNTRTOTAL.Trim().Length - 1); } } str = "update op_sub_seaorder set CNTRTOTAL='" + strCNTRTOTAL + "' where BSNO='" + strBSNO.Trim() + "'"; bool bl = T_ALL_DA.GetExecuteSqlCommand(str); } #region 费用 static public List GetFeeList(string strCondition,int agentfee) { var strSql = new StringBuilder(); strSql.Append("SELECT [FEEID],[BSNO],[FEENAME],[UNITPRICE],[QUANTITY],[AMOUNT],[CURRENCY],[EXCHANGERATE],[REMARK],[FEEFRT] ,[SORT],UNIT,AGENTFEE from op_sub_seaorder_fee"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where AGENTFEE="+agentfee.ToString()+" AND " + strCondition); } else { strSql.Append(" where AGENTFEE=" + agentfee.ToString()); } strSql.Append(" order by BSNO,SORT"); return SetFeeData(strSql); } private static List SetFeeData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaOrderFee data = new MsOpSubSeaOrderFee(); #region Set DB data to Object data.FEEID = Convert.ToString(reader["FEEID"]);//编号 data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号 data.FeeName = Convert.ToString(reader["FEENAME"]);//费用名称 if (reader["UNITPRICE"] != DBNull.Value) data.UnitPrice = Convert.ToDecimal(reader["UNITPRICE"]);//单价 data.Unit = Convert.ToString(reader["UNIT"]);//单价 if (reader["QUANTITY"] != DBNull.Value) data.Quantity = Convert.ToDecimal(reader["QUANTITY"]);//数量 if (reader["AMOUNT"] != DBNull.Value) data.Amount = Convert.ToDecimal(reader["AMOUNT"]);//金额 data.Currency = Convert.ToString(reader["CURRENCY"]);//币别 data.FeeFrt = Convert.ToString(reader["FEEFRT"]);//FRT if (reader["EXCHANGERATE"] != DBNull.Value) data.ExChangerate = Convert.ToDecimal(reader["EXCHANGERATE"]);//汇率 data.REMARK = Convert.ToString(reader["REMARK"]);//备 if (reader["AGENTFEE"] != DBNull.Value) data.AGENTFEE = Convert.ToInt16(reader["AGENTFEE"]); if (reader["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(reader["SORT"]);//排序 #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } static public List GetDefFeeList(string Companyid, int agentfee) { var strSql = new StringBuilder(); strSql.Append("SELECT FEENAME,CURRENCY,EXCHANGERATE,[UNITPRICE],1 AS QUANTITY,SORT,AGENTFEE,UNIT"); strSql.Append(" FROM company_orderfee WHERE COMPANYID='" + Companyid + "' and AGENTFEE="+agentfee.ToString()); strSql.Append(" order by SORT"); return SetDefFeeData(strSql); } private static List SetDefFeeData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaOrderFee data = new MsOpSubSeaOrderFee(); #region Set DB data to Object data.FEEID = Guid.NewGuid().ToString();//编号 data.BSNO = "*";//业务编号 data.FeeName = Convert.ToString(reader["FEENAME"]);//费用名称 data.Unit = Convert.ToString(reader["UNIT"]);//费用名称 if (reader["UNITPRICE"] != DBNull.Value) data.UnitPrice = Convert.ToDecimal(reader["UNITPRICE"]);//单价 data.Quantity =1;//数量 if (reader["UNITPRICE"] != DBNull.Value) data.Amount = Convert.ToDecimal(reader["UNITPRICE"]); //金额 data.Currency = Convert.ToString(reader["CURRENCY"]);//币别 if (reader["EXCHANGERATE"] != DBNull.Value) data.ExChangerate = Convert.ToDecimal(reader["EXCHANGERATE"]);//汇率 if (reader["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(reader["SORT"]);//排序 if (reader["AGENTFEE"] != DBNull.Value) data.AGENTFEE = Convert.ToInt16(reader["AGENTFEE"]);// #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } static public List GetCompanyFeeList(string strCondition, string companyid) { var strSql = new StringBuilder(); strSql.Append("SELECT GID,COMPANYID,FEENAME,CURRENCY,EXCHANGERATE,SORT,AGENTFEE,UNIT,UNITPRICE from company_orderfee"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where COMPANYID='" + companyid + "' AND " + strCondition); } else { strSql.Append(" where COMPANYID='" + companyid + "'"); } strSql.Append(" order by SORT"); return SetCompanyFeeData(strSql); } private static List SetCompanyFeeData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsCompanyOrderFee data = new MsCompanyOrderFee(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]);//编号 data.COMPANYID = Convert.ToString(reader["COMPANYID"]);// data.FEENAME = Convert.ToString(reader["FEENAME"]);// data.UNIT = Convert.ToString(reader["UNIT"]);// data.CURRENCY = Convert.ToString(reader["CURRENCY"]);// if (reader["UNITPRICE"] != DBNull.Value) data.UNITPRICE = Convert.ToDecimal(reader["UNITPRICE"]);// if (reader["EXCHANGERATE"] != DBNull.Value) data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]);// if (reader["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(reader["SORT"]);// if (reader["AGENTFEE"] != DBNull.Value) data.AGENTFEE = Convert.ToInt16(reader["AGENTFEE"]);// if (reader["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(reader["SORT"]);//排序 #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } #endregion #region 保存费用 public static DBResult SaveFee(MsOpSubSeaOrder headData, List bodyList, string userid,string agentfee) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (bodyList != null) { foreach (var enumValue in bodyList) { if (enumValue.BSNO == "*") { var cmdInsert = db.GetSqlStringCommand(@"insert into op_sub_seaorder_fee (FEEID,BSNO,FEENAME,UNITPRICE,QUANTITY,AMOUNT,CURRENCY,EXCHANGERATE,FEEFRT,REMARK,SORT,Agentfee) values (newid(),'" + headData.BSNO + "','" + enumValue.FeeName + "'," + enumValue.UnitPrice + "," + enumValue.Quantity + "," + enumValue.Amount + ",'" + enumValue.Currency + "'," + enumValue.ExChangerate + ",'" + enumValue.FeeFrt + "','" + enumValue.REMARK + "'," + enumValue.SORT + "," +agentfee+ ")"); db.ExecuteNonQuery(cmdInsert, tran); } else { var cmdUpdate = db.GetSqlStringCommand(@"update op_sub_seaorder_fee set FEENAME='" + enumValue.FeeName + "',QUANTITY=" + enumValue.Quantity + ",UNITPRICE=" + enumValue.UnitPrice + ",AMOUNT=" + enumValue.Amount + ",CURRENCY='" + enumValue.Currency + "',EXCHANGERATE=" + enumValue.ExChangerate + ",SORT=" + enumValue.SORT + ",REMARK='" + enumValue.REMARK + "',FEEFRT='" + enumValue.FeeFrt + "',agentfee="+agentfee+" where BSNO='" + enumValue.BSNO + "' AND FEEID='" + enumValue.FEEID + "'"); db.ExecuteNonQuery(cmdUpdate, tran); } } } // tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static DBResult SaveCompanyOrderFee(List bodyList, string companyid) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand("delete from company_orderfee where COMPANYID='" + companyid + "'"); db.ExecuteNonQuery(cmdDelete, tran); var cmdInsert = db.GetSqlStringCommand( @"insert into company_orderfee (GID,COMPANYID,FEENAME,UNIT,CURRENCY,UNITPRICE,SORT,EXCHANGERATE,AGENTFEE) values (@GID,@COMPANYID,@FEENAME,@UNIT,@CURRENCY,@UNITPRICE,@SORT,@EXCHANGERATE,@AGENTFEE) "); if (bodyList != null) { foreach (var enumValue in bodyList) { cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String,companyid); db.AddInParameter(cmdInsert, "@FEENAME", DbType.String, enumValue.FEENAME); db.AddInParameter(cmdInsert, "@UNIT", DbType.String, enumValue.UNIT); db.AddInParameter(cmdInsert, "@CURRENCY", DbType.String, enumValue.CURRENCY); db.AddInParameter(cmdInsert, "@UNITPRICE", DbType.Decimal, enumValue.UNITPRICE); db.AddInParameter(cmdInsert, "@SORT", DbType.Int32, enumValue.SORT); db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, enumValue.EXCHANGERATE); db.AddInParameter(cmdInsert, "@AGENTFEE", DbType.Int32, enumValue.AGENTFEE); db.ExecuteNonQuery(cmdInsert, tran); } } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult SaveArrivalFee(MsOpSubSeaArrival headData, List bodyList, string userid) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (bodyList != null) { foreach (var enumValue in bodyList) { if (enumValue.ORDNO == "*") { var cmdInsert = db.GetSqlStringCommand(@"insert into op_sub_seaorder_arrivalfee (GID,ORDNO,FEENAME,UNITPRICE,QUANTITY,UNIT,AMOUNTJPY,AMOUNTUSD,CURRENCY,REMARK,SORT,EXCHANGERATE) values (newid(),'" + headData.ORDNO + "','" + enumValue.FeeName + "'," + enumValue.UnitPrice + "," + enumValue.Quantity + ",'" + enumValue.Unit + "'," + enumValue.AmountJpy + "," + enumValue.AmountUsd + ",'" + enumValue.Currency + "','" + enumValue.REMARK + "'," + enumValue.SORT + "," + enumValue.EXCHANGERATE + ")"); db.ExecuteNonQuery(cmdInsert, tran); } else { var cmdUpdate = db.GetSqlStringCommand(@"update op_sub_seaorder_arrivalfee set FEENAME='" + enumValue.FeeName + "',QUANTITY=" + enumValue.Quantity + ",UNITPRICE=" + enumValue.UnitPrice + ",UNIT='" + enumValue.Unit + "',AMOUNTJPY=" + enumValue.AmountJpy + ",AMOUNTUSD=" + enumValue.AmountUsd + ",CURRENCY='" + enumValue.Currency + "',SORT=" + enumValue.SORT + ",EXCHANGERATE="+enumValue.EXCHANGERATE+",REMARK='" + enumValue.REMARK + "' where ORDNO='" + enumValue.ORDNO + "' AND GID='" + enumValue.FEEID + "'"); db.ExecuteNonQuery(cmdUpdate, tran); } } } // tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } #endregion //判断单号是否重复 static public int GetRdCount(string strCondition) { var strSql = new StringBuilder(); strSql.Append("SELECT Count(BSNO) AS CT from op_sub_seaorder"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } var ct=0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ct = Convert.ToInt16(reader["CT"]); } reader.Close(); } return ct; } #endregion #region 删除 public static DBResult DeleteDetail(MsOpSubSeaOrder headData) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand("delete from op_seaorder_ctn where BSNO='" + headData.BSNO + "'"); db.ExecuteNonQuery(cmdDelete, tran); var cmdDeleteFee = db.GetSqlStringCommand("delete from op_sub_seaorder_fee where BSNO='" + headData.BSNO + "'"); db.ExecuteNonQuery(cmdDeleteFee, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "删除出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "操作成功"; return result; } public static DBResult DeleteDetail2(MsOpSubSeaOrderCtn headData) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand("delete from op_seaorder_ctn where CTN_ID='" + headData.CTN_ID + "'"); db.ExecuteNonQuery(cmdDelete, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "删除出现错误,请重试或联系系统管理员"; return result; } } getCNTRTOTAL(headData.BSNO,""); result.Success = true; result.Message = "操作成功"; return result; } public static DBResult DeleteFeeDetail(MsOpSubSeaOrderFee headData) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand("delete from op_sub_seaorder_fee where CTN_ID='" + headData.FEEID + "'"); db.ExecuteNonQuery(cmdDelete, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "删除出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "操作成功"; return result; } #endregion #region 到货通知 static public List GetArrivalDataList(string strCondition, string billtype, int ortype, string userid, string usercode, string companyid, string sort = null) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and (Companyid='" + companyid + "' or Agentid='" + companyid + "') and BILLTYPE=" + billtype; } else { strCondition = " (Companyid='" + companyid + "' or Agentid='" + companyid + "') and BILLTYPE=" + billtype; } // var strSql = new StringBuilder(); strSql.Append("SELECT ORDNO,BSNO,ORSTATUS,ORTYPE,ORREASON,BSDATE,MBLNO,HBLNO,CUSTOMERNAME"); strSql.Append(",SHIPPER,CONSIGNEE,NOTIFYPARTY,VESSEL,VOYNO,ETD,ETA,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE"); strSql.Append(",PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT"); strSql.Append(",PREPARDAT,PAYABLEAT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS"); strSql.Append(",KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN"); strSql.Append(",REMARK,AUDITOPERATOR,AUDITDATE,DPAGE,DLABEL,LINKMAN,BILLTYPE,COMPANYID,AGENTID,SPCHARGE"); strSql.Append(",SHIPPERCODE,SHIPPERCOUNTRY,SHIPPERTEL,CONSIGNEECODE,CONSIGNEECOUNTRY,CONSIGNEETEL,NOTIFYPARTYCODE,NOTIFYPARTYCOUNTRY,NOTIFYPARTYTEL"); if (ortype == 1) { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN 'RECEIVE' WHEN '1' THEN 'POSTED' WHEN '2' THEN 'REJECTED' else 'ENTRY' end) as ORSTATUSREF "); } else { strSql.Append(",(CASE ORSTATUS WHEN '0' THEN '确认' WHEN '1' THEN '提交' WHEN '2' THEN '驳回' else '录入' end) as ORSTATUSREF "); } strSql.Append(",(SELECT [NAME] from company where GID=B.COMPANYID) as COMPANY "); strSql.Append(",(SELECT [NAME] from company where GID=B.AGENTID) as AGENT "); strSql.Append(" from op_sub_seaorder B"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } // var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by BSDATE desc"); } return SetData(strSql); } static public List GetArrivalData(string condition, string sort = null) { var strSql = new StringBuilder(); strSql.Append("SELECT GID,ORDNO,INPUTBY,BSDATE,REFNO,MBLNO,HBLNO,MESSRS,VIA,N2VOYNO,N2VESSEL,"); strSql.Append("VESSEL,VOYNO,ETD,ETA,FREETIME,PlACERECEIPT,PORTLOADID,PORTLOAD,"); strSql.Append("PORTDISCHARGEID,PORTDISCHARGE,PLACEDELIVERYID,PLACEDELIVERY,ISSUETYPE,OFFICEADDR,DOADDR,"); strSql.Append("BLFRT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GROSSWEIGHT,MEASUREMENT,"); strSql.Append("PKGS,KINDPKGS,KGS,CBM,TOTALNO,CNTRTOTAL,REMARK,AMOUNTUSD,AMOUNTJPY,MARKCOUNT,EXCHANGERATE "); strSql.Append(" from op_sub_seaorder_arrival"); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" where " + condition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by REFNO "); } return SetArrivalData(strSql); } static public string GetArrivalDataStr(string condition, string sort = null) { var strSql = new StringBuilder(); strSql.Append("SELECT GID,ORDNO,INPUTBY,BSDATE,REFNO,MBLNO,HBLNO,MESSRS,VIA,N2VOYNO,N2VESSEL,"); strSql.Append("VESSEL,VOYNO,ETD,ETA,FREETIME,PlACERECEIPT,PORTLOADID,PORTLOAD,"); strSql.Append("PORTDISCHARGEID,PORTDISCHARGE,PLACEDELIVERYID,PLACEDELIVERY,ISSUETYPE,OFFICEADDR,DOADDR,"); strSql.Append("BLFRT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GROSSWEIGHT,MEASUREMENT,"); strSql.Append("PKGS,KINDPKGS,KGS,CBM,TOTALNO,CNTRTOTAL,REMARK,AMOUNTUSD,AMOUNTJPY"); strSql.Append(" from op_sub_seaorder_arrival"); if (!string.IsNullOrEmpty(condition)) { strSql.Append(" where " + condition); } // var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sort)) { strSql.Append(" order by " + sort); } else { strSql.Append(" order by REFNO "); } return strSql.ToString(); } private static List SetArrivalData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaArrival data = new MsOpSubSeaArrival(); #region Set DB data to Object data.ORDNO = Convert.ToString(reader["ORDNO"]);//委托 data.GID = Convert.ToString(reader["GID"]);//业务编号 data.BSDATE = Convert.ToDateTime(reader["BSDATE"]);//接单日期 data.MBLNO = Convert.ToString(reader["MBLNO"]);//主提单号 data.HBLNO = Convert.ToString(reader["HBLNO"]);//分提单号 data.REFNO = Convert.ToString(reader["REFNO"]);//分提单号 data.MESSRS = Convert.ToString(reader["MESSRS"]);//收货人内容 data.VESSEL = Convert.ToString(reader["VESSEL"]);//船名 data.VOYNO = Convert.ToString(reader["VOYNO"]);//航次 data.VIA = Convert.ToString(reader["VIA"]);//航次 data.N2VESSEL = Convert.ToString(reader["N2VESSEL"]);//航次 data.N2VOYNO = Convert.ToString(reader["N2VOYNO"]);//航次 if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToDateTime(reader["ETD"]).ToString("yyyy-MM-dd");//到港日期 if (reader["ETA"] != DBNull.Value) data.ETA = Convert.ToDateTime(reader["ETA"]).ToString("yyyy-MM-dd");//预抵日期 if (reader["FREETIME"] != DBNull.Value) data.FREETIME = Convert.ToDateTime(reader["FREETIME"]).ToString("yyyy-MM-dd");//预抵日期 data.PORTLOADID = Convert.ToString(reader["PORTLOADID"]);//装货港代码 data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]);//装货港 data.PORTDISCHARGEID = Convert.ToString(reader["PORTDISCHARGEID"]);//卸货港代码 data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]);//卸货港 data.PlACERECEIPT = Convert.ToString(reader["PlACERECEIPT"]);//收货地 data.PLACEDELIVERYID = Convert.ToString(reader["PLACEDELIVERYID"]);//交货地代码 data.PLACEDELIVERY = Convert.ToString(reader["PLACEDELIVERY"]);//交货地 data.OFFICEADDR = Convert.ToString(reader["OFFICEADDR"]);//交货地 data.DOADDR = Convert.ToString(reader["DOADDR"]);//交货地 data.ISSUETYPE = Convert.ToString(reader["ISSUETYPE"]);//签单方式 data.BLFRT = Convert.ToString(reader["BLFRT"]);//付费方式 data.SERVICE = Convert.ToString(reader["SERVICE"]);//运输条款 data.MARKS = Convert.ToString(reader["MARKS"]);//唛头 data.NOPKGS = Convert.ToString(reader["NOPKGS"]);//件数包装 data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);//货物描述 data.GROSSWEIGHT = Convert.ToString(reader["GROSSWEIGHT"]);//货物毛重 data.MEASUREMENT = Convert.ToString(reader["MEASUREMENT"]);//货物尺码 data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数 data.KINDPKGS = Convert.ToString(reader["KINDPKGS"]);//件数包装 data.KGS =string.Format("{0:0.00}",Convert.ToDecimal(reader["KGS"]));//毛重 data.CBM =string.Format("{0:0.000}", Convert.ToDecimal(reader["CBM"]));//立方数/尺码 data.TOTALNO = Convert.ToString(reader["TOTALNO"]);//件数大写 data.CNTRTOTAL = Convert.ToString(reader["CNTRTOTAL"]);//集装箱全部内容 data.INPUTBY = Convert.ToString(reader["INPUTBY"]);//录入人 data.REMARK = Convert.ToString(reader["REMARK"]);//备注 if (reader["AMOUNTUSD"] != DBNull.Value) data.AMOUNTUSD = Convert.ToDecimal(reader["AMOUNTUSD"]); if (reader["AMOUNTJPY"] != DBNull.Value) data.AMOUNTJPY = Convert.ToDecimal(reader["AMOUNTJPY"]); #endregion headList.Add(data); } reader.Close(); } return headList; } public static MsOpSubSeaArrival SetDefArrivalData(MsOpSubSeaOrder bill, string username) { var ctnlist=GetBodyList("BSNO='"+bill.BSNO+"'"); var ctnliststr=""; var ctnnum=0; if (ctnlist != null) { foreach (var enumValue in ctnlist) { ctnliststr=ctnliststr+enumValue.CNTRNO+"("+enumValue.CTNALL+")\r\n"; ctnnum = ctnnum + 1; } } var headList = new MsOpSubSeaArrival(); headList.ORDNO = bill.ORDNO;//委托 headList.GID ="*";//业务编号 headList.BSDATE = DateTime.Now;//接单日期 headList.MBLNO ="43LG"+bill.MBLNO;//主提单号 headList.HBLNO =bill.MBLNO;//分提单号 headList.MESSRS =bill.CONSIGNEE;//收货人内容 headList.VESSEL =bill.VESSEL;//船名 headList.VOYNO =bill.VOYNO;//航次 headList.ETD = bill.ETD; headList.ETA = bill.ETA; headList.REFNO =""; headList.PlACERECEIPT = bill.PlACERECEIPT; headList.PORTLOAD = bill.PORTLOAD; headList.PORTDISCHARGE = bill.PORTDISCHARGE; headList.PLACEDELIVERY = bill.PLACEDELIVERY; headList.ISSUETYPE = bill.ISSUETYPE; headList.BLFRT = bill.BLFRT; headList.SERVICE = bill.SERVICE; headList.MARKS = bill.MARKS + "\r\n" + ctnliststr; headList.NOPKGS = bill.NOPKGS; headList.TOTALNO = ctnnum.ToString() + " CONTAINERS (" + bill.PKGS.ToString() + " " + bill.KINDPKGS + ")"; var str = bill.DESCRIPTION; str = str.Replace("\n", "\\"); str = str.Replace("\r", " "); string[] StrList = str.Split('\\'); headList.DESCRIPTION = ctnnum.ToString() + " CONTAINERS (" + bill.PKGS.ToString() + " " + bill.KINDPKGS + ")" + "\r\n\r\n "; for (var i = 0; i <= StrList.Length - 1; i++) { headList.DESCRIPTION = headList.DESCRIPTION + "\r\n " + StrList[i]; } headList.DESCRIPTION=headList.DESCRIPTION + "\r\n\r\n " + bill.BLFRT; headList.GROSSWEIGHT = bill.GROSSWEIGHT; headList.MEASUREMENT = bill.MEASUREMENT; headList.KGS = bill.KGS.ToString(); headList.CBM = bill.CBM.ToString(); headList.INPUTBY = username; return headList; } static public List GetArrivalFeeList(string strCondition) { var strSql = new StringBuilder(); strSql.Append("SELECT [GID],[ORDNO],[FEENAME],[UNITPRICE],[QUANTITY],EXCHANGERATE,[AMOUNTJPY],[AMOUNTUSD],[CURRENCY],[REMARK],[SORT],UNIT from op_sub_seaorder_arrivalfee"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } strSql.Append(" order by ORDNO,SORT"); return SetArrivalFeeData(strSql); } private static List SetArrivalFeeData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaArrivalFee data = new MsOpSubSeaArrivalFee(); #region Set DB data to Object data.FEEID = Convert.ToString(reader["GID"]);//编号 data.ORDNO = Convert.ToString(reader["ORDNO"]);//业务编号 data.FeeName = Convert.ToString(reader["FEENAME"]);//费用名称 if (reader["UNITPRICE"] != DBNull.Value) data.UnitPrice = Convert.ToDecimal(reader["UNITPRICE"]);//单价 data.Unit = Convert.ToString(reader["UNIT"]);//单价 if (reader["QUANTITY"] != DBNull.Value) data.Quantity = Convert.ToDecimal(reader["QUANTITY"]);//数量 if (reader["AMOUNTJPY"] != DBNull.Value) data.AmountJpy = Convert.ToDecimal(reader["AMOUNTJPY"]);//金额 if (reader["EXCHANGERATE"] != DBNull.Value) data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]);//金额 if (reader["AMOUNTUSD"] != DBNull.Value) data.AmountUsd = Convert.ToDecimal(reader["AMOUNTUSD"]);//金额 data.Currency = Convert.ToString(reader["CURRENCY"]);//币别 if (reader["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(reader["SORT"]);//排序 #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } public static int p_update_ARRIVEL(string bsno) { Database db = DatabaseFactory.CreateDatabase(); var cmd = db.GetStoredProcCommand("p_update_arrival"); db.AddInParameter(cmd, "@con_no", DbType.String, bsno); db.ExecuteNonQuery(cmd); return 0; } static public List GetArrivalYardList(string strCondition) { var strSql = new StringBuilder(); strSql.Append("SELECT [GID],[YARDCODE],[DESCRIP] from op_sub_seaorder_arrival_yard"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } strSql.Append(" order by YARDCODE"); return SetArrivalYardData(strSql); } private static List SetArrivalYardData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpSubSeaArrivalYard data = new MsOpSubSeaArrivalYard(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]);//编号 data.YARDCODE = Convert.ToString(reader["YARDCODE"]);// data.DESCRIP = Convert.ToString(reader["DESCRIP"]);// #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } public static DBResult DeleteArrivalFeeDetail(MsOpSubSeaArrivalFee headData) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand("delete from op_sub_seaorder_arrivalfee where GID='" + headData.FEEID + "'"); db.ExecuteNonQuery(cmdDelete, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "删除出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "操作成功"; return result; } #endregion public static DBResult SavePiliangUpdate(List billList, List bodyList, string userid, string username, string companyid, string LOCALCURR, string isclienttype) { 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,IsInvoice,LOCALCURR,MANAGER,ISACC) 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,@IsInvoice,@LOCALCURR,@MANAGER,@ISACC) "); var FeeCodeList = MsChFeeDAL.MsChFeeDAL.GetFeeTypeRefList(""); var Currlist = MsChFeeDAL.MsChFeeDAL.GetFeeCurrList(); if (billList != null) { foreach (var enumbillValue in billList) { if (bodyList != null) { foreach (var enumValue in bodyList) { var FeeTempDetaillist = MsFeeTemplateDAL.GetDetailDataList("TEMPLATEID='" + enumValue.GID + "'"); if (FeeTempDetaillist != null) { var unitlist = MsChFeeDAL.MsChFeeDAL.GetCtnUnitList(enumbillValue.BSNO, "op_sub_seaorder", ""); foreach (var FeeTempDetail in FeeTempDetaillist) { var unit = unitlist.Find(e => e.UNIT == FeeTempDetail.Unit); if ((FeeTempDetail.ISCTN && unit != null) || (!FeeTempDetail.ISCTN)) { decimal quantity = 1; if (unit != null) { quantity = unit.QUANTITY; } var taxrate = FeeTempDetail.TaxRate; decimal acctaxrate = 0; var taxrateb = Math.Round(1 + (taxrate / 100), 4, MidpointRounding.AwayFromZero); decimal TaxUnitPrice = 0; if (FeeTempDetail.TaxUnitPrice == 0) TaxUnitPrice = Math.Round(FeeTempDetail.UnitPrice * taxrateb, 4, MidpointRounding.AwayFromZero); else TaxUnitPrice = FeeTempDetail.TaxUnitPrice; var amout = Math.Round(TaxUnitPrice * quantity, 2, MidpointRounding.AwayFromZero); decimal notaxamount = 0; if (amout > 0) { notaxamount = Math.Round(amout / taxrateb, 2, MidpointRounding.AwayFromZero); } else { notaxamount = -Math.Round(Math.Abs(amout) / taxrateb, 2, MidpointRounding.AwayFromZero); } var tax = amout - notaxamount; acctaxrate = taxrate; decimal exrate = FeeTempDetail.ExchangeRate; if (LOCALCURR == FeeTempDetail.Currency) exrate = 1; if (exrate == 0) { } var FeeDescription = ""; var FeeCode = FeeCodeList.Find(x => x.Name == FeeTempDetail.FeeName); if (FeeCode != null) FeeDescription = FeeCode.Description; var customername = ""; var custtype = ""; if (string.IsNullOrEmpty(FeeTempDetail.CustomerName)) { customername =""; custtype =""; } else { customername = FeeTempDetail.CustomerName; custtype = FeeTempDetail.CustomerType; } cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@gid", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@bsno", DbType.String, enumbillValue.ORDNO); db.AddInParameter(cmdInsert, "@fee_type", DbType.Int16, enumValue.FeeType); db.AddInParameter(cmdInsert, "@fee_name", DbType.String, FeeTempDetail.FeeName); if (isclienttype == "1") { db.AddInParameter(cmdInsert, "@customer_type", DbType.String, custtype); db.AddInParameter(cmdInsert, "@customer_name", DbType.String, customername); } else { db.AddInParameter(cmdInsert, "@customer_type", DbType.String, FeeTempDetail.CustomerType); db.AddInParameter(cmdInsert, "@customer_name", DbType.String, FeeTempDetail.CustomerName); } db.AddInParameter(cmdInsert, "@unit", DbType.String, FeeTempDetail.Unit); db.AddInParameter(cmdInsert, "@unit_price", DbType.Decimal, FeeTempDetail.UnitPrice); db.AddInParameter(cmdInsert, "@fee_description", DbType.String, FeeDescription); db.AddInParameter(cmdInsert, "@quantity", DbType.Decimal, quantity); db.AddInParameter(cmdInsert, "@amount", DbType.Decimal, amout); db.AddInParameter(cmdInsert, "@currency", DbType.String, FeeTempDetail.Currency); db.AddInParameter(cmdInsert, "@exchange_rate", DbType.Decimal, exrate); db.AddInParameter(cmdInsert, "@reason", DbType.String, ""); db.AddInParameter(cmdInsert, "@remark", DbType.String, enumValue.Remark); 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, 10); db.AddInParameter(cmdInsert, "@fee_status", DbType.Int16, 1); db.AddInParameter(cmdInsert, "@fee_frt", DbType.String, FeeTempDetail.FEEFRT); db.AddInParameter(cmdInsert, "@taxrate", DbType.Decimal, taxrate); db.AddInParameter(cmdInsert, "@notaxamount", DbType.Decimal, notaxamount); db.AddInParameter(cmdInsert, "@acctaxrate", DbType.Decimal, acctaxrate); db.AddInParameter(cmdInsert, "@LINENUM", DbType.Int16, 0); db.AddInParameter(cmdInsert, "@taxunit_price", DbType.Decimal, TaxUnitPrice); 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, ""); db.AddInParameter(cmdInsert, "@PREAMOUNT", DbType.Decimal, 0); db.AddInParameter(cmdInsert, "@INPUTMODE", DbType.String, ""); db.AddInParameter(cmdInsert, "@IsInvoice", DbType.String, "0"); db.AddInParameter(cmdInsert, "@LOCALCURR", DbType.String, LOCALCURR); db.AddInParameter(cmdInsert, "@MANAGER", DbType.String, ""); db.AddInParameter(cmdInsert, "@ISACC", DbType.String, "0"); db.ExecuteNonQuery(cmdInsert, tran); } } } } } } } tran.Commit(); result.Success = true; result.Message = "保存成功" + result.Message; } catch (Exception e) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员" + e.Message; return result; } } return result; } #region 批量修改 public static DBResult Modify(List bodyList, MsOpSubSeaArrival modifydata, string companyid) { var result = new DBResult(); string errstr = ""; int i = 0; Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var strSql = new StringBuilder(); strSql.Append("update op_sub_seaorder_arrival set ORDNO=ORDNO "); if (modifydata.OFFICEADDR != "" && modifydata.OFFICEADDR != null) strSql.Append(",OFFICEADDR=@OFFICEADDR"); if (modifydata.ETA != "" && modifydata.ETA != null) strSql.Append(",ETA=@ETA"); strSql.Append(" where ORDNO=@ORDNO "); var cmdupdate = db.GetSqlStringCommand(strSql.ToString()); if (bodyList != null) { foreach (var enumValue in bodyList) { if (!string.IsNullOrEmpty(modifydata.GROSSWEIGHT)) { var cmdUpdateFee = db.GetSqlStringCommand("update ch_fee set EXCHANGERATE=" + modifydata.GROSSWEIGHT + " where CURRENCY='USD' AND BSNO='" + enumValue.ORDNO + "'"); db.ExecuteNonQuery(cmdUpdateFee, tran); } if (modifydata.ETA != "" && modifydata.ETA != null) { var cmdUpdateETA = db.GetSqlStringCommand("update op_sub_seaorder set ETA='" + modifydata.ETA + "' where ORDNO='" + enumValue.ORDNO + "'"); db.ExecuteNonQuery(cmdUpdateETA, tran); } var isPost = true; if (isPost) { cmdupdate.Parameters.Clear(); if (modifydata.OFFICEADDR != "" && modifydata.OFFICEADDR != null) db.AddInParameter(cmdupdate, "@OFFICEADDR", DbType.String, modifydata.OFFICEADDR); if (modifydata.ETA != "" && modifydata.ETA != null) db.AddInParameter(cmdupdate, "@ETA", DbType.String, modifydata.ETA); //if (modifydata.AIRLINES != "" && modifydata.AIRLINES != null) // db.AddInParameter(cmdupdate, "@AIRLINES", DbType.String, modifydata.AIRLINES); db.AddInParameter(cmdupdate, "@ORDNO", DbType.String, enumValue.ORDNO); db.ExecuteNonQuery(cmdupdate, tran); i = i + 1; } } } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "修改出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "修改成功" + i.ToString() + "票"; if (errstr != "") { result.Message = result.Message + "(其中" + errstr + " 无法修改)"; } return result; } #endregion #region 集装箱动态 static public List GetCtnStatusList(string strCondition,string billtype,string companyid) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and (b.Companyid='" + companyid + "' or Agentid='"+companyid+"') and b.BILLTYPE=" + billtype; } else { strCondition = " (b.Companyid='" + companyid + "' or Agentid='"+companyid+"') and b.BILLTYPE=" + billtype; } var strSql = new StringBuilder(); strSql.Append("SELECT c.[CTN_ID],c.[BSNO],c.[CTNCODE],c.[CTNALL],c.[CNTRNO],c.[SEALNO],c.[PKGS],c.[KGS],c.[CBM],c.[REMARK],c.[STATUS], "); strSql.Append(" c.[CTNSTATUS],c.[CTNSTATUSDATE],b.[ORSTATUS],b.[BSDATE],b.[MBLNO],b.[VESSEL],b.[VOYNO],b.[ETD],b.[ETA],b.[PORTLOADID],b.[PORTLOAD], "); strSql.Append(" b.[PORTDISCHARGEID],b.[PORTDISCHARGE],b.[PLACEDELIVERYID],b.[PLACEDELIVERY],b.[DESTINATIONID],b.[DESTINATION],b.[SERVICE],b.[CNTRTOTAL],b.[CARGOID] "); strSql.Append(" from op_seaorder_ctn c left join op_sub_seaorder b on (b.BSNO=c.BSNO)"); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } strSql.Append(" order by b.BSDATE DESC"); return SetCtnStatusData(strSql); } private static List SetCtnStatusData(StringBuilder strSql) { var bodyList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { MsOpOrderCtnStatus data = new MsOpOrderCtnStatus(); #region Set DB data to Object data.CTN_ID = Convert.ToString(reader["CTN_ID"]);//编号 data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号 data.CTNCODE = Convert.ToString(reader["CTNCODE"]);//表现形式 data.CTNALL = Convert.ToString(reader["CTNALL"]);//表现形式 data.CNTRNO = Convert.ToString(reader["CNTRNO"]);//箱号 data.SEALNO = Convert.ToString(reader["SEALNO"]);//封号 if (reader["PKGS"] != DBNull.Value) data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数 if (reader["KGS"] != DBNull.Value) data.KGS = Convert.ToDecimal(reader["KGS"]);//重量(货重) if (reader["CBM"] != DBNull.Value) data.CBM = Convert.ToDecimal(reader["CBM"]);//尺码 data.STATUS = Convert.ToString(reader["STATUS"]); data.REMARK = Convert.ToString(reader["REMARK"]);//备注 data.CTNSTATUS = Convert.ToString(reader["CTNSTATUS"]); data.CTNSTATUSDATE = Convert.ToString(reader["CTNSTATUSDATE"]); data.ORSTATUS = Convert.ToString(reader["ORSTATUS"]);// data.BSDATE = Convert.ToDateTime(reader["BSDATE"]);// data.MBLNO = Convert.ToString(reader["MBLNO"]);// data.VESSEL = Convert.ToString(reader["VESSEL"]);//船名 data.VOYNO = Convert.ToString(reader["VOYNO"]);//航次 if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToDateTime(reader["ETD"]).ToShortDateString();//到港日期 if (reader["ETA"] != DBNull.Value) data.ETA = Convert.ToDateTime(reader["ETA"]).ToShortDateString();//到港日期 data.PORTLOADID = Convert.ToString(reader["PORTLOADID"]);//装货港代码 data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]);//装货港 data.PORTDISCHARGEID = Convert.ToString(reader["PORTDISCHARGEID"]);//卸货港代码 data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]);//卸货港 data.PLACEDELIVERYID = Convert.ToString(reader["PLACEDELIVERYID"]);//交货地代码 data.PLACEDELIVERY = Convert.ToString(reader["PLACEDELIVERY"]);//交货地 data.DESTINATIONID = Convert.ToString(reader["DESTINATIONID"]);//目的地代码 data.DESTINATION = Convert.ToString(reader["DESTINATION"]);//目的地 data.SERVICE = Convert.ToString(reader["SERVICE"]);//运输条款 data.CNTRTOTAL = Convert.ToString(reader["CNTRTOTAL"]);//集装箱全部内容 data.CARGOID = Convert.ToString(reader["CARGOID"]);//货物标识 #endregion bodyList.Add(data); } reader.Close(); } return bodyList; } #endregion #region 集装箱动态维护 public static DBResult UpdateCtnStatus(List bodylist, string type, string opdatetime,string opname) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (var OrderData in bodylist) { if (type == "1") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Shipper ON "+opdatetime+"' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "2") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Receipt ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "3") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Loading ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "4") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' OnBorad ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "5") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Discharging ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "6") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Delivery ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "7") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Consignee ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } else if (type == "8") { var cmdupdateModify = db.GetSqlStringCommand("update V_ORDER_CTNSTATUS set ctnstatus=' Return Ctn ON " + opdatetime + "' where CTN_ID=@ID"); cmdupdateModify.Parameters.Clear(); db.AddInParameter(cmdupdateModify, "@ID", DbType.String, OrderData.CTN_ID); db.ExecuteNonQuery(cmdupdateModify, tran); } if (type == "4" || type == "5") { importBox(OrderData, opname); } } result = new DBResult(); result.Success = true; result.Message = "提交成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "提交错误,请重试或联系系统管理员"; return result; } } return result; } #region 查询当前登录用户 static public string getuser(string userid) { string sql = "select showname from [user] where gid='" + userid + "'"; return SetUser(sql); } private static string SetUser(string sb) { string s = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, sb.ToString())) { while (reader.Read()) { #region Set DB data to Object s = Convert.ToString(reader["showname"]); #endregion } reader.Close(); } return s; } #endregion public static DBResult UpdateOpCtnStatus(List bodylist, string time, string remarks,string type,string userid) { var result = new DBResult(); string opdatetime = DateTime.Now.ToShortDateString(); StringBuilder sb = new StringBuilder(""); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); string msg = ""; string insertsql = string.Empty; try { if (bodylist!=null) { foreach (var enumValue in bodylist) { string sql = " update container_info set cntype='" + enumValue.CTNALL + "' where cntrno='" + enumValue.CNTRNO + "'"; var cmd = db.GetSqlStringCommand(sql); int a = db.ExecuteNonQuery(cmd, tran); if (a == 0) { sb.Append(enumValue.CNTRNO+","); } else { if (type == "1") { insertsql = string.Format("insert into container_business(jcyy,box_no,vessel,voyage,blno,etd," + "fobportname,operman,opertime,Remarks,jctime) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", "装船", enumValue.CNTRNO, enumValue.VESSEL, enumValue.VOYNO, enumValue.MBLNO, Convert.ToDateTime(time).ToString("yyyy-MM-dd HH:mm:ss"), enumValue.PORTLOAD, getuser(userid), opdatetime, remarks, Convert.ToDateTime(time).ToString("yyyy-MM-dd HH:mm:ss")); } else { insertsql = string.Format("insert into container_business(jcyy,box_no,vessel,voyage,blno,reachtime," + "positionname,operman,opertime,Remarks,jctime) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", "卸船", enumValue.CNTRNO, enumValue.VESSEL, enumValue.VOYNO, enumValue.MBLNO, Convert.ToDateTime(time).ToString("yyyy-MM-dd HH:mm:ss"), enumValue.PORTDISCHARGE, getuser(userid), opdatetime, remarks, Convert.ToDateTime(time).ToString("yyyy-MM-dd HH:mm:ss")); } var cmdmx = db.GetSqlStringCommand(insertsql); db.ExecuteNonQuery(cmdmx, tran); } } } msg = sb.ToString(); result.Success = true; if (msg!="") { result.Message = "更新成功,以下箱号不存在,故未能更新:
" + msg; } else { result.Message = "更新成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "提交错误,请重试或联系系统管理员"; return result; } } return result; } public static string importBox(MsOpOrderCtnStatus headdata, string username) { string str = ""; if (isCntrNO(headdata.CNTRNO)) { try { T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); DataSet ds = T_ALL_DA.GetAllSQL("select * from container_business where vessel='" + headdata.VESSEL + "' and Voyage='" + headdata.VOYNO + "' and Box_No='" + headdata.CNTRNO + "'"); if (ds != null && ds.Tables[0].Rows.Count > 0) { Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdupdate = db.GetSqlStringCommand("update container_business set BLNO=@BLNO,Etd=@Etd,State=@State,Position=@Position,ReachTime=@ReachTime,fobport=@fobport,operman=@operman ,opertime=@opertime,Remarks=@Remarks where Vessel=@Vessel and Voyage=@Voyage and Box_No=@Box_No"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BLNO", DbType.String, headdata.MBLNO); db.AddInParameter(cmdupdate, "@Vessel", DbType.String, headdata.VESSEL); db.AddInParameter(cmdupdate, "@Voyage", DbType.String, headdata.VOYNO); db.AddInParameter(cmdupdate, "@Box_No", DbType.String, headdata.CNTRNO); db.AddInParameter(cmdupdate, "@Etd", DbType.String, headdata.ETD); db.AddInParameter(cmdupdate, "@State", DbType.String, setFE(headdata.STATUS)); db.AddInParameter(cmdupdate, "@Position", DbType.String, GetPortID(headdata.PORTDISCHARGE)); db.AddInParameter(cmdupdate, "@ReachTime", DbType.String, headdata.ETA); db.AddInParameter(cmdupdate, "@fobport", DbType.String, GetPortID(headdata.PORTLOAD)); db.AddInParameter(cmdupdate, "@operman", DbType.String, username); db.AddInParameter(cmdupdate, "@opertime", DbType.String, DateTime.Now.ToString()); db.AddInParameter(cmdupdate, "@Remarks", DbType.String,""); db.ExecuteNonQuery(cmdupdate, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); } } } else { Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdupdate = db.GetSqlStringCommand("insert into container_business (BLNO,Vessel,Voyage,Box_No,Etd,State,Position,ReachTime,fobport,operman,opertime)values(@BLNO,@Vessel,@Voyage,@Box_No,@Etd,@State,@Position,@ReachTime,@fobport,@operman,@opertime)"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BLNO", DbType.String, headdata.MBLNO); db.AddInParameter(cmdupdate, "@Vessel", DbType.String, headdata.VESSEL); db.AddInParameter(cmdupdate, "@Voyage", DbType.String, headdata.VOYNO); db.AddInParameter(cmdupdate, "@Box_No", DbType.String, headdata.CNTRNO); db.AddInParameter(cmdupdate, "@Etd", DbType.String, headdata.ETD); db.AddInParameter(cmdupdate, "@State", DbType.String, setFE(headdata.STATUS)); db.AddInParameter(cmdupdate, "@Position", DbType.String, GetPortID(headdata.PORTDISCHARGE)); db.AddInParameter(cmdupdate, "@ReachTime", DbType.String, headdata.ETA); db.AddInParameter(cmdupdate, "@fobport", DbType.String, GetPortID(headdata.PORTLOAD)); db.AddInParameter(cmdupdate, "@operman", DbType.String, username); db.AddInParameter(cmdupdate, "@opertime", DbType.String, DateTime.Now.ToString()); db.ExecuteNonQuery(cmdupdate, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); } } } // BaseClass.db.SetSqlStrNonQuery("update container_info set status=" + setFE(dr["ISFULL"].ToString()) + ",Position='" + posi + "',positionname='" + posiname + "',Vessel='" + vsl + "',Voyage='" + val + "' where CntrNo='" + dr["CNTR NO"].ToString().Trim() + "'"); } catch { } } else { str += headdata.CNTRNO + ","; } if (!string.IsNullOrEmpty(str.TrimEnd(','))) { str = "已导入,以下箱号不合法未能导入:\\n" + str.TrimEnd(','); } else str += "导入成功"; return str; } //public static string getPosition(string position) //{ // string str = ""; // try // { // str = BaseClass.db.GetSqlStrScalar("select portid from code_disport where cname='" + position + "'").ToString(); // } // catch { } // return str; //} public static string getDate(string date) { string str = null; try { str = DateTime.Parse(date).ToString("yyyy-MM-dd"); } catch { } return str; } public static string getStatus(string s) { string str = null; switch (s) { case "可用": str = "1"; break; case "已用": str = "2"; break; case "维修": str = "3"; break; case "停用": str = "4"; break; case "退租": str = "5"; break; case "灭失": str = "6"; break; case "卖出": str = "7"; break; } return str; } public static string setFE(string s) { string str = null; if (s.ToUpper() == "F") str = "2"; else if (s.ToUpper() == "E") str = "1"; return str; } public static bool isCntrNO(string no) { String regex = @"^[a-zA-Z]{4}\d{7}$"; if (Regex.IsMatch(no, regex)) { return true; } else { return false; } } static public string GetPortID(string PORT) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select PORTID from code_disport where PORT like '%" + PORT + "%'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["PORTID"]); } reader.Close(); } return EDICODE; } #endregion #region 引入集装箱和费用明细 static public string GetCustName(string GID) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select [NAME] from company where GID='" + GID + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["NAME"]); } reader.Close(); } return EDICODE; } static public string GetCustID(string NAME) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select GID from company where [NAME]='" +NAME+ "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["GID"]); } reader.Close(); } return EDICODE; } public static DBResult AddOrderDetail(string bsno, MsOpSubSeaOrder orderdata,string userid) { 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 op_ctn (CTN_ID,BSNO,CTNCODE,[SIZE],CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,KINDPKGS) values (@CTN_ID,@BSNO,@CTNCODE,@SIZE,@CTN,@CTNNUM,@TEU,@CTNALL,@CNTRNO,@SEALNO,@PKGS,@KGS,@CBM,@REMARK,@KINDPKGS) "); var cmdInsertfee = db.GetSqlStringCommand( @"INSERT into ch_fee (GID, BSNO, FEETYPE, FEENAME, CUSTOMERNAME, UNIT, UNITPRICE, QUANTITY, AMOUNT, CURRENCY, EXCHANGERATE,ENTEROPERATOR, ENTERDATE,ISOPEN, ISADVANCEDPAY, SORT, FEESTATUS, FEEFRT, TAXRATE,NOTAXAMOUNT,ACCTAXRATE,TAXUNITPRICE) values (@GID, @BSNO, @FEETYPE, @FEENAME, @CUSTOMERNAME,@UNIT,@UNITPRICE,@QUANTITY,@AMOUNT, @CURRENCY, @EXCHANGERATE,@ENTEROPERATOR, @ENTERDATE,@ISOPEN, @ISADVANCEDPAY, @SORT, @FEESTATUS, @FEEFRT, @TAXRATE,@NOTAXAMOUNT,@ACCTAXRATE,@TAXUNITPRICE)"); var cmdUpdateOrder = db.GetSqlStringCommand( @"update op_sub_seaorder set ORSTATUS='0' where BSNO=@BSNO"); var bodyList = GetBodyList("BSNO='" + orderdata.BSNO + "'"); if (bodyList != null) { foreach (var enumValue in bodyList) { int SIZE = int.Parse(enumValue.CTNALL.ToString().Trim().Substring(0, 2)); string CTN = enumValue.CTNALL.ToString().Trim().Substring(2); int TEU = 1; int iTEU = int.Parse(enumValue.CTNALL.ToString().Trim().Substring(0, 1)); if (iTEU == 4) { TEU = TEU * 2; } var feedoid = Guid.NewGuid().ToString(); cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@CTN_ID", DbType.String, feedoid); db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno); db.AddInParameter(cmdInsert, "@CTNCODE", DbType.String,enumValue.CTNCODE); db.AddInParameter(cmdInsert, "@SIZE", DbType.Int16, SIZE); db.AddInParameter(cmdInsert, "@CTN", DbType.String, CTN); db.AddInParameter(cmdInsert, "@CTNNUM", DbType.Int16, 1); db.AddInParameter(cmdInsert, "@TEU", DbType.Int16, TEU); db.AddInParameter(cmdInsert, "@CTNALL", DbType.String, enumValue.CTNALL); db.AddInParameter(cmdInsert, "@CNTRNO", DbType.String, enumValue.CNTRNO); db.AddInParameter(cmdInsert, "@SEALNO", DbType.String, enumValue.SEALNO); db.AddInParameter(cmdInsert, "@PKGS", DbType.Int16, enumValue.PKGS); db.AddInParameter(cmdInsert, "@KGS", DbType.Decimal, enumValue.KGS); db.AddInParameter(cmdInsert, "@CBM", DbType.Decimal, enumValue.CBM); db.AddInParameter(cmdInsert, "@TAREWEIGHT", DbType.Decimal, null); db.AddInParameter(cmdInsert, "@REMARK", DbType.String, enumValue.REMARK); db.AddInParameter(cmdInsert, "@KINDPKGS", DbType.String,""); db.ExecuteNonQuery(cmdInsert, tran); } } var AfeeList = GetFeeList("BSNO='" + orderdata .BSNO+ "'", 1); if (AfeeList != null) { foreach (var enumValue in AfeeList) { var feedoid = Guid.NewGuid().ToString(); cmdInsertfee.Parameters.Clear(); db.AddInParameter(cmdInsertfee, "@GID", DbType.String, feedoid); db.AddInParameter(cmdInsertfee, "@BSNO", DbType.String, bsno); db.AddInParameter(cmdInsertfee, "@FEETYPE", DbType.Int16, 1); db.AddInParameter(cmdInsertfee, "@FEENAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsertfee, "@CUSTOMERNAME", DbType.String, GetCustName(orderdata.AGENTID)); db.AddInParameter(cmdInsertfee, "@UNIT", DbType.String,enumValue.Unit); db.AddInParameter(cmdInsertfee, "@UNITPRICE", DbType.Decimal, enumValue.UnitPrice); db.AddInParameter(cmdInsertfee, "@QUANTITY", DbType.Decimal, enumValue.Quantity); db.AddInParameter(cmdInsertfee, "@AMOUNT", DbType.Decimal, enumValue.Amount); db.AddInParameter(cmdInsertfee, "@CURRENCY", DbType.String, enumValue.Currency); db.AddInParameter(cmdInsertfee, "@EXCHANGERATE", DbType.Decimal, enumValue.ExChangerate); db.AddInParameter(cmdInsertfee, "@ENTEROPERATOR", DbType.String, userid); db.AddInParameter(cmdInsertfee, "@ENTERDATE", DbType.Date,DateTime.Now); db.AddInParameter(cmdInsertfee, "@ISOPEN", DbType.String,"0"); db.AddInParameter(cmdInsertfee, "@ISADVANCEDPAY", DbType.String, "0"); db.AddInParameter(cmdInsertfee, "@SORT", DbType.Int16, enumValue.SORT); db.AddInParameter(cmdInsertfee, "@FEESTATUS", DbType.Int16, 0); db.AddInParameter(cmdInsertfee, "@FEEFRT", DbType.String, enumValue.FeeFrt); db.AddInParameter(cmdInsertfee, "@TAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdInsertfee, "@NOTAXAMOUNT", DbType.Decimal, enumValue.Amount); db.AddInParameter(cmdInsertfee, "@ACCTAXRATE", DbType.Decimal,0); db.AddInParameter(cmdInsertfee, "@TAXUNITPRICE", DbType.Decimal, enumValue.UnitPrice); db.ExecuteNonQuery(cmdInsertfee, tran); } } var feeList = GetFeeList("BSNO='" + orderdata.BSNO + "'", 0); if (feeList != null) { foreach (var enumValue in feeList) { var feedoid = Guid.NewGuid().ToString(); cmdInsertfee.Parameters.Clear(); db.AddInParameter(cmdInsertfee, "@GID", DbType.String, feedoid); db.AddInParameter(cmdInsertfee, "@BSNO", DbType.String, bsno); db.AddInParameter(cmdInsertfee, "@FEETYPE", DbType.Int16, 1); db.AddInParameter(cmdInsertfee, "@FEENAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsertfee, "@CUSTOMERNAME", DbType.String, GetCustName(orderdata.COMPANYID)); db.AddInParameter(cmdInsertfee, "@UNIT", DbType.String, enumValue.Unit); db.AddInParameter(cmdInsertfee, "@UNITPRICE", DbType.Decimal, enumValue.UnitPrice); db.AddInParameter(cmdInsertfee, "@QUANTITY", DbType.Decimal, enumValue.Quantity); db.AddInParameter(cmdInsertfee, "@AMOUNT", DbType.Decimal, enumValue.Amount); db.AddInParameter(cmdInsertfee, "@CURRENCY", DbType.String, enumValue.Currency); db.AddInParameter(cmdInsertfee, "@EXCHANGERATE", DbType.Decimal, enumValue.ExChangerate); db.AddInParameter(cmdInsertfee, "@ENTEROPERATOR", DbType.String, userid); db.AddInParameter(cmdInsertfee, "@ENTERDATE", DbType.Date, DateTime.Now); db.AddInParameter(cmdInsertfee, "@ISOPEN", DbType.String, "0"); db.AddInParameter(cmdInsertfee, "@ISADVANCEDPAY", DbType.String, "0"); db.AddInParameter(cmdInsertfee, "@SORT", DbType.Int16, enumValue.SORT); db.AddInParameter(cmdInsertfee, "@FEESTATUS", DbType.Int16, 0); db.AddInParameter(cmdInsertfee, "@FEEFRT", DbType.String, enumValue.FeeFrt); db.AddInParameter(cmdInsertfee, "@TAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdInsertfee, "@NOTAXAMOUNT", DbType.Decimal, enumValue.Amount); db.AddInParameter(cmdInsertfee, "@ACCTAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdInsertfee, "@TAXUNITPRICE", DbType.Decimal, enumValue.UnitPrice); db.ExecuteNonQuery(cmdInsertfee, tran); } } cmdUpdateOrder.Parameters.Clear(); db.AddInParameter(cmdUpdateOrder, "@BSNO", DbType.String, bsno); db.ExecuteNonQuery(cmdUpdateOrder, tran); tran.Commit(); result.Success = true; result.Message = "保存成功" + result.Message; return result; } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static DBResult ImportSeaeDetail(string bsno, List ctnbodyList, string userid) { 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 op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK) values (@CTN_ID,@BSNO,@CTNCODE,@CTNALL,@CNTRNO,@SEALNO,@PKGS,@KGS,@CBM,@REMARK) "); if (ctnbodyList != null) { foreach (var enumValue in ctnbodyList) { var feedoid = Guid.NewGuid().ToString(); cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@CTN_ID", DbType.String, feedoid); db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno); db.AddInParameter(cmdInsert, "@CTNCODE", DbType.String, enumValue.CTNCODE); db.AddInParameter(cmdInsert, "@CTNALL", DbType.String, enumValue.CTNALL); db.AddInParameter(cmdInsert, "@CNTRNO", DbType.String, enumValue.CNTRNO); db.AddInParameter(cmdInsert, "@SEALNO", DbType.String, enumValue.SEALNO); db.AddInParameter(cmdInsert, "@PKGS", DbType.Int16, enumValue.PKGS); db.AddInParameter(cmdInsert, "@KGS", DbType.Decimal, enumValue.KGS); db.AddInParameter(cmdInsert, "@CBM", DbType.Decimal, enumValue.CBM); db.AddInParameter(cmdInsert, "@REMARK", DbType.String, enumValue.REMARK); db.ExecuteNonQuery(cmdInsert, tran); } } tran.Commit(); result.Success = true; result.Message = "生成成功" + result.Message; return result; } 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 GetFeeCount(string BSNO) { var isfee = false; var strSql = new StringBuilder(); strSql.Append("Select count(*) as count "); strSql.Append(" from ch_fee "); strSql.Append(" where BSNO='" + BSNO+"'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { var evData = Convert.ToInt32(reader["count"]); if (evData > 0) { isfee = true; }; } reader.Close(); } return isfee; } #endregion #region 审核通过处理 static public List GetAuditDataList(string strCondition, string billtype, string userid, string usercode, string companyid, string sort = null) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and BILLTYPE=" + billtype; } else { strCondition = " BILLTYPE=" + billtype; } var strSql = new StringBuilder(); strSql.Append("SELECT ORDNO,BSNO,ORSTATUS,ORTYPE,ORREASON,BSDATE,MBLNO,HBLNO,CUSTOMERNAME"); strSql.Append(",SHIPPER,CONSIGNEE,NOTIFYPARTY,VESSEL,VOYNO,ETD,ETA,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE"); strSql.Append(",PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT"); strSql.Append(",PREPARDAT,PAYABLEAT,[SERVICE],MARKS,NOPKGS,[DESCRIPTION],GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS"); strSql.Append(",KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN"); strSql.Append(",REMARK,AUDITOPERATOR,AUDITDATE,DPAGE,DLABEL,LINKMAN,BILLTYPE,COMPANYID,AGENTID,SPCHARGE"); strSql.Append(",SHIPPERCODE,SHIPPERCOUNTRY,SHIPPERTEL,CONSIGNEECODE,CONSIGNEECOUNTRY,CONSIGNEETEL,NOTIFYPARTYCODE,NOTIFYPARTYCOUNTRY,NOTIFYPARTYTEL"); strSql.Append(",(CASE ORSTATUS WHEN '0' THEN '引入' WHEN '1' THEN '提交' WHEN '2' THEN '驳回' else '录入' end) as ORSTATUSREF "); strSql.Append(",(SELECT [NAME] from company where GID=B.COMPANYID ) as COMPANY "); strSql.Append(",(SELECT [NAME] from company where GID=B.AGENTID) as AGENT "); strSql.Append(",'' DRFEESTATUS"); strSql.Append(",'' CRFEESTATUS"); strSql.Append(" from op_sub_seaorder B"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by BSDATE desc"); } return SetData(strSql); } #endregion #region 外代EDI static public string GetVesselEdi(string Vessel) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select EDICODE from code_vessel where Vessel='" + Vessel + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["EDICODE"]); } reader.Close(); } return EDICODE; } static public string GetPackageEDICode(string Package) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select EDICODE from CODE_PACKAGE where PKGS='" + Package + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["EDICODE"]); } reader.Close(); } return EDICODE; } static public string GetCtnEDICode(string Ctn) { string EDICODE = ""; Ctn = Ctn.Replace("'", "''"); var strSql = new StringBuilder(); strSql.Append("select EDICODE from code_ctn where CTN='" + Ctn + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["EDICODE"]); } reader.Close(); } return EDICODE; } static public decimal GetCtnWeight(string Ctn) { decimal CTNWEIGHT = 0; Ctn = Ctn.Replace("'", "''"); var strSql = new StringBuilder(); strSql.Append("select CTNWEIGHT from code_ctn where CTN='" + Ctn + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { CTNWEIGHT = Convert.ToDecimal(reader["CTNWEIGHT"]); } reader.Close(); } return CTNWEIGHT; } static public string GetFrtEDICode(string FRT) { string EDICODE = "P"; var strSql = new StringBuilder(); strSql.Append("select EDICODE from code_frt where FRT='" + FRT + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["EDICODE"]); } reader.Close(); } return EDICODE; } static public string GetLaneEDICode(string lane) { string EDICODE = ""; var strSql = new StringBuilder(); strSql.Append("select EDICODE from code_lanes where lane='" + lane + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { EDICODE = Convert.ToString(reader["EDICODE"]); } reader.Close(); } return EDICODE; } public static string formatEdiStr(string str) { return str.Replace("?", "??").Replace(":", "?:").Replace("+", "?+").Replace(";", "?;"); } public static List formatlengthStr(string str, int length) { str = str.Replace("\n", "\\"); str = str.Replace("\r", " "); string[] StrList = str.Split('\\'); var strtemp = ""; var strnewline = ""; var strtempnewline = ""; char[] spstring = { ' ', ';', ',', '.', ':', '/', '(', ')', '?', '+', '-' }; List DestList = new List(); for (var i = 0; i <= StrList.Length - 1; i++) { if (StrList[i].Length <= length) DestList.Add(StrList[i]); else { strtemp = StrList[i]; for (var j = 0; j < strtemp.Length; j++) { strtempnewline = strtempnewline + strtemp[j]; if (strtemp[j] == ' ' || strtemp[j] == ':' || strtemp[j] == ',' || strtemp[j] == '.' || strtemp[j] == ':' || strtemp[j] == '/' || strtemp[j] == '?' || strtemp[j] == ')' || strtemp[j] == '}' || strtemp[j] == '+' || strtemp[j] == '-') { if ((strnewline.Length + strtempnewline.Length) <= length) strnewline = strnewline + strtempnewline; else { DestList.Add(strnewline); strnewline = ""; } strtempnewline = ""; } } } } return DestList; } public static string formatListStr(List DestList, int lineCount) { var result = ""; for (var i = 0; i < lineCount; i++) { if (DestList.Count > i) { result = result + DestList[i] + ":"; } else result = result + ":"; } return result; } public static string BreakLongString(string SubjectString, int lineLength) { StringBuilder sb = new StringBuilder(SubjectString); int offset = 0; ArrayList indexList = buildInsertIndexList(SubjectString, lineLength); for (int i = 0; i < indexList.Count; i++) { sb.Insert((int)indexList[i] + offset, '\n'); offset++; } return sb.ToString(); } public static bool IsChinese(char c) { return (int)c > 0x80; } public static bool StringIsChinese(string str) { var result = false; for (int i = 1; i < str.Length; i++) { if (IsChinese(str[i])) { result = true; return result; } } return result; } private static ArrayList buildInsertIndexList(string str, int maxLen) { int nowLen = 0; ArrayList list = new ArrayList(); for (int i = 1; i < str.Length; i++) { if (IsChinese(str[i])) { nowLen += 2; } else { nowLen++; } if (nowLen > maxLen) { nowLen = 0; list.Add(i); } } return list; } public static string GetDateStr(string datestr, string dateformat) { var result = ""; if (datestr == null || datestr == "") { result = ""; } else { result = Convert.ToDateTime(datestr).ToString(dateformat); } return result; } public static string IsCreateEdiWD(List headData) { var error = ""; foreach (var bill in headData) { if (bill.MBLNO == null || bill.MBLNO == "") { error = error + "|MBLNO Can't Empty"; } if (bill.BLFRT == null || bill.BLFRT == "") { error = error + "|MBLNO:" + bill.MBLNO + "PREPAID OR COLLECT Can't Empty"; } if (bill.VESSEL == null || bill.VESSEL == "") { error = error + "|MBLNO:" + bill.MBLNO + "Vessel Can't Empty"; } if (bill.SHIPPERCODE == null || bill.SHIPPERCODE == "") { error = error + "|MBLNO:" + bill.MBLNO + "Shipper Code Can't Empty"; } if (bill.SHIPPERTEL == null || bill.SHIPPERTEL == "") { error = error + "|MBLNO:" + bill.MBLNO + "Shipper Tel Can't Empty"; } if (bill.CONSIGNEECODE == null || bill.CONSIGNEECODE == "") { error = error + "|MBLNO:" + bill.MBLNO + "Consignee Code Can't Empty"; } if (bill.CONSIGNEETEL == null || bill.CONSIGNEETEL == "") { error = error + "|MBLNO:" + bill.MBLNO + "Consignee Tel Can't Empty"; } if (bill.VOYNO == null || bill.VOYNO == "") { error = error + "|MBLNO:" + bill.MBLNO + "VoyNo Can't Empty"; } if (bill.PORTLOADID == null || bill.PORTLOADID == "") { error = error + "|MBLNO:" + bill.MBLNO + "PORTLOAD CODE Can't Empty"; } if (bill.PORTLOAD == null || bill.PORTLOAD == "") { error = error + "|MBLNO:" + bill.MBLNO + "PORTLOAD Can't Empty"; } if (bill.ETD == null || bill.ETD == "") { error = error + "|MBLNO:" + bill.MBLNO + "ETD Can't Empty"; return error; } if (bill.PORTDISCHARGEID == null || bill.PORTDISCHARGEID == "") { error = error + "|MBLNO:" + bill.MBLNO + "PORTDISCHARGE CODE Can't Empty"; } if (bill.DESTINATION == null || bill.DESTINATION == "") { error = error + "|MBLNO:" + bill.MBLNO + "PORTDISCHARGE Can't Empty"; } //if (GetPackageEDICode(bill.KINDPKGS) == "") //{ error = error + "|提单号:" + bill.MBLNO + "包装EDI代码不能为空"; } if (bill.DESCRIPTION == null || bill.DESCRIPTION == "") { error = error + "|MBLNO:" + bill.MBLNO + "DESCRIPTION Can't Empty"; } if (bill.MARKS == null || bill.MARKS == "") { error = error + "|MBLNO:" + bill.MBLNO + "MARKS Can't Empty"; } //if (bill.PKGS == 0) //{ error = error + "|MBLNO:" + bill.MBLNO + "PKGS Can't Empty"; } if (bill.CARGOID == null || bill.CARGOID == "") { error = error + "|MBLNO:" + bill.MBLNO + "CARGO CODE Can't Empty"; } if (bill.CARGOID == "D") { if (bill.DCLASS == null || bill.DCLASS == "") { error = error + "|MBLNO:" + bill.MBLNO + " DANGEROUS CLASS Can't Empty"; } if (bill.DUNNO == null || bill.DUNNO == "") { error = error + "|MBLNO:" + bill.MBLNO + "UNDG NO. Can't Empty"; } } if (bill.CARGOID == "R") { if (bill.TEMPSET == null || bill.TEMPSET == "") { error = error + "|MBLNO:" + bill.MBLNO + "设置温度不能为空"; } } var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'"); if (ctnlist.Count == 0) { error = error + "|MBLNO:" + bill.MBLNO + "CTN DETTAIL Can't Empty"; }; foreach (var ctn in ctnlist) { if (ctn.CNTRNO == null || ctn.CNTRNO == "") { error = error + "|MBLNO:" + bill.MBLNO + "CNTRNO Can't Empty"; } } if (StringIsChinese(bill.SHIPPER)) { error = error + "|MBLNO:" + bill.MBLNO + "SHIPPER Can't Contains Special Word"; } if (StringIsChinese(bill.CONSIGNEE)) { error = error + "|MBLNO:" + bill.MBLNO + "CONSIGNEE Can't Contains Special Word"; } if (StringIsChinese(bill.NOTIFYPARTY)) { error = error + "|MBLNO:" + bill.MBLNO + "NOTIFYPARTY Can't Contains Special Word"; } if (StringIsChinese(bill.MARKS)) { error = error + "|MBLNO:" + bill.MBLNO + "MARKS Can't Contains Special Word"; } if (StringIsChinese(bill.DESCRIPTION)) { error = error + "|MBLNO:" + bill.MBLNO + "DESCRIPTION Can't Contains Special Word"; } } return error; } public static string CreateEdiWD(List headData, string usercode, string path, string mblno, CodeFtpSet ftpset) { string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } FileStream f = new FileStream(filename, FileMode.Create); StreamWriter r = new StreamWriter(f, Encoding.Default); var icount = 0; var filerole = "9"; var isfirst = true; foreach (var bill in headData) { if (isfirst) { r.WriteLine("00:PENSUM:MANIFEST:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyyyMMddHHmm") + ":" + bill.PORTLOADID+"::2.0'"); icount = icount + 1; r.WriteLine("10:" + GetVesselEdi(bill.VESSEL) + ":" + bill.VESSEL + "::" + bill.VOYNO + "::::" + GetDateStr(bill.ETD, "yyyyMMddHHmmss") + ":" + bill.PORTLOADID + ":" + bill.PORTLOAD+":::1'"); // r.WriteLine("10:" + GetVesselEdi(bill.VESSEL) + ":" + bill.VESSEL + "::" + bill.VOYNO + ":::" + GetDateStr(bill.ETA, "yyyyMMdd") + ":" + GetDateStr(bill.ETD, "yyyyMMdd") + "::::::1'"); isfirst = false; r.WriteLine("11:" + ftpset.SENDCODE + ":" + ftpset.SENDNAME + ":::" + GetDateStr(bill.ETD, "yyyyMMddHHmmss") + "::'"); icount = icount + 2; } // r.WriteLine("11:" + ftpset.SENDCODE + ":SOFAST SHIPPING LIMITED::4227163583837::'"); //var xtype = "PO"; // if (bill.BLFRT.IndexOf("FREIGHT COLLECT") >= 0) // xtype = "CC"; // r.WriteLine("12:" + bill.MBLNO.Trim() + "::::::" + bill.PORTLOADID + ":" + bill.PORTLOAD // + ":10:" + xtype + ":" + GetDateStr(bill.ETD, "yyyyMMdd") + "::::::" + bill.PKGS.ToString() +":"+ // GetPackageEDICode(bill.KINDPKGS) + ":" + string.Format("{0:0.0000}", bill.KGS) + ":" + bill.CBM.ToString() + ":0.00:::::001'"); // r.WriteLine("13:" + bill.PORTDISCHARGEID + ":" + bill.PORTDISCHARGE // + ":" + bill.DESTINATIONID + ":" + bill.DESTINATION + "::::" + bill.ISSUEPLACE + "::'"); var xtype = "P"; if (bill.BLFRT.IndexOf("FREIGHT COLLECT") >= 0) xtype = "C"; r.WriteLine("12:" + bill.MBLNO.Trim() + "::::" + bill.PORTLOADID + ":" + bill.PORTLOAD + ":" + bill.PORTLOADID + ":" + bill.PORTLOAD + ":" + bill.SERVICE + ":" + xtype + ":" + GetDateStr(bill.ETD, "yyyyMMddHHmmss") + "::::::::::'"); r.WriteLine("13:" + bill.PORTDISCHARGEID + ":" + bill.PORTDISCHARGE + ":" + bill.PORTDISCHARGEID + ":" + bill.PORTDISCHARGE + "::::" + bill.ISSUEPLACE + "::::'"); var Shipping = ""; Shipping = formatEdiStr(bill.SHIPPER); List ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("16:" + formatEdiStr(bill.SHIPPERCODE) + ":" + formatListStr(ShippingList, 2) + formatEdiStr(bill.SHIPPERTEL)+ ":::::::" + bill.SHIPPERCOUNTRY + ":" + ":'"); // r.WriteLine("\"16::" + ShippingList[0] + "\r:" + ShippingList[0] + "::::::::'\""); } Shipping = formatEdiStr(bill.CONSIGNEE); ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("17:" + formatEdiStr(bill.CONSIGNEECODE) + ":" + formatListStr(ShippingList, 2) + formatEdiStr(bill.CONSIGNEETEL)+ ":::::::" + bill.CONSIGNEECOUNTRY + ":" + ":'"); } Shipping = formatEdiStr(bill.NOTIFYPARTY); ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("18:" + formatEdiStr(bill.NOTIFYPARTYCODE) + ":" + formatListStr(ShippingList, 2) + formatEdiStr(bill.NOTIFYPARTYTEL)+ ":::::::" + bill.NOTIFYPARTYCOUNTRY + ":" + ":'"); // r.WriteLine("\"18::" + ShippingList[0] + "\r:" + ShippingList[0] + "::::::::'\""); } var cargoid = bill.CARGOID; if (cargoid == "") cargoid = "S"; r.WriteLine("41:1::" + bill.PKGS.ToString() + ":" + GetPackageEDICode(bill.KINDPKGS) + ":" + bill.KINDPKGS + ":" + bill.KGS.ToString() + "::" + bill.CBM.ToString() + "::::'"); icount = icount + 6; if (cargoid=="D"){ r.WriteLine("43::" + bill.DCLASS + ":none:" + bill.DUNNO + ":none:::::::::'"); icount = icount + 1; } Shipping = formatEdiStr(bill.MARKS); ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("44::" + formatListStr(ShippingList, 5) + "'"); icount = icount + 1; } Shipping = formatEdiStr(bill.DESCRIPTION); ShippingList = formatlengthStr(Shipping, 35); var strtemp = ""; var m = 0; if (ShippingList.Count != 0) { for (var i = 0; i < ShippingList.Count; i++) { if (m <= 4) { if (m == 0) strtemp = "47:" + ShippingList[i] + ":"; else { if (m == 4) strtemp = strtemp + ShippingList[i]; else strtemp = strtemp + ShippingList[i] + ":"; } } else { m =0; r.WriteLine(strtemp + "'"); strtemp = "47:" + ShippingList[i] + ":"; icount = icount + 1; } m = m + 1; } } if (strtemp != "") { r.WriteLine(strtemp + "'"); icount = icount + 1; }; var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'"); foreach (var ctn in ctnlist) { var ctnpkg ="0"; if (ctn.STATUS == "E") { ctnpkg ="1"; } else ctnpkg = ctn.PKGS.ToString(); r.WriteLine("51:1:" + ctn.CNTRNO + ":" + ctn.SEALNO + ":" + ctn.CTNALL + ":" + ctn.STATUS + ":" + ctnpkg + ":" + ctn.KGS.ToString() + "::"+ctn.CBM.ToString()+":::::::2'"); if (ctn.STATUS=="F") r.WriteLine("52:M:SH:"+ ctn.SEALNO + "'"); icount = icount + 2; } } icount = icount + 1; r.WriteLine("99:" + icount.ToString() + "'"); r.Close(); f.Close(); return filename; } public static string CreateEdiWD2(List headData, string usercode, string path, string mblno, CodeFtpSet ftpset) { string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } FileStream f = new FileStream(filename, FileMode.Create); StreamWriter r = new StreamWriter(f, Encoding.Default); var icount = 1; // filerole = "9C"; r.WriteLine("00:CN1101::9:" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ":1.0'"); var isfirst = true; foreach (var bill in headData) { if (isfirst) { r.WriteLine("10:" + GetVesselEdi(bill.VESSEL) + ":" + bill.VESSEL + "::" + bill.VOYNO + "::::" + GetDateStr(bill.ETD, "yyyyMMddHHmm") + "086:" + bill.PORTLOADID + ":" + bill.PORTLOAD + "::::1'"); r.WriteLine("11:SOF::" + ftpset.SENDCODE + "::" + bill.PORTDISCHARGEID + ":" + GetDateStr(bill.ETA, "yyyyMMddHHmm") + "086'"); isfirst = false; } var xtype = ""; var TransType = ""; if (bill.BLFRT.IndexOf("FREIGHT PREPAID") > 0) xtype = "PO"; else if (bill.BLFRT.IndexOf("FREIGHT COLLECT") > 0) xtype = "CC"; else xtype = "PO"; if (bill.SERVICE.ToUpper() == "PORT TO PORT") TransType = "10"; else if (bill.SERVICE.ToUpper() == "DOOR TO DOOR") TransType = "27"; else if (bill.SERVICE.ToUpper() == "DOOR TO PIER") TransType = "28"; else if (bill.SERVICE.ToUpper() == "PIER TO DOOR") TransType = "29"; else TransType = "10"; r.WriteLine("12:" + bill.MBLNO.Trim() + "::::" + bill.PLACEDELIVERYID + ":" + bill.PLACEDELIVERY + ":" + bill.PORTLOADID + ":" + bill.PORTLOAD + ":" + TransType + ":" + xtype + ":" + GetDateStr(bill.ETD, "yyyyMMddHHmm") + "086:::::" + bill.HBLNO + ":" + bill.PKGS.ToString() + ":" + GetPackageEDICode(bill.KINDPKGS).Trim() + ":" + bill.KGS.ToString() + ":::::::001'"); r.WriteLine("13:" + bill.PORTDISCHARGEID + ":" + bill.PORTDISCHARGE + ":" + bill.DESTINATIONID + ":" + bill.DESTINATION + ":::JP:::'" + GetDateStr(bill.ETA, "yyyyMMdd") + "::'"); r.WriteLine("14:JP'"); r.WriteLine("14:CN'"); var Shipping = ""; Shipping = formatEdiStr(bill.SHIPPER); List ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("16::" + formatListStr(ShippingList, 2) + "::::::::'"); } Shipping = formatEdiStr(bill.CONSIGNEE); ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("17::" + formatListStr(ShippingList, 2) + "::::::::'"); } Shipping = formatEdiStr(bill.NOTIFYPARTY); ShippingList = formatlengthStr(Shipping, 35); if (ShippingList.Count != 0) { r.WriteLine("18::" + formatListStr(ShippingList, 2) + "::::::::'"); } //Shipping = formatEdiStr(bill.AGENT); //ShippingList = formatlengthStr(Shipping, 35); //if (ShippingList.Count != 0) //{ // r.WriteLine("19::" + formatListStr(ShippingList, 6) + "'"); //} var cargoid = bill.CARGOID; if (cargoid == "") cargoid = "S"; r.WriteLine("41:1::" + bill.PKGS.ToString() + ":" + GetPackageEDICode(bill.KINDPKGS).Trim() + ":" + bill.KINDPKGS + ":" + bill.KGS.ToString() + ":" + bill.KGS.ToString() + ":" + bill.CBM.ToString() + ":::'"); icount = icount + 10; var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'"); foreach (var ctn in ctnlist) { r.WriteLine("42:" + ctn.CNTRNO + "'"); icount = icount + 1; } if (bill.CARGOID == "D") { r.WriteLine("43:" + bill.DCLASS + ":none:" + bill.DUNNO + ":none::::::::::::'"); icount = icount + 1; } else if (bill.CARGOID == "R") { r.WriteLine("43:::::::::C:" + bill.TEMPSET + "::::::'"); icount = icount + 1; } r.WriteLine("44:" + formatEdiStr(bill.MARKS).Replace("//r//n", " ") + "'"); r.WriteLine("47:" + formatEdiStr(bill.DESCRIPTION).Replace("//r//n", " ") + "'"); icount = icount + 2; foreach (var ctn in ctnlist) { var ctnstatus = "5"; if (ctn.STATUS == "E") ctnstatus = "4"; if (ctn.STATUS == "F") ctnstatus = "5"; r.WriteLine("51:1:" + ctn.CNTRNO + ":" + ctn.SEALNO + ":" + GetCtnEDICode(ctn.CTNALL) + ":" + ctnstatus + ":" + ctn.PKGS.ToString() + ":" + ctn.KGS.ToString() + ":0:" + ctn.CBM + ":::::::2'"); r.WriteLine("52:" + ctn.SEALNO + ":M:CA'"); icount = icount + 2; } } r.WriteLine("99:" + icount.ToString() + "'"); r.Close(); f.Close(); return filename; } #endregion #region 权限范围 public static string GetRangDAStr(string tb, string userid, string username, string companyid) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL "); strSql.Append(" from VW_User_Authority "); if (tb == "audit") { strSql.Append(" where [NAME]='OpSubSeaOrderList' and USERID='" + userid + "' and ISDELETE=0"); } else { strSql.Append(" where [NAME]='OpSubSeaOrderList' and USERID='" + userid + "' and ISDELETE=0"); } string visiblerange = "1"; string operaterange = "1"; string AUTHORITYID = ""; string VSSQL = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); VSSQL = Convert.ToString(reader["VSSQL"]); break; } reader.Close(); } if (visiblerange == "4") { str = " (INPUTBY='" + username + "')"; } else if (visiblerange == "3") { str = " (INPUTBY='" + username + "')"; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptname = rangeDa.GetDEPTNAME(userid); var userstr = new StringBuilder(); userstr.Append(" select SHOWNAME from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (INPUTBY='" + Convert.ToString(reader["SHOWNAME"]) + "' "; } else { str = str + " or INPUTBY='" + Convert.ToString(reader["SHOWNAME"]) + "' "; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "1") { str = " (COMPANYID='" + companyid + "' or AGENTID='" + companyid + "') "; } else if (visiblerange == "5") { var userstr = new StringBuilder(); userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (COMPANYID='" + Convert.ToString(reader["COMPANYID"]) + "' or AGENTID='" + Convert.ToString(reader["COMPANYID"]) + "' "; } else { str = str + " or COMPANYID='" + Convert.ToString(reader["COMPANYID"]) + "' or AGENTID='" + Convert.ToString(reader["COMPANYID"]) + "'"; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "6") { str = " EXISTS (select 1 from user_authority_range_op P left join [user] u on (u.GID=P.OPID) where (B.INPUTBY=U.SHOWNAME) AND P.userid='" + userid + "' and P.AUTHORITYID='" + AUTHORITYID + "' and P.VISIBLERANGE=1) "; } else if (visiblerange == "0") { str = " 1=1 "; } VSSQL = VSSQL.Trim(); if (!string.IsNullOrEmpty(VSSQL)) { if (!string.IsNullOrEmpty(str)) { str = str + " and (" + VSSQL + ") "; } else { str = " (" + VSSQL + ") "; } } return str; } #endregion #region 到货通知编码生成 public static string getREFNo(string strETD) { DateTime dETD = System.Convert.ToDateTime(strETD.Trim()); var strRULEYEAR = dETD.ToString("yy") + dETD.ToString("MM"); int iRULENOLENGTH =4; int inum = 0; var strCONTENT = "NOSIS" + strRULEYEAR; string strRULENOLENGTH = ""; T_ALL_DA T_ALL_DA = new T_ALL_DA(); strRULENOLENGTH = T_ALL_DA.GetStrSQL("REFNO", "select top 1 REFNO from [op_sub_seaorder_arrival] where REFNO like '" + strCONTENT.Trim() + "%' order by REFNO DESC"); if (strRULENOLENGTH == "") { strRULENOLENGTH = "1"; } else { strRULENOLENGTH = strRULENOLENGTH.Replace(strCONTENT.Trim(), ""); inum = int.Parse(strRULENOLENGTH.Trim()); inum = inum + 1; strRULENOLENGTH = inum.ToString(); } int j = iRULENOLENGTH - strRULENOLENGTH.Length; for (int i = 1; i <= j; i++) { strRULENOLENGTH = "0" + strRULENOLENGTH; } // strCONTENT = strCONTENT + strRULENOLENGTH; return strCONTENT; } #endregion public static bool ImportCtnData(string bsno, DataTable table, out string msg, out List headList) { var isSucess = false; msg = ""; headList = new List(); if (table == null) throw new ArgumentNullException("table"); var billNoList = new List(); Database db = DatabaseFactory.CreateDatabase(); var i = 1; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (DataRow row in table.Rows) { var custName = Convert.ToString(row["CONTAINER NO"]); if (custName != "") { #region 托单数据生成 // var size = Convert.ToString(row["SIZE"]); var type = Convert.ToString(row["TYPE"]); var ctnall=""; if (type == "DR" && size == "22") ctnall = "20GP"; else if (type == "DR" && (size == "42"||size == "40")) ctnall = "40GP"; else if (type == "HC" && (size == "42"||size == "40")) ctnall = "40HC"; else if (type == "HR" && (size == "42"||size=="40")) ctnall = "40HR"; else ctnall = size + type; var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + bsno + "','" + i.ToString() + "','" + ctnall + "','" + Convert.ToString(row["CONTAINER NO"]) + "','','',0,0,'','','" + Convert.ToString(row["STATUS"]) + "')"); db.ExecuteNonQuery(cmdInsert, tran); #endregion } i = i + 1; } tran.Commit(); getCNTRTOTAL(bsno, "op_sub_seaorder"); isSucess = true; } catch (Exception exception) { tran.Rollback(); isSucess = false; msg = exception.Message; } } return isSucess; } public static bool ImportCtnDataTOKYO(string bsno, DataTable table, out string msg, out List headList) { var isSucess = false; msg = ""; headList = new List(); if (table == null) throw new ArgumentNullException("table"); var billNoList = new List(); Database db = DatabaseFactory.CreateDatabase(); var i = 1; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (DataRow row in table.Rows) { var custName = Convert.ToString(row["AECTNO"]); if (custName != "") { #region 托单数据生成 // var size = Convert.ToString(row["AESIZE"]); var type = Convert.ToString(row["AETYPE"]); var ctnall = ""; if (type == "DR" && size == "22") ctnall = "20GP"; else if (type == "DR" && (size == "42" || size == "40" || size == "44")) ctnall = "40GP"; else if (type == "HC" && (size == "42" || size == "40" || size == "44")) ctnall = "40HC"; else if (type == "HR" && (size == "42" || size == "40" || size == "44")) ctnall = "40HR"; else ctnall = size + type; var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + bsno + "','" + i.ToString() + "','" + ctnall + "','" + Convert.ToString(row["AECTNO"]) + "','','',0,0,'','','')"); db.ExecuteNonQuery(cmdInsert, tran); #endregion } i = i + 1; } tran.Commit(); getCNTRTOTAL(bsno, "op_sub_seaorder"); isSucess = true; } catch (Exception exception) { tran.Rollback(); isSucess = false; msg = exception.Message; } } return isSucess; } public static bool ImportCtnDataOSAKA(string bsno, DataTable table, out string msg, out List headList) { var isSucess = false; msg = ""; headList = new List(); if (table == null) throw new ArgumentNullException("table"); var billNoList = new List(); Database db = DatabaseFactory.CreateDatabase(); var i = 1; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (DataRow row in table.Rows) { var custName = Convert.ToString(row["EACTNO"]); if (custName != "") { #region 托单数据生成 // var size = Convert.ToString(row["EASIZE"]); var type = Convert.ToString(row["EATYPE"]); var ctnall = ""; if (type == "DR" && (size == "22"||size == "20")) ctnall = "20GP"; else if (type == "RF" && (size == "22"||size == "20")) ctnall = "20RF"; else if (type == "DR" && (size == "42" || size == "40")) ctnall = "40GP"; else if (type == "DR" && (size == "40HC")) ctnall = "40HC"; else if (type == "RF" && (size == "40HC")) ctnall = "40HR"; else if (type == "RF" && (size == "40" || size == "42")) ctnall = "40RF"; else ctnall = size + type; var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + bsno + "','" + i.ToString() + "','" + ctnall + "','" + Convert.ToString(row["EACTNO"]) + "','','',0,0,'','','')"); db.ExecuteNonQuery(cmdInsert, tran); #endregion } i = i + 1; } tran.Commit(); getCNTRTOTAL(bsno, "op_sub_seaorder"); isSucess = true; } catch (Exception exception) { tran.Rollback(); isSucess = false; msg = exception.Message; } } return isSucess; } public static bool ImportCtnDataMOJI(string bsno, DataTable table, out string msg, out List headList) { var isSucess = false; msg = ""; headList = new List(); if (table == null) throw new ArgumentNullException("table"); var billNoList = new List(); Database db = DatabaseFactory.CreateDatabase(); var i = 1; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (DataRow row in table.Rows) { var custName = Convert.ToString(row["コンテナ番号"]); if (custName != "") { #region 托单数据生成 // var size = Convert.ToString(row["サイズ"]); var type = Convert.ToString(row["タイプ"]); var ctnall = ""; if (type == "DRY" && (size == "22" || size == "20")) ctnall = "20GP"; else if ((type == "RF" || type == "CR" || type == "HCR") && (size == "22" || size == "20")) ctnall = "20RF"; else if (type == "DRY" && (size == "42" || size == "40")) ctnall = "40GP"; else if (type == "HCD" && (size == "40")) ctnall = "40HC"; else if (type == "HCR" && (size == "40")) ctnall = "40HR"; else if ((type == "RF" || type == "CR") && (size == "40" || size == "42")) ctnall = "40RF"; else ctnall = size + type; var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + bsno + "','" + i.ToString() + "','" + ctnall + "','" + Convert.ToString(row["コンテナ番号"]) + "','','',0,0,'','','')"); db.ExecuteNonQuery(cmdInsert, tran); #endregion } i = i + 1; } tran.Commit(); getCNTRTOTAL(bsno, "op_sub_seaorder"); isSucess = true; } catch (Exception exception) { tran.Rollback(); isSucess = false; msg = exception.Message; } } return isSucess; } public static bool ImportCtnDataYOKOHAMA(string bsno, DataTable table, out string msg, out List headList) { var isSucess = false; msg = ""; headList = new List(); if (table == null) throw new ArgumentNullException("table"); var billNoList = new List(); Database db = DatabaseFactory.CreateDatabase(); var i = 1; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (DataRow row in table.Rows) { var custName = Convert.ToString(row["Container No#"]); if (custName != "") { #region 托单数据生成 // var size = Convert.ToString(row["Size/Type"]); var type = Convert.ToString(row["F4"]); var ctnall = ""; if (type == "DRY" && (size == "22" || size == "20")) ctnall = "20GP"; else if ((type == "RF" || type == "CR" || type == "F/R") && (size == "22" || size == "20")) ctnall = "20RF"; else if ((type == "O/T") && (size == "22" || size == "20")) ctnall = "20OT"; else if (type == "DRY" && (size == "42" || size == "40")) ctnall = "40GP"; else if (type == "HCD" && (size == "40")) ctnall = "40HC"; else if (type == "HCR" && (size == "40")) ctnall = "40HR"; else if ((type == "RF" || type == "F/R") && (size == "40" || size == "42")) ctnall = "40RF"; else if ((type == "O/T") && (size == "42" || size == "40")) ctnall = "40OT"; else ctnall = size + type; var cmdInsert = db.GetSqlStringCommand(@"insert into op_seaorder_ctn (CTN_ID,BSNO,CTNCODE,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,CTNSOURCE,STATUS) values (newid(),'" + bsno + "','" + i.ToString() + "','" + ctnall + "','" + Convert.ToString(row["Container No#"]) + "','','',0,0,'','','')"); db.ExecuteNonQuery(cmdInsert, tran); #endregion } i = i + 1; } tran.Commit(); getCNTRTOTAL(bsno, "op_sub_seaorder"); isSucess = true; } catch (Exception exception) { tran.Rollback(); isSucess = false; msg = exception.Message; } } return isSucess; } } }