using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HH.WMS.Entitys.Dto;
using HH.WMS.Entitys.Entitys;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.DAL.Basic
{
///
/// 仓库量表
///
public class TN_WM_B_STOCK_QTYDAL : DapperBaseDAL
{
///
/// 获取仓库量表
///
///
///
///
///
///
///
///
public OperateResult GetEnableCheckQty(int pageIndex, int pageSize, string stockCode, string stockArea, string itemCode, string owner)
{
string where = "";
if (!string.IsNullOrEmpty(itemCode))
where += " and CN_S_ITEM_CODE like '%" + itemCode + "%' ";
if (!string.IsNullOrEmpty(owner))
where += " and CN_S_OWNER ='" + owner + "'";
string sql = @"(SELECT
CN_S_STOCK_CODE,CN_S_OWNER,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,
CN_S_FIGURE_NO,CN_S_MODEL,CN_S_MEASURE_UNIT,sum(CN_F_QUANTITY) CN_F_QUANTITY
FROM tn_wm_b_stock_qty
where CN_S_STOCK_CODE=@CN_S_STOCK_CODE " + where + @"
group by CN_S_OWNER,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,
CN_S_STOCK_CODE,CN_S_FIGURE_NO,CN_S_MODEL,CN_S_MEASURE_UNIT ) t";
return ExecutePagingResult(sql, pageIndex, pageSize, " order by CN_S_ITEM_CODE", new { CN_S_STOCK_CODE = stockCode });
}
#region 升/降仓库库存
///
/// 升仓库库存
///
///
///
/// 是否默认货主
///
/// [HANHE(XDL)] CREATED BY 2018-11-15
public OperateResult AddStockQty(List stockQtyList, IDbTransaction trans, bool isDefaultOwner = false)
{
OperateResult result = new OperateResult();
foreach (var model in stockQtyList)
{
try
{
TN_WM_B_STOCK_QTYEntity.CheckNullValue(model);
string sqlWhere = " Where CN_S_STOCK_CODE='" + model.CN_S_STOCK_CODE
+ "' and CN_S_ITEM_CODE='" + model.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + model.CN_S_ITEM_STATE
+ "' and CN_S_LOT_NO='" + model.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + model.CN_S_PRODUCTION_BATCH
+ "' and CN_S_OWNER='" + (isDefaultOwner == true ? Constants.DefaultOwner : model.CN_S_OWNER.Trim()) + "'";
StringBuilder strSql = new StringBuilder();
strSql.Append(" if exists(select * from TN_WM_B_STOCK_QTY " + sqlWhere + " )");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=CN_F_QUANTITY+" + model.CN_F_QUANTITY + ",CN_F_ALLOC_QTY=CN_F_ALLOC_QTY+" + model.CN_F_ALLOC_QTY + " " + sqlWhere + "");
strSql.Append(" else ");
strSql.Append("insert into TN_WM_B_STOCK_QTY(");
strSql.Append("CN_GUID,CN_S_OWNER,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_LOT_NO,CN_S_STOCK_CODE,CN_F_QUANTITY,CN_F_ALLOC_QTY,CN_F_PLANNED_QTY,CN_F_PRELOCK_QTY,CN_S_TIMESTAMP,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,CN_S_PRODUCTION_BATCH)");
strSql.Append(" values (");
strSql.Append("@CN_GUID,@CN_S_OWNER,@CN_S_ITEM_CODE,@CN_S_ITEM_NAME,@CN_S_ITEM_STATE,@CN_S_LOT_NO,@CN_S_STOCK_CODE,@CN_F_QUANTITY,@CN_F_ALLOC_QTY,@CN_F_PLANNED_QTY,@CN_F_PRELOCK_QTY,@CN_S_TIMESTAMP,@CN_S_MODEL,@CN_S_FIGURE_NO,@CN_S_MEASURE_UNIT,@CN_S_PRODUCTION_BATCH)");
result = ExecuteTranSql(strSql.ToString(), new
{
CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
CN_S_OWNER = (isDefaultOwner == true ? Constants.DefaultOwner : model.CN_S_OWNER.Trim()),
CN_S_ITEM_CODE = model.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = model.CN_S_ITEM_NAME,
CN_S_ITEM_STATE = model.CN_S_ITEM_STATE,
CN_S_LOT_NO = model.CN_S_LOT_NO == null ? "" : model.CN_S_LOT_NO,
CN_S_STOCK_CODE = model.CN_S_STOCK_CODE,
CN_F_QUANTITY = model.CN_F_QUANTITY,
CN_F_ALLOC_QTY = 0,
CN_F_PLANNED_QTY = model.CN_F_PLANNED_QTY,
CN_F_PRELOCK_QTY = 0,
CN_S_TIMESTAMP = "",
CN_S_MODEL = model.CN_S_MODEL,
CN_S_FIGURE_NO = model.CN_S_FIGURE_NO,
CN_S_MEASURE_UNIT = model.CN_S_MEASURE_UNIT,
CN_S_PRODUCTION_BATCH = model.CN_S_PRODUCTION_BATCH == null ? "" : model.CN_S_PRODUCTION_BATCH
}, trans);
if (result.Status == ResultStatus.Error)
return result;
}
catch (Exception)
{
}
}
return result;
}
///
/// 降仓库库存
///
///
///
///
public OperateResult ReduceStockQty(List reduceStockQty, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (TN_WM_B_STOCK_QTYEntity model in reduceStockQty)
{
StringBuilder strSql = new StringBuilder();
string sqlWhere = " Where CN_S_STOCK_CODE='" + model.CN_S_STOCK_CODE
+ "' and CN_S_ITEM_CODE='" + model.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + model.CN_S_ITEM_STATE
+ "' and CN_S_LOT_NO='" + model.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + model.CN_S_PRODUCTION_BATCH
+ "' and CN_S_OWNER='" + model.CN_S_OWNER + "' ";
strSql.Append(" if exists(select CN_GUID from TN_WM_B_STOCK_QTY " + sqlWhere + " and CN_F_QUANTITY-" + model.CN_F_QUANTITY + ">0)");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=CN_F_QUANTITY-" + model.CN_F_QUANTITY + " " + sqlWhere + " ");
strSql.Append(" else ");
strSql.Append("DELETE FROM TN_WM_B_STOCK_QTY " + sqlWhere + " ");
Log.Info("降到货区仓库量表strSql", strSql.ToString());
result = ExecuteTranSql(strSql.ToString(), null, trans);
Log.Info("降到货区仓库量表影响行数", result.AffectedRows.ToString());
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
///
/// 降仓库库存和分配量
///
///
///
///
public OperateResult ReduceStockQtyAndAllocQty(List reduceStockQty, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (var model in reduceStockQty)
{
TN_WM_B_STOCK_QTYEntity.CheckNullValue(model);
StringBuilder strSql = new StringBuilder();
string sqlWhere = " Where CN_S_STOCK_CODE='" + model.CN_S_STOCK_CODE
+ "' and CN_S_ITEM_CODE='" + model.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + model.CN_S_ITEM_STATE
+ "' and CN_S_LOT_NO='" + model.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + model.CN_S_PRODUCTION_BATCH
+ "' and CN_S_OWNER='" + model.CN_S_OWNER.Trim() + "' ";
strSql.Append(" if exists(select CN_GUID from TN_WM_B_STOCK_QTY " + sqlWhere + " and CN_F_QUANTITY-" + model.CN_F_QUANTITY + ">0)");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=CN_F_QUANTITY-" + model.CN_F_QUANTITY + ",CN_F_ALLOC_QTY=CN_F_ALLOC_QTY-" + model.CN_F_QUANTITY + " " + sqlWhere + " ");
strSql.Append(" else ");
strSql.Append("DELETE FROM TN_WM_B_STOCK_QTY " + sqlWhere + " ");
result = ExecuteTranSql(strSql.ToString(), null, trans);
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
///
/// 降仓库库存和分配量
///
///
///
///
public OperateResult ReduceStockAllocQty(List reduceStockQty, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (var model in reduceStockQty)
{
TN_WM_B_STOCK_QTYEntity.CheckNullValue(model);
StringBuilder strSql = new StringBuilder();
string sqlWhere = " Where CN_S_STOCK_CODE='" + model.CN_S_STOCK_CODE
+ "' and CN_S_ITEM_CODE='" + model.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + model.CN_S_ITEM_STATE
+ "' and CN_S_LOT_NO='" + model.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + model.CN_S_PRODUCTION_BATCH
+ "' and CN_S_OWNER='" + model.CN_S_OWNER.Trim() + "' ";
strSql.Append(" if exists(select CN_GUID from TN_WM_B_STOCK_QTY " + sqlWhere + " and CN_F_ALLOC_QTY-" + model.CN_F_QUANTITY + ">=0)");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=CN_F_ALLOC_QTY-" + model.CN_F_QUANTITY + " " + sqlWhere + " ");
strSql.Append(" else ");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY =0 " + sqlWhere + " ");
result = ExecuteTranSql(strSql.ToString(), null, trans);
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
///
/// 降货主所在仓库量
///
///
///
///
public OperateResult ReduceOwnerStockQty(List StockQtyList, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (TN_WM_B_STOCK_QTYEntity model in StockQtyList)
{
StringBuilder strSql = new StringBuilder();
string sqlWhere = " Where CN_S_STOCK_CODE='" + model.CN_S_STOCK_CODE + @"'
and CN_S_ITEM_CODE='" + model.CN_S_ITEM_CODE + @"'
and CN_S_ITEM_STATE='" + model.CN_S_ITEM_STATE + @"'
and CN_S_LOT_NO='" + model.CN_S_LOT_NO + "' and CN_S_PRODUCTION_BATCH='" + model.CN_S_PRODUCTION_BATCH + "' and CN_S_OWNER='" + model.CN_S_OWNER.Trim() + "' ";
strSql.Append(" if exists(select * from TN_WM_B_STOCK_QTY " + sqlWhere + " and CN_F_QUANTITY-" + model.CN_F_QUANTITY + ">0)");
strSql.Append("Update TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=CN_F_QUANTITY-" + model.CN_F_QUANTITY + " " + sqlWhere + " ");
strSql.Append(" else ");
strSql.Append("DELETE FROM TN_WM_B_STOCK_QTY " + sqlWhere + " ");
Log.Info("降货主所在仓库量sqlWhere", sqlWhere);
Log.Info("降货主所在仓库量strSql", strSql.ToString());
result = ExecuteTranSql(strSql.ToString(), null, trans);
Log.Info("降货主所在仓库量表影响行数", result.AffectedRows.ToString());
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
#endregion
#region 升/降仓库分配量
///
/// 升仓库分配量
///
///
///
///
///
public OperateResult AddAllocQty(TN_WM_B_STOCK_QTYEntity stockQty , IDbTransaction trans, LogPara logPara)
{
string sql = " Update TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=CN_F_ALLOC_QTY+" + stockQty.CN_F_QUANTITY
+ " Where CN_S_ITEM_CODE='" + stockQty.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + stockQty.CN_S_ITEM_STATE
+ "' and CN_S_STOCK_CODE='" + stockQty.CN_S_STOCK_CODE
+ "' and CN_S_LOT_NO='" + stockQty.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + stockQty.CN_S_PRODUCTION_BATCH
+ "' ";
Log.Detail(logPara, "升仓库分配量执行SQL语句:" + sql);
var result = ExecuteTranSql(sql, null, trans);
return result;
}
///
/// 降仓库分配量
///
///
///
///
///
public OperateResult ReduceAllocQty(TN_WM_B_STOCK_QTYEntity stockQty, IDbTransaction trans, LogPara logPara)
{
string sql = " Update TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=CN_F_ALLOC_QTY-" + stockQty.CN_F_QUANTITY
+ " Where CN_S_ITEM_CODE='" + stockQty.CN_S_ITEM_CODE
+ "' and CN_S_ITEM_STATE='" + stockQty.CN_S_ITEM_STATE
+ "' and CN_S_STOCK_CODE='" + stockQty.CN_S_STOCK_CODE
+ "' and CN_S_LOT_NO='" + stockQty.CN_S_LOT_NO
+ "' and CN_S_PRODUCTION_BATCH='" + stockQty.CN_S_PRODUCTION_BATCH
+ "' ";
Log.Detail(logPara, "降仓库分配量执行SQL语句:" + sql);
var result = ExecuteTranSql(sql, null, trans);
return result;
}
#endregion
///
/// 修改库存编辑量
///
///
///
///
public OperateResult UpdateStockEditingQty(List stockList, IDbTransaction trans, string timeStamp = "")
{
if (!stockList.Any()) return OperateResult.Succeed();
string sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_EDITING_QTY=@CN_F_EDITING_QTY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp);
return ExecuteTranSql(sql, stockList, trans);
}
///
/// 修改库存分配量
///
///
///
///
public OperateResult UpdateStockAllocQty(List stockList, IDbTransaction trans, string timeStamp = "")
{
if (!stockList.Any()) return OperateResult.Succeed();
string sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp);
return ExecuteTranSql(sql, stockList, trans);
}
///
/// 修改库存数量
///
///
///
///
///
public OperateResult UpdateStockQty(List stockList, IDbTransaction trans, string timeStamp = "")
{
string sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)";
sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp);
return ExecuteTranSql(sql, stockList, trans);
}
///
/// 降库存
///
///
///
///
///
public OperateResult UpdateAllocQtyByLock(string lockType, List outLockList, IDbTransaction trans)
{
string sql = string.Empty;
if (lockType.Equals(Constants.Rule_OutOrder)) //根据出库单降库存
{
sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY = CN_F_ALLOC_QTY-@CN_F_QUANTITY,CN_F_QUANTITY=CN_F_QUANTITY-@CN_F_QUANTITY WHERE CN_GUID =@CN_S_TABLE_ID";
}
else if (lockType.Equals(Constants.Rule_SortingNo)) //根据分拣单降库存
{
sql = "UPDATE TN_WM_B_AREA_QTY SET CN_F_ALLOC_QTY = CN_F_ALLOC_QTY-@CN_F_QUANTITY,CN_F_QUANTITY=CN_F_QUANTITY-@CN_F_QUANTITY WHERE CN_GUID =@CN_S_TABLE_ID";
}
if (!string.IsNullOrEmpty(sql))
return ExecuteTranSql(sql, outLockList, trans);
return OperateResult.Succeed();
}
///
/// 修改多条数据库存量
///
///
///
///
public SqlExecuteResult UpdateListBysqlwhere(List list, DbTransaction trans)
{
SqlExecuteResult result = new SqlExecuteResult();
List cmdlist = new List();
foreach (TN_WM_B_STOCK_QTYEntity entity in list)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" if exists(select * from TN_WM_B_STOCK_QTY " + entity.SqlWhere + " )");
if (entity.CN_F_QUANTITY > entity.CN_F_ALLOC_QTY)
{
strSql.Append("UPDATE tn_wm_b_stock_qty SET CN_F_QUANTITY=CN_F_QUANTITY+:CN_F_QUANTITY WHERE CN_S_OWNER=:CN_S_OWNER AND CN_S_ITEM_CODE=:CN_S_ITEM_CODE AND CN_S_ITEM_STATE=:CN_S_ITEM_STATE AND CN_S_STOCK_CODE=:CN_S_STOCK_CODE AND CN_S_LOT_NO=:CN_S_LOT_NO AND CN_S_PRODUCTION_BATCH=:CN_S_PRODUCTION_BATCH");
entity.CN_F_QUANTITY = entity.CN_F_QUANTITY - entity.CN_F_ALLOC_QTY;
}
else
{
strSql.Append("UPDATE tn_wm_b_stock_qty SET CN_F_QUANTITY=CN_F_QUANTITY-:CN_F_QUANTITY WHERE CN_S_OWNER=:CN_S_OWNER AND CN_S_ITEM_CODE=:CN_S_ITEM_CODE AND CN_S_ITEM_STATE=:CN_S_ITEM_STATE AND CN_S_STOCK_CODE=:CN_S_STOCK_CODE AND CN_S_LOT_NO=:CN_S_LOT_NO AND CN_S_PRODUCTION_BATCH=:CN_S_PRODUCTION_BATCH");
entity.CN_F_QUANTITY = entity.CN_F_ALLOC_QTY - entity.CN_F_QUANTITY;
}
strSql.Append(" else ");
strSql.Append("insert into TN_WM_B_STOCK_QTY(");
strSql.Append("CN_GUID,CN_S_OWNER,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_LOT_NO,CN_S_STOCK_CODE,CN_F_QUANTITY,CN_F_ALLOC_QTY,CN_F_PLANNED_QTY,CN_F_PRELOCK_QTY,CN_S_PRODUCTION_BATCH,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT)");
strSql.Append(" values (");
strSql.Append(":CN_GUID,:CN_S_OWNER,:CN_S_ITEM_CODE,:CN_S_ITEM_NAME,:CN_S_ITEM_STATE,:CN_S_LOT_NO,:CN_S_STOCK_CODE,:CN_F_QUANTITY,:CN_F_ALLOC_QTY,:CN_F_PLANNED_QTY,:CN_F_PRELOCK_QTY,:CN_S_PRODUCTION_BATCH,:CN_S_MODEL,:CN_S_FIGURE_NO,:CN_S_MEASURE_UNIT)");
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_GUID", ComDbType.STRING, entity.CN_GUID);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_CODE", ComDbType.STRING, entity.CN_S_STOCK_CODE);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.INT32, entity.CN_F_QUANTITY);
DataAccess.AddInParameter(cmd, "CN_F_ALLOC_QTY", ComDbType.DECIMAL, 0);
DataAccess.AddInParameter(cmd, "CN_F_PLANNED_QTY", ComDbType.DECIMAL, entity.CN_F_PLANNED_QTY);
DataAccess.AddInParameter(cmd, "CN_F_PRELOCK_QTY", ComDbType.DECIMAL, entity.CN_F_PRELOCK_QTY);
DataAccess.AddInParameter(cmd, "CN_S_PRODUCTION_BATCH", ComDbType.STRING, entity.CN_S_PRODUCTION_BATCH);
DataAccess.AddInParameter(cmd, "CN_S_MODEL", ComDbType.STRING, entity.CN_S_MODEL);
DataAccess.AddInParameter(cmd, "CN_S_FIGURE_NO", ComDbType.STRING, entity.CN_S_FIGURE_NO);
DataAccess.AddInParameter(cmd, "CN_S_MEASURE_UNIT", ComDbType.STRING, entity.CN_S_MEASURE_UNIT);
cmdlist.Add(cmd);
}
return ExecuteCommands(cmdlist, trans);
}
///
/// 删除锁定明细
///
///
///
///
public OperateResult DeleteOutLock(List outLockList, IDbTransaction trans)
{
string sql = @"DELETE FROM TN_WM_B_OUTLOCKING_DTL WHERE CN_GUID=@CN_GUID";
return ExecuteTranSql(sql, outLockList, trans);
}
///
/// 根据移库单 修改仓库数量 移出仓库减去数量 移入仓库加上数量
///
///
///
///
/// [HANHE(LT)] CREATED BY 2018-12-20
public SqlExecuteResult MoveInfoUpdateStockQty(List lstModel, DbTransaction trans)
{
SqlExecuteResult result = new SqlExecuteResult();
List cmdlist = new List();
foreach (TN_WM_B_STOCK_QTYEntity entity in lstModel)
{
StringBuilder strSql = new StringBuilder();
//移出库区数量
strSql.Append("UPDATE TN_WM_B_STOCK_QTY SET CN_F_QUANTITY=CN_F_QUANTITY-:CN_F_QUANTITY WHERE CN_S_STOCK_CODE='" + entity.CN_S_STOCK_CODE + "' AND " + entity.SqlWhere + "");
strSql.Append(" if exists(select * from TN_WM_B_STOCK_QTY WHERE " + entity.SqlWhere1 + " )");
strSql.Append("UPDATE TN_WM_B_STOCK_QTY SET CN_S_OWNER='" + entity.endBit + "',CN_F_QUANTITY=CN_F_QUANTITY+:CN_F_QUANTITY WHERE CN_S_STOCK_CODE='" + entity.CN_S_STOCK_CODE + "' AND " + entity.SqlWhere1 + "");
strSql.Append(" else ");
strSql.Append("insert into TN_WM_B_STOCK_QTY(");
strSql.Append("CN_GUID,CN_S_OWNER,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_LOT_NO,CN_S_STOCK_CODE,CN_F_QUANTITY,CN_F_ALLOC_QTY,CN_F_PLANNED_QTY,CN_F_PRELOCK_QTY,CN_S_TIMESTAMP,CN_S_PRODUCTION_BATCH)");
strSql.Append(" values (");
strSql.Append(":CN_GUID,:CN_S_OWNER,:CN_S_ITEM_CODE,:CN_S_ITEM_NAME,:CN_S_ITEM_STATE,:CN_S_LOT_NO,:CN_S_STOCK_CODE,:CN_F_QUANTITY,:CN_F_ALLOC_QTY,:CN_F_PLANNED_QTY,:CN_F_PRELOCK_QTY,:CN_S_TIMESTAMP,:CN_S_PRODUCTION_BATCH)");
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_GUID", ComDbType.STRING, entity.CN_GUID);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_CODE", ComDbType.STRING, entity.CN_S_STOCK_CODE);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.DECIMAL, entity.CN_F_QUANTITY);
DataAccess.AddInParameter(cmd, "CN_F_ALLOC_QTY", ComDbType.DECIMAL, 0);
DataAccess.AddInParameter(cmd, "CN_F_PLANNED_QTY", ComDbType.DECIMAL, entity.CN_F_PLANNED_QTY);
DataAccess.AddInParameter(cmd, "CN_F_PRELOCK_QTY", ComDbType.DECIMAL, entity.CN_F_PRELOCK_QTY);
DataAccess.AddInParameter(cmd, "CN_S_TIMESTAMP", ComDbType.STRING, entity.CN_S_TIMESTAMP);
DataAccess.AddInParameter(cmd, "CN_S_PRODUCTION_BATCH", ComDbType.STRING, entity.CN_S_PRODUCTION_BATCH);
cmdlist.Add(cmd);
}
return ExecuteCommands(cmdlist, trans);
}
///
/// 降仓库库存(入库单反审)
///
///
///
///
/// [HANHE(lt)] CREATED BY 2019-1-21
public OperateResult DeleteStockQtys(List list, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (TN_WM_B_STOCK_QTYEntity entity in list)
{
string sql = @" UPDATE TN_WM_B_STOCK_QTY SET CN_F_QUANTITY =CN_F_QUANTITY-{1} {0}";
sql = string.Format(sql, entity.SqlWhere, entity.CN_F_QUANTITY);
result = ExecuteTranSql(sql.ToString(), null, trans);
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
///
/// 删除为0的数据
///
///
public OperateResult DeleteStockQty(IDbTransaction trans)
{
string sql = "DELETE dbo.tn_wm_b_stock_qty WHERE CN_F_QUANTITY<=0 ";
return ExecuteTranSql(sql, null, trans);
}
///
/// 入库单反审时降仓库量表
///
///
///
///
/// [HANHE(XDL)] CREATED BY 2018-11-15
public OperateResult DeleteStockQty(string opNoList, IDbTransaction trans)
{
OperateResult result = new OperateResult();
string sql = @" UPDATE TN_WM_B_STOCK_QTY SET CN_F_QUANTITY =Q.CN_F_QUANTITY-IND.CN_F_QUANTITY FROM
TN_WM_B_STOCK_QTY Q,TN_WM_INCREASE_INVENTORY_DTL IND,TN_WM_INCREASE_INVENTORY_MST MST
WHERE Q.CN_S_ITEM_CODE=IND.CN_S_ITEM_CODE
AND Q.CN_S_ITEM_STATE=IND.CN_S_ITEM_STATE
AND Q.CN_S_LOT_NO=MST.CN_S_LOT_NO AND Q.CN_S_OWNER=MST.CN_S_OWNER AND IND.CN_S_OP_NO=MST.CN_S_OP_NO
AND IND.CN_S_OP_NO in (" + opNoList + ")";
result = ExecuteTranSql(sql.ToString(), null, trans);
if (result.Success)
{
string sqlstr = @" DELETE FROM TN_WM_B_STOCK_QTY where CN_F_QUANTITY<=0 ";
result = ExecuteTranSql(sqlstr.ToString(), null, trans);
}
return result;
}
///
/// 到货单反审时降仓库量表
///
///
///
///
/// [HANHE(XDL)] CREATED BY 2019-03-04
public OperateResult DeleteStockQtyArr(string opNoList, IDbTransaction trans)
{
OperateResult result = new OperateResult();
string sql = @" UPDATE TN_WM_B_STOCK_QTY SET CN_F_QUANTITY =Q.CN_F_QUANTITY-IND.CN_F_QUANTITY FROM
TN_WM_B_STOCK_QTY Q,TN_WM_ARRIVAL_DTL IND,TN_WM_ARRIVAL_MST MST
WHERE Q.CN_S_ITEM_CODE=IND.CN_S_ITEM_CODE
AND Q.CN_S_ITEM_STATE=IND.CN_S_ITEM_STATE
AND Q.CN_S_LOT_NO=MST.CN_S_LOT_NO AND Q.CN_S_OWNER=MST.CN_S_OWNER AND IND.CN_S_OP_NO=MST.CN_S_OP_NO
AND IND.CN_S_OP_NO in (" + opNoList + ")";
result = ExecuteTranSql(sql.ToString(), null, trans);
if (result.Success)
{
string sqlstr = @" DELETE FROM TN_WM_B_STOCK_QTY where CN_F_QUANTITY<=0 ";
result = ExecuteTranSql(sqlstr.ToString(), null, trans);
}
return result;
}
}
}