Browse Source

提交

Agv分支2024-11-19
赵新宇 5 months ago
parent
commit
6a87fe2606
  1. 7
      InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs
  2. 30
      InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs
  3. 24
      InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceOptions.cs
  4. 2
      InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs
  5. 14
      InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json
  6. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs
  7. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobAccountService.cs
  8. 98
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs
  9. 29
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs
  10. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs
  11. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
  12. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs
  13. 18
      build/src/docker/publish/conf/settings/appsettings.Development.json

7
InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs

@ -1,4 +1,6 @@
using Volo.Abp.Account;
using Dy_Exchange.Z_Business;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Account;
using Volo.Abp.AutoMapper;
using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity;
@ -23,9 +25,12 @@ public class Dy_ExchangeApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<Dy_ExchangeApplicationModule>();
});
Configure<DataExchangeInterfaceOptions>(configuration.GetSection("DataExchangeInterfaceOptions"));
}
}

30
InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs

@ -6,6 +6,7 @@ using System.Net.Http;
using System.Net.NetworkInformation;
using System.Security.Policy;
using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using Dy_Exchange.Enums;
@ -13,6 +14,8 @@ using Dy_Exchange.Permissions;
using Dy_Exchange.Z_Business.Dtos;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using NPOI.SS.Formula.Functions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -33,6 +36,7 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
protected override string UpdatePolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Update;
protected override string DeletePolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Delete;
public string wmsCode = "WMS";
public string cmdStartPath = @"D:\Proc_DyNevWms\publish\start.cmd";
public string cmdClosePath1 = @"D:\Proc_DyNevWms\publish\stop.cmd";
@ -40,10 +44,17 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
public string wmsUrl = "http://10.164.233.5:60085/swagger/AbpTenant/swagger.json";
private readonly IDataExchangeInterfaceConfigRepository _repository;
private readonly IOptions<DataExchangeInterfaceOptions> _options;
public DataExchangeInterfaceConfigAppService(IDataExchangeInterfaceConfigRepository repository) : base(repository)
public DataExchangeInterfaceConfigAppService(IDataExchangeInterfaceConfigRepository repository, IOptions<DataExchangeInterfaceOptions> options) : base(repository)
{
_repository = repository;
_options = options;
}
[HttpPost("CheckWmsStatusAsync")]
@ -55,6 +66,7 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
public static bool IsPortInUse(int port)
{
bool inUse = false;
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
@ -117,7 +129,7 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
public async Task<bool> CloseWmsAsync()
{
var list=await _repository.GetListAsync().ConfigureAwait(false);
var removeWmsCodeList=list.Where(p => p.Code != wmsCode).ToList();
var removeWmsCodeList=list.Where(p => p.Code != _options.Value.WmsCode).ToList();
if (removeWmsCodeList.Any(p => p.Status == EnumStatus.Running||p.Active==true))
{
throw new UserFriendlyException($"有未关闭的接口程序{removeWmsCodeList.First().Code}无法关闭WMS");
@ -131,15 +143,15 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
throw new UserFriendlyException($"接口刚刚关闭,请5分钟后再关闭WMS。最后一次关闭时间相差{Math.Abs((int)difference.TotalMinutes)}分钟");
}
var wmsConfig=await _repository.FindAsync(p => p.Code == wmsCode).ConfigureAwait(false);
var wmsConfig=await _repository.FindAsync(p => p.Code == _options.Value.WmsCode).ConfigureAwait(false);
if (wmsConfig == null)
{
throw new UserFriendlyException("未找到WMS配置项目");
}
var stop1= ExecuteBatFile(cmdClosePath1);
var stop1= ExecuteBatFile(_options.Value.CmdClosePath1);
Thread.Sleep(2000); // 休眠2秒
var stop2 = ExecuteBatFile(cmdClosePath2);
var stop2 = ExecuteBatFile(_options.Value.CmdClosePath2);
return true;
}
@ -157,9 +169,9 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
[HttpPut("Base/Update")]
public override async Task<DataExchangeInterfaceConfigDto> UpdateAsync(Guid id, CreateUpdateDataExchangeInterfaceConfigDto input)
{
if (input.Code != wmsCode&&input.Active==true)
if (input.Code != _options.Value.WmsCode&&input.Active==true)
{
bool isPageLoaded = await IsPageLoadedSuccessfullyAsync(wmsUrl).ConfigureAwait(false);
bool isPageLoaded = await IsPageLoadedSuccessfullyAsync(_options.Value.WmsUrl).ConfigureAwait(false);
if (!isPageLoaded)
{
throw new UserFriendlyException("WMS未启动成功,请稍后再启动接口");
@ -167,12 +179,12 @@ public class DataExchangeInterfaceConfigAppService : ZbxBase<DataExchangeInterfa
}
//开启wms
if (input.Code == wmsCode&&input.Active==true)
if (input.Code == _options.Value.WmsCode&&input.Active==true)
{
input.Status = EnumStatus.Running;
await StartWmsAsync().ConfigureAwait(false);
}
if(input.Code == wmsCode && input.Active == false)
if(input.Code == _options.Value.WmsCode && input.Active == false)
{
input.Status = EnumStatus.Closed;
await CloseWmsAsync().ConfigureAwait(false);

24
InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceOptions.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dy_Exchange.Z_Business
{
public class DataExchangeInterfaceOptions
{
//public string wmsCode = "WMS";
//public string cmdStartPath = @"D:\Proc_DyNevWms\publish\start.cmd";
//public string cmdClosePath1 = @"D:\Proc_DyNevWms\publish\stop.cmd";
//public string cmdClosePath2 = @"D:\Proc_DyNevWms\publish\TaskKill.exe";
//public string wmsUrl = "http://10.164.233.5:60085/swagger/AbpTenant/swagger.json";
public string WmsCode { get; set; }
public string CmdStartPath { get; set; }
public string CmdClosePath1 { get; set; }
public string CmdClosePath2 { get; set; }
public string WmsUrl { get; set; }
}
}

2
InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs

@ -57,6 +57,8 @@ public class Dy_ExchangeHttpApiHostModule : AbpModule
ConfigureDistributedLocking(context, configuration);
ConfigureCors(context, configuration);
ConfigureSwaggerServices(context, configuration);
}
private void ConfigureCache(IConfiguration configuration)

14
InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json

@ -13,6 +13,9 @@
"Redis": {
"Configuration": "127.0.0.1"
},
"AuthServer": {
"Authority": "http://192.168.1.75:60080",
"RequireHttpsMetadata": "false",
@ -22,5 +25,14 @@
"DefaultPassPhrase": "ybgU8NieQZNjguXe"
},
"AlwaysAllowAuthorization": "true",
"urls": "http://192.168.1.75:60081"
"urls": "http://192.168.1.75:60081",
"DataExchangeInterfaceOptions": {
"WmsCode": "WMS",
"CmdStartPath": "D:\\Proc_DyNevWms\\publish\\start.cmd",
"CmdClosePath1": "D:\\Proc_DyNevWms\\publish\\stop.cmd",
"CmdClosePath2": "D:\\Proc_DyNevWms\\publish\\TaskKill.exe",
"WmsUrl": "http://10.164.233.5:60085/swagger/AbpTenant/swagger.json"
}
}

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/DTOS/AgvDto.cs

@ -17,6 +17,20 @@ public class AgvRequestHK
public List<AgvRequestHKDetail> Data { set; get; }
}
/// <summary>
/// 海康调闻荫入参数
/// </summary>
public class AgvRequestOnlyJobHK
{
//[Display(Name = "请求编号")]
//public string ReqCode { set; get; }
[Display(Name = "明细")]
public List<AgvRequestHKDetail> Data { set; get; }
}
/// <summary>
/// 海康调闻荫入参明细
/// </summary>

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobInputService.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/AgvJobs/IAgvJobAccountService.cs

@ -7,10 +7,10 @@ using Volo.Abp;
using Volo.Abp.Application.Services;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface AgvJobOutputService: IApplicationService
public interface IAgvJobAccountService: IApplicationService
{
Task<AgvResultObject> OutTaskAsync(AgvRequest request);
Task<AgvResultObject> AccountOutOrderAsync(AgvRequestOnlyJobHK request);
}

98
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobAccountService.cs

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices;
[AllowAnonymous]
[Route($"{StoreConsts.RootPath}agv-job-Account")]
public class AgvJobAccountService : ApplicationService, IAgvJobAccountService
{
private IAssembleIssueJobAppService _assembleIssueJobAppService;
private ICoatingIssueJobAppService _coatingIssueJobAppService;
private IInjectionIssueJobAppService _injectionIssueJobAppService;
private IKittingIssueJobAppService _kittingIssueJobAppService;
private ISparePartIssueJobAppService _sparePartIssueJobAppService;
public AgvJobAccountService(
IAssembleIssueJobAppService assembleIssueJobAppService,
ICoatingIssueJobAppService coatingIssueJobAppService,
IInjectionIssueJobAppService injectionIssueJobAppService,
IKittingIssueJobAppService kittingIssueJobAppService,
ISparePartIssueJobAppService sparePartIssueJobAppService
)
{
_assembleIssueJobAppService = assembleIssueJobAppService;
_coatingIssueJobAppService= coatingIssueJobAppService;
_injectionIssueJobAppService= injectionIssueJobAppService;
_kittingIssueJobAppService = kittingIssueJobAppService;
_sparePartIssueJobAppService= sparePartIssueJobAppService;
}
public async Task<AgvResultObject> AccountOutOrderAsync(AgvRequestOnlyJobHK request)
{
var res=new AgvResultObject();
res.Code = "0";
foreach (var itm in request.Data)
{
switch (itm.OrderType)
{
case "1":
var assemblejob= new AssembleIssueJobDTO();
foreach (var detail in request.Data)
{
}
var assemb=await _assembleIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false);
await _assembleIssueJobAppService.CompleteAsync(assemb.Id).ConfigureAwait(false);
res.ReqCode = assemb.AssembleRequestNumber;
res.Message = "OK";
break;
case "2":
var coating = await _coatingIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false);
await _coatingIssueJobAppService.CompleteAsync(coating.Id).ConfigureAwait(false);
break;
case "3":
var injection = await _injectionIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false);
await _injectionIssueJobAppService.CompleteAsync(injection.Id).ConfigureAwait(false);
break;
case "4":
var kitting = await _kittingIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false);
await _kittingIssueJobAppService.CompleteAsync(kitting.Id).ConfigureAwait(false);
break;
case "5":
var sparePart = await _sparePartIssueJobAppService.GetByNumberAsync(itm.OrderNum).ConfigureAwait(false);
await _sparePartIssueJobAppService.CompleteAsync(sparePart.Id).ConfigureAwait(false);
break;
}
}
}
}

