using HH.WMS.BLL.InStock;
using HH.WMS.Common;
using HH.WMS.Common.External;
using HH.WMS.DAL;
using HH.WMS.DAL.ERP;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.ERP;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.BLL.ERP
{
///
/// 小磅单
///
public class TN_ER_ITEM_POUNDBLL : DapperBaseBLL
{
#region GET
public TN_ER_ITEM_POUNDEntity Get(string taskNo, int sync = 0)
{
var data = BLLCreator.Create>().GetSingleEntity(new { CN_S_TASK_NO = taskNo, CN_N_SYNC = sync });
return data;
}
public List GetList(int sync)
{
return CreateDAL>().GetList(new { CN_N_SYNC = sync });
}
public TN_ER_ITEM_POUNDEntity GetByTrayCode(string trayCode, string poundNo)
{
var data = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode, CN_S_POUND_NO = poundNo });
return data;
}
#endregion
#region UPDATE
public OperateResult UpdateSyncState(string poundNo, int syncState, IDbTransaction trans)
{
var result = BLLCreator.Create>().Update(new { CN_N_SYNC = syncState }, new { CN_S_POUND_NO = poundNo });
return result;
}
public OperateResult Update(string taskNo, int sync, LogPara logPara = null)
{
var result = DALCreator.Create>().Update(new { CN_N_SYNC = sync }, new { CN_S_TASK_NO = taskNo });
if (logPara != null) Log.Detail(logPara, "更新WMS中的小磅单" + result.Describe());
return result;
}
public OperateResult UpdateWeightAndQty(string poundNo, string trayCode, decimal trayWeight, decimal qty, IDbTransaction trans, LogPara logPara = null)
{
if (logPara == null) logPara = LogType.LogPara("更新小磅单重量和数量");
return DALCreator.Create>().Update(new { CN_F_WEIGHT = trayWeight, CN_F_QTY = qty }, new { CN_S_POUND_NO = poundNo, CN_S_TRAY_CODE = trayCode });
}
#endregion
#region ADD
///
/// 添加小磅单
///
///
///
///
///
public OperateResult Add(string trayCode, decimal trayWeight, string taskNo, IDbTransaction trans, LogPara logPara = null)
{
if (logPara == null) logPara = LogType.LogPara("添加小磅单");
var trayItems = BLLCreator.Create().GetByTrayCode(trayCode);
if (trayItems.Count() == 0) return OperateResult.Error("未找到当前托盘" + trayCode + "的物料!");
var trayInfo = BLLCreator.Create>().GetSingleEntity(new { CN_S_TRAY_CODE = trayCode });
var itemPounds = new List();
//小磅单号
var postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_ItemPound + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
var itemPoundNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
//流水号
postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_SerialNum + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
var serialNum = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
if (serialNum.Length > 3)
{
serialNum = serialNum.Substring(3, serialNum.Length - 3);
}
var lotNo = DateTime.Now.ToString("yyyyMMdd") + "02" + serialNum;
foreach (var trayItem in trayItems)
{
itemPounds.Add(new TN_ER_ITEM_POUNDEntity
{
CN_GUID = Guid.NewGuid().ToString(),
CN_S_POUND_NO = trayItem.CN_S_FIGURE_NO,
CN_S_OP_NO = itemPoundNo,
CN_S_ITEM_CODE = trayItem.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = trayItem.CN_S_ITEM_NAME,
CN_S_ITEM_SPEC = trayItem.CN_S_MODEL,
CN_S_STOCK_CODE = trayItem.CN_S_STOCK_CODE,
CN_F_WEIGHT = trayWeight,
CN_F_QTY = trayItem.CN_F_QUANTITY,
CN_DT_WEIGHT = DateTime.Now,
CN_S_LOT_NO = lotNo,
CN_DT_OPERATION = DateTime.Now,
CN_F_TRAY_WEIGHT = trayInfo.CN_F_GROSSWEIGHT,
CN_T_CREATE = DateTime.Now,
CN_N_SYNC = -1,
CN_S_TASK_NO = taskNo,
CN_DT_CREATE = DateTime.Now,
CN_S_TRAY_CODE = trayCode
});
}
return DALCreator.Create>().AddRange(itemPounds, trans);
}
#endregion
#region DELETE
public OperateResult Delete(string taskNo, LogPara logPara = null)
{
var result = DALCreator.Create>().Delete(new { CN_N_SYNC = -1, CN_S_TASK_NO = taskNo });
if (logPara != null) Log.Detail(logPara, "任务取消,删除WMS中的小磅单" + result.Describe());
return result;
}
#endregion
}
}