using HH.Redis.ReisModel;
using HH.WMS.Common;
using HH.WMS.DAL;
using HH.WMS.DAL.Basic;
using HH.WMS.DAL.InStock;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
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_INBLL : DapperBaseBLL
{
#region 新增入库订单
///
/// 新增入库订单
///
/// 入库订单实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
public OperateResult AddInOrder(TN_WM_IN_MSTEntity Entity, RedisUserEntity t)
{
//子表数据集合
List DTLEntity = Entity.DTLEntity;
OperateResult operateResult = UseTransaction(trans =>
{
//新增主表
CreateDAL>().Add(Entity, trans);
//新增子表
CreateDAL>().AddRange(DTLEntity, trans);
});
return operateResult;
}
#endregion
#region 修改入库订单
///
/// 修改入库订单
///
/// 入库订单实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
public OperateResult UpdateInOrder(TN_WM_IN_MSTEntity entity)
{
//子表数据集合
List DTLEntity = entity.DTLEntity;
OperateResult operateResult = UseTransaction(trans =>
{
//修改主表
CreateDAL>().Update(entity, new { CN_S_OP_NO = entity.CN_S_OP_NO }, trans);
//删除子表
CreateDAL>().Delete(new { CN_S_OP_NO = entity.CN_S_OP_NO }, trans);
//新增子表
CreateDAL>().AddRange(DTLEntity, trans);
});
return operateResult;
}
#endregion
#region 删除入库订单
///
/// 删除入库订单
///
/// 入库订单号
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
public OperateResult DeleteInOrder(string opNo)
{
OperateResult operateResult = UseTransaction(trans =>
{
//删除主表
CreateDAL>().Delete(new { CN_S_OP_NO = opNo }, trans);
//删除子表
CreateDAL>().Delete(new { CN_S_OP_NO = opNo }, trans);
});
return operateResult;
}
#endregion
#region 提交入库订单
///
/// 提交入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
public OperateResult SubmitInOrder(List entity)
{
//获取策略:入库是否免审
TN_WM_IN_MSTEntity inMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_OP_NO = entity[0].CN_S_FROM_NO });
if (inMst == null)
{
return OperateResult.Error("未获取到提交单据实体!");
}
string InOrderAutoAudit = GetStrategy(inMst.CN_S_STOCK_CODE, "InOrderAutoAudit");
OperateResult operateResult = new OperateResult();
//入库单免审-自动审核
if (InOrderAutoAudit == Constants.Y)
{
operateResult = AuditInOrder(entity);
}
else
{
operateResult = UseTransaction(trans =>
{
//提交主表
CreateDAL().ExamineMst(entity, Constants.State_Submit, trans);
//提交子表
CreateDAL().ExamineDtl(entity, Constants.State_Submit, trans);
});
}
return operateResult;
}
#endregion
#region 审核入库订单
///
/// 审核入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
public OperateResult AuditInOrder(List entity)
{
OperateResult operateResult = UseTransaction(trans =>
{
//审核主表
CreateDAL().ExamineMst(entity, Constants.State_Audit, trans);
//审核子表
CreateDAL().ExamineDtl(entity, Constants.State_Audit, trans);
});
return operateResult;
}
#endregion
#region 反审入库订单
///
/// 反审入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2018-02-20
public OperateResult ReAuditInOrder(List entity)
{
//判断是否生成了到货单
TN_WM_ARRIVAL_MSTEntity arrivalMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_FROM_NO = entity[0].CN_S_FROM_NO });
if (arrivalMst != null)
{
return OperateResult.Error("该入库订单已进入下一个流程,反审失败!");
}
OperateResult operateResult = UseTransaction(trans =>
{
//反审主表
CreateDAL().ExamineMst(entity, Constants.State_ReAudit, trans);
//反审子表
CreateDAL().ExamineDtl(entity, Constants.State_ReAudit, trans);
});
return operateResult;
}
#endregion
#region 驳回入库订单
///
/// 驳回入库订单
///
/// 审批实体
/// 驳回记录实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
public OperateResult RejectInOrder(List entity, TN_WM_B_REJECTEntity rejectEntity)
{
OperateResult operateResult = UseTransaction(trans =>
{
//驳回主表
CreateDAL().ExamineMst(entity, Constants.State_Reject, trans);
//驳回子表
CreateDAL().ExamineDtl(entity, Constants.State_Reject, trans);
//插入驳回记录
CreateDAL>().Add(rejectEntity, trans);
});
return operateResult;
}
#endregion
#region 到货单联机新增-选择来源
///
/// 到货单页面,选择来源单据
///
/// 实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-26
public OperateResult GetFromInOrderList(SearchModel searchModel)
{
return CreateDAL().GetFromInOrderList(searchModel);
}
public List GetFromInOrderDtl(string GetFromInOrderDtl)
{
return CreateDAL().GetFromInOrderDtl(GetFromInOrderDtl);
}
#endregion
#region 查询到货单列表
///
/// 查询入库订单列表
///
/// 实体
///
/// [HANHE(XDL)] CREATED BY 2018-12-18
public OperateResult GetInOrderList(SearchModel searchModel)
{
return CreateDAL().GetInOrderList(searchModel);
}
#endregion
#region 根据单号获取主子表信息
///
/// 根据单号获取主子表信息
///
/// 模糊查询条件:入库单号
///
public TN_WM_IN_MSTEntity GetInOrderMstAndDtl(string opNo)
{
TN_WM_IN_MSTEntity inMstEntity = CreateDAL>().GetSingleEntity(new { CN_S_OP_NO = opNo });
List inDtlEntity = CreateDAL>().GetList(new { CN_S_OP_NO = opNo });
//foreach (var entity in inDtlEntity)
//{
// AutoBomItemEntity itemenity = CreateDAL().GetItemEntity(entity.CN_S_ITEM_CODE);
// entity.CN_F_WARRNTY_PARTS = Convert.ToDecimal(itemenity.CN_F_WARRNTY_PARTS);
// entity.AuxiliaryUnitList = itemenity.AuxiliaryUnitList;
//}
inMstEntity.DTLEntity = inDtlEntity;
return inMstEntity;
}
#endregion
}
}