29
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AgvJobs/AgvJobInputService.cs

@ -1,29 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs.AgvServices;
[AllowAnonymous]
[Route($"{StoreConsts.RootPath}agv-job-out")]
public class AgvJobInputService:ApplicationService
{
}

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs

@ -911,19 +911,22 @@ public class AssembleIssueJobAppService
assembleIssueJobDetailDto.Status, assembleIssueJobDetailDto.HandledToLot,
handledToQty).ConfigureAwait(false);
}
/// <summary>
/// 调用AGV
/// 调用AgvOutPut出库
/// </summary>
/// <param name="job"></param>
/// <returns></returns>
private async Task<AgvResultObject> Completed(AssembleIssueJobDTO job)
private async Task<AgvResultObject> InvokeAgvOutput(AssembleIssueJobDTO job)
{
var assemble = job;
var first = assemble.Details.FirstOrDefault();
var first = job.Details.FirstOrDefault();
var requst = new AgvRequest();
requst.MatCode = first.ItemCode;
requst.MatQty = first.HandledToQty;
requst.OrderNum = assemble.Number;
requst.OrderNum = job.Number;
requst.OrderType = "2";
return await _agvOutJob.OutPutTaskAsync(requst).ConfigureAwait(false);
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs

@ -66,6 +66,7 @@ public class KittingIssueJobAppService
_options = options;
_transferLibRequestAppService = transferLibRequestAppService;
_currentUser = currentUser;
_agvOutJob = agvOutJob;
}
[HttpPost("get-by-number-2")]

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/SparePartIssueJobs/SparePartIssueJobAppService.cs

