Compare commits

..

4 Commits

Author SHA1 Message Date
228d3d2a86 new 2025-10-31 09:56:25 +08:00
76d5c3d5c7 Merge branch 'master' of http://8.134.253.216:8081/syc_zhangzhuo/Seyounth.Auto.Hs 2025-07-01 14:46:59 +08:00
90472cc3f2 后端 2025-07-01 14:46:41 +08:00
d4018aab3f 1.后端 2025-07-01 14:39:07 +08:00
48 changed files with 1819 additions and 3278 deletions

6
.gitignore vendored
View File

@ -2,4 +2,8 @@ bin/
obj/ obj/
/packages/ /packages/
riderModule.iml riderModule.iml
/_ReSharper.Caches/ /_ReSharper.Caches/
/.vs/Seyounth.Auto.Hs/FileContentIndex/d8cedab5-57b0-4eeb-86c4-c233d0ed9e8c.vsidx
/.vs/Seyounth.Auto.Hs/FileContentIndex/0d7533c4-24eb-4861-b4ca-0bab093f3588.vsidx
/.vs/Seyounth.Auto.Hs/FileContentIndex/9996901b-cb5b-46a6-bc29-fdf8e11c942f.vsidx
/.vs/Seyounth.Auto.Hs/FileContentIndex

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,13 @@
{ {
"version": 1, "version": 1,
"isRoot": true, "isRoot": true,
"tools": {} "tools": {
"dotnet-ef": {
"version": "9.0.6",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
} }

View File

@ -10,11 +10,11 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform> <LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider> <PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net6.0\publish\</PublishUrl> <PublishUrl>D:\AD盘\新建文件夹</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod> <WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId> <_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish /> <SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <RuntimeIdentifier>win-x64</RuntimeIdentifier>
<ProjectGuid>d3b021e9-97fd-4f90-817a-24ec873e547b</ProjectGuid> <ProjectGuid>d3b021e9-97fd-4f90-817a-24ec873e547b</ProjectGuid>
<SelfContained>true</SelfContained> <SelfContained>true</SelfContained>

View File

@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<_PublishTargetUrl>D:\盛原成\骏马二期\MES\backend\code\apps\Syc.Basic.Web.WMS.HttpApi.Host\bin\Release\net6.0\publish\</_PublishTargetUrl> <_PublishTargetUrl>D:\AD盘\新建文件夹</_PublishTargetUrl>
<History>True|2024-10-17T08:48:40.2516489Z;True|2024-10-11T16:31:58.0638668+08:00;</History> <History>True|2025-10-14T01:55:20.8397035Z||;True|2025-10-14T09:47:50.6329259+08:00||;True|2025-10-14T09:21:41.0082215+08:00||;True|2025-10-14T09:12:48.2246215+08:00||;True|2025-10-13T15:49:11.3000400+08:00||;True|2025-10-13T15:39:23.3882777+08:00||;True|2025-10-13T15:37:36.1898742+08:00||;True|2025-10-13T15:24:03.8577628+08:00||;True|2025-10-13T15:22:18.1040326+08:00||;True|2025-10-13T14:52:42.5366229+08:00||;True|2025-10-13T14:30:45.1293637+08:00||;True|2025-10-13T13:44:04.9559440+08:00||;True|2025-10-13T11:23:33.0973594+08:00||;True|2025-10-13T11:19:07.8165478+08:00||;True|2025-10-13T11:03:15.1919334+08:00||;True|2025-10-13T10:59:11.0905529+08:00||;False|2025-10-13T10:58:29.5919735+08:00||;True|2025-10-12T17:23:43.5067894+08:00||;True|2025-10-12T17:12:07.1250247+08:00||;True|2025-10-12T17:10:07.6819749+08:00||;True|2025-10-12T17:03:16.4435860+08:00||;True|2025-10-12T16:48:49.6634960+08:00||;True|2025-10-12T16:47:52.7450982+08:00||;True|2025-10-12T16:41:34.1386818+08:00||;True|2025-10-12T16:21:47.1876143+08:00||;True|2025-10-12T15:37:11.6532017+08:00||;True|2025-10-12T15:28:04.8417959+08:00||;True|2025-10-11T14:47:40.1965699+08:00||;True|2025-10-07T15:48:49.6803059+08:00||;True|2025-07-09T18:15:14.6157523+08:00||;True|2025-07-09T18:03:48.5671798+08:00||;True|2025-07-09T17:22:07.0714896+08:00||;True|2025-07-09T16:51:02.1734781+08:00||;True|2025-07-09T15:36:53.8844874+08:00||;True|2025-07-04T17:48:33.6869691+08:00||;True|2025-07-04T12:18:47.2920156+08:00||;True|2025-07-04T12:17:31.7702038+08:00||;True|2024-10-17T16:48:40.2516489+08:00||;True|2024-10-11T16:31:58.0638668+08:00||;</History>
<LastFailureDetails /> <LastFailureDetails />
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -5,6 +5,6 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ActiveDebugProfile>Syc.Basic.Web.WMS.HttpApi.Host</ActiveDebugProfile> <ActiveDebugProfile>Syc.Basic.Web.WMS.HttpApi.Host</ActiveDebugProfile>
<NameOfLastUsedPublishProfile>D:\盛原成\骏马二期\MES\backend\code\apps\Syc.Basic.Web.WMS.HttpApi.Host\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> <NameOfLastUsedPublishProfile>D:\D盘\项目\榆林\YuLInHSCode\Seyounth.Auto.Hs\apps\Syc.Basic.Web.WMS.HttpApi.Host\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -25,7 +25,7 @@
"ValidateAudience": true, "ValidateAudience": true,
"Audience": "www.phqmo.blog.com", "Audience": "www.phqmo.blog.com",
"ValidateLifetime": true, "ValidateLifetime": true,
"ExpiredTime": 120, "ExpiredTime": 1440,
"ClockSkew": 2 "ClockSkew": 2
}, },
"CAP": { "CAP": {
@ -63,13 +63,15 @@
{ {
// //
"Id": 1, "Id": 1,
"IP": "127.0.0.1",//"192.168.3.202", //"IP": "192.168.3.202",
"IP": "127.0.0.1",
"Port": 2002 "Port": 2002
}, },
{ {
// //
"Id": 2, "Id": 2,
"IP": "127.0.0.1",//"192.168.3.120", //"IP": "192.168.3.120",
"IP": "127.0.0.1",
"Port": 2003 "Port": 2003
} }
], ],
@ -77,13 +79,15 @@
{ {
// //
"Id": 1, "Id": 1,
"IP": "127.0.0.1", "IP": "192.168.3.217",
//"IP": "127.0.0.1",
"Port": 9102 "Port": 9102
}, },
{ {
// //
"Id": 2, "Id": 2,
"IP": "192.168.3.217", "IP": "192.168.3.217",
//"IP": "127.0.0.1",
"Port": 9101 "Port": 9101
} }
], ],
@ -92,18 +96,22 @@
// //
"Id": 1, "Id": 1,
"IP": "192.168.3.99", "IP": "192.168.3.99",
"Port": 9110 //"IP": "127.0.0.1",
"Port": 9100
}, },
{ {
// //
"Id": 2, "Id": 2,
"IP": "192.168.3.100", "IP": "192.168.3.100",
"Port": 9111 //"IP": "127.0.0.1",
"Port": 9100
} }
], ],
"Plc": { "Plc": {
//PLC //PLC
"IP": "192.168.3.30", "IP": "192.168.3.30",
"Port":502 "Port": 502
//"IP": "127.0.0.1",
//"Port": 6000
} }
} }

View File

@ -24,15 +24,18 @@ namespace Syc.Basic.Web.WMS.Dto
//生产批号 //生产批号
public string Lot_No { get; set; } public string Lot_No { get; set; }
//长度 //长度
public double? Length { get; set; } public string? Length { get; set; }
//打包时间 //打包时间
public DateTime? Dom_Time { get; set; } public string? Dom_Time { get; set; }
//生产日期 //生产日期
public string? Exp_Time { get; set; } public string? Exp_Time { get; set; }
public int DataType { get; set; }
public string Mark { get; set; }
/// <summary> /// <summary>
/// 是否在装箱 /// 是否在装箱
/// </summary> /// </summary>
public bool IsUse { get; set; } = true; public bool IsUse { get; set; } = true;
public int IsDelete { get; set; } public int IsDelete { get; set; }
public DateTime? Create_Time { get; set; }
} }
} }

View File

@ -0,0 +1,100 @@
using BarTender;
using Microsoft.Extensions.Logging;
using Syc.Basic.Web.WMS.Dto;
using Syc.Basic.Web.WMS.Entitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Syc.Basic.Web.WMS
{
public class BarTenderHelper
{
/// <summary>
/// 打印标签
/// </summary>
/// <param name="templatePath">模板全路径D://AD盘/新建文件夹/xxxx.btw</param>
/// <param name="deviceName">打印机名称</param>
/// <param name="@params">模板变量参数</param>
/// <returns></returns>
public static void Print(string templatePath,string deviceName,Dictionary<string,string> @params = null)
{
Console.WriteLine("开始打印");
Application bartenderApp = new Application();
var btFormat = bartenderApp.Formats.Open(templatePath,false,deviceName);
if (@params is not null && @params.Any())
{
foreach (var param in @params)
btFormat.SetNamedSubStringValue(param.Key, param.Value);
}
btFormat.IdenticalCopiesOfLabel = 1;
//设置打印份数,自动贴标就只出一张
BarTender.Messages btMsgs;
//开始打印
var btPrintRtn = btFormat.Print(PrintJobName:"打印标签",WaitForSpoolJobToComplete:false,Messages:out btMsgs);
if (btPrintRtn != BarTender.BtPrintResult.btSuccess)
foreach (BarTender.Message msg in btMsgs)
{
var text = msg.Message;
}
//输出错误日志
if (btPrintRtn != BarTender.BtPrintResult.btSuccess)
{
foreach(BarTender.Message msg in btMsgs)
{
var text = msg.Message;
}
}
//关闭模板
btFormat.Close(BarTender.BtSaveOptions.btPromptSave);
//退出打印程序
bartenderApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
}
/// <summary>
/// 打印箱子标签
/// </summary>
/// <param name="box"></param>
public static void BoxPrint(Box box)
{
Dictionary<string, string> list = new Dictionary<string, string>()
{
{"$TYPE", box.Type },
{"$SPEC", box.Spec },
{"$QTY", box.Qty.ToString()},
{"$CTN", Math.Round(box.Net_Weight.Value,2).ToString()},
{ "$LOTNO", box.Lot_No },
{"$LENGTH", box.Length },
{ "$DATE", box.Dom_Time.ToString()},
{ "$EXP", box.Exp_Time.ToString()},
{ "$CODE", box.Code }
};
Print(@"D:\btw\装箱码垛标签.btw", "NOVEXX Solutions XLP 504 (300 dpi)Max", list);
}
/// <summary>
/// 打印丝锭标签
/// </summary>
/// <param name="box"></param>
public static void SilkPrint(Silk silk)
{
Dictionary<string, string> list = new Dictionary<string, string>()
{
{"$Name", silk.Name },
{"$Type", silk.Type },
{"$NetWeight", Math.Round(silk.Net_Weight.Value,2).ToString() },
{ "$Length", silk.Length},
{"$Date", silk.Date.ToString() },
{ "$LotNo", silk.Lot_No},
{ "$Code", silk.Code}
};
Print(@"D:\btw\丝锭标签.btw", "NOVEXX Solutions XLP 504 (300 dpi)Min", list);
}
}
}

View File

