using HH.Redis.ReisModel;
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.Entitys.Entitys;
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 ArrivalController : BaseController
{
#region 新增到货单
///
/// 新增到货单
///
/// token验证值
/// 到货单实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-13
[HttpPost]
public OperateResult AddArrival(TN_WM_ARRIVAL_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_S_OWNER = Constants.DefaultOwner;
entity.CN_GUID = Guid.NewGuid().ToString();
int rowNo = 1;
foreach (var arrivalDtl in entity.DTLEntity)
{
arrivalDtl.CN_GUID = Guid.NewGuid().ToString();
arrivalDtl.CN_N_ROW_NO = rowNo++;
arrivalDtl.CN_S_MSTGUID = entity.CN_GUID;
arrivalDtl.CN_S_ARRIVAL_NO = entity.CN_S_ARRIVAL_NO;
arrivalDtl.CN_S_STATE = entity.CN_S_STATE;
arrivalDtl.CN_S_ITEM_STATE = string.IsNullOrEmpty(arrivalDtl.CN_S_ITEM_STATE.ToString()) ? "合格" : arrivalDtl.CN_S_ITEM_STATE.ToString();
arrivalDtl.CN_F_PRINTING_QTY = 0;
arrivalDtl.CN_N_PALLETZING_QTY = 0;
arrivalDtl.CN_F_ADDUP_ALLOT_QTY = 0;
arrivalDtl.CN_F_INSTOCK_QUANTITY = arrivalDtl.CN_F_QUANTITY;
}
result = BLLCreator.Create().AddArrival(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_ARRIVAL_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 SubmitArrival(examineList);
}
return result;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 修改到货单
///
/// 修改到货单
///
/// token验证值
/// 到货单实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpPost]
public OperateResult UpdateArrival(TN_WM_ARRIVAL_MSTEntity entity)
{
try
{
return ValidateToken(entity.TokenId, t =>
{
OperateResult result = new OperateResult();
var existsArrivalMst = BLLCreator.Create>().GetSingleEntity(new
{
CN_S_ARRIVAL_NO = entity.CN_S_ARRIVAL_NO
});
entity.CN_GUID = existsArrivalMst.CN_GUID;
entity.CN_T_CREATE = existsArrivalMst.CN_T_CREATE;
entity.CN_S_CREATOR = existsArrivalMst.CN_S_CREATOR;
entity.CN_S_CREATOR_BY = existsArrivalMst.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_S_OWNER = Constants.DefaultOwner;
//修改
entity.CN_T_MODIFY = DateTime.Now;
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_ARRIVAL_NO = entity.CN_S_ARRIVAL_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().UpdateArrival(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_ARRIVAL_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 SubmitArrival(examineList);
}
return result;
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 删除到货单
///
/// 删除到货单
///
/// token验证值
/// 到货单单号
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpGet]
public OperateResult DeleteArrival(string arrivalNo)
{
try
{
return ValidateToken(t =>
{
return BLLCreator.Create().DeleteArrival(arrivalNo);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 提交到货单
///
/// 提交到货单
///
/// token验证值
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpPost]
public OperateResult SubmitArrival(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return BLLCreator.Create().SubmitArrival(entity, t);
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 审核到货单
///
/// 审核到货单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpPost]
public OperateResult AuditArrival(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeArrivalOperate(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().AuditArrival(entity, t);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 反审到货单
///
/// 反审到货单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpPost]
public OperateResult ReAuditArrival(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeArrivalOperate(entity[0].CN_S_FROM_NO, outMst =>
{
//反审时状态必须为 已审核
if (outMst.CN_S_STATE != Constants.State_Audit)
{
return OperateResult.Error("该单据状态已被修改,请刷新页面");
}
return BLLCreator.Create().ReAuditArrival(entity);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 驳回到货单
///
/// 驳回到货单
///
/// 审批实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-14
[HttpPost]
public OperateResult RejectArrival(List entity)
{
try
{
return ValidateToken(entity[0].TokenId, t =>
{
return ChangeArrivalOperate(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().RejectArrival(entity, rejectEntity);
});
});
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 查询数据集
///
/// 获取到货单列表
///
/// 查询实体(页码,显示条数,条件等)
///
/// [HANHE(XDL)] CREATED BY 2018-11-24
[HttpPost]
public string GetArrivalList(SearchModel searchModel)
{
return ValidateToken(searchModel.TokenId, t =>
{
IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
//OperateResult pagingList = BLLCreator.Create().GetArrivalList(searchModel);
//return JsonConvert.SerializeObject(pagingList, timeFormat);
long total;
DataTable dt = BLLCreator.Create().GetArrivalList(searchModel, out total, false);
OperateResult pagingList = OperateResult.Succeed("", new
{
rows = dt,
total = total
});
return JsonConvert.SerializeObject(pagingList, timeFormat);
});
}
///
/// 导出
///
///
///
[HttpPost]
public string GetArrivalListExport(SearchModel searchModel)
{
return ValidateToken(searchModel.TokenId, t =>
{
IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
//OperateResult pagingList = BLLCreator.Create().GetArrivalList(searchModel);
//return JsonConvert.SerializeObject(pagingList, timeFormat);
long total;
DataTable dt = BLLCreator.Create().GetArrivalList(searchModel, out total, true);
OperateResult pagingList = OperateResult.Succeed("", new
{
rows = dt,
total = total
});
return JsonConvert.SerializeObject(pagingList, timeFormat);
});
}
///
/// 根据单号获取主子表信息
///
/// 模糊查询条件:到货单号
///
/// [HANHE(XDL)] CREATED BY 2018-11-19
[HttpGet]
public string GetArrivalMstAndDtl(string arrivalNo)
{
try
{
return ValidateToken(t =>
{
TN_WM_ARRIVAL_MSTEntity arrivalMstEntity = BLLCreator.Create().GetArrivalMstAndDtl(arrivalNo);
return JsonConvert.SerializeObject(OperateResult.Succeed("", arrivalMstEntity));
});
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 带出到货单实体
///
/// 带出入库单实体
///
///
///
///
public OperateResult ChangeArrivalOperate(string arrivalNo, Func funcArrival)
{
try
{
if (string.IsNullOrEmpty(arrivalNo))
return OperateResult.Error("到货单号不可为空");
var arrivalMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_ARRIVAL_NO = arrivalNo });
if (arrivalMst == null)
return OperateResult.Error("未找到到货单号:" + arrivalNo);
return funcArrival(arrivalMst);
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
#endregion
#region 入库单联机新增-选择来源
///
/// 入库单页面,选择来源单据
///
/// 实体
///
/// [HANHE(XDL)] CREATED BY 2018-11-22
[HttpPost]
public string GetFromArrivalList(SearchModel searchModel)
{
return ValidateToken(searchModel.TokenId, t =>
{
OperateResult pagingList = BLLCreator.Create().GetFromArrivalList(searchModel);
return JsonConvert.SerializeObject(pagingList);
});
}
[HttpGet]
public string GetFromArrivalDtl(string arrivalNo)
{
return ValidateToken(t =>
{
List arrivalDtl = BLLCreator.Create().GetFromArrivalDtl(arrivalNo);
return JsonConvert.SerializeObject(arrivalDtl);
});
}
#endregion
#region 查询到货单主表
///
/// 查询到货单主表
///
///
/// [HANHE(lt)] CREATED BY 2018-11-24
public string GetMstList(string opNo)
{
try
{
string sqlwhere = "";
if (!string.IsNullOrEmpty(opNo))
{
sqlwhere = " where CN_S_ARRIVAL_NO like '%" + opNo + "%'";
}
DataTable dt = BLLCreator.Create().GetMstList(sqlwhere);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
#region 查询到货单子表
///
/// 查询到货单子表
///
///
/// [HANHE(lt)] CREATED BY 2018-11-24
public string GetDtlList(string opNo)
{
try
{
string sqlwhere = "";
if (!string.IsNullOrEmpty(opNo))
{
sqlwhere = " where CN_S_ARRIVAL_NO='" + opNo + "'";
}
DataTable dt = BLLCreator.Create().GetDtlList(sqlwhere);
return JsonConvert.SerializeObject(OperateResult.Succeed("", dt));
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message.ToString()));
}
}
#endregion
}
}