工单排序

This commit is contained in:
qianhao.xu 2025-03-05 08:59:58 +08:00
parent f67ba347e8
commit 34e5a51a6f
11 changed files with 346 additions and 26 deletions

View File

@ -11,7 +11,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
/// <summary>
/// 生产工单
/// </summary>
[Verify]
[Route("bydlms/BydWorkorder")]
public class BydWorkorderController : BaseController
{
@ -25,11 +25,51 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
_BydWorkorderService = BydWorkorderService;
}
/// <summary>
/// BYD-MES传入生产工单
/// </summary>
/// <returns></returns>
[HttpPost("accept_BYD_MES_wrokorder_list")]
[AllowAnonymousAttribute]
[Log(Title = "BYD-MES传入生产工单", BusinessType = BusinessType.INSERT)]
public IActionResult BatchAddBydWorkorder([FromBody] QueryParam parm)
{
try
{
var modalList = parm.Data.Adapt<List<BydWorkorder>>();
var response = _BydWorkorderService.AddBydWorkorderList(modalList);
Dictionary<string, string> result = new Dictionary<string, string>();
if (response)
{
result.Add("code", "000000");
result.Add("mesg", "操作成功");
return Ok(result); // 返回成功的响应
}
else
{
result.Add("code", "999999");
result.Add("mesg", "传入数据为空");
return BadRequest(result); // 返回失败的响应
}
}
catch (Exception ex)
{
Dictionary<string, string> errorResult = new Dictionary<string, string>
{
{ "code", "999999" },
{ "mesg", ex.Message }
};
return StatusCode(500, errorResult); // 返回异常响应
}
}
/// <summary>
/// 查询生产工单列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[Verify]
[HttpGet("list")]
[ActionPermissionFilter(Permission = "bydworkorder:list")]
public IActionResult QueryBydWorkorder([FromQuery] BydWorkorderQueryDto parm)
@ -46,6 +86,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
/// <returns></returns>
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "bydworkorder:query")]
[Verify]
public IActionResult GetBydWorkorder(string Id)
{
var response = _BydWorkorderService.GetInfo(Id);
@ -61,6 +102,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
[HttpPost]
[ActionPermissionFilter(Permission = "bydworkorder:add")]
[Log(Title = "生产工单", BusinessType = BusinessType.INSERT)]
[Verify]
public IActionResult AddBydWorkorder([FromBody] BydWorkorderDto parm)
{
var modal = parm.Adapt<BydWorkorder>().ToCreate(HttpContext);
@ -70,27 +112,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
return SUCCESS(response);
}
/// <summary>
/// 批量添加生产工单
/// </summary>
/// <returns></returns>
[HttpPost("BatchAddBydWorkorder")]
[AllowAnonymous]
[Log(Title = "批量添加生产工单", BusinessType = BusinessType.INSERT)]
public IActionResult BatchAddBydWorkorder([FromBody] List<BydWorkorderDto> parm)
{
try
{
var modal = parm.Adapt<BydWorkorder>().ToCreate(HttpContext);
var response = _BydWorkorderService.AddBydWorkorder(modal);
return ToResponse(new ApiResult(000000,"ok", response));
}
catch (Exception ex)
{
return ToResponse(new ApiResult(500, "error", ex.Message));
}
}
/// <summary>
/// 更新生产工单
@ -99,6 +121,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
[HttpPut]
[ActionPermissionFilter(Permission = "bydworkorder:edit")]
[Log(Title = "生产工单", BusinessType = BusinessType.UPDATE)]
[Verify]
public IActionResult UpdateBydWorkorder([FromBody] BydWorkorderDto parm)
{
var modal = parm.Adapt<BydWorkorder>().ToUpdate(HttpContext);
@ -114,6 +137,7 @@ namespace DOAN.Admin.WebApi.Controllers.Bydlms
[HttpPost("delete/{ids}")]
[ActionPermissionFilter(Permission = "bydworkorder:delete")]
[Log(Title = "生产工单", BusinessType = BusinessType.DELETE)]
[Verify]
public IActionResult DeleteBydWorkorder([FromRoute]string ids)
{
var idArr = Tools.SplitAndConvert<string>(ids);

View File

@ -52,6 +52,7 @@ builder.Services.AddAppService();
builder.Services.AddTaskSchedulers();
//请求大小限制
builder.Services.AddRequestLimit(builder.Configuration);
//builder.Services.AddHostedService<MyBackgroundService>();
//注册REDIS 服务
var openRedis = builder.Configuration["RedisServer:open"];

View File

@ -14,8 +14,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ProjectGuid>e5497bb4-b0c1-4794-9fae-163f626ec399</ProjectGuid>
<SelfContained>false</SelfContained>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Model.Bydlms
{
/// <summary>
/// 产线MES预警消息记录
/// </summary>
[SugarTable("byd_line")]
public class BydLine
{
/// <summary>
/// 主键
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 线code
/// </summary>
[SugarColumn(ColumnName = "line_code")]
public string LineCode { get; set; }
/// <summary>
/// 线name
/// </summary>
[SugarColumn(ColumnName = "line_name")]
public string LineName { get; set; }
/// <summary>
/// 创建人
/// </summary>
[SugarColumn(ColumnName = "created_by")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "created_time")]
public DateTime? CreatedTime { get; set; }
}
}

View File

@ -157,5 +157,17 @@ namespace DOAN.Model.Bydlms
[SugarColumn(ColumnName = "uPDATED_TIME")]
public DateTime? UpdatedTime { get; set; }
/// <summary>
/// 是否已经上传MES
/// </summary>
[SugarColumn(ColumnName = "isupload")]
public int Isupload { get; set; }
/// <summary>
/// 同日同线排序25030509001
/// </summary>
[SugarColumn(ColumnName = "sort")]
public int Sort { get; set; }
}
}

