using System; using System.Data; using System.Collections.Generic; using System.Text; using DSWeb.Areas.TruckMng.Models.MsWlBsAudit; using HcUtility.Comm; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.EntityDA; using DSWeb.Areas.CommMng.Models; namespace DSWeb.Areas.TruckMng.DAL.MsWlBsAudit { public partial class MsWlBsAuditDAL { #region Inquery DataList static public List GetDataList(string strCondition, string userid, string usercode, string orgcode, string sort=null) { var rangstr = GetRangDAStr("index", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append("BillType,"); strSql.Append("(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99028 and EnumValueID=vMsWlBizBill.BillType) as BillType_Ref"); strSql.Append(",BsType,"); strSql.Append("(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99025 and EnumValueID=vMsWlBizBill.BsType) as BsType_Ref"); strSql.Append(",BillNo,BillStatus,"); strSql.Append("(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99026 and EnumValueID=vMsWlBizBill.BillStatus) as BillStatus_Ref"); strSql.Append(",FeeStatus,"); strSql.Append("(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99027 and EnumValueID=vMsWlBizBill.FeeStatus) as FeeStatus_Ref"); strSql.Append(",GId,CustName,DispatchName,MblNo,EtDate,CustDate,TruckNo"); strSql.Append(",DrvName,ContainerNos,Remark,FuelQty,BsBillNo,DstArea,YardName"); strSql.Append(",FeeOpStatus,LoadPlace,Ton,DdCode,"); strSql.Append("(select CodeAndName from vMsTruckUser where UserCode=vMsWlBizBill.DdCode) as DdCode_Ref,"); strSql.Append("YardCode,(SELECT CODEANDNAME FROM VMSTRUCKCLIENT WHERE CUSTCODE=YARDCODE) AS YardCode_Ref,DGTYPE,DGTYPECODE,ContainerNo,"); strSql.Append("(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99035 and EnumValueID=vMsWlBizBill.FeeOpStatus) as FeeOpStatus_Ref"); strSql.Append(" ,DetiNation"); strSql.Append(" from vMsWlBizBill "); 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 CustDate,TruckNo"); } return SetData(strSql); } static public MsWlBizBill GetData(string condition, string userid, string usercode, string orgcode) { var list = GetDataList(condition,userid,usercode,orgcode); if (list.Count > 0) return list[0]; return new MsWlBizBill(); } 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()) { MsWlBizBill data = new MsWlBizBill(); #region Set DB data to Object data.BillType = Convert.ToString(reader["BillType"]); data.BillType_Ref = Convert.ToString(reader["BillType_Ref"]); data.BillNo = Convert.ToString(reader["BillNo"]); data.BillStatus = Convert.ToString(reader["BillStatus"]); data.BillStatus_Ref = Convert.ToString(reader["BillStatus_Ref"]); data.FeeStatus = Convert.ToString(reader["FeeStatus"]); data.FeeStatus_Ref = Convert.ToString(reader["FeeStatus_Ref"]); data.GId = Convert.ToString(reader["GId"]); data.CustName = Convert.ToString(reader["CustName"]); data.DispatchName = Convert.ToString(reader["DispatchName"]); data.MblNo = Convert.ToString(reader["MblNo"]); data.EtDate = Convert.ToString(reader["EtDate"]); data.CustDate = Convert.ToString(reader["CustDate"]); data.TruckNo = Convert.ToString(reader["TruckNo"]); data.LoadPlace = Convert.ToString(reader["LoadPlace"]); data.Ton = Convert.ToString(reader["Ton"]); data.DdCode_Ref = Convert.ToString(reader["DdCode_Ref"]); data.DrvName = Convert.ToString(reader["DrvName"]); data.ContainerNos = Convert.ToString(reader["ContainerNos"]); data.Remark = Convert.ToString(reader["Remark"]); data.FuelQty = Convert.ToDecimal(reader["FuelQty"]); data.BsBillNo = Convert.ToString(reader["BsBillNo"]); data.DstArea = Convert.ToString(reader["DstArea"]); data.YardName = Convert.ToString(reader["YardName"]); data.BsType = Convert.ToString(reader["BsType"]); data.BsType_Ref = Convert.ToString(reader["BsType_Ref"]); data.FeeOpStatus = Convert.ToString(reader["FeeOpStatus"]); data.FeeOpStatus_Ref = Convert.ToString(reader["FeeOpStatus_Ref"]); data.YardCode = Convert.ToString(reader["YardCode"]); data.YardCode_Ref = Convert.ToString(reader["YardCode_Ref"]); data.DGTYPE = Convert.ToString(reader["DGTYPE"]); data.DGTYPECODE = Convert.ToString(reader["DGTYPECODE"]); data.ContainerNo = Convert.ToString(reader["ContainerNo"]); data.DetiNation = Convert.ToString(reader["DetiNation"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion public static DBResult Lock(List billlist, string lockType, string newStatus) { var statusFieldName = string.Empty; if (lockType == "0") { statusFieldName = "FeeStatus"; } else if (lockType == "1") { statusFieldName = "BillStatus"; } var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var trans = conn.BeginTransaction(); try { var msg = string.Empty; var isSuccess = true; foreach (var bill in billlist) { string tableName; string billNo; if (bill.BillType == "0") //0-委托单 { tableName = "tMsWlBsHead"; billNo = bill.BsBillNo; } else if (bill.BillType == "1") //1-派车单 { tableName = "tMsWlPcHead"; billNo = bill.BillNo; } else throw new NotSupportedException("单据类型不合法"); var cmdGid = db.GetSqlStringCommand("select gid from " + tableName + " where BillNo=@BillNo"); db.AddInParameter(cmdGid, "@BillNo", DbType.String, billNo); var gId = Convert.ToString(db.ExecuteScalar(cmdGid, trans)); if (string.IsNullOrEmpty(gId)) { isSuccess = false; msg = "单据" + bill.BillNo + "已经不存在无法锁定"; break; } //费用锁定:整票所有费用全部审核通过才能锁定; var cmdRejectCount = db.GetSqlStringCommand("select count(*) from ch_fee where BsNo=@BsNo and FeeStatus<>@FeeStatus"); db.AddInParameter(cmdRejectCount, "@BsNo", DbType.String, gId); db.AddInParameter(cmdRejectCount, "@FeeStatus", DbType.Int32, 0); var notPassCount = Convert.ToInt32(db.ExecuteScalar(cmdRejectCount, trans)); if (notPassCount > 0) { isSuccess = false; msg = "单据" + billNo + "的费用没有全部审核通过,不允许锁定此单据的费用"; break; } var sql = "update " + tableName + " set " + statusFieldName + "='" + newStatus + "' where BillNo=@BillNo"; var cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@BillNo", DbType.String, bill.BillNo); db.ExecuteNonQuery(cmd, trans); } if (isSuccess) { trans.Commit(); result.Success = true; result.Message = "执行成功"; result.Data = statusFieldName; } else { trans.Rollback(); result.Success = false; result.Message = msg; } } catch (Exception) { trans.Rollback(); result.Success = false; result.Message = "执行出现异常,请重试"; } conn.Close(); } return result; } public static string GetRangDAStr(string tb, string userid, string usercode, string orgcode) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='modTruckAudit' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; 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"]); break; } reader.Close(); } if (visiblerange == "4") { str = "1=2"; } else if (visiblerange == "3") { if (tb == "index") { str = " UserCode='" + usercode + "'"; } else { str = " UPPER(OrgCode)='" + orgcode + "'"; } } else if (visiblerange == "2") { if (tb == "index") { var rangeDa = new RangeDA(); var companyid = rangeDa.GetCORPID(userid); var deptname = rangeDa.GetDEPTNAME(userid); str = " UserCode in (select codename from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"; } else { str = " UPPER(OrgCode)='" + orgcode + "'"; } } else if (visiblerange == "1") { str = " UPPER(OrgCode)='" + orgcode + "'"; } return str; } } }