using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity; using Cksoft.Unity.Log4NetConfig; using DllEapDal; using DllEapEntity; using DllEapEntity.Dtos; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace WebApplet.Controllers { [Route("eap/api/[controller]/[action]")] public class MachineController : ControllerBase { //public IActionResult Index() //{ // return View(); //} public IConfiguration Configuration { get; set; } public MachineController(IConfiguration configuration) { Configuration = configuration; } [HttpGet] public async Task> Get(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "a.FCode", string sortOrder = "ascend") { string userCode = Request.Headers["usercode"]; if (sortOrder == "descend") { sortOrder = "desc"; } else { sortOrder = "asc"; } if (sortField == "null") { sortField = "a.FCode"; } int start, end; start = (pageIndex - 1) * pageSize + 1; end = start + pageSize; using (IDatabase db = DbFactory.Base("eapslave")) { db.BeginTrans(); var dal = new MachineDal(db, userCode); var total = dal.GetCount(filter); string errorinfo = string.Empty; var roles = dal.Get(start, pageSize, sortOrder, sortField, filter,ref errorinfo); return await Task.FromResult(new LayuiModel { code = 1, count = total, data = roles, msg = errorinfo }); } } [HttpGet] public IEnumerable GetMachines(string filter) { using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MachineDal(db); return dal.Get(filter); } } [HttpGet] public async Task GetByCode(string code) { var res = new EapResponse(); using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MachineDal(db); var mac = dal.Get($" and a.FCode='{code}'").FirstOrDefault(); if (mac == null) { res.Code = -1; res.Msg = $"未找到编号为【{code.ToUpper()}】的机台"; return await Task.FromResult(res); } res.Data = mac; return await Task.FromResult(res); } } /// /// 修改真实ip /// /// /// [HttpPost] public EapResponse UpdateRealIP([FromBody] Machine programMst) { using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new MachineDal(db); string errorinfo = string.Empty; var response = new EapResponse() { Code = 1, Msg = string.Empty }; int id = -1; id = dal.UpdateRealIP(programMst, ref errorinfo); if (id < 0) { db.Rollback(); response.Code = -1; response.Msg = errorinfo; } else { db.Commit(); // LogHelper.LogFatal("修改Machine-->修改值:" + Json.ToJson(programMst), "用户操作", "system-winform"); } response.Id = id; return response; } } [HttpGet] public Machine GetSingleMac(string mac) { using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MachineDal(db); return dal.GetMac(mac); } } [HttpGet] public string GetMacType(string macCode) { using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MachineDal(db); return dal.GetMacType(macCode); } } [HttpPost] //[ButtonFilter] public async Task Add([FromBody] Machine programMst) { string usercode = Request.Headers["usercode"]; using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new MachineDal(db); Machine preMac = null; string errorinfo = string.Empty; var response = new EapResponse() { Code = 1, Msg = string.Empty }; int id = -1; if (programMst.ID == 0) { preMac = programMst; id = dal.Add(programMst, usercode, ref errorinfo); } else { preMac = dal.Get(programMst.ID); id = dal.Update(programMst, usercode, ref errorinfo); } if (id < 0) { db.Rollback(); response.Code = -1; response.Msg = errorinfo; } else { db.Commit(); if (programMst.ID == 0) LogHelper.LogFatal("新增Machine-->" + Json.ToJson(programMst), "用户操作", usercode); else LogHelper.LogFatal("修改Machine-->修改值:" + Json.ToJson(programMst), "用户操作", usercode); if (this.ReConnect(preMac, id, ref errorinfo) < 0) { response.Msg = $"机台信息修改成功,自动重连操作失败,失败原因:{errorinfo}"; response.Code = -2; } } response.Id = id; return await Task.FromResult(response); } } public int ReConnect(Machine preMac, int macId, ref string errorinfo) { if (!string.IsNullOrEmpty(Configuration["Client"]) && Configuration["Client"] == "Ofilm") { using (IDatabase serverDb = DbFactory.Base("eap")) { var machineDal = new MachineDal(serverDb); serverDb.BeginTrans(); var flag = machineDal.DoAutoReconnect(preMac, macId, ref errorinfo); if (flag < 0 && flag != -2) { serverDb.Rollback(); return -1; } serverDb.Commit(); return flag; } } return 1; } } }