View File

@ -0,0 +1,150 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Model.Bydlms
{
public class DataUpload
{
public string serviceId { get; set; }
public string factoryCode { get; set; }
public MachineInfo[] data { get; set; }
}
/// <summary>
/// 生产信息参数
/// </summary>
public class MachineInfo
{
/// <summary>
/// 产线编码
/// </summary>
public string lineCode { get; set; }
/// <summary>
/// 设备编码
/// </summary>
public string machineCode { get; set; }
/// <summary>
/// 产品编号
/// </summary>
public string materialCode { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string materialName { get; set; }
/// <summary>
/// 产品版本
/// </summary>
public string materialVersion { get; set; }
/// <summary>
/// SN编码
/// </summary>
public string snNumber { get; set; }
/// <summary>
/// 参数名称
/// </summary>
public string paramName { get; set; }
/// <summary>
/// 参数编号
/// </summary>
public string paramCode { get; set; }
/// <summary>
/// 参数地址
/// </summary>
public string paramAddress { get; set; }
/// <summary>
/// 标准值
/// </summary>
public string standardValue { get; set; }
/// <summary>
/// 实际值
/// </summary>
public string realValue { get; set; }
/// <summary>
/// 参数范围下限
/// </summary>
public double paramRange1 { get; set; }
/// <summary>
/// 参数范围上限
/// </summary>
public double paramRange2 { get; set; }
/// <summary>
/// 参数时间
/// </summary>
public DateTime paramTime { get; set; }
/// <summary>
/// 数采设备编码
/// </summary>
public string acquisitCode { get; set; }
/// <summary>
/// 工位编码
/// </summary>
public string stationCode { get; set; }
/// <summary>
/// 检测结果标志PASS通过FAIL:不通过)
/// </summary>
public string resultFlag { get; set; }
/// <summary>
/// 附件类型
/// </summary>
public string resourceType { get; set; }
/// <summary>
/// 附件路径
/// </summary>
public string resourceValue { get; set; }
/// <summary>
/// 生产详细参数信息
/// </summary>
public ParamInfo[] data { get; set; }
}
public class ParamInfo
{
/// <summary>
/// 参数名称
/// </summary>
public string paramName { get; set; }
/// <summary>
/// 参数编号
/// </summary>
public string paramCode { get; set; }
/// <summary>
/// 标准值
/// </summary>
public string standardValue { get; set; }
/// <summary>
/// 实际值
/// </summary>
public string realValue { get; set; }
/// <summary>
/// 参数范围下限
/// </summary>
public double paramRange1 { get; set; }
/// <summary>
/// 参数范围上限
/// </summary>
public double paramRange2 { get; set; }
/// <summary>
/// 参数时间
/// </summary>
public DateTime paramTime { get; set; }
/// <summary>
/// 判定结果1是合格0是不合格
/// </summary>
public int checkResult { get; set; }
}
}

View File

@ -8,12 +8,20 @@ namespace DOAN.Model.Bydlms.Dto
{
}
public class QueryParam
{
public string LineCode { get; set; }
public BydWorkorderDto[] Data { get; set; }
}
/// <summary>
/// 生产工单输入输出对象
/// </summary>
public class BydWorkorderDto
{
[Required(ErrorMessage = "主键不能为空")]
public string Id { get; set; }
public string FactoryCode { get; set; }

View File

@ -0,0 +1,53 @@
using Microsoft.Extensions.Hosting;
using System.Diagnostics.Metrics;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
public class MyBackgroundService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
//具体的后台任务逻辑
var url = "/api/product/Product_Information?Product006_ProductParameters"; // 替换成你的URL
var data = new { serviceId = "John Doe", Age = 30 }; // 创建要发送的数据对象
var jsonData = JsonConvert.SerializeObject(data);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = content
};
// 添加请求头
request.Headers.Add("appId", "61320D6EEF5A48B7C32149DF991BED41");
request.Headers.Add("appKey", "85725BB0BCCEE8DB1AE2D5A48D393ABE");
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
try
{
await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken); // 每隔10分钟执行一次
}
catch (TaskCanceledException)
{
// 当CancellationToken被触发时Task.Delay会抛出TaskCanceledException。
// 这里可以什么都不做或者记录日志等,然后退出循环。
break;
}
}
}
}

