using HH.Redis.ReisModel;
|
using HH.WMS.BLL.Algorithm;
|
using HH.WMS.BLL.Basic;
|
using HH.WMS.BLL.External;
|
using HH.WMS.Common;
|
using HH.WMS.Common.Algorithm;
|
using HH.WMS.DAL;
|
using HH.WMS.DAL.Algorithm;
|
using HH.WMS.DAL.Basic;
|
using HH.WMS.DAL.Check;
|
using HH.WMS.DAL.Common;
|
using HH.WMS.DAL.InStock;
|
using HH.WMS.Entitys;
|
using HH.WMS.Entitys.Algorithm;
|
using HH.WMS.Entitys.Basic;
|
using HH.WMS.Entitys.Check;
|
using HH.WMS.Entitys.Common;
|
using HH.WMS.Entitys.Entitys;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.BLL.Check
|
{
|
public class TN_WM_CHECK_LISTBLL : DapperBaseBLL
|
{
|
#region 获取分页列表
|
/// <summary>
|
/// 获取分页列表
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetDataTable(dynamic obj)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetDataTable(obj);
|
Dictionary<string, string> stockDic = new Dictionary<string, string>();
|
Dictionary<string, string> areaDic = new Dictionary<string, string>();
|
dt.Columns.Add("CN_S_STOCK_NAME");
|
dt.Columns.Add("CN_S_AREA_NAME");
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称
|
{
|
if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString()))
|
{
|
TN_AB_STOCKEntity stockentity = CreateDAL<TN_WM_MONGODAL>().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称
|
if (stockentity != null)
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME;
|
stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()];
|
}
|
}
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称
|
{
|
if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))
|
{
|
AutoBomStockAreaEntity areaentity = CreateDAL<TN_WMS_AREADAL>().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称
|
if (areaentity != null)
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME;
|
areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
|
/// <summary>
|
/// 获取汇总分页列表
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetGroupDT(string sqlWhere)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetGroupDT(sqlWhere);
|
Dictionary<string, string> stockDic = new Dictionary<string, string>();
|
Dictionary<string, string> areaDic = new Dictionary<string, string>();
|
dt.Columns.Add("CN_S_STOCK_NAME");
|
dt.Columns.Add("CN_S_AREA_NAME");
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称
|
{
|
if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString()))
|
{
|
TN_AB_STOCKEntity stockentity = CreateDAL<TN_WM_MONGODAL>().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称
|
if (stockentity != null)
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME;
|
stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()];
|
}
|
}
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称
|
{
|
if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))
|
{
|
AutoBomStockAreaEntity areaentity = CreateDAL<TN_WMS_AREADAL>().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称
|
if (areaentity != null)
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME;
|
areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
/// <summary>
|
/// 获取分页列表
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetDataTableGroup(string sqlWhere, string OrdeBy, int pageSize, int pageIndex)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetDataTableGroup(sqlWhere, OrdeBy, pageSize, pageIndex);
|
dt.Columns.Add("CN_S_AREA_NAME");
|
Dictionary<string, string> areaDic = new Dictionary<string, string>();
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称
|
{
|
if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))
|
{
|
AutoBomStockAreaEntity areaentity = CreateDAL<TN_WMS_AREADAL>().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称
|
if (areaentity != null)
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME;
|
areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
|
|
/// <summary>
|
/// 获取列表
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetEntity(string sqlwhere)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetEntity(sqlwhere);
|
Dictionary<string, string> stockDic = new Dictionary<string, string>();
|
Dictionary<string, string> areaDic = new Dictionary<string, string>();
|
dt.Columns.Add("CN_S_STOCK_NAME");
|
dt.Columns.Add("CN_S_AREA_NAME");
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称
|
{
|
if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString()))
|
{
|
TN_AB_STOCKEntity stockentity = CreateDAL<TN_WM_MONGODAL>().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称
|
if (stockentity != null)
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME;
|
stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()];
|
}
|
}
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称
|
{
|
if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))
|
{
|
AutoBomStockAreaEntity areaentity = CreateDAL<TN_WMS_AREADAL>().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称
|
if (areaentity != null)
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME;
|
areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
|
|
/// <summary>
|
/// 获取列表
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetList(string sqlwhere)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetList(sqlwhere);
|
Dictionary<string, string> stockDic = new Dictionary<string, string>();
|
Dictionary<string, string> areaDic = new Dictionary<string, string>();
|
dt.Columns.Add("CN_S_STOCK_NAME");
|
dt.Columns.Add("CN_S_AREA_NAME");
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_CODE"].ToString())) //获取仓库名称
|
{
|
if (!stockDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_CODE"].ToString()))
|
{
|
TN_AB_STOCKEntity stockentity = CreateDAL<TN_WM_MONGODAL>().GetStockentity("CN_S_STOCK_CODE", dt.Rows[i]["CN_S_STOCK_CODE"].ToString());//获取仓库名称
|
if (stockentity != null)
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockentity.CN_S_STOCK_NAME;
|
stockDic.Add(dt.Rows[i]["CN_S_STOCK_CODE"].ToString(), stockentity.CN_S_STOCK_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = stockDic[dt.Rows[i]["CN_S_STOCK_CODE"].ToString()];
|
}
|
}
|
if (!string.IsNullOrEmpty(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))//获取库区名称
|
{
|
if (!areaDic.ContainsKey(dt.Rows[i]["CN_S_STOCK_AREA"].ToString()))
|
{
|
AutoBomStockAreaEntity areaentity = CreateDAL<TN_WMS_AREADAL>().GetModel(dt.Rows[i]["CN_S_STOCK_AREA"].ToString());//获取库区名称
|
if (areaentity != null)
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaentity.CN_S_AREA_NAME;
|
areaDic.Add(dt.Rows[i]["CN_S_STOCK_AREA"].ToString(), areaentity.CN_S_AREA_NAME);
|
}
|
}
|
else
|
{
|
dt.Rows[i]["CN_S_AREA_NAME"] = areaDic[dt.Rows[i]["CN_S_STOCK_AREA"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
#endregion
|
|
#region 获取盘点结果查询
|
/// <summary>
|
/// 获取盘点结果查询
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public DataTable GetDataTable(string sqlwhere)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetDataTable(sqlwhere);
|
dt.Columns.Add("CN_C_IS_SN");
|
Dictionary<string, string> itemDic = new Dictionary<string, string>();
|
foreach (DataRow row in dt.Rows)
|
{
|
if (!string.IsNullOrEmpty(row["CN_S_ITEM_CODE"].ToString()))
|
{
|
if (!itemDic.ContainsKey(row["CN_S_ITEM_CODE"].ToString()))
|
{
|
AutoBomItemEntity ItemEntity = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(row["CN_S_ITEM_CODE"].ToString());
|
row["CN_C_IS_SN"] = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN;
|
itemDic.Add(row["CN_S_ITEM_CODE"].ToString(), ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN);
|
}
|
else
|
{
|
row["CN_C_IS_SN"] = itemDic[row["CN_S_ITEM_CODE"].ToString()];
|
}
|
}
|
}
|
return dt;
|
}
|
|
/// <summary>
|
/// 获取盘点结果查询
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public List<TN_WM_CHECK_LISTEntity> GetUnitCheckList(string opNo, string trayCode, string locationCode)
|
{
|
string sqlWhere = " where CN_S_OP_NO='" + opNo + "' and CN_S_ISCHECK='N' ";
|
if (!string.IsNullOrEmpty(trayCode))
|
{
|
sqlWhere += " AND CN_S_TRAY_CODE = '" + trayCode + "'";
|
}
|
if (!string.IsNullOrEmpty(locationCode))
|
{
|
sqlWhere += " AND CN_S_LOCATION_CODE = '" + locationCode + "'";
|
}
|
|
List<TN_WM_CHECK_LISTEntity> list = CreateDAL<TN_WM_CHECK_LISTDAL>().GetUnitCheckList(sqlWhere);
|
|
foreach (TN_WM_CHECK_LISTEntity entity in list)
|
{
|
AutoBomItemEntity ItemEntity = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(entity.CN_S_ITEM_CODE);
|
entity.CN_C_IS_SN = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN;
|
entity.AuxiliaryUnitList = ItemEntity == null ? null : ItemEntity.AuxiliaryUnitList;
|
}
|
return list;
|
}
|
|
/// <summary>
|
/// 获取二次盘点盘点结果查询
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/21</history>
|
public List<TN_WM_CHECK_LISTEntity> GetChecklist(string sqlwhere)
|
{
|
List<TN_WM_CHECK_LISTEntity> list = CreateDAL<TN_WM_CHECK_LISTDAL>().GetChecklist(sqlwhere);
|
foreach (TN_WM_CHECK_LISTEntity entity in list)
|
{
|
AutoBomItemEntity ItemEntity = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(entity.CN_S_ITEM_CODE);
|
entity.CN_C_IS_SN = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN;
|
entity.AuxiliaryUnitList = ItemEntity == null ? null : ItemEntity.AuxiliaryUnitList;
|
}
|
return list;
|
}
|
#endregion
|
|
#region 根据盘点查询托盘与物料表
|
/// <summary>
|
/// 根据盘点查询托盘与物料表
|
/// </summary>
|
/// <param name="sqlwhere"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/24</history>
|
public List<TN_WM_CHECK_LISTEntity> GetTrayitemByOpno(string sqlwhere, string type)
|
{
|
return CreateDAL<TN_WM_CHECK_LISTDAL>().GetTrayitemByOpno(sqlwhere, type);
|
}
|
#endregion
|
|
#region 根据托盘编码获取盘点托盘信息
|
/// <summary>
|
/// 根据托盘编码获取盘点托盘信息
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/27</history>
|
public DataTable GetTrayCheckByCode(string sqlwhere)
|
{
|
return CreateDAL<TN_WM_CHECK_LISTDAL>().GetTrayCheckByCode(sqlwhere);
|
}
|
#endregion
|
|
#region 根据托盘编码获取盘点托盘信息
|
/// <summary>
|
/// 根据托盘编码获取盘点托盘信息
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/27</history>
|
public DataTable GetTrayItemByCode(string sqlwhere)
|
{
|
return CreateDAL<TN_WM_CHECK_LISTDAL>().GetTrayItemByCode(sqlwhere);
|
}
|
#endregion
|
|
#region 盘点执行
|
/// <summary>
|
///盘点执行
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/29</history>
|
public SqlExecuteResult CheckImplementConfirm(TN_WM_CHECK_MSTEntity entitymst, List<TN_WM_CHECK_LISTEntity> entitylist1, List<TN_WM_CHECK_LISTEntity> entitylist2)
|
{
|
SqlExecuteResult result = new SqlExecuteResult();
|
return DAOManager.ExecuteTransaction(trans =>
|
{
|
|
//result = CreateDAL<TN_WM_CHECK_MSTDAL>().UpdateMsts(entitymst, trans);//修改主表
|
//if (!result.Success)
|
//{
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
//}
|
result = CreateDAL<TN_WM_CHECK_LISTDAL>().UpdateQTY(entitylist1, trans);//修改盘点明细数量
|
if (!result.Success)
|
{
|
DAOManager.RollbackTransaction(trans);
|
return result;
|
}
|
|
result = CreateDAL<TN_WM_CHECK_LISTDAL>().Addlist(entitylist2, entitymst.CN_S_MODIFY_BY, DateTime.Now, trans);//新增明细
|
if (!result.Success)
|
{
|
DAOManager.RollbackTransaction(trans);
|
return result;
|
}
|
return result;
|
});
|
}
|
#endregion
|
|
#region 根据货位获取托盘信息
|
/// <summary>
|
/// 根据托盘编码获取盘点托盘信息
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/27</history>
|
public DataTable GetTrayByLocationCode(string sqlwhere)
|
{
|
return CreateDAL<TN_WM_CHECK_LISTDAL>().GetTrayByLocationCode(sqlwhere);
|
}
|
#endregion
|
|
#region 盘点执行
|
/// <summary>
|
///盘点执行
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/29</history>
|
//public SqlExecuteResult SaveCheck(JObject obj)
|
//{
|
// SqlExecuteResult result = new SqlExecuteResult();
|
// List<TN_WM_CHECK_LISTEntity> entity = JsonConvert.DeserializeObject<List<TN_WM_CHECK_LISTEntity>>(obj.Value
|
// <object>("entitylist").ToString());
|
// List<TN_WM_CHECK_LISTEntity> entitylistadd = entity.Where(o => o.CN_S_OPERATION.Contains("3")).ToList();
|
// List<TN_WM_CHECK_LISTEntity> entitylistUpdate = entity.Where(o => o.CN_S_OPERATION.Contains("1")).ToList();
|
|
|
// #region 入库任务
|
// string CN_S_OP_NO = entity[0].CN_S_OP_NO;
|
// string CN_S_TRAY_CODE = entity[0].CN_S_TRAY_CODE;
|
// string orgCode = obj.Value<string>("orgCode");
|
// string orgFlag = obj.Value<string>("orgFlag");
|
// string deviceNo = obj.Value<string>("deviceNo");
|
|
// string creator = obj.Value<string>("creator");
|
// string creatorBy = obj.Value<string>("creatorby");
|
// string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"" + orgCode + "\",\"orgFlag\":\"" + orgFlag + "\"}";
|
// string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
|
// if (string.IsNullOrEmpty(opNo))
|
// {
|
// result.Exception = new Exception("生成单据编码失败!");
|
// return result;
|
// }
|
|
// List<Device> deviceList = new List<Device>();
|
|
// //TaskTransferEntity taskentity = new TaskTransferEntity();
|
// //string clValue = SysConfig.GetValue(Constants.CL_WorkPlatform_Model);
|
|
// //TaskTransferEntity taskTransfer = new TaskTransferEntity()
|
// //{
|
// // WorkType = Constants.WorkType_UpperReachesIn
|
// //};
|
|
// //if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.货位.ToString()))
|
// // taskTransfer.StartBit = deviceNo;
|
// //if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.分拣区.ToString()))
|
// // taskTransfer.StartArea = deviceNo;
|
// //MsgEntity msg = BLLCreator.Create<TaskTransferBLL>().GetWorkPosition(taskTransfer);
|
|
// //if (!msg.Success)
|
// //{
|
// // return new SqlExecuteResult() { Exception = new Exception(msg.Msg) };
|
// //}
|
// //List<TN_AB_B_WORK_AREA_PROEntity> pros = (List<TN_AB_B_WORK_AREA_PROEntity>)msg.Data;
|
|
// string itemcode = "";
|
// if (entity.Count > 0)
|
// {
|
// itemcode = entity[0].CN_S_ITEM_CODE;
|
// }
|
|
// //调用入库算法-调用调用AutoBom接口,获取空货位
|
// InAlgorEnitty iAe = new InAlgorEnitty()
|
// {
|
// // stockCode = listCode[0].Trim(),
|
// stockAreaCode = "",//pros[0].CN_S_END_AREA_CODE,
|
// logicCode = "",
|
// locationQty = 1,
|
// trayCode = CN_S_TRAY_CODE,
|
// itemCode = itemcode
|
// };
|
// iAe.lstDevice = deviceList;
|
|
// var paramString = JsonConvert.SerializeObject(iAe);
|
// // string resultBit = HH.WMS.Common.WebApiManager.HttpWMS_Post("api/Algor/In", paramString);
|
// // OutResultEntity are = JsonConvert.DeserializeObject<OutResultEntity>(resultBit);
|
// InResultEntity irEresult = BLLCreator.Create<In_AlgorBLL>().In(iAe);
|
// if (!irEresult.Success)
|
// {
|
// result.Exception = new Exception(irEresult.Msg);//货位获取失败!
|
// return result;
|
// }
|
|
// // 拼接任务实体
|
// List<TN_WM_IN_TASKEntity> taskList = new List<TN_WM_IN_TASKEntity>();
|
// TN_WM_IN_TASKEntity taskEntity = new TN_WM_IN_TASKEntity();
|
|
// taskEntity.CN_S_TASK_NO = opNo;
|
// taskEntity.CN_S_BILL_NO = "";
|
// taskEntity.CN_S_TRAY_CODE = CN_S_TRAY_CODE;
|
// taskEntity.CN_S_START_AREA = pros[0].CN_S_START_AREA_CODE;
|
// taskEntity.CN_S_START_BIT = deviceNo;
|
// taskEntity.CN_S_END_AREA = pros[0].CN_S_END_AREA_CODE;
|
// taskEntity.CN_S_END_BIT = irEresult.lstLocation[0].locationCode;
|
// taskEntity.CN_S_STATE = "未执行";
|
// taskEntity.CN_T_START = DateTime.Now;
|
// taskEntity.CN_S_BF_TASK_NO = "";
|
// taskEntity.CN_S_AF_TASK_NO = "";
|
// taskEntity.CN_S_STOCK_CODE = "";
|
// taskEntity.CN_S_OP_TYPE = "上架";
|
|
// taskEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
|
// taskEntity.CN_S_CREATOR = creator;
|
// taskEntity.CN_S_CREATOR_BY = creatorBy;
|
// taskEntity.CN_S_MODIFY = creator;
|
// taskEntity.CN_S_MODIFY_BY = creatorBy;
|
// taskEntity.CN_T_CREATE = DateTime.Now;
|
// taskEntity.CN_T_MODIFY = DateTime.Now;
|
// taskEntity.CN_S_STATUS = "新建";
|
// taskEntity.CN_S_DEPARTMENT = orgCode;
|
// taskEntity.CN_S_ORGAN = orgCode;
|
// taskEntity.CN_S_CREATE_TYPE = "手工";
|
// taskEntity.CN_S_FROM = "WMS";
|
// taskList.Add(taskEntity);
|
// #endregion
|
|
// if (entitylistadd.Count > 0)
|
// {
|
// List<string> packlist = entitylistadd.Select(p => p.CN_S_PACK_CODE).ToList();
|
// var packcode = string.Join("','", packlist);
|
// DataTable dt = CreateDAL<TN_WM_B_BARCODEDAL>().GetBarCodeDatatable("AND CN_S_PACKING_CODE in ('" + packcode + "')");
|
|
// int row = CreateDAL<TN_WM_CHECK_LISTDAL>().GetMaxRow(" where CN_S_OP_NO='" + entitylistadd[0].CN_S_OP_NO + "'");
|
// DateTime tiem = DateTime.Now;
|
// foreach (TN_WM_CHECK_LISTEntity item in entitylistadd)
|
// {
|
// DataView dv = dt.DefaultView;
|
|
// dv.RowFilter = "CN_S_PACKING_CODE = '" + item.CN_S_PACK_CODE + "'";
|
// DataTable danew = dv.ToTable();
|
// AutoBomItemEntity itemEntity = BLLCreator.Create<TN_WMS_ITEMBLL>().GetItem(danew.Rows[0]["CN_S_ITEM_CODE"].ToString());
|
// item.CN_S_ITEM_CODE = danew.Rows[0]["CN_S_ITEM_CODE"].ToString();
|
// item.CN_S_ITEM_NAME = danew.Rows[0]["CN_S_ITEM_NAME"].ToString();
|
// item.CN_S_ITEM_STATE = danew.Rows[0]["CN_S_ITEM_STATE"].ToString();
|
// item.CN_S_OWNER = danew.Rows[0]["CN_S_OWNER"].ToString();
|
// item.CN_S_DTL_ROW = ++row;
|
// item.CN_S_LOT_NO = danew.Rows[0]["CN_S_LOT_CODE"].ToString();
|
// item.CN_S_FIGURE_NO = itemEntity == null ? "" : itemEntity.CN_S_FIGURE_NO;
|
// item.CN_S_MODEL = itemEntity == null ? "" : itemEntity.CN_S_MODEL;
|
// item.CN_S_MEASURE_UNIT = itemEntity == null ? "" : itemEntity.CN_S_MEASURE_UNIT;
|
// item.CN_S_ISCHECK = "Y";
|
// item.CN_S_ISWIN = "Y";
|
// item.CN_F_QUANTITY = 0;
|
// item.CN_F_CHECK_QTY = Convert.ToDecimal(danew.Rows[0]["CN_S_PACK_NUM"]);
|
// item.CN_S_OPERATOR = creatorBy;
|
// item.CN_T_OPERATE = tiem;
|
|
// }
|
// }
|
|
// return DAOManager.ExecuteTransaction(trans =>
|
// {
|
|
// //给货位扩展表指定任务编码
|
// result = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationTaskNoIn(taskList, trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// result = CreateDAL<TN_WM_CHECK_LISTDAL>().UpdateQTY(entitylistUpdate, trans);//修改盘点明细数量
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// result = CreateDAL<TN_WM_CHECK_LISTDAL>().AddChecklist(entitylistadd, trans);//新增明细
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// //生成入库任务
|
// result = CreateDAL<TN_WM_IN_TASKDAL>().Add(taskList, trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// //调用方法,下达AMS指令
|
// result = new InfRequest().SendTask(taskList);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
// return result;
|
// });
|
//}
|
#endregion
|
|
|
|
#region 执行下达任务
|
///// <summary>
|
///// 执行下达任务
|
///// </summary>
|
///// <param name="obj"></param>
|
///// <returns></returns>
|
///// <history>[HanHe(lt)] CREATED 2018/8/30</history>
|
//public SqlExecuteResult CheckTask(TN_WM_CHECK_MSTEntity entity)
|
//{
|
// SqlExecuteResult result = new SqlExecuteResult();
|
// List<AutoBomStockAreaEntity> areaentity = CreateDAL<TN_WM_MONGODAL>().GetList("", "1");//获取库区
|
|
// DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetDataTable("where CN_S_OP_NO='" + entity.CN_S_OP_NO + "'");
|
// //
|
// var info = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y") && dt.AsEnumerable().Where(d => d.Field<string>("CN_S_STOCK_AREA").Contains(w.CN_S_AREA_CODE)).Any()).Select(s => s.CN_S_AREA_CODE).ToList();
|
// if (info.Any())
|
// {
|
// //判断自动库是否执行
|
// var areaCodelist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_CODE).ToList();
|
// var areaNamelist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_NAME).ToList();
|
// var areaCodes = string.Join("','", areaCodelist);
|
// var areaNames = string.Join(",", areaNamelist);
|
// string sqlWhere = " AND CN_S_OP_NO IN (SELECT CN_S_OP_NO FROM dbo.tn_wm_check_dtl WHERE CN_S_STOCK_AREA IN ('" + areaCodes + "'))";
|
// DataTable dtms = CreateDAL<TN_WM_CHECK_LISTDAL>().GetExist(sqlWhere);
|
// if (dtms.Rows.Count > 0)
|
// {
|
// return new SqlExecuteResult() { Exception = new Exception("库区【" + areaNames + "】已有盘点单在执行!") };
|
// }
|
|
// }
|
// List<TN_WM_OUT_TASKEntity> list = new List<TN_WM_OUT_TASKEntity>();//定义出库任务
|
// string endBit = "";
|
// //分组库区
|
// var checkarea = from t in dt.AsEnumerable()
|
// group t by new { CN_S_STOCK_AREA = t.Field<string>("CN_S_STOCK_AREA"), CN_S_STOCK_CODE = t.Field<string>("CN_S_STOCK_CODE") } into m
|
// select new
|
// {
|
// CN_S_STOCK_AREA = m.Key.CN_S_STOCK_AREA,
|
// CN_S_STOCK_CODE = m.Key.CN_S_STOCK_CODE
|
// };
|
|
|
// foreach (var g in checkarea)
|
// {
|
// var area = areaentity.Where(x => x.CN_S_STOCK_CODE.Contains("" + g.CN_S_STOCK_CODE + "") && x.CN_S_AREA_CODE.Contains("" + g.CN_S_STOCK_AREA + "")).Select(y => y.CN_C_IS_AUTO).ToArray();
|
// if (area.Length > 0)
|
// {
|
// if (area[0] != "Y")
|
// {
|
// continue;
|
// }
|
// }
|
|
// List<string> endAreas = new List<string>();
|
// HH.WMS.Entitys.Func.MsgEntity msg = new HH.WMS.Entitys.Func.MsgEntity();
|
// TaskTransferEntity taskTransferEntity = new TaskTransferEntity()
|
// {
|
// WorkType = Constants.WorkType_LowerReachesOut,
|
// CirObj = Constants.TU_Tray,
|
// StartArea = g.CN_S_STOCK_AREA//赋值起始库区
|
// };
|
// if (SysConfig.GetValue(Constants.CL_FullTaryNoNeedSorting).Equals("Y"))
|
// taskTransferEntity.IsTrayAll = false;
|
// msg = BLLCreator.Create<TaskTransferBLL>().GetWorkPosition(taskTransferEntity);
|
|
|
// if (!msg.Success)
|
// {
|
// return new SqlExecuteResult() { Exception = new Exception("" + msg.Msg + "") };
|
// }
|
// List<TN_AB_B_WORK_AREA_PROEntity> pickAreaPros = (List<TN_AB_B_WORK_AREA_PROEntity>)msg.Data;
|
// if (pickAreaPros.Count == 1)
|
// {
|
// //只存在一个分拣台
|
// if (pickAreaPros[0].CN_C_IS_AUTO == "Y")
|
// endAreas.Add(pickAreaPros[0].CN_S_END_AREA_CODE);
|
// }
|
// else
|
// {
|
// #region 判断分拣任务是否根据策略进行均衡分配
|
// string cfg = SysConfig.GetValue(Constants.CL_PickDivideWorkMode);
|
// if (cfg.Length > 0)
|
// {
|
// switch (cfg)
|
// {
|
// case "分拣台任务均衡":
|
// cfg = SysConfig.GetValue(Constants.CL_IsControlPickTaskEquilibrium);
|
// if (cfg.Length == 0)
|
// {
|
// //msg.Success = false;
|
// //msg.Msg = "请维护是否控制分拣任务均衡策略";
|
// return new SqlExecuteResult() { Exception = new Exception("请维护是否控制分拣任务均衡策略") };
|
// }
|
// else
|
// {
|
// if (cfg.Equals("N"))
|
// {
|
// endAreas = pickAreaPros.Where(x => x.CN_C_IS_AUTO == "Y").Select(x => x.CN_S_END_AREA_CODE).ToList<string>();
|
// }
|
// }; break;
|
// case "只有一个分拣台":
|
// endAreas = pickAreaPros.Where(x => x.CN_C_IS_AUTO == "Y").Select(x => x.CN_S_END_AREA_CODE).ToList<string>();
|
// break;
|
// }
|
// }
|
// else
|
// {
|
// //msg.Success = false;
|
// //msg.Msg = "请维护拣货分工模式策略";
|
// return new SqlExecuteResult() { Exception = new Exception("请维护拣货分工模式策略") };
|
// }
|
// #endregion
|
// }
|
|
// //分组货位托盘
|
// var groupLocation = from t in dt.AsEnumerable().Where(n => n.Field<string>("CN_S_STOCK_AREA") == "" + g.CN_S_STOCK_AREA + "")
|
// group t by new { CN_S_LOCATION_CODE = t.Field<string>("CN_S_LOCATION_CODE"), CN_S_TRAY_CODE = t.Field<string>("CN_S_TRAY_CODE") } into m
|
// select new
|
// {
|
// CN_S_LOCATION_CODE = m.Key.CN_S_LOCATION_CODE,
|
// CN_S_TRAY_CODE = m.Key.CN_S_TRAY_CODE
|
// };
|
|
|
|
|
// foreach (var l in groupLocation)
|
// {
|
// string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_OutTaskNo + "\",\"orgId\":\"" + entity.OrgCode + "\",\"orgFlag\":\"" + entity.OrgFlag + "\"}";
|
// string outTaskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
// list.Add(new TN_WM_OUT_TASKEntity()
|
// {
|
// CN_S_DEAL_MODE = "系统",
|
// CN_S_START_BIT = l.CN_S_LOCATION_CODE,
|
// CN_S_END_AREA = endBit.Length > 0 ? endAreas[0] : "",
|
// CN_S_END_BIT = endBit,
|
// CN_S_FROM_NO = entity.CN_S_OP_NO,
|
// CN_S_OP_FROM = "盘点",
|
// CN_S_OP_TYPE = "盘点出库",
|
// CN_S_STATE = "未执行",
|
// CN_S_TASK_NO = outTaskNo,
|
// CN_S_TRAY_CODE = l.CN_S_TRAY_CODE,
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_S_CREATOR = entity.CN_S_CREATOR,
|
// CN_S_CREATOR_BY = entity.CN_S_CREATOR_BY,
|
// CN_T_CREATE = DateTime.Now.ToString(),
|
// CN_T_MODIFY = DateTime.Now.ToString(),
|
// END_AREAS = endAreas,
|
// CN_S_CREATE_TYPE = "系统",
|
// CN_N_PRIORITY = 1
|
|
// });
|
// }
|
|
// }
|
|
// return DAOManager.ExecuteTransaction(trans =>
|
// {
|
// if (list.Count > 0)
|
// {
|
// //生成任务
|
// result = CreateDAL<TN_WM_OUT_TASKDAL>().Add(list, trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// //获取出库任务号与货位
|
// List<string> location = list.Select(x => x.CN_S_TASK_NO + "|" + x.CN_S_START_BIT).ToList();
|
|
// result = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationStateTask(location, "预出库锁定", trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
// }
|
// //修改
|
// result = CreateDAL<TN_WM_CHECK_MSTDAL>().UpdateMsts(entity, trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
// if (list.Count > 0)
|
// {
|
// result = new InfRequest().SendTask(list);
|
// }
|
// return result;
|
// });
|
//}
|
#endregion
|
|
#region 根据盘点单更新状态
|
/// <summary>
|
/// 根据盘点单更新状态
|
/// </summary>
|
/// <param name="state"></param>
|
/// <param name="sqlwhere"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/12/17</history>
|
public OperateResult UpdateMstByOpNo(string state, string sqlwhere)
|
{
|
return CreateDAL<TN_WM_CHECK_MSTDAL>().UpdateMstByOpNo(state, sqlwhere, null);
|
}
|
|
#endregion
|
|
#region 获取执行单号
|
/// <summary>
|
/// 获取执行单号
|
/// </summary>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/30</history>
|
public DataTable GetopNo()
|
{
|
//判断自动库是否执行
|
List<AutoBomStockAreaEntity> areaentity = CreateDAL<TN_WM_MONGODAL>().GetList("", "1");//获取库区
|
var arealist = areaentity.Where(w => w.CN_C_IS_AUTO.Contains("Y")).Select(s => s.CN_S_AREA_CODE).ToList();
|
var areaCodes = string.Join("','", arealist);
|
string sqlWhere = " AND CN_S_OP_NO in (SELECT CN_S_OP_NO FROM dbo.tn_wm_check_dtl WHERE CN_S_STOCK_AREA IN ('" + areaCodes + "'))";
|
|
return CreateDAL<TN_WM_CHECK_LISTDAL>().GetExist(sqlWhere);
|
}
|
#endregion
|
|
#region 根据盘点单托盘编码更新
|
/// <summary>
|
/// 根据盘点单托盘编码更新
|
/// </summary>
|
/// <param name="entity">实体类</param>
|
/// <param name="trans">事务</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/9/17</history>
|
//public SqlExecuteResult UpdateByCode(JObject obj)
|
//{
|
// SqlExecuteResult result = new SqlExecuteResult();
|
// #region 入库任务
|
// string CN_S_OP_NO = obj.Value<string>("opNo");
|
// string CN_S_TRAY_CODE = obj.Value<string>("TrayCode");
|
// string orgCode = obj.Value<string>("orgCode");
|
// string orgFlag = obj.Value<string>("orgFlag");
|
// string deviceNo = obj.Value<string>("deviceNo");
|
|
// string creator = obj.Value<string>("creator");
|
// string creatorBy = obj.Value<string>("creatorby");
|
// string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_InTaskNo + "\",\"orgId\":\"" + orgCode + "\",\"orgFlag\":\"" + orgFlag + "\"}";
|
// string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
|
// if (string.IsNullOrEmpty(opNo))
|
// {
|
// result.Exception = new Exception("生成单据编码失败!");
|
// return result;
|
// }
|
|
// List<Device> deviceList = new List<Device>();
|
|
// TaskTransferEntity taskentity = new TaskTransferEntity();
|
// string clValue = SysConfig.GetValue(Constants.CL_WorkPlatform_Model);
|
|
// TaskTransferEntity taskTransfer = new TaskTransferEntity()
|
// {
|
// WorkType = Constants.WorkType_UpperReachesIn
|
// };
|
|
// if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.货位.ToString()))
|
// taskTransfer.StartBit = deviceNo;
|
// if (clValue.Equals(Constants.CL_WorkPlatform_Model_Value.分拣区.ToString()))
|
// taskTransfer.StartArea = deviceNo;
|
// MsgEntity msg = BLLCreator.Create<TaskTransferBLL>().GetWorkPosition(taskTransfer);
|
|
// if (!msg.Success)
|
// {
|
// return new SqlExecuteResult() { Exception = new Exception(msg.Msg) };
|
// }
|
// List<TN_AB_B_WORK_AREA_PROEntity> pros = (List<TN_AB_B_WORK_AREA_PROEntity>)msg.Data;
|
|
// string itemcode = "";
|
// //if (lstQuery.Count > 0)
|
// //{
|
// // itemcode = lstQuery[0].CN_S_ITEM_CODE;
|
// //}
|
|
// //调用入库算法-调用调用AutoBom接口,获取空货位
|
// InAlgorEnitty iAe = new InAlgorEnitty()
|
// {
|
// // stockCode = listCode[0].Trim(),
|
// stockAreaCode = pros[0].CN_S_END_AREA_CODE,// listCode[1].Trim(),
|
// logicCode = "",
|
// locationQty = 1,
|
// trayCode = CN_S_TRAY_CODE,
|
// itemCode = itemcode
|
// };
|
// iAe.lstDevice = deviceList;
|
|
// var paramString = JsonConvert.SerializeObject(iAe);
|
// // string resultBit = HH.WMS.Common.WebApiManager.HttpWMS_Post("api/Algor/In", paramString);
|
// // OutResultEntity are = JsonConvert.DeserializeObject<OutResultEntity>(resultBit);
|
// InResultEntity irEresult = BLLCreator.Create<In_AlgorBLL>().In(iAe);
|
// if (!irEresult.Success)
|
// {
|
// result.Exception = new Exception(irEresult.Msg);//货位获取失败!
|
// return result;
|
// }
|
|
// // 拼接任务实体
|
// List<TN_WM_IN_TASKEntity> taskList = new List<TN_WM_IN_TASKEntity>();
|
// TN_WM_IN_TASKEntity taskEntity = new TN_WM_IN_TASKEntity();
|
|
// taskEntity.CN_S_TASK_NO = opNo;
|
// taskEntity.CN_S_BILL_NO = "";
|
// taskEntity.CN_S_TRAY_CODE = CN_S_TRAY_CODE;
|
// taskEntity.CN_S_START_AREA = pros[0].CN_S_START_AREA_CODE;
|
// taskEntity.CN_S_START_BIT = deviceNo;
|
// taskEntity.CN_S_END_AREA = pros[0].CN_S_END_AREA_CODE;
|
// taskEntity.CN_S_END_BIT = irEresult.lstLocation[0].locationCode;
|
// taskEntity.CN_S_STATE = "未执行";
|
// taskEntity.CN_T_START = DateTime.Now;
|
// taskEntity.CN_S_BF_TASK_NO = "";
|
// taskEntity.CN_S_AF_TASK_NO = "";
|
// taskEntity.CN_S_STOCK_CODE = "";
|
// taskEntity.CN_S_OP_TYPE = "上架";
|
|
// taskEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
|
// taskEntity.CN_S_CREATOR = creator;
|
// taskEntity.CN_S_CREATOR_BY = creatorBy;
|
// taskEntity.CN_S_MODIFY = creator;
|
// taskEntity.CN_S_MODIFY_BY = creatorBy;
|
// taskEntity.CN_T_CREATE = DateTime.Now;
|
// taskEntity.CN_T_MODIFY = DateTime.Now;
|
// taskEntity.CN_S_STATUS = "新建";
|
// taskEntity.CN_S_DEPARTMENT = orgCode;
|
// taskEntity.CN_S_ORGAN = orgCode;
|
// taskEntity.CN_S_CREATE_TYPE = "手工";
|
// taskEntity.CN_S_FROM = "WMS";
|
// taskList.Add(taskEntity);
|
// #endregion
|
// return DAOManager.ExecuteTransaction(trans =>
|
// {
|
// result = CreateDAL<TN_WM_CHECK_LISTDAL>().UpdateByCode(CN_S_OP_NO, CN_S_TRAY_CODE, null);//修改盘点明细数量
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// //生成入库任务
|
// result = CreateDAL<TN_WM_IN_TASKDAL>().Add(taskList, trans);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
|
// //调用方法,下达AMS指令
|
// result = new InfRequest().SendTask(taskList);
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
// return result;
|
// });
|
//}
|
#endregion
|
|
#region 出库任务状态修改
|
/// <summary>
|
/// 出库任务状态修改
|
/// </summary>
|
/// <param name="obj"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/9/25</history>
|
//public SqlExecuteResult SetOutTaskByopNo(JObject obj)
|
//{
|
// string CN_S_OP_NO = obj.Value<string>("opNo");
|
// string CN_S_TRAY_CODE = obj.Value<string>("TrayCode");
|
// string deviceNo = obj.Value<string>("deviceNo");
|
// string orgId = obj.Value<string>("orgId");
|
// string orgFlag = obj.Value<string>("orgFlag");
|
// string Operator = obj.Value<string>("Operator");
|
// SqlExecuteResult result = new SqlExecuteResult();
|
// return DAOManager.ExecuteTransaction(trans =>
|
// {
|
// result = CreateDAL<TN_WM_OUT_TASKDAL>().SetOutTaskByopNo(CN_S_OP_NO, CN_S_TRAY_CODE, deviceNo, "完成", null);//修改出库任务为完成
|
// if (!result.Success)
|
// {
|
// DAOManager.RollbackTransaction(trans);
|
// return result;
|
// }
|
// DataTable dt = CreateDAL<TN_WM_OUT_TASKDAL>().GetTasklist(" WHERE CN_S_FROM_NO='" + CN_S_OP_NO + "' AND CN_S_TRAY_CODE='" + CN_S_TRAY_CODE + "'");
|
// result = BLL.BLLCreator.Create<TN_WM_OUT_TASKBLL>().Complete(dt.Rows[0]["CN_S_TASK_NO"].ToString(), "完成", orgId, orgFlag, Operator);
|
// return result;
|
// });
|
//}
|
#endregion
|
|
#region 根据货位获取托盘中物料
|
/// <summary>
|
/// 根据货位获取托盘中物料
|
/// </summary>
|
/// <param name="sqlwhere">查询条件</param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2019/1/2</history>
|
public DataTable GetTrayitemBylocation(string locationCode)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_LISTDAL>().GetTrayitemBylocation(locationCode);
|
dt.Columns.Add("CN_C_IS_SN");
|
foreach (DataRow row in dt.Rows)
|
{
|
AutoBomItemEntity ItemEntity = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(row["CN_S_ITEM_CODE"].ToString());
|
row["CN_C_IS_SN"] = ItemEntity == null ? "" : ItemEntity.CN_C_IS_SN;
|
}
|
return dt;
|
}
|
#endregion
|
|
#region PDA盘点执行
|
/// <summary>
|
///盘点执行
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
/// <history>[HanHe(lt)] CREATED 2018/8/29</history>
|
public OperateResult SaveCheckPDA(TN_WM_CHECK_MAINEntity entity, RedisUserEntity user)
|
{
|
List<TN_WM_LOCATION_EXTEntity> GetModel = BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetModel("where CN_S_LOCATION_CODE='" + entity.CN_S_LOCATION_CODE + "'");
|
if (GetModel.Count == 0)
|
{
|
return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!");
|
}
|
AutoBomStockAreaEntity areaModel = DALCreator.Create<TN_AB_STOCK_LOCATIONDAL>().GetAreaModelByLocation(entity.CN_S_LOCATION_CODE);
|
if (areaModel == null)
|
{
|
//非法的目的货位
|
return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位信息!", entity.CN_S_LOCATION_CODE));
|
}
|
//货位状态:正常
|
if (GetModel[0].CN_S_LOCATION_STATE != Constants.Location_State_Normal && GetModel[0].CN_S_LOCATION_STATE != Constants.Location_Check_Lock)
|
{
|
return OperateResult.Error(string.Format("当前货位状态为{0},不允许盘点保存!", GetModel[0].CN_S_LOCATION_STATE));
|
}
|
|
foreach (TN_WM_CHECK_LISTEntity clEntity in entity.row)
|
{
|
clEntity.CN_GUID = Guid.NewGuid().ToString();
|
clEntity.CN_S_STOCK_AREA = areaModel.CN_S_AREA_CODE;
|
clEntity.CN_S_STOCK_CODE = areaModel.CN_S_STOCK_CODE;
|
clEntity.CN_S_CREATOR = user.CN_S_LOGIN;
|
clEntity.CN_S_CREATOR_BY = user.CN_S_NAME;
|
clEntity.CN_T_CREATE = DateTime.Now;
|
clEntity.CN_S_MODIFY = user.CN_S_LOGIN;
|
clEntity.CN_S_MODIFY_BY = user.CN_S_NAME;
|
clEntity.CN_T_MODIFY = DateTime.Now;
|
}
|
|
OperateResult operateResult = UseTransaction(trans =>
|
{
|
if (GetModel[0].CN_S_LOCATION_STATE == Constants.Location_State_Normal)
|
{
|
operateResult = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationExtStateLock(entity.CN_S_LOCATION_CODE, Constants.Location_Check_Lock, Constants.Location_State_Normal, "", "", trans);
|
if (operateResult.AffectedRows == 0)
|
{
|
throw new Exception("盘点锁定货位状态并发冲突,该货位状态可能已经发生变化");
|
}
|
BLLCreator.Create<TN_WM_B_LOCATION_CHANGEBLL>().AddStateChange(entity.CN_S_LOCATION_CODE, Constants.Location_State_Normal, Constants.Location_Check_Lock, "PDA盘点锁定货位", "PDA", user.CN_S_LOGIN, "", areaModel.CN_S_STOCK_CODE, areaModel.CN_S_AREA_CODE, trans);
|
}
|
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().AddRange(entity.row, trans);
|
//更新托盘贮存状态
|
if (!string.IsNullOrEmpty(entity.CN_S_USE_STATE))
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_INFOEntity>>().Update(new
|
{
|
CN_S_USE_STATE = entity.CN_S_USE_STATE
|
}, new
|
{
|
CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE
|
}, trans);
|
}
|
});
|
|
return operateResult;
|
}
|
#endregion
|
|
#region PDA 盘点锁定解锁货位
|
public OperateResult LockLocation(string locationCode, RedisUserEntity userEntity)
|
{
|
TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'");
|
if (locationExt == null)
|
{
|
return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!");
|
}
|
if (locationExt.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
|
{
|
return OperateResult.Error(string.Format("当前货位状态为{0},不允许盘点该货位!", locationExt.CN_S_LOCATION_STATE));
|
}
|
AutoBomStockAreaEntity areaE = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetAreaModelByLocation(locationCode);
|
if (areaE == null)
|
{
|
//非法的目的货位
|
return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode));
|
}
|
OperateResult operateResult = UseTransaction(trans =>
|
{
|
operateResult = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationExtStateLock(locationCode, Constants.Location_Check_Lock, Constants.Location_State_Normal, "", "", trans);
|
|
if (operateResult.AffectedRows == 0)
|
{
|
throw new Exception("锁定货位状态并发冲突,该货位状态可能已经发生变化");
|
}
|
BLLCreator.Create<TN_WM_B_LOCATION_CHANGEBLL>().AddStateChange(locationCode, Constants.Location_State_Normal, Constants.Location_Check_Lock, "PDA盘点锁定货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans);
|
});
|
return operateResult;
|
}
|
public OperateResult UnLockLocation(string locationCode, RedisUserEntity userEntity)
|
{
|
TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'");
|
if (locationExt == null)
|
{
|
return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!");
|
}
|
if (locationExt.CN_S_LOCATION_STATE != Constants.Location_Check_Lock)
|
{
|
return OperateResult.Error(string.Format("当前货位状态为{0},不需要解锁!", locationExt.CN_S_LOCATION_STATE));
|
}
|
AutoBomStockAreaEntity areaE = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetAreaModelByLocation(locationCode);
|
if (areaE == null)
|
{
|
//非法的目的货位
|
return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode));
|
}
|
//再检查盘点数据是否已提交,已提交的不能解锁
|
List<TN_WM_CHECK_LISTEntity> lstCheck = CreateDAL<TN_WM_CHECK_LISTDAL>().CheckList(locationCode);
|
if(lstCheck.Count>0)
|
{
|
return OperateResult.Error("当前货位的盘点数据已生成单据,不允许解锁!");
|
}
|
|
OperateResult operateResult = UseTransaction(trans =>
|
{
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().Delete(new { CN_S_LOCATION_CODE = locationCode }, trans);
|
operateResult = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationExtStateLock(locationCode, Constants.Location_State_Normal, Constants.Location_Check_Lock, "", "", trans);
|
|
if (operateResult.AffectedRows == 0)
|
{
|
throw new Exception("解锁货位状态并发冲突,该货位状态可能已经发生变化");
|
}
|
BLLCreator.Create<TN_WM_B_LOCATION_CHANGEBLL>().AddStateChange(locationCode, Constants.Location_Check_Lock, Constants.Location_State_Normal, "PDA盘点解锁货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans);
|
});
|
return operateResult;
|
}
|
#endregion
|
#region PDA 人工搬运锁定解锁货位
|
public OperateResult LockLocationManual(string locationCode, RedisUserEntity userEntity)
|
{
|
TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'");
|
if (locationExt == null)
|
{
|
return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!");
|
}
|
if (locationExt.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
|
{
|
return OperateResult.Error(string.Format("当前货位状态为{0},不允许搬运该货位!", locationExt.CN_S_LOCATION_STATE));
|
}
|
AutoBomStockAreaEntity areaE = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetAreaModelByLocation(locationCode);
|
if (areaE == null)
|
{
|
//非法的目的货位
|
return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode));
|
}
|
OperateResult operateResult = UseTransaction(trans =>
|
{
|
operateResult = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationExtStateLock(locationCode, Constants.Location_Carry_Lock, Constants.Location_State_Normal, "", "", trans);
|
|
if (operateResult.AffectedRows == 0)
|
{
|
throw new Exception("锁定货位状态并发冲突,该货位状态可能已经发生变化");
|
}
|
BLLCreator.Create<TN_WM_B_LOCATION_CHANGEBLL>().AddStateChange(locationCode, Constants.Location_State_Normal, Constants.Location_Carry_Lock, "PDA人工搬运锁定货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans);
|
});
|
return operateResult;
|
}
|
public OperateResult UnLockLocationManual(string locationCode, RedisUserEntity userEntity)
|
{
|
TN_WM_LOCATION_EXTEntity locationExt = BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" where CN_S_LOCATION_CODE='" + locationCode + "'");
|
if (locationExt == null)
|
{
|
return OperateResult.Error("在表TN_WM_LOCATION_EXT中未查询到该货位!");
|
}
|
if (locationExt.CN_S_LOCATION_STATE != Constants.Location_Carry_Lock)
|
{
|
return OperateResult.Error(string.Format("当前货位状态为{0},不需要解锁,只能解锁搬运锁定的货位!", locationExt.CN_S_LOCATION_STATE));
|
}
|
AutoBomStockAreaEntity areaE = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetAreaModelByLocation(locationCode);
|
if (areaE == null)
|
{
|
//非法的目的货位
|
return OperateResult.Error(string.Format("在mongo(TN_AB_B_STOCK_AREA或TN_AB_STOCK_LOCATION表)中未查询到该货位{0}的库区信息!", locationCode));
|
}
|
|
|
OperateResult operateResult = UseTransaction(trans =>
|
{
|
|
operateResult = CreateDAL<TN_WM_LOCATION_EXTDAL>().UpdateLocationExtStateLock(locationCode, Constants.Location_State_Normal, Constants.Location_Carry_Lock, "", "", trans);
|
|
if (operateResult.AffectedRows == 0)
|
{
|
throw new Exception("解锁货位状态并发冲突,该货位状态可能已经发生变化");
|
}
|
BLLCreator.Create<TN_WM_B_LOCATION_CHANGEBLL>().AddStateChange(locationCode, Constants.Location_Carry_Lock, Constants.Location_State_Normal, "PDA人工搬运解锁货位", "PDA", userEntity.CN_S_LOGIN, "", areaE.CN_S_STOCK_CODE, areaE.CN_S_AREA_CODE, trans);
|
});
|
return operateResult;
|
}
|
#endregion
|
}
|
}
|