@ -27,8 +27,9 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
private readonly IPrinterService printerService; private readonly IPrinterService printerService;
private readonly IUnitOfWorkManager unitOfWork; private readonly IUnitOfWorkManager unitOfWork;
private readonly ILogger<DefaultBalanceEventHandle> logger; private readonly ILogger<DefaultBalanceEventHandle> logger;
private readonly IRepository<AutoLabel> autoRepository;
private readonly static object _lock = new object(); private readonly static object _lock = new object();
public DefaultBalanceEventHandle(IRepository<Silk> silkRepository,IPlcService plcService,IRepository<Produce> produceRepository,IRepository<Box> boxRepository,IPrinterService printerService,IUnitOfWorkManager unitOfWork, ILogger<DefaultBalanceEventHandle> logger) public DefaultBalanceEventHandle(IRepository<Silk> silkRepository, IPlcService plcService, IRepository<Produce> produceRepository, IRepository<Box> boxRepository, IPrinterService printerService, IUnitOfWorkManager unitOfWork, ILogger<DefaultBalanceEventHandle> logger, IRepository<AutoLabel> autoRepository)
{ {
this.silkRepository = silkRepository; this.silkRepository = silkRepository;
this.plcService = plcService; this.plcService = plcService;
@ -37,13 +38,14 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
this.printerService = printerService; this.printerService = printerService;
this.unitOfWork = unitOfWork; this.unitOfWork = unitOfWork;
this.logger = logger; this.logger = logger;
this.autoRepository = autoRepository;
} }
public async Task ExecAsync(decimal weight, int id) public async Task ExecAsync(decimal weight, int id)
{ {
using (var uow = unitOfWork.Reserve(UnitOfWork.UnitOfWorkReservationName)) using (var uow = unitOfWork.Reserve(UnitOfWork.UnitOfWorkReservationName))
{ {
try try
{ {
@ -69,7 +71,7 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
logger.LogError(ex.GetBaseException(), "称重报错"); logger.LogError(ex.GetBaseException(), "称重报错");
await uow.RollbackAsync(); await uow.RollbackAsync();
} }
} }
} }
@ -80,38 +82,96 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
/// <returns></returns> /// <returns></returns>
public async Task Yanr(decimal weight) public async Task Yanr(decimal weight)
{ {
if (await silkRepository.AnyAsync(e => e.Status == 0 && e.IsDelete == 0)) #region
{ //要扫码称重的
var silk = await silkRepository.FirstOrDefaultAsync(e => e.Status == 0 && e.IsDelete == 0);//QueueManage.YarnBalanceQueue.Dequeue(); //if (await silkRepository.AnyAsync(e => e.Status == 0 && e.IsDelete == 0))
silk.Status = 1; //{
silk.Status_Details = "已称重待装箱"; // var silk = await silkRepository.FirstOrDefaultAsync(e => e.Status == 0 && e.IsDelete == 0);//QueueManage.YarnBalanceQueue.Dequeue();
silk.Net_Weight = (double)weight; // silk.Status = (int)SilkStatus.已称重;
await silkRepository.UpdateAsync(silk); // silk.Status_Details = "已称重";
string content = "#!A1" + // silk.Net_Weight = (double)weight;
"\r\n#N13" + // await silkRepository.UpdateAsync(silk);
"\r\n#PC1017/0" + // string content = "#!A1" +
"\r\n#IMR44/46" + // "\r\n#N13" +
//"\r\n#HV50" + // "\r\n#PC1017/0" +
"\r\n#PR6//" + // "\r\n#IMR44/46" +
"\r\n#PO0" + // //"\r\n#HV50" +
"\r\n#ERNC/1//0.00" + // "\r\n#PR6//" +
"\r\n#R0/0" + // "\r\n#PO0" +
"\r\n#T3.64 #J43.18 #FD/0/L #SS100/BVUN/21X21/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" + // "\r\n#ERNC/1//0.00" +
"\r\n#T11.85 #J40.47 #FD/0/L #SS100/BVUN/19X19/0 #VW/L/\"Yulin Hengshen COLtd\"#G" + // "\r\n#R0/0" +
"\r\n#T2.28 #J25.31 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Name " + silk.Name +"\"#G" + // "\r\n#T3.64 #J43.18 #FD/0/L #SS100/BVUN/21X21/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T2.28 #J20.91 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Type " +silk.Type+ "\"#G" + // "\r\n#T11.85 #J40.47 #FD/0/L #SS100/BVUN/19X19/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T2.28 #J16.51 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Net Weight "+silk.Net_Weight+ "\"#G" + // "\r\n#T2.28 #J25.31 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Name " + silk.Name +"\"#G" +
"\r\n#T2.28 #J12.61 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Length "+silk.Length+ "\"#G" + // "\r\n#T2.28 #J20.91 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Type " +silk.Type+ "\"#G" +
"\r\n#T2.28 #J7.95 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Date "+silk.Date.ToString()+ "\"#G" + // "\r\n#T2.28 #J16.51 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Net Weight "+silk.Net_Weight+ "\"#G" +
"\r\n#T2.28 #J3.89 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Lot No "+silk.Lot_No+ "\"#G" + // "\r\n#T2.28 #J12.61 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Length "+silk.Length+ "\"#G" +
"\r\n#T11.51 #J29.54 #FD/0/L #SB13/ONKP2.0/8.80/2 #VW/L/\"" + silk.Code+"\"#G" + // "\r\n#T2.28 #J7.95 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Date "+silk.Date.ToString()+ "\"#G" +
"\r\n#Q1#G" + // "\r\n#T2.28 #J3.89 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Lot No "+silk.Lot_No+ "\"#G" +
"\r\n#!P1" + // "\r\n#T11.51 #J29.54 #FD/0/L #SB13/ONKP2.0/8.80/2 #VW/L/\"" + silk.Code+"\"#G" +
"\r\n"; // "\r\n#Q1#G" +
await printerService.PrintAsync(1, content); // "\r\n#!P1" +
// "\r\n";
// await printerService.PrintAsync(1, content);
// logger.LogInformation($"Silk({silk.Id}|{silk.Code})状态更改为【已称重待装箱】,同时向打印机发送打印标签指令");
//}
#endregion
//不扫码称重
logger.LogInformation("称重的体重为" + weight);
if ((double)weight < 0.2)
return;
var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1 && x.IsDelete == 0);
if (produce == null)
throw Oops.Oh("没有生产设置");
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
logger.LogInformation($"Silk({silk.Id}|{silk.Code})状态更改为【已称重待装箱】,同时向打印机发送打印标签指令");
} }
autolabel.Sort += 1;
logger.LogInformation(timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
var silk = new Silk()
{
Status = (int)SilkStatus.,
Status_Details = "已称重",
Net_Weight = (double)weight,
Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Createtime = DateTime.Now,
IsDelete = 0,
Date = DateTime.Now,
Name = produce.Type,
Length = produce.Length,
Lot_No = produce.Lot_No,
Type = produce.Spec
};
var data = await silkRepository.InsertAsync(silk, true);
//打印丝锭小标签
BarTenderHelper.SilkPrint(silk);
logger.LogInformation($"Silk({data.Id}|{silk.Code})状态更改为【已称重】,同时向打印机发送打印标签指令");
} }
/// <summary> /// <summary>
@ -121,25 +181,55 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
public async Task Box(decimal weight) public async Task Box(decimal weight)
{ {
/* PLC未给顶升到位信号则忽略此次事件处理 */ /* PLC未给顶升到位信号则忽略此次事件处理 */
if (!await plcService.IsTop()) return;
if (!await plcService.IsTop())
{
var a = await plcService.IsTop();
logger.LogInformation($"上顶的状态{a}");
return;
}
if (await silkRepository.AnyAsync(e => e.Status == 1 && e.IsDelete == 0)) if (await silkRepository.AnyAsync(e => e.Status == 1 && e.IsDelete == 0))
{ {
var query = await silkRepository.GetQueryableAsync(); var produce = await produceRepository.FirstOrDefaultAsync(e => e.IfUse == 1 && e.IsDelete == 0);
query =query.Where(x => x.Status == 1 && x.IsDelete == 0);
var query = await silkRepository.GetQueryableAsync();
query = query.Where(x => x.Status == 1 && x.IsDelete == 0 && x.Type == produce.Spec && x.Name == produce.Type && x.Length == produce.Length && x.Lot_No == produce.Lot_No);
var count = query.Count(); var count = query.Count();
var produce = await produceRepository.FirstOrDefaultAsync(e => e.IfUse == 1);
if (produce is null) if (produce is null)
throw Oops.Oh("无生产信息,请先设置生产信息再扫码"); throw Oops.Oh("无生产信息,请先设置生产信息再称重");
if (produce.Qty.Value > count) if (produce.Qty.Value > count)
{ {
throw Oops.Oh("数量未满箱,无法打印标签"); throw Oops.Oh($"{produce.Type}数量未满箱,无法打印标签");
} }
logger.LogInformation($"当前生产信息:{produce.Name}|{produce.Spec}|{produce.Lot_No}|{produce.BoxSpec}|{produce.Qty}"); logger.LogInformation($"当前生产信息:{produce.Name}|{produce.Spec}|{produce.Lot_No}|{produce.BoxSpec}|{produce.Qty}");
//var netWeight = query.FirstOrDefault(e => e.Code == QueueManage.BoxQueue.FirstOrDefault()).Net_Weight * produce.Qty.Value; //var netWeight = query.FirstOrDefault(e => e.Code == QueueManage.BoxQueue.FirstOrDefault()).Net_Weight * produce.Qty.Value;
var takeQuery = query.Take(produce.Qty.Value); var takeQuery = query.Take(produce.Qty.Value);
var netWeight = takeQuery.Sum(e => e.Net_Weight); var netWeight = takeQuery.Sum(e => e.Net_Weight);
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("成箱流水号:" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
var box = new Box() var box = new Box()
{ {
Dom_Time = DateTime.Now, Dom_Time = DateTime.Now,
@ -148,34 +238,21 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
Qty = produce.Qty, Qty = produce.Qty,
Length = produce.Length, Length = produce.Length,
Lot_No = produce.Lot_No, Lot_No = produce.Lot_No,
Code = Guid.NewGuid().ToString().Substring(9, 18), //Code = Guid.NewGuid().ToString().Substring(9, 18),
Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = netWeight, Net_Weight = netWeight,
Spec = produce.BoxSpec, Spec = produce.Spec,
Gross_Weight = (double)weight, Gross_Weight = (double)weight,
IsUse = true, IsUse = true,
IsDelete = 0 IsDelete = 0,
DataType = (int)BoxDataType.,
Create_Time = DateTime.Now,
Mark = "已称重装箱打印标签,箱子内装单品数量" + produce.Qty
}; };
string content = "#!A1" +
"\r\n#N13" + //打印成箱大标签
"\r\n#PC1017/0" + BarTenderHelper.BoxPrint(box);
"\r\n#IMR104/130" + logger.LogInformation($"打印条码{box.Code},成箱码垛标签打印成功");
//"\r\n#HV50" +
"\r\n#PR6//" +
"\r\n#PO0" +
"\r\n#ERNC/1//0.00" +
"\r\n#R0/0" +
"\r\n#T7.28 #J11.17 #FD/1/L #SS100/BVUN/51X68/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T13.37 #J40.30 #FD/1/L #SS100/BVUN/46X62/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T52.15 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"TYPE " + box.Type + "\"#G" +
"\r\n#T67.39 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"QTY/PCS " + box.Qty + "\"#G" +
"\r\n#T82.63 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LOT NO. " + box.Lot_No + "\"#G" +
"\r\n#T98.97 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"DOM. " + box.Dom_Time.ToString() + "\"#G" +
"\r\n#T52.15 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"SPEC " + box.Spec + "\"#G" +
"\r\n#T67.39 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"CTY./NO. " + box.Net_Weight + "\"#G" +
"\r\n#T81.19 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LENGTH " + box.Length + "\"#G" +
"\r\n#T98.21 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"EXP. " + box.Exp_Time.ToString() + "\"#G" +
"\r\n#T41.06 #J6.68 #FD/1/L #SB13/ONKP2.0/20.82/5 #VW/L/\"" + box.Code + "\"#G" +
"\r\n#Q1#G\r\n#!P1\r\n";
var entity = await boxRepository.InsertAsync(box, true); var entity = await boxRepository.InsertAsync(box, true);
var silks = takeQuery.ToList(); var silks = takeQuery.ToList();
@ -186,15 +263,18 @@ namespace Syc.Basic.Web.WMS.DeviceEventHandle
{ {
logger.LogInformation($"{e.Code}已装箱"); logger.LogInformation($"{e.Code}已装箱");
e.BoxId = entity.Id; e.BoxId = entity.Id;
e.Status = 2; e.Status = (int)SilkStatus.;
e.Status_Details = "已装箱"; e.Status_Details = "已装箱";
}); });
await silkRepository.UpdateManyAsync(silks); await silkRepository.UpdateManyAsync(silks);
await printerService.PrintAsync(2, content);
await plcService.ClearTop(); await plcService.ClearTop();
await plcService.ClearData();
await plcService.BoxTagPrintDoneAsync((short)1); await plcService.BoxTagPrintDoneAsync((short)1);
logger.LogInformation($"称重完成,已将数据({box.Id}|{box.Code})插入到box表同时向打印机发送出标指令"); await plcService.PrintEnd();
}
logger.LogInformation($"称重完成,已将数据({entity.Id}|{box.Code})插入到box表同时向打印机发送出标指令");
}
} }
} }
} }

