/********************************************************************************
** 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;
}
}
}