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 } }