TTaskGroupController.cs 10.8 KB
using Infrastructure;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using WebApp;
using WebRepository;
using System.Linq;

namespace WebMvc
{
    /// <summary>
	/// TTaskGroup
	/// </summary>
    [Area("task")]
    public class TTaskGroupController : BaseController
    {
        private readonly TTaskGroupApp _app;
        private readonly IUnitWork _unitWork;
        private readonly TTaskApp _taskApp;

        public TTaskGroupController(IAuth authUtil, IUnitWork unitWork, TTaskGroupApp app, TTaskApp taskApp) : base(authUtil)
        {
            _unitWork = unitWork;
            _app = app.SetLoginInfo(_loginInfo);
            _taskApp = taskApp;
        }

        #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, TTaskGroup 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(TTaskGroup Table_entity)
        {
            try
            {
                TTaskGroup taskGroup = _app.FindSingle(u => u.Groupname.Equals(Table_entity.Groupname) && u.AgvGroup.Equals(Table_entity.AgvGroup));
                if (taskGroup != null)
                {
                    throw new Exception("已存在该任务群组,请勿重复添加!");
                }

                ApiRequest apiRequest1 = new ApiRequest("RCS");
                string parameter1 = JsonHelper.Instance.Serialize(new TaskAgvGroupModel
                {
                    taskGroup = Table_entity.Groupname,
                    agvGroup = Table_entity.AgvGroup,
                    type = "insert",
                });
                Response response1 = apiRequest1.Post<Response>(parameter1, "TaskAgvGroup", "RCS");
                if (response1.Code != 0)
                {
                    throw new Exception(response1.Message);
                }

                _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(TTaskGroup Table_entity)
        {
            try
            {
                TTaskGroup taskGroup = _app.FindSingle(u => u.Id.Equals(Table_entity.Id));
                if (taskGroup == null)
                {
                    throw new Exception("任务群组不存在!");
                }

                TTaskGroup taskGroup1 = _app.FindSingle(u => u.Groupname.Equals(Table_entity.Groupname) && u.AgvGroup.Equals(Table_entity.AgvGroup) && u.Id != Table_entity.Id);
                if (taskGroup1 != null)
                {
                    throw new Exception("已存在该任务群组,修改失败!");
                }

                var taskDesign = _unitWork.Find<TTaskDesign>(u => u.Groupname == taskGroup.Groupname);
                if (taskDesign != null)
                {
                    var taskids = taskDesign.Select(u => u.Taskid).ToList();
                    TTask task = _taskApp.FindSingle(u => taskids.Contains(u.StrTaskID));
                    if (task != null)
                    {
                        throw new Exception("无法变更任务群组:【" + taskGroup.Groupname + "】,该群组存在未完成的任务:" + task.StrTaskNo + "。请结束任务后再操作!");
                    }
                }
                ApiRequest apiRequest0 = new ApiRequest("RCS");
                string parameter0 = JsonHelper.Instance.Serialize(new TaskAgvGroupModel
                {
                    taskGroup = taskGroup.Groupname,
                    agvGroup = taskGroup.AgvGroup,
                    type = "delete",
                });
                Response response0 = apiRequest0.Post<Response>(parameter0, "TaskAgvGroup", "RCS");
                if (response0.Code != 0)
                {
                    throw new Exception(response0.Message);
                }

                ApiRequest apiRequest1 = new ApiRequest("RCS");
                string parameter1 = JsonHelper.Instance.Serialize(new TaskAgvGroupModel
                {
                    taskGroup = Table_entity.Groupname,
                    agvGroup = Table_entity.AgvGroup,
                    type = "insert",
                });
                Response response1 = apiRequest1.Post<Response>(parameter1, "TaskAgvGroup", "RCS");
                if (response1.Code != 0)
                {
                    throw new Exception(response1.Message);
                }
                _app.Upd(Table_entity);


                if (taskGroup.Groupname != Table_entity.Groupname)
                {
                    //同步更新任务类型中的GroupName
                    TTaskType taskType = _unitWork.FindSingle<TTaskType>(u => u.Groupname.Equals(taskGroup.Groupname));
                    taskType.Groupname = Table_entity.Groupname;
                    _unitWork.Update(taskType);
                    //_unitWork.Update<TTaskType>(u => u.Groupname.Equals(taskGroup.Groupname), u => new TTaskType
                    //{
                    //    Groupname = Table_entity.Groupname,
                    //});
                    //同步修改任务设计中的GroupName
                    TTaskDesign taskDesign1 = _unitWork.FindSingle<TTaskDesign>(u => u.Groupname.Equals(taskGroup.Groupname));
                    taskDesign1.Taskname = Table_entity.Groupname + "-" + taskDesign1.Typename + "-" + taskDesign1.Col1;
                    taskDesign1.Groupname = Table_entity.Groupname;
                    _unitWork.Update(taskDesign1);
                    //_unitWork.Update<TTaskDesign>(u => u.Groupname.Equals(taskGroup.Groupname), u => new TTaskDesign
                    //{
                    //    Taskname = Table_entity.Groupname + "-" + u.Typename + "-" + u.Col1,
                    //    Groupname = Table_entity.Groupname,
                    //});
                }
            }
            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
            {
                foreach (var id in ids)
                {
                    TTaskGroup taskGroup = _app.FindSingle(u => u.Id.Equals(id));

                    TTaskDesign taskDesign = _unitWork.FindSingle<TTaskDesign>(u => u.Groupname == taskGroup.Groupname);
                    if (taskDesign != null)
                    {
                        throw new Exception("无法删除任务群组:" + taskDesign.Groupname + ",该任务群组已应用于任务ID:" + taskDesign.Taskid + "。请删除任务ID后再操作!");
                    }

                    ApiRequest apiRequest1 = new ApiRequest("RCS");
                    string parameter1 = JsonHelper.Instance.Serialize(new TaskAgvGroupModel
                    {
                        taskGroup = taskGroup.Groupname,
                        agvGroup = taskGroup.AgvGroup,
                        type = "delete",
                    });
                    Response response1 = apiRequest1.Post<Response>(parameter1, "TaskAgvGroup", "RCS");
                    if (response1.Code != 0)
                    {
                        throw new Exception(response1.Message);
                    }

                    _app.DelByIds(new int[] { id });
                }
            }
            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(TTaskGroup entity)
        {
            return JsonHelper.Instance.Serialize(_app.ExportData(entity));
        }
        #endregion

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

            result.data = listTTaskGroup;
            result.count = listTTaskGroup.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 自定义方法
        public string GetTaskGroup()
        {
            return JsonHelper.Instance.Serialize(_app.GetTaskGroup());
        }
        #endregion
    }
}