/******************************************************************************** ** auth: DBS ** date: 2018/11/27 14:17:07 ** desc: 尚未编写描述 ** Ver.: V1.0.0 *********************************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using HH.WMS.Common; using HH.WMS.DAL; using HH.WMS.DAL.Algorithm; using HH.WMS.DAL.AllQuery; using HH.WMS.DAL.Basic; using HH.WMS.Entitys; using HH.WMS.Entitys.Algorithm; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Check; using HH.WMS.Entitys.Entitys; namespace HH.WMS.BLL.AllQuery { public class InventoryBll : DapperBaseBLL { #region 查询出入库业务 /// /// 查询出入库业务 /// /// /// /// /// /// /// [Hanhe(dbs)] created 2018/12/2 public OperateResult GetOrderBussList(int pageIndex, int pageSize, dynamic searchModel, string orderBy = "") { var v = new { CN_S_STOCK_CODE = Util.ToString(searchModel.CN_S_STOCK_CODE), CN_S_OP_TYPE = Util.ToString(searchModel.CN_S_OP_TYPE), CN_S_OP_NO = Util.ToStringInput(searchModel.CN_S_OP_NO), CN_S_ITEM_CODE = Util.ToStringInput(searchModel.CN_S_ITEM_CODE), CN_S_ITEM_NAME = Util.ToStringInput(searchModel.CN_S_ITEM_NAME), CN_S_MODEL = Util.ToStringInput(searchModel.CN_S_MODEL), CN_T_START = Util.ToString(searchModel.CN_T_START), CN_T_END = Util.ToString(searchModel.CN_T_END) }; string sqlWhere = " WHERE 1=1 "; if (!string.IsNullOrEmpty(v.CN_S_STOCK_CODE)) //仓库编码 { sqlWhere += " AND CN_S_STOCK_CODE = '" + v.CN_S_STOCK_CODE + "'"; } if (!string.IsNullOrEmpty(v.CN_S_OP_TYPE)) //业务号 { sqlWhere += " AND CN_S_OP_TYPE='" + v.CN_S_OP_TYPE + "'"; } if (!string.IsNullOrEmpty(v.CN_S_OP_NO)) //业务编码 { sqlWhere += " AND CN_S_OP_NO='" + v.CN_S_OP_NO + "'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_CODE)) //物料编码 { sqlWhere += " AND CN_S_ITEM_CODE like '%" + v.CN_S_ITEM_CODE + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_NAME)) //物料名称 { sqlWhere += " AND CN_S_ITEM_NAME like '%" + v.CN_S_ITEM_NAME + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_MODEL)) //规格 { sqlWhere += " AND CN_S_MODEL like '%" + v.CN_S_MODEL + "%'"; } if (!string.IsNullOrEmpty(v.CN_T_START)) { sqlWhere += " AND CN_T_CREATE >= '" + Convert.ToDateTime(v.CN_T_START.ToString()).ToString("yyyy-MM-dd") + "' "; } if (!string.IsNullOrEmpty(v.CN_T_END)) { sqlWhere += " AND CN_T_CREATE <= '" + Convert.ToDateTime(v.CN_T_END).ToString("yyyy-MM-dd") + "' "; } //if (!string.IsNullOrEmpty(Creates)) //操作员 //{ // sqlWhere += " AND CN_S_CREATOR_BY='" + Creates + "'"; //} //if (!string.IsNullOrEmpty(Type)) //类型 //{ // sqlWhere += " AND CN_S_OP_TYPE='" + Type + "'"; //} ////开始时间 //if (!string.IsNullOrEmpty(StraDate)) //{ // sqlWhere += " AND CN_T_CREATE >= '" + StraDate + "' "; //} ////结束时间 //if (!string.IsNullOrEmpty(EndDate)) //{ // sqlWhere += " AND CN_T_CREATE <= DateAdd(dd, 1, '" + EndDate + "')"; //} orderBy = " order by CN_T_CREATE desc"; long total = 0; DataTable dt = CreateDAL().GetOrderBussList(pageIndex, pageSize, out total, sqlWhere, orderBy); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { TN_AB_STOCKEntity entity = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())); if (entity != null) dr["CN_S_STOCK_CODE"] = entity.CN_S_STOCK_NAME; } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion #region 查询库区 /// /// 查询库区 /// /// /// 是否非导出 /// 排序 /// /// [Hanhe(dbs)] created 2018/12/2 public OperateResult GetInventoryList(SearchModel searchModel, bool export, string orderBy = "") { var v = new { CN_S_STOCK_CODE = Util.ToString(searchModel.SearchCondition.CN_S_STOCK_CODE), CN_S_STOCK_AREA = Util.ToString(searchModel.SearchCondition.CN_S_STOCK_AREA), CN_S_ITEM_CODE = Util.ToString(searchModel.SearchCondition.CN_S_ITEM_CODE), CN_S_ITEM_NAME = Util.ToString(searchModel.SearchCondition.CN_S_ITEM_NAME), CN_S_MODEL = Util.ToString(searchModel.SearchCondition.CN_S_MODEL), CN_S_OP_NO = Util.ToString(searchModel.SearchCondition.CN_S_OP_NO), CN_S_STATE = Util.ToString(searchModel.SearchCondition.CN_S_STATE), CN_S_PRODUCTION_BATCH = Util.ToString(searchModel.SearchCondition.CN_S_PRODUCTION_BATCH), CN_S_OWNER = Util.ToString(searchModel.SearchCondition.CN_S_OWNER), showArea = Convert.ToBoolean(searchModel.SearchCondition.showArea), PageIndex = Util.ToInt(searchModel.PageIndex), PageSize = Util.ToInt(searchModel.PageSize), CN_S_LOT_NO = Util.ToString(searchModel.SearchCondition.CN_S_LOT_NO) }; long total = 0; DataTable dt = new DataTable(); if (!v.showArea) { dt = GetStockNotPageInventor(export, v, out total); Log.Info("InventoryBll", "true"); } else { dt = GetAreakNotPageInventor(export, v, out total); } dt.Columns.Add("CN_F_SAFETY_STOCK"); dt.Columns.Add("CN_S_STOCK_NAME"); dt.Columns.Add("CN_S_AREA_NAME"); OperateResult result = new OperateResult(); if (dt.Rows.Count > 0) { Log.Info("InventoryBll", "1"); //获取物料 List itemCodelist = dt.AsEnumerable().Select(x => x.Field("CN_S_ITEM_CODE")).ToList(); List items = CreateDAL().GetItemList(itemCodelist); Log.Info("InventoryBll", "2"); //获取库区 List arealist = CreateDAL().GetArea(v.CN_S_STOCK_CODE, 4); Log.Info("InventoryBll", "3"); for (int i = 0; i < dt.Rows.Count; i++) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_ITEM_CODE"].ToString())) { List item = items.Where(x => x.CN_S_ITEM_CODE.Equals(dt.Rows[i]["CN_S_ITEM_CODE"].ToString())).ToList(); dt.Rows[i]["CN_F_SAFETY_STOCK"] = item.Count == 0 ? "0" : item[0].CN_F_SAFETY_STOCK.ToString(); dt.Rows[i]["CN_F_PLANNED_QTY"] = item.Count == 0 ? "0" : item[0].CN_F_NW.ToString(); dt.Rows[i]["CN_S_MEASURE_UNIT"] = item.Count == 0 ? "" : item[0].CN_S_MEASURE_UNIT.ToString(); } Log.Info("InventoryBll", "4"); if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称 { dt.Rows[i]["CN_S_STOCK_NAME"] = GetStockName(dt.Rows[i]["CN_S_STOCK_CODE"].ToString().Trim()); } Log.Info("InventoryBll", "5"); if (v.showArea) { if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称 { AutoBomStockAreaEntity area = arealist.Find(x => x.CN_S_AREA_CODE.Equals(dt.Rows[i]["CN_S_STOCK_AREA"].ToString().Trim())); dt.Rows[i]["CN_S_AREA_NAME"] = area != null ? area.CN_S_AREA_NAME : ""; } } Log.Info("InventoryBll", "6"); } result.Status = ResultStatus.Success; result.Data = new { rows = dt, total = total }; } else { result.Status = ResultStatus.Success; } return result; } private DataTable GetStockNotPageInventor(bool page, dynamic v, out long total) { if (page) { Log.Info("InventoryBll", "GetStockNotPageInventor"); return CreateDAL>().GetPagingData(v.PageIndex, v.PageSize, out total, new List() { new SearchWhere(){key="CN_S_STOCK_CODE", sign= WhereSign.Eq, value=v.CN_S_STOCK_CODE}, new SearchWhere(){key="CN_S_OP_NO", sign= WhereSign.Eq, value=v.CN_S_OP_NO}, new SearchWhere(){key="CN_S_STATE", sign= WhereSign.Eq, value=v.CN_S_STATE}, new SearchWhere(){key="CN_S_ITEM_CODE", sign= WhereSign.Like, value=v.CN_S_ITEM_CODE}, new SearchWhere(){key="CN_S_ITEM_NAME", sign= WhereSign.Like, value=v.CN_S_ITEM_NAME}, new SearchWhere(){key="CN_S_PRODUCTION_BATCH", sign= WhereSign.Like, value=v.CN_S_PRODUCTION_BATCH}, new SearchWhere(){key="CN_S_MODEL", sign= WhereSign.Like, value=v.CN_S_MODEL}, new SearchWhere(){key="CN_F_QUANTITY", sign= WhereSign.Gt, value=0}, new SearchWhere(){key="CN_S_OWNER", sign= WhereSign.Eq, value=v.CN_S_OWNER}, new SearchWhere(){key="CN_S_LOT_NO", sign= WhereSign.Like, value=v.CN_S_LOT_NO} }, true, new { CN_S_ITEM_CODE = "%" + v.CN_S_ITEM_CODE + "%", CN_S_ITEM_NAME = "%" + v.CN_S_ITEM_NAME + "%", CN_S_MODEL = "%" + v.CN_S_MODEL + "%", CN_S_PRODUCTION_BATCH = "%" + v.CN_S_PRODUCTION_BATCH + "%", CN_S_OP_NO = v.CN_S_OP_NO, CN_S_STATE = v.CN_S_STATE, CN_S_STOCK_CODE = v.CN_S_STOCK_CODE, CN_F_QUANTITY = 0, CN_S_OWNER = v.CN_S_OWNER, CN_S_LOT_NO = "%" + v.CN_S_LOT_NO + "%" }, " ORDER BY CN_S_ITEM_CODE "); } else { total = 0; return CreateDAL>().GetData(new List() { new SearchWhere(){key="CN_S_STOCK_CODE", sign= WhereSign.Eq, value=v.CN_S_STOCK_CODE}, new SearchWhere(){key="CN_S_OP_NO", sign= WhereSign.Eq, value=v.CN_S_OP_NO}, new SearchWhere(){key="CN_S_STATE", sign= WhereSign.Eq, value=v.CN_S_STATE}, new SearchWhere(){key="CN_S_ITEM_CODE", sign= WhereSign.Like, value=v.CN_S_ITEM_CODE}, new SearchWhere(){key="CN_S_ITEM_NAME", sign= WhereSign.Like, value=v.CN_S_ITEM_NAME}, new SearchWhere(){key="CN_S_PRODUCTION_BATCH", sign= WhereSign.Like, value=v.CN_S_PRODUCTION_BATCH}, new SearchWhere(){key="CN_S_MODEL", sign= WhereSign.Like, value=v.CN_S_MODEL}, new SearchWhere(){key="CN_F_QUANTITY", sign= WhereSign.Gt, value=0}, new SearchWhere(){key="CN_S_OWNER", sign= WhereSign.Eq, value=v.CN_S_OWNER}, new SearchWhere(){key="CN_S_LOT_NO", sign= WhereSign.Like, value=v.CN_S_LOT_NO} }, true, new { CN_S_ITEM_CODE = "%" + v.CN_S_ITEM_CODE + "%", CN_S_ITEM_NAME = "%" + v.CN_S_ITEM_NAME + "%", CN_S_MODEL = "%" + v.CN_S_MODEL + "%", CN_S_PRODUCTION_BATCH = "%" + v.CN_S_PRODUCTION_BATCH + "%", CN_S_OP_NO = v.CN_S_OP_NO, CN_S_STATE = v.CN_S_STATE, CN_S_STOCK_CODE = v.CN_S_STOCK_CODE, CN_F_QUANTITY = 0, CN_S_OWNER = v.CN_S_OWNER, CN_S_LOT_NO = "%" + v.CN_S_LOT_NO + "%" }, " ORDER BY CN_S_ITEM_CODE "); } } private DataTable GetAreakNotPageInventor(bool page, dynamic v, out long total) { if (page) { return CreateDAL>().GetPagingData(v.PageIndex, v.PageSize, out total, new List() { new SearchWhere(){key="CN_S_STOCK_CODE", sign= WhereSign.Eq, value=v.CN_S_STOCK_CODE}, new SearchWhere(){key="CN_S_OP_NO", sign= WhereSign.Eq, value=v.CN_S_OP_NO}, new SearchWhere(){key="CN_S_STOCK_AREA", sign= WhereSign.Eq, value=v.CN_S_STOCK_AREA}, new SearchWhere(){key="CN_S_ITEM_CODE", sign= WhereSign.Like, value=v.CN_S_ITEM_CODE}, new SearchWhere(){key="CN_S_ITEM_NAME", sign= WhereSign.Like, value=v.CN_S_ITEM_NAME}, new SearchWhere(){key="CN_S_PRODUCTION_BATCH", sign= WhereSign.Like, value=v.CN_S_PRODUCTION_BATCH}, new SearchWhere(){key="CN_S_MODEL", sign= WhereSign.Like, value=v.CN_S_MODEL}, new SearchWhere(){key="CN_S_STATE", sign= WhereSign.Eq, value=v.CN_S_STATE}, new SearchWhere(){key="CN_F_QUANTITY", sign= WhereSign.Gt, value=0}, new SearchWhere(){key="CN_S_OWNER", sign= WhereSign.Eq, value=v.CN_S_OWNER}, new SearchWhere(){key="CN_S_LOT_NO", sign= WhereSign.Like, value=v.CN_S_LOT_NO} }, true, new { CN_S_ITEM_CODE = "%" + v.CN_S_ITEM_CODE + "%", CN_S_ITEM_NAME = "%" + v.CN_S_ITEM_NAME + "%", CN_S_MODEL = "%" + v.CN_S_MODEL + "%", CN_S_PRODUCTION_BATCH = "%" + v.CN_S_PRODUCTION_BATCH + "%", CN_S_OP_NO = v.CN_S_OP_NO, CN_S_STATE = v.CN_S_STATE, CN_S_STOCK_CODE = v.CN_S_STOCK_CODE, CN_S_STOCK_AREA = v.CN_S_STOCK_AREA, CN_S_OWNER = v.CN_S_OWNER, CN_F_QUANTITY = 0, CN_S_LOT_NO = "%" + v.CN_S_LOT_NO + "%" }, " ORDER BY CN_S_ITEM_CODE "); } else { total = 0; return CreateDAL>().GetData(new List() { new SearchWhere(){key="CN_S_STOCK_CODE", sign= WhereSign.Eq, value=v.CN_S_STOCK_CODE}, new SearchWhere(){key="CN_S_OP_NO", sign= WhereSign.Eq, value=v.CN_S_OP_NO}, new SearchWhere(){key="CN_S_STOCK_AREA", sign= WhereSign.Eq, value=v.CN_S_STOCK_AREA}, new SearchWhere(){key="CN_S_ITEM_CODE", sign= WhereSign.Like, value=v.CN_S_ITEM_CODE}, new SearchWhere(){key="CN_S_ITEM_NAME", sign= WhereSign.Like, value=v.CN_S_ITEM_NAME}, new SearchWhere(){key="CN_S_PRODUCTION_BATCH", sign= WhereSign.Like, value=v.CN_S_PRODUCTION_BATCH}, new SearchWhere(){key="CN_S_MODEL", sign= WhereSign.Like, value=v.CN_S_MODEL}, new SearchWhere(){key="CN_S_STATE", sign= WhereSign.Eq, value=v.CN_S_STATE}, new SearchWhere(){key="CN_F_QUANTITY", sign= WhereSign.Gt, value=0}, new SearchWhere(){key="CN_S_OWNER", sign= WhereSign.Eq, value=v.CN_S_OWNER}, new SearchWhere(){key="CN_S_LOT_NO", sign= WhereSign.Like, value=v.CN_S_LOT_NO} }, true, new { CN_S_ITEM_CODE = "%" + v.CN_S_ITEM_CODE + "%", CN_S_ITEM_NAME = "%" + v.CN_S_ITEM_NAME + "%", CN_S_MODEL = "%" + v.CN_S_MODEL + "%", CN_S_PRODUCTION_BATCH = "%" + v.CN_S_PRODUCTION_BATCH + "%", CN_S_OP_NO = v.CN_S_OP_NO, CN_S_STATE = v.CN_S_STATE, CN_S_STOCK_CODE = v.CN_S_STOCK_CODE, CN_S_STOCK_AREA = v.CN_S_STOCK_AREA, CN_S_OWNER = v.CN_S_OWNER, CN_F_QUANTITY = 0, CN_S_LOT_NO = "%" + v.CN_S_LOT_NO + "%" }, " ORDER BY CN_S_ITEM_CODE "); } } #endregion #region 汇总指定日期内的出入库业务量 /// /// 汇总指定日期内的出入库业务量 /// /// /// /// [Hanhe(dbs)] created 2018-12-21 public DataTable GetBussLine(int day) { DataTable dt = CreateDAL().GetBussLine(day); return dt; } #endregion #region 获取货位的历史上下架记录 /// /// 获取货位的历史上下架记录 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 public OperateResult GetLocationHistory(SearchModel searchModel) { long total = 0; DataTable dt = CreateDAL().GetLocationHistory(searchModel, out total); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_S_STOCK_AREA"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStockName(dr["CN_S_STOCK_CODE"].ToString().Trim()); dr["CN_S_STOCK_AREA"] = GetAreaName(dr["CN_S_STOCK_AREA"].ToString().Trim()); } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion #region 获取货位的历史上下架记录 巨星 /// /// 获取货位的历史上下架记录 /// /// /// /// [Hanhe(DBS)] CREATED BY 2018-12-03 public OperateResult GetLocationHistoryJx(SearchModel searchModel) { long total = 0; DataTable dt = CreateDAL().GetLocationHistoryJx(searchModel, out total); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_S_STOCK_AREA"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStockName(dr["CN_S_STOCK_CODE"].ToString().Trim()); dr["CN_S_STOCK_AREA"] = GetAreaName(dr["CN_S_STOCK_AREA"].ToString().Trim()); } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion //public OperateResult HistoryLine(SearchModel searchModel) //{ // DataTable dt = CreateDAL().HistoryLine(searchModel); // return OperateResult.Succeed(null, dt); //} #region 查询盘点报表 /// /// 查询盘点报表 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 public OperateResult GetCheckDtl(SearchModel searchModel) { long total = 0; var v = new { CN_S_STOCK_CODE = Util.ToString(searchModel.SearchCondition.CN_S_STOCK_CODE), CN_S_OP_NO = Util.ToStringInput(searchModel.SearchCondition.CN_S_OP_NO), CN_S_LOCATION_CODE = Util.ToStringInput(searchModel.SearchCondition.CN_S_LOCATION_CODE), CN_T_START = Util.ToString(searchModel.SearchCondition.CN_T_START), CN_T_END = Util.ToString(searchModel.SearchCondition.CN_T_END), }; string strWhere = ""; if (!string.IsNullOrEmpty(v.CN_S_STOCK_CODE)) { strWhere += " and b.CN_S_STOCK_CODE='" + v.CN_S_STOCK_CODE + "'"; } if (!string.IsNullOrEmpty(v.CN_S_OP_NO)) { strWhere += " and b.CN_S_OP_NO='" + v.CN_S_OP_NO + "'"; } if (!string.IsNullOrEmpty(v.CN_S_LOCATION_CODE)) { strWhere += " and CN_S_LOCATION_CODE like '%" + v.CN_S_LOCATION_CODE + "%'"; } if (!string.IsNullOrEmpty(v.CN_T_START)) { strWhere += " and convert(date,b.CN_T_CREATE) >= '" + Convert.ToDateTime(v.CN_T_START.ToString()).ToString("yyyy-MM-dd") + "'"; } if (!string.IsNullOrEmpty(v.CN_T_END)) { strWhere += " and convert(date,b.CN_T_CREATE) <= '" + Convert.ToDateTime(v.CN_T_END).ToString("yyyy-MM-dd") + "'"; } DataTable dt = CreateDAL().GetCheckResultDtl(searchModel.PageIndex, searchModel.PageSize, strWhere, out total); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())).CN_S_STOCK_NAME; } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion #region 汇总查询盘点结果汇总数 /// /// 汇总查询盘点结果汇总数 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 public OperateResult GetCheckDtlTotal(SearchModel searchModel) { var v = new { CN_S_STOCK_CODE = Util.ToString(searchModel.SearchCondition.CN_S_STOCK_CODE), CN_S_OP_NO = Util.ToStringInput(searchModel.SearchCondition.CN_S_OP_NO), CN_S_LOCATION_CODE = Util.ToStringInput(searchModel.SearchCondition.CN_S_LOCATION_CODE), CN_S_ITEM_CODE = Util.ToStringInput(searchModel.SearchCondition.CN_S_ITEM_CODE), CN_S_ITEM_NAME = Util.ToStringInput(searchModel.SearchCondition.CN_S_ITEM_NAME), CN_T_START = Util.ToString(searchModel.SearchCondition.CN_T_START), CN_T_END = Util.ToString(searchModel.SearchCondition.CN_T_END), }; string strWhere = ""; if (!string.IsNullOrEmpty(v.CN_S_STOCK_CODE)) { strWhere += " and b.CN_S_STOCK_CODE='" + v.CN_S_STOCK_CODE + "'"; } if (!string.IsNullOrEmpty(v.CN_S_OP_NO)) { strWhere += " and b.CN_S_OP_NO like '%" + v.CN_S_OP_NO + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_LOCATION_CODE)) { strWhere += " and CN_S_LOCATION_CODE like '%" + v.CN_S_LOCATION_CODE + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_CODE)) { strWhere += " and CN_S_ITEM_CODE like '%" + v.CN_S_ITEM_CODE + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_NAME)) { strWhere += " and CN_S_ITEM_NAME like '%" + v.CN_S_ITEM_NAME + "%'"; } if (!string.IsNullOrEmpty(v.CN_T_START)) { strWhere += " and convert(date,b.CN_T_CREATE) >= '" + Convert.ToDateTime(v.CN_T_START.ToString()).ToString("yyyy-MM-dd") + "'"; } if (!string.IsNullOrEmpty(v.CN_T_END)) { strWhere += " and convert(date,b.CN_T_CREATE) <= '" + Convert.ToDateTime(v.CN_T_END).ToString("yyyy-MM-dd") + "'"; } string totalSql = @"SELECT 'Money'=0.00,CN_S_ITEM_CODE,SUM(CN_F_QUANTITY) CN_F_QUANTITY,SUM(CN_F_CHECK_QTY) CN_F_CHECK_QTY FROM tn_wm_check_list a join tn_wm_check_mst b on a.CN_S_OP_NO= b.CN_S_OP_NO where b.CN_S_STATE='已完成' " + strWhere + " group by CN_S_ITEM_CODE"; DataTable totalDt = CreateDAL().ExecuteDataTable(totalSql); List items = CreateDAL().GetItemList(totalDt.AsEnumerable().Select(x => x.Field("CN_S_ITEM_CODE")).ToList()); TN_AB_B_ITEM_PRICEEntity item; totalDt.Columns["Money"].ReadOnly = false; foreach (DataRow dr in totalDt.Rows) { item = items.Find(x => x.CN_S_ITEM_CODE.Equals(dr["CN_S_ITEM_CODE"])); if (item != null) dr["Money"] = Convert.ToDecimal(item.CN_F_PRICE) * (Convert.ToDecimal(dr["CN_F_CHECK_QTY"].ToString()) - Convert.ToDecimal(dr["CN_F_QUANTITY"].ToString())); } return OperateResult.Succeed("", new { CN_F_QUANTITY = totalDt.AsEnumerable().Sum(y => y.Field("CN_F_QUANTITY")), CN_F_CHECK_QTY = totalDt.AsEnumerable().Sum(y => y.Field("CN_F_CHECK_QTY")) - totalDt.AsEnumerable().Sum(y => y.Field("CN_F_QUANTITY")), Money = totalDt.AsEnumerable().Sum(y => y.Field("Money")) }); } #endregion #region 物料盘点汇总 /// /// 物料盘点汇总 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 public OperateResult GetItemCheckDtl(SearchModel searchModel) { long total = 0; var v = new { CN_S_STOCK_CODE = Util.ToString(searchModel.SearchCondition.CN_S_STOCK_CODE), CN_S_ITEM_CODE = Util.ToStringInput(searchModel.SearchCondition.CN_S_ITEM_CODE), CN_S_ITEM_NAME = Util.ToStringInput(searchModel.SearchCondition.CN_S_ITEM_NAME), CN_S_MODEL = Util.ToStringInput(searchModel.SearchCondition.CN_S_MODEL) }; string strWhere = ""; if (!string.IsNullOrEmpty(v.CN_S_STOCK_CODE)) { strWhere += " and b.CN_S_STOCK_CODE='" + v.CN_S_STOCK_CODE + "'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_CODE)) { strWhere += " and CN_S_ITEM_CODE like '%" + v.CN_S_ITEM_CODE + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_ITEM_NAME)) { strWhere += " and CN_S_ITEM_NAME like '%" + v.CN_S_ITEM_NAME + "%'"; } if (!string.IsNullOrEmpty(v.CN_S_MODEL)) { strWhere += " and CN_S_MODEL like '%" + v.CN_S_MODEL + "%'"; } DataTable dt = CreateDAL().GetItemCheckResultDtl(searchModel.PageIndex, searchModel.PageSize, strWhere, out total); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())).CN_S_STOCK_NAME; } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion #region 查询货位库存 /// /// 查询货位库存 /// /// /// /// [Hanhe(DBS)] CREATED BY 2019-1-10 public OperateResult GetLocationInventoryList(SearchModel searchModel, bool export) { long total = 0; DataTable dt = CreateDAL().GetLocationInventoryList(searchModel, out total, export); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_S_STOCK_AREA"].ReadOnly = false; dt.Columns["CN_F_PLANNED_QTY"].ReadOnly = false; dt.Columns["CN_F_PLANNED_QTY"].MaxLength = 32; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())).CN_S_STOCK_NAME; dr["CN_S_STOCK_AREA"] = GetAreaName(dr["CN_S_STOCK_AREA"].ToString().Trim()); try { var item = CreateDAL().GetItemEntity(dr["CN_S_ITEM_CODE"].ToString()); dr["CN_F_PLANNED_QTY"] = item.CN_F_NW.ToString(); } catch (Exception ex) { Log.Detail("报错", ex.Message); dr["CN_F_PLANNED_QTY"] = 0; } } return OperateResult.Succeed(null, new { rows = dt, total = total }); } public OperateResult GetLocationInventoryListJx(SearchModel searchModel, bool export) { long total = 0; DataTable dt = CreateDAL().GetLocationInventoryListJx(searchModel, out total, export); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_S_STOCK_AREA"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())).CN_S_STOCK_NAME; dr["CN_S_STOCK_AREA"] = GetAreaName(dr["CN_S_STOCK_AREA"].ToString().Trim()); } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #endregion public OperateResult GetInventorySummary(SearchModel searchModel) { long total = 0; DataTable dt = CreateDAL().GetInventorySummary(searchModel, out total); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_F_PACKING_QTY"].ReadOnly = false; //dt.Columns["CN_S_STOCK_AREA"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { //领料出库 if ("正常出库".Equals(dr["CN_S_EXT2"].ToString())) { var upHistorys = CreateDAL>().GetList(new { CN_S_EXT2 = "退料入库", CN_S_ITEM_CODE = dr["CN_S_ITEM_CODE"].ToString(), CN_S_MODEL = dr["CN_S_MODEL"].ToString(), CN_S_LOT_NO = dr["CN_S_LOT_NO"].ToString() }); if (upHistorys != null) { if (upHistorys.Count() > 0) { foreach (var upHistory in upHistorys) { dr["CN_F_PACKING_QTY"] = Convert.ToDecimal(dr["CN_F_PACKING_QTY"]) - upHistory.CN_F_PACKING_QTY; } } } } dr["CN_S_STOCK_CODE"] = GetStockName(dr["CN_S_STOCK_CODE"].ToString().Trim()); dr["CN_F_PACKING_QTY"] = Math.Round(Convert.ToDecimal(dr["CN_F_PACKING_QTY"])); } return OperateResult.Succeed(null, new { rows = dt, total = total }); } public OperateResult ExportInventorySummary(SearchModel searchModel) { long total = 0; DataTable dt = CreateDAL().ExportInventorySummary(searchModel); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; dt.Columns["CN_F_PACKING_QTY"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { if ("正常出库".Equals(dr["CN_S_EXT2"].ToString())) { var upHistorys = CreateDAL>().GetList(new { CN_S_EXT2 = "退料入库", CN_S_ITEM_CODE = dr["CN_S_ITEM_CODE"].ToString(), CN_S_MODEL = dr["CN_S_MODEL"].ToString(), CN_S_LOT_NO = dr["CN_S_LOT_NO"].ToString() }); if (upHistorys != null) { if (upHistorys.Count() > 0) { foreach (var upHistory in upHistorys) { dr["CN_F_PACKING_QTY"] = Convert.ToDecimal(dr["CN_F_PACKING_QTY"]) - upHistory.CN_F_PACKING_QTY; } } } } dr["CN_S_STOCK_CODE"] = GetStockName(dr["CN_S_STOCK_CODE"].ToString().Trim()); dr["CN_F_PACKING_QTY"] = Math.Round(Convert.ToDecimal(dr["CN_F_PACKING_QTY"])); } return OperateResult.Succeed(null, new { rows = dt, total = total }); } #region 更新记录 /// /// 更新记录 /// /// public List GetVersionLog() { return CreateDAL().GetVersionLog(); } #endregion public OperateResult GetHistory(SearchModel searchModel) { DataTable dt = CreateDAL().GetHistory(searchModel); dt.Columns.Add("CN_F_ALL_QTY", Type.GetType("System.String")); dt.Columns.Add("CN_N_ROW_NO", Type.GetType("System.String")); // dt.Columns.Add("CN_F_PLANNED_QTY", Type.GetType("System.String")); //dt.Columns.Add("CN_S_SELECT", Type.GetType("System.String")); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; //decimal fWeight = 0; if (dt.Rows.Count > 0) { Log.Info("InventoryBll", "1"); //获取物料 // List itemCodelist = dt.AsEnumerable().Select(x => x.Field("CN_S_ITEM_CODE")).ToList(); // List items = CreateDAL().GetItemList(itemCodelist); foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStockName(dr["CN_S_STOCK_CODE"].ToString().Trim()); //if (!string.IsNullOrEmpty(dr["CN_S_ITEM_CODE"].ToString())) //{ // List item = items.Where(x => x.CN_S_ITEM_CODE.Equals(dr["CN_S_ITEM_CODE"].ToString())).ToList(); // fWeight = item.Count == 0 ? 0 : item[0].CN_F_NW; // if(fWeight <=0) // { // dr["CN_F_PLANNED_QTY"] = "0"; // } // else // { // dr["CN_F_PLANNED_QTY"] =Math.Round(decimal.Parse(dr["CN_F_QUANTITY"].ToString())/ fWeight).ToString(); // } //} } } return OperateResult.Succeed("", dt); } public OperateResult SetPrintNo(dynamic data) { return CreateDAL().SetPrintNo(data); } public OperateResult CancelPrintNo(string orderNo, string orderType) { var result = CreateDAL().CancelPrintNo(orderNo, orderType); if (result.AffectedRows <= 0) { return OperateResult.Error("未找到需要取消的数据!"); } return result; } } }