111
啊鑫
2025-07-16 f6598be8fdb51673c0a48ddeac8bd0e622835b35
111
已修改9个文件
已添加1个文件
794 ■■■■ 文件已修改
MES.Service/Dto/service/OQCDto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesItems.cs 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesOqcBarcode.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesOqcItemsDetect02.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesOqcItemsDetectDetail5.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesQsImage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/BaseService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/MesOqcItemsDetect02Manager.cs 445 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/BaseController.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/MesOqcItemsDetect02Controller.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/service/OQCDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using MES.Service.Dto.@base;
using MES.Service.Modes;
namespace MES.Service.Dto.service;
public class OQCDto : Page
{
    public string? CreateUser { get; set; }
    public decimal? Id { get; set; }
    public decimal? MainId { get; set; }
    public string? ReleaseNo { get; set; }
    public List<MesInvItemStocks>? ItemBarCodeData { get; set; }
    public MesOqcItemsDetectDetail5? ItemXj01 { get; set; }
    public List<MesOqcItemsDetectDetail12>? ItemXj02s { get; set; }
}
MES.Service/Modes/MesItems.cs
@@ -18,73 +18,73 @@
    /// å·¥åŽ‚ 
    ///</summary>
    [SugarColumn(ColumnName = "FACTORY")]
    public string Factory { get; set; }
    public string? Factory { get; set; }
    /// <summary>
    /// å…¬å¸ç¼–号 
    ///</summary>
    [SugarColumn(ColumnName = "COMPANY")]
    public string Company { get; set; }
    public string? Company { get; set; }
    /// <summary>
    /// ç‰©æ–™ç¼–码 = ERP物料编号||颜色编号 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    public string? ItemNo { get; set; }
    /// <summary>
    /// ç‰©æ–™åç§° 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_NAME")]
    public string ItemName { get; set; }
    public string? ItemName { get; set; }
    /// <summary>
    /// ç‰©æ–™ç®€ç§° 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_SNAME")]
    public string ItemSname { get; set; }
    public string? ItemSname { get; set; }
    /// <summary>
    /// è§„格型号 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_MODEL")]
    public string ItemModel { get; set; }
    public string? ItemModel { get; set; }
    /// <summary>
    /// ç‰©æ–™æè¿° 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_DESCRIPTION")]
    public string ItemDescription { get; set; }
    public string? ItemDescription { get; set; }
    /// <summary>
    /// ç‰©æ–™å•位 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_UNIT")]
    public string ItemUnit { get; set; }
    public string? ItemUnit { get; set; }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_TYPE")]
    public string ItemType { get; set; }
    public string? ItemType { get; set; }
    /// <summary>
    /// äº§å“ç‰ˆæœ¬ 
    ///</summary>
    [SugarColumn(ColumnName = "ITEM_VERSION")]
    public string ItemVersion { get; set; }
    public string? ItemVersion { get; set; }
    /// <summary>
    /// å®¢æˆ·ç¼–号 
    ///</summary>
    [SugarColumn(ColumnName = "CUST_NO")]
    public string CustNo { get; set; }
    public string? CustNo { get; set; }
    /// <summary>
    /// åˆ›å»ºäºº 
    ///</summary>
    [SugarColumn(ColumnName = "CREATE_BY")]
    public string CreateBy { get; set; }
    public string? CreateBy { get; set; }
    /// <summary>
    /// åˆ›å»ºæ—¶é—´ 
@@ -96,7 +96,7 @@
    /// æœ€åŽæ›´æ–°äºº 
    ///</summary>
    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
    public string LastupdateBy { get; set; }
    public string? LastupdateBy { get; set; }
    /// <summary>
    /// æœ€åŽæ›´æ–°æ—¶é—´ 
@@ -126,25 +126,25 @@
    /// è®¢å•单位 
    ///</summary>
    [SugarColumn(ColumnName = "ORDERUNIT")]
    public string Orderunit { get; set; }
    public string? Orderunit { get; set; }
    /// <summary>
    /// é”€å”®å•位 
    ///</summary>
    [SugarColumn(ColumnName = "SALEUNIT")]
    public string Saleunit { get; set; }
    public string? Saleunit { get; set; }
    /// <summary>
    /// åº“房单位 
    ///</summary>
    [SugarColumn(ColumnName = "STOREUNIT")]
    public string Storeunit { get; set; }
    public string? Storeunit { get; set; }
    /// <summary>
    /// ç”Ÿäº§å•位 
    ///</summary>
    [SugarColumn(ColumnName = "PRODUCTUNIT")]
    public string Productunit { get; set; }
    public string? Productunit { get; set; }
    /// <summary>
    /// ç‰©æ–™ID 
