using HH.MData;
using HH.WMS.DAL;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HW.Utility.Data;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
namespace HW.DAL
{
///
/// 物料表数据处理层
///
///
/// [HanHe(XDL)] CREATED 2018/06/19
public class TN_AB_ITEMDAL : BaseDAL
{
#region 获取物料表集合
///
/// 根据表名获取物料表集合
///
/// 表名
/// 物料集合
/// [HanHe(XDL)] CREATED 2018/06/14
public List GetItemList(string tableName)
{
string sql = @"SELECT TOP 200 CN_S_ITEM_NAME
,CN_S_ITEM_CODE
,CN_S_MODIFY_BY
,CN_T_MODIFY
,CN_S_MODIFY
,CN_S_CREATOR
,CN_S_CREATOR_BY
,S.CN_T_CREATE
,CN_GUID
,CN_S_MODEL
,CN_S_ITEM_NOTE
,CN_S_MEASURE_UNIT
,CN_S_MIN_PACKWEIGHT/case when CN_F_MIN_PACK_QTY=0 then 1 else CN_F_MIN_PACK_QTY end CN_F_TW
,CN_F_NW
,CN_F_NW
,CN_S_VOLUME_SIZE
,CN_S_ITEM_TYPE
,CN_S_MAJOR_TYPE
,CN_S_MINOR_TYPE
,CN_S_SALE_TYPE
,CN_S_TYPE_GROUP
,CN_S_VENDOR_BRAND
,CN_F_MIN_PACK_QTY
,CN_S_PACK_UNIT
,CN_S_FIGURE_NO
,CN_C_IS_WARRNTY_PARTS
,CN_S_FEATURE
,CN_F_SAFETY_STOCK
,CN_S_PACKING_TYPE
,CN_F_WARRNTY_PARTS
,CN_C_IS_LOT_OUT
,CN_C_IS_SN
,CN_S_CONERSION
,CN_S_STORE_TYPE
,CN_S_BOOK_CODE
,CN_S_BOOK_NAME
,CN_S_SPEC
,CN_S_STATUS
FROM TN_AB_B_SYNCH_LOG L LEFT JOIN TN_AB_ITEM S
ON L.CN_S_GUID=S.CN_GUID
WHERE L.CN_S_TABLE_NAME='" + tableName + "' AND L.CN_N_OP_FLAG IN (1,2) AND CN_S_ITEM_CODE!='' ";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
List list = DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetEntity);
return list;
}
///
/// 设置实体的各列
///
private void SetEntity(AutoBomItemEntity entity, IDataReader reader)
{
SetEntityUti(entity, "CN_S_ITEM_NAME", "CN_S_ITEM_NAME", reader);
SetEntityUti(entity, "CN_S_ITEM_CODE", "CN_S_ITEM_CODE", reader);
SetEntityUti(entity, "CN_S_MODIFY_BY", "CN_S_MODIFY_BY", reader);
SetEntityUti(entity, "CN_T_MODIFY", "CN_T_MODIFY", reader);
SetEntityUti(entity, "CN_S_MODIFY", "CN_S_MODIFY", reader);
SetEntityUti(entity, "CN_S_CREATOR", "CN_S_CREATOR", reader);
SetEntityUti(entity, "CN_S_CREATOR_BY", "CN_S_CREATOR_BY", reader);
SetEntityUti(entity, "CN_T_CREATE", "CN_T_CREATE", reader);
SetEntityUti(entity, "CN_GUID", "CN_GUID", reader);
SetEntityUti(entity, "CN_S_MODEL", "CN_S_MODEL", reader);
SetEntityUti(entity, "CN_S_ITEM_NOTE", "CN_S_ITEM_NOTE", reader);
SetEntityUti(entity, "CN_S_MEASURE_UNIT", "CN_S_MEASURE_UNIT", reader);
SetEntityUti(entity, "CN_F_TW", "CN_F_TW", reader);
SetEntityUti(entity, "CN_F_NW", "CN_F_NW", reader);
SetEntityUti(entity, "CN_S_VOLUME_SIZE", "CN_S_VOLUME_SIZE", reader);
SetEntityUti(entity, "CN_S_ITEM_TYPE", "CN_S_ITEM_TYPE", reader);
SetEntityUti(entity, "CN_S_MAJOR_TYPE", "CN_S_MAJOR_TYPE", reader);
SetEntityUti(entity, "CN_S_MINOR_TYPE", "CN_S_MINOR_TYPE", reader);
SetEntityUti(entity, "CN_S_SALE_TYPE", "CN_S_SALE_TYPE", reader);
SetEntityUti(entity, "CN_S_TYPE_GROUP", "CN_S_TYPE_GROUP", reader);
SetEntityUti(entity, "CN_S_VENDOR_BRAND", "CN_S_VENDOR_BRAND", reader);
SetEntityUti(entity, "CN_F_MIN_PACK_QTY", "CN_F_MIN_PACK_QTY", reader);
SetEntityUti(entity, "CN_S_PACK_UNIT", "CN_S_PACK_UNIT", reader);
SetEntityUti(entity, "CN_S_FIGURE_NO", "CN_S_FIGURE_NO", reader);
SetEntityUti(entity, "CN_C_IS_WARRNTY_PARTS", "CN_C_IS_WARRNTY_PARTS", reader);
SetEntityUti(entity, "CN_S_FEATURE", "CN_S_FEATURE", reader);
SetEntityUti(entity, "CN_F_SAFETY_STOCK", "CN_F_SAFETY_STOCK", reader);
SetEntityUti(entity, "CN_S_PACKING_TYPE", "CN_S_PACKING_TYPE", reader);
SetEntityUti(entity, "CN_F_WARRNTY_PARTS", "CN_F_WARRNTY_PARTS", reader);
SetEntityUti(entity, "CN_C_IS_LOT_OUT", "CN_C_IS_LOT_OUT", reader);
SetEntityUti(entity, "CN_C_IS_SN", "CN_C_IS_SN", reader);
SetEntityUti(entity, "CN_S_CONERSION", "CN_S_CONERSION", reader);
SetEntityUti(entity, "CN_S_STORE_TYPE", "CN_S_STORE_TYPE", reader);
SetEntityUti(entity, "CN_S_BOOK_CODE", "CN_S_BOOK_CODE", reader);
SetEntityUti(entity, "CN_S_BOOK_NAME", "CN_S_BOOK_NAME", reader);
SetEntityUti(entity, "CN_S_SPEC", "CN_S_SPEC", reader);
SetEntityUti(entity, "CN_S_STATUS", "CN_S_STATUS", reader);
}
#endregion
public SqlExecuteResult RemoveSynchLogData(string ArrayGuids)
{
StringBuilder sb = new StringBuilder();
sb.Append("DELETE FROM TN_AB_B_SYNCH_LOG WHERE CN_S_GUID in (" + ArrayGuids + ")");
DbCommand cmd = DataAccess.GetSqlStringCommand(sb.ToString());
return ExecuteCommand(cmd, null);
}
public List GetItemToMapList()
{
string sql = @"SELECT CN_S_ITEM_CODE 'Key','4' 'Type' FROM TN_AB_ITEM ";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
List list = DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetItemToMapEntity);
return list;
}
///
/// 设置实体的各列
///
private void SetItemToMapEntity(MONGO_KEYTYPE_MAP entity, IDataReader reader)
{
SetEntityUti(entity, "Key", "Key", reader);
SetEntityUti(entity, "Type", "Type", reader);
}
public AutoBomItemEntity GetItemModelByAuxi(string guid)
{
try
{
AutoBomItemEntity entity = new AutoBomItemEntity();
var query = Query.Matches("AuxiliaryUnitList.CN_GUID", guid);
entity = MongoDBSingleton.Instance.FindOne(query, "TN_AB_ITEM");
return entity;
}
catch (Exception ex)
{
return null;
}
}
public AutoBomItemEntity GetItemEntity(string itemCode)
{
try
{
AutoBomItemEntity entity = new AutoBomItemEntity();
var query = Query.EQ("CN_S_ITEM_CODE", itemCode);
entity = MongoDBSingleton.Instance.FindOne(query, "TN_AB_ITEM");
return entity;
}
catch (Exception ex)
{
return null;
}
}
public bool UpdateAuxiData(List newAuxiList, string itemCode)
{
var query = Query.EQ("CN_S_ITEM_CODE", itemCode);
var update = Update.SetWrapped("AuxiliaryUnitList", newAuxiList);
bool result = MongoDBSingleton.Instance.Update(query, update, "TN_AB_ITEM", UpdateFlags.Multi);
return result;
}
public SqlExecuteResult UpdateUnitItemList(List itemList)
{
string sql = @"UPDATE TN_AB_B_AUXILIARY_UNIT SET CN_T_CREATE=CN_T_CREATE WHERE CN_S_ITEM_CODE=@CN_S_ITEM_CODE";
List cmds = new List();
foreach (AutoBomItemEntity entity in itemList)
{
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.CHAR, entity.CN_S_ITEM_CODE);
cmds.Add(cmd);
}
return ExecuteCommands(cmds, null);
}
}
}