View File

@ -46,28 +46,28 @@ namespace Syc.Basic.Web.WMS
/// <returns></returns> /// <returns></returns>
public async Task ExecAsync(string code, int id) public async Task ExecAsync(string code, int id)
{ {
using (var uow = uowm.Reserve(UnitOfWork.UnitOfWorkReservationName)) //using (var uow = uowm.Reserve(UnitOfWork.UnitOfWorkReservationName))
{ //{
try // try
{ // {
if (id == 1) // if (id == 1)
await Yarn(code); // await Yarn(code);
else // else
await Box(code); // await Box(code);
await uow.CompleteAsync(); // await uow.CompleteAsync();
} // }
catch (Exception ex) when (ex is FriendlyException friendlyException) // catch (Exception ex) when (ex is FriendlyException friendlyException)
{ // {
logger.LogError(ex.GetBaseException(),"扫码报错"); // logger.LogError(ex.GetBaseException(),"扫码报错");
await WebSocketManager.SocketManager.BroadcastAsync(friendlyException.Message); // await WebSocketManager.SocketManager.BroadcastAsync(friendlyException.Message);
await uow.RollbackAsync(); // await uow.RollbackAsync();
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
logger.LogError(ex.GetBaseException(), "扫码报错"); // logger.LogError(ex.GetBaseException(), "扫码报错");
await uow.RollbackAsync(); // await uow.RollbackAsync();
} // }
} //}
} }
/// <summary> /// <summary>

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Syc.Basic.Web.WMS.Dto
{
public class FullPalletInput
{
public int Num { get; set; }
}
}

View File

@ -12,11 +12,12 @@ namespace Syc.Basic.Web.WMS.Dto
public int Id { get; set; } public int Id { get; set; }
public string Type { get; set; } public string Type { get; set; }
public string Spec { get; set; } public string Spec { get; set; }
public double Length { get; set; } public string Length { get; set; }
public string Lot_No { get; set; } public string Lot_No { get; set; }
public string Name { get; set; } //public string Name { get; set; }
public int? Qty { get; set; } public int? Qty { get; set; }
public string BoxSpec { get; set; } //public string BoxSpec { get; set; }
public string Date { get; set; }
public string Exp_Time { get; set; } public string Exp_Time { get; set; }
public int IfUse { get; set; } public int IfUse { get; set; }
public int IsDelete { get; set; } public int IsDelete { get; set; }

View File

@ -18,7 +18,7 @@ namespace Syc.Basic.Web.WMS.Dto
//净重 //净重
public double? Net_Weight { get; set; } public double? Net_Weight { get; set; }
//长度 //长度
public double? Length { get; set; } public string? Length { get; set; }
//包装时间 //包装时间
public DateTime? Date { get; set; } public DateTime? Date { get; set; }
//生产批号 //生产批号

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Syc.Basic.Web.WMS.Dto
{
public class UserInput
{
public int Id { get; set; }
public string JiuPassword { get; set; }
public string NewPassword { get; set; }
}
}

View File

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Syc.Basic.Web.WMS
{
public enum BoxDataType
{
,
,
,
,
,
}
public enum SilkStatus
{
,
,
,
,
,
}
public enum AutoLabelType
{
,
,
}
}

View File

