// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using AngleSharp.Io; using COSXML.Network; using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Vml; using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NewLife.Xml; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Vistar.Application.Const; using Vistar.Application.Entity; using Vistar.Application.Service.OaOpenInterface.Dto; using Vistar.Application.SolidWorksManageService.Dto; using Field = Vistar.Application.SolidWorksManageService.Dto.Field; using HttpClient = System.Net.Http.HttpClient; namespace Vistar.Application.Service.OaOpenInterface; /// /// 开放接口给OA /// [ApiDescriptionSettings(ApplicationConst.GroupName, Name = "OaOpenInterfaceService", Order = 100)] public class OaOpenInterfaceService : IDynamicApiController, ITransient { public SqlSugarRepository _obj109Rep; public SqlSugarRepository _obj140Rep; public SolidWorksManageService.SolidWorksManageService _solidWorksManageService; public SqlSugarRepository _objectFieldsGroupsRep; public SqlSugarRepository _fieldGroupDefaultRep; public SqlSugarRepository _obj81Rep; public SqlSugarRepository _obj118Rep; public OaOpenInterfaceService( SqlSugarRepository obj109Rep, SqlSugarRepository obj140Rep, SqlSugarRepository obj81Rep, SolidWorksManageService.SolidWorksManageService solidWorksManageService, SqlSugarRepository objectFieldsGroupsRep, SqlSugarRepository fieldGroupDefaultRep, SqlSugarRepository obj118Rep ) { _obj109Rep = obj109Rep; _obj140Rep = obj140Rep; _solidWorksManageService = solidWorksManageService; _objectFieldsGroupsRep = objectFieldsGroupsRep; _fieldGroupDefaultRep = fieldGroupDefaultRep; _obj81Rep= obj81Rep; _obj118Rep= obj118Rep; } /// /// OA创建、修改项目 /// /// /// [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] [ApiDescriptionSettings(Name = "OaCreateProject"), HttpPost] [DisplayName("OA创建、修改项目")] public async Task OaCreateProject(OaCreateProjectInput input) { var response = new ManageResponse(); if (string.IsNullOrWhiteSpace(input._System_objNBS) || string.IsNullOrWhiteSpace(input._System_objDescription)) { response.Success = true; response.Message = "请输入必填字段"; return response; } if (input._System_objDescription.Length > 40) { response.Success = true; response.Message = "项目名称不能超过40字符"; return response; } //判断是否存在项目记录 var clientExists = await _obj109Rep.AsQueryable().AnyAsync(x => x._System_objNBS == input._System_objNBS && x.deleted == false); if (clientExists == false) { var fieldList = new List(); if (input.fld004503 != null) { fieldList.Add(new Field { key = "fld004503", value = input.fld004503.ToString() }); } if (input.fld004503 != null) { fieldList.Add(new Field { key = "fld004504", value = input.fld004504.ToString() }); } fieldList.Add(new Field { key = "fld004684", value = input.fld004684 }); fieldList.Add(new Field { key = "_System_objNBS", value = input._System_objNBS }); fieldList.Add(new Field { key = "_System_objDescription", value = input._System_objDescription }); fieldList.Add(new Field { key = "fld004728", value = input.fld004728 }); fieldList.Add(new Field { key = "fld005299", value = input.fld005299 }); fieldList.Add(new Field { key = "fld005300", value = input.fld005300 }); fieldList.Add(new Field { key = "fld005281", value = "SET" }); fieldList.Add(new Field { key = "fld004521", value = "M" }); fieldList.Add(new Field { key = "fld004519", value = "FERT" }); fieldList.Add(new Field { key = "fld004522", value = "1000" }); fieldList.Add(new Field { key = "fld004928", value = "E" }); fieldList.Add(new Field { key = "fld004935", value = "X" }); fieldList.Add(new Field { key = "fld004510", value = "A" }); fieldList.Add(new Field { key = "fld004514", value = "A" }); fieldList.Add(new Field { key = "fld004517", value = "A" }); fieldList.Add(new Field { key = "fld005753", value = "OA" }); var fieldGroupValue = await _fieldGroupDefaultRep.AsQueryable().Where(x => x.GroupObjid == input.object_id).ToListAsync(); for (int i = 0; i < fieldGroupValue.Count; i++) { fieldList.Add(new Field { key = "fld00" + fieldGroupValue[i].ColumnId, value = fieldGroupValue[i].DefaultValue }); } var fieldGroup = await _objectFieldsGroupsRep.AsQueryable().Where(x => x.GroupName == input.field_group).FirstAsync(); var data = new CreateProjectInput { object_id = input.object_id, field_group_id = fieldGroup.GroupObjId, fields = fieldList }; response = await _solidWorksManageService.CreateProject(data); var projectData = await _obj109Rep.AsQueryable().Where(x => x._System_objNBS == input._System_objNBS).FirstAsync(); var CheckData = new CheckDataInput() { object_id = input.object_id, record_guid = projectData.RecordGuid, bom_level = 1 }; await _solidWorksManageService.CheckOut(CheckData); await _solidWorksManageService.CheckIn(CheckData); } else if (clientExists == true) { var updateable = await _obj109Rep.AsUpdateable() .SetColumns(it => new Obj109 { fld004684 = input.fld004684, _System_ObjDescription = input._System_objDescription, fld004728 = input.fld004728, fld005299 = input.fld005299, fld005300 = input.fld005300, fld004503 = input.fld004503, fld004504 = input.fld004504 }) .Where(x => x._System_objNBS == input._System_objNBS && x.deleted == false) .ExecuteCommandHasChangeAsync(); response.Success = true; response.Message = updateable ? "修改成功" : "修改失败"; } return response; } /// /// OA创建问题报告 /// /// /// [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] [ApiDescriptionSettings(Name = "OaCreateProcess"), HttpPost] [DisplayName("OA创建流程")] public async Task OaCreateProcess(OaCreateProcessInput input) { var response = new ManageResponse(); if ( string.IsNullOrWhiteSpace(input._System_objNBS) || string.IsNullOrWhiteSpace(input._System_objDescription) || string.IsNullOrWhiteSpace(input.fld005831) || string.IsNullOrWhiteSpace(input.fld005832) || string.IsNullOrWhiteSpace(input.fld005833) || string.IsNullOrWhiteSpace(input.fld005836) || string.IsNullOrWhiteSpace(input.fld005842) || string.IsNullOrWhiteSpace(input.fld005847) || input.fld005849 == default(DateTime) || //string.IsNullOrWhiteSpace(input.fld005849.ToString("yyyy-MM-dd HH:mm:ss")) || string.IsNullOrWhiteSpace(input.fld005850) || input.fld005852 == default(DateTime) || //string.IsNullOrWhiteSpace(input.fld005852.ToString("yyyy-MM-dd HH:mm:ss")) || string.IsNullOrWhiteSpace(input.fld005853) ) { response.Success = true; response.Message = "请输入必填字段"; return response; } //判断是否存在项目记录 var clientExists = await _obj140Rep.AsQueryable().AnyAsync(x => x._System_objNBS == input._System_objNBS && x.deleted == false); if (clientExists == false) { var fieldList = new List(); fieldList.Add(new Field { key = "_System_objNBS", value = input._System_objNBS }); fieldList.Add(new Field { key = "_System_objDescription", value = input._System_objDescription }); fieldList.Add(new Field { key = "fld005831", value = input.fld005831 }); fieldList.Add(new Field { key = "fld005832", value = input.fld005832 }); fieldList.Add(new Field { key = "fld005833", value = input.fld005833 }); fieldList.Add(new Field { key = "fld005836", value = input.fld005836 }); fieldList.Add(new Field { key = "fld005842", value = input.fld005842 }); fieldList.Add(new Field { key = "fld005847", value = input.fld005847 }); fieldList.Add(new Field { key = "fld005849", value = input.fld005849.ToString("yyyy-MM-dd HH:mm:ss") }); fieldList.Add(new Field { key = "fld005850", value = input.fld005850 }); fieldList.Add(new Field { key = "fld005852", value = input.fld005852.ToString("yyyy-MM-dd HH:mm:ss") }); fieldList.Add(new Field { key = "fld005853", value = input.fld005853 }); fieldList.Add(new Field { key = "fld005855", value = "OA" }); if (!string.IsNullOrWhiteSpace(input.fld005838)) { fieldList.Add(new Field { key = "fld005838", value = input.fld005838 }); } if (!string.IsNullOrWhiteSpace(input.fld005841)) { fieldList.Add(new Field { key = "fld005841", value = input.fld005841 }); } if (!string.IsNullOrWhiteSpace(input.fld005843)) { fieldList.Add(new Field { key = "fld005843", value = input.fld005843 }); } if (!string.IsNullOrWhiteSpace(input.fld005846)) { fieldList.Add(new Field { key = "fld005846", value = input.fld005846 }); } if (!string.IsNullOrWhiteSpace(input.fld005844)) { fieldList.Add(new Field { key = "fld005844", value = input.fld005844 }); } if (!string.IsNullOrWhiteSpace(input.fld005845)) { fieldList.Add(new Field { key = "fld005845", value = input.fld005845 }); } if (!string.IsNullOrWhiteSpace(input.fld006061)) { fieldList.Add(new Field { key = "fld006061", value = input.fld006061 }); } if (!string.IsNullOrWhiteSpace(input.fld006062)) { fieldList.Add(new Field { key = "fld006062", value = input.fld006062 }); } if (!string.IsNullOrWhiteSpace(input.fld005854)) { fieldList.Add(new Field { key = "fld005854", value = input.fld005854 }); } var fieldGroup = await _objectFieldsGroupsRep.AsQueryable().Where(x => x.GroupName == input.field_group && x.ObjectId == 140).FirstAsync(); var data = new CreateProjectInput { object_id = input.object_id, field_group_id = fieldGroup.GroupObjId, fields = fieldList }; response = await _solidWorksManageService.CreateProcess(data); if (response.Success== true && response.Message== "记录 已成功保存!") { var projectData = await _obj140Rep.AsQueryable().Where(x => x._System_objNBS == input._System_objNBS && x.deleted == false).OrderByDescending(x=>x.VersionIndex).FirstAsync(); long? fld005835 = null; string fld005835_Rec = ""; var responsiblePersonOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005836 && x.deleted == false).ToListAsync(); if (responsiblePersonOaData.Count != 0) { fld005835 = 81; fld005835_Rec = responsiblePersonOaData[0].RecordGuid; } long? fld005848 = null; string fld005848_Rec = ""; var createPersonOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005847 && x.deleted == false).ToListAsync(); if (createPersonOaData.Count != 0) { fld005848 = 81; fld005848_Rec= createPersonOaData[0].RecordGuid; } long? fld005851 = null; string fld005851_Rec = ""; var reviewerOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005850 && x.deleted == false).ToListAsync(); if (reviewerOaData.Count != 0) { fld005851 = 81; fld005851_Rec= reviewerOaData[0].RecordGuid; } long? fld005837 = null; string fld005837_Rec = ""; if (!string.IsNullOrWhiteSpace(input.fld005838)) { var mechanicalProblemHandlerOaId = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005838 && x.deleted == false).ToListAsync(); if (mechanicalProblemHandlerOaId.Count != 0) { fld005837 = 81; fld005837_Rec= mechanicalProblemHandlerOaId[0].RecordGuid; } } long? fld006063 = null; string fld006063_Rec = ""; if (!string.IsNullOrWhiteSpace(input.fld006061)) { var electricalProblemHandlerOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld006061 && x.deleted == false).ToListAsync(); if (electricalProblemHandlerOaData.Count != 0) { fld006063 = 81; fld006063_Rec = electricalProblemHandlerOaData[0].RecordGuid; } } long? fld006064 = null; string fld006064_Rec = ""; if (!string.IsNullOrWhiteSpace(input.fld006062)) { var softwareProblemHandlerOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld006062 && x.deleted == false).ToListAsync(); if (softwareProblemHandlerOaData.Count != 0) { fld006064 = 81; fld006064_Rec = softwareProblemHandlerOaData[0].RecordGuid; } } await _obj140Rep.AsUpdateable() .SetColumns(it => new Obj140 { fld005835 = fld005835, fld005835_Rec= fld005835_Rec, fld005848 = fld005848, fld005848_Rec = fld005848_Rec, fld005851 = fld005851, fld005851_Rec = fld005851_Rec, fld005837 = fld005837, fld005837_Rec = fld005837_Rec, fld006063 = fld006063, fld006063_Rec = fld006063_Rec, fld006064 = fld006064, fld006064_Rec = fld006064_Rec }) .Where(it => it.idRecord == projectData.idRecord) .ExecuteCommandAsync(); var CheckData = new CheckDataInput() { object_id = input.object_id, record_guid = projectData.RecordGuid, bom_level = 1 }; await _solidWorksManageService.CheckIn(CheckData); } } else { response.Success = true; response.Message = "编码已存在"; } return response; } /// /// OA创建问题报告文件 /// /// /// [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] [ApiDescriptionSettings(Name = "OaAddRelatedFiles"), HttpPost] [DisplayName("OA创建问题报告文件")] public async Task OaAddRelatedFiles(OaAddRelatedFilesInput input) { var response = new ManageResponse(); if (input.object_id == 0||string.IsNullOrEmpty(input._System_objNBS)|| input.file_structure_id ==0 || string.IsNullOrEmpty(input.file_name)) { response.Success = true; response.Message = "必填项不能为空"; return response; } //byte[] bytes = File.ReadAllBytes(input.file); //string base64String = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64String(input.file); var AddRelatedFiles=new List(); var data=await _obj140Rep.AsQueryable().Where(x=>x._System_objNBS==input._System_objNBS && x.deleted==false).OrderByDescending(x=>x.idRecord).ToListAsync(); if (data.Count > 0) { var CheckData = new CheckDataInput() { object_id = input.object_id, record_guid = data[0].RecordGuid, bom_level = 1 }; await _solidWorksManageService.CheckOut(CheckData); var latestData = await _obj140Rep.AsQueryable().Where(x => x._System_objNBS == input._System_objNBS && x.deleted == false).OrderByDescending(x => x.idRecord).ToListAsync(); var AddRelatedFilesData = new AddRelatedFilesInput { object_id = input.object_id, record_id = latestData[0].idRecord, file_structure_id = input.file_structure_id, file_name = input.file_name, file = bytes }; response = await _solidWorksManageService.AddRelatedFiles(AddRelatedFilesData); await _solidWorksManageService.CheckIn(CheckData); } else { response.Success = false; response.Message = "编码不存在"; } return response; } /// /// ecn同步文件 /// /// [ApiDescriptionSettings(Name = "SyncEcnAttach"), HttpGet] [DisplayName("ecn同步文件")] [AllowAnonymous] public async Task> SyncEcnAttach() { var data=await _obj118Rep.AsQueryable().Where(x=>x.deleted==false&&x.fld006778=="A"&&x._System_CurrentStage=="结束"&&!string.IsNullOrEmpty(x.fld006310_Rec)).ToListAsync(); var groupedData = data.GroupBy(item => item.RecordGuid) .Select(group => group.OrderByDescending(item => item.idRecord).First()) .ToList(); var output = new List(); foreach (var item in groupedData) { var id = item.idRecord; var input = new ExportRelatedFilesInput { record_id=id, object_id=118 }; var manageOutput= await _solidWorksManageService.ExportRelatedFiles(input); if (manageOutput.State=="成功") { var problemReport= await _obj140Rep.AsQueryable().Where(x=>x.RecordGuid==item.fld006310_Rec&&x.deleted==false).FirstAsync(); if (problemReport != null) { var oaUploadFileOutput = await OaUploadFile(problemReport._System_objNBS, manageOutput); output.Add(oaUploadFileOutput); await _obj118Rep.AsUpdateable().SetColumns(it => new Obj118 { fld006778="N", fld006780=DateTime.Now, fld006779= oaUploadFileOutput.message }) .Where(it => it.idRecord == id) .ExecuteCommandAsync(); } } } return output; } /// /// oa上传文件接口 /// /// /// /// public async Task OaUploadFile(string problemNum, ExportRelatedFilesOutput input) { string url = "http://223.113.253.60:8000/papi/secondev/workflow/uploadFileByReportNo"; // 构建请求参数字典 var requestData = new { num = problemNum, filename=input.FileName, filesize="", base64 = input.FileBate }; var output = new OaUploadFileOutput(); using (HttpClient client = new HttpClient()) { try { // 将对象序列化为JSON字符串 string json = JsonConvert.SerializeObject(requestData); // 创建HttpContent,设置为JSON格式的内容 HttpContent content = new StringContent(json, Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(url,content); if (response.IsSuccessStatusCode) { string contentOutput = await response.Content.ReadAsStringAsync(); output = JsonConvert.DeserializeObject(contentOutput); return output; } } catch (Exception e) { Console.WriteLine(e.Message); } } return output; } }