using HH.WMS.BLL;
using HH.WMS.BLL.InStock;
using HH.WMS.Common;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HH.WMS.WebApi.Areas.Common.Controllers;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace HH.WMS.WebApi.Areas.InStock.Controllers
{
public class InOrderController : BaseController
{
#region 新增入库订单
///
/// 新增入库订单
///
/// 入库订单实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult AddInOrder(TN_WM_IN_MSTEntity entity)
{
try
{
return ValidateToken(entity.TokenId, t =>
{
OperateResult result = new OperateResult();
entity.CN_S_ORGAN = t.CN_S_ORGCODE;
entity.CN_S_CREATOR = t.CN_S_LOGIN;
entity.CN_S_CREATOR_BY = t.CN_S_NAME;
entity.CN_T_CREATE = DateTime.Now;
entity.CN_S_MODIFY = t.CN_S_LOGIN;
entity.CN_S_MODIFY_BY = t.CN_S_NAME;
entity.CN_T_MODIFY = DateTime.Now;
entity.CN_GUID = Guid.NewGuid().ToString();
entity.CN_S_OWNER = Constants.DefaultOwner;
int rowNo = 1;
foreach (var inDtl in entity.DTLEntity)
{
inDtl.CN_GUID = Guid.NewGuid().ToString();
inDtl.CN_N_ROW_NO = rowNo++;
inDtl.CN_S_MSTGUID = entity.CN_GUID;
inDtl.CN_S_OP_NO = entity.CN_S_OP_NO;
inDtl.CN_S_STATE = entity.CN_S_STATE;
inDtl.CN_S_ITEM_STATE = string.IsNullOrEmpty(inDtl.CN_S_ITEM_STATE) ? "合格" : inDtl.CN_S_ITEM_STATE.ToString();
inDtl.CN_T_CREATE = DateTime.Now;
inDtl.CN_S_CREATOR = entity.CN_S_CREATOR;
inDtl.CN_S_CREATOR_BY = entity.CN_S_CREATOR_BY;
inDtl.CN_T_MODIFY = DateTime.Now;
inDtl.CN_S_MODIFY = entity.CN_S_MODIFY;
inDtl.CN_S_MODIFY_BY = entity.CN_S_MODIFY_BY;
}
result = BLLCreator.Create().AddInOrder(entity, t);
if (result.Success && (entity.OperateMessage == Constants.Operate_EditAndSubmit))
{
List examineList = new List();
examineList.Add(new TN_WM_B_EXAMINEEntity()
{
CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
CN_S_EXAMINE_TYPE = Constants.State_Submit,
CN_S_OP_FROM = "入库订单",
CN_S_FROM_NO = entity.CN_S_OP_NO,
CN_S_CREATOR = t.CN_S_LOGIN,
CN_S_CREATOR_BY = t.CN_S_NAME,
CN_T_CREATE = DateTime.Now,
CN_S_OPINION = "",
TokenId = entity.TokenId
});
return SubmitInOrder(examineList);
}
return result;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 修改入库订单
///
/// 修改入库订单
///
/// 入库订单实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult UpdateInOrder(TN_WM_IN_MSTEntity entity)
{
try
{
return ValidateToken(entity.TokenId, t =>
{
OperateResult result = new OperateResult();
var existsInMst = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_OP_NO = entity.CN_S_OP_NO
});
entity.CN_GUID = existsInMst.CN_GUID;
entity.CN_T_CREATE = existsInMst.CN_T_CREATE;
entity.CN_S_CREATOR = existsInMst.CN_S_CREATOR;
entity.CN_S_CREATOR_BY = existsInMst.CN_S_CREATOR_BY;
//根据tokenId 获取当前登陆信息
entity.CN_S_ORGAN = t.CN_S_ORGCODE;
entity.CN_S_MODIFY = t.CN_S_LOGIN;
entity.CN_S_MODIFY_BY = t.CN_S_NAME;
//修改
entity.CN_T_MODIFY = DateTime.Now;
//货主不能为空,暂时赋值
entity.CN_S_OWNER = Constants.DefaultOwner;
int rowNo = 1;
foreach (var inDtl in entity.DTLEntity)
{
inDtl.CN_GUID = Guid.NewGuid().ToString();
inDtl.CN_N_ROW_NO = rowNo++;
inDtl.CN_S_MSTGUID = entity.CN_GUID;
inDtl.CN_S_OP_NO = entity.CN_S_OP_NO;
inDtl.CN_S_STATE = entity.CN_S_STATE;
inDtl.CN_S_ITEM_STATE = string.IsNullOrEmpty(inDtl.CN_S_ITEM_STATE.ToString()) ? "合格" : inDtl.CN_S_ITEM_STATE.ToString();
inDtl.CN_T_CREATE = DateTime.Now;
inDtl.CN_S_CREATOR = entity.CN_S_CREATOR;
inDtl.CN_S_CREATOR_BY = entity.CN_S_CREATOR_BY;
inDtl.CN_T_MODIFY = DateTime.Now;
inDtl.CN_S_MODIFY = entity.CN_S_MODIFY;
inDtl.CN_S_MODIFY_BY = entity.CN_S_MODIFY_BY;
}
result = BLLCreator.Create().UpdateInOrder(entity);
if (result.Success && (entity.OperateMessage == Constants.Operate_EditAndSubmit))
{
List examineList = new List();
examineList.Add(new TN_WM_B_EXAMINEEntity()
{
CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
CN_S_EXAMINE_TYPE = Constants.State_Submit,
CN_S_OP_FROM = "入库订单",
CN_S_FROM_NO = entity.CN_S_OP_NO,
CN_S_CREATOR = t.CN_S_LOGIN,
CN_S_CREATOR_BY = t.CN_S_NAME,
CN_T_CREATE = DateTime.Now,
CN_S_OPINION = "",
TokenId = entity.TokenId
});
return SubmitInOrder(examineList);
}
return result;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 删除入库订单
///
/// 删除入库订单
///
/// 入库订单号
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpGet]
public OperateResult DeleteInOrder(string opNo)
{
try
{
return ValidateToken(t =>
{
return BLLCreator.Create().DeleteInOrder(opNo);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 提交入库订单
///
/// 提交入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult SubmitInOrder(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return BLLCreator.Create().SubmitInOrder(entity);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 审核入库订单
///
/// 审核入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult AuditInOrder(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeInOperate(entity[0].CN_S_FROM_NO, outMst =>
{
if (outMst.CN_S_STATE != Constants.State_Submit && outMst.CN_S_STATE != Constants.State_ReAudit)
{
return OperateResult.Error("该单据状态已被修改,请刷新页面");
}
return BLLCreator.Create().AuditInOrder(entity);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 反审入库订单
///
/// 反审入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult ReAuditInOrder(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeInOperate(entity[0].CN_S_FROM_NO, outMst =>
{
//反审时状态必须为 已审核
if (outMst.CN_S_STATE != Constants.State_Audit)
{
return OperateResult.Error("该单据状态已被修改,请刷新页面");
}
return BLLCreator.Create().ReAuditInOrder(entity);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 驳回入库订单
///
/// 驳回入库订单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2019-02-20
[HttpPost]
public OperateResult RejectInOrder(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeInOperate(entity[0].CN_S_FROM_NO, outMst =>
{
string rejectMsg = Util.ToString(entity[0].CN_S_OPINION);
if (string.IsNullOrEmpty(rejectMsg))
return OperateResult.Error("驳回意见不可为空");
//驳回时状态必须为 已提交
if (outMst.CN_S_STATE != Constants.State_Submit && outMst.CN_S_STATE != Constants.State_ReAudit)
{
return OperateResult.Error("该单据状态已被修改,请刷新页面");
} //驳回实体
TN_WM_B_REJECTEntity rejectEntity = new TN_WM_B_REJECTEntity()
{
CN_GUID = Guid.NewGuid().ToString(),
CN_S_OP_FROM = Constants.Rule_OutOrder,
CN_S_FROM_NO = entity[0].CN_S_FROM_NO,
CN_S_OPINION = rejectMsg,
CN_S_CREATOR = Util.ToString(entity[0].CN_S_CREATOR),
CN_S_CREATOR_BY = Util.ToString(entity[0].CN_S_CREATOR_BY),
CN_T_CREATE = DateTime.Now,
CN_S_MODIFY = Util.ToString(entity[0].CN_S_CREATOR),
CN_S_MODIFY_BY = Util.ToString(entity[0].CN_S_CREATOR_BY),
CN_T_MODIFY = DateTime.Now
};
return BLLCreator.Create().RejectInOrder(entity, rejectEntity);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 带出入库订单实体
///
/// 带出入库订单实体
///
///
///
///
public OperateResult ChangeInOperate(string opNo, Func funcIn)
{
try
{
if (string.IsNullOrEmpty(opNo))
return OperateResult.Error("入库订单号不可为空");
var inMst = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_OP_NO = opNo
});
if (inMst == null)
return OperateResult.Error("未找到入库订单号:" + opNo);
return funcIn(inMst);
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 查询数据集
///
/// 获取入库订单列表
///
/// 查询实体(页码,显示条数,条件等)
///
/// [HANHE(XDL)] CREATED BY 2018-11-24
[HttpPost]
public string GetInOrderList(SearchModel searchModel)
{
return ValidateToken(searchModel.TokenId, t =>
{
IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
OperateResult pagingList = BLLCreator.Create().GetInOrderList(searchModel);
return JsonConvert.SerializeObject(pagingList, timeFormat);
});
}
#endregion
#region 到货单联机新增-选择来源
///
/// 到货单页面,选择来源单据
///
/// 实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-26
[HttpPost]
public string GetFromInOrderList(SearchModel searchModel)
{
return ValidateToken(searchModel.TokenId, t =>
{
OperateResult pagingList = BLLCreator.Create().GetFromInOrderList(searchModel);
return JsonConvert.SerializeObject(pagingList);
});
}
[HttpGet]
public string GetFromInOrderDtl(string opNo)
{
return ValidateToken(t =>
{
List arrivalDtl = BLLCreator.Create().GetFromInOrderDtl(opNo);
return JsonConvert.SerializeObject(arrivalDtl);
});
}
///
/// 根据单号获取主子表信息
///
/// 模糊查询条件:入库单号
///
[HttpGet]
public string GetInOrderMstAndDtl(string opNo)
{
try
{
return ValidateToken(t =>
{
TN_WM_IN_MSTEntity inMstEntity = BLLCreator.Create().GetInOrderMstAndDtl(opNo);
return JsonConvert.SerializeObject(OperateResult.Succeed("", inMstEntity));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
}
}