@ -25,7 +25,6 @@ using Volo.Abp.Domain.Repositories;
namespace Syc.Basic.Web.WMS.Service namespace Syc.Basic.Web.WMS.Service
{ {
//[ApiExplorerSettings(GroupName = "鉴权/授权服务"), Authorize] //[ApiExplorerSettings(GroupName = "鉴权/授权服务"), Authorize]
[AllowAnonymous]
public class AuthService : ApiService, IAuthService public class AuthService : ApiService, IAuthService
{ {
private readonly IJwtTokenService jwtTokenService; private readonly IJwtTokenService jwtTokenService;
@ -54,7 +53,7 @@ namespace Syc.Basic.Web.WMS.Service
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost,AllowAnonymous]
public async Task<AuthResultDto> LoginAsync(LoginInput input) public async Task<AuthResultDto> LoginAsync(LoginInput input)
{ {
var userDO = await userDomainService.GetUserByAccountAsync(input.UserName); var userDO = await userDomainService.GetUserByAccountAsync(input.UserName);

View File

@ -0,0 +1,90 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Seyounth.Auto.Hs.Runtime.Plc;
using Seyounth.Auto.Hs.Runtime.Printer;
using Syc.Basic.Web.WMS.Dto;
using Syc.Basic.Web.WMS.Entitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace Syc.Basic.Web.WMS.Service
{
[AllowAnonymous]
public class AutoService : ApiService
{
private readonly IPrinterService printerService;
private readonly IRepository<AutoLabel> autoReposutory;
private readonly ILogger<AutoService> logger;
private readonly IPlcService plcService;
public AutoService(IPrinterService PrinterService,IRepository<AutoLabel> AutoReposutory,ILogger<AutoService> logger,IPlcService plcService)
{
printerService = PrinterService;
autoReposutory = AutoReposutory;
this.logger = logger;
this.plcService = plcService;
}
/// <summary>
/// 打印唯一标签
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
[HttpPost]
public async Task AutoLabel(int num)
{
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoReposutory.FirstOrDefaultAsync(x => x.Date == date&&x.Type==(int)AutoLabelType.);
var d = date.ToString("yyMMdd");
if (autolabel == null)
{
autolabel = await autoReposutory.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 1,
Mark = "T" + d,
Type = (int)AutoLabelType.
},true);
}
//for (var i = 1; i <= num; i++)
//{
// autolabel.Sort += 1;
// logger.LogInformation(autolabel.Mark + autolabel.Sort.ToString().PadLeft(4, '0'));
// string content = "^XA" +
// "\r\n^MMP" +
// "\r\n^LL0" +
// "\r\n^JUS" +
// "\r\n#!A1" +
// "\r\n#N13" +
// "\r\n#PC1017/0" +
// "\r\n#IMR44/46" +
// "\r\n#PR6//" +
// "\r\n#PO0" +
// "\r\n#ERNC/1//0.00" +
// "\r\n#R0/0" +
// "\r\n#T11.51 #J29.54 #FD/0/L #SB13/ONKP2.0/8.80/2 #VW/L/\"" + autolabel.Mark + autolabel.Sort.ToString().PadLeft(4, '0') + "\"#G" +
// "\r\n#Q1#G" +
// "\r\n#!P1" +
// "\r\n^XZ";
// await printerService.PrintAsync(1, content);
//}
await autoReposutory.UpdateAsync(autolabel);
}
}
}

View File

@ -29,8 +29,9 @@ namespace Syc.Basic.Web.WMS.Service
private readonly IPlcService plcService; private readonly IPlcService plcService;
private readonly ILogger<BoxService> logger; private readonly ILogger<BoxService> logger;
private readonly IPrinterService printerService; private readonly IPrinterService printerService;
private readonly IRepository<AutoLabel> autoRepository;
public BoxService(IRepository<Box> boxRepository,IRepository<Produce> produceRepository,IRepository<Silk> silkRepository,IPlcService plcService, ILogger<BoxService> logger,IPrinterService printerService) public BoxService(IRepository<Box> boxRepository, IRepository<Produce> produceRepository, IRepository<Silk> silkRepository, IPlcService plcService, ILogger<BoxService> logger, IPrinterService printerService, IRepository<AutoLabel> autoRepository)
{ {
this.boxRepository = boxRepository; this.boxRepository = boxRepository;
this.produceRepository = produceRepository; this.produceRepository = produceRepository;
@ -38,6 +39,7 @@ namespace Syc.Basic.Web.WMS.Service
this.plcService = plcService; this.plcService = plcService;
this.logger = logger; this.logger = logger;
this.printerService = printerService; this.printerService = printerService;
this.autoRepository = autoRepository;
} }
/// <summary> /// <summary>
/// 查询纸箱 /// 查询纸箱
@ -54,7 +56,7 @@ namespace Syc.Basic.Web.WMS.Service
if (input.Spec != null) if (input.Spec != null)
boxlist = boxlist.Where(x => x.Spec.Contains(input.Spec)); boxlist = boxlist.Where(x => x.Spec.Contains(input.Spec));
var result = boxlist.PageResult(input.Page, input.PageSize); var result = boxlist.OrderByDescending(x => x.Id).PageResult(input.Page, input.PageSize);
var data = result.Queryable.Select(e => new BoxDto() var data = result.Queryable.Select(e => new BoxDto()
{ {
Length = e.Length, Length = e.Length,
@ -62,8 +64,11 @@ namespace Syc.Basic.Web.WMS.Service
Qty = e.Qty, Qty = e.Qty,
Id = e.Id, Id = e.Id,
Code = e.Code, Code = e.Code,
Dom_Time = e.Dom_Time, Dom_Time = DateTime.Parse(e.Dom_Time.ToString()).ToString("yyyy-MM-dd HH:mm:ss"),
Exp_Time = e.Exp_Time.ToString(), DataType = e.DataType,
Mark = e.Mark,
Create_Time = e.Create_Time,
Exp_Time = DateTime.Parse(e.Exp_Time.ToString()).ToString("yyyy-MM-dd HH:mm:ss"),
Lot_No = e.Lot_No, Lot_No = e.Lot_No,
Spec = e.Spec, Spec = e.Spec,
Gross_Weight = e.Gross_Weight, Gross_Weight = e.Gross_Weight,
@ -72,9 +77,9 @@ namespace Syc.Basic.Web.WMS.Service
PageOutput<BoxDto> pageOutput = new PageOutput<BoxDto>(); PageOutput<BoxDto> pageOutput = new PageOutput<BoxDto>();
pageOutput.Total = boxlist.Count(); pageOutput.Total = boxlist.Count();
pageOutput.Data = data.OrderByDescending(x=>x.Id); pageOutput.Data = data;
pageOutput.PageIndex = input.Page; pageOutput.PageIndex = input.Page;
pageOutput.PageSize=input.PageSize; pageOutput.PageSize = input.PageSize;
return pageOutput; return pageOutput;
} }
/// <summary> /// <summary>
@ -85,19 +90,23 @@ namespace Syc.Basic.Web.WMS.Service
[HttpGet] [HttpGet]
public async Task<List<BoxDto>> GetBoxByNum() public async Task<List<BoxDto>> GetBoxByNum()
{ {
var produce=await produceRepository.FirstOrDefaultAsync(x=>x.IfUse==1); var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1);
var silks = await silkRepository.GetListAsync(x=>x.Status==1||x.Status==0); if (produce == null)
throw Oops.Oh("没有生产设置");
//var silks = await silkRepository.GetListAsync(x=>x.Status==1||x.Status==0);
var boxlist = await boxRepository.GetQueryableAsync(); var boxlist = await boxRepository.GetQueryableAsync();
boxlist = boxlist.Where(x => x.IsDelete == 0); boxlist = boxlist.Where(x => x.IsDelete == 0 && x.Spec == produce.Spec && x.Type == produce.Type && x.Lot_No == produce.Lot_No);
var data = boxlist.Select(e => new BoxDto() var data = boxlist.Where(x => x.DataType == 0).Select(e => new BoxDto()
{ {
Net_Weight = e.Net_Weight, Net_Weight = e.Net_Weight,
Id = e.Id, Id = e.Id,
Code = e.Code Code = e.Code,
DataType = e.DataType,
Mark = e.Mark
}).ToList(); }).ToList();
return data.OrderByDescending(x => x.Id).ToList().Take(1).ToList(); return data.OrderByDescending(x => x.Id).Take(15).ToList();
} }
/// <summary> /// <summary>
/// 添加纸箱 /// 添加纸箱
@ -107,53 +116,128 @@ namespace Syc.Basic.Web.WMS.Service
[HttpPost] [HttpPost]
public async Task InsertBox(BoxDto input) public async Task InsertBox(BoxDto input)
{ {
if (await boxRepository.AnyAsync(x => x.Code == input.Code)) var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1);
throw Oops.Oh("条码已存在,不允许添加"); var silksQuery = await silkRepository.GetQueryableAsync();
var boxs = await boxRepository.GetListAsync(e => e.IsUse); var silks = silksQuery.Where(x => x.IsDelete == 0 && x.Status == (int)SilkStatus.).OrderBy(x => x.Id).Take((int)produce.Qty).ToList();
if (boxs.Any())
if (produce == null)
throw Oops.Oh("没有生产设置");
if (silks.Count < produce.Qty)
{ {
boxs.ForEach(e => e.IsUse = false); logger.LogWarning($"没有{produce.Qty}条{produce.Type}的单品的信息,只有{silks.Count}条,无法创建码垛信息");
await boxRepository.UpdateManyAsync(boxs); throw Oops.Oh($"没有{produce.Qty}条{produce.Type}的单品的信息,只有{silks.Count}条,无法创建码垛信息");
//return;
} }
var netWeight = silks.Sum(x => x.Net_Weight);
var weight = silks.Average(x => x.Net_Weight);
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("手动添加成箱信息" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
var box = new Box() var box = new Box()
{ {
Dom_Time = DateTime.Now, Dom_Time = DateTime.Now,
Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time), Exp_Time = produce.Exp_Time,
Qty = produce.Qty,
Length = produce.Length,
Lot_No = produce.Lot_No,
Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = netWeight,
Spec = produce.Spec,
Create_Time = DateTime.Now,
Type = produce.Type,
IsUse = true,
IsDelete = 0,
DataType = (int)BoxDataType.,
Mark = "已经手动添加装箱信息"
};
var entity = await boxRepository.InsertAsync(box, true);
logger.LogInformation($"已手动添加装箱信息,装箱编号:{box.Code},包含单品数量:{silks.Count}");
List<Silk> list = new List<Silk>();
foreach (var silk in silks)
{
silk.Status = (int)SilkStatus.;
silk.BoxId = entity.Id;
silk.Status_Details = "已手动装箱";
list.Add(silk);
}
await silkRepository.UpdateManyAsync(list);
}
/// <summary>
/// 添加纸箱
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task AddInsertBox(BoxDto input)
{
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("手动添加成箱信息" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
var box = new Box()
{
Dom_Time = DateTime.Now,
Exp_Time = DateTime.Parse(input.Exp_Time),
Qty = input.Qty, Qty = input.Qty,
Length = input.Length, Length = input.Length,
Lot_No = input.Lot_No, Lot_No = input.Lot_No,
Code = input.Code, Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = input.Net_Weight, Net_Weight = input.Net_Weight,
Spec = input.Spec, Spec = input.Spec,
Create_Time = DateTime.Now,
Type = input.Type,
IsUse = true, IsUse = true,
IsDelete = 0 IsDelete = 0,
DataType = (int)BoxDataType.,
Mark = "手动添加的成箱信息数据库未绑定单品信息"
}; };
var entity= await boxRepository.InsertAsync(box,true); var entity = await boxRepository.InsertAsync(box, true);
string content = "#!A1" +
"\r\n#N13" +
"\r\n#PC1017/0" +
"\r\n#IMR104/130" +
//"\r\n#HV50" +
"\r\n#PR6//" +
"\r\n#PO0" +
"\r\n#ERNC/1//0.00" +
"\r\n#R0/0" +
"\r\n#T7.28 #J11.17 #FD/1/L #SS100/BVUN/51X68/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T13.37 #J40.30 #FD/1/L #SS100/BVUN/46X62/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T52.15 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"TYPE " + box.Type + "\"#G" +
"\r\n#T67.39 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"QTY/PCS " + box.Qty + "\"#G" +
"\r\n#T82.63 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LOT NO. " + box.Lot_No + "\"#G" +
"\r\n#T98.97 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"DOM. " + box.Dom_Time.ToString() + "\"#G" +
"\r\n#T52.15 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"SPEC " + box.Spec + "\"#G" +
"\r\n#T67.39 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"CTY./NO. " + box.Net_Weight + "\"#G" +
"\r\n#T81.19 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LENGTH " + box.Length + "\"#G" +
"\r\n#T98.21 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"EXP. " + box.Exp_Time.ToString() + "\"#G" +
"\r\n#T41.06 #J6.68 #FD/1/L #SB13/ONKP2.0/20.82/5 #VW/L/\"" + box.Code + "\"#G" +
"\r\n#Q1#G\r\n#!P1\r\n";
await printerService.PrintAsync(2, content);
logger.LogInformation($"手动添加的成箱信息未绑定单品信息:{box.Code},未含单品数量");
BarTenderHelper.BoxPrint(box);
logger.LogInformation($"打印条码{box.Code},成箱标签打印成功");
} }
/// <summary> /// <summary>
@ -164,30 +248,12 @@ namespace Syc.Basic.Web.WMS.Service
[HttpPost] [HttpPost]
public async Task PrintBox(DelInput input) public async Task PrintBox(DelInput input)
{ {
var box = await boxRepository.FirstOrDefaultAsync(x=>x.Id==input.id); var box = await boxRepository.FirstOrDefaultAsync(x => x.Id == input.id);
BarTenderHelper.BoxPrint(box);
logger.LogInformation($"打印条码{box.Code},成箱标签打印成功");
//throw Oops.Oh("成箱标签打印成功");
string content = "#!A1" +
"\r\n#N13" +
"\r\n#PC1017/0" +
"\r\n#IMR104/130" +
//"\r\n#HV50" +
"\r\n#PR6//" +
"\r\n#PO0" +
"\r\n#ERNC/1//0.00" +
"\r\n#R0/0" +
"\r\n#T7.28 #J11.17 #FD/1/L #SS100/BVUN/51X68/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T13.37 #J40.30 #FD/1/L #SS100/BVUN/46X62/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T52.15 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"TYPE " + box.Type + "\"#G" +
"\r\n#T67.39 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"QTY/PCS " + box.Qty + "\"#G" +
"\r\n#T82.63 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LOT NO. " + box.Lot_No + "\"#G" +
"\r\n#T98.97 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"DOM. " + box.Dom_Time.ToString() + "\"#G" +
"\r\n#T52.15 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"SPEC " + box.Spec + "\"#G" +
"\r\n#T67.39 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"CTY./NO. " + box.Net_Weight + "\"#G" +
"\r\n#T81.19 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LENGTH " + box.Length + "\"#G" +
"\r\n#T98.21 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"EXP. " + box.Exp_Time.ToString() + "\"#G" +
"\r\n#T41.06 #J6.68 #FD/1/L #SB13/ONKP2.0/20.82/5 #VW/L/\"" + box.Code + "\"#G" +
"\r\n#Q1#G\r\n#!P1\r\n";
await printerService.PrintAsync(2, content);
} }
/// <summary> /// <summary>
@ -202,10 +268,11 @@ namespace Syc.Basic.Web.WMS.Service
box.Spec = input.Spec; box.Spec = input.Spec;
box.Length = input.Length; box.Length = input.Length;
box.Code = input.Code; //box.Code = input.Code;
box.Lot_No = input.Lot_No; box.Lot_No = input.Lot_No;
box.Net_Weight = input.Net_Weight; box.Net_Weight = input.Net_Weight;
box.Dom_Time = DateTime.Now; box.Dom_Time = DateTime.Now;
box.Type = input.Type;
box.Qty = input.Qty; box.Qty = input.Qty;
box.Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time); box.Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time);
await boxRepository.UpdateAsync(box); await boxRepository.UpdateAsync(box);
@ -236,7 +303,7 @@ namespace Syc.Basic.Web.WMS.Service
var boxs = await boxRepository.GetListAsync(x => input.ids.Contains(x.Id)); var boxs = await boxRepository.GetListAsync(x => input.ids.Contains(x.Id));
if (boxs.Count == 0) if (boxs.Count == 0)
throw Oops.Oh("删除失败,数据为空"); throw Oops.Oh("删除失败,数据为空");
for(var i = 0; i < boxs.Count; i++) for (var i = 0; i < boxs.Count; i++)
{ {
boxs[i].IsDelete = 1; boxs[i].IsDelete = 1;
} }
@ -249,7 +316,17 @@ namespace Syc.Basic.Web.WMS.Service
/// <returns></returns> /// <returns></returns>
public async Task SetTemperature(ByIdInput<short> input) public async Task SetTemperature(ByIdInput<short> input)
{ {
await plcService.SetTemperatureAsync(input.Id); await plcService.SetTemperatureAsync(input.Id);
}
/// <summary>
/// 复位
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task ClearData()
{
await plcService.ClearData();
} }
/// <summary> /// <summary>
@ -258,7 +335,180 @@ namespace Syc.Basic.Web.WMS.Service
/// <returns></returns> /// <returns></returns>
public async Task<int> GetTemperature() public async Task<int> GetTemperature()
{ {
return await plcService.GetTemperatureAsync(); return await plcService.GetTemperatureAsync();
}
/// <summary>
/// 整箱码垛打印标签
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task BoxsPalletPrint(FullPalletInput input)
{
var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1);
var boxQuery = await boxRepository.GetQueryableAsync();
var boxs = boxQuery.Where(x => x.DataType == 0 && x.IsDelete == 0).OrderBy(x => x.Id).Take(input.Num).ToList();
if (produce == null)
throw Oops.Oh("没有生产设置");
if (boxs.Count < input.Num)
{
logger.LogWarning($"没有{input.Num}条{produce.Type}的整箱的信息,只有{boxs.Count}条,无法创建码垛信息");
throw Oops.Oh($"没有{input.Num}条{produce.Type}的整箱的信息,只有{boxs.Count}条,无法创建码垛信息");
//return;
}
#region Code
var netWeight = boxs.Sum(x => x.Net_Weight);
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("整箱码垛生成Code" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
#endregion
var box = new Box()
{
Dom_Time = DateTime.Now,
Type = produce.Type,
Exp_Time = produce.Exp_Time,
Qty = input.Num,
Length = produce.Length,
Lot_No = produce.Lot_No,
//Code = Guid.NewGuid().ToString().Substring(9, 18),
Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = netWeight,
Spec = produce.Spec,
IsUse = true,
IsDelete = 0,
DataType = (int)BoxDataType.,
Create_Time = DateTime.Now,
Mark = "整箱手动码垛,码垛整箱数量" + input.Num
};
var Box = await boxRepository.InsertAsync(box, true);
logger.LogInformation($"已添加码垛信息,码垛编号:{box.Code},包含整箱数量:{boxs.Count}");
List<Box> list = new List<Box>();
foreach (var item in boxs)
{
item.DataType = (int)BoxDataType.;
item.Mark = "已码垛到编号" + Box.Code + "中,码垛数据编号ID" + Box.Id;
list.Add(item);
}
await boxRepository.UpdateManyAsync(list);
#region
//打印标签
BarTenderHelper.BoxPrint(box);
logger.LogInformation($"打印条码{box.Code},成箱码垛标签打印成功");
//throw Oops.Oh("成箱码垛标签打印成功");
#endregion
}
/// <summary>
/// 单品码垛打印标签
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task SilksPalletPrint(FullPalletInput input)
{
var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1);
var silksQuery = await silkRepository.GetQueryableAsync();
var silks = silksQuery.Where(x => x.IsDelete == 0 && x.Status == (int)SilkStatus.).OrderBy(x => x.Id).Take(input.Num).ToList();
if (produce == null)
throw Oops.Oh("没有生产设置");
if (silks.Count < input.Num)
{
logger.LogWarning($"没有{input.Num}条{produce.Type}的单品的信息,只有{silks.Count}条,无法创建码垛信息");
throw Oops.Oh($"没有{input.Num}条{produce.Type}的单品的信息,只有{silks.Count}条,无法创建码垛信息");
//return;
}
var netWeight = silks.Sum(x => x.Net_Weight);
var weight = silks.Average(x => x.Net_Weight);
#region
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("丝锭码垛生成Code" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
#endregion
var box = new Box()
{
Dom_Time = DateTime.Now,
Type = produce.Type,
Exp_Time = produce.Exp_Time,
Qty = input.Num,
Length = produce.Length,
Lot_No = produce.Lot_No,
//Code = Guid.NewGuid().ToString().Substring(9, 18),
Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = netWeight,
Spec = produce.Spec,
IsUse = true,
IsDelete = 0,
DataType = (int)BoxDataType.,
Create_Time = DateTime.Now,
Mark = "单品手动码垛,码垛单品数量" + input.Num
};
var Box = await boxRepository.InsertAsync(box, true);
logger.LogInformation($"已添加码垛信息,码垛编号:{box.Code},包含单品数量:{silks.Count}");
List<Silk> list = new List<Silk>();
foreach (var silk in silks)
{
silk.Status = 3;
silk.BoxId = Box.Id;
silk.Status_Details = "已码垛";
list.Add(silk);
}
await silkRepository.UpdateManyAsync(list);
#region
//打印标签
BarTenderHelper.BoxPrint(box);
logger.LogInformation($"打印条码{box.Code},丝锭码垛标签打印成功");
//throw Oops.Oh("丝锭码垛标签打印成功");
#endregion
} }
} }
} }

