20250327 添加名称和操作员

This commit is contained in:
yangxing 2025-03-27 13:34:16 +08:00
parent 4c03b94808
commit f78c6c8fe3
25 changed files with 1456 additions and 63 deletions

399
.gitignore vendored
View File

@ -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

View File

@ -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; }
/// <summary>
///
/// </summary>
public string date { get; set; }
/// <summary>
///
/// </summary>
public string dateTime { get; set; }
/// <summary>
///
/// </summary>
public long id { get; set; }
/// <summary>
/// 规格,参数名称,
/// </summary>
public string idNames { get; set; }
/// <summary>
/// 545677,参数值,
/// </summary>
public string idValues { get; set; }
/// <summary>
///
/// </summary>
public bool isUpload { get; set; }
/// <summary>
///
/// </summary>
public int level { get; set; }
/// <summary>
///
/// </summary>
public decimal lowerLimit { get; set; }
/// <summary>
///
/// </summary>
public decimal netWeight { get; set; }
/// <summary>
///
/// </summary>
public long productId { get; set; }
/// <summary>
///
/// </summary>
public string productName { get; set; }
/// <summary>
///
/// </summary>
public string productNo { get; set; }
/// <summary>
///
/// </summary>
public long recordNo { get; set; }
/// <summary>
///
/// </summary>
public long startDate { get; set; }
/// <summary>
///
/// </summary>
public int status { get; set; }
/// <summary>
///
/// </summary>
public decimal tareWeight { get; set; }
/// <summary>
///
/// </summary>
public string time { get; set; }
/// <summary>
///
/// </summary>
public long timeStamp { get; set; }
/// <summary>
///
/// </summary>
public string unit { get; set; }
/// <summary>
///
/// </summary>
public decimal upperLimit { get; set; }
/// <summary>
///
/// </summary>
public long userId { get; set; }
/// <summary>
/// 技术员
/// </summary>
public string userName { get; set; }
/// <summary>
///
/// </summary>
public string uuid { get; set; }
/// <summary>
///
/// </summary>
public decimal weight { get; set; }
/// <summary>
///
/// </summary>
public string image { get; set; }
public string Video { get; set; }
}
}

View File

@ -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
/// <param name="data"></param>
/// <returns></returns>
Task<object> WifiPostAsync(WifiRequestC2SDto data);
/// <summary>
/// 新增电子秤
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
Task<ResultInfo> AddProductAsync(ProductInfoDto data);
Task<PageParms<W_Product>> GetProductAsync(QueryParams param);
}
}

View File

@ -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);
}
/// <summary>
/// 新增电子秤
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
[HttpPost]
public async Task<ResultInfo> AddProductAsync(ProductInfoDto data)
{
return await _openService.AddProductAsync(data);
}
[HttpPost]
public async Task<PageParms<W_Product>> GetProductAsync(QueryParams param)
{
return await _openService.GetProductAsync(param);
}
}
}

View File

