using AutoMapper;
using Cksoft.Data;
using Cksoft.Data.Repository;
using Cksoft.Unity;
using Cksoft.Unity.Log4NetConfig;
using DllEapCommon.NPOI;
using DllEapDal;
using DllEapEntity;
using DllEapEntity.Dtos;
using DllUfpDal;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DllEapBll.Controllers
{
///
/// 机型程序
///
[Authorize]
[ApiController]
[Route("eap/api/[controller]/[action]")]
public class MacModelProgramController : ControllerBase
{
private IMapper _mapper;
public MacModelProgramController(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 MacModelProgramDal(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 = ""
};
}
}
///
/// 程序列表
///
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetProgramsNew(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "MacModelCode,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 MacModelProgramDal(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 Export(IDictionary filterInfo)
{
string filter = string.Empty, sort = string.Empty, sortField = "MacModelCode,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");
}
///
/// 设置默认程序
///
///
///
[HttpPost]
public EapResponse SetDefault([FromBody] IDictionary valuePairs)
{
string errorinfo = string.Empty;
var id = Convert.ToInt32(valuePairs["id"]);
var isDefault = Convert.ToInt32(valuePairs["isDefault"]);
var macModelId = Convert.ToInt32(valuePairs["macModelId"]);
var programName = valuePairs["programName"];
using (IDatabase db = DbFactory.Base("eap"))
{
var dal = new MacModelProgramDal(db);
var res = dal.UpdateField(id, isDefault, macModelId, programName, ref errorinfo);
if (res > 0)
{
LogHelper.LogFatal("修改BusinessFileRelation-->原始值:isDefault-->" + isDefault + ";id-->" + id, "用户操作", "none");
}
var response = new EapResponse
{
Code = res,
Msg = errorinfo
};
return response;
}
}
///
/// 删除版本
///
///
///
[HttpPost]
public EapResponse DeleteVersion([FromBody] IDictionary valuePairs)
{
if (valuePairs == null || valuePairs.Keys.Count == 0)
return null;
string errorinfo = string.Empty;
var macModelCode = valuePairs["macModelCode"];
var id = Convert.ToInt32(valuePairs["id"]);
string usercode = Request.Headers["usercode"];
using (IDatabase db = DbFactory.Base("eap"))
{
var dal = new MacModelProgramDal(db);
db.BeginTrans();
var model = dal.getBusinessFileRelation(id);
var modelsec = dal.getBusinessFile(model);
var res = dal.DeleteSingVersion(id, macModelCode, 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), "用户操作", 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["macModelCode"];
var proName = valuePairs["proName"];
var macId = Convert.ToInt32(valuePairs["macId"]);
var macModelId = Convert.ToInt32(valuePairs["macModelId"]);
string usercode = Request.Headers["usercode"];
using (IDatabase db = DbFactory.Base("eap"))
{
var dal = new MacModelProgramDal(db);
db.BeginTrans();
var businessId = dal.getBusinessFilebusinessId(proName, macModelId, ref errorinfo);
var model = dal.getBusinessFileRelationbusinessId(businessId);
var modelsec = dal.getBusinessFilebusinessId(businessId);
var res = dal.DeleteWholeProgram(proName, macId, macModelId, 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("删除MacModelProgram-->BusinessFileRelation:" + Json.ToJson(model) + ";BusinessFile" + Json.ToJson(modelsec), "用户操作", usercode);
return eapRes;
}
}
///
/// 用新名字复制程序
///
///
///
[HttpPost]
public EapResponse CopyProgramWithNewName([FromBody] IDictionary valuePairs)
{
var proName = valuePairs["proName"];
var newName = valuePairs["newName"];
var macModelId = Convert.ToInt32(valuePairs["macModelId"]);
newName = newName.TrimStart().TrimEnd();
string errorinfo = string.Empty;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("eap"))
{
var dal = new MacModelProgramDal(db);
db.BeginTrans();
if (dal.CopyProgramWithNewName(proName, newName, macModelId, Request.Headers["usercode"], ref errorinfo) < 0)
{
db.Rollback();
res.Code = -1;
res.Msg = errorinfo;
return res;
}
db.Commit();
LogHelper.LogFatal("复制程序-->proName:" + proName + ";newName" + newName + ";macModelId" + macModelId, "用户操作", Request.Headers["usercode"]);
return res;
}
}
///
/// 设置机台程序为机型共用程序
///
///
///
[HttpPost]
public EapResponse CopyMacProgramToModel([FromBody] IDictionary valuePairs)
{
var macId = Convert.ToInt32(valuePairs["macId"]);
var macModelId = Convert.ToInt32(valuePairs["macModelId"]);
var fName = valuePairs["fName"];
string errorinfo = string.Empty;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("eap"))
{
var dal = new MacModelProgramDal(db);
db.BeginTrans();
if (dal.CopyMacProgrmToModel(macId, macModelId, Request.Headers["usercode"], fName, ref errorinfo) < 0)
{
db.Rollback();
res.Code = -1;
res.Msg = errorinfo;
return res;
}
db.Commit();
LogHelper.LogFatal("复制程序-->macId:" + macId + ";macModelId" + macModelId + ";fName" + fName, "用户操作", Request.Headers["usercode"]);
return res;
}
}
///
/// 获取程序版次列表
///
///
///
///
///
///
///
///
[HttpGet]
public LayuiModel GetMacModelProgramVersionList(string filter, string sort, int pageIndex = 1, int pageSize = 10, string sortField = "e.FCode,b.FName,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 = (pageIndex - 1) * pageSize + 1;
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new MacModelProgramDal(db, userCode);
var total = dal.GetMacModelProgramVersionListCount(filter);
string errorinfo = string.Empty;
var list = dal.GetMacModelProgramVersionList(start, pageSize, sortOrder, sortField, filter, errorinfo);
return new LayuiModel
{
code = 1,
count = total,
data = list,
msg = ""
};
}
}
}
}