using HH.AutoBom.Core;
using HH.WMS.Common;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Common;
using HH.WMS.WebUI.Controllers;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace HH.WMS.WebUI.Areas.OutStock.Controllers
{
public class OutController : BaseController
{
public ActionResult PrintOutFromOrder(string stockCode)
{
ViewData["stockCode"] = stockCode;
return View();
}
#region 出库订单列表视图
///
/// 出库订单列表视图
///
///
public ActionResult OutList()
{
return View();
}
#endregion
#region 出库订单新增编辑视图
///
/// 出库订单新增编辑视图
///
///
///
public ActionResult OutEdit(string opNo, bool read = false, bool audit = false)
{
TN_WM_OUT_MSTEntity outMst = new TN_WM_OUT_MSTEntity();
var loginer = FormsAuth.GetUserData();
//新增
if (string.IsNullOrEmpty(opNo))
{
string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.Rule_OutOrder + "\",\"orgId\":\"0\",\"orgFlag\":\"\"}";
string orderNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
outMst.CN_S_OP_NO = orderNo;
outMst.CN_T_OP_DATE = DateTime.Now;
outMst.CN_S_OPERATOR = loginer.UserName;
outMst.CN_S_CREATOR = loginer.UserCode;
outMst.CN_S_CREATOR_BY = loginer.UserName;
outMst.CN_S_STATE = Constants.State_New;
//新增
outMst.OperateType = OperateType.Add;
}
else
{
//修改
string result = HttpWMS_Get("api/Out/GetOutMstAndDtl?opNo=" + opNo);
var resultEntity = JsonConvert.DeserializeObject(result);
outMst = resultEntity.GetData();
if (outMst == null)
{
return View(new TN_WM_OUT_MSTEntity()
{
OperateMessage = "出库订单:" + opNo + "已被删除!"
});
}
//编辑
outMst.OperateType = OperateType.Edit;
//查看
if (read) outMst.OperateType = OperateType.Read;
//审核
if (audit)
{
outMst.OperateType = OperateType.Audit;
//获取驳回记录
string rejectHistory = HttpWMS_Get("api/Reject/GetRejectHistory?opNo=" + opNo);
var rejectResult = JsonConvert.DeserializeObject(rejectHistory);
var rejectList = rejectResult.GetData>();
//所有驳回记录
if (rejectList != null)
outMst.CN_S_HISTORY_REJECT = string.Join(";", rejectList.Select(p => p.CN_S_OPINION));
}
outMst.CN_S_MODIFY = loginer.UserName;
outMst.CN_S_MODIFY_BY = loginer.UserCode;
}
return View(outMst);
}
#endregion
#region 出库订单审核视图
///
/// 出库订单审核视图
///
///
public ActionResult Audit()
{
return View();
}
#endregion
#region 出库订单新增修改
///
/// 出库订单新增修改
///
///
[HttpPost]
public string OutEdit()
{
var sr = new StreamReader(Request.InputStream);
var stream = sr.ReadToEnd();
TN_WM_OUT_MSTEntity outMst = JsonConvert.DeserializeObject(stream);
return HttpWMS_Post("api/Out/OutEdit", JsonConvert.SerializeObject(new
{
TokenId = ViewConstants.TokenId,
PostData = outMst
}));
}
#endregion
#region 出库订单列表查询
///
/// 出库订单列表查询
///
///
///
///
public string GetOutList(int pageIndex, int pageSize, string opNo, string logistics, string stockCode, string opType, string state, string customName, string waveNo, string valueDate)
{
string[] date = new string[2];
if (!string.IsNullOrEmpty(valueDate))
date = JsonConvert.DeserializeObject(valueDate);
var searchModel = new
{
TokenId = ViewConstants.TokenId,
pageIndex = pageIndex,
pageSize = pageSize,
SearchCondition = new
{
CN_S_OP_NO = opNo,
CN_S_STATE = state,
CN_S_CUSTOMER_NAME = customName,
CN_S_WAVE_CODE = waveNo,
CN_S_LOGISTICS_NAME = logistics,
CN_S_STOCK_CODE = stockCode,
CN_S_OP_TYPE = opType,
CN_T_START = !string.IsNullOrEmpty(valueDate) ? date[0] : "",
CN_T_END = !string.IsNullOrEmpty(valueDate) ? date[1] : ""
}
};
return HttpWMS_Post("api/Out/GetOutList", JsonConvert.SerializeObject(searchModel));
}
#endregion
#region 出库订单删除
///
/// 出库订单删除
///
///
///
public string DeleteOut(string opNo)
{
return HttpWMS_Get("api/Out/DeleteOut?opNo=" + opNo);
}
#endregion
#region 出库订单提交
///
/// 出库订单提交
///
///
///
public string SubmitOut(string opNo)
{
return HttpWMS_Get("api/Out/SubmitOut?opNo=" + opNo);
}
#endregion
#region 获取出库订单所有客户
///
/// 获取出库订单所有客户
///
///
public string GetDistinctCustom()
{
return HttpWMS_Get("api/Out/GetDistinctCustom");
}
#endregion
#region 出库订单子表数据
///
/// 出库订单子表数据
///
///
///
public string GetOutDtl(string opNo)
{
return HttpWMS_Get("api/Out/GetOutDtl?opNo=" + opNo);
}
#endregion
#region 驳回
///
/// 驳回
///
///
///
public string Reject(TN_WM_B_REJECTEntity rejectEntity)
{
if (rejectEntity == null)
return JsonConvert.SerializeObject(OperateResult.Error("参数不正确!"));
var loginer = FormsAuth.GetUserData();
rejectEntity.CN_S_CREATOR = loginer.UserCode;
rejectEntity.CN_S_CREATOR_BY = loginer.UserName;
rejectEntity.CN_S_MODIFY = loginer.UserCode;
rejectEntity.CN_S_MODIFY_BY = loginer.UserName;
return HttpWMS_Post("api/Out/Reject", JsonConvert.SerializeObject(new
{
TokenId = ViewConstants.TokenId,
PostData = rejectEntity
}));
}
#endregion
#region 审核
///
/// 审核
///
///
///
public string AuditOut(string opNo)
{
return HttpWMS_Get("api/Out/AuditOut?opNo=" + opNo);
}
#endregion
#region 反审
///
/// 反审
///
///
///
public string ReAuditOut(string opNo)
{
return HttpWMS_Get("api/Out/ReAuditOut?opNo=" + opNo);
}
#endregion
#region 合单
///
/// 合单
///
///
///
public string MergeOrder()
{
var sr = new StreamReader(Request.InputStream);
var stream = sr.ReadToEnd();
List outMstList = JsonConvert.DeserializeObject>(stream);
return HttpWMS_Post("api/Out/MergeOrder",
JsonConvert.SerializeObject(new
{
TokenId = ViewConstants.TokenId,
PostData = outMstList
}));
}
#endregion
#region 取消
///
/// 取消
///
///
///
public string CancelOut(string opNo)
{
return HttpWMS_Get("api/Out/CancelOut?opNo=" + opNo);
}
#endregion
#region 获取物料可用量
///
/// 获取物料可用量
///
///
///
public string GetItemStockQty(string owner, string itemCode, string itemState)
{
return HttpWMS_Get("api/Out/GetItemStockQty?owner=" + owner + "&itemCode=" + itemCode + "&itemState=" + itemState);
}
#endregion
public string ExportOut()
{
//XML文件流
var sr = new System.IO.StreamReader(Request.InputStream);
var stream = sr.ReadToEnd();
var loginer = FormsAuth.GetUserData();
var TokenId = loginer.Extend1;
var DynamicObject = JsonConvert.DeserializeObject(stream);
dynamic formData = DynamicObject["formData"];
string[] date = new string[2];
if (!string.IsNullOrEmpty(Util.ToString(formData.valueDate)))
date = JsonConvert.DeserializeObject(formData.valueDate);
var searchModel = new
{
TokenId = ViewConstants.TokenId,
IsExport = true,
SearchCondition = new
{
CN_S_OP_NO = Util.ToString(formData.opNo),
CN_S_STATE = Util.ToString(formData.state),
CN_S_CUSTOMER_NAME = Util.ToString(formData.customName),
CN_S_LOGISTICS_NAME = Util.ToString(formData.logistics),
CN_S_STOCK_CODE = Util.ToString(formData.stockCode),
CN_S_OP_TYPE = Util.ToString(formData.opType),
CN_T_START = !string.IsNullOrEmpty(Util.ToString(formData.valueDate)) ? date[0] : "",
CN_T_END = !string.IsNullOrEmpty(Util.ToString(formData.valueDate)) ? date[1] : ""
}
};
string result = HttpWMS_Post("api/Out/GetOutList", JsonConvert.SerializeObject(searchModel));
OperateResult or = JsonConvert.DeserializeObject(result);
string s = ((dynamic)or.Data).rows.ToString();
var dt = HH.WMS.Utils.ZConvert.ToDataTableTwo(s);
dynamic columns = DynamicObject["columns"];
string title = "发货通知单";
string fileName = title + "_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".xls";
or = ExcelHelper.SaveTemp(columns, title, dt, fileName);
if (or.Status == ResultStatus.Success)
return JsonConvert.SerializeObject(OperateResult.Succeed("", new { fileName = fileName }));
else
return JsonConvert.SerializeObject(or);
}
}
}