@ -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<W_WasteType>().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<W_WasteType>().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<ResultInfo> UpdateDevInfo(GetDevInfoRequestDto data, GetDevInfoResponseDto returndata, W_Device device,
string type, string weight)
private async Task<ResultInfo> 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;
}
/// <summary>
/// 新增电子秤
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public async Task<ResultInfo> AddProductAsync(ProductInfoDto data)
{
try
{
if (await dbClient.Queryable<W_Product>().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<PageParms<W_Product>> GetProductAsync(QueryParams param)
{
try
{
RefAsync<int> totalnum = 0;
var temquery = dbClient.Queryable<W_Product>();
if (param.queryParam != null && param.queryParam.Count > 0)
{
List<IConditionalModel> conModels = new List<IConditionalModel>();
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<W_Product>
{
page = param.offset,
Items = query,
totalnum = totalnum,
limit = param.limit
};
}
catch (Exception ex)
{
return new PageParms<W_Product>();
}
}
}
}

View File

@ -2976,6 +2976,131 @@
</summary>
<returns></returns>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.date">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.dateTime">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.id">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.idNames">
<summary>
规格,参数名称,
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.idValues">
<summary>
545677,参数值,
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.isUpload">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.level">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.lowerLimit">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.netWeight">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.productId">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.productName">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.productNo">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.recordNo">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.startDate">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.status">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.tareWeight">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.time">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.timeStamp">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.unit">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.upperLimit">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.userId">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.userName">
<summary>
技术员
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.uuid">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.weight">
<summary>
</summary>
</member>
<member name="P:Waste.Application.ThirdApiInfo.ProductInfoDto.image">
<summary>
</summary>
</member>
<member name="T:Waste.Application.ThirdApiInfo.DevHeartRequestDto">
<summary>
心跳包上报数据
@ -3383,6 +3508,13 @@
<param name="data"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ThirdApiInfo.IOpenService.AddProductAsync(Waste.Application.ThirdApiInfo.ProductInfoDto)">
<summary>
新增电子秤
</summary>
<param name="data"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ThirdApiInfo.OpenAppService">
<summary>
开放数据
@ -3451,6 +3583,13 @@
<param name="data"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ThirdApiInfo.OpenAppService.AddProductAsync(Waste.Application.ThirdApiInfo.ProductInfoDto)">
<summary>
新增电子秤
</summary>
<param name="data"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ThirdApiInfo.OpenService">
<summary>
设备对接接口
@ -3533,6 +3672,13 @@
<param name="bt"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ThirdApiInfo.OpenService.AddProductAsync(Waste.Application.ThirdApiInfo.ProductInfoDto)">
<summary>
新增电子秤
</summary>
<param name="data"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.IWasteService.GetTypeListAsync(Nirvana.Common.QueryParams)">
<summary>
垃圾分类列表

View File

@ -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()
{
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Weight { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Image { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string UpperLimit { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Unit { get; set; }
/// <summary>
/// Desc:
/// Default:NULL
/// Nullable:True
/// </summary>
public string TimeStamp { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string TareWeight { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string RecordNo { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string ProductNo { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string ProductId { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string NetWeight { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string LowerLimit { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string IdNames { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string IdValues { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Date { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string DateTime { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Amount { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Uuid { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string UserId { get; set; }
public System.DateTime CreateTime { get; set; }
public string Video { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Microsoft.AspNetCore.Mvc;
namespace Waste.OpenApi.Host.Controllers
{
[ApiController]
[Route("open-api/[controller]")]
public class ResultController : ControllerBase
{
}
}

View File

@ -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<Startup>()
.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 // 文件字符编码
)
)
;
})
;
});
}
}

View File

@ -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"
}
}
}
}

View File

@ -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<IHttpContextAccessor, HttpContextAccessor>();
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;
}
}

View File

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog.Enrichers.Process" Version="2.0.2" />
<PackageReference Include="Serilog.Sinks.Seq" Version="5.0.1" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Waste.Domain\Waste.Domain.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@ -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;"
}

View File

@ -4,6 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<History>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;</History>
<History>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||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_LastSelectedProfileId>H:\liuzl_ybhdmob\Waste\Waste.SocketService.cs\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
<_LastSelectedProfileId>E:\liuzl_ybhdmob\巨天垃圾分类\Waste\Waste.SocketService.cs\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
</PropertyGroup>
</Project>

View File

@ -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();

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="8bb4cac3-1d12-401d-83b9-3fd48e11a10f" version="1">
<creationDate>2025-03-20T05:35:34.3500923Z</creationDate>
<activationDate>2025-03-20T05:35:34.2930103Z</activationDate>
<expirationDate>2025-06-18T05:35:34.2930103Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>TvqtBOO7y3sR/Iok1jz9b14w6ZihrCPOvEUrHyqFKQ6QXDja6MpYBfScz80fpGToEkvdnxDUOtxH1g8pxWTrGw==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="990d58c2-bb18-4ec6-901c-0391a76bfa2f" version="1">
<creationDate>2024-12-13T07:11:41.6846536Z</creationDate>
<activationDate>2024-12-13T07:11:41.630637Z</activationDate>
<expirationDate>2025-03-13T07:11:41.630637Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>tAYzBIDvWqs5fqO3vv3lFKJKUGxc/smu8Rp7Vs4BRG+fKqHEVyBqnj9Q5nkj+qczAJOgmsn1MuET3TcG5zluOQ==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

View File

@ -0,0 +1,87 @@
@page
@model Waste.Web.Entry.Pages.Device.ProductModel
@{
ViewData["Title"] = "标准秤列表";
}
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" class="layui-input" name="Name" id="Name" placeholder="请输入产品名称" />
</div>
</div>
<div class="layui-inline">
<button class="btn btn-primary btn-lg js-search" type="button">查询</button>
@*<button class="btn btn-primary btn-lg js-add" type="button">添加</button> *@
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-table" id="list" lay-filter="list">
</table>
</div>
</div>
@section Scripts {
<script type="text/javascript">
layui.use(['common'], function () {
var common = layui.common;
common.initTable({
url: '/api/open/getproduct', method: 'post',
cols: [[
{
field: 'image', title: '图片',templet: function(d) { // 自定义渲染逻辑
return '<img src="' + d.image + '" style="width: 50px; height: 50px;">';
}
},
{
field: 'video', title: '视频'
},
{
field: 'productname', title: '产品名称'
},
{
field: 'netweight', title: '净重'
},
{
field: 'weight', title: '毛重'
},
{
field: 'amount', title: '数量'
},
{
field: 'unit', title: '重量单位'
},
{
field: 'upperlimit', title: '上限'
},
{
field: 'username', title: '用户名称'
},
{
field: 'createtime', title: '创建时间'
},
]],
parseData: function(n) {
console.log("接口返回的原始数据:", n);
return {
data: n.items, // 数据列表在 n.Items 中
totalnum: n.totalnum, // 数据总数在 n.totalnum 中
statuscode: 200
};
},
});
$(".js-search").on("click", function () {
common.reloadtable("list", {
where: {
queryParam: [{
"Name": 'ProductName',
"Type": QueryCond.Like,
"Value": $("#Name").val()
}]
}
});
});
});
</script>
}

View File

@ -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()
{
}
}
}

View File

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_PublishTargetUrl>D:\webpublish\waste.ybhdmob.com</_PublishTargetUrl>
<History>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;</History>
<History>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||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -11,6 +11,13 @@
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Pages\Product\**" />
<Content Remove="Pages\Product\**" />
<EmbeddedResource Remove="Pages\Product\**" />
<None Remove="Pages\Product\**" />
</ItemGroup>
<ItemGroup>
<None Include="Pages\Shared\_Layout.cshtml" />
<None Include="Pages\Shared\_ValidationScriptsPartial.cshtml" />

View File

@ -4,5 +4,9 @@
<RazorPage_SelectedScaffolderID>RazorPageScaffolder</RazorPage_SelectedScaffolderID>
<RazorPage_SelectedScaffolderCategoryPath>root/Common/RazorPage</RazorPage_SelectedScaffolderCategoryPath>
<NameOfLastUsedPublishProfile>E:\liuzl_ybhdmob\巨天垃圾分类\Waste\Waste.Web.Entry\Properties\PublishProfiles\waste.ybhdmob.com.pubxml</NameOfLastUsedPublishProfile>
<ActiveDebugProfile>Waste.Web.Entry</ActiveDebugProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -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}