11
啊鑫
7 天以前 b6b20da09e72e9e287b252348e7700641d9745e8
11
已修改5个文件
已添加1个文件
387 ■■■■ 文件已修改
MES.Service/Modes/QsQaItemXj.cs 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/VDab.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/BaseService.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/XJService.cs 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/BaseController.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/XJController.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/QsQaItemXj.cs
@@ -21,108 +21,112 @@
    public decimal? Id { get; set; }
    /// <summary>
    ///     æ£€éªŒå•号
    /// æ£€éªŒå•号
    /// </summary>
    [SugarColumn(ColumnName = "RELEASE_NO")]
    [SugarColumn(ColumnName = "RELEASE_NO", Length = 100)]
    public string? ReleaseNo { get; set; }
    /// <summary>
    ///     æ£€éªŒæ—¥æœŸ
    /// æ£€éªŒæ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_DATE")]
    public DateTime? FcheckDate { get; set; }
    public DateTime? CheckDate { get; set; }
    /// <summary>
    ///     æ£€éªŒäººå‘˜
    /// æ£€éªŒäººå‘˜
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_BY")]
    public string? FcheckBy { get; set; }
    [SugarColumn(ColumnName = "FCHECK_BY", Length = 100)]
    public string? CheckBy { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç¼–码
    /// ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    [SugarColumn(ColumnName = "ITEM_NO", Length = 100)]
    public string? ItemNo { get; set; }
    /// <summary>
    ///     æ£€éªŒç»“æžœ
    /// æ£€éªŒç»“æžœ
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_RESU")]
    public string? FcheckResu { get; set; }
    [SugarColumn(ColumnName = "FCHECK_RESU", Length = 100)]
    public string? CheckResult { get; set; }
    /// <summary>
    ///     åˆ›å»ºäºº
    /// åˆ›å»ºäºº
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_BY")]
    [SugarColumn(ColumnName = "CREATE_BY", Length = 100)]
    public string? CreateBy { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¥æœŸ
    /// åˆ›å»ºæ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public DateTime? CreateDate { get; set; }
    /// <summary>
    ///     æ›´æ–°äºº
    /// æ›´æ–°äºº
    /// </summary>
    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
    public string? LastupdateBy { get; set; }
    [SugarColumn(ColumnName = "LASTUPDATE_BY", Length = 100)]
    public string? LastUpdateBy { get; set; }
    /// <summary>
    ///     æ›´æ–°æ—¥æœŸ
    /// æ›´æ–°æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
    public DateTime? LastupdateDate { get; set; }
    public DateTime? LastUpdateDate { get; set; }
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    [SugarColumn(ColumnName = "MODIFY1_BY")]
    public string? Modify1By { get; set; }
    [SugarColumn(ColumnName = "MODIFY1_BY", Length = 100)]
    public string? ModifyBy { get; set; }
    /// <summary>
    ///     å•位
    /// ç‰©æ–™å•位
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_UNIT")]
    [SugarColumn(ColumnName = "ITEM_UNIT", Length = 100)]
    public string? ItemUnit { get; set; }
    /// <summary>
    ///     å·¥å•号
    /// å·¥å•号
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    [SugarColumn(ColumnName = "BILL_NO", Length = 50)]
    public string? BillNo { get; set; }
    /// <summary>
    ///     æ¨¡å…·å·
    /// æ¨¡å…·å·
    /// </summary>
    [SugarColumn(ColumnName = "MOID_NUM")]
    public string? MoidNum { get; set; }
    [SugarColumn(ColumnName = "MOID_NUM", Length = 50)]
    public string? MoldNum { get; set; }
    /// <summary>
    /// æäº¤äºº
    /// </summary>
    [SugarColumn(ColumnName = "FSUBMIT_BY")]
    public string? FsubmitBy { get; set; }
    [SugarColumn(ColumnName = "FSUBMIT_BY", Length = 50)]
    public string? SubmitBy { get; set; }
    /// <summary>
    /// æäº¤æ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "FSUBMIT_DATE")]
    public DateTime? FsubmitDate { get; set; }
    public DateTime? SubmitDate { get; set; }
    /// <summary>
    /// æäº¤çŠ¶æ€ï¼ˆ0/1)
    /// </summary>
    [SugarColumn(ColumnName = "FSUBMIT")]
    public decimal? Fsubmit { get; set; }
    public int? SubmitStatus { get; set; }
    /// <summary>
    ///     å¤‡æ³¨
    /// å¤‡æ³¨
    /// </summary>
    [SugarColumn(ColumnName = "REMARKS")]
    [SugarColumn(ColumnName = "REMARKS", Length = 200)]
    public string? Remarks { get; set; }
    /// <summary>
    ///     ç‰©æ–™ID
    /// ç‰©æ–™ID
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_ID")]
    public decimal? ItemId { get; set; }
    public long? ItemId { get; set; }
    [SugarColumn(IsIgnore = true)] public string? Daa020 { get; set; }
    [SugarColumn(IsIgnore = true)] public decimal? PlanQty { get; set; }
MES.Service/Modes/VDab.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using SqlSugar;
namespace MES.Service.Modes;
[SugarTable("V_DAB")]
public class VDab
{
    /// <summary>
    /// å·¥å• å­—段
    /// </summary>
    [SugarColumn(ColumnName = "DAB001")]
    public string? Dab001 { get; set; }
    /// <summary>
    /// åºå· å­—段
    /// </summary>
    [SugarColumn(ColumnName = "DAB002")]
    public decimal? Dab002 { get; set; }
    /// <summary>
    /// éœ€é¢†ç”¨é‡ å­—段
    /// </summary>
    [SugarColumn(ColumnName = "DAB006")]
    public string? Dab006 { get; set; }
    /// <summary>
    /// ææ–™åç§° å­—段
    /// </summary>
    [SugarColumn(ColumnName = "DAB004")]
    public string? Dab004 { get; set; }
    /// <summary>
    /// ææ–™è§„æ ¼ å­—段
    /// </summary>
    [SugarColumn(ColumnName = "DAB005")]
    public string? Dab005 { get; set; }
    /// <summary>
    /// PID å­—段
    /// </summary>
    [SugarColumn(ColumnName = "PID")]
    public string? Pid { get; set; }
    /// <summary>
    /// ç‰©æ–™ç¼–号 å­—段
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string? ItemNo { get; set; }
    /// <summary>
    /// å•位 å­—段
    /// </summary>
    [SugarColumn(ColumnName = "FNUMBER")]
    public string? FNumber { get; set; }
}
MES.Service/service/QC/BaseService.cs
@@ -49,4 +49,13 @@
        });
        return mesQsImages;
    }
    public List<VDab> GetDabs(VDab queryObj)
    {
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<VDab>()
            .Where(s => s.Dab001 == queryObj.Dab001)
            .OrderBy(s => s.Dab002)
            .ToList();
    }
}
MES.Service/service/QC/XJService.cs
@@ -134,11 +134,11 @@
            .WhereIF(
                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                "未完成".Equals(queryObj.result),
                (s, a, c, b) => s.FcheckResu == null)
                (s, a, c, b) => s.SubmitStatus == 0 || s.SubmitStatus == null)
            .WhereIF(
                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                !"未完成".Equals(queryObj.result),
                (s, a, c, b) => s.FcheckResu != null)
                (s, a, c, b) => s.SubmitStatus == 1)
            .WhereIF(id > 0, (s, a, c, b) => s.Id == id)
            .Select((s, a, c, b) => new QsQaItemXj
            {
@@ -152,8 +152,8 @@
                BillNo = s.BillNo,
                ItemName = b.ItemName,
                ItemModel = b.ItemModel,
                FcheckBy = s.FcheckBy,
                FcheckResu = s.FcheckResu,
                CheckBy = s.CheckBy,
                CheckResult = s.CheckResult,
                Remarks = s.Remarks
            }).OrderBy(s => s.CreateDate, OrderByType.Desc);
        var items = query.ToPageList(queryObj.PageIndex, queryObj.Limit,ref totalCount);