@@ -156,43 +156,43 @@
    /// ERP料号 
    ///</summary>
    [SugarColumn(ColumnName = "ERP_ITEM_NO")]
    public string ErpItemNo { get; set; }
    public string? ErpItemNo { get; set; }
    /// <summary>
    /// é»˜è®¤ä»“库 
    ///</summary>
    [SugarColumn(ColumnName = "DEPOT_CODE")]
    public string DepotCode { get; set; }
    public string? DepotCode { get; set; }
    /// <summary>
    /// ç‰©æ–™åˆ†ç±»ç¼–号 
    ///</summary>
    [SugarColumn(ColumnName = "PPBOM00019124")]
    public string Ppbom00019124 { get; set; }
    public string? Ppbom00019124 { get; set; }
    /// <summary>
    /// ç‰©æ–™åˆ†ç»„ 
    ///</summary>
    [SugarColumn(ColumnName = "REMARKS")]
    public string Remarks { get; set; }
    public string? Remarks { get; set; }
    /// <summary>
    /// é‡‡è´­å‘˜ 
    ///</summary>
    [SugarColumn(ColumnName = "FPURCHASERID")]
    public string Fpurchaserid { get; set; }
    public string? Fpurchaserid { get; set; }
    /// <summary>
    /// ç¦ç”¨çŠ¶æ€ 
    ///</summary>
    [SugarColumn(ColumnName = "FFORBIDSTATUS")]
    public string Fforbidstatus { get; set; }
    public string? Fforbidstatus { get; set; }
    /// <summary>
    /// ç‰©æ–™åˆ†ç»„ 
    ///</summary>
    [SugarColumn(ColumnName = "FMATERIALGROUP")]
    public string Fmaterialgroup { get; set; }
    public string? Fmaterialgroup { get; set; }
    /// <summary>
    /// å®Œå·¥è¶…收比例 
@@ -204,7 +204,7 @@
    /// å‘料方式 
    ///</summary>
    [SugarColumn(ColumnName = "FISSUETYPE")]
    public string Fissuetype { get; set; }
    public string? Fissuetype { get; set; }
    /// <summary>
    /// å¯ç”¨æ‰¹å·ç®¡ç† 
@@ -222,91 +222,91 @@
    /// è‡ªå®šä¹‰å­—段1 
    ///</summary>
    [SugarColumn(ColumnName = "REMARK1")]
    public string Remark1 { get; set; }
    public string? Remark1 { get; set; }
    /// <summary>
    /// è‡ªå®šä¹‰å­—段2 
    ///</summary>
    [SugarColumn(ColumnName = "REMARK2")]
    public string Remark2 { get; set; }
    public string? Remark2 { get; set; }
    /// <summary>
    /// è‡ªå®šä¹‰å­—段3 
    ///</summary>
    [SugarColumn(ColumnName = "REMARK3")]
    public string Remark3 { get; set; }
    public string? Remark3 { get; set; }
    /// <summary>
    /// è‡ªå®šä¹‰å­—段4 
    ///</summary>
    [SugarColumn(ColumnName = "REMARK4")]
    public string Remark4 { get; set; }
    public string? Remark4 { get; set; }
    /// <summary>
    /// è‡ªå®šä¹‰å­—段5 
    ///</summary>
    [SugarColumn(ColumnName = "REMARK5")]
    public string Remark5 { get; set; }
    public string? Remark5 { get; set; }
    /// <summary>
    /// ç”Ÿäº§è½¦é—´ 
    ///</summary>
    [SugarColumn(ColumnName = "PRODUCTION_WORKSHOP")]
    public string ProductionWorkshop { get; set; }
    public string? ProductionWorkshop { get; set; }
    /// <summary>
    /// ç‰©æ–™å±žæ€§ 
    ///</summary>
    [SugarColumn(ColumnName = "MATERIAL_PROPERTI")]
    public string MaterialProperti { get; set; }
    public string? MaterialProperti { get; set; }
    /// <summary>
    /// ç”Ÿäº§å•位 
    ///</summary>
    [SugarColumn(ColumnName = "PRODUCE_UNIT")]
    public string ProduceUnit { get; set; }
    public string? ProduceUnit { get; set; }
    /// <summary>
    /// å§”外单位 
    ///</summary>
    [SugarColumn(ColumnName = "SUBCON_UNIT")]
    public string SubconUnit { get; set; }
    public string? SubconUnit { get; set; }
    /// <summary>
    /// å›¾ç‰‡1 
    ///</summary>
    [SugarColumn(ColumnName = "BZ06")]
    public string Bz06 { get; set; }
    public string? Bz06 { get; set; }
    /// <summary>
    /// å›¾ç‰‡2 
    ///</summary>
    [SugarColumn(ColumnName = "BZ07")]
    public string Bz07 { get; set; }
    public string? Bz07 { get; set; }
    /// <summary>
    /// å›¾ç‰‡3 
    ///</summary>
    [SugarColumn(ColumnName = "BZ08")]
    public string Bz08 { get; set; }
    public string? Bz08 { get; set; }
    /// <summary>
    /// å›¾ç‰‡4 
    ///</summary>
    [SugarColumn(ColumnName = "BZ09")]
    public string Bz09 { get; set; }
    public string? Bz09 { get; set; }
    /// <summary>
    /// å›¾ç‰‡5 
    ///</summary>
    [SugarColumn(ColumnName = "BZ10")]
    public string Bz10 { get; set; }
    public string? Bz10 { get; set; }
    /// <summary>
    /// QC分组ID 
    ///</summary>
    [SugarColumn(ColumnName = "QC_TEAMID")]
    public string QcTeamid { get; set; }
    public string? QcTeamid { get; set; }
    /// <summary>
    /// ä½¿ç”¨ç»„织 
