using DllEapEntity.Dtos; using DllEapEntity; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Text; using Cksoft.Data; using Cksoft.Data.Repository; using DllEapDal; using System.Linq; using DllUfpDal; using Cksoft.Unity; using Cksoft.Unity.Log4NetConfig; using Microsoft.AspNetCore.Authorization; using System.Threading.Tasks; using DllEapCommon.NPOI; using System.IO; using AutoMapper; namespace DllEapBll.Controllers { /// /// 机台程序 /// [Authorize] [ApiController] [Route("eap/api/[controller]/[action]")] public class MacProgramController : ControllerBase { private IMapper _mapper; public MacProgramController(IMapper mapper) { _mapper = mapper; } /// /// 机台程序列表 /// /// /// /// /// /// /// /// [HttpGet] public LayuiModel Get(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "a.version", string sortOrder = "ascend") { string userCode = Request.Headers["usercode"]; if (!string.IsNullOrEmpty(sort)) { var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arr != null && arr.Length > 0) { sortField = arr[0]; sortOrder = arr[1]; } } if (sortOrder == "descend") { sortOrder = "desc"; } else { sortOrder = "asc"; } int start, end; start = (pageIndex - 1) * pageSize + 1; end = start + pageSize; using (IDatabase db = DbFactory.Base("eapslave")) { db.BeginTrans(); var dal = new MacProgramDal(db, userCode); var total = dal.GetVersionCount(filter); string errorinfo = string.Empty; var roles = dal.Get(start, pageSize, sortOrder, sortField, filter, errorinfo); return new LayuiModel { code = 1, count = total, data = roles, msg = "" }; } } /// /// 删除程序 /// /// /// [HttpPost] public EapResponse Delete([FromBody] int id) { IDatabase db = null; string errormsg = string.Empty; try { db = DbFactory.Base("eap"); var dal = new MacProgramDal(db); db.BeginTrans(); var model = dal.getBusinessFile(id); var res = dal.Delete(id, ref errormsg); if (res < 0) { db.Rollback(); return new EapResponse() { Code = -1, Msg = errormsg }; } db.Commit(); LogHelper.LogFatal("删除MacProgram-->id:" + 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(); } } /// /// 获取机台程序列表 /// /// /// /// /// /// /// /// [HttpGet] public LayuiModel GetProgramsNew(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "b.FCode,programName", string sortOrder = "ascend") { string userCode = Request.Headers["usercode"]; if (!string.IsNullOrEmpty(sort)) { var arr = sort.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arr != null && arr.Length > 0) { sortField = arr[0]; sortOrder = arr[1]; } } if (sortOrder == "descend") { sortOrder = "desc"; } else { sortOrder = "asc"; } int start, end; start = (pageIndex - 1) * pageSize + 1; end = start + pageSize; using (IDatabase db = DbFactory.Base("eapslave")) { db.BeginTrans(); var dal = new MacProgramDal(db, userCode); var total = dal.GetGroupedCount(filter); string errorinfo = string.Empty; var roles = dal.GetGrouped(start, pageSize, sortOrder, sortField, filter, errorinfo); return new LayuiModel { code = 1, count = total, data = roles, msg = "" }; } } /// /// 导出机台程序列表 /// /// /// [HttpPost] public async Task ExportProgramsNew(IDictionary filterInfo) { string filter = string.Empty, sort = string.Empty, sortField = "b.FCode,programName", sortOrder = "ascend"; int pageIndex = 1, pageSize = 100000; if (filterInfo.ContainsKey("filter")) { filter = filterInfo["filter"]; } if (filterInfo.ContainsKey("sortField")) { sortField = filterInfo["sortField"]; } if (filterInfo.ContainsKey("sortOrder")) { sortOrder = filterInfo["sortOrder"]; } if (filterInfo.ContainsKey("sort")) { sortOrder = filterInfo["sort"]; } if (filterInfo.ContainsKey("pageSize") && !string.IsNullOrEmpty(filterInfo["pageSize"])) { pageSize = Convert.ToInt32(filterInfo["pageSize"]) > 0 ? Convert.ToInt32(filterInfo["pageSize"]) : pageSize; } if (filterInfo.ContainsKey("pageIndex") && !string.IsNullOrEmpty(filterInfo["pageIndex"])) { pageIndex = Convert.ToInt32(filterInfo["pageIndex"]) > 0 ? Convert.ToInt32(filterInfo["pageIndex"]) : pageIndex; } var roles = GetProgramsNew(filter, sort, pageIndex, pageSize, sortField, sortOrder).data; var list = _mapper.Map>(roles).ToList(); var book = DataExportHelper.EntityToExcel(list); MemoryStream ms = new MemoryStream(); ms.Position = 0; book.Write(ms); ms.Dispose(); ms.Close(); await Task.CompletedTask; return File(ms.ToArray(), "application/octet-stream"); } /// /// 获取程序文件名称 /// /// /// /// [HttpGet] public LayuiModel GetProgramFiles(string macCode, string programName) { string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var programdal = new MacProgramDal(db); var dirs = programdal.GetProgramFiles(macCode, programName, ref errorinfo); if (dirs != null) { return new LayuiModel() { code = 1, count = dirs.Count(), data = dirs, msg = string.Empty }; } return new LayuiModel() { code = -1, data = null, msg = errorinfo }; } } /// /// 设置默认程序 /// /// /// [HttpPost] public EapResponse SetDefault([FromBody] IDictionary valuePairs) { string errorinfo = string.Empty; string userCode = Request.Headers["usercode"]; string btnCode = "SetDefaultProgram"; using (IDatabase ufpDb = DbFactory.Base("ufp")) { var btnFuncDal = new BtnFuncDal(ufpDb); var res = btnFuncDal.IsPermitted(userCode, btnCode, ref errorinfo); if (!res) { return new EapResponse { Code = -1, Msg = errorinfo }; } } var id = Convert.ToInt32(valuePairs["id"]); var isDefault = Convert.ToInt32(valuePairs["isDefault"]); var macId = Convert.ToInt32(valuePairs["macId"]); var programName = valuePairs["programName"]; using (IDatabase db = DbFactory.Base("eap")) { var dal = new MacProgramDal(db); var res = dal.UpdateField(id, isDefault, macId, programName, ref errorinfo); if (res > 0) { LogHelper.LogFatal("修改BusinessFileRelation-->" + "isDefault" + isDefault + ";id" + id, "用户操作", userCode); } var response = new EapResponse { Code = res, Msg = errorinfo }; return response; } } /// /// 修改程序名 /// /// /// [HttpPost] public EapResponse ChangeProName([FromBody] IDictionary valuePairs) { if (valuePairs == null || valuePairs.Keys.Count == 0) return null; var macCode = valuePairs["macCode"]; var oldName = valuePairs["oldName"]; var newName = valuePairs["newName"]; newName = newName.TrimStart().TrimEnd(); // 去除新程序名的前后空格 var bll = new EapBll("eap"); string errorinfo = string.Empty; var res = bll.ModifyProgramName(macCode, oldName, newName.Trim(), ref errorinfo); if (res > 0) { LogHelper.LogFatal("ModifyProgramName-->macCode" + macCode + ";oldName" + oldName + ";newName" + newName, "用户操作", "none"); return new EapResponse { Code = 1, Msg = string.Empty }; } return new EapResponse { Code = -1, Msg = errorinfo }; } /// /// 复制单个程序 /// /// /// [HttpPost] public EapResponse CopySingleProgram([FromBody] IDictionary valuePairs) { if (valuePairs == null || valuePairs.Keys.Count == 0) return null; string errorinfo = string.Empty; var macCodes = valuePairs["macCodes"]; var proid = Convert.ToInt32(valuePairs["proId"]); var macCodeArr = macCodes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string usercode = Request.Headers["usercode"]; using (IDatabase db = DbFactory.Base("eap")) { var dal = new MacProgramDal(db); var res = dal.CopyProgramVersion(macCodeArr, proid, usercode, ref errorinfo); if (res > 0) LogHelper.LogFatal("CopyProgramVersion-->macCodeArr" + macCodeArr + ";proid" + proid, "用户操作", usercode); return new EapResponse { Code = 1, Msg = errorinfo }; } } /// /// 复制全部程序 /// /// /// [HttpPost] public EapResponse CopyWholeProgram([FromBody] IDictionary valuePairs) { if (valuePairs == null || valuePairs.Keys.Count == 0) return null; string errorinfo = string.Empty; var macCodes = valuePairs["macCodes"]; var oriMacCode = valuePairs["oriMacCode"]; var macCodeArr = macCodes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string usercode = Request.Headers["usercode"]; using (IDatabase db = DbFactory.Base("eap")) { var dal = new MacProgramDal(db); var res = dal.CopyWholePrograms(macCodeArr, oriMacCode, usercode, ref errorinfo); if (res > 0) LogHelper.LogFatal("CopyWholePrograms-->macCodeArr" + macCodeArr + ";oriMacCode" + oriMacCode, "用户操作", usercode); return new EapResponse { Code = 1, Msg = errorinfo }; } } /// /// 删除版本 /// /// /// [HttpPost] public EapResponse DeleteVersion([FromBody] IDictionary valuePairs) { if (valuePairs == null || valuePairs.Keys.Count == 0) return null; string errorinfo = string.Empty; var macCode = valuePairs["macCode"]; var id = Convert.ToInt32(valuePairs["id"]); string usercode = Request.Headers["usercode"]; using (IDatabase db = DbFactory.Base("eap")) { var dal = new MacProgramDal(db); db.BeginTrans(); var model = dal.getBusinessFileRelation(id); var modelsec = dal.getBusinessFile(model); var res = dal.DeleteSingVersion(id, macCode, ref errorinfo); var eapRes = new EapResponse() { Code = 1, Msg = string.Empty }; if (res < 0) { db.Rollback(); eapRes.Code = -1; eapRes.Msg = errorinfo; } db.Commit(); LogHelper.LogFatal("删除MacProgram-->BusinessFileRelation:" + Json.ToJson(model) + ";BusinessFile-->" + Json.ToJson(modelsec), "用户操作", usercode); return eapRes; } } /// /// 删除单个程序 /// /// /// [HttpPost] public EapResponse DeleteSingleWholeProgram([FromBody] IDictionary valuePairs) { if (valuePairs == null || valuePairs.Keys.Count == 0) return null; string errorinfo = string.Empty; var macCode = valuePairs["macCode"]; var proName = valuePairs["proName"]; string usercode = Request.Headers["usercode"]; using (IDatabase db = DbFactory.Base("eap")) { var dal = new MacProgramDal(db); db.BeginTrans(); var model = dal.getbusinessfilerelation(proName, macCode, ref errorinfo); var modelsec = dal.getBusinessFile(proName, macCode, ref errorinfo); var res = dal.DeleteWholeProgram(proName, macCode, ref errorinfo); var eapRes = new EapResponse() { Code = 1, Msg = string.Empty }; if (res < 0) { db.Rollback(); eapRes.Code = -1; eapRes.Msg = errorinfo; } db.Commit(); LogHelper.LogFatal("businessfilerelation-->:" + Json.ToJson(model) + ";BusinessFile" + Json.ToJson(modelsec) + "; macCode" + macCode, "用户操作", usercode); return eapRes; } } } }