@@ -292,36 +292,180 @@
        return Convert.ToInt32(xj.Id);
    }
    public bool XJQaSubmit(LLJDto rkjDto)
    {
        var useTransactionWithOracle =
            SqlSugarHelper.UseTransactionWithOracle(db =>
            {
                return db.Updateable<QsQaItemXj>()
                    .SetColumns(s => s.SubmitStatus == 1)
                    .SetColumns(s => s.SubmitBy == rkjDto.userNo)
                    .SetColumns(s => s.SubmitDate == DateTime.Now)
                    .Where(s => s.Id == rkjDto.gid)
                    .ExecuteCommand();
            });
        return useTransactionWithOracle > 0;
    }
    // public int saveItem(XJDto xjDto)
    // {
    //     var items = xjDto.items;
    //     var userNo = xjDto.userNo;
    //
    //     SqlSugarHelper.UseTransactionWithOracle(db =>
    //     {
    //         foreach (var item in items) item.Pid = xjDto.gid;
    //
    //         return db.Insertable(items).ExecuteCommand();
    //     });
    //
    //     xjDto.items = getJYItem(xjDto.gid, null);
    //
    //     xjDto.items.ForEach(s =>
    //     {
    //         if (s.MaxValue != null || s.StandardValue != null ||
    //             s.MinValue != null) return;
    //         var detail = new QsQaItemXj02();
    //         detail.Pid = s.Id;
    //         detail.Gid = xjDto.gid;
    //         detail.Fstand = "√";
    //         detail.FcheckResu = "1";
    //         detail.UpdateBy = xjDto.userNo;
    //         detail.count = (int?)s.LevelNum;
    //         SetQSItemDetail(detail);
    //     });
    //
    //     return Convert.ToInt32(xjDto.gid);
    // }
    public int saveItem(XJDto xjDto)
    {
        var items = xjDto.items;
        var userNo = xjDto.userNo;
        SqlSugarHelper.UseTransactionWithOracle(db =>
        // æ•°æ®éªŒè¯
        var validationResult = ValidateItemsData(items);
        if (!validationResult.isValid)
            throw new Exception($"检验项目验证失败: {validationResult.errorMsg}");
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            // è®¾ç½®å¤–键关联并批量插入子表
            foreach (var item in items) item.Pid = xjDto.gid;
            db.Insertable(items).ExecuteCommand();
            return db.Insertable(items).ExecuteCommand();
            // èŽ·å–æ£€éªŒé¡¹ç›®æ•°æ®
            var jyItems = getJYItemOptimized(db, xjDto.gid.Value);
            if (jyItems.Any())
            {
                // å¤„理业务逻辑计算
                var allDetails = PrepareDetailsData(jyItems, xjDto.gid.Value, userNo);
                if (allDetails.Count > 0)
                {
                    // æ‰¹é‡æ’入检验详情
                    db.Insertable(allDetails).ExecuteCommand();
                    // è®¡ç®—结果
                    var (pidResults, fcheckResu) = CalculateResults(allDetails, jyItems);
                    // æ‰¹é‡æ›´æ–°æ£€éªŒé¡¹ç›®ç»“æžœ
                    foreach (var (pidValue, result) in pidResults)
                    {
                        db.Updateable<QsQaItemXj01>()
                            .SetColumns(s => s.IsPass == result)
                            .Where(s => s.Id == pidValue)
                            .ExecuteCommand();
                    }
                    // æ›´æ–°ä¸»è¡¨æ£€éªŒç»“æžœ
                    var totalSum = jyItems.Where(x => x.MaxValue == null && x.StandardValue == null && x.MinValue == null)
                        .Sum(x => x.LevelNum);
                    if (totalSum == allDetails.Count)
                    {
                        db.Updateable<QsQaItemXj>()
                            .SetColumns(s => s.CheckResult == fcheckResu)
                            .SetColumns(s => s.CheckDate == DateTime.Now)
                            .SetColumns(s => s.CheckBy == userNo)
                            .SetColumns(s => s.LastUpdateBy == userNo)
                            .SetColumns(s => s.LastUpdateDate == DateTime.Now)
                            .Where(s => s.Id == xjDto.gid)
                            .ExecuteCommand();
                    }
                }
            }
            return Convert.ToInt32(xjDto.gid);
        });
    }
    private List<QsQaItemXj01> getJYItemOptimized(ISqlSugarClient db, decimal xjId)
    {
        return db.Queryable<QsQaItemXj01>()
            .Where(a => a.Pid == xjId)
            .ToList();
    }
    private (bool isValid, string errorMsg) ValidateItemsData(List<QsQaItemXj01> items)
    {
        if (items == null || !items.Any()) return (false, "检验项目不能为空");
        var invalidItems = items.Where(x => x.LevelNum <= 0 || string.IsNullOrEmpty(x.ProjName)).ToList();
        if (invalidItems.Any())
            return (false, $"存在{invalidItems.Count}个无效的检验项目");
        return (true, "");
    }
        xjDto.items = getJYItem(xjDto.gid, null);
        xjDto.items.ForEach(s =>
    private List<QsQaItemXj02> PrepareDetailsData(List<QsQaItemXj01> jyItems, decimal gid, string userNo)
    {
        var allDetails = new List<QsQaItemXj02>();
        var now = DateTime.Now;
        foreach (var s in jyItems)
        {
            if (s.MaxValue != null || s.StandardValue != null ||
                s.MinValue != null) return;
            var detail = new QsQaItemXj02();
            detail.Pid = s.Id;
            detail.Gid = xjDto.gid;
            detail.Fstand = "√";
            detail.FcheckResu = "1";
            detail.UpdateBy = xjDto.userNo;
            detail.count = (int?)s.LevelNum;
            SetQSItemDetail(detail);
        });
            if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
                continue;
        return Convert.ToInt32(xjDto.gid);
            for (var i = 0; i < s.LevelNum; i++)
            {
                allDetails.Add(new QsQaItemXj02
                {
                    Gid = gid,
                    Pid = s.Id,
                    Fstand = "√",
                    FcheckResu = "1",
                    CreateBy = userNo,
                    CreateDate = now
                });
            }
        }
        return allDetails;
    }
    private (List<(decimal pid, int result)> pidResults, string fcheckResu) CalculateResults(
        List<QsQaItemXj02> allDetails, List<QsQaItemXj01> jyItems)
    {
        var pidGroups = allDetails.GroupBy(x => x.Pid).ToList();
        var pidResults = new List<(decimal pid, int result)>();
        foreach (var group in pidGroups)
        {
            var count = group.Count();
            var passCount = group.Count(x => x.Fstand == "√");
            var result = (count == passCount) ? 1 : 0;
            pidResults.Add((group.Key.Value, result));
        }
        var totalSum = jyItems.Where(x => x.MaxValue == null && x.StandardValue == null && x.MinValue == null)
            .Sum(x => x.LevelNum);
        var totalCount = allDetails.Count;
        var totalPassCount = allDetails.Count(x => x.Fstand == "√");
        var fcheckResu = (totalSum == totalCount && totalCount == totalPassCount) ? "合格" : "不合格";
        return (pidResults, fcheckResu);
    }