View File

@ -47,10 +47,11 @@ namespace Syc.Basic.Web.WMS.Service
Id = x.Id, Id = x.Id,
Length = x.Length, Length = x.Length,
Type = x.Type, Type = x.Type,
BoxSpec = x.BoxSpec, //BoxSpec = x.BoxSpec,
Date = x.Date.HasValue ? x.Exp_Time.Value.ToString("yyyy-MM-dd HH:m") : "-",
Exp_Time = x.Exp_Time.HasValue ? x.Exp_Time.Value.ToString("yyyy-MM-dd HH:m") : "-", Exp_Time = x.Exp_Time.HasValue ? x.Exp_Time.Value.ToString("yyyy-MM-dd HH:m") : "-",
IfUse = x.IfUse, IfUse = x.IfUse,
Name = x.Name, //Name = x.Name,
Qty = x.Qty Qty = x.Qty
}); });
@ -100,10 +101,11 @@ namespace Syc.Basic.Web.WMS.Service
Spec = input.Spec, Spec = input.Spec,
Type = input.Type, Type = input.Type,
Qty = input.Qty, Qty = input.Qty,
BoxSpec = input.BoxSpec, BoxSpec = input.Spec,
Date= string.IsNullOrWhiteSpace(input.Date) ? null : Convert.ToDateTime(input.Exp_Time),
Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time), Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time),
IfUse = 1, IfUse = 1,
Name = input.Name, Name = input.Type,
IsDelete = 0 IsDelete = 0
}; };
@ -124,8 +126,9 @@ namespace Syc.Basic.Web.WMS.Service
produce.Length = input.Length; produce.Length = input.Length;
produce.Lot_No = input.Lot_No; produce.Lot_No = input.Lot_No;
produce.Qty = input.Qty; produce.Qty = input.Qty;
produce.Name = input.Name; produce.Name = input.Type;
produce.BoxSpec = input.BoxSpec; produce.BoxSpec = input.Spec;
produce.Date = string.IsNullOrWhiteSpace(input.Date) ? null : Convert.ToDateTime(input.Date);
produce.Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time); produce.Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time);
await produceRepository.UpdateAsync(produce); await produceRepository.UpdateAsync(produce);
} }

View File

