111
啊鑫
21 小时以前 eef66b0e4c576876217e4097f1813240face343f
111
已添加3个文件
241 ■■■■■ 文件已修改
MES.Service/Dto/webApi/BarcodeDto.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/BarcodeService.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/BarcodeController.cs 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/BarcodeDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
namespace MES.Service.Dto.webApi;
public class GenerateBarcodeRequest
{
    public int panelQuantity { get; set; }
    public string @operator { get; set; }
    public string workOrderNumber { get; set; }
}
public class GenerateBarcodeResponse
{
    public List<string> barcodes { get; set; } = new List<string>();
}
public class ConfirmBarcodeRequest
{
    public List<string> barcodes { get; set; } = new List<string>();
    public string @operator { get; set; }
    public string workOrderNumber { get; set; }
}
MES.Service/service/QC/BarcodeService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
using MES.Service.Dto.webApi;
namespace MES.Service.service.QC;
public class BarcodeService
{
    private static readonly List<string> ValidWorkOrders = new List<string>
    {
        "WO123456", "WO987654", "WO111222", "WO333444", "WO555666"
    };
    private static readonly List<string> GeneratedBarcodes = new List<string>();
    public GenerateBarcodeResponse GenerateBarcodes(GenerateBarcodeRequest request)
    {
        if (request.panelQuantity <= 0)
        {
            throw new ArgumentException("panelQuantity å¿…须是大于0的数字");
        }
        if (string.IsNullOrEmpty(request.@operator))
        {
            throw new ArgumentException("缺少必填参数:operator");
        }
        if (string.IsNullOrEmpty(request.workOrderNumber))
        {
            throw new ArgumentException("缺少必填参数:workOrderNumber");
        }
        var response = new GenerateBarcodeResponse();
        var timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
        var random = new Random();
        for (int i = 0; i < request.panelQuantity; i++)
        {
            var barcode = $"BC{timestamp}{random.Next(1000, 9999)}{i:D2}";
            response.barcodes.Add(barcode);
            GeneratedBarcodes.Add(barcode);
        }
        return response;
    }
    public void ConfirmBarcodes(ConfirmBarcodeRequest request)
    {
        if (request.barcodes == null || request.barcodes.Count == 0)
        {
            throw new ArgumentException("请提供有效的条码列表");
        }
        if (string.IsNullOrEmpty(request.@operator))
        {
            throw new ArgumentException("缺少必填参数:operator");
        }
        if (string.IsNullOrEmpty(request.workOrderNumber))
        {
            throw new ArgumentException("缺少必填参数:workOrderNumber");
        }
        if (!ValidWorkOrders.Contains(request.workOrderNumber))
        {
            throw new ArgumentException($"工单 {request.workOrderNumber} ä¸å­˜åœ¨");
        }
        foreach (var barcode in request.barcodes)
        {
            if (string.IsNullOrEmpty(barcode) || !barcode.StartsWith("BC"))
            {
                throw new ArgumentException($"条码 {barcode} æ— æ•ˆ");
            }
            if (!GeneratedBarcodes.Contains(barcode))
            {
                throw new ArgumentException($"条码 {barcode} æ— æ•ˆ");
            }
        }
    }
}
MESApplication/Controllers/QC/BarcodeController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
using System.Dynamic;
using MES.Service.Dto.webApi;
using MES.Service.service.QC;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
namespace MESApplication.Controllers.QC;
[Route("api/[controller]")]
[ApiController]
public class BarcodeController : ControllerBase
{
    private readonly BarcodeService _barcodeService;
    public BarcodeController()
    {
        _barcodeService = new BarcodeService();
    }
    [HttpPost("generateBarcode")]
    public ResponseResult GenerateBarcode([FromBody] GenerateBarcodeRequest request)
    {
        try
        {
            if (request == null)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "请求体不能为空",
                    data = "请求体不能为空"
                };
            }
            // Validate panelQuantity is a valid positive number
            if (request.panelQuantity <= 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "panelQuantity å¿…须是大于0的数字",
                    data = "panelQuantity å¿…须是大于0的数字"
                };
            }
            var missingParams = new List<string>();
            if (string.IsNullOrEmpty(request.@operator)) missingParams.Add("operator");
            if (string.IsNullOrEmpty(request.workOrderNumber)) missingParams.Add("workOrderNumber");
            if (missingParams.Count > 0)
            {
                var message = $"缺少必填参数:{string.Join(", ", missingParams)}";
                return new ResponseResult
                {
                    status = 1,
                    message = message,
                    data = message
                };
            }
            var result = _barcodeService.GenerateBarcodes(request);
            return new ResponseResult
            {
                status = 0,
                message = "条码生成成功",
                data = result
            };
        }
        catch (ArgumentException ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = ex.Message,
                data = ex.Message
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("confirmBarcode")]
    public ResponseResult ConfirmBarcode([FromBody] ConfirmBarcodeRequest request)
    {
        try
        {
            if (request == null)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "请求体不能为空",
                    data = "请求体不能为空"
                };
            }
            var missingParams = new List<string>();
            if (request.barcodes == null || request.barcodes.Count == 0) missingParams.Add("barcodes");
            if (string.IsNullOrEmpty(request.@operator)) missingParams.Add("operator");
            if (string.IsNullOrEmpty(request.workOrderNumber)) missingParams.Add("workOrderNumber");
            if (missingParams.Count > 0)
            {
                var message = $"缺少必填参数:{string.Join(", ", missingParams)}";
                return new ResponseResult
                {
                    status = 1,
                    message = message,
                    data = message
                };
            }
            _barcodeService.ConfirmBarcodes(request);
            return new ResponseResult
            {
                status = 0,
                message = "条码确认成功",
                data = "条码确认已完成"
            };
        }
        catch (ArgumentException ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = ex.Message.Contains("工单") ? "工单号无效" :
                         ex.Message.Contains("条码") ? "条码格式不正确" :
                         ex.Message.Contains("列表") ? "缺少条码" : ex.Message,
                data = ex.Message
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}