@@ -330,49 +330,49 @@
    /// åŠ©è®¡ç  
    ///</summary>
    [SugarColumn(ColumnName = "FMNEMONICCODE")]
    public string Fmnemoniccode { get; set; }
    public string? Fmnemoniccode { get; set; }
    /// <summary>
    /// ä¿è´¨æœŸ 
    ///</summary>
    [SugarColumn(ColumnName = "FEXPPERIOD")]
    public string Fexpperiod { get; set; }
    public string? Fexpperiod { get; set; }
    /// <summary>
    /// é¢œè‰² 
    ///</summary>
    [SugarColumn(ColumnName = "COLOR_NAME")]
    public string ColorName { get; set; }
    public string? ColorName { get; set; }
    /// <summary>
    /// æŸè€—率 
    ///</summary>
    [SugarColumn(ColumnName = "FLOSSPERCENT")]
    public string Flosspercent { get; set; }
    public string? Flosspercent { get; set; }
    /// <summary>
    /// æ ‡å‡†äº§èƒ½ 
    ///</summary>
    [SugarColumn(ColumnName = "SP_CAPACITY")]
    public string SpCapacity { get; set; }
    public string? SpCapacity { get; set; }
    /// <summary>
    /// æ˜¯å¦å…³é”®ä»¶ 
    ///</summary>
    [SugarColumn(ColumnName = "FISKITTING")]
    public string Fiskitting { get; set; }
    public string? Fiskitting { get; set; }
    /// <summary>
    /// åŽŸäº§åœ°ï¼ˆå“ç‰Œæ–¹ï¼‰ 
    ///</summary>
    [SugarColumn(ColumnName = "PROVENANCE")]
    public string Provenance { get; set; }
    public string? Provenance { get; set; }
    /// <summary>
    /// æè´¨ 
    ///</summary>
    [SugarColumn(ColumnName = "MATERIAL")]
    public string Material { get; set; }
    public string? Material { get; set; }
    [SugarColumn(IsIgnore = true)] public string? Type { get; set; }
MES.Service/Modes/MesOqcBarcode.cs
@@ -25,7 +25,7 @@
    ///     æ‰«ç äºº
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_BY")]
    public string CreateBy { get; set; }
    public string? CreateBy { get; set; }
    /// <summary>
    ///     æ‰«ç æ—¶é—´
@@ -37,7 +37,7 @@
    ///     ç‰©æ–™æ¡ç 
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_BARCODE")]
    public string ItemBarcode { get; set; }
    public string? ItemBarcode { get; set; }
    /// <summary>
    ///     æ•°é‡
