using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Autofac; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; //using Microsoft.Extensions.PlatformAbstractions; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using Newtonsoft.Json; using Quartz; using Quartz.Impl; using Swashbuckle.AspNetCore.SwaggerGen; using VolPro.Core.Configuration; using VolPro.Core.Extensions; using VolPro.Core.Filters; using VolPro.Core.Language; using VolPro.Core.Middleware; using VolPro.Core.ObjectActionValidator; using VolPro.Core.Quartz; using VolPro.Core.Utilities.PDFHelper; using VolPro.Core.WorkFlow; using VolPro.Entity.DomainModels; using VolPro.WebApi.Controllers.Hubs; using VolPro.Core.Controllers.DynamicController; using Microsoft.AspNetCore.Mvc.Infrastructure; using VolPro.Core.Print; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Server.Kestrel.Core; using VolPro.Core.Controllers.Basic; namespace VolPro.WebApi { public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureContainer() { //将原来startup.cs里面的打印、流程配置放在这个位置 WorkFlowContainer.Instance //.Use( // "生产报工", // filterFields: x => new { x.ReportingNumber, x.AcceptedQuantity, x.RejectedQuantity, x.Total, x.ReportedBy, x.ReportingTime }, // //审批界面显示表数据字段 // formFields: x => new { x.ReportedBy, x.ReportingNumber, x.ReportingTime, x.AcceptedQuantity, x.RejectedQuantity, x.Total }, // //明细表显示的数据 // formDetailFields: x => new { x.MaterialCode, x.MaterialName, x.MaterialSpecification, x.ReportedQuantity, x.RejectedQuantity, x.ReportHour } //) //.Use("订单管理", // //过滤条件字段 // filterFields: x => new { x.OrderDate, x.OrderNo, x.OrderStatus, x.OrderType, x.Creator, x.CustomerId }, // //审批界面显示表数据字段 // formFields: x => new { x.OrderDate, x.OrderNo, x.OrderStatus, x.Remark }, // //明细表显示的数据 // formDetailFields: x => new { x.GoodsName, x.GoodsCode, x.Qty, x.Price, x.Specs, x.Img, x.CreateDate }, // //defaultAduitStatus: AuditStatus.草稿, // //可编辑的字段(字段必须在上面的formFields内) // editFields: x => new { x.OrderDate, x.OrderNo, x.OrderStatus, x.OrderType } //) //.Use( // "产品管理", // filterFields: x => new { x.Creator, x.Price, x.ProductCode, x.ProductName }, // formFields: x => new { x.ProductCode, x.ProductName, x.Remark, x.Price, x.Creator, x.CreateDate } // ) .Use( "钥匙领用申请", filterFields: x => new { x.KeyId, x.Purpose, x.Creator }, formFields: x => new { x.Creator, x.KeyId, x.Purpose } ) .Use( "车辆借用申请", filterFields: x => new { x.CarId, x.Purpose, x.Creator }, formFields: x => new { x.Creator, x.CarId, x.Purpose } ) .Run(); /**********************************打印配置****************************************************/ PrintContainer.Instance /*****************[全国城市]单表打印*****************/ .Use( //主表配置 name: "告警记录", //主表可打印字段 printFields: x => new { x.Message, x.Result, x.Area, x.ChargePerson, x.CheckResult, x.CheckPerson, x.CheckTime, x.CreateDate, x.Type } ) .Use( //主表配置 name: "物料管理", //主表可以打印的字段 printFields: x => new { x.MaterialCode, x.MaterialName, x.MaterialType, x.CatalogID, x.Img } ) .Use( "生产报工", printFields: x => new { x.ReportingNumber, x.ReportingTime, x.AcceptedQuantity, x.RejectedQuantity, x.ReportedBy, x.Total }, //明细表配置 detailName: "报工明细", //明细表显示的数据 detailPrintFields: x => new { x.MaterialCode, x.MaterialName, x.MaterialSpecification, x.ReportedQuantity, x.RejectedQuantity, x.ReportHour } ) .Use( "生产订单", printFields: x => new { x.OrderNumber, x.OrderQty, x.OrderStatus, x.LV, x.OrderDate }, //明细表配置 detailName: "订单明细", //明细表显示的数据 detailPrintFields: x => new { x.MaterialCode, x.MaterialName, x.MaterialSpecification, x.PlanQuantity, x.Unit } ) .Use( "工序管理", printFields: x => new { x.ProcessCode, x.ProcessName, x.ProcessType, x.ProcessStatus }, //明细表配置 detailName: "工艺路线", //明细表显示的数据 detailPrintFields: x => new { x.ProductName, x.RouteSequence, x.RouteResponsible, x.PreProcessID, x.NextProcessID } ) /*****************[全国城市]单表打印*****************/ .Use( //主表配置 name: "地址打印管理", //主表可以打印的字段 printFields: x => new { x.name, x.code, x.mername, x.pinyin, x.Lat, x.Lng } ) //主从表同时打印(注意Use第一个参数是主表,第二个明细表) .Use( //主表配置 name: "订单打印管理", //主表可以打印的字段 printFields: x => new { x.OrderNo, x.OrderStatus, x.OrderType, x.OrderDate, x.TotalPrice, x.TotalQty }, //明细表配置 detailName: "订单详情", //明细表可以打印的字段 detailPrintFields: c => new { c.GoodsCode, c.GoodsName, c.Specs, c.Price, c.Qty } ) /*****************[订单表]打印配置(主从表明细表(一对一))*****************/ .Use( //主表配置 name: "订单打印管理", //主表可以打印的字段 printFields: x => new { x.OrderNo, x.OrderStatus, x.OrderType, x.OrderDate, x.TotalPrice, x.TotalQty }, //主表自定义打印的字段,没有就填null;需要在:PrintCustom类QueryResult字自定义返回这些字段的值 customFields: new List() { new CustomField() { Name="自定义1", Field="test1" } , new CustomField() { Name="自定义2", Field="test2" } }, //明细表配置 detail: new PrintDetailOptions() { Name = "订单详情", PrintFields = c => new { c.GoodsCode, c.GoodsName, c.Img, c.Specs, c.Price, c.Qty }, //明细表自定义的字段,没有就填null;需要在:PrintCustom类QueryResult字自定义返回这些字段的值 CustomFields = new List() { new CustomField() { Name="明细自定义1", Field="test1" } , new CustomField() { Name="明细自定义2", Field="test2" } } } ) /*****************[产品表]打印配置(一对多打印)*****************/ .Use( //主表配置 name: "一对多打印测试", //主表可以打印的字段 printFields: x => new { x.ProductName, x.ProductCode, x.AuditStatus, x.Price, x.Remark, x.CreateDate }, //主表自定义打印的字段,没有就填null;需要在:PrintCustom类QueryResult字自定义返回这些字段的值 customFields: null,//配置同上 //明细表[产品尺寸]打印配置 detail1: new PrintDetailOptions() { Name = "产品尺寸", //明细表打印的字段 PrintFields = x => new { x.ProductId, x.Size, x.Unit, x.Remark, x.Creator, x.CreateDate }, //明细表自定义的字段,需要在:PrintCustom类QueryResult字自定义返回这些字段的值 CustomFields = null //自定义字段同上配置一样 }, //明细表[产品颜色]打印配置 detail2: new PrintDetailOptions() { Name = "产品颜色", //明细表打印的字段 PrintFields = x => new { x.ProductId, x.Img, x.Color, x.Qty, x.Unit, x.Remark, x.Creator, x.CreateDate }, //明细表自定义的字段需要在:PrintCustom类QueryResult字自定义返回这些字段的值 CustomFields = null //自定义字段同上配置一样 } ); } } }