123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640 |
- using Cksoft.Data;
- using Cksoft.Data.Repository;
- using DllEapDal;
- using DllEapEntity;
- using DllEapEntity.Dtos;
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using DllEapCommon.Filters;
- using System.Linq;
- using Cksoft.Unity;
- using Cksoft.Unity.Log4NetConfig;
- using DllEapEntity.PM;
- using IdentityModel.Internal;
- using Newtonsoft.Json;
- using Microsoft.Extensions.Configuration;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Authorization;
- using AutoMapper;
- using System.IO;
- namespace DllEapBll.Controllers
- {
- /// <summary>
- /// 机台
- /// </summary>
- [Route("eap/api/[controller]/[action]")]
- [ApiController]
- [Authorize]
- public class MachineController : ControllerBase
- {
- public IConfiguration Configuration { get; set; }
- private IMapper _mapper;
- public MachineController(IConfiguration configuration, IMapper mapper)
- {
- Configuration = configuration;
- _mapper = mapper;
- }
- /// <summary>
- /// 机台列表
- /// </summary>
- /// <param name="filter"></param>
- /// <param name="pageIndex"></param>
- /// <param name="pageSize"></param>
- /// <param name="sortField"></param>
- /// <param name="sortOrder"></param>
- /// <returns></returns>
- [HttpGet]
- public async Task<LayuiModel<Machine>> 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<Machine>
- {
- code = 1,
- count = total,
- data = roles,
- msg = errorinfo
- });
- }
- }
- /// <summary>
- /// 机台详情
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpGet]
- public async Task<Machine> GetSingle(int id)
- {
- using (IDatabase db = DbFactory.Base("eapslave"))
- {
- var dal = new MachineDal(db);
- return await Task.FromResult(dal.Get(id));
- }
- }
- /// <summary>
- /// 根据MAC地址获取机台
- /// </summary>
- /// <param name="mac"></param>
- /// <returns></returns>
- [HttpGet]
- public async Task<Machine> GetSingleMac(string mac)
- {
- using (IDatabase db = DbFactory.Base("eapslave"))
- {
- var dal = new MachineDal(db);
- return await Task.FromResult(dal.GetMac(mac));
- }
- }
- /// <summary>
- /// 根据传入的机台号获取对应的机台信息
- /// </summary>
- /// <param name="code"></param>
- /// <returns></returns>
- [HttpGet]
- public async Task<EapResponse> 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);
- }
- }
- /// <summary>
- /// 新增/修改机台
- /// </summary>
- /// <param name="machine"></param>
- /// <returns></returns>
- [HttpPost]
- [ButtonFilter]
- public async Task<EapResponse> Add([FromBody] Machine machine)
- {
- 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 (machine.ID == 0)
- {
- preMac = machine;
- id = dal.Add(machine, usercode, ref errorinfo);
- }
- else
- {
- preMac = dal.Get(machine.ID);
- id = dal.Update(machine, usercode, ref errorinfo);
- }
- if (id < 0)
- {
- db.Rollback();
- response.Code = -1;
- response.Msg = errorinfo;
- }
- else
- {
- db.Commit();
- if (machine.ID == 0)
- LogHelper<Machine>.LogFatal("新增Machine-->" + Json.ToJson(machine), "用户操作", usercode);
- else
- LogHelper<Machine>.LogFatal("修改Machine-->修改值:" + Json.ToJson(machine), "用户操作", usercode);
- if (this.ReConnect(preMac, id, ref errorinfo) < 0)
- {
- response.Msg = $"机台信息修改成功,自动重连操作失败,失败原因:{errorinfo}";
- response.Code = -2;
- }
- }
- response.Id = id;
- return await Task.FromResult(response);
- }
- }
- /// <summary>
- /// 机台重连
- /// </summary>
- /// <param name="macId"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse MachineReConnect([FromBody] int macId)
- {
- var res = new EapResponse { Code = 1, Msg = string.Empty };
- string errorinfo = string.Empty;
- var dal = new MachineDal(null);
- var flag = dal.AutoReconnet(macId, ref errorinfo, moveMacServer: false);
- if (flag < 0 && flag != -2)
- {
- res.Code = -1;
- res.Msg = errorinfo;
- return res;
- }
- res.Code = flag;
- res.Msg = errorinfo;
- return res;
- }
- private 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;
- }
- /// <summary>
- /// 修改真实ip
- /// </summary>
- /// <param name="programMst"></param>
- /// <returns></returns>
- [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<Machine>.LogFatal("修改Machine-->修改值:" + Json.ToJson(programMst), "用户操作", "system-winform");
- }
- response.Id = id;
- return response;
- }
- }
- /// <summary>
- /// 删除机台
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse Delete([FromBody] int id)
- {
- IDatabase db = null;
- string errormsg = string.Empty;
- try
- {
- db = DbFactory.Base("eap");
- var dal = new MachineDal(db);
- db.BeginTrans();
- var model = dal.Get(id);
- var res = dal.Delete(id, ref errormsg);
- if (res < 0)
- {
- db.Rollback();
- return new EapResponse()
- {
- Code = -1,
- Msg = errormsg
- };
- }
- db.Commit();
- LogHelper<Machine>.LogFatal("删除Machine-->:" + Json.ToJson(model), "用户操作", Request.Headers["usercode"]);
- return new EapResponse()
- {
- Code = 1,
- Msg = ""
- };
- }
- catch (Exception e)
- {
- errormsg = e.Message;
- return new EapResponse
- {
- Code = -1,
- Msg = errormsg
- };
- }
- finally
- {
- if (db != null)
- db.Close();
- }
- }
- /// <summary>
- /// 修改是否管控
- /// </summary>
- /// <param name="id"></param>
- /// <param name="isControl"></param>
- /// <returns></returns>
- [HttpGet]
- public int ChangeIsControl(int id, int isControl)
- {
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- return dal.ChangeIsControl("IsControl", id, isControl);
- }
- }
- /// <summary>
- /// 修改机台是否连接
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public int ChangeIsConn([FromBody] IDictionary<string, int> valuePairs)
- {
- int id = valuePairs["id"];
- int isConn = valuePairs["isConn"];
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- return dal.ChangeIsControl("IsConn", id, isConn);
- }
- }
- /// <summary>
- /// 修改机台状态
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public int ChangeState([FromBody] IDictionary<string, string> valuePairs)
- {
- int id = Convert.ToInt32(valuePairs["id"]);
- int state = Convert.ToInt32(valuePairs["state"]);
- string field = valuePairs["field"];
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- return dal.ChangeIsControl(field, id, state);
- }
- }
- /// <summary>
- /// 获取机台
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- [HttpGet]
- public IEnumerable<Machine> GetMachines(string filter)
- {
- using (IDatabase db = DbFactory.Base("eapslave"))
- {
- var dal = new MachineDal(db);
- return dal.Get(filter);
- }
- }
- /// <summary>
- /// 绑定制程到机台
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse BindMac(Dictionary<string, string> valuePairs)
- {
- string userCode = Request.Headers["usercode"];
- string pCode = valuePairs["pCode"];
- string[] macIds = valuePairs["macIds"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
- string errorinfo = string.Empty;
- var eapRes = new EapResponse { Code = 1, Msg = string.Empty };
- IDatabase db = null;
- try
- {
- db = DbFactory.Base("eap");
- db.BeginTrans();
- var dal = new MachineDal(db);
- if (dal.BindMachine(pCode, macIds, userCode, ref errorinfo) < 0)
- {
- eapRes.Code = -1;
- eapRes.Msg = errorinfo;
- db.Rollback();
- }
- db.Commit();
- LogHelper<MacTProcess>.LogFatal("新增MacTProcess-->原始值:" + valuePairs["macIds"] + " PCode:" + pCode, "用户操作", userCode);
- return eapRes;
- }
- catch (Exception e)
- {
- db.Rollback();
- eapRes.Code = -1;
- eapRes.Msg = e.Message;
- return eapRes;
- }
- finally
- {
- if (db != null)
- db.Close();
- }
- }
- /// <summary>
- /// 绑定机台
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse BindMacToPM([FromBody] Dictionary<string, string> valuePairs)
- {
- string userCode = Request.Headers["usercode"];
- int pmId = Convert.ToInt32(valuePairs["pmId"]);
- string[] macIds = valuePairs["macIds"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
- string errorinfo = string.Empty;
- var eapRes = new EapResponse { Code = 1, Msg = string.Empty };
- IDatabase db = null;
- try
- {
- db = DbFactory.Base("eap");
- db.BeginTrans();
- var dal = new MachineDal(db);
- if (dal.BindMachineToPM(pmId, macIds, userCode, ref errorinfo) < 0)
- {
- eapRes.Code = -1;
- eapRes.Msg = errorinfo;
- db.Rollback();
- }
- db.Commit();
- LogHelper<PMMachine>.LogFatal("新增PMMachine-->原始值:" + valuePairs["macIds"] + " pmId:" + pmId, "用户操作", userCode);
- return eapRes;
- }
- catch (Exception e)
- {
- db.Rollback();
- eapRes.Code = -1;
- eapRes.Msg = e.Message;
- return eapRes;
- }
- finally
- {
- if (db != null)
- db.Close();
- }
- }
- /// <summary>
- /// 获取未授权的机台
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- [HttpGet]
- public LayuiModel<Machine> GetUnAuthorizedMachines(string filter)
- {
- string errorinfo = string.Empty;
- var layModel = new LayuiModel<Machine>();
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- var datas = dal.GetUnAuthorizedMachines(filter, ref errorinfo);
- if (!string.IsNullOrEmpty(errorinfo))
- {
- layModel.code = -1;
- layModel.msg = errorinfo;
- return layModel;
- }
- layModel.code = 1;
- layModel.data = datas;
- return layModel;
- }
- }
- /// <summary>
- /// 获取未授权的机台ID
- /// </summary>
- /// <param name="staffCode"></param>
- /// <returns></returns>
- [HttpGet]
- public LayuiModel<string> GetAuthedMacIds(string staffCode)
- {
- string errorinfo = string.Empty;
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- var ids = dal.GetAuthedMacs(staffCode, ref errorinfo);
- var res = new LayuiModel<string>();
- if (string.IsNullOrEmpty(errorinfo))
- {
- res.code = 1;
- res.data = ids;
- }
- else
- {
- res.code = -1;
- }
- return res;
- }
- }
- /// <summary>
- /// 授权机台
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse SetMacs([FromBody] Dictionary<string, string> valuePairs)
- {
- string userCode = Request.Headers["usercode"];
- var macIdsStr = valuePairs["macCodes"];
- var staffCode = valuePairs["staffCode"];
- string errorinfo = string.Empty;
- var res = new EapResponse() { Code = 1, Msg = string.Empty };
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- db.BeginTrans();
- IEnumerable<int> macIds = new List<int>();
- if (!string.IsNullOrEmpty(macIdsStr))
- {
- var macCodes = macIdsStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
- var filter = string.Join(",", macCodes.Select(c => $"'{c}'"));
- var machines = dal.Get($" and a.FCode in ({filter})");
- macIds = machines.Select(c => c.ID);
- }
- var i = dal.SetMacs(staffCode, macIds, userCode, ref errorinfo);
- if (i < 0)
- {
- db.Rollback();
- res.Code = -1;
- res.Msg = errorinfo;
- return res;
- }
- db.Commit();
- LogHelper<StaffMachine>.LogFatal("新增StaffMachine-->原始值:macIds-->" + String.Join(",", macIds), "用户操作", userCode);
- return res;
- }
- }
- /// <summary>
- /// 批量修改是否控制机台
- /// </summary>
- /// <param name="valuePairs"></param>
- /// <returns></returns>
- [HttpPost]
- public EapResponse SetControlByTrans([FromBody] Dictionary<string, string> valuePairs)
- {
- var res = new EapResponse { Code = 1, Msg = string.Empty };
- string errorinfo = string.Empty;
- if (valuePairs == null || valuePairs.Keys.Count <= 0)
- {
- res.Code = -1;
- res.Msg = "参数不能为空";
- return res;
- }
- var ids = valuePairs["ids"];
- var idArr = ids.Split(new char[] { ',' }).Select(c => Convert.ToInt32(c));
- var field = valuePairs["field"];
- var value = valuePairs["value"];
- var userCode = Request.Headers["usercode"];
- using (IDatabase db = DbFactory.Base("eap"))
- {
- var dal = new MachineDal(db);
- var i = dal.SetControlByTrans(idArr, field, value, ref errorinfo);
- if (i < 0)
- {
- res.Code = -1;
- res.Msg = errorinfo;
- return res;
- }
- var machines = dal.Get($" and a.id in ({ids})");
- // 写日志
- LogHelper<Machine>.LogFatal($"修改机台字段[{field}]-->修改值:{value}, " +
- $"被修改机台号:{JsonConvert.SerializeObject(machines.Select(c => c.FCode))}", "用户操作", userCode);
- return res;
- }
- }
- /// <summary>
- /// 获取机台多选数据源
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- public IEnumerable<SelectDto<int>> GetMultipalMacSelects(string filter)
- {
- using (IDatabase db = DbFactory.Base("eapslave"))
- {
- var dal = new MachineDal(db);
- return dal.GetMultipleSelects(filter).OrderBy(c => c.Label);
- }
- }
- /// <summary>
- /// 导出
- /// </summary>
- /// <param name="filterInfo"></param>
- /// <returns></returns>
- [HttpPost]
- public async Task<IActionResult> Export([FromBody] dynamic filterInfo)
- {
- string errorinfo = string.Empty;
- using (IDatabase db = DbFactory.Base("eapslave"))
- {
- var dal = new MachineDal(db, _mapper);
- var filter = Convert.ToString(filterInfo.filter);
- var book = await dal.Export(filter);
- MemoryStream ms = new MemoryStream();
- ms.Position = 0;
- book.Write(ms);
- ms.Dispose();
- ms.Close();
- return File(ms.ToArray(), "application/octet-stream");
- }
- }
- }
- }
|