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