using HH.Redis.ReisModel;
using HH.WMS.BLL.Basic;
using HH.WMS.Common;
using HH.WMS.DAL;
using HH.WMS.DAL.InStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Entitys;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.BLL.InStock
{
public class TN_WM_ITEMBACK_MSTBLL : DapperBaseBLL
{
#region 保存还料数据
///
/// 保存还料数据
///
/// 还料实体
/// 用户实体
///
public OperateResult SaveItemBack(ItemOnShelfEntity entity, RedisUserEntity userEntity)
{
OperateResult operateResult = new OperateResult();
try
{
if (entity.row.Count > 0)
{
TN_WM_ITEMBACK_MSTEntity mstEntity = new TN_WM_ITEMBACK_MSTEntity();
List dtlEntityList = new List();
string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.ItemBackNo + "\",\"orgId\":\"" + userEntity.CN_S_ORG_GUID + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}";
string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
if (string.IsNullOrEmpty(opNo))
{
return OperateResult.Error("生成还料单号失败!");
}
Log.Info("===>生成还料单号:====>", opNo);
#region 拼接主表数据
mstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
mstEntity.CN_S_OWNER = entity.row[0].CN_S_OWNER.ToString();
mstEntity.CN_S_OP_NO = opNo;
mstEntity.CN_S_STATE = Constants.State_New;
mstEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN;
mstEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME;
mstEntity.CN_T_CREATE = DateTime.Now;
mstEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN;
mstEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME;
mstEntity.CN_T_MODIFY = DateTime.Now;
#endregion
Log.Info("===>生成还料主表:====>", JsonConvert.SerializeObject(mstEntity));
int rowIndex = 1;
foreach (var item in entity.row)
{
#region 拼接子表数据
TN_WM_ITEMBACK_DTLEntity dtlEntity = new TN_WM_ITEMBACK_DTLEntity();
dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper();
dtlEntity.CN_S_OP_NO = opNo;
dtlEntity.CN_N_ROW_NO = rowIndex;
dtlEntity.CN_S_UNIQUE_CODE = "";
dtlEntity.CN_S_LOT_NO = item.CN_S_LOT_NO;
dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO;
dtlEntity.CN_S_PRODUCTION_BATCH = item.CN_S_PRODUCTION_BATCH;
dtlEntity.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE;
dtlEntity.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME;
dtlEntity.CN_S_ITEM_STATE = string.IsNullOrEmpty(item.CN_S_ITEM_STATE) ? Constants.ItemState_Qualified : item.CN_S_ITEM_STATE.ToString();
dtlEntity.CN_F_PURCHASE_PRICE = item.CN_F_PURCHASE_PRICE;
dtlEntity.CN_F_RETAIL_PRICE = item.CN_F_RETAIL_PRICE;
dtlEntity.CN_T_PRODUCTION = string.IsNullOrEmpty(item.CN_T_PRODUCTION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_PRODUCTION);
dtlEntity.CN_T_EXPIRATION = string.IsNullOrEmpty(item.CN_T_EXPIRATION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_EXPIRATION);
dtlEntity.CN_S_PACKING_UNIT = item.CN_S_PACKING_UNIT.ToString();
dtlEntity.CN_F_PACKING_QTY = Convert.ToDecimal(item.CN_F_PACKING_QTY);
dtlEntity.CN_F_QUANTITY = Convert.ToDecimal(item.CN_F_QUANTITY);
dtlEntity.CN_S_VENDOR_NO = item.CN_S_VENDOR_NO;
dtlEntity.CN_S_VENDOR_NAME = item.CN_S_VENDOR_NAME;
dtlEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN;
dtlEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME;
dtlEntity.CN_T_CREATE = DateTime.Now;
dtlEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN;
dtlEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME;
dtlEntity.CN_T_MODIFY = DateTime.Now;
dtlEntityList.Add(dtlEntity);
rowIndex++;
#endregion
}
Log.Info("===>生成还料子表:====>", JsonConvert.SerializeObject(dtlEntityList));
operateResult = UseTransaction(trans =>
{
if (mstEntity != null)
{
//新增还料主表
CreateDAL>().Add(mstEntity, trans);
}
if (dtlEntityList.Any())
{
//新增还料子表
CreateDAL>().AddRange(dtlEntityList, trans);
}
});
Log.Info("===>保存还料执行结果:====>", JsonConvert.SerializeObject(operateResult));
}
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message.ToString());
}
return operateResult;
}
#endregion
///
/// 获取可还料单列表
///
/// 模糊查询条件:还料单号
///
public List GetItemBackList(string opNo)
{
return CreateDAL().GetItemBackList(opNo);
}
#region 根据单号获取主子表信息(PDA)
///
/// 根据单号获取主子表信息
///
/// 模糊查询条件:还料单号
///
public TN_WM_ITEMBACK_MSTEntity GetItemBackMstAndDtl(string opNo)
{
TN_WM_ITEMBACK_MSTEntity mstEntity = CreateDAL>().GetSingleEntity(new { CN_S_OP_NO = opNo });
List dtlEntity = CreateDAL>().GetList(new { CN_S_OP_NO = opNo });
foreach (var item in dtlEntity)
{
AutoBomItemEntity itemEnity = BLLCreator.Create().GetItem(item.CN_S_ITEM_CODE);
item.CN_S_MODEL = itemEnity == null ? "" : itemEnity.CN_S_MODEL;
}
mstEntity.DTLEntity = dtlEntity;
return mstEntity;
}
#endregion
}
}