@ -16,19 +16,21 @@ using Volo.Abp.Domain.Repositories;
namespace Syc.Basic.Web.WMS.Service namespace Syc.Basic.Web.WMS.Service
{ {
[AllowAnonymous] [AllowAnonymous]
public class SilkService:ApiService public class SilkService : ApiService
{ {
private readonly IPrinterService printerService; private readonly IPrinterService printerService;
private readonly IRepository<Produce> produceRepository; private readonly IRepository<Produce> produceRepository;
private readonly IRepository<Silk> silkRepository; private readonly IRepository<Silk> silkRepository;
private readonly ILogger<SilkService> logger; private readonly ILogger<SilkService> logger;
private readonly IRepository<AutoLabel> autoRepository;
public SilkService(IPrinterService printerService,IRepository<Produce> produceRepository ,IRepository<Silk> silkRepository,ILogger<SilkService> logger) public SilkService(IPrinterService printerService, IRepository<Produce> produceRepository, IRepository<Silk> silkRepository, ILogger<SilkService> logger, IRepository<AutoLabel> autoRepository)
{ {
this.printerService = printerService; this.printerService = printerService;
this.produceRepository = produceRepository; this.produceRepository = produceRepository;
this.silkRepository = silkRepository; this.silkRepository = silkRepository;
this.logger = logger; this.logger = logger;
this.autoRepository = autoRepository;
} }
/// <summary> /// <summary>
/// 根据数量查询丝锭 /// 根据数量查询丝锭
@ -38,9 +40,11 @@ namespace Syc.Basic.Web.WMS.Service
[HttpGet] [HttpGet]
public async Task<List<SilkDto>> GetSilkByNum() public async Task<List<SilkDto>> GetSilkByNum()
{ {
var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1); var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1 && x.IsDelete == 0);
if (produce == null)
throw Oops.Oh("没有生产设置");
var list = await silkRepository.GetQueryableAsync(); var list = await silkRepository.GetQueryableAsync();
list = list.Where(x => x.Status==1 && x.IsDelete == 0 || x.Status == 0 && x.IsDelete == 0); list = list.Where(x => x.Status == 1 && x.IsDelete == 0 && x.Type == produce.Spec && x.Lot_No == produce.Lot_No && x.Name == produce.Type || x.Status == 0 && x.IsDelete == 0 && x.Type == produce.Spec && x.Lot_No == produce.Lot_No && x.Name == produce.Type);
var data = list.Select(e => new SilkDto() var data = list.Select(e => new SilkDto()
{ {
@ -51,7 +55,7 @@ namespace Syc.Basic.Web.WMS.Service
Status_Details = e.Status_Details Status_Details = e.Status_Details
}).ToList(); }).ToList();
return data.OrderByDescending(x => x.Id).ToList().ToList(); return data.OrderByDescending(x => x.Id).ToList();
} }
/// <summary> /// <summary>
/// 查询丝锭 /// 查询丝锭
@ -68,25 +72,25 @@ namespace Syc.Basic.Web.WMS.Service
if (input.Lot_No != null) if (input.Lot_No != null)
silklist = silklist.Where(x => x.Type.Contains(input.Lot_No)); silklist = silklist.Where(x => x.Type.Contains(input.Lot_No));
var result = silklist.PageResult(input.Page, input.PageSize); var result = silklist.OrderByDescending(x => x.Id).PageResult(input.Page, input.PageSize);
var data = result.Queryable.Select(x=>new SilkDto() var data = result.Queryable.Select(x => new SilkDto()
{ {
Name=x.Name, Name = x.Name,
Net_Weight=x.Net_Weight, Net_Weight = x.Net_Weight,
Lot_No=x.Lot_No, Lot_No = x.Lot_No,
Code=x.Code, Code = x.Code,
Date=x.Date, Date = x.Date,
Id=x.Id, Id = x.Id,
Length=x.Length, Length = x.Length,
Type=x.Type, Type = x.Type,
BoxId=x.BoxId, BoxId = x.BoxId,
Status=x.Status, Status = x.Status,
Status_Details=x.Status_Details Status_Details = x.Status_Details
}); });
PageOutput<SilkDto> pageOutput = new PageOutput<SilkDto>(); PageOutput<SilkDto> pageOutput = new PageOutput<SilkDto>();
pageOutput.Total = silklist.Count(); pageOutput.Total = silklist.Count();
pageOutput.Data = data.OrderByDescending(x => x.Id); pageOutput.Data = data;
pageOutput.PageIndex = input.Page; pageOutput.PageIndex = input.Page;
pageOutput.PageSize = input.PageSize; pageOutput.PageSize = input.PageSize;
return pageOutput; return pageOutput;
@ -99,44 +103,50 @@ namespace Syc.Basic.Web.WMS.Service
[HttpPost] [HttpPost]
public async Task InsertSilk(SilkDto input) public async Task InsertSilk(SilkDto input)
{ {
if (await silkRepository.AnyAsync(x => x.Code == input.Code&&x.IsDelete==0)) var produce = await produceRepository.FirstOrDefaultAsync(x => x.IfUse == 1);
throw Oops.Oh("条码已存在,不允许添加");
if (produce == null)
throw Oops.Oh("没有生产设置");
var date = DateOnly.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
var autolabel = await autoRepository.FirstOrDefaultAsync(x => x.Date == date && x.Type == (int)AutoLabelType.);
var timestr = DateTime.Now.ToString("yyyyMMddHHmmss");
if (autolabel == null)
{
autolabel = await autoRepository.InsertAsync(new AutoLabel()
{
Date = date,
Sort = 0,
Mark = timestr,
Type = (int)AutoLabelType.
}, true);
}
autolabel.Sort += 1;
logger.LogInformation("添加丝锭单品流水号" + timestr + autolabel.Sort.ToString().PadLeft(4, '0'));
await autoRepository.UpdateAsync(autolabel);
var silk = new Silk() var silk = new Silk()
{ {
Date = DateTime.Now, Date = DateTime.Now,
Length = input.Length, Length = produce.Length,
Lot_No = input.Lot_No, Lot_No = produce.Lot_No,
Code = input.Code, Code = timestr + autolabel.Sort.ToString().PadLeft(4, '0'),
Net_Weight = input.Net_Weight, Net_Weight = input.Net_Weight,
Name = input.Name, Name = produce.Type,
Type = input.Type, Type = produce.Spec,
Createtime = DateTime.Now,
Status = (int)SilkStatus.,
Status_Details = "手动添加称重",
IsDelete = 0 IsDelete = 0
}; };
var entity = await silkRepository.InsertAsync(silk,true); var entity = await silkRepository.InsertAsync(silk, true);
string content = "#!A1" + logger.LogInformation($"添加丝锭成功");
"\r\n#N13" +
"\r\n#PC1017/0" + BarTenderHelper.SilkPrint(silk);
"\r\n#IMR44/46" + logger.LogInformation($"打印{silk.Code}条码丝锭标签成功");
//"\r\n#HV50" +
"\r\n#PR6//" +
"\r\n#PO0" +
"\r\n#ERNC/1//0.00" +
"\r\n#R0/0" +
"\r\n#T3.64 #J43.18 #FD/0/L #SS100/BVUN/21X21/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T11.85 #J40.47 #FD/0/L #SS100/BVUN/19X19/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T2.28 #J25.31 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Name " + silk.Name + "\"#G" +
"\r\n#T2.28 #J20.91 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Type " + silk.Type + "\"#G" +
"\r\n#T2.28 #J16.51 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Net Weight " + silk.Net_Weight + "\"#G" +
"\r\n#T2.28 #J12.61 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Length " + silk.Length + "\"#G" +
"\r\n#T2.28 #J7.95 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Date " + silk.Date.ToString() + "\"#G" +
"\r\n#T2.28 #J3.89 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Lot No " + silk.Lot_No + "\"#G" +
"\r\n#T11.51 #J29.54 #FD/0/L #SB13/ONKP2.0/8.80/2 #VW/L/\"" + silk.Code + "\"#G" +
"\r\n#Q1#G" +
"\r\n#!P1" +
"\r\n";
await printerService.PrintAsync(1,content);
} }
/// <summary> /// <summary>
@ -147,30 +157,10 @@ namespace Syc.Basic.Web.WMS.Service
[HttpPost] [HttpPost]
public async Task PrintSilk(DelInput input) public async Task PrintSilk(DelInput input)
{ {
var silk = await silkRepository.FirstOrDefaultAsync(x=>x.Id==input.id); var silk = await silkRepository.FirstOrDefaultAsync(x => x.Id == input.id);
string content = "#!A1" + BarTenderHelper.SilkPrint(silk);
"\r\n#N13" + logger.LogInformation($"打印{silk.Code}条码丝锭标签成功");
"\r\n#PC1017/0" +
"\r\n#IMR44/46" +
//"\r\n#HV50" +
"\r\n#PR6//" +
"\r\n#PO0" +
"\r\n#ERNC/1//0.00" +
"\r\n#R0/0" +
"\r\n#T3.64 #J43.18 #FD/0/L #SS100/BVUN/21X21/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" +
"\r\n#T11.85 #J40.47 #FD/0/L #SS100/BVUN/19X19/0 #VW/L/\"Yulin Hengshen COLtd\"#G" +
"\r\n#T2.28 #J25.31 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Name " + silk.Name + "\"#G" +
"\r\n#T2.28 #J20.91 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Type " + silk.Type + "\"#G" +
"\r\n#T2.28 #J16.51 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Net Weight " + silk.Net_Weight + "\"#G" +
"\r\n#T2.28 #J12.61 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Length " + silk.Length + "\"#G" +
"\r\n#T2.28 #J7.95 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Date " + silk.Date.ToString() + "\"#G" +
"\r\n#T2.28 #J3.89 #FD/0/L #SS100/BVUN/20X20/0 #VW/L/\"Lot No " + silk.Lot_No + "\"#G" +
"\r\n#T11.51 #J29.54 #FD/0/L #SB13/ONKP2.0/8.80/2 #VW/L/\"" + silk.Code + "\"#G" +
"\r\n#Q1#G" +
"\r\n#!P1" +
"\r\n";
await printerService.PrintAsync(1, content);
} }
/// <summary> /// <summary>
/// 修改丝锭 /// 修改丝锭
@ -180,12 +170,12 @@ namespace Syc.Basic.Web.WMS.Service
[HttpPost] [HttpPost]
public async Task UpdateSilk(SilkDto input) public async Task UpdateSilk(SilkDto input)
{ {
var silks = await silkRepository.FirstOrDefaultAsync(x=>x.Id==input.Id); var silks = await silkRepository.FirstOrDefaultAsync(x => x.Id == input.Id);
silks.Name = input.Name; silks.Name = input.Name;
silks.Type = input.Type; silks.Type = input.Type;
silks.Length = input.Length; silks.Length = input.Length;
silks.Code = input.Code; //silks.Code = input.Code;
silks.Lot_No = input.Lot_No; silks.Lot_No = input.Lot_No;
silks.Net_Weight = input.Net_Weight; silks.Net_Weight = input.Net_Weight;
silks.Date = DateTime.Now; silks.Date = DateTime.Now;

View File

@ -1,6 +1,8 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Seyounth.Auto.Hs.Runtime.Printer;
using Syc.Authorize.JwtBearer; using Syc.Authorize.JwtBearer;
using Syc.Basic.Web.Services; using Syc.Basic.Web.Services;
using Syc.Basic.Web.WMS.Dtos.Auth; using Syc.Basic.Web.WMS.Dtos.Auth;
@ -19,7 +21,17 @@ namespace Syc.Basic.Web.WMS.Service
[AllowAnonymous] [AllowAnonymous]
public class TestService:ApiService public class TestService:ApiService
{ {
private readonly IPrinterService printerService;
private readonly IRepository<AutoLabel> autoReposutory;
private readonly ILogger<AutoService> logger;
public TestService(IPrinterService PrinterService, IRepository<AutoLabel> AutoReposutory, ILogger<AutoService> logger)
{
printerService = PrinterService;
autoReposutory = AutoReposutory;
this.logger = logger;
}
[HttpGet] [HttpGet]
public async Task<object> GetTest() public async Task<object> GetTest()
{ {

View File

@ -21,6 +21,7 @@ using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Syc.Basic.Web.WMS.Dto;
namespace Syc.Basic.Web.WMS.Service namespace Syc.Basic.Web.WMS.Service
{ {
@ -83,12 +84,28 @@ namespace Syc.Basic.Web.WMS.Service
if (users.Count > 0) if (users.Count > 0)
await repository.DeleteManyAsync(users); await repository.DeleteManyAsync(users);
} }
/// <summary>
/// 修改密码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task EditPassword(UserInput input)
{
var userDO = await repository.FirstOrDefaultAsync(x=>x.Id==input.Id);
if (userDO.Password != Tools.SecurityUtil.MD5Encrypt(input.NewPassword, Encoding.ASCII))
throw Oops.Oh("旧密码与密码不一致");
if (userDO.IsNullOrEmpty())
throw Oops.Oh("用户不存在");
if (input.NewPassword == input.JiuPassword)
throw Oops.Oh("新密码不能与旧密码一样");
userDO.Password = Tools.SecurityUtil.MD5Encrypt(input.NewPassword, Encoding.ASCII);
await repository.UpdateAsync(userDO);
}
public async Task Edit(UserInsertInput input) public async Task Edit(UserInsertInput input)
{ {
var accountExist = await repository.AnyAsync(e => e.Account == input.username && e.Id != input.id);
if (accountExist)
throw Oops.Oh("账号已存在,请重复使用");
var userDO = await userRepository.GetUserByAccountAsync(input.username); var userDO = await userRepository.GetUserByAccountAsync(input.username);
if(userDO.IsNullOrEmpty()) if(userDO.IsNullOrEmpty())
throw Oops.Oh("用户不存在"); throw Oops.Oh("用户不存在");

View File

@ -9,6 +9,18 @@
<DocumentationFile>$(MSBuildProjectName).xml</DocumentationFile> <DocumentationFile>$(MSBuildProjectName).xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<COMReference Include="BarTender">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>0</VersionMinor>
<VersionMajor>11</VersionMajor>
<Guid>d58562c1-e51b-11cf-8941-00a024a9083f</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DotNetCore.CAP" Version="8.2.0" /> <PackageReference Include="DotNetCore.CAP" Version="8.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />

View File

@ -4,6 +4,27 @@
<name>Syc.Basic.Web.WMS.Application</name> <name>Syc.Basic.Web.WMS.Application</name>
</assembly> </assembly>
<members> <members>
<member name="M:Syc.Basic.Web.WMS.BarTenderHelper.Print(System.String,System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
<summary>
打印标签
</summary>
<param name="templatePath">模板全路径D://AD盘/新建文件夹/xxxx.btw</param>
<param name="deviceName">打印机名称</param>
<param name="@params">模板变量参数</param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.BarTenderHelper.BoxPrint(Syc.Basic.Web.WMS.Entitys.Box)">
<summary>
打印箱子标签
</summary>
<param name="box"></param>
</member>
<member name="M:Syc.Basic.Web.WMS.BarTenderHelper.SilkPrint(Syc.Basic.Web.WMS.Entitys.Silk)">
<summary>
打印丝锭标签
</summary>
<param name="box"></param>
</member>
<member name="M:Syc.Basic.Web.WMS.DeviceEventHandle.DefaultBalanceEventHandle.Yanr(System.Decimal)"> <member name="M:Syc.Basic.Web.WMS.DeviceEventHandle.DefaultBalanceEventHandle.Yanr(System.Decimal)">
<summary> <summary>
丝锭称重 丝锭称重
@ -76,6 +97,13 @@
<returns></returns> <returns></returns>
<exception cref="T:System.NotImplementedException"></exception> <exception cref="T:System.NotImplementedException"></exception>
</member> </member>
<member name="M:Syc.Basic.Web.WMS.Service.AutoService.AutoLabel(System.Int32)">
<summary>
打印唯一标签
</summary>
<param name="num"></param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.GetBoxList(Syc.Basic.Web.WMS.Dto.BoxInput)"> <member name="M:Syc.Basic.Web.WMS.Service.BoxService.GetBoxList(Syc.Basic.Web.WMS.Dto.BoxInput)">
<summary> <summary>
查询纸箱 查询纸箱
@ -97,6 +125,13 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.AddInsertBox(Syc.Basic.Web.WMS.Dto.BoxDto)">
<summary>
添加纸箱
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.PrintBox(Syc.Basic.Web.WMS.Dto.DelInput)"> <member name="M:Syc.Basic.Web.WMS.Service.BoxService.PrintBox(Syc.Basic.Web.WMS.Dto.DelInput)">
<summary> <summary>
打印纸箱 打印纸箱
@ -131,12 +166,32 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.ClearData">
<summary>
复位
</summary>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.GetTemperature"> <member name="M:Syc.Basic.Web.WMS.Service.BoxService.GetTemperature">
<summary> <summary>
设置热缩机温度 设置热缩机温度
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.BoxsPalletPrint(Syc.Basic.Web.WMS.Dto.FullPalletInput)">
<summary>
整箱码垛打印标签
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.BoxService.SilksPalletPrint(Syc.Basic.Web.WMS.Dto.FullPalletInput)">
<summary>
单品码垛打印标签
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.ProduceService.GetProduceList(Syc.Basic.Web.WMS.Dto.ProduceInput)"> <member name="M:Syc.Basic.Web.WMS.Service.ProduceService.GetProduceList(Syc.Basic.Web.WMS.Dto.ProduceInput)">
<summary> <summary>
查询生产 查询生产
@ -235,6 +290,13 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Syc.Basic.Web.WMS.Service.UserAppService.EditPassword(Syc.Basic.Web.WMS.Dto.UserInput)">
<summary>
修改密码
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Syc.Basic.Web.WMS.Service.UserAppService.Profile"> <member name="M:Syc.Basic.Web.WMS.Service.UserAppService.Profile">
<summary> <summary>
个人信息 个人信息

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Syc.Basic.Web.WMS.Entitys
{
public class AutoLabel:Entity<int>
{
public DateOnly Date { get; set; }
public int Type { get; set; }
public int Sort { get; set; }
public string Mark { get; set; }
}
}

View File

@ -24,15 +24,20 @@ namespace Syc.Basic.Web.WMS.Entitys
//生产批号 //生产批号
public string Lot_No { get; set; } public string Lot_No { get; set; }
//长度 //长度
public double? Length { get; set; } public string? Length { get; set; }
//打包时间 //打包时间
public DateTime? Dom_Time { get; set; } public DateTime? Dom_Time { get; set; }
//生产日期 //生产日期
public DateTime? Exp_Time { get; set; } public DateTime? Exp_Time { get; set; }
//数据类型(0:整箱1码垛)
public int DataType { get; set; }
//描述
public string? Mark { get; set; }
/// <summary> /// <summary>
/// 是否在装箱 /// 是否在装箱
/// </summary> /// </summary>
public bool IsUse { get; set; } = true; public bool IsUse { get; set; } = true;
public int IsDelete { get; set; } public int IsDelete { get; set; }
public DateTime? Create_Time { get; set; }
} }
} }

View File

@ -12,11 +12,12 @@ namespace Syc.Basic.Web.WMS.Entitys
{ {
public string Type { get; set; } public string Type { get; set; }
public string Spec { get; set; } public string Spec { get; set; }
public double Length { get; set; } public string Length { get; set; }
public string Lot_No { get; set; } public string Lot_No { get; set; }
public string Name { get; set; } public string Name { get; set; }
public int? Qty { get; set; } public int? Qty { get; set; }
public string BoxSpec { get; set; } public string BoxSpec { get; set; }
public DateTime? Date { get; set; }
public DateTime? Exp_Time { get; set; } public DateTime? Exp_Time { get; set; }
public int IfUse { get; set; } public int IfUse { get; set; }
public int IsDelete { get; set; } public int IsDelete { get; set; }

View File

@ -19,14 +19,14 @@ namespace Syc.Basic.Web.WMS.Entitys
//净重 //净重
public double? Net_Weight { get; set; } public double? Net_Weight { get; set; }
//长度 //长度
public double? Length { get; set; } public string? Length { get; set; }
//包装时间 //包装时间
public DateTime? Date { get; set; } public DateTime? Date { get; set; }
//生产批号 //生产批号
public string Lot_No { get; set; } public string Lot_No { get; set; }
/// <summary> /// <summary>
/// 0:已扫码待称重 1:已称重待装箱 2:已装箱 /// 0:已扫码待称重 1:已称重待装箱 2:已装箱 3:已码垛
/// </summary> /// </summary>
[ConcurrencyCheck] [ConcurrencyCheck]
public int Status { get; set; } public int Status { get; set; }

View File

@ -180,6 +180,12 @@ namespace Syc.Basic.Web.EntityFrameworkCore
b.ConfigureByConvention(); b.ConfigureByConvention();
}); });
modelBuilder.Entity<AutoLabel>(b =>
{
b.ToTable(nameof(AutoLabel));
b.ConfigureByConvention();
});
return modelBuilder; return modelBuilder;
} }
} }

