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;
}
}
}
}