@@ -442,11 +586,11 @@
            SqlSugarHelper.UseTransactionWithOracle(db =>
            {
                return db.Updateable<QsQaItemXj>()
                    .SetColumns(s => s.FcheckResu == FcheckResu)
                    .SetColumns(s => s.FcheckDate == DateTime.Now)
                    .SetColumns(s => s.FcheckBy == detail.CreateBy)
                    .SetColumns(s => s.LastupdateBy == detail.CreateBy)
                    .SetColumns(s => s.LastupdateDate == DateTime.Now)
                    .SetColumns(s => s.CheckResult == FcheckResu)
                    .SetColumns(s => s.CheckDate == DateTime.Now)
                    .SetColumns(s => s.CheckBy == detail.CreateBy)
                    .SetColumns(s => s.LastUpdateBy == detail.CreateBy)
                    .SetColumns(s => s.LastUpdateDate == DateTime.Now)
                    .Where(s => s.Id == detail.Gid)
                    .ExecuteCommand();
            });
MESApplication/Controllers/QC/BaseController.cs
@@ -1,5 +1,6 @@
using System.Dynamic;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service.QC;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
@@ -81,4 +82,29 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    // GetDabs(VDab queryObj)
    [HttpPost("getDabs")]
    public ResponseResult GetDabs(VDab queryObj)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new BaseService().GetDabs(queryObj);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
MESApplication/Controllers/QC/XJController.cs
@@ -442,4 +442,26 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("XJQaSubmit")]
    public ResponseResult XJQaSubmit(LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new XJService().XJQaSubmit(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}