This commit is contained in:
2026-02-06 18:34:35 +08:00
commit f7f4c94c00
3285 changed files with 563208 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_AssembleWorkOrder",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using Microsoft.EntityFrameworkCore;
using iMES.Core.DBManager;
using iMES.Custom.IRepositories;
using System.Linq;
using iMES.Core.Configuration;
using iMES.Core.Extensions;
using MiniExcelLibs;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_AssembleWorkOrderController
{
private readonly IProduction_AssembleWorkOrderService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_AssembleWorkOrderListRepository _assembleListRepository;
private readonly IProduction_AssembleWorkOrderRepository _assembleRepository;
private readonly IBase_ExcelTemplateRepository _templateRepository;
private readonly IBase_PrintCatalogRepository _templateCatalogRepository;
[ActivatorUtilitiesConstructor]
public Production_AssembleWorkOrderController(
IProduction_AssembleWorkOrderService service,
IHttpContextAccessor httpContextAccessor,
IProduction_AssembleWorkOrderListRepository assembleListRepository,
IProduction_AssembleWorkOrderRepository assembleRepository,
IBase_ExcelTemplateRepository templateRepository,
IBase_PrintCatalogRepository templateCatalogRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_assembleListRepository = assembleListRepository;
_assembleRepository = assembleRepository;
_templateRepository = templateRepository;
_templateCatalogRepository = templateCatalogRepository;
}
/// <summary>
/// 获取装配订单产品明细列表
/// </summary>
/// <param name="SalesOrder_Id">装配订单ID</param>
/// <returns></returns>
[Route("getDetailRows"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetDetailRows(int AssembleWorkOrder_Id)
{
var rows = await _assembleListRepository.FindAsIQueryable(x => x.AssembleWorkOrder_Id == AssembleWorkOrder_Id)
.ToListAsync();
string woSql = " select * from Production_WorkOrder ";
List<Production_WorkOrder> list = DBServerProvider.SqlDapper.QueryList<Production_WorkOrder>(woSql, new { });
for (int i = 0; i < rows.Count; i++)
{
if (list.Exists(x => x.WorkOrderCode == rows[i].WorkOrderCode))
{
rows[i].FinishQty = list.Find(x => x.WorkOrderCode == rows[i].WorkOrderCode).GoodQty;
rows[i].BadQty = list.Find(x => x.WorkOrderCode == rows[i].WorkOrderCode).NoGoodQty;
}
else
{
rows[i].FinishQty = 0;
rows[i].BadQty = 0;
}
}
//获取当前库存数量
return JsonNormal(rows);
}
/// <summary>
/// 导出Excel模版数据
/// </summary>
/// <param name="SalesOrder_Id">装配工单</param>
/// /// <param name="cat">单据类型</param>
/// <returns></returns>
[Route("exportExcelTemplate"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public string ExportExcelTemplate(int AssembleWorkOrder_Id, string cat)
{
Guid catalogId = _templateCatalogRepository.FindAsIQueryable(x => x.CatalogCode == cat)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.CatalogId)
.FirstOrDefault();
var content = _templateRepository.FindAsIQueryable(x => x.CatalogId == catalogId && x.StatusFlag == 1)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.TemplateContent)
.FirstOrDefault();
if (string.IsNullOrEmpty(content))
return "";
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
string path = AppSetting.GetSettingString("ExportExcelPath") + fileName;
string templatePath = ("wwwroot/" + content).MapPath();
var main = _assembleRepository.FindAsIQueryable(x => x.AssembleWorkOrder_Id == AssembleWorkOrder_Id)
.OrderByDescending(x => x.CreateDate)
.Select(s => new Production_AssembleWorkOrder
{
AssembleWorkOrderCode = s.AssembleWorkOrderCode,
WorkOrderQty = s.WorkOrderQty,
Remark = s.Remark,
CreateDate = s.CreateDate
})
.FirstOrDefault();
var detail = _assembleListRepository.FindAsIQueryable(x => x.AssembleWorkOrder_Id == AssembleWorkOrder_Id)
.ToList();
var value = new Dictionary<string, object>()
{
["AssembleWorkOrderCode"] = main.AssembleWorkOrderCode,
#pragma warning disable CS8601 // 可能的 null 引用赋值。
["WorkOrderQty"] = main.WorkOrderQty,
#pragma warning restore CS8601 // 可能的 null 引用赋值。
["Remark"] = main.Remark,
#pragma warning disable CS8601 // 可能的 null 引用赋值。
["CreateDate"] = main.CreateDate,
#pragma warning restore CS8601 // 可能的 null 引用赋值。
["detail"] = detail,
["Total"] = detail.Sum(s => s.Qty),
};
MiniExcel.SaveAsByTemplate(path, templatePath, value);
return fileName;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_AssembleWorkOrderList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
namespace iMES.Production.Controllers
{
public partial class Production_AssembleWorkOrderListController
{
private readonly IProduction_AssembleWorkOrderListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Production_AssembleWorkOrderListController(
IProduction_AssembleWorkOrderListService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,58 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_OverWorkOrder",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using iMES.Core.ManageUser;
namespace iMES.Production.Controllers
{
public partial class Production_OverWorkOrderController
{
private readonly IProduction_OverWorkOrderService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_OverWorkOrderRepository _overWorkOrderRepository;
[ActivatorUtilitiesConstructor]
public Production_OverWorkOrderController(
IProduction_OverWorkOrderService service,
IHttpContextAccessor httpContextAccessor,
IProduction_OverWorkOrderRepository overWorkOrderRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_overWorkOrderRepository = overWorkOrderRepository;
}
/// <summary>
/// 工单状态变更
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("changeUpdate")]
public string ChangeUpdate(int overWorkOrder_Id, string status)
{
UserInfo userInfo = UserContext.Current.UserInfo;
Production_OverWorkOrder overWorkOrder = new Production_OverWorkOrder()
{
OverWorkOrder_Id = overWorkOrder_Id,
Status = Convert.ToInt32(status),
ApproverDate = DateTime.Now,
ApproverUserName = userInfo.UserTrueName
};
_overWorkOrderRepository.Update(overWorkOrder, x => new { x.Status, x.ApproverDate, x.ApproverUserName }, true);
return "变更成功!";
}
}
}

View File

@@ -0,0 +1,128 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_ProductPlan",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using Microsoft.EntityFrameworkCore;
using iMES.Core.DBManager;
using iMES.Custom.IRepositories;
using System.Linq;
using iMES.Core.Configuration;
using iMES.Core.Extensions;
using MiniExcelLibs;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_ProductPlanController
{
private readonly IProduction_ProductPlanService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_ProductPlanListRepository _productPlanListRepository;
private readonly IProduction_ProductPlanRepository _productPlanRepository;
private readonly IBase_ExcelTemplateRepository _templateRepository;
private readonly IBase_PrintCatalogRepository _templateCatalogRepository;
[ActivatorUtilitiesConstructor]
public Production_ProductPlanController(
IProduction_ProductPlanService service,
IHttpContextAccessor httpContextAccessor,
IProduction_ProductPlanListRepository productPlanListRepository,
IBase_ExcelTemplateRepository templateRepository,
IBase_PrintCatalogRepository templateCatalogRepository,
IProduction_ProductPlanRepository productPlanRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_productPlanListRepository = productPlanListRepository;
_templateRepository = templateRepository;
_templateCatalogRepository = templateCatalogRepository;
_productPlanRepository = productPlanRepository;
}
/// <summary>
/// 获取生产计划产品明细列表
/// </summary>
/// <param name="SalesOrder_Id">生产计划主键ID</param>
/// <returns></returns>
[Route("getDetailRows"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetDetailRows(int ProductPlan_Id)
{
var rows = await _productPlanListRepository.FindAsIQueryable(x => x.ProductPlan_Id == ProductPlan_Id)
.ToListAsync();
string woSql = " select * from Production_WorkOrder ";
List<Production_WorkOrder> list = DBServerProvider.SqlDapper.QueryList<Production_WorkOrder>(woSql, new { });
for (int i = 0; i < rows.Count; i++)
{
if (list.Exists(x => x.WorkOrderCode == rows[i].WorkOrderCode))
{
rows[i].FinishQty = list.Find(x => x.WorkOrderCode == rows[i].WorkOrderCode).GoodQty;
}
else
{
rows[i].FinishQty = 0;
}
}
//获取当前库存数量
return JsonNormal(rows);
}
/// <summary>
/// 导出Excel模版数据
/// </summary>
/// <param name="ProductPlan_Id">生产计划</param>
/// /// <param name="cat">单据类型</param>
/// <returns></returns>
[Route("exportExcelTemplate"), HttpGet]
public string ExportExcelTemplate(int ProductPlan_Id, string cat)
{
Guid catalogId = _templateCatalogRepository.FindAsIQueryable(x => x.CatalogCode == cat)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.CatalogId)
.FirstOrDefault();
var content = _templateRepository.FindAsIQueryable(x => x.CatalogId == catalogId && x.StatusFlag == 1)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.TemplateContent)
.FirstOrDefault();
if (string.IsNullOrEmpty(content))
return "";
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
string path = AppSetting.GetSettingString("ExportExcelPath") + fileName;
string templatePath = ("wwwroot/" + content).MapPath();
var main = _productPlanRepository.FindAsIQueryable(x => x.ProductPlan_Id == ProductPlan_Id)
.OrderByDescending(x => x.CreateDate)
.Select(s => new Production_ProductPlan
{
ProductPlanCode = s.ProductPlanCode,
Remark = s.Remark,
CreateDate = s.CreateDate
})
.FirstOrDefault();
var detail = _productPlanListRepository.FindAsIQueryable(x => x.ProductPlan_Id == ProductPlan_Id)
.ToList();
var value = new Dictionary<string, object>()
{
["ProductPlanCode"] = main.ProductPlanCode,
["Remark"] = main.Remark,
#pragma warning disable CS8601 // 可能的 null 引用赋值。
["CreateDate"] = main.CreateDate,
#pragma warning restore CS8601 // 可能的 null 引用赋值。
["detail"] = detail,
["Total"] = detail.Sum(s => s.Qty),
};
MiniExcel.SaveAsByTemplate(path, templatePath, value);
return fileName;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_ProductPlanList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
namespace iMES.Production.Controllers
{
public partial class Production_ProductPlanListController
{
private readonly IProduction_ProductPlanListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Production_ProductPlanListController(
IProduction_ProductPlanListService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,113 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_ReportWorkOrder",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using System.Linq;
using iMES.Core.Extensions;
using iMES.Custom.IRepositories;
using iMES.Core.DBManager;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_ReportWorkOrderController
{
private readonly IProduction_ReportWorkOrderService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_ReportWorkOrderRepository _reportWorkOrderRepository;
private readonly IBase_MeritPayRepository _meritPayRepository;
[ActivatorUtilitiesConstructor]
public Production_ReportWorkOrderController(
IProduction_ReportWorkOrderService service,
IHttpContextAccessor httpContextAccessor,
IProduction_ReportWorkOrderRepository reportWorkOrderRepository,
IBase_MeritPayRepository meritPayRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_reportWorkOrderRepository = reportWorkOrderRepository;
_meritPayRepository = meritPayRepository;
}
/// <summary>
/// 获取工单下面的工序列表
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getProgress")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public JsonResult GetProgress(string workOrder_Id, int processId,int productId,int planQty)
{
//获取已报工数量
int alreadyQty = 0;
var goodQtySum = _reportWorkOrderRepository.FindAsIQueryable(x => x.WorkOrder_Id == workOrder_Id && x.Process_Id == processId && x.Product_Id == productId)
.GroupBy(x => 1).Select(x => new
{
GoodQty = x.Sum(o => o.GoodQty)
}).FirstOrDefault();
if (goodQtySum !=null && goodQtySum.GoodQty != null)
{
alreadyQty = (int)goodQtySum.GoodQty;
}
//获取标准效率
var merit = _meritPayRepository.FindAsIQueryable(x => x.Process_Id == processId && x.Product_Id == productId)
.OrderByDescending(x => x.CreateDate)
.Select(s => new
{
standardNumber = s.StandardNumber,
standardHour = s.StandardHour,
standardMin = s.StandardMin,
standardSec = s.StandardSec,
unitPrice = s.UnitPrice
})
.FirstOrDefault();
Production_ReturnData entity = new Production_ReturnData();
entity.ProcessProgress = alreadyQty + "/" + planQty;
entity.StandardProgress = merit == null ? "" : merit.standardNumber + "/" + merit.standardHour + ":" + merit.standardMin + ":" + merit.standardSec;
entity.UnitPrice = merit == null ? "" : merit.unitPrice.ToString();
return Json(entity);
}
/// <summary>
/// 获取报工明细
/// </summary>
/// <returns></returns>
[Route("getReportDetailInfo"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public JsonResult getReportDetailInfo(string workOrderId)
{
string woSql = @" select rwo.*,p.ProcessName,u.UserTrueName ProductUserName FROM Production_ReportWorkOrder rwo
left join Base_Process p on rwo.Process_Id = p.Process_Id
left join Sys_User u on u.User_Id = rwo.ProductUser where rwo.WorkOrder_Id = '" + workOrderId + "' ";
List<Production_ReportWorkOrder> list = DBServerProvider.SqlDapper.QueryList<Production_ReportWorkOrder>(woSql, new { });
return JsonNormal(list);
}
/// <summary>
/// APP统计报表工序报工数
/// </summary>
/// <returns></returns>
[Route("getAppHomeReportProcessTop5"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public JsonResult GetAppHomeReportProcessTop5()
{
string woSql = @" SELECT TOP 5 p.ProcessName name ,SUM([ReportQty]) data
FROM [Production_ReportWorkOrder] rwo left join Base_Process p on rwo.Process_Id = p.Process_Id GROUP BY P.ProcessName ";
List<BoardEntity> list = DBServerProvider.SqlDapper.QueryList<BoardEntity>(woSql, new { });
return JsonNormal(list);
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_ReportWorkOrderList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
namespace iMES.Production.Controllers
{
public partial class Production_ReportWorkOrderListController
{
private readonly IProduction_ReportWorkOrderListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Production_ReportWorkOrderListController(
IProduction_ReportWorkOrderListService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,131 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_SalesOrder",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using Microsoft.EntityFrameworkCore;
using iMES.Core.DBManager;
using Sys = System;
using System.Linq;
using MiniExcelLibs;
using iMES.Custom.IRepositories;
using iMES.Core.Extensions;
using iMES.Core.Configuration;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_SalesOrderController
{
private readonly IProduction_SalesOrderService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_SalesOrderListRepository _salesOrderListRepository;
private readonly IProduction_SalesOrderRepository _salesOrderRepository;
private readonly IBase_ExcelTemplateRepository _templateRepository;
private readonly IBase_PrintCatalogRepository _templateCatalogRepository;
[ActivatorUtilitiesConstructor]
public Production_SalesOrderController(
IProduction_SalesOrderService service,
IHttpContextAccessor httpContextAccessor,
IProduction_SalesOrderListRepository salesOrderListRepository,
IBase_ExcelTemplateRepository templateRepository,
IBase_PrintCatalogRepository templateCatalogRepository,
IProduction_SalesOrderRepository salesOrderRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_salesOrderListRepository = salesOrderListRepository;
_salesOrderRepository = salesOrderRepository;
_templateRepository = templateRepository;
_templateCatalogRepository = templateCatalogRepository;
}
/// <summary>
/// 获取销售订单产品明细列表
/// </summary>
/// <param name="SalesOrder_Id">销售单号</param>
/// <returns></returns>
[Route("getDetailRows"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetDetailRows(int SalesOrder_Id)
{
var rows = await _salesOrderListRepository.FindAsIQueryable(x => x.SalesOrder_Id == SalesOrder_Id)
.ToListAsync();
string woSql = " select * from Production_WorkOrder ";
List<Production_WorkOrder> list = DBServerProvider.SqlDapper.QueryList<Production_WorkOrder>(woSql, new { });
for (int i = 0; i < rows.Count; i++)
{
if (list.Exists(x => x.WorkOrderCode == rows[i].WorkOrderCode))
{
rows[i].FinishQty = list.Find(x => x.WorkOrderCode == rows[i].WorkOrderCode).GoodQty;
}
else
{
rows[i].FinishQty = 0;
}
}
//获取当前库存数量
return JsonNormal(rows);
}
/// <summary>
/// 导出Excel模版数据
/// </summary>
/// <param name="SalesOrder_Id">销售单号</param>
/// /// <param name="cat">单据类型</param>
/// <returns></returns>
[Route("exportExcelTemplate"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public string ExportExcelTemplate(int SalesOrder_Id,string cat)
{
Guid catalogId = _templateCatalogRepository.FindAsIQueryable(x => x.CatalogCode == cat)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.CatalogId)
.FirstOrDefault();
var content = _templateRepository.FindAsIQueryable(x => x.CatalogId == catalogId && x.StatusFlag == 1)
.OrderByDescending(x => x.CreateDate)
.Select(s => s.TemplateContent)
.FirstOrDefault();
if (string.IsNullOrEmpty(content))
return "";
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
string path = AppSetting.GetSettingString("ExportExcelPath") + fileName;
string templatePath =("wwwroot/" + content).MapPath();
var main = _salesOrderRepository.FindAsIQueryable(x => x.SalesOrder_Id == SalesOrder_Id)
.OrderByDescending(x => x.CreateDate)
.Select(s => new Production_SalesOrder
{
SalesOrderCode = s.SalesOrderCode,
Remark = s.Remark,
CreateDate = s.CreateDate
})
.FirstOrDefault();
var detail = _salesOrderListRepository.FindAsIQueryable(x => x.SalesOrder_Id == SalesOrder_Id)
.ToList();
var value = new Dictionary<string, object>()
{
["SalesOrderCode"] = main.SalesOrderCode,
["Remark"] = main.Remark,
#pragma warning disable CS8601 // 可能的 null 引用赋值。
["CreateDate"] = main.CreateDate,
#pragma warning restore CS8601 // 可能的 null 引用赋值。
["detail"] = detail,
["Total"] = detail.Sum(s => s.Qty),
};
MiniExcel.SaveAsByTemplate(path, templatePath, value);
return fileName;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_SalesOrderList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
namespace iMES.Production.Controllers
{
public partial class Production_SalesOrderListController
{
private readonly IProduction_SalesOrderListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Production_SalesOrderListController(
IProduction_SalesOrderListService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,132 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_WorkOrder",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using iMES.Core.DBManager;
using iMES.Production.Services;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_WorkOrderController
{
private readonly IProduction_WorkOrderService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_WorkOrderRepository _workOrderRepository;
[ActivatorUtilitiesConstructor]
public Production_WorkOrderController(
IProduction_WorkOrderService service,
IHttpContextAccessor httpContextAccessor,
IProduction_WorkOrderRepository workOrderRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_workOrderRepository = workOrderRepository;
}
/// <summary>
/// 获取工单下面的产品信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getList")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetList(int workOrderId)
{
return Json(await _workOrderRepository.FindAsIQueryable(x => x.WorkOrder_Id == workOrderId)
.Select(s => new
{
Product_Id = s.Product_Id,
ProductCode = s.ProductCode,
ProductName = s.ProductName,
ProductStandard = s.ProductStandard
}).ToListAsync());
}
/// <summary>
/// 工单状态变更
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("changeUpdate")]
public string ChangeUpdate(int workOrderId,string status)
{
Production_WorkOrder workOrder = new Production_WorkOrder()
{
WorkOrder_Id = workOrderId,
Status = status,
ActualStartDate = DateTime.Now,
ActualEndDate = DateTime.Now
};
if (status == "2")
{
_workOrderRepository.Update(workOrder, x => new { x.Status,x.ActualStartDate }, true);
}
else if (status == "3")
{
string sql = "select * from View_OutputStatistics where WorkOrder_Id=@workOrderId ";
//与原生dapper使用方式基本一致更多使用方法参照dapper文档
List<Report_OutputReturnData> list = DBServerProvider.SqlDapper.QueryList<Report_OutputReturnData>(sql, new { workOrderId });
if (list.Count > 0)
{
workOrder.GoodQty = list[0].GoodQty;
workOrder.NoGoodQty = list[0].NoGoodQty;
workOrder.RealQty = list[0].GoodQty + list[0].NoGoodQty;
}
_workOrderRepository.Update(workOrder, x => new { x.Status, x.ActualEndDate, x.GoodQty,x.NoGoodQty,x.RealQty }, true);
}
else
{
_workOrderRepository.Update(workOrder, x => new { x.Status }, true);
}
return "变更成功!";
}
/// <summary>
/// 获取首页上方数量统计
/// </summary>
/// <returns></returns>
[Route("getHomeStatisticsNumber"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public JsonResult GetHomeStatisticsNumber()
{
string woSql = " select * from HomeView_StatisticsNumber ";
List<HomeNumberOutput> list = DBServerProvider.SqlDapper.QueryList<HomeNumberOutput>(woSql, new { });
return JsonNormal(list);
}
/// <summary>
/// 获取首页工序数量明细信息
/// </summary>
/// <returns></returns>
[Route("getHomeProcessNumber"), HttpGet]
[ApiActionPermission(ActionPermissionOptions.Search)]
public JsonResult GetHomeProcessNumber()
{
string woSql = " select * from HomeView_GetProcessNumber ";
List<HomeProcessNumberOutput> list = DBServerProvider.SqlDapper.QueryList<HomeProcessNumberOutput>(woSql, new { });
return JsonNormal(list);
}
//后台App_ProductController中添加代码返回table数据
[HttpPost, Route("getSelectorWorkOrder")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public IActionResult GetSelectorWorkOrder([FromBody] PageDataOptions options)
{
//1.可以直接调用框架的GetPageData查询
PageGridData<Production_WorkOrder> data = Production_WorkOrderService.Instance.GetPageData(options);
return JsonNormal(data);
}
}
}

View File

@@ -0,0 +1,75 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Production_WorkOrderList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using iMES.Entity.DomainModels;
using iMES.Production.IServices;
using iMES.Production.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using iMES.Core.Filters;
using iMES.Core.Enums;
namespace iMES.Production.Controllers
{
public partial class Production_WorkOrderListController
{
private readonly IProduction_WorkOrderListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IProduction_WorkOrderListRepository _workOrderListRepository;
private readonly IProduction_WorkOrderRepository _workOrderRepository;
[ActivatorUtilitiesConstructor]
public Production_WorkOrderListController(
IProduction_WorkOrderListService service,
IHttpContextAccessor httpContextAccessor,
IProduction_WorkOrderListRepository workOrderListRepository,
IProduction_WorkOrderRepository workOrderRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_workOrderListRepository = workOrderListRepository;
_workOrderRepository = workOrderRepository;
}
/// <summary>
/// 获取工单下面的工序列表
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getList")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetList(int workOrderId)
{
var wo = _workOrderRepository.FindAsIQueryable(x => x.WorkOrder_Id == workOrderId)
.OrderByDescending(x => x.CreateDate)
.Select(s => new
{
WorkOrderCode = s.WorkOrderCode,
Product_Id = s.Product_Id,
PlanQty = s.PlanQty
})
.FirstOrDefault();
return Json(await _workOrderListRepository.FindAsIQueryable(x => x.WorkOrder_Id == workOrderId)
.Select(s => new
{
key = s.Process_Id,
value = s.ProcessName,
productId = wo.Product_Id,
workOrderCode = wo.WorkOrderCode,
workOrderId = workOrderId,
planQty = wo.PlanQty
}).ToListAsync());
}
}
}