You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
8.0 KiB
C#
237 lines
8.0 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Web.Mvc;
|
|
using DSWeb.MvcShipping.DAL.MsChDui;
|
|
using DSWeb.MvcShipping.Models.MsChDui;
|
|
using DSWeb.MvcShipping.Models.MsChDuiView;
|
|
|
|
using DSWeb.MvcShipping.Comm.Cookie;
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
using System.Collections.Generic;
|
|
using HcUtility.Comm;
|
|
using HcUtility.Core;
|
|
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
|
|
using System.IO;
|
|
using DSWeb.Common.DB;
|
|
using DSWeb.Areas.MvcShipping.Models.MsOpRule;
|
|
using DSWeb.Models;
|
|
using Newtonsoft.Json;
|
|
using DSWeb.Common.Model;
|
|
|
|
namespace DSWeb.MvcShipping.Controllers
|
|
{
|
|
public class MsOpRuleController : Controller
|
|
{
|
|
private RuleContext ruleContext = new RuleContext();
|
|
|
|
[HttpGet]
|
|
public ActionResult RuleList()
|
|
{
|
|
if (Session["SHOWNAME"] == null)
|
|
{
|
|
return Content("登录超时");
|
|
}
|
|
|
|
ViewData["Fields"] = ruleContext.EnumValues.Where(e => e.EnumTypeID == 91001).Select(e => e.EnumValueName).ToList();
|
|
|
|
return View();
|
|
}
|
|
|
|
//分页规则列表
|
|
[HttpPost]
|
|
public JsonResult RuleListData(int offset, int limit)
|
|
{
|
|
OpRuleListViewModelList rtnList = new OpRuleListViewModelList();
|
|
var count = ruleContext.Rules.Count();
|
|
var list = ruleContext.Rules.OrderBy(x => x.SortOrder).Skip(offset).Take(limit).ToList();
|
|
rtnList.Total = count;
|
|
rtnList.List = list.AsListViewModelList();
|
|
return Json(rtnList);
|
|
}
|
|
|
|
//可用规则列表
|
|
[HttpPost]
|
|
public JsonResult RuleListEnable()
|
|
{
|
|
List<OpRuleCheckListViewModel> listRtn = new List<OpRuleCheckListViewModel>();
|
|
var list = ruleContext.Rules.Where(r => r.Enable).OrderBy(ri => ri.SortOrder).ToList();
|
|
foreach (var rule in list)
|
|
{
|
|
var ruleVM = rule.AsCheckListViewModel();
|
|
listRtn.Add(ruleVM);
|
|
|
|
ruleVM.Items = ruleContext.RuleItems.Where(ri => ri.RuleId == rule.GID).OrderBy(ri => ri.SortOrder).ToList().AsCheckListViewModelList();
|
|
}
|
|
|
|
return Json(listRtn);
|
|
}
|
|
|
|
//保存规则
|
|
[HttpPost]
|
|
//public JsonResult SaveRule(OpRuleEditViewModel viewModel)
|
|
public JsonResult SaveRule()
|
|
{
|
|
var sr = new StreamReader(Request.InputStream);
|
|
var stream = sr.ReadToEnd();
|
|
OpRuleEditViewModel viewModel = Newtonsoft.Json.JsonConvert.DeserializeObject<OpRuleEditViewModel>(stream);
|
|
|
|
OpRule rule = null;
|
|
if (!string.IsNullOrWhiteSpace(viewModel.GID))
|
|
{
|
|
rule = ruleContext.Rules.FirstOrDefault(r => r.GID == viewModel.GID);
|
|
}
|
|
|
|
if (rule == null)
|
|
{
|
|
var findRule = ruleContext.Rules.FirstOrDefault(r => r.Code == viewModel.Code);
|
|
if (findRule != null)
|
|
{
|
|
return Json(new { Success = false, Message = "编号已存在" });
|
|
}
|
|
|
|
rule = new OpRule();
|
|
viewModel.AsModel(rule);
|
|
|
|
rule.GID = Guid.NewGuid().ToString();
|
|
rule.CreateTime = DateTime.Now;
|
|
rule.CreateUser = Session["SHOWNAME"].ToString();
|
|
rule.Enable = true;
|
|
rule.EnableDisableTime = DateTime.Now;
|
|
|
|
int ruleOrder = 1;
|
|
if (ruleContext.Rules.Count() > 0)
|
|
{
|
|
ruleOrder = ruleContext.Rules.Max(r => r.SortOrder) + 1;
|
|
}
|
|
|
|
rule.SortOrder = ruleOrder;
|
|
ruleContext.Rules.Add(rule);
|
|
|
|
var items = viewModel.Items.AsModelList();
|
|
int order = 1;
|
|
items.ForEach(i =>
|
|
{
|
|
i.GID = Guid.NewGuid().ToString();
|
|
i.RuleId = rule.GID;
|
|
i.SortOrder = order++;
|
|
|
|
});
|
|
ruleContext.RuleItems.AddRange(items);
|
|
}
|
|
else
|
|
{
|
|
var findRule = ruleContext.Rules.FirstOrDefault(r => r.Code == viewModel.Code && r.GID != viewModel.GID);
|
|
if (findRule != null)
|
|
{
|
|
return Json(new { Success = false, Message = "编号已存在" });
|
|
}
|
|
|
|
bool enableChanged = rule.Enable != viewModel.Enable;
|
|
|
|
viewModel.AsModel(rule);
|
|
rule.ModifyTime = DateTime.Now;
|
|
rule.ModifyUser = Session["SHOWNAME"].ToString();
|
|
if (enableChanged)
|
|
{
|
|
rule.EnableDisableTime = DateTime.Now;
|
|
}
|
|
|
|
var items = ruleContext.RuleItems.Where(r => r.RuleId == rule.GID).ToList();
|
|
ruleContext.RuleItems.RemoveRange(items);
|
|
|
|
items = viewModel.Items.AsModelList();
|
|
int order = 1;
|
|
items.ForEach(i =>
|
|
{
|
|
i.GID = Guid.NewGuid().ToString();
|
|
i.RuleId = rule.GID;
|
|
i.SortOrder = order++;
|
|
});
|
|
ruleContext.RuleItems.AddRange(items);
|
|
}
|
|
|
|
|
|
ruleContext.SaveChanges();
|
|
|
|
return Json(new { Success = true, Message = "保存成功" });
|
|
}
|
|
|
|
//获取单条规则
|
|
[HttpPost]
|
|
public JsonResult GetRule(string gid)
|
|
{
|
|
var rule = ruleContext.Rules.FirstOrDefault(r => r.GID == gid);
|
|
if (rule != null)
|
|
{
|
|
var viewModel = rule.AsEditViewModel();
|
|
viewModel.Items = ruleContext.RuleItems.Where(ri => ri.RuleId == rule.GID).AsEditViewModelList();
|
|
return Json(viewModel);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
//删除规则
|
|
[HttpPost]
|
|
public JsonResult DeleteRules(string strIds)
|
|
{
|
|
string[] arrId = strIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
var rules = ruleContext.Rules.Where(r => arrId.Contains(r.GID)).ToList();
|
|
var items = ruleContext.RuleItems.Where(r => arrId.Contains(r.RuleId)).ToList();
|
|
ruleContext.Rules.RemoveRange(rules);
|
|
ruleContext.RuleItems.RemoveRange(items);
|
|
ruleContext.SaveChanges();
|
|
return Json(new { Success = true, Message = "操作成功" });
|
|
}
|
|
|
|
|
|
//生效/失效规则
|
|
[HttpPost]
|
|
public JsonResult EnableDisableRules(string strIds, bool enable = true)
|
|
{
|
|
string[] arrId = strIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
var rules = ruleContext.Rules.Where(r => arrId.Contains(r.GID)).ToList();
|
|
rules.ForEach(r =>
|
|
{
|
|
if (r.Enable != enable)
|
|
{
|
|
r.Enable = enable;
|
|
r.EnableDisableTime = DateTime.Now;
|
|
}
|
|
});
|
|
ruleContext.SaveChanges();
|
|
return Json(new { Success = true, Message = "操作成功" });
|
|
}
|
|
|
|
//异步保存订舱的规则检验,用于后续页面直接展示
|
|
[HttpPost]
|
|
public JsonResult SaveOrderCheckRule(string json)
|
|
{
|
|
RespCommon resp = new RespCommon();
|
|
var jobj = JsonConvert.DeserializeAnonymousType(json, new
|
|
{
|
|
OrdNO = "",
|
|
Alerts = new string[] { }
|
|
});
|
|
|
|
ruleContext.RuleCheckOrders.RemoveRange(ruleContext.RuleCheckOrders.Where(rc => rc.OrdNO == jobj.OrdNO));
|
|
var idx = 0;
|
|
foreach (string al in jobj.Alerts)
|
|
{
|
|
var rco = new OpRuleCheckOrder();
|
|
rco.GID = Guid.NewGuid().ToString();
|
|
rco.OrdNO = jobj.OrdNO;
|
|
rco.AlertData = al;
|
|
rco.Sort = idx++;
|
|
ruleContext.RuleCheckOrders.Add(rco);
|
|
}
|
|
|
|
ruleContext.SaveChanges();
|
|
|
|
resp.Success = true;
|
|
resp.Message = "保存成功 ";
|
|
return Json(resp);
|
|
}
|
|
}
|
|
}
|
|
|