View File

@ -13,6 +13,22 @@ namespace DOAN.Service.Bydlms
[AppService(ServiceType = typeof(IBydWorkorderService), ServiceLifetime = LifeTime.Transient)]
public class BydWorkorderService : BaseService<BydWorkorder>, IBydWorkorderService
{
/// <summary>
/// 接受比亚迪工单
/// </summary>
/// <param name="workorders"></param>
/// <returns></returns>
public bool AddBydWorkorderList(List<BydWorkorder> workorders)
{
foreach (var workorder in workorders)
{
workorder.Id = SnowFlakeSingle.Instance.NextId().ToString();
workorder.CreatedBy = "BYD_MES";
workorder.CreatedTime = DateTime.Now;
}
return Context.Insertable(workorders).ExecuteCommand() > 0;
}
/// <summary>
/// 查询生产工单列表
/// </summary>

View File

@ -12,7 +12,7 @@ namespace DOAN.Service.Bydlms.IBydlmsService
BydWorkorder GetInfo(string Id);
bool AddBydWorkorderList(List<BydWorkorder> workorders);
BydWorkorder AddBydWorkorder(BydWorkorder parm);
int UpdateBydWorkorder(BydWorkorder parm);

View File

@ -44,6 +44,7 @@ namespace Infrastructure.Controllers
return Content(jsonStr, "application/json");
}
protected IActionResult ToResponse(long rows, string timeFormatStr = "yyyy-MM-dd HH:mm:ss")
{
string jsonStr = GetJsonStr(ToJson(rows), timeFormatStr);