View File

@ -82,6 +82,8 @@ public class WMSDbContext :
public virtual DbSet<Silk> Silk { get; set; } public virtual DbSet<Silk> Silk { get; set; }
//生产 //生产
public virtual DbSet<Produce> Produce { get; set; } public virtual DbSet<Produce> Produce { get; set; }
//自动生成条码
public virtual DbSet<AutoLabel> AutoLabel { get; set; }
protected override void OnModelCreating(ModelBuilder builder) protected override void OnModelCreating(ModelBuilder builder)

View File

@ -123,18 +123,21 @@ namespace Seyounth.Auto.Hs.Runtime.Balances
weight = Convert.ToDecimal(matchs.Value); weight = Convert.ToDecimal(matchs.Value);
; ;
//logger.LogInformation("YYYYYYYYYYYYYYYYYYYY"); //logger.LogInformation("YYYYYYYYYYYYYYYYYYYY");
//logger.LogInformation($"Received data: {result},weight:{weight},tag:{tag}");
//1.刚开机,重量为 0 //1.刚开机,重量为 0
if (weight <= 0) if (weight <= 0)
{ {
//logger.LogInformation("tag=true");
tag = true; tag = true;
continue; continue;
} }
; //logger.LogInformation($"cccccccc");
if (MonitorWeightStability(_weights, weight)) if (MonitorWeightStability(_weights, weight))
{ {
//logger.LogInformation($"BBBBBBBB");
if (tag) if (tag)
{ {
//logger.LogInformation($"丝锭称接收数据:{result},字节数:{readCount}"); logger.LogInformation($"丝锭称接收数据:{result},字节数:{readCount}");
using (var scope = serviceProvider.CreateAsyncScope()) using (var scope = serviceProvider.CreateAsyncScope())
{ {
var handles = scope.ServiceProvider.GetService<IEnumerable<IBalanceEventHandle>>(); var handles = scope.ServiceProvider.GetService<IEnumerable<IBalanceEventHandle>>();

View File

@ -103,7 +103,7 @@ public class HsAutoRuntime : IHsAutoRuntime
} }
} }
public Task RunAsync() public Task RunAsync()
{ {
var tasks = new List<Task> var tasks = new List<Task>
{ {
@ -135,6 +135,16 @@ public class HsAutoRuntime : IHsAutoRuntime
: $"Printer connection failed. error: {t.Exception?.Message}"); : $"Printer connection failed. error: {t.Exception?.Message}");
}) })
}; };
//while (true)
//{
// foreach (var task in tasks)
// {
// _logger.LogInformation($"{task.Id}:{task.Status}");
// }
// await Task.Delay(1000);
//}
return Task.WhenAll(tasks); return Task.WhenAll(tasks);
} }

View File