@ -49,7 +49,7 @@ public class SparePartIssueJobAppService
LazyServiceProvider.LazyGetRequiredService<ISparePartIssueRequestAppService>();
public SparePartIssueJobAppService(
IAgvJobOutputService _agvOutJob,
IAgvJobOutputService agvOutJob,
ISparePartIssueJobRepository repository, ISparePartIssueJobManager sparePartIssueJobManager,
ILocationAppService locationAppService,
ISparePartIssueNoteAppService sparePartIssueNoteAppService, IExpectOutAppService expectOutAppService
@ -65,6 +65,7 @@ public class SparePartIssueJobAppService
_options = options;
_transferLibRequestAppService = transferLibRequestAppService;
_currentUser = currentUser;
_agvOutJob = agvOutJob;
}
[HttpPost("get-by-number-2")]

18
build/src/docker/publish/conf/settings/appsettings.Development.json

@ -1,7 +1,6 @@
{
"AlwaysAllowAuthorization": "true",
"RestoOptions":
{
"RestoOptions": {
"Address": "http://7e42682n64.goho.co:21171/",
//
@ -14,6 +13,21 @@
},
"AgvOptions": {
"Address": "http://dev.ccwin-in.com:60084/",
//
"UserName": "",
//
"Password": "",
//
"Token": "",
"Path": "Cargostate/pushOutTask4FW"
},
"App": {

Loading…
Cancel
Save