@@ -55,11 +55,12 @@
    ///     ç‰©æ–™å·
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    public string? ItemNo { get; set; }
    /// <summary>
    ///     é”€å”®è®¢å•号
    ///     å·¥å•号
    /// </summary>
    [SugarColumn(ColumnName = "SALE_ORDER_NO")]
    public string SaleOrderNo { get; set; }
    public string? SaleOrderNo { get; set; }
}
MES.Service/Modes/MesOqcItemsDetect02.cs
@@ -134,5 +134,21 @@
        ///</summary>
        [SugarColumn(ColumnName = "DEPOT_ID")]
        public decimal? DepotId { get; set; }
        [SugarColumn(IsIgnore = true)]
        public string? ItemName{ get; set; }
        [SugarColumn(IsIgnore = true)]
        public string? ItemModel { get; set; }
        [SugarColumn(IsIgnore = true)]
        public string? CreateUser { get; set; }
        //fcheckBy
        [SugarColumn(IsIgnore = true)]
        public string? FcheckUser { get; set; }
        [SugarColumn(IsIgnore = true)]
        public string? DepotName { get; set; }
    }
}
MES.Service/Modes/MesOqcItemsDetectDetail5.cs
@@ -191,5 +191,7 @@
        ///</summary>
        [SugarColumn(ColumnName = "FEATU_PROC")]
        public string? FeatuProc { get; set; }
        [SugarColumn(IsIgnore = true)] public int? Unqualified { get; set; }
    }
}
MES.Service/Modes/MesQsImage.cs
@@ -36,7 +36,7 @@
    public byte[]? ImageData { get; set; }
    /// <summary>
    ///     1为首检,2为巡检,3为入库检
    ///     1为首检,2为巡检,3为入库检,4为来料检验,5为OQC
    /// </summary>
    [Column("QS_TYPE")]
    [SugarColumn(ColumnName = "QS_TYPE")] //用于SqlSugar
MES.Service/service/QC/BaseService.cs
@@ -1,5 +1,6 @@
using MES.Service.DB;
using MES.Service.Modes;
using SqlSugar;
namespace MES.Service.service.QC;
@@ -49,4 +50,19 @@
        });
        return mesQsImages;
    }
    public List<MesQsImage> getLljAllImgByFid(string id, string qsType)
    {
        var db = SqlSugarHelper.GetInstance();
        var mesQsImages = db
            .Queryable<MesQsImage, MesOqcItemsDetectDetail5>((a, b) =>
                new JoinQueryInfos(JoinType.Left, a.Fid == b.Id))
            .Where((a, b) => b.ReleaseNo == id && a.Id != null).ToList();
        mesQsImages.ForEach(s =>
        {
            if (s.ImageData is { Length: > 0 })
                s.base64Date = Convert.ToBase64String(s.ImageData);
        });
        return mesQsImages;
    }
}
MES.Service/service/QC/MesOqcItemsDetect02Manager.cs
@@ -1,10 +1,11 @@
using Masuit.Tools;
using System.Data;
using Masuit.Tools;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.util;
using Microsoft.CSharp.RuntimeBinder;
using SqlSugar;
using DbType = System.Data.DbType;
namespace MES.Service.service.QC;
@@ -29,45 +30,49 @@
        var totalCount = 0;
        //var itemIds = GetQaItem(db, queryObj.createUser);
        var pageList = Db.Queryable<MesOqcItemsDetect02, MesItems
                , SysUser, SysUser, MesDepots>((a, b, c, d, e) =>
                new JoinQueryInfos(JoinType.Left, a.ItemId == b.Id,
                    JoinType.Left, a.CreateBy == c.Fcode,
                    JoinType.Left, a.FcheckBy == d.Fcode,
                    JoinType.Left, a.DepotId == e.DepotId
                ))
            .WhereIF(
                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                "未完成".Equals(queryObj.result),
                (a, b, c, d, e) => a.FcheckResu == null || a.Fsubmit == 0)
            .WhereIF(
                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                !"未完成".Equals(queryObj.result),
                (a, b, c, d, e) => a.FcheckResu != null && a.Fsubmit == 1)
            .WhereIF(id > 0, (a, b, c, d, e) => a.Id == id)
            .OrderByDescending((a, b, c, d, e) => a.Id)
            .Select((a, b, c, d, e) => new MesOqcItemsDetect02()
            {
                ItemNo = b.ItemNo,
                ItemName = b.ItemName,
                ItemModel = b.ItemModel,
                CreateUser = c.Fname,
                FcheckUser = d.Fname,
                DepotName = e.DepotName
            }, true)
            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
        return (pageList, totalCount);
    }
        // var pageList = db.Queryable<LtsLlj>()
        //     .WhereIF(
        //         StringUtil.IsNotNullOrEmpty(queryObj.result) &&
        //         "未完成".Equals(queryObj.result),
        //         a => a.FcheckResu == null)
        //     .WhereIF(
        //         StringUtil.IsNotNullOrEmpty(queryObj.result) &&
        //         !"未完成".Equals(queryObj.result),
        //         a => a.FcheckResu != null)
        //     .WhereIF(id > 0, a => a.Id == id)
    public List<MesOqcItemsDetectDetail5> GetDetail5(OQCDto dto)
    {
        return Db.Queryable<MesOqcItemsDetectDetail5>()
            .Where(s => s.ReleaseNo == dto.ReleaseNo)
            .ToList();
    }
        //加筛选条件,根据供应商,物料编码,物料名称搜索
        //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue )
        // .WhereIF(
        //     queryObj.SelectedIndex == "0" &&
        //     !string.IsNullOrEmpty(queryObj.SearchValue),
        //     a => (a.ItemNo.ToLower()
        //         .Contains(queryObj.SearchValue.ToLower())))
        // .WhereIF(
        //     queryObj.SelectedIndex == "1" &&
        //     !string.IsNullOrEmpty(queryObj.SearchValue),
        //     a => (a.ItemName.ToLower()
        //         .Contains(queryObj.SearchValue.ToLower())))
        // .WhereIF(
        //     queryObj.SelectedIndex == "2" &&
        //     !string.IsNullOrEmpty(queryObj.SearchValue),
        //     a => (a.SuppName.ToLower()
        //         .Contains(queryObj.SearchValue.ToLower())))
        // .WhereIF(queryObj.result == "已完成",
        //     a => (a.IqcDate >= queryObj.startDate.ToDateTime() &&
        //           a.IqcDate <= queryObj.endDate.ToDateTime().AddDays(1)))
        // .WhereIF(queryObj.result == "已完成" && queryObj.state != "所有状态",
        //     a => a.FcheckResu == queryObj.state)
        //     .OrderByDescending(a => a.Id)
        //     .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
        // return (pageList, totalCount);
        return (new List<MesOqcItemsDetect02>(), totalCount);
    public List<MesOqcItemsDetectDetail12> GetDetail12(OQCDto dto)
    {
        return Db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.ReleaseNo == dto.ReleaseNo
                        && s.MainId == dto.MainId)
            .ToList();
    }
    public MesInvItemStocks GetItemBarCode(XJPageResult queryObj)
