InventoryTransactionController.cs 7.25 KB
using Infrastructure;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using WebApp;
using WebRepository;

namespace WebMvc
{
    /// <summary>
	/// 库存交易表
	/// </summary>
    [Area("inventory")]
    public class InventoryTransactionController : BaseController
    {
        private readonly InventoryTransactionApp _app;
        private IUnitWork _unitWork;
        public InventoryTransactionController(IAuth authUtil, InventoryTransactionApp app, IUnitWork unitWork) : base(authUtil)
        {
            _app = app.SetLoginInfo(_loginInfo);
            _unitWork = unitWork;
        }

        #region 视图功能
        /// <summary>
        /// 默认视图Action
        /// </summary>
        /// <returns></returns>
        [Authenticate]
        [ServiceFilter(typeof(OperLogFilter))]
        public ActionResult Index()
        {
            return View();
        }
        #endregion

        #region 获取数据
        /// <summary>
        /// 加载及分页查询
        /// </summary>
        /// <param name="pageRequest">表单请求信息</param>
        /// <param name="entity">请求条件实例</param>
        /// <returns></returns>
        [HttpPost]
        public string Load(PageReq pageRequest, InventoryTransaction entity)
        {
            return JsonHelper.Instance.Serialize(_app.Load(pageRequest, entity));
        }
        #endregion

        #region 提交数据
        /// <summary>
        /// 新增数据
        /// </summary>
        /// <param name="Table_entity">新增实例</param>
        /// <returns></returns>
        [HttpPost]
        [ServiceFilter(typeof(OperLogFilter))]
        public string Ins(InventoryTransaction Table_entity)
        {
            try
            {
                _app.Ins(Table_entity);
            }
            catch (Exception ex)
            {
                Result.Status = false;
                Result.Message = ex.Message;
            }
            return JsonHelper.Instance.Serialize(Result);
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="Table_entity">修改实例</param>
        /// <returns></returns>
        [HttpPost]
        [ServiceFilter(typeof(OperLogFilter))]
        public string Upd(InventoryTransaction Table_entity)
        {
            try
            {
                _app.Upd(Table_entity);
            }
            catch (Exception ex)
            {
                Result.Status = false;
                Result.Message = ex.Message;
            }
            return JsonHelper.Instance.Serialize(Result);
        }

        [HttpPost]
        [ServiceFilter(typeof(OperLogFilter))]
        public string DelByIds(int[] ids)
        {
            try
            {
                _app.DelByIds(ids);
            }
            catch (Exception ex)
            {
                Result.Status = false;
                Result.Message = ex.Message;
            }
            return JsonHelper.Instance.Serialize(Result);
        }
        #endregion

        #region 导出数据
        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="entity">请求条件实例</param>
        /// <returns></returns>
        [HttpPost]
        public string Export(InventoryTransaction entity)
        {
            TableData tableData = _app.ExportData(entity);
            List<ExpandoObject> list = new List<ExpandoObject>();
            foreach (InventoryTransaction inv in tableData.data)
            {
                dynamic temp = new ExpandoObject();
                var type = inv.Type;
                var isflod = "";
                var location = inv.LocationCode;
                Station sta = _unitWork.Find<Station>(n => n.Code == inv.LocationCode).FirstOrDefault();
                if (sta != null)
                {
                    location = sta.Name;
                }
                if (inv.Type == "shipment")
                {
                    type = "出库";
                }
                else if (inv.Type == "receipt")
                {
                    type = "入库";
                }
                if (inv.IsFold == "unflod")
                {
                    isflod = "未排版";
                }
                else if (inv.IsFold == "Isflod")
                {
                    isflod = "已排版";
                }
                temp.历史库位 = location;
                temp.容器编号 = inv.ContainerCode;
                temp.单据号 = inv.SourceCode;
                temp.交易类型 = type;
                temp.二维码 = inv.QrCode;
                temp.物料编码 = inv.MaterialCode;
                temp.批次 = inv.OldBatch;
                temp.批号 = inv.Lot;
                temp.数量 = inv.Qty;
                temp.创建时间 = inv.CreateTime;
                temp.退库 = inv.Retreat;
                temp.规格 = inv.Specification;
                temp.品名 = inv.NameDescription;
                temp.单位 = inv.Unit;
                temp.尺寸 = inv.Size;
                temp.张数 = inv.NumberofSheets;
                temp.组数 = inv.Groupnum;
                temp.错叠张数 = inv.StackingNumber;
                temp.客户 = inv.Customer;
                //temp.供应商 = inv.Supplier;
                temp.排版 = isflod;
                list.Add(temp);
            }

            tableData.data = list;
            return JsonHelper.Instance.Serialize(tableData);
            //return JsonHelper.Instance.Serialize(_app.ExportData(entity));
        }
        #endregion

        #region 导出模板
        /// <summary>
        /// 导出模板
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public string GetTemplate()
        {
            var result = new TableData();
            List<InventoryTransaction> listInventoryTransaction = new List<InventoryTransaction>();
            InventoryTransaction entity = _app.FindSingle(u => u.Id > 0);
            if (entity != null)
            {
                listInventoryTransaction.Add(entity);
            }
            else
            {
                listInventoryTransaction.Add(new InventoryTransaction());
            }
 
            result.data = listInventoryTransaction;
            result.count = listInventoryTransaction.Count;

            return JsonHelper.Instance.Serialize(result);
        }
        #endregion

        #region 导入数据
        /// <summary>
        /// 导入数据
        /// </summary>
        /// <param name="excelfile">表单提交的文件信息</param>
        /// <returns></returns>
        [HttpPost]
        public string Import(IFormFile excelfile)
        {
            try
            {
                Response result = _app.ImportIn(excelfile);
                if (!result.Status)
                {
                    Result.Status = false;
                    Result.Message = result.Message;
                }
            }
            catch (Exception ex)
            {
                Result.Status = false;
                Result.Message = ex.Message;
            }
            return JsonHelper.Instance.Serialize(Result);
        }
        #endregion

        #region 自定义方法

        #endregion
    }
}