@ -6,7 +6,7 @@ public class HsBackgroundService(IHsAutoRuntime hs) : BackgroundService
{ {
public override async Task StartAsync(CancellationToken cancellationToken) public override async Task StartAsync(CancellationToken cancellationToken)
{ {
await hs.RunAsync(); hs.RunAsync();
await base.StartAsync(cancellationToken); await base.StartAsync(cancellationToken);
} }

View File

@ -55,6 +55,16 @@ public interface IPlcService
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task ClearTop(); Task ClearTop();
/// <summary>
/// 复位
/// </summary>
/// <returns></returns>
Task ClearData();
/// <summary>
/// 打印完成
/// </summary>
/// <returns></returns>
Task PrintEnd();
/// <summary> /// <summary>
/// 外箱标签打印完成 /// 外箱标签打印完成

View File

@ -8,7 +8,7 @@ public class PlcService : IPlcService
private readonly ILogger<PlcService> _logger; private readonly ILogger<PlcService> _logger;
private readonly IPlc _plc; private readonly IPlc _plc;
public PlcService(IPlc plc,ILogger<PlcService> logger) public PlcService(IPlc plc, ILogger<PlcService> logger)
{ {
_logger = logger; _logger = logger;
_plc = plc; _plc = plc;
@ -56,14 +56,14 @@ public class PlcService : IPlcService
public async Task<bool> IsTop() public async Task<bool> IsTop()
{ {
var arr = await _plc.ReadAsync<short>("1002", 1); var arr = await _plc.ReadAsync<short>("1002", 1);
//_logger.LogInformation($"是否顶升寄存器值:{arr?.FirstOrDefault()}"); //_logger.LogInformation($"是否顶升寄存器值:{arr?.FirstOrDefault()}");
return arr?.FirstOrDefault() == 1; return arr?.FirstOrDefault() == 1;
} }
public async Task BoxTagPrintDoneAsync(short value) public async Task BoxTagPrintDoneAsync(short value)
{ {
await _plc.WriteAsync<short>("1102",value); await _plc.WriteAsync<short>("1102", value);
_logger.LogInformation("已回复打印完成信号"); _logger.LogInformation("已回复打印完成信号");
} }
@ -74,6 +74,18 @@ public class PlcService : IPlcService
public async Task ClearTop() public async Task ClearTop()
{ {
await _plc.WriteAsync("1002",0); await _plc.WriteAsync("1002", 0);
}
public async Task PrintEnd()
{
await _plc.WriteAsync<short>("1101", 1);
_logger.LogInformation("已向1101写入1发送打印完成信号");
}
public async Task ClearData()
{
await _plc.WriteAsync<short>("1103", 1);
_logger.LogInformation("已向1103写入1发送复位信号");
} }
} }

View File

@ -54,46 +54,47 @@ namespace Seyounth.Auto.Hs.Runtime.Scanner
/// <returns></returns> /// <returns></returns>
public async Task ConnectAsync() public async Task ConnectAsync()
{ {
while (true) logger.LogInformation("箱扫码枪已弃用不连接");
{ //while (true)
if (_tcp is not null) //{
{ // if (_tcp is not null)
try // {
{ // try
_tcp.Dispose(); // {
} // _tcp.Dispose();
catch (Exception ex) // }
{ // catch (Exception ex)
/* // {
* // /*
*/ // * 忽略释放异常
} // */
// }
} // }
_tcp = new TcpClient(); // _tcp = new TcpClient();
try // try
{ // {
await _tcp.ConnectAsync(new IPEndPoint(IPAddress.Parse(DeviceConnectConfig.IP), DeviceConnectConfig.Port)); // await _tcp.ConnectAsync(new IPEndPoint(IPAddress.Parse(DeviceConnectConfig.IP), DeviceConnectConfig.Port));
if (_stream is not null) // if (_stream is not null)
_stream.Dispose(); // _stream.Dispose();
_stream = _tcp.GetStream(); // _stream = _tcp.GetStream();
logger.LogInformation("箱扫码枪连接成功,开始接收数据"); // logger.LogInformation("箱扫码枪连接成功,开始接收数据");
_receiveDataCancellationToken?.Cancel(); // _receiveDataCancellationToken?.Cancel();
_receiveDataCancellationToken = new CancellationTokenSource(); // _receiveDataCancellationToken = new CancellationTokenSource();
ReceiveData(_receiveDataCancellationToken.Token); // ReceiveData(_receiveDataCancellationToken.Token);
break; // break;
} // }
catch (Exception ex) when (ex.GetBaseException() is OperationCanceledException oce || ex.GetBaseException() is SocketException socketException) // catch (Exception ex) when (ex.GetBaseException() is OperationCanceledException oce || ex.GetBaseException() is SocketException socketException)
{ // {
await Task.Delay(1000 * 5); // await Task.Delay(1000 * 5);
logger.LogError(ex.GetBaseException(), "箱扫码枪连接失败,尝试重连中"); // logger.LogError(ex.GetBaseException(), "箱扫码枪连接失败,尝试重连中");
continue; // continue;
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
logger.LogError(ex, "箱扫码枪连接失败"); // logger.LogError(ex, "箱扫码枪连接失败");
} // }
} //}
} }
/// <summary> /// <summary>

View File

@ -48,46 +48,47 @@ namespace Seyounth.Auto.Hs.Runtime.Scanner
/// <returns></returns> /// <returns></returns>
public async Task ConnectAsync() public async Task ConnectAsync()
{ {
while (true) logger.LogInformation("丝锭扫码枪已弃用");
{ //while (true)
if (_tcp is not null) //{
{ // if (_tcp is not null)
try // {
{ // try
_tcp.Dispose(); // {
} // _tcp.Dispose();
catch (Exception ex) // }
{ // catch (Exception ex)
/* // {
* // /*
*/ // * 忽略释放异常
} // */
// }
} // }
_tcp = new TcpClient(); // _tcp = new TcpClient();
try // try
{ // {
await _tcp.ConnectAsync(new IPEndPoint(IPAddress.Parse(DeviceConnectConfig.IP), DeviceConnectConfig.Port)); // await _tcp.ConnectAsync(new IPEndPoint(IPAddress.Parse(DeviceConnectConfig.IP), DeviceConnectConfig.Port));
if (_stream is not null) // if (_stream is not null)
_stream.Dispose(); // _stream.Dispose();
_stream = _tcp.GetStream(); // _stream = _tcp.GetStream();
logger.LogInformation("人工扫码枪连接成功,开始接收数据"); // logger.LogInformation("人工扫码枪连接成功,开始接收数据");
_receiveDataCancellationToken?.Cancel(); // _receiveDataCancellationToken?.Cancel();
_receiveDataCancellationToken = new CancellationTokenSource(); // _receiveDataCancellationToken = new CancellationTokenSource();
ReceiveData(_receiveDataCancellationToken.Token); // ReceiveData(_receiveDataCancellationToken.Token);
break; // break;
} // }
catch (Exception ex) when (ex.GetBaseException() is OperationCanceledException oce || ex.GetBaseException() is SocketException socketException) // catch (Exception ex) when (ex.GetBaseException() is OperationCanceledException oce || ex.GetBaseException() is SocketException socketException)
{ // {
await Task.Delay(1000 * 5); // await Task.Delay(1000 * 5);
logger.LogError(ex.GetBaseException(), "人工扫码枪连接失败,尝试重连中"); // logger.LogError(ex.GetBaseException(), "人工扫码枪连接失败,尝试重连中");
continue; // continue;
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
logger.LogError(ex, "人工扫码枪连接失败"); // logger.LogError(ex, "人工扫码枪连接失败");
} // }
} //}
} }
/// <summary> /// <summary>

View File

@ -6,6 +6,18 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<COMReference Include="BarTender">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>0</VersionMinor>
<VersionMajor>11</VersionMajor>
<Guid>d58562c1-e51b-11cf-8941-00a024a9083f</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<!--<ItemGroup> <!--<ItemGroup>
<Compile Remove="Handlers\**" /> <Compile Remove="Handlers\**" />
<EmbeddedResource Remove="Handlers\**" /> <EmbeddedResource Remove="Handlers\**" />

132
新建 文本文档.txt Normal file
View File

@ -0,0 +1,132 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34616.47
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Share", "Share", "{156E45DF-D59B-4EA0-9BC0-77692BD91E1E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{685CBDEC-BE8B-4B23-8EDA-42C0B312322F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "apps", "apps", "{EB48C776-7740-4A71-8E82-B7AE9CFEB7C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.HttpApi.Host", "apps\Syc.Basic.Web.WMS.HttpApi.Host\Syc.Basic.Web.WMS.HttpApi.Host.csproj", "{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.Application", "services\Syc.Basic.Web.WMS.Application\Syc.Basic.Web.WMS.Application.csproj", "{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.Application.Contracts", "services\Syc.Basic.Web.WMS.Application.Contracts\Syc.Basic.Web.WMS.Application.Contracts.csproj", "{A454C322-58E6-4FEB-B709-5E277C7E71B7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.Domain", "services\Syc.Basic.Web.WMS.Domain\Syc.Basic.Web.WMS.Domain.csproj", "{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.Domain.Shared", "services\Syc.Basic.Web.WMS.Domain.Shared\Syc.Basic.Web.WMS.Domain.Shared.csproj", "{7A014245-A193-435C-B1BA-2666EBD86CCA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.EntityFrameworkCore", "services\Syc.Basic.Web.WMS.EntityFrameworkCore\Syc.Basic.Web.WMS.EntityFrameworkCore.csproj", "{3B487959-6744-4784-B5F8-F91012F37C70}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.HttpApi", "services\Syc.Basic.Web.WMS.HttpApi\Syc.Basic.Web.WMS.HttpApi.csproj", "{68ECAB75-580B-425E-9D84-832E6F6F8BCD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Basic.Web.WMS.HttpApi.Client", "services\Syc.Basic.Web.WMS.HttpApi.Client\Syc.Basic.Web.WMS.HttpApi.Client.csproj", "{A12CE372-B83A-43A1-86CB-CEAF4B2C4154}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Seyounth.Auto.Hs.Runtime", "share\Seyounth.Auto.Hs.Runtime\Seyounth.Auto.Hs.Runtime.csproj", "{0AA64147-2900-4336-B8B7-B2F385DAD4A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Seyounth.Auto.Plc", "share\Seyounth.Auto.Plc\Seyounth.Auto.Plc.csproj", "{ECA65280-9549-40C5-9876-21D111D7C811}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Abp.Application.Contracts", "share\Syc.Abp.Application.Contracts\Syc.Abp.Application.Contracts.csproj", "{3881133B-BE58-46FA-978F-558A53004984}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Abp.Caching", "share\Syc.Abp.Caching\Syc.Abp.Caching.csproj", "{EB8E5222-4E85-4EBD-9894-33238CE89662}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Abp.Domain", "share\Syc.Abp.Domain\Syc.Abp.Domain.csproj", "{E0ACC792-32CF-4698-A2DF-5697BD4395F0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Abp.HttpApi.Client", "share\Syc.Abp.HttpApi.Client\Syc.Abp.HttpApi.Client.csproj", "{68D70001-A1DA-4D99-A828-98346F42C435}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Syc.Authorize.JwtBearer", "share\Syc.Authorize.JwtBearer\Syc.Authorize.JwtBearer.csproj", "{D5714C79-0651-4BAB-80D2-65D73B82E2F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8}.Release|Any CPU.Build.0 = Release|Any CPU
{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2}.Release|Any CPU.Build.0 = Release|Any CPU
{A454C322-58E6-4FEB-B709-5E277C7E71B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A454C322-58E6-4FEB-B709-5E277C7E71B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A454C322-58E6-4FEB-B709-5E277C7E71B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A454C322-58E6-4FEB-B709-5E277C7E71B7}.Release|Any CPU.Build.0 = Release|Any CPU
{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB}.Release|Any CPU.Build.0 = Release|Any CPU
{7A014245-A193-435C-B1BA-2666EBD86CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A014245-A193-435C-B1BA-2666EBD86CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A014245-A193-435C-B1BA-2666EBD86CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A014245-A193-435C-B1BA-2666EBD86CCA}.Release|Any CPU.Build.0 = Release|Any CPU
{3B487959-6744-4784-B5F8-F91012F37C70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B487959-6744-4784-B5F8-F91012F37C70}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B487959-6744-4784-B5F8-F91012F37C70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B487959-6744-4784-B5F8-F91012F37C70}.Release|Any CPU.Build.0 = Release|Any CPU
{68ECAB75-580B-425E-9D84-832E6F6F8BCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68ECAB75-580B-425E-9D84-832E6F6F8BCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68ECAB75-580B-425E-9D84-832E6F6F8BCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68ECAB75-580B-425E-9D84-832E6F6F8BCD}.Release|Any CPU.Build.0 = Release|Any CPU
{A12CE372-B83A-43A1-86CB-CEAF4B2C4154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A12CE372-B83A-43A1-86CB-CEAF4B2C4154}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A12CE372-B83A-43A1-86CB-CEAF4B2C4154}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A12CE372-B83A-43A1-86CB-CEAF4B2C4154}.Release|Any CPU.Build.0 = Release|Any CPU
{0AA64147-2900-4336-B8B7-B2F385DAD4A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AA64147-2900-4336-B8B7-B2F385DAD4A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AA64147-2900-4336-B8B7-B2F385DAD4A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AA64147-2900-4336-B8B7-B2F385DAD4A2}.Release|Any CPU.Build.0 = Release|Any CPU
{ECA65280-9549-40C5-9876-21D111D7C811}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECA65280-9549-40C5-9876-21D111D7C811}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECA65280-9549-40C5-9876-21D111D7C811}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECA65280-9549-40C5-9876-21D111D7C811}.Release|Any CPU.Build.0 = Release|Any CPU
{3881133B-BE58-46FA-978F-558A53004984}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3881133B-BE58-46FA-978F-558A53004984}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3881133B-BE58-46FA-978F-558A53004984}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3881133B-BE58-46FA-978F-558A53004984}.Release|Any CPU.Build.0 = Release|Any CPU
{EB8E5222-4E85-4EBD-9894-33238CE89662}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB8E5222-4E85-4EBD-9894-33238CE89662}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB8E5222-4E85-4EBD-9894-33238CE89662}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB8E5222-4E85-4EBD-9894-33238CE89662}.Release|Any CPU.Build.0 = Release|Any CPU
{E0ACC792-32CF-4698-A2DF-5697BD4395F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0ACC792-32CF-4698-A2DF-5697BD4395F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0ACC792-32CF-4698-A2DF-5697BD4395F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0ACC792-32CF-4698-A2DF-5697BD4395F0}.Release|Any CPU.Build.0 = Release|Any CPU
{68D70001-A1DA-4D99-A828-98346F42C435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68D70001-A1DA-4D99-A828-98346F42C435}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68D70001-A1DA-4D99-A828-98346F42C435}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68D70001-A1DA-4D99-A828-98346F42C435}.Release|Any CPU.Build.0 = Release|Any CPU
{D5714C79-0651-4BAB-80D2-65D73B82E2F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5714C79-0651-4BAB-80D2-65D73B82E2F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5714C79-0651-4BAB-80D2-65D73B82E2F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5714C79-0651-4BAB-80D2-65D73B82E2F1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E3F72AF0-2B74-46B9-837A-A5C1417CFBF8} = {EB48C776-7740-4A71-8E82-B7AE9CFEB7C3}
{3137A5F4-375A-4FB0-AA4B-7C0380A48BB2} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{A454C322-58E6-4FEB-B709-5E277C7E71B7} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{B1BFBB4E-0213-4D41-A05B-43C276F9CDAB} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{7A014245-A193-435C-B1BA-2666EBD86CCA} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{3B487959-6744-4784-B5F8-F91012F37C70} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{68ECAB75-580B-425E-9D84-832E6F6F8BCD} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{A12CE372-B83A-43A1-86CB-CEAF4B2C4154} = {685CBDEC-BE8B-4B23-8EDA-42C0B312322F}
{0AA64147-2900-4336-B8B7-B2F385DAD4A2} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{ECA65280-9549-40C5-9876-21D111D7C811} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{3881133B-BE58-46FA-978F-558A53004984} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{EB8E5222-4E85-4EBD-9894-33238CE89662} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{E0ACC792-32CF-4698-A2DF-5697BD4395F0} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{68D70001-A1DA-4D99-A828-98346F42C435} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
{D5714C79-0651-4BAB-80D2-65D73B82E2F1} = {156E45DF-D59B-4EA0-9BC0-77692BD91E1E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {45CD52A2-9BCF-4BCE-BFE4-6512506C0D1F}
EndGlobalSection
EndGlobal