@@ -86,6 +91,16 @@
            throw new NotImplementedException("条码不存在于库存中");
        }
        // æ£€æŸ¥æ¡ç æ˜¯å¦å·²ç»å­˜åœ¨äºŽMesOqcBarcode表中(已检验过)
        var existingBarcode = Db.Queryable<MesOqcBarcode>()
            .Where(a => a.ItemBarcode == queryObj.ItemCode)
            .First();
        if (existingBarcode != null)
        {
            throw new NotImplementedException("该条码已经检验过,不能重复检验");
        }
        var mesDepots = Db.Queryable<MesDepots>()
            .Where(s => s.DepotId == 121163).First();
@@ -94,21 +109,361 @@
            throw new NotImplementedException("只能扫描" + mesDepots.DepotCode +
                                              "仓库的码");
        }
        if (mesInvItemStocks.ItemId is null or 0)
        {
            throw new NotImplementedException("物料是非法的");
        }
        var mesItems = Db.Queryable<MesItems>()
            .Where(b=>b.Id == mesInvItemStocks.ItemId)
            .Where(b => b.Id == mesInvItemStocks.ItemId)
            .Select<MesItems>(b => new MesItems
            {
                ItemName = b.ItemName,
                ItemModel = b.ItemModel,
            })
            .First();
        // mesInvItemStocks.ItemName = mesItems.ItemName;
        // mesInvItemStocks.ItemModel = mesItems.ItemModel;
        mesInvItemStocks.ItemName = mesItems.ItemName;
        mesInvItemStocks.ItemModel = mesItems.ItemModel;
        return mesInvItemStocks;
    }
    //OQCDto
    public int ItemBarCodeSubmit(OQCDto dto)
    {
        //getbillcode1
        var billNo = Db.Ado.GetString(
            "SELECT getbillcode1('1000', '1000', 'OQC') FROM DUAL");
        var dtoItemBarCodeData = dto.ItemBarCodeData;
        var sum = dtoItemBarCodeData.Sum(s => s.Quantity);
        MesOqcItemsDetect02 from = new MesOqcItemsDetect02
        {
            CreateBy = dto.CreateUser,
            CreateDate = DateTime.Now,
            ReleaseNo = billNo,
            Fsubmit = 0,
            Ismodify1 = 0,
            FcheckBy = dto.CreateUser,
            FcheckDate = DateTime.Now,
            ItemNo = dtoItemBarCodeData[0].ItemNo,
            ItemId = dtoItemBarCodeData[0].ItemId,
            PlanQty = sum,
            SaleOrderNo = dtoItemBarCodeData[0].TaskNo,
            DepotId = 121163
        };
        var id = Db.Insertable(from)
            .IgnoreColumns(ignoreNullColumn: true)
            .ExecuteReturnIdentity();
        //记录条码
        List<MesOqcBarcode> oqcBarcodes = new List<MesOqcBarcode>();
        foreach (var mesInvItemStockse in dtoItemBarCodeData)
        {
            MesOqcBarcode entity = new MesOqcBarcode()
            {
                CreateBy = dto.CreateUser,
                CreateDate = DateTime.Now,
                ItemBarcode = mesInvItemStockse.ItemBarcode,
                ItemId = mesInvItemStockse.ItemId,
                ItemNo = mesInvItemStockse.ItemNo,
                Qty = mesInvItemStockse.Quantity,
                Pid = id,
                SaleOrderNo = mesInvItemStockse.TaskNo,
            };
            oqcBarcodes.Add(entity);
        }
        var executeCommand = Db.Insertable(oqcBarcodes).PageSize(1)
            .IgnoreColumnsNull()
            .ExecuteCommand();
        //PRC_OQC_ITEM_INSERT_BTN
        if (executeCommand > 0 && id > 0)
        {
            // å®šä¹‰è¾“出参数
            var outputResult = new SugarParameter("PO_RESULT", null,
                DbType.Int32, ParameterDirection.Output, 4000);
            var outputMessage = new SugarParameter("PO_TEXT", null,
                DbType.String,
                ParameterDirection.Output, 4000);
            // å®šä¹‰è¾“入参数
            var parameters = new List<SugarParameter>
            {
                new("P_RELEASE_NO", from.ReleaseNo, DbType.String,
                    ParameterDirection.Input),
                new("P_ITEM_ID", from.ItemId, DbType.Int32,
                    ParameterDirection.Input),
                new("P_BILL_NO  ", "", DbType.String,
                    ParameterDirection.Input),
                outputResult,
                outputMessage
            };
            var db = SqlSugarHelper.GetInstance();
            // ä½¿ç”¨ SqlSugar æ‰§è¡Œå­˜å‚¨è¿‡ç¨‹
            db.Ado.ExecuteCommand(
                "BEGIN PRC_OQC_ITEM_INSERT_BTN(:P_RELEASE_NO,:P_ITEM_ID,:P_BILL_NO,:PO_RESULT, :PO_TEXT); END;",
                parameters.ToArray());
            // èŽ·å–è¾“å‡ºå‚æ•°çš„å€¼
            var resultValue = outputResult.Value?.ToString();
            var messageValue = outputMessage.Value?.ToString();
            if ("1".Equals(resultValue))
                // å¤„理失败情况,返回错误信息
                throw new Exception($"操作失败: {messageValue}");
            // å½“ resultValue ä¸º "0" æ—¶è¿”回成功状态
            return id;
        }
        return 0;
    }
    public OQCDto getXjDetail02ById(decimal? id)
    {
        var rkjDto = new OQCDto();
        var qsItemOqcItem =
            Db.Queryable<MesOqcItemsDetectDetail5>().Single(s => s.Id == id);
        /* if (qsItemOqcItem.IsPass == 0)
             qsItemOqcItem.Result = "不合格";
         else if (qsItemOqcItem.IsPass == 1)
             qsItemOqcItem.Result = "合格";
         else
             qsItemOqcItem.Result = "未完成";
         if (qsItemOqcItem.Picture is { Length: > 0 })
             qsItemOqcItem.imageData =
                 Convert.ToBase64String(qsItemOqcItem.Picture);
 */
        //获取不合格数
        var count = Db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.Fstand == "×" && s.MainId == id).Count();
        qsItemOqcItem.Unqualified = count;
        rkjDto.ItemXj01 = qsItemOqcItem;
        rkjDto.ItemXj02s = Db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == id)
            .ToList();
        return rkjDto;
    }
    public int UpdateQSItemDetail(MesOqcItemsDetectDetail12 detail)
    {
        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<MesOqcItemsDetectDetail12>()
                .SetColumns(s => s.LastupdateBy == detail.LastupdateBy)
                // .SetColumns(s => s.LastupdateDate == DateTime.Now)
                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
                    s => s.Fstand == detail.Fstand)
                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
                    s => s.FcheckResu == detail.FcheckResu)
                .Where(s => s.MainId == detail.MainId && s.Id == detail.Id)
                .ExecuteCommand();
        });
        detail.CreateBy = detail.LastupdateBy;
        withOracle += autoResult(detail);
        return withOracle;
    }
    private int autoResult(MesOqcItemsDetectDetail12 detail)
    {
        var db = SqlSugarHelper.GetInstance();
        // Single æ²¡æœ‰æŸ¥è¯¢åˆ°ç»“果时返回Null,如果结果大于1条会抛出错误
        var QsItemOqcItem = db.Queryable<MesOqcItemsDetectDetail5>()
            .Single(s => s.Id == detail.MainId);
        if (QsItemOqcItem == null) return 0;
        //查询这个检验项目下的检验结果
        var count = db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == detail.MainId).Count();
        updateDetail5(detail);
        var result = "";
        //检验实际结果不等于应该检验的个数时直接推出
        if (QsItemOqcItem.CheckQyt != count) return 0;
        //合格的有多少个
        var passCount = db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == detail.MainId && s.Fstand == "√").Count();
        //不合格的有多少个
        var noCount = db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
        if (count == passCount)
            result = "合格";
        //else if (count - passCount < QsItemOqcItem.FreQty)
        //    result = "不合格";
        else if (noCount >= QsItemOqcItem.FreQty)
            result = "不合格";
        var useTransactionWithOracle =
            SqlSugarHelper.UseTransactionWithOracle(db =>
            {
                var commit = 0;
                commit += db.Updateable<MesOqcItemsDetectDetail5>()
                    .SetColumns(s => s.FcheckResu == result)
                    .SetColumns(s => s.FenterQty == count)
                    .Where(s => s.Id == detail.MainId)
                    .ExecuteCommand();
                return commit;
            });
        var isNull = db.Queryable<MesOqcItemsDetectDetail5>()
            .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == null)
            .Count();
        if (isNull > 0) return 1;
        //获取检验单的检验项目的个数
        var sum = db.Queryable<MesOqcItemsDetectDetail5>()
            .Where(s => s.ReleaseNo == detail.ReleaseNo).Count();
        if (sum == 0) return 1;
        //获取检验单下的合格的检验项目个数
        var icount = db.Queryable<MesOqcItemsDetectDetail5>()
            .Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == "合格")
            .Count();
        var FcheckResu = "不合格";
        //实际个数等于理论个数时对检验单进行判定
        if (sum == icount)
            //合格的检验结果等于总检验数视为合格
            FcheckResu = "合格";
        var sysUser = db.Queryable<SysUser>()
            .Where(s => s.Fcode == detail.CreateBy).First();
        SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<MesOqcItemsDetect02>()
                .SetColumns(s => s.FcheckResu == FcheckResu)
                .SetColumns(s => s.FcheckDate == DateTime.Now)
                //.SetColumns(s => s.FcheckBy == sysUser.Fname)
                .SetColumns(s => s.LastupdateBy == detail.CreateBy)
                .SetColumns(s => s.LastupdateDate == DateTime.Now)
                .Where(s => s.ReleaseNo == detail.ReleaseNo)
                .ExecuteCommand();
        });
        //  if (FcheckResu.Equals("不合格"))
        //自动生成入库检异常对策
        ///     saveDetect02(detail.Id, detail.CreateBy);
        return useTransactionWithOracle;
    }
    private int updateDetail5(MesOqcItemsDetectDetail12 detail)
    {
        var db = SqlSugarHelper.GetInstance();
        //查询这个检验项目下的检验数量
        var count = db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == detail.MainId).Count();
        //获取不合格数
        var countNo = db.Queryable<MesOqcItemsDetectDetail12>()
            .Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
        //更新检验明细已检数量
        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<MesOqcItemsDetectDetail5>()
                .SetColumns(s => s.FenterQty == count)
                .SetColumns(s => s.FngQty == countNo)
                .Where(s => s.Id == detail.MainId)
                .ExecuteCommand();
        });
        return withOracle;
    }
    public int saveRemarksPid(LLJDto dto)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<MesOqcItemsDetectDetail5>()
                .SetColumns(it =>
                    it.Remarks == dto.Remarks) //SetColumns是可以叠加的 å†™2个就2个字段赋值
                .Where(it => it.Id == dto.pid)
                .ExecuteCommand();
        });
    }
    public bool IqcQaSubmit(LLJDto dto)
    {
        try
        {
            // å®šä¹‰è¾“出参数
            var outputResult = new SugarParameter("o_Result", null,
                DbType.Int32, ParameterDirection.Output,
                4000);
            var outputMessage = new SugarParameter("o_Msg", null,
                DbType.String,
                ParameterDirection.Output, 4000);
            // å®šä¹‰è¾“入参数
            var parameters = new List<SugarParameter>
            {
                new("p_Release_No", dto.releaseNo, DbType.String,
                    ParameterDirection.Input),
                new("p_User", dto.userNo, DbType.String,
                    ParameterDirection.Input),
                outputResult,
                outputMessage
            };
            var db = SqlSugarHelper.GetInstance();
            // ä½¿ç”¨ SqlSugar æ‰§è¡Œå­˜å‚¨è¿‡ç¨‹
            db.Ado.ExecuteCommand(
                "BEGIN PRC_MES_OQC_QA_SUBMIT82(:p_Release_No, :p_User, :o_Result, :o_Msg); END;",
                parameters.ToArray());
            // èŽ·å–è¾“å‡ºå‚æ•°çš„å€¼
            var resultValue = outputResult.Value?.ToString();
            var messageValue = outputMessage.Value?.ToString();
            if ("1".Equals(resultValue)) throw new Exception(messageValue);
            return true;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    
    public int saveRemarksGid(LLJDto dto)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<MesOqcItemsDetect02>()
                .SetColumns(it =>
                    it.Remeke == dto.Remarks) //SetColumns是可以叠加的 å†™2个就2个字段赋值
                .Where(it => it.ReleaseNo == dto.releaseNo)
                .ExecuteCommand();
        });
    }
}
MESApplication/Controllers/QC/BaseController.cs
@@ -81,4 +81,33 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ¥æ–™æ£€å•ä¸ªæ£€éªŒå•ä¸Šä¼ çš„æ‰€æœ‰å›¾ç‰‡
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpPost("getLljAllImgByFid")]
    public ResponseResult getLljAllImgByFid([FromBody] JObject data)
    {
        var id = data["id"].ToString();
        var qsType = data["qsType"].ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new BaseService().getLljAllImgByFid(id, qsType);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
MESApplication/Controllers/QC/MesOqcItemsDetect02Controller.cs
@@ -4,6 +4,7 @@
using MES.Service.service.QC;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace MESApplication.Controllers.QC;
@@ -13,6 +14,160 @@
{
    private readonly MesOqcItemsDetect02Manager m = new();
    
    //saveRemarksGid ä¸»è¡¨æ·»åŠ ä¸åˆæ ¼æè¿°
    [HttpPost("saveRemarksGid")]
    public ResponseResult saveRemarksGid([FromBody] LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = m.saveRemarksGid(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //IqcQaSubmit
    [HttpPost("IqcQaSubmit")]
    public ResponseResult IqcQaSubmit(LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = m.IqcQaSubmit(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("saveRemarksPid")]
    public ResponseResult saveRemarksPid([FromBody] LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = m.saveRemarksPid(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("UpdateQSItemDetail")]
    public ResponseResult UpdateQSItemDetail(
        [FromBody] MesOqcItemsDetectDetail12 detail)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var detail021 = m.UpdateQSItemDetail(detail);
            resultInfos.tbBillList = detail021;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("getXjDetail02ById")]
    public ResponseResult getXjDetail02ById([FromBody] JObject data)
    {
        var id = data["id"]?.ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = m.getXjDetail02ById(Convert.ToDecimal(id));
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //ItemBarCodeSubmit(OQCDto dto)
    [HttpPost("ItemBarCodeSubmit")]
    public ResponseResult ItemBarCodeSubmit([FromBody] OQCDto dto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var item = m.ItemBarCodeSubmit(dto);
            var tbBillList =
                resultInfos.tbBillList = item;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = tbBillList
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetDetail5")]
    public ResponseResult GetDetail5([FromBody] OQCDto dto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var item = m.GetDetail5(dto);
            var tbBillList =
                resultInfos.tbBillList = item;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = tbBillList
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("getPage")]
    public ResponseResult getPage([FromBody] XJPageResult queryObj)
    {