// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using Admin.NET.Core.Service; using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Mvc; using NewLife.Xml; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Vistar.Application.Common; using Vistar.Application.Const; using Vistar.Application.Entity; using Vistar.Application.SapService.Dto; using Vistar.Application.Util; using static Org.BouncyCastle.Math.Primes; namespace Vistar.Application.Service.PurchasingRequisition; /// /// 研发采购申请服务 /// [ApiDescriptionSettings(ApplicationConst.GroupName, Name = "PurchasingRequisition", Order = 100)] public class PurchasingRequisitionService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _obj119Rep; private readonly SqlSugarRepository _obj109Rep; private readonly SqlSugarRepository _configurationsRep; private readonly SysConfigService _sysConfigService; private readonly SqlSugarRepository _configurationDataRep; public SapService.SapService _sapService; public SqlSugarRepository _obj118Rep; public Common.DataValidationService _dataValidationService; public SqlSugarRepository _obj122Rep; public SqlSugarRepository _obj121Rep; public SqlSugarRepository _obj81Rep; public PurchasingRequisitionService( SqlSugarRepository obj119Rep, SqlSugarRepository configurationsRep, SysConfigService sysConfigService, SqlSugarRepository configurationDataRep, SapService.SapService sapService, SqlSugarRepository obj118Rep, DataValidationService dataValidationService, SqlSugarRepository obj122Rep, SqlSugarRepository obj121Rep, SqlSugarRepository obj109Rep, SqlSugarRepository obj81Rep ) { _obj119Rep = obj119Rep; _configurationsRep = configurationsRep; _sysConfigService = sysConfigService; _configurationDataRep = configurationDataRep; _sapService = sapService; _obj118Rep = obj118Rep; _dataValidationService = dataValidationService; _obj122Rep = obj122Rep; _obj121Rep = obj121Rep; _obj109Rep = obj109Rep; _obj81Rep = obj81Rep; } /// /// 创建研发采购申请 /// /// public async Task> TimingSyncToSAPPurchasingRequisition() { var sapOutputList = new List(); //获取Sap用户名 var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); // 配置ID 数据库Configurations表 var configid = 10; // 获取符合条件的采购申请单 var PurchasingRequisitionList = await _obj119Rep.AsQueryable().Where(x => x.fld006416 == "A" && x.deleted == false && x.CheckedStatus == false && x._System_CurrentStage == "结束").ToListAsync(); foreach (var item in PurchasingRequisitionList) { var itemList = new List(); var SapPurchasingRequisition = new SapPurchasingRequisitionInput { Reqkeyid = "", Businessid = "", Messageid = "", Sndprn = "PLM", Rcvprn = "SAP", Requser = sapUserName, Note1 = "", Note2 = "", Note3 = "", Zwbid = item._System_objNBS, Banfn = item.fld006138, Bsart = "Z002", Zoperate = item.fld006139, Zttby1 = item.fld006311, Zttby2 = item.fld006312, Zttby3 = item.fld006313, Item = itemList }; //查询BOM var bomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configid && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == item.VersionIndex).ToListAsync(); var project = await _obj109Rep.AsQueryable().Where(x => x.RecordGuid == item.fld004639_Rec && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); foreach (var bomItem in bomData) { var unit = await _dataValidationService.GetUnit(bomItem.ChildObjID, bomItem.ChildGuid); var Item = new SapPurchasingRequisitionItem { Bnfpo = bomItem.Marker, Zzjjbs = bomItem.fld006140, Knttp = bomItem.fld006142, Pstyp = bomItem.fld006143, Matnr = bomItem.PartNumber, Txz01 = "", Menge = bomItem.Quantity.ToString(), Meins = unit, Lfdat = bomItem.fld006144.ToString("yyyy-MM-dd"), Matkl = "", Werks = bomItem.fld006145, Lgort = bomItem.fld006146, Ekgrp = "", Ekorg = bomItem.fld006147, Zzpspnr = project._System_objNBS, Afnam = item.fld006125, Loekz = bomItem.fld006141 }; itemList.Add(Item); } var sapOutput = await _sapService.SapPurchasingRequisitionApi(SapPurchasingRequisition); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; string msg = sapOutput.msg; if (sapOutput.msg == "") { msg = "同步成功"; } if (item.fld006139 == "I") { await _obj119Rep.AsUpdateable() .SetColumns(it => new Obj119 { fld005934 = DateTime.Now,//同步日期 fld005933 = codeVal,//同步状态 fld006416 = "N",//同步标识 fld005935 = msg,//同步信息 fld006138 = sapOutput.banfn//采购申请编号 }) .Where(it => it.idRecord == item.idRecord) .ExecuteCommandAsync(); } if (item.fld006139 == "U") { await _obj119Rep.AsUpdateable() .SetColumns(it => new Obj119 { fld005934 = DateTime.Now,//同步日期 fld005933 = codeVal,//同步状态 fld006416 = "N",//同步标识 fld005935 = msg//同步信息 }) .Where(it => it.idRecord == item.idRecord) .ExecuteCommandAsync(); } var output = new SapOutput() { parameter = sapOutput.parameter, materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; sapOutputList.Add(output); } return sapOutputList; } }