From f78c6c8fe3f94db0455893d0f44f4aaa02b4dc77 Mon Sep 17 00:00:00 2001 From: yangxing Date: Thu, 27 Mar 2025 13:34:16 +0800 Subject: [PATCH] =?UTF-8?q?20250327=20=E6=B7=BB=E5=8A=A0=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=92=8C=E6=93=8D=E4=BD=9C=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 399 ++++++++++++++++-- .../ThirdApiInfo/Dtos/ProductInfoDto.cs | 115 +++++ .../ThirdApiInfo/IOpenService.cs | 9 + .../ThirdApiInfo/OpenAppService.cs | 18 + Waste.Application/ThirdApiInfo/OpenService.cs | 225 +++++++++- Waste.Application/Waste.Application.xml | 146 +++++++ Waste.Domain/DataModel/W_Product.cs | 170 ++++++++ .../Controllers/ResultController.cs | 10 + Waste.OpenApi.Host/Program.cs | 94 +++++ .../Properties/launchSettings.json | 29 ++ Waste.OpenApi.Host/Startup.cs | 84 ++++ Waste.OpenApi.Host/Waste.OpenApi.Host.csproj | 18 + .../appsettings.Development.json | 8 + Waste.OpenApi.Host/appsettings.json | 22 + .../PublishProfiles/FolderProfile.pubxml.user | 3 +- .../Waste.SocketService.csproj.user | 2 +- Waste.Web.Core/Startup.cs | 8 +- ...y-8bb4cac3-1d12-401d-83b9-3fd48e11a10f.xml | 16 + ...y-990d58c2-bb18-4ec6-901c-0391a76bfa2f.xml | 16 + Waste.Web.Entry/Pages/Device/Product.cshtml | 87 ++++ .../Pages/Device/Product.cshtml.cs | 20 + .../waste.ybhdmob.com.pubxml.user | 2 +- Waste.Web.Entry/Waste.Web.Entry.csproj | 7 + Waste.Web.Entry/Waste.Web.Entry.csproj.user | 4 + Waste.sln | 7 + 25 files changed, 1456 insertions(+), 63 deletions(-) create mode 100644 Waste.Application/ThirdApiInfo/Dtos/ProductInfoDto.cs create mode 100644 Waste.Domain/DataModel/W_Product.cs create mode 100644 Waste.OpenApi.Host/Controllers/ResultController.cs create mode 100644 Waste.OpenApi.Host/Program.cs create mode 100644 Waste.OpenApi.Host/Properties/launchSettings.json create mode 100644 Waste.OpenApi.Host/Startup.cs create mode 100644 Waste.OpenApi.Host/Waste.OpenApi.Host.csproj create mode 100644 Waste.OpenApi.Host/appsettings.Development.json create mode 100644 Waste.OpenApi.Host/appsettings.json create mode 100644 Waste.Web.Entry/DataProtection/key-8bb4cac3-1d12-401d-83b9-3fd48e11a10f.xml create mode 100644 Waste.Web.Entry/DataProtection/key-990d58c2-bb18-4ec6-901c-0391a76bfa2f.xml create mode 100644 Waste.Web.Entry/Pages/Device/Product.cshtml create mode 100644 Waste.Web.Entry/Pages/Device/Product.cshtml.cs diff --git a/.gitignore b/.gitignore index 9a646cf..9491a2f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,36 +1,363 @@ -/Waste.Application/bin -/Waste.Application/obj -/Waste.Core/obj -/Waste.Core/bin -/Waste.Doc/obj -/Waste.Doc/bin -/Waste.Domain/bin -/Waste.Domain/obj -/Waste.Web/bin -/Waste.Web/obj -/Waste.Web.Core/bin -/Waste.Web.Core/obj -/Nirvana.Common/bin -/Nirvana.Common/obj -/Waste.Doc/苏州垃圾分类计量设备计入标准/4G_2G_NB DTU Products Functions _V2.0_20200219.zip -/Waste.Doc/苏州垃圾分类计量设备计入标准/4G_2G_NB Products Operation Guide_20200424.zip -/Waste.Doc/苏州垃圾分类计量设备计入标准/HF2411 User Manual-V1.2_20200706.zip -/Waste.Doc/苏州垃圾分类计量设备计入标准/4G_2G_NB DTU Products Functions _V2.0_20200219/4G_2G_NB DTU Products Functions_V2.0_20200219.pdf -/Waste.Doc/苏州垃圾分类计量设备计入标准/4G_2G_NB Products Operation Guide_20200424/4G_2G_NB Products Operation Guide_20200424.pdf -/Waste.Doc/苏州垃圾分类计量设备计入标准/HF2411 User Manual-V1.2_20200706/HF2411 User Manual V1.2(20200706).pdf -/Waste.MessageHandler/bin -/Waste.MessageHandler/obj -/Waste.Socket/bin -/Waste.Socket/obj -/Waste.Web.Entry/bin -/Waste.Web.Entry/obj -/.vs -/WasteConsoleTest/WasteConsoleTest/obj -/WasteConsoleTest/WasteConsoleTest/bin -/Waste.CreateDB/bin/Debug/net5.0 -/Waste.CreateDB/obj -/Waste.SocketService.cs/bin -/Waste.SocketService.cs/obj -/WasteHexTest/obj -/WasteHexTest/bin -/Waste.Web.Entry/wwwroot/bugs +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/Waste.Application/ThirdApiInfo/Dtos/ProductInfoDto.cs b/Waste.Application/ThirdApiInfo/Dtos/ProductInfoDto.cs new file mode 100644 index 0000000..8f298a7 --- /dev/null +++ b/Waste.Application/ThirdApiInfo/Dtos/ProductInfoDto.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Waste.Application.ThirdApiInfo +{ + public class ProductInfoDto + { + public decimal amount { get; set; } + /// + /// + /// + public string date { get; set; } + /// + /// + /// + public string dateTime { get; set; } + /// + /// + /// + public long id { get; set; } + /// + /// 规格,参数名称, + /// + public string idNames { get; set; } + /// + /// 545677,参数值, + /// + public string idValues { get; set; } + /// + /// + /// + public bool isUpload { get; set; } + /// + /// + /// + public int level { get; set; } + /// + /// + /// + public decimal lowerLimit { get; set; } + /// + /// + /// + public decimal netWeight { get; set; } + /// + /// + /// + public long productId { get; set; } + /// + /// + /// + public string productName { get; set; } + /// + /// + /// + public string productNo { get; set; } + /// + /// + /// + public long recordNo { get; set; } + /// + /// + /// + public long startDate { get; set; } + /// + /// + /// + public int status { get; set; } + /// + /// + /// + public decimal tareWeight { get; set; } + /// + /// + /// + public string time { get; set; } + /// + /// + /// + public long timeStamp { get; set; } + /// + /// + /// + public string unit { get; set; } + /// + /// + /// + public decimal upperLimit { get; set; } + /// + /// + /// + public long userId { get; set; } + /// + /// 技术员 + /// + public string userName { get; set; } + /// + /// + /// + public string uuid { get; set; } + /// + /// + /// + public decimal weight { get; set; } + /// + /// + /// + public string image { get; set; } + + public string Video { get; set; } + } +} diff --git a/Waste.Application/ThirdApiInfo/IOpenService.cs b/Waste.Application/ThirdApiInfo/IOpenService.cs index 6d4f652..2f3c278 100644 --- a/Waste.Application/ThirdApiInfo/IOpenService.cs +++ b/Waste.Application/ThirdApiInfo/IOpenService.cs @@ -5,6 +5,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Waste.Application.SubscribeInfo; +using Waste.Domain; +using Waste.Domain.DataModel; namespace Waste.Application.ThirdApiInfo { @@ -50,5 +52,12 @@ namespace Waste.Application.ThirdApiInfo /// /// Task WifiPostAsync(WifiRequestC2SDto data); + /// + /// 新增电子秤 + /// + /// + /// + Task AddProductAsync(ProductInfoDto data); + Task> GetProductAsync(QueryParams param); } } diff --git a/Waste.Application/ThirdApiInfo/OpenAppService.cs b/Waste.Application/ThirdApiInfo/OpenAppService.cs index 512f202..13634cb 100644 --- a/Waste.Application/ThirdApiInfo/OpenAppService.cs +++ b/Waste.Application/ThirdApiInfo/OpenAppService.cs @@ -14,6 +14,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using Waste.Application.SubscribeInfo; +using Waste.Domain.DataModel; namespace Waste.Application.ThirdApiInfo { @@ -317,5 +318,22 @@ namespace Waste.Application.ThirdApiInfo { return await _openService.WifiPostAsync(data); } + + /// + /// 新增电子秤 + /// + /// + /// + [HttpPost] + public async Task AddProductAsync(ProductInfoDto data) + { + return await _openService.AddProductAsync(data); + } + + [HttpPost] + public async Task> GetProductAsync(QueryParams param) + { + return await _openService.GetProductAsync(param); + } } } \ No newline at end of file diff --git a/Waste.Application/ThirdApiInfo/OpenService.cs b/Waste.Application/ThirdApiInfo/OpenService.cs index 4a3e8f7..d70665b 100644 --- a/Waste.Application/ThirdApiInfo/OpenService.cs +++ b/Waste.Application/ThirdApiInfo/OpenService.cs @@ -6,11 +6,16 @@ using Microsoft.Extensions.Caching.Distributed; using Nirvana.Common; using SqlSugar; using System; +using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Furion.LinqBuilder; using Waste.Application.SubscribeInfo; using Waste.Domain; +using Waste.Domain.DataModel; +using System.Net.Http; +using Newtonsoft.Json.Linq; namespace Waste.Application.ThirdApiInfo { @@ -161,16 +166,38 @@ namespace Waste.Application.ThirdApiInfo // trash@1@62942200205496@4.964 trash@垃圾种类@垃圾桶编号@垃圾重量 + //20250327 添加名称和操作员 trash@5@干垃圾@30654605660104@技术员@0.22 (@干垃圾) 是名称 (@技术员) 是操作员 if (!string.IsNullOrEmpty(data.data) && data.data.StartsWith("trash@")) { var arr = data.data.Split('@'); - var type = arr.GetListValue(1); - returndata.trash = arr.GetListValue(2); - var weight = arr.GetListValue(3); - var result = await UpdateDevInfo(data, returndata, device, type, weight); - if (result != null) return result; + if (arr.Length == 4) + { + var type = arr.GetListValue(1); + returndata.trash = arr.GetListValue(2); + var weight = arr.GetListValue(3); + var result = await UpdateDevInfo(data, returndata, device, type, weight); + if (result != null) return result; + } + else if (arr.Length == 6) + { + var type = arr.GetListValue(1); + var typename = arr.GetListValue(2); + + returndata.trash = arr.GetListValue(3); + + var name = arr.GetListValue(4); + + var weight = arr.GetListValue(5); + + var result = await UpdateDevInfo(data, returndata, device, type, weight, typename, name); + if (result != null) return result; + } + else + { + return new ResultInfo(ResultState.FAIL, $"协议格式不正确:{data.ToJson()}"); + } } //解析协议,IC卡数据@垃圾桶编号@厨余垃圾@7.91 // 00000000003031 40 0F00010009 40 C6E4CBFBC0ACBBF8 40 31352E39 @@ -438,22 +465,37 @@ namespace Waste.Application.ThirdApiInfo return chs.GetString(bytes); } + //private int TrashType(string type) + //{ + // if (type == "厨余垃圾") return 1; + // else if (type == "可回收物") return 2; + // else if (type == "有害垃圾") return 3; + // else if (type == "其他垃圾") return 4; + // else return 0; + //} + //private string TrashTypeTitle(string type) + //{ + // if (!int.TryParse(type, out var num)) return type; + // if (num == 1) return "厨余垃圾"; + // else if (num == 2) return "可回收物"; + // else if (num == 3) return "有害垃圾"; + // else if (num == 4) return "其他垃圾"; + // else return "0"; + //} + private int TrashType(string type) { - if (type == "厨余垃圾") return 1; - else if (type == "可回收物") return 2; - else if (type == "有害垃圾") return 3; - else if (type == "其他垃圾") return 4; - else return 0; + var result = dbClient.Queryable().First(s => s.Name == type); + if (result == null) return 0; + return int.Parse(result.Code); } + private string TrashTypeTitle(string type) { if (!int.TryParse(type, out var num)) return type; - if (num == 1) return "厨余垃圾"; - else if (num == 2) return "可回收物"; - else if (num == 3) return "有害垃圾"; - else if (num == 4) return "其他垃圾"; - else return "0"; + var result = dbClient.Queryable().First(s => s.Code == type || s.Code == "0000" + type); + if (result == null) return "0"; + return result.Name; } private int GetTimestamp(DateTime time) @@ -552,10 +594,11 @@ namespace Waste.Application.ThirdApiInfo return ((int)bt).ToString("X2"); } - private async Task UpdateDevInfo(GetDevInfoRequestDto data, GetDevInfoResponseDto returndata, W_Device device, - string type, string weight) + private async Task UpdateDevInfo(GetDevInfoRequestDto data, GetDevInfoResponseDto returndata, W_Device device, string type, string weight, string typename = "", string name = "") { - returndata.type = TrashType(type); + //returndata.type = TrashType(type); + returndata.type = int.Parse(type); + returndata.Weight = weight.ToDouble(); //计算净重,毛重-皮重=净重,如果净重小于等于0则不上报保存 returndata.Weight = (returndata.Weight - device.Tare.ToDouble()).ToDouble(2); @@ -594,10 +637,25 @@ namespace Waste.Application.ThirdApiInfo ResultId = returndata.ResultId, Tare = device.Tare, trash = returndata.trash, - wastetype = TrashTypeTitle(type), + wastetype = typename.IsNullOrEmpty() == false ? typename : TrashTypeTitle(type), weight = weight }); + + if (name.IsNullOrEmpty() == false && typename.IsNullOrEmpty() == false) + { + await dbClient.Insertable(new W_MeasureResult + { + ResultId = returndata.ResultId, + WasteSType = "", + Price = 0.00m, + Amount = 0.00m, + OpUser = name, + UUID = "", + CreatedTime = DateTime.Now, + }).ExecuteCommandAsync(); + } + //推送数据给第三方 await _resultService.SendMessageToThird(new SendThirdMessageSubscribeS2SDto { @@ -605,7 +663,7 @@ namespace Waste.Application.ThirdApiInfo WasteSType = "", Time = DateTime.Now, TrashCode = returndata.trash, - WasteType = TrashTypeTitle(type), + WasteType = typename.IsNullOrEmpty() == false ? typename : TrashTypeTitle(type), Weight = weight.ToDecimal(), faccode = device.FacEcode, ecode = device.Ecode, @@ -616,5 +674,132 @@ namespace Waste.Application.ThirdApiInfo }); return null; } + + /// + /// 新增电子秤 + /// + /// + /// + public async Task AddProductAsync(ProductInfoDto data) + { + try + { + if (await dbClient.Queryable().AnyAsync(x => x.Uuid == data.uuid)) + { + return new ResultInfo(ResultState.FAIL, "数据已存在"); + } + var imageUrl = ""; + if (data.image.IsNullOrEmpty() == false) + { + //将图片上传服务器 + // 移除Base64字符串中的前缀(如 "data:image/png;base64,") + string base64Data = data.image; + // 将Base64字符串解码为字节数组 + var arr = Convert.FromBase64String(base64Data); + //把上传完的路径存到数据库 + using (var client = new HttpClient()) + { + // 创建MultipartFormDataContent对象 + var content = new MultipartFormDataContent(); + + // 添加文件内容到MultipartFormDataContent + content.Add(new ByteArrayContent(arr), "file", "image.png"); + + // 发送POST请求 + HttpResponseMessage response = await client.PostAsync("https://izzt.jt-sky.com/api/common/uploadimg", content); + + // 检查响应 + if (response.IsSuccessStatusCode) + { + // 假设服务器返回的是JSON格式,包含图片URL + var responseContent = await response.Content.ReadAsStringAsync(); + + if (responseContent.Contains("success")) + { + // 解析JSON + JObject jsonResponseObject = JObject.Parse(responseContent); + // 提取URL + imageUrl = jsonResponseObject["data"]["url"].ToString(); + } + } + } + } + W_Product insertdata = new W_Product + { + Id = Guid.NewGuid().ToString(), + UserName = data.userName, + Weight = data.weight.ToString(), + Image = imageUrl, + UpperLimit = data.upperLimit.ToString(), + Unit = data.unit, + TimeStamp = data.timeStamp.ToString(), + TareWeight = data.tareWeight.ToString(), + RecordNo = data.recordNo.ToString(), + ProductNo = data.productNo, + ProductName = data.productName, + ProductId = data.productId.ToString(), + NetWeight = data.netWeight.ToString(), + LowerLimit = data.lowerLimit.ToString(), + IdNames = data.idNames, + IdValues = data.idValues, + Date = data.date, + DateTime = data.dateTime, + Amount = data.amount.ToString(), + Uuid = data.uuid, + UserId = data.userId.ToString(), + CreateTime = DateTime.Now, + Video = data.Video + }; + await dbClient.Insertable(insertdata).ExecuteCommandAsync(); + return new ResultInfo(ResultState.SUCCESS, "success"); + } + catch (Exception ex) + { + return new ResultInfo(ResultState.FAIL, ex.Message); + } + } + + public async Task> GetProductAsync(QueryParams param) + { + try + { + RefAsync totalnum = 0; + var temquery = dbClient.Queryable(); + if (param.queryParam != null && param.queryParam.Count > 0) + { + List conModels = new List(); + param.queryParam.ForEach(x => + { + if (!string.IsNullOrEmpty(x.Value)) + { + conModels.Add(new ConditionalModel() + { + FieldName = x.Name, + ConditionalType = (ConditionalType)x.Type, + FieldValue = x.Value.Trim() + }); + } + }); + if (conModels.Count > 0) + { + temquery = temquery.Where(conModels); + } + } + string sorts = string.Format("{0} {1}", param.sort, param.order); + var query = await temquery.OrderBy(sorts) + .ToPageListAsync(param.offset, param.limit, totalnum); + return new PageParms + { + page = param.offset, + Items = query, + totalnum = totalnum, + limit = param.limit + }; + } + catch (Exception ex) + { + return new PageParms(); + } + } } } \ No newline at end of file diff --git a/Waste.Application/Waste.Application.xml b/Waste.Application/Waste.Application.xml index c32341e..b30e2a0 100644 --- a/Waste.Application/Waste.Application.xml +++ b/Waste.Application/Waste.Application.xml @@ -2976,6 +2976,131 @@ + + + + + + + + + + + + + + + + + + 规格,参数名称, + + + + + 545677,参数值, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 技术员 + + + + + + + + + + + + + + + + + 心跳包上报数据 @@ -3383,6 +3508,13 @@ + + + 新增电子秤 + + + + 开放数据 @@ -3451,6 +3583,13 @@ + + + 新增电子秤 + + + + 设备对接接口 @@ -3533,6 +3672,13 @@ + + + 新增电子秤 + + + + 垃圾分类列表 diff --git a/Waste.Domain/DataModel/W_Product.cs b/Waste.Domain/DataModel/W_Product.cs new file mode 100644 index 0000000..bde0a30 --- /dev/null +++ b/Waste.Domain/DataModel/W_Product.cs @@ -0,0 +1,170 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Waste.Domain.DataModel +{ + [SugarTable("W_Product")] + public partial class W_Product + { + public W_Product() + { + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true)] + public string Id { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string UserName { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Weight { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Image { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string UpperLimit { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Unit { get; set; } + + /// + /// Desc: + /// Default:NULL + /// Nullable:True + /// + public string TimeStamp { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string TareWeight { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string RecordNo { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ProductNo { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ProductName { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ProductId { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string NetWeight { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string LowerLimit { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string IdNames { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string IdValues { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Date { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string DateTime { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Amount { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string Uuid { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string UserId { get; set; } + + public System.DateTime CreateTime { get; set; } + + public string Video { get; set; } + } +} diff --git a/Waste.OpenApi.Host/Controllers/ResultController.cs b/Waste.OpenApi.Host/Controllers/ResultController.cs new file mode 100644 index 0000000..90920bc --- /dev/null +++ b/Waste.OpenApi.Host/Controllers/ResultController.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Waste.OpenApi.Host.Controllers +{ + [ApiController] + [Route("open-api/[controller]")] + public class ResultController : ControllerBase + { + } +} diff --git a/Waste.OpenApi.Host/Program.cs b/Waste.OpenApi.Host/Program.cs new file mode 100644 index 0000000..1038c16 --- /dev/null +++ b/Waste.OpenApi.Host/Program.cs @@ -0,0 +1,94 @@ +using Furion; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Serilog; +using Serilog.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Waste.OpenApi.Host +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.Inject() + .UseStartup() + .UseSerilogDefault(config => + { + var filepath = App.Configuration["logfile"]; + string date = DateTime.Now.ToString("yyyy-MM-dd");//ʱ䴴ļ + string outputTemplate = "{NewLine}{Level:u3}{Timestamp:yyyy-MM-dd HH:mm:ss.fff}" + + "{NewLine}#Msg#{Message:lj}" + + "{NewLine}#Pro #{Properties:j}" + + "{NewLine}#Exc#{Exception}" + + new string('-', 50);//ģ + ///1.restrictedToMinimumLevelLogEventLevel + config + .Enrich.WithProperty("Application", typeof(Program).Assembly.GetName().Name) + .Enrich.WithProcessId() + .Enrich.WithProcessName() + .Enrich.WithMachineName() + .Enrich.WithEnvironmentUserName() + .WriteTo.Seq("http://localhost:5341/") + //.MinimumLevel.Debug() // SinkС¼ + //.MinimumLevel.Override("Microsoft", LogEventLevel.Fatal) + //.Enrich.FromLogContext() + .WriteTo.Console(outputTemplate: outputTemplate) + + //2.1 LogEventLevel.Debug + .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Debug)//ɸѡ + .WriteTo.File($"{filepath}/{date}/{LogEventLevel.Debug}.log", + outputTemplate: outputTemplate, + rollingInterval: RollingInterval.Day,//־ձ棬ļƺԶں׺ + encoding: Encoding.UTF8 // ļַ + ) + ) + + //2.2 LogEventLevel.Error + .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)//ɸѡ + .WriteTo.File($"{filepath}/{date}/{LogEventLevel.Error}.log", + outputTemplate: outputTemplate, + rollingInterval: RollingInterval.Day,//־ձ棬ļƺԶں׺ + encoding: Encoding.UTF8 // ļַ + ) + ) + .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information)//ɸѡ + .WriteTo.File($"{filepath}/{date}/{LogEventLevel.Information}.log", + outputTemplate: outputTemplate, + rollingInterval: RollingInterval.Day,//־ձ棬ļƺԶں׺ + encoding: Encoding.UTF8 // ļַ + ) + ) + .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Fatal)//ɸѡ + .WriteTo.File($"{filepath}/{date}/{LogEventLevel.Fatal}.log", + outputTemplate: outputTemplate, + rollingInterval: RollingInterval.Day,//־ձ棬ļƺԶں׺ + encoding: Encoding.UTF8 // ļַ + ) + ) + .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Warning)//ɸѡ + .WriteTo.File($"{filepath}/{date}/{LogEventLevel.Warning}.log", + outputTemplate: outputTemplate, + rollingInterval: RollingInterval.Day,//־ձ棬ļƺԶں׺ + encoding: Encoding.UTF8 // ļַ + ) + ) + ; + }) + ; + }); + } +} diff --git a/Waste.OpenApi.Host/Properties/launchSettings.json b/Waste.OpenApi.Host/Properties/launchSettings.json new file mode 100644 index 0000000..b8bce3e --- /dev/null +++ b/Waste.OpenApi.Host/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:54579", + "sslPort": 0 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5070", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Waste.OpenApi.Host/Startup.cs b/Waste.OpenApi.Host/Startup.cs new file mode 100644 index 0000000..10bff10 --- /dev/null +++ b/Waste.OpenApi.Host/Startup.cs @@ -0,0 +1,84 @@ +using Furion; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc; +using Nirvana.Common; +using Serilog; +using System.Text; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Furion.DependencyInjection; +using System; +using Waste.Domain; + +namespace Waste.OpenApi.Host +{ + public class Startup// : AppStartup + { + public void ConfigureServices(IServiceCollection services) + { + var configuration = App.Configuration; + + + + + services.AddControllers(options => + { + options.EnableEndpointRouting = true; + }).AddInject(); + + + #region 注入获取IP + services.AddSingleton(); + MyHttpContext.serviceCollection = services; + #endregion + + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + //启用 GB2312(按需) + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + + // 或者更多配置 + // app.UseUnifyResultStatusCodes(options => { options.Return200StatusCodes = new [] { 401, 403 }; }); + //允许body重用 + app.Use(next => context => + { + context.Request.EnableBuffering(); + return next(context); + }); + + app.UseStaticFiles(); + // 必须在 UseStaticFiles 和 UseRouting 之间,记录请求日志 + app.UseRouting(); + + + // app.UseAuthentication(); + app.UseAuthorization(); + + app.UseInject(); + + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + }); + } + } + + public class CurrentUser : ICurrentUser, ITransient + { + public Guid? Id => null; + } +} diff --git a/Waste.OpenApi.Host/Waste.OpenApi.Host.csproj b/Waste.OpenApi.Host/Waste.OpenApi.Host.csproj new file mode 100644 index 0000000..2ac9ce2 --- /dev/null +++ b/Waste.OpenApi.Host/Waste.OpenApi.Host.csproj @@ -0,0 +1,18 @@ + + + + net5.0 + + + + + + + + + + + + + + diff --git a/Waste.OpenApi.Host/appsettings.Development.json b/Waste.OpenApi.Host/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Waste.OpenApi.Host/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Waste.OpenApi.Host/appsettings.json b/Waste.OpenApi.Host/appsettings.json new file mode 100644 index 0000000..ca6e310 --- /dev/null +++ b/Waste.OpenApi.Host/appsettings.json @@ -0,0 +1,22 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "System": "Warning", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Warning", + "Microsoft.EntityFrameworkCore": "Warning" + } + } + }, + "logfile": "d:/errlog/waste.ybhdmob.com", //日志文件路径 + "NirvanaConnection": "Server=localhost,4331;Database=waste;uid=jutian_user;pwd=jutian1qaz@WSX;" +} diff --git a/Waste.SocketService.cs/Properties/PublishProfiles/FolderProfile.pubxml.user b/Waste.SocketService.cs/Properties/PublishProfiles/FolderProfile.pubxml.user index 2dba497..33e49e9 100644 --- a/Waste.SocketService.cs/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/Waste.SocketService.cs/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,6 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2022-06-24T03:02:53.2509336Z;True|2022-06-21T16:12:12.0351728+08:00;True|2022-06-21T16:02:10.4631892+08:00;True|2022-06-21T15:53:41.4845069+08:00;True|2022-06-21T14:07:12.5956345+08:00;True|2022-06-18T11:30:52.8509064+08:00;True|2022-06-18T11:12:53.8211499+08:00;True|2022-06-18T11:11:56.6483268+08:00;True|2022-06-18T10:40:35.8822373+08:00;True|2022-05-17T17:19:03.8993888+08:00;True|2021-11-23T17:56:50.1140092+08:00;True|2021-11-23T17:47:15.3723334+08:00;True|2021-11-23T17:46:56.0953346+08:00;True|2021-11-23T15:39:30.7279293+08:00;True|2021-11-23T15:26:11.9749528+08:00;True|2021-11-23T15:19:15.3506970+08:00;True|2021-11-23T14:58:10.0460847+08:00; + True|2024-12-26T01:10:06.2433590Z||;True|2024-12-25T18:25:15.3622768+08:00||;True|2024-12-25T18:21:11.3533614+08:00||;False|2024-12-25T18:21:00.0512342+08:00||;True|2024-12-25T18:02:00.9343947+08:00||;True|2024-12-25T18:01:38.8672132+08:00||;True|2024-12-25T17:53:52.8116954+08:00||;True|2024-12-25T17:26:12.9040139+08:00||;True|2024-12-25T16:29:14.2739005+08:00||;True|2024-12-24T17:39:06.2503701+08:00||;True|2024-12-20T16:45:57.1905101+08:00||;True|2024-12-20T16:42:08.5174447+08:00||;True|2024-12-20T14:34:40.0312353+08:00||;True|2024-12-20T14:34:29.9878081+08:00||;True|2024-12-20T14:30:12.8940480+08:00||;False|2024-12-20T14:29:53.4324255+08:00||;True|2024-12-20T14:01:11.5986756+08:00||;True|2024-12-20T14:01:08.2479019+08:00||;True|2024-12-20T13:54:01.8966259+08:00||;True|2024-12-20T13:51:45.5298413+08:00||;True|2024-12-20T13:51:05.5206640+08:00||;True|2024-12-20T13:50:15.0489021+08:00||;True|2024-12-20T11:57:56.6476092+08:00||;True|2024-12-20T11:45:26.1507642+08:00||;True|2024-12-20T11:24:57.9651646+08:00||;True|2024-12-18T09:55:33.7744752+08:00||;True|2022-06-24T11:02:53.2509336+08:00||;True|2022-06-21T16:12:12.0351728+08:00||;True|2022-06-21T16:02:10.4631892+08:00||;True|2022-06-21T15:53:41.4845069+08:00||;True|2022-06-21T14:07:12.5956345+08:00||;True|2022-06-18T11:30:52.8509064+08:00||;True|2022-06-18T11:12:53.8211499+08:00||;True|2022-06-18T11:11:56.6483268+08:00||;True|2022-06-18T10:40:35.8822373+08:00||;True|2022-05-17T17:19:03.8993888+08:00||;True|2021-11-23T17:56:50.1140092+08:00||;True|2021-11-23T17:47:15.3723334+08:00||;True|2021-11-23T17:46:56.0953346+08:00||;True|2021-11-23T15:39:30.7279293+08:00||;True|2021-11-23T15:26:11.9749528+08:00||;True|2021-11-23T15:19:15.3506970+08:00||;True|2021-11-23T14:58:10.0460847+08:00||; + \ No newline at end of file diff --git a/Waste.SocketService.cs/Waste.SocketService.csproj.user b/Waste.SocketService.cs/Waste.SocketService.csproj.user index 327f0c9..5930dd2 100644 --- a/Waste.SocketService.cs/Waste.SocketService.csproj.user +++ b/Waste.SocketService.cs/Waste.SocketService.csproj.user @@ -1,6 +1,6 @@  - <_LastSelectedProfileId>H:\liuzl_ybhdmob\Waste\Waste.SocketService.cs\Properties\PublishProfiles\FolderProfile.pubxml + <_LastSelectedProfileId>E:\liuzl_ybhdmob\巨天垃圾分类\Waste\Waste.SocketService.cs\Properties\PublishProfiles\FolderProfile.pubxml \ No newline at end of file diff --git a/Waste.Web.Core/Startup.cs b/Waste.Web.Core/Startup.cs index 78fcac5..a1f2541 100644 --- a/Waste.Web.Core/Startup.cs +++ b/Waste.Web.Core/Startup.cs @@ -90,10 +90,10 @@ namespace Waste.Web.Core //启用 GB2312(按需) Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); app.UseSession(); - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } + //if (env.IsDevelopment()) + //{ + // app.UseDeveloperExceptionPage(); + //} // 添加规范化结果状态码,需要在这里注册 app.UseUnifyResultStatusCodes(); diff --git a/Waste.Web.Entry/DataProtection/key-8bb4cac3-1d12-401d-83b9-3fd48e11a10f.xml b/Waste.Web.Entry/DataProtection/key-8bb4cac3-1d12-401d-83b9-3fd48e11a10f.xml new file mode 100644 index 0000000..817e81f --- /dev/null +++ b/Waste.Web.Entry/DataProtection/key-8bb4cac3-1d12-401d-83b9-3fd48e11a10f.xml @@ -0,0 +1,16 @@ + + + 2025-03-20T05:35:34.3500923Z + 2025-03-20T05:35:34.2930103Z + 2025-06-18T05:35:34.2930103Z + + + + + + + TvqtBOO7y3sR/Iok1jz9b14w6ZihrCPOvEUrHyqFKQ6QXDja6MpYBfScz80fpGToEkvdnxDUOtxH1g8pxWTrGw== + + + + \ No newline at end of file diff --git a/Waste.Web.Entry/DataProtection/key-990d58c2-bb18-4ec6-901c-0391a76bfa2f.xml b/Waste.Web.Entry/DataProtection/key-990d58c2-bb18-4ec6-901c-0391a76bfa2f.xml new file mode 100644 index 0000000..ac6d3ff --- /dev/null +++ b/Waste.Web.Entry/DataProtection/key-990d58c2-bb18-4ec6-901c-0391a76bfa2f.xml @@ -0,0 +1,16 @@ + + + 2024-12-13T07:11:41.6846536Z + 2024-12-13T07:11:41.630637Z + 2025-03-13T07:11:41.630637Z + + + + + + + tAYzBIDvWqs5fqO3vv3lFKJKUGxc/smu8Rp7Vs4BRG+fKqHEVyBqnj9Q5nkj+qczAJOgmsn1MuET3TcG5zluOQ== + + + + \ No newline at end of file diff --git a/Waste.Web.Entry/Pages/Device/Product.cshtml b/Waste.Web.Entry/Pages/Device/Product.cshtml new file mode 100644 index 0000000..e757534 --- /dev/null +++ b/Waste.Web.Entry/Pages/Device/Product.cshtml @@ -0,0 +1,87 @@ +@page +@model Waste.Web.Entry.Pages.Device.ProductModel +@{ + ViewData["Title"] = "标准秤列表"; +} +
+
+
+
+
+ +
+
+
+ + @* *@ +
+
+
+
+ +
+
+
+@section Scripts { + +} \ No newline at end of file diff --git a/Waste.Web.Entry/Pages/Device/Product.cshtml.cs b/Waste.Web.Entry/Pages/Device/Product.cshtml.cs new file mode 100644 index 0000000..ed6ab5c --- /dev/null +++ b/Waste.Web.Entry/Pages/Device/Product.cshtml.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Collections.Generic; +using System.Threading.Tasks; +using System; +using Waste.Application; +using Waste.Application.ThirdApiInfo; +using Waste.Domain; +using Waste.Domain.DataModel; +using Nirvana.Common; + +namespace Waste.Web.Entry.Pages.Device +{ + public class ProductModel : BaseModel + { + public void OnGet() + { + } + } +} diff --git a/Waste.Web.Entry/Properties/PublishProfiles/waste.ybhdmob.com.pubxml.user b/Waste.Web.Entry/Properties/PublishProfiles/waste.ybhdmob.com.pubxml.user index 426736d..68e92e6 100644 --- a/Waste.Web.Entry/Properties/PublishProfiles/waste.ybhdmob.com.pubxml.user +++ b/Waste.Web.Entry/Properties/PublishProfiles/waste.ybhdmob.com.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>D:\webpublish\waste.ybhdmob.com - True|2024-02-22T01:28:06.5641782Z;True|2024-02-22T09:23:28.6539914+08:00;True|2024-02-21T13:50:30.0887271+08:00;True|2023-01-09T14:37:17.3219940+08:00;False|2023-01-09T14:36:37.2025779+08:00;True|2022-09-14T10:54:14.3430113+08:00;True|2022-08-24T10:11:56.9315738+08:00;True|2022-07-28T16:27:26.4646475+08:00;True|2022-07-26T18:02:16.8734313+08:00;True|2022-07-26T17:47:48.4802128+08:00;True|2022-07-26T10:16:29.8933802+08:00;True|2022-07-26T09:36:14.5292489+08:00;True|2022-07-12T17:26:37.8289741+08:00;True|2022-07-07T15:15:35.7942932+08:00;True|2022-07-07T14:38:14.6580938+08:00;True|2022-07-07T14:32:33.3480279+08:00;True|2022-07-06T08:59:01.5108509+08:00;True|2022-06-21T14:41:45.3390865+08:00;False|2022-06-21T14:31:42.6318272+08:00;True|2022-06-21T14:07:42.4016410+08:00;True|2022-06-20T15:37:14.0002383+08:00;True|2022-06-20T08:32:15.3735483+08:00;True|2022-06-18T10:39:25.0997617+08:00;True|2022-06-15T11:23:32.6444305+08:00;True|2022-06-07T10:26:48.8057155+08:00;True|2022-05-19T14:38:58.4564787+08:00;True|2022-05-19T10:00:43.2712891+08:00;True|2022-05-17T18:00:53.2618269+08:00;True|2022-05-17T17:55:33.2053115+08:00;True|2022-05-17T17:38:48.8279756+08:00;True|2022-05-16T16:44:49.1758100+08:00;True|2022-03-30T10:54:32.5565057+08:00;True|2022-03-30T10:53:48.9972377+08:00;True|2022-03-30T10:50:31.5745775+08:00;True|2022-03-30T10:47:50.1605527+08:00;True|2022-03-30T10:15:59.9812921+08:00;True|2022-03-29T09:29:45.1039655+08:00;True|2022-03-29T09:21:47.0149226+08:00;True|2022-03-28T10:33:44.7419612+08:00;True|2022-03-28T10:22:40.9448563+08:00;True|2022-03-28T10:19:15.1438519+08:00;True|2022-01-20T10:39:53.2000547+08:00;True|2021-11-23T17:45:59.0399234+08:00;True|2021-11-23T14:52:52.6108389+08:00;True|2021-11-23T13:47:55.8909321+08:00;True|2021-11-23T13:46:38.7796888+08:00;True|2021-11-23T13:42:14.9551976+08:00;True|2021-11-23T13:40:54.9093258+08:00;True|2021-11-23T13:31:49.0003794+08:00;True|2021-11-23T13:29:43.7414639+08:00;True|2021-10-12T15:18:06.6012215+08:00;True|2021-10-12T15:11:17.7752651+08:00;True|2021-10-12T14:54:39.0578509+08:00;True|2021-10-12T11:25:18.7098128+08:00;True|2021-09-18T15:34:20.7386778+08:00;True|2021-09-15T11:09:28.0068993+08:00;True|2021-09-07T12:19:33.4635211+08:00;True|2021-09-07T11:36:13.4563799+08:00;True|2021-09-03T15:41:46.2819586+08:00;True|2021-08-31T17:16:16.0336390+08:00;True|2021-08-31T16:05:30.7224440+08:00;True|2021-08-23T09:44:46.2114418+08:00;True|2021-08-19T20:32:56.2854974+08:00;True|2021-08-18T14:01:33.0411246+08:00;True|2021-08-17T10:05:15.4299188+08:00;True|2021-08-13T19:32:53.6307075+08:00;True|2021-08-13T19:29:50.5876782+08:00;True|2021-08-13T19:14:14.2545106+08:00;True|2021-08-13T15:24:09.4521125+08:00;True|2021-08-13T14:59:40.4579407+08:00;True|2021-08-13T10:02:29.7650246+08:00;True|2021-08-13T09:45:10.6245894+08:00;True|2021-08-12T20:11:21.5851106+08:00;True|2021-08-12T20:00:42.4820498+08:00;True|2021-08-12T18:44:08.3079650+08:00;True|2021-08-12T18:35:47.4730766+08:00;True|2021-08-12T18:32:10.9361388+08:00;True|2021-08-12T18:30:21.4006961+08:00;True|2021-08-12T18:13:00.9624470+08:00;True|2021-08-12T18:10:12.3459311+08:00;True|2021-08-12T18:09:18.8656414+08:00;True|2021-08-12T17:35:24.7213607+08:00;True|2021-08-11T07:54:57.1322848+08:00;True|2021-08-10T10:16:40.7495389+08:00;True|2021-08-03T11:16:02.7897282+08:00;True|2021-08-02T16:39:27.2332369+08:00;True|2021-08-02T15:07:40.7995318+08:00;True|2021-08-02T14:32:29.6885424+08:00;True|2021-08-02T14:31:18.6578543+08:00;True|2021-08-02T14:27:57.1301002+08:00;True|2021-08-02T10:55:40.3542370+08:00;True|2021-08-02T09:44:28.0994056+08:00;True|2021-08-01T13:49:38.4071985+08:00;True|2021-08-01T13:36:45.5372120+08:00;True|2021-08-01T11:00:19.6165520+08:00;True|2021-08-01T10:38:51.4029710+08:00;True|2021-07-31T20:27:53.6583811+08:00;True|2021-07-31T18:35:23.4214441+08:00;True|2021-07-31T17:34:14.0712243+08:00;True|2021-07-31T14:50:43.2065556+08:00; + True|2025-03-27T03:41:02.3228124Z||;True|2025-03-21T16:54:06.1039552+08:00||;True|2025-03-21T13:31:54.3916167+08:00||;True|2025-03-21T11:58:37.1884032+08:00||;True|2025-03-21T11:35:39.8283713+08:00||;True|2025-03-20T15:55:31.1151589+08:00||;True|2025-02-11T14:49:30.5446930+08:00||;True|2025-02-11T14:35:29.4332908+08:00||;True|2025-02-11T13:59:02.5624245+08:00||;True|2024-12-26T15:55:05.3910632+08:00||;True|2024-12-26T09:11:18.0562918+08:00||;True|2024-12-20T17:09:33.5985280+08:00||;True|2024-12-20T16:58:49.8519733+08:00||;True|2024-12-20T16:47:57.5264148+08:00||;True|2024-12-20T15:15:52.6034211+08:00||;True|2024-12-20T15:04:37.1611174+08:00||;True|2024-12-20T15:03:11.1199173+08:00||;True|2024-12-20T14:56:32.0361934+08:00||;True|2024-12-20T14:52:27.0845075+08:00||;True|2024-12-18T09:25:19.6828490+08:00||;True|2024-12-16T15:45:38.9731146+08:00||;True|2024-02-22T09:28:06.5641782+08:00||;True|2024-02-22T09:23:28.6539914+08:00||;True|2024-02-21T13:50:30.0887271+08:00||;True|2023-01-09T14:37:17.3219940+08:00||;False|2023-01-09T14:36:37.2025779+08:00||;True|2022-09-14T10:54:14.3430113+08:00||;True|2022-08-24T10:11:56.9315738+08:00||;True|2022-07-28T16:27:26.4646475+08:00||;True|2022-07-26T18:02:16.8734313+08:00||;True|2022-07-26T17:47:48.4802128+08:00||;True|2022-07-26T10:16:29.8933802+08:00||;True|2022-07-26T09:36:14.5292489+08:00||;True|2022-07-12T17:26:37.8289741+08:00||;True|2022-07-07T15:15:35.7942932+08:00||;True|2022-07-07T14:38:14.6580938+08:00||;True|2022-07-07T14:32:33.3480279+08:00||;True|2022-07-06T08:59:01.5108509+08:00||;True|2022-06-21T14:41:45.3390865+08:00||;False|2022-06-21T14:31:42.6318272+08:00||;True|2022-06-21T14:07:42.4016410+08:00||;True|2022-06-20T15:37:14.0002383+08:00||;True|2022-06-20T08:32:15.3735483+08:00||;True|2022-06-18T10:39:25.0997617+08:00||;True|2022-06-15T11:23:32.6444305+08:00||;True|2022-06-07T10:26:48.8057155+08:00||;True|2022-05-19T14:38:58.4564787+08:00||;True|2022-05-19T10:00:43.2712891+08:00||;True|2022-05-17T18:00:53.2618269+08:00||;True|2022-05-17T17:55:33.2053115+08:00||;True|2022-05-17T17:38:48.8279756+08:00||;True|2022-05-16T16:44:49.1758100+08:00||;True|2022-03-30T10:54:32.5565057+08:00||;True|2022-03-30T10:53:48.9972377+08:00||;True|2022-03-30T10:50:31.5745775+08:00||;True|2022-03-30T10:47:50.1605527+08:00||;True|2022-03-30T10:15:59.9812921+08:00||;True|2022-03-29T09:29:45.1039655+08:00||;True|2022-03-29T09:21:47.0149226+08:00||;True|2022-03-28T10:33:44.7419612+08:00||;True|2022-03-28T10:22:40.9448563+08:00||;True|2022-03-28T10:19:15.1438519+08:00||;True|2022-01-20T10:39:53.2000547+08:00||;True|2021-11-23T17:45:59.0399234+08:00||;True|2021-11-23T14:52:52.6108389+08:00||;True|2021-11-23T13:47:55.8909321+08:00||;True|2021-11-23T13:46:38.7796888+08:00||;True|2021-11-23T13:42:14.9551976+08:00||;True|2021-11-23T13:40:54.9093258+08:00||;True|2021-11-23T13:31:49.0003794+08:00||;True|2021-11-23T13:29:43.7414639+08:00||;True|2021-10-12T15:18:06.6012215+08:00||;True|2021-10-12T15:11:17.7752651+08:00||;True|2021-10-12T14:54:39.0578509+08:00||;True|2021-10-12T11:25:18.7098128+08:00||;True|2021-09-18T15:34:20.7386778+08:00||;True|2021-09-15T11:09:28.0068993+08:00||;True|2021-09-07T12:19:33.4635211+08:00||;True|2021-09-07T11:36:13.4563799+08:00||;True|2021-09-03T15:41:46.2819586+08:00||;True|2021-08-31T17:16:16.0336390+08:00||;True|2021-08-31T16:05:30.7224440+08:00||;True|2021-08-23T09:44:46.2114418+08:00||;True|2021-08-19T20:32:56.2854974+08:00||;True|2021-08-18T14:01:33.0411246+08:00||;True|2021-08-17T10:05:15.4299188+08:00||;True|2021-08-13T19:32:53.6307075+08:00||;True|2021-08-13T19:29:50.5876782+08:00||;True|2021-08-13T19:14:14.2545106+08:00||;True|2021-08-13T15:24:09.4521125+08:00||;True|2021-08-13T14:59:40.4579407+08:00||;True|2021-08-13T10:02:29.7650246+08:00||;True|2021-08-13T09:45:10.6245894+08:00||;True|2021-08-12T20:11:21.5851106+08:00||;True|2021-08-12T20:00:42.4820498+08:00||;True|2021-08-12T18:44:08.3079650+08:00||;True|2021-08-12T18:35:47.4730766+08:00||;True|2021-08-12T18:32:10.9361388+08:00||;True|2021-08-12T18:30:21.4006961+08:00||;True|2021-08-12T18:13:00.9624470+08:00||; \ No newline at end of file diff --git a/Waste.Web.Entry/Waste.Web.Entry.csproj b/Waste.Web.Entry/Waste.Web.Entry.csproj index c09d8ce..7a3f32e 100644 --- a/Waste.Web.Entry/Waste.Web.Entry.csproj +++ b/Waste.Web.Entry/Waste.Web.Entry.csproj @@ -11,6 +11,13 @@ false + + + + + + + diff --git a/Waste.Web.Entry/Waste.Web.Entry.csproj.user b/Waste.Web.Entry/Waste.Web.Entry.csproj.user index 59133b9..5096483 100644 --- a/Waste.Web.Entry/Waste.Web.Entry.csproj.user +++ b/Waste.Web.Entry/Waste.Web.Entry.csproj.user @@ -4,5 +4,9 @@ RazorPageScaffolder root/Common/RazorPage E:\liuzl_ybhdmob\巨天垃圾分类\Waste\Waste.Web.Entry\Properties\PublishProfiles\waste.ybhdmob.com.pubxml + Waste.Web.Entry + + + ProjectDebugger \ No newline at end of file diff --git a/Waste.sln b/Waste.sln index b9f5d20..46f9ba8 100644 --- a/Waste.sln +++ b/Waste.sln @@ -37,6 +37,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WasteHexTest", "WasteHexTes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Waste.SocketService", "Waste.SocketService.cs\Waste.SocketService.csproj", "{52B214DE-0AE6-4554-ABA6-1222175A6DEE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Waste.OpenApi.Host", "Waste.OpenApi.Host\Waste.OpenApi.Host.csproj", "{F5F25517-BC6C-4DF6-8C4E-13074F995589}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -95,6 +97,10 @@ Global {52B214DE-0AE6-4554-ABA6-1222175A6DEE}.Debug|Any CPU.Build.0 = Debug|Any CPU {52B214DE-0AE6-4554-ABA6-1222175A6DEE}.Release|Any CPU.ActiveCfg = Release|Any CPU {52B214DE-0AE6-4554-ABA6-1222175A6DEE}.Release|Any CPU.Build.0 = Release|Any CPU + {F5F25517-BC6C-4DF6-8C4E-13074F995589}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5F25517-BC6C-4DF6-8C4E-13074F995589}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5F25517-BC6C-4DF6-8C4E-13074F995589}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5F25517-BC6C-4DF6-8C4E-13074F995589}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -113,6 +119,7 @@ Global {D722D30A-DB79-41C7-A377-0864E42E7AF1} = {114F03F7-2D58-4BBE-B91A-CBB9F3DC12A0} {13679A86-CE78-49A2-BD09-83A33642D9BF} = {0E68A675-AD88-4D8F-A0A2-B37094327D88} {52B214DE-0AE6-4554-ABA6-1222175A6DEE} = {A10953C4-FF58-42A1-AAEF-7B68018F5EDB} + {F5F25517-BC6C-4DF6-8C4E-13074F995589} = {A10953C4-FF58-42A1-AAEF-7B68018F5EDB} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {086B267B-9152-4816-8D48-30032ACB8A2C}