啊鑫
2024-11-15 ac8cd71489628366930b48ed650e2559ec98d339
来料入库检
已添加11个文件
已修改1个文件
2037 ■■■■■ 文件已修改
Controllers/QC/LljController.cs 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/LLJDto.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/ResultClass.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/XJPageResult.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
NewPdaSqlServer.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/LLJView.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesQaIqc.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesQaItemsDetect01.cs 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesQaItemsDetectDetail12.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesQaItemsDetectDetail5.cs 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/QsItemOqcReq.cs 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/QC/LljService.cs 683 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/QC/LljController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,276 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.service.QC;
using NewPdaSqlServer.util;
using Newtonsoft.Json.Linq;
namespace NewPdaSqlServer.Controllers.QC;
[Route("api/[controller]")]
[ApiController]
public class LljController : ControllerBase
{
    [HttpPost("getPage")]
    public ResponseResult getPage([FromBody] XJPageResult queryObj)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var (item, totalCount) = new LljService().GetPage(queryObj);
            var tbBillList =
                resultInfos.tbBillList = item;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos,
                TotalCount = totalCount
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("setJYItem")]
    public ResponseResult setJYItem([FromBody] JObject data)
    {
        var itemNo = data["itemNo"].ToString();
        var quantity = Convert.ToDecimal(data["quantity"].ToString());
        var releaseNo = data["releaseNo"].ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().SetItems(itemNo, quantity, releaseNo);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("saveItem")]
    public ResponseResult saveItem([FromBody] LLJDto lljDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().saveItem(lljDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //getItems
    [HttpPost("getJYItem")]
    public ResponseResult getJYItem([FromBody] JObject data)
    {
        var id = data["id"]?.ToString();
        var releaseNo = data["releaseNo"]?.ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().GetItems(releaseNo,
                    Convert.ToDecimal(id));
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //getXjDetail02ById
    [HttpPost("getXjDetail02ById")]
    public ResponseResult getXjDetail02ById([FromBody] JObject data)
    {
        var id = data["id"]?.ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().getXjDetail02ById(id);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("SetQSItemDetail")]
    public ResponseResult SetQSItemDetail(
        [FromBody] MesQaItemsDetectDetail12 detail)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new LljService();
            var detail021 = tbBillList.SetQSItemDetail(detail);
            resultInfos.tbBillList = detail021;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("UpdateQSItemDetail")]
    public ResponseResult UpdateQSItemDetail(
        [FromBody] MesQaItemsDetectDetail12 detail)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new LljService();
            var detail021 = tbBillList.UpdateQSItemDetail(detail);
            resultInfos.tbBillList = detail021;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //saveRemarksGid ä¸»è¡¨æ·»åŠ ä¸åˆæ ¼æè¿°
    [HttpPost("saveRemarksGid")]
    public ResponseResult saveRemarksGid([FromBody] LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().saveRemarksGid(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //saveRemarksPid å­è¡¨æ·»åŠ ä¸åˆæ ¼æè¿°
    [HttpPost("saveRemarksPid")]
    public ResponseResult saveRemarksPid([FromBody] LLJDto rkjDto)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().saveRemarksPid(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    //removeXJ åˆ é™¤
    [HttpPost("removeXJ")]
    public ResponseResult removeXJ([FromBody] JObject data)
    {
        var releaseNo = data["releaseNo"]?.ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new LljService().removeXJ(releaseNo);
            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 =
                new LljService().IqcQaSubmit(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
Dto/service/LLJDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
using NewPdaSqlServer.entity;
namespace NewPdaSqlServer.Dto.service;
public class LLJDto
{
    public string? userNo { get; set; }
    //检验单号
    public string? releaseNo { get; set; }
    //主表id
    public string? gid { get; set; }
    //子表id
    public string? pid { get; set; }
    //孙表id
    public string? id { get; set; }
    //备注
    public string? Remarks { get; set; }
    //==========================================
    //巡检主子表需要的数据
    public QsItemOqcReq? from { get; set; }
    public List<MesQaItemsDetectDetail5>? items { get; set; }
    //==========================================
    //巡检子孙表需要的数据
    public MesQaItemsDetectDetail5? ItemXj01 { get; set; }
    public List<MesQaItemsDetectDetail12>? ItemXj02s { get; set; }
}
Dto/service/ResultClass.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
namespace NewPdaSqlServer.Dto.service;
public class ResultClass
{
    public decimal FSAMPLE_SIZE_WORD { get; set; }
    public decimal Result { get; set; }
}
Dto/service/XJPageResult.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using NewPdaSqlServer.Dto.@base;
namespace NewPdaSqlServer.Dto.service;
public class XJPageResult : Page
{
    public string? createUser { get; set; }
    public string? result { get; set; }
    public string? id { get; set; }
}
NewPdaSqlServer.csproj
@@ -13,8 +13,4 @@
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.8.0" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Dto\" />
  </ItemGroup>
</Project>
entity/LLJView.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
using SqlSugar;
namespace NewPdaSqlServer.entity;
/// <summary>
///     æ•°æ®æºå¯¼å…¥
/// </summary>
[SugarTable("V_LLJ")]
public class LLJView
{
    /// <summary>
    ///
    ///</summary>
    [SugarColumn(ColumnName = "guid")]
    public Guid guid { get; set; }
    [SugarColumn(ColumnName = "fsubmit")]
    public int? fsubmit{ get; set; }
    /// <summary>
    ///     å®¡æ ¸æ ‡è¯†
    /// </summary>
    [SugarColumn(ColumnName = "MODIFY1_FLAG")]
    public decimal? Modify1Flag { get; set; }
    /// <summary>
    ///     é€æ£€æ‰¹æ¬¡
    /// </summary>
    [SugarColumn(ColumnName = "LOT_NO")]
    public string LotNo { get; set; }
    /// <summary>
    ///     å¤„理方法
    /// </summary>
    [SugarColumn(ColumnName = "FNG_HANDLE")]
    public string FngHandle { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç‰ˆæœ¬
    /// </summary>
    [SugarColumn(ColumnName = "FVERSION")]
    public decimal? Fversion { get; set; }
    /// <summary>
    ///     å¤‡æ³¨ä¿¡æ¯
    /// </summary>
    [SugarColumn(ColumnName = "LOT_NO1")]
    public string LotNo1 { get; set; }
    /// <summary>
    ///     è½¬æ¢æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "FCOVERT_QTY")]
    public string FcovertQty { get; set; }
    /// <summary>
    ///     æ£€éªŒç»“æžœ
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_RESU")]
    public string FcheckResu { get; set; }
    /// <summary>
    ///     ä¾›åº”商编码
    /// </summary>
    [SugarColumn(ColumnName = "SUPP_NO")]
    public string SuppNo { get; set; }
    /// <summary>
    ///     æ£€éªŒå•号
    /// </summary>
    [SugarColumn(ColumnName = "RELEASE_NO")]
    public string ReleaseNo { get; set; }
    /// <summary>
    ///     é‡‡è´­æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "FBATCH_QTY")]
    public string FbatchQty { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    /// <summary>
    ///     æ£€éªŒäººå‘˜
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_BY")]
    public string FcheckBy { get; set; }
    /// <summary>
    ///     ä¸è‰¯æè¿°
    /// </summary>
    [SugarColumn(ColumnName = "FNG_DESC")]
    public string FngDesc { get; set; }
    /// <summary>
    ///     åˆ›å»ºäºº
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_BY")]
    public string CreateBy { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public string CreateDate { get; set; }
    /// <summary>
    ///     æ˜¯å¦æ€¥æ–™
    /// </summary>
    [SugarColumn(ColumnName = "URGENT_FLAG")]
    public short? UrgentFlag { get; set; }
    /// <summary>
    ///     ç‰©æ–™åç§°
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NAME")]
    public string ItemName { get; set; }
    /// <summary>
    ///     æ£€éªŒç±»åž‹
    /// </summary>
    [SugarColumn(ColumnName = "QATYPE")]
    public string Qatype { get; set; }
    /// <summary>
    ///     æ£€éªŒæ—¥æœŸ
    /// </summary>
    [SugarColumn(ColumnName = "DATE_01")]
    public string Date01 { get; set; }
    /// <summary>
    ///     ä¾›åº”商名称
    /// </summary>
    [SugarColumn(ColumnName = "SUPP_NAME")]
    public string SuppName { get; set; }
    /// <summary>
    ///     ç‰©æ–™è§„æ ¼
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_MODEL")]
    public string ItemModel { get; set; }
    /// <summary>
    ///     å•据状态
    /// </summary>
    [SugarColumn(ColumnName = "STATUS")]
    public string STATUS { get; set; }
    /// <summary>
    ///     å§”外标识(0:采购 ã€1:委外)
    /// </summary>
    [SugarColumn(ColumnName = "F_TYPE")]
    public bool? Ftype { get; set; }
}
entity/MesQaIqc.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
using SqlSugar;
namespace NewPdaSqlServer.entity;
/// <summary>
///     æ•°æ®æºå¯¼å…¥
/// </summary>
[SugarTable("Mes_Qa_Iqc")]
public class MesQaIqc
{
    /// <summary>
    ///     ç‰©æ–™id
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_ID")]
    public string ItemId { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string ItemNo { get; set; }
    /// <summary>
    ///     æŽ¥æ”¶æ°´å¹³
    /// </summary>
    [SugarColumn(ColumnName = "FAC_LEVEL")]
    public string FacLevel { get; set; }
    /// <summary>
    ///     æ£€éªŒé¡¹ç›®
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_ITEM")]
    public string FcheckItem { get; set; }
    /// <summary>
    ///     æ£€éªŒå·¥å…·
    /// </summary>
    [SugarColumn(ColumnName = "FCHECK_TOOL")]
    public string FcheckTool { get; set; }
    /// <summary>
    ///     ä¸‹é™
    /// </summary>
    [SugarColumn(ColumnName = "FDOWN_ALLOW")]
    public string FdownAllow { get; set; }
    /// <summary>
    ///     æ£€éªŒæ°´å¹³
    /// </summary>
    [SugarColumn(ColumnName = "FREQUENCY")]
    public string FREQUENCY { get; set; }
    /// <summary>
    ///     æ ‡å‡†
    /// </summary>
    [SugarColumn(ColumnName = "FSTAND")]
    public string FSTAND { get; set; }
    /// <summary>
    ///     ä¸Šé™
    /// </summary>
    [SugarColumn(ColumnName = "FUP_ALLOW")]
    public string FupAllow { get; set; }
    /// <summary>
    ///     æ£€éªŒæ°´å‡†ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "SAMPLE_SIZE_NO")]
    public string SampleSizeNo { get; set; }
    /// <summary>
    ///     è§„格要求
    /// </summary>
    [SugarColumn(ColumnName = "FSPEC_REQU")]
    public string FspecRequ { get; set; }
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "ISENABLED")]
    public short? ISENABLED { get; set; }
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "EE")]
    public short? EE { get; set; }
    /// <summary>
    /// </summary>
    [SugarColumn(ColumnName = "FTYPE")]
    public string FTYPE { get; set; }
}
entity/MesQaItemsDetect01.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,397 @@
using SqlSugar;
namespace NewPdaSqlServer.entity
{
    /// <summary>
    ///
    ///</summary>
    [SugarTable("MES_QA_ITEMS_DETECT_01")]
    public class MesQaItemsDetect01
    {
        /// <summary>
        ///
        /// é»˜è®¤å€¼: (newid())
        ///</summary>
        [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
        public Guid Guid { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "about_Guid")]
        public Guid? AboutGuid { get; set; }
        /// <summary>
        /// æ£€éªŒå•号
        ///</summary>
        [SugarColumn(ColumnName = "release_no")]
        public string ReleaseNo { get; set; }
        /// <summary>
        /// æ£€éªŒæ—¥æœŸ
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_date")]
        public DateTime? FcheckDate { get; set; }
        /// <summary>
        /// æ£€éªŒäººå‘˜
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_by")]
        public string FcheckBy { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        ///</summary>
        [SugarColumn(ColumnName = "item_no")]
        public string ItemNo { get; set; }
        /// <summary>
        /// æ¥æ–™æ•°é‡
        ///</summary>
        [SugarColumn(ColumnName = "fbatch_qty")]
        public decimal? FbatchQty { get; set; }
        /// <summary>
        /// åˆ¤å®šç»“æžœ
        ///</summary>
        [SugarColumn(ColumnName = "frece_qty")]
        public string FreceQty { get; set; }
        /// <summary>
        /// ä¾›åº”商ID
        ///</summary>
        [SugarColumn(ColumnName = "supp_id")]
        public string SuppId { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "fng_desc")]
        public string FngDesc { get; set; }
        /// <summary>
        /// æ£€éªŒç»“æžœ
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_resu")]
        public string FcheckResu { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "freview")]
        public string Freview { get; set; }
        /// <summary>
        /// æ£€éªŒæ°´å‡†
        ///</summary>
        [SugarColumn(ColumnName = "sample_size_no")]
        public string SampleSizeNo { get; set; }
        /// <summary>
        /// æ£€éªŒæ°´å¹³
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_level")]
        public string FcheckLevel { get; set; }
        /// <summary>
        /// æ‹’æ”¶æ°´å¹³
        ///</summary>
        [SugarColumn(ColumnName = "fac_level")]
        public string FacLevel { get; set; }
        /// <summary>
        /// æŠ½æ£€æ•°é‡
        ///</summary>
        [SugarColumn(ColumnName = "check_qty")]
        public string CheckQty { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·  --到货单号
        ///</summary>
        [SugarColumn(ColumnName = "lot_no")]
        public string LotNo { get; set; }
        /// <summary>
        /// æ˜¯å¦æŽ¨é€
        ///</summary>
        [SugarColumn(ColumnName = "fmove")]
        public string Fmove { get; set; }
        /// <summary>
        /// æ˜¯å¦å¤„理
        ///</summary>
        [SugarColumn(ColumnName = "fhandle")]
        public string Fhandle { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        ///</summary>
        [SugarColumn(ColumnName = "create_by")]
        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; }
        /// <summary>
        /// æ›´æ–°æ—¥æœŸ
        ///</summary>
        [SugarColumn(ColumnName = "lastupdate_date")]
        public DateTime? LastupdateDate { get; set; }
        /// <summary>
        /// æ˜¯å¦å®¡æ ¸
        ///</summary>
        [SugarColumn(ColumnName = "modify1_flag")]
        public int? Modify1Flag { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "modify1_by")]
        public string Modify1By { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "modify1_date")]
        public DateTime? Modify1Date { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "factory")]
        public string Factory { get; set; }
        /// <summary>
        /// XRF测试报告编号
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_repno")]
        public string FcheckRepno { get; set; }
        /// <summary>
        /// ç¬¬ä¸‰æ–¹æŠ¥å‘Š
        ///</summary>
        [SugarColumn(ColumnName = "fthird_rep")]
        public string FthirdRep { get; set; }
        /// <summary>
        /// æ˜¯å¦ä½œåºŸ
        ///</summary>
        [SugarColumn(ColumnName = "fcancel")]
        public int? Fcancel { get; set; }
        /// <summary>
        /// æäº¤æ ‡è¯†
        ///</summary>
        [SugarColumn(ColumnName = "fsubmit")]
        public int? Fsubmit { get; set; }
        /// <summary>
        /// æ£€éªŒä¾æ®
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_accord")]
        public string FcheckAccord { get; set; }
        /// <summary>
        /// ç±»åž‹(0 æ¥æ–™ 1 åœ¨åº“)
        ///</summary>
        [SugarColumn(ColumnName = "ftype")]
        public int? Ftype { get; set; }
        /// <summary>
        /// å•位
        ///</summary>
        [SugarColumn(ColumnName = "item_unit")]
        public string ItemUnit { get; set; }
        /// <summary>
        /// å‡ºè´§æ—¥æœŸ
        ///</summary>
        [SugarColumn(ColumnName = "out_date")]
        public string OutDate { get; set; }
        /// <summary>
        /// æ˜¯å¦å…æ£€
        ///</summary>
        [SugarColumn(ColumnName = "fexemption")]
        public int? Fexemption { get; set; }
        /// <summary>
        /// æ¡£ä½æ ‡å‡†
        ///</summary>
        [SugarColumn(ColumnName = "fgear_stand")]
        public string FgearStand { get; set; }
        /// <summary>
        /// ä¸è‰¯å¤„理方法
        ///</summary>
        [SugarColumn(ColumnName = "fng_handle")]
        public string FngHandle { get; set; }
        /// <summary>
        /// ç®¡ç†ç¼–号
        ///</summary>
        [SugarColumn(ColumnName = "fmanage_no")]
        public string FmanageNo { get; set; }
        /// <summary>
        /// è½¬æ¢æ•°é‡
        ///</summary>
        [SugarColumn(ColumnName = "fcovert_qty")]
        public string FcovertQty { get; set; }
        /// <summary>
        /// ç‰ˆæœ¬
        ///</summary>
        [SugarColumn(ColumnName = "fversion")]
        public int? Fversion { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "company")]
        public string Company { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "fsecond_resu")]
        public string FsecondResu { get; set; }
        /// <summary>
        /// æœ€å¤§æŠ½æ£€æ•°
        ///</summary>
        [SugarColumn(ColumnName = "max_check_qty")]
        public int? MaxCheckQty { get; set; }
        /// <summary>
        /// ç‰¹å®šä¿®æ”¹æ˜¯å¦å®¡æ ¸
        ///</summary>
        [SugarColumn(ColumnName = "modify1_flag1")]
        public int? Modify1Flag1 { get; set; }
        /// <summary>
        /// ç‰¹å®šä¿®æ”¹å®¡æ ¸äºº
        ///</summary>
        [SugarColumn(ColumnName = "modify1_by1")]
        public string Modify1By1 { get; set; }
        /// <summary>
        /// ç‰¹å®šä¿®æ”¹å®¡æ ¸æ—¶é—´
        ///</summary>
        [SugarColumn(ColumnName = "modify1_date1")]
        public DateTime? Modify1Date1 { get; set; }
        /// <summary>
        /// å°æ‰¹æ¬¡å·
        ///</summary>
        [SugarColumn(ColumnName = "lot_no1")]
        public string LotNo1 { get; set; }
        /// <summary>
        /// é‡‡è´­å•号
        ///</summary>
        [SugarColumn(ColumnName = "lot_no2")]
        public string LotNo2 { get; set; }
        /// <summary>
        /// äº§å“åž‹å·
        ///</summary>
        [SugarColumn(ColumnName = "board_style")]
        public string BoardStyle { get; set; }
        /// <summary>
        /// ä»»åŠ¡å•å·
        ///</summary>
        [SugarColumn(ColumnName = "work_no")]
        public string WorkNo { get; set; }
        /// <summary>
        /// åˆ°è´§æ—¶é—´
        ///</summary>
        [SugarColumn(ColumnName = "dha018")]
        public string Dha018 { get; set; }
        /// <summary>
        /// è¡Œå·
        ///</summary>
        [SugarColumn(ColumnName = "dhb002")]
        public int? Dhb002 { get; set; }
        /// <summary>
        /// åˆ°è´§å•号
        ///</summary>
        [SugarColumn(ColumnName = "dhb001")]
        public string Dhb001 { get; set; }
        /// <summary>
        /// ä¾›åº”商
        ///</summary>
        [SugarColumn(ColumnName = "lifnr")]
        public string Lifnr { get; set; }
        /// <summary>
        /// é€€æ–™æ–¹å¼
        ///</summary>
        [SugarColumn(ColumnName = "fmrmode")]
        public string Fmrmode { get; set; }
        /// <summary>
        /// erp返回信息
        ///</summary>
        [SugarColumn(ColumnName = "msg")]
        public string Msg { get; set; }
        /// <summary>
        /// çŠ¶æ€
        ///</summary>
        [SugarColumn(ColumnName = "states")]
        public string States { get; set; }
        /// <summary>
        /// IQC提交时间
        ///</summary>
        [SugarColumn(ColumnName = "iqc_date")]
        public DateTime? IqcDate { get; set; }
        /// <summary>
        /// é‡‡è´­è®¢å•ID
        ///</summary>
        [SugarColumn(ColumnName = "ebeln_k3id")]
        public int? EbelnK3id { get; set; }
        /// <summary>
        /// é‡‡è´­è®¢å•行ID
        ///</summary>
        [SugarColumn(ColumnName = "line_k3id")]
        public int? LineK3id { get; set; }
        /// <summary>
        /// è´¨é‡å®¡æ ¸æ ‡è¯†
        /// é»˜è®¤å€¼: ((0))
        ///</summary>
        [SugarColumn(ColumnName = "quality_audit")]
        public int? QualityAudit { get; set; }
        /// <summary>
        /// ç‰©æ–™ID
        ///</summary>
        [SugarColumn(ColumnName = "item_id")]
        public int? ItemId { get; set; }
        /// <summary>
        /// ä¸è‰¯æè¿°
        ///</summary>
        [SugarColumn(ColumnName = "remarks")]
        public string Remarks { get; set; }
    }
}
entity/MesQaItemsDetectDetail12.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace NewPdaSqlServer.entity
{
    /// <summary>
    ///
    ///</summary>
    [SugarTable("MES_QA_ITEMS_DETECT_DETAIL12")]
    public class MesQaItemsDetectDetail12
    {
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
        public Guid Guid { get; set; }
        /// <summary>
        /// çˆ¶äº²Guid
        ///</summary>
        [SugarColumn(ColumnName = "parent_guid")]
        public Guid? ParentGuid { get; set; }
        /// <summary>
        /// çˆ·çˆ·Guid
        ///</summary>
        [SugarColumn(ColumnName = "grandpa_guid")]
        public Guid? GrandpaGuid { get; set; }
        /// <summary>
        /// æ£€éªŒç»“æžœ
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_resu")]
        public string? FcheckResu { get; set; }
        /// <summary>
        /// æ£€éªŒé¡¹ç›®
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_item")]
        public string? FcheckItem { get; set; }
        /// <summary>
        /// ç‰©æ–™æ¡ç 
        ///</summary>
        [SugarColumn(ColumnName = "item_barcode")]
        public string? ItemBarcode { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "create_date")]
        public DateTime? CreateDate { get; set; }
        /// <summary>
        /// åˆ¤å®šæ ‡å¿—
        ///</summary>
        [SugarColumn(ColumnName = "fstand")]
        public string? Fstand { get; set; }
        /// <summary>
        /// ç”Ÿæˆäºº
        ///</summary>
        [SugarColumn(ColumnName = "lastupdate_by")]
        public string? LastupdateBy { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "create_by")]
        public string? CreateBy { get; set; }
        [SugarColumn(IsIgnore = true)] public int? count { get; set; }
    }
}
entity/MesQaItemsDetectDetail5.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
using SqlSugar;
namespace NewPdaSqlServer.entity
{
    /// <summary>
    ///
    ///</summary>
    [SugarTable("MES_QA_ITEMS_DETECT_DETAIL5")]
    public class MesQaItemsDetectDetail5
    {
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
        public Guid Guid { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "parent_guid")]
        public Guid? ParentGuid { get; set; }
        /// <summary>
        /// æ ‡å‡†å€¼ç±»åž‹
        ///</summary>
        [SugarColumn(ColumnName = "ftext_type")]
        public string? FtextType { get; set; }
        /// <summary>
        /// æ ‡å‡†å€¼
        ///</summary>
        [SugarColumn(ColumnName = "fstand")]
        public int? Fstand { get; set; }
        /// <summary>
        /// ä¸Šå…¬å·®
        ///</summary>
        [SugarColumn(ColumnName = "fup_allow")]
        public string? FupAllow { get; set; }
        /// <summary>
        /// ä¸‹å…¬å·®
        ///</summary>
        [SugarColumn(ColumnName = "fdown_allow")]
        public string? FdownAllow { get; set; }
        /// <summary>
        /// æ£€éªŒæ°´å‡†
        ///</summary>
        [SugarColumn(ColumnName = "sample_size_no")]
        public string? SampleSizeNo { get; set; }
        /// <summary>
        /// æ£€éªŒæ°´å¹³
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_level")]
        public string? FcheckLevel { get; set; }
        /// <summary>
        /// æ‹’æ”¶æ°´å¹³
        ///</summary>
        [SugarColumn(ColumnName = "fac_level")]
        public string? FacLevel { get; set; }
        /// <summary>
        /// æ£€éªŒé¡¹ç›®
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_item")]
        public string? FcheckItem { get; set; }
        /// <summary>
        /// è§„格要求
        ///</summary>
        [SugarColumn(ColumnName = "fspec_requ")]
        public string? FspecRequ { get; set; }
        /// <summary>
        /// æŠ½æ£€æ•°é‡
        ///</summary>
        [SugarColumn(ColumnName = "check_qyt")]
        public int? CheckQyt { get; set; }
        /// <summary>
        /// æ£€éªŒç»“æžœ
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_resu")]
        public string? FcheckResu { get; set; }
        /// <summary>
        /// AC数量
        ///</summary>
        [SugarColumn(ColumnName = "fac_qty")]
        public int? FacQty { get; set; }
        /// <summary>
        /// RE数量
        ///</summary>
        [SugarColumn(ColumnName = "fre_qty")]
        public int? FreQty { get; set; }
        /// <summary>
        /// ä¸åˆæ ¼æ•°
        ///</summary>
        [SugarColumn(ColumnName = "fng_qty")]
        public int? FngQty { get; set; }
        /// <summary>
        /// ä¸è‰¯çއ
        ///</summary>
        [SugarColumn(ColumnName = "fng_rate")]
        public decimal? FngRate { get; set; }
        /// <summary>
        /// å·²å½•入数量
        ///</summary>
        [SugarColumn(ColumnName = "fenter_qty")]
        public decimal? FenterQty { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "release_no")]
        public string? ReleaseNo { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "company")]
        public string? Company { get; set; }
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "factory")]
        public string? Factory { get; set; }
        /// <summary>
        /// æ£€éªŒé¡¹ç›®æè¿°
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_item_desc")]
        public string? FcheckItemDesc { get; set; }
        /// <summary>
        /// å·¥åºå·
        ///</summary>
        [SugarColumn(ColumnName = "proc_no")]
        public string? ProcNo { get; set; }
        /// <summary>
        /// å·¥ä½œä¸­å¿ƒç¼–码
        ///</summary>
        [SugarColumn(ColumnName = "workshop_center_code")]
        public string? WorkshopCenterCode { get; set; }
        /// <summary>
        /// å•位
        ///</summary>
        [SugarColumn(ColumnName = "funit")]
        public string? Funit { get; set; }
        /// <summary>
        /// ç‰¹å®šä¿®æ”¹
        /// é»˜è®¤å€¼: ((0))
        ///</summary>
        [SugarColumn(ColumnName = "given_modify")]
        public int? GivenModify { get; set; }
        /// <summary>
        /// æ£€éªŒå·¥å…·
        ///</summary>
        [SugarColumn(ColumnName = "fcheck_tool")]
        public string? FcheckTool { get; set; }
        /// <summary>
        /// æ›´æ–°äºº
        ///</summary>
        [SugarColumn(ColumnName = "lastupdate_by")]
        public string? LastupdateBy { get; set; }
        /// <summary>
        /// æ›´æ–°æ—¶é—´
        ///</summary>
        [SugarColumn(ColumnName = "lastupdate_date")]
        public DateTime? LastupdateDate { get; set; }
        /// <summary>
        /// ä¸åˆæ ¼æè¿°
        ///</summary>
        [SugarColumn(ColumnName = "remarks")]
        public string? Remarks { get; set; }
        [SugarColumn(IsIgnore = true)] public int? Unqualified { get; set; }
    }
}
entity/QsItemOqcReq.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace NewPdaSqlServer.entity
{
    /// <summary>
    /// å…¥åº“检检验表头
    ///</summary>
    [SugarTable("QS_ITEM_OQC_REQ")]
    public class QsItemOqcReq
    {
        /// <summary>
        ///
        /// é»˜è®¤å€¼: (newid())
        ///</summary>
         [SugarColumn(ColumnName="guid" ,IsPrimaryKey = true   )]
         public Guid Guid { get; set; }
        /// <summary>
        /// æ£€éªŒå•号
        ///</summary>
         [SugarColumn(ColumnName="RELEASE_NO"    )]
         public string ReleaseNo { get; set; }
        /// <summary>
        /// æ£€éªŒæ—¥æœŸ
        ///</summary>
         [SugarColumn(ColumnName="FCHECK_DATE"    )]
         public DateTime? FcheckDate { get; set; }
        /// <summary>
        /// æ£€éªŒäººå‘˜
        ///</summary>
         [SugarColumn(ColumnName="FCHECK_BY"    )]
         public string FcheckBy { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        ///</summary>
         [SugarColumn(ColumnName="ITEM_NO"    )]
         public string ItemNo { get; set; }
        /// <summary>
        /// æ£€éªŒç»“æžœ
        ///</summary>
         [SugarColumn(ColumnName="FCHECK_RESU"    )]
         public string FcheckResu { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        ///</summary>
         [SugarColumn(ColumnName="CREATE_BY"    )]
         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; }
        /// <summary>
        /// æ›´æ–°æ—¥æœŸ
        ///</summary>
         [SugarColumn(ColumnName="LASTUPDATE_DATE"    )]
         public DateTime? LastupdateDate { get; set; }
        /// <summary>
        ///
        ///</summary>
         [SugarColumn(ColumnName="MODIFY1_BY"    )]
         public string Modify1By { get; set; }
        /// <summary>
        /// å…¥åº“申请单号
        ///</summary>
         [SugarColumn(ColumnName="BILL_NO"    )]
         public string BillNo { get; set; }
        /// <summary>
        /// æ¨¡å…·å·
        ///</summary>
         [SugarColumn(ColumnName="MOID_NUM"    )]
         public string MoidNum { get; set; }
        /// <summary>
        ///
        ///</summary>
         [SugarColumn(ColumnName="FSUBMIT_BY"    )]
         public string FsubmitBy { get; set; }
        /// <summary>
        ///
        ///</summary>
         [SugarColumn(ColumnName="FSUBMIT_DATE"    )]
         public DateTime? FsubmitDate { get; set; }
        /// <summary>
        ///
        ///</summary>
         [SugarColumn(ColumnName="FSUBMIT"    )]
         public int? Fsubmit { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        ///</summary>
         [SugarColumn(ColumnName="REMARKS"    )]
         public string Remarks { get; set; }
        /// <summary>
        /// ç‰©æ–™ID
        ///</summary>
         [SugarColumn(ColumnName="ITEM_ID"    )]
         public int? ItemId { get; set; }
    }
}
service/QC/LljService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,683 @@
using System.Data;
using Microsoft.IdentityModel.Tokens;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using SqlSugar;
using DbType = System.Data.DbType;
namespace NewPdaSqlServer.service.QC;
public class LljService : RepositoryNoEntity
{
    public (List<LLJView> item, int TotalCount) GetPage(XJPageResult queryObj)
    {
        var parsedGuid = Guid.Empty;
        if (!queryObj.id.IsNullOrEmpty())
        {
            bool isValid = Guid.TryParse(queryObj.id, out parsedGuid);
            if (!isValid)
                throw new ApplicationException("GUID转换错误");
        }
        var totalCount = 0;
        var pageList = Db.Queryable<LLJView>()
            .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(UtilityHelper.CheckGuid(parsedGuid),
                a => a.guid == parsedGuid)
            .OrderByDescending(a => a.CreateDate)
            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
        return (pageList, totalCount);
    }
    //根据检验标准来计算检验个数
    public List<MesQaItemsDetectDetail5> SetItems(string itemId,
        decimal quantity, string releaseNo)
    {
        var count = Db.Queryable<MesQaIqc>().Where(s => s.EE == 1 &&
            s.ISENABLED == 1
            && s.ItemId == itemId && s.FTYPE == "1").Count();
        if (count <= 0) return [];
        var mesQaIqcItem = Db
            .Queryable<MesQaIqc>().Where(s => s.EE == 1 && s.ISENABLED == 1
                && s.ItemId == itemId && s.FTYPE == "1").Select(
                b => new MesQaItemsDetectDetail5
                {
                    ReleaseNo = releaseNo,
                    FacLevel = b.FacLevel,
                    FcheckItem = b.FcheckItem,
                    FdownAllow = b.FdownAllow,
                    FcheckLevel = b.FREQUENCY,
                    Fstand = Convert.ToInt32(b.FSTAND),
                    FupAllow = b.FupAllow,
                    SampleSizeNo = b.SampleSizeNo,
                    FenterQty = 0,
                    Factory = "1000",
                    Company = "1000",
                    FcheckTool = b.FcheckTool,
                    FspecRequ = b.FspecRequ
                }).ToList();
        mesQaIqcItem.ForEach(item =>
        {
            string LEV = item.FcheckLevel switch
            {
                null => "" // é»˜è®¤å€¼
                ,
                { } s when s.Contains("S1") => "B.FLEVEL_S1",
                { } s when s.Contains("S2") => "B.FLEVEL_S2",
                { } s when s.Contains("S3") => "B.FLEVEL_S3",
                { } s when s.Contains("S4") => "B.FLEVEL_S4",
                { } s when s.Contains("(I)") => "B.FLEVEL_I",
                { } s when s.Contains("(II)") => "B.FLEVEL_II",
                { } s when s.Contains("(III)") => "B.FLEVEL_III",
                _ => ""
            };
            if (string.IsNullOrEmpty(LEV))
                throw new Exception(item.SampleSizeNo + "的检验水平不正确");
            var sql =
                "SELECT " + LEV +
                " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.guid WHERE A.SAMPLE_SIZE_NO='" +
                item.SampleSizeNo + "' AND B.LOT_FROM<= " + quantity +
                "   AND " +
                quantity + "<=B.LOT_TO";
            var maxBillNo = Db.Ado.SqlQuerySingle<string>(sql);
            if (string.IsNullOrEmpty(maxBillNo))
                throw new Exception(item.SampleSizeNo + "下的" + quantity +
                                    "这个范围下没有匹配到检验项目");
            var result = ExtractSubstring(item.FacLevel, '(', ')');
            if (string.IsNullOrEmpty(result))
                throw new Exception(item.SampleSizeNo + "下的" + quantity +
                                    "拒收水平不正确");
            sql = "SELECT FSAMPLE_SIZE_WORD, " + result +
                  " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" +
                  item.SampleSizeNo + "'  AND SAMPLE_SIZE_WORD= '" + maxBillNo +
                  "'";
            var resultClass = Db.Ado.SqlQuerySingle<ResultClass>(sql);
            item.CheckQyt = (int)resultClass.FSAMPLE_SIZE_WORD;
            item.FreQty = (int)resultClass.Result;
        });
        return mesQaIqcItem;
    }
    private string ExtractSubstring(string input, char startChar, char endChar)
    {
        var startIndex = input.IndexOf(startChar);
        var endIndex = input.IndexOf(endChar, startIndex);
        if (startIndex == -1 || endIndex == -1)
            // å¦‚果未找到起始字符或结束字符,则返回空字符串或者抛出异常,根据实际情况选择
            return string.Empty;
        // æˆ–者抛出异常
        // throw new ArgumentException("Start or end character not found");
        // æå–子字符串
        var length = endIndex - startIndex - 1;
        return input.Substring(startIndex + 1, length);
    }
    public int saveItem(LLJDto rkjDto)
    {
        var items = rkjDto.items;
        var userNo = rkjDto.userNo;
        UseTransaction(db =>
        {
            foreach (var item in items) item.ReleaseNo = rkjDto.releaseNo;
            return db.Insertable(items).ExecuteCommand();
        });
        rkjDto.items = GetItems(rkjDto.releaseNo, null);
        rkjDto.items.ForEach(s =>
        {
            if (s.FupAllow != null || s.Fstand != null ||
                s.FdownAllow != null) return;
            // æ²¡æœ‰å½•入参考值,判断有多少个NG,那么录入的抽检结果必须是OK或者NG,NG代表不合格
            var ifck = Db.Queryable<MesQaItemsDetectDetail12>()
                .Where(x => x.FcheckResu == "NG" && x.ParentGuid == s.Guid)
                .Count();
            //检验明细总数
            var count = Db.Queryable<MesQaItemsDetectDetail12>()
                .Where(x1 => x1.ParentGuid == s.Guid).Count();
            if (ifck > s.FreQty && s.CheckQyt == count)
                s.FcheckResu = "不合格";
            else if (ifck < s.FreQty && s.CheckQyt == count)
                s.FcheckResu = "合格";
            else
                s.FcheckResu = "未完成";
            var detail = new MesQaItemsDetectDetail12();
            detail.ParentGuid = s.Guid;
            // detail.ReleaseNo = rkjDto.releaseNo;
            detail.Fstand = "√";
            detail.FcheckResu = "OK";
            detail.LastupdateBy = rkjDto.userNo;
            detail.count = s.CheckQyt;
            SetQSItemDetail(detail);
        });
        return Convert.ToInt32(rkjDto.gid);
    }
    public List<MesQaItemsDetectDetail5> GetItems(string? releaseNo,
        decimal? id)
    {
        return Db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>(
                (a, b) =>
                    new JoinQueryInfos(JoinType.Left, a.Guid == b.ParentGuid))
            .Where((a, b) => a.ReleaseNo == releaseNo)
            // .WhereIF(id > 0, (a, b) => a.Id == id)
            .GroupBy((a, b) => new
            {
                a.Guid,
                a.ReleaseNo,
                a.FacLevel,
                a.FcheckItem,
                a.FcheckTool,
                a.FdownAllow,
                a.FcheckLevel,
                a.Fstand,
                a.FupAllow,
                a.SampleSizeNo,
                a.FspecRequ,
                a.FreQty,
                a.CheckQyt,
                a.FcheckResu
            }).Select((a, b) => new MesQaItemsDetectDetail5
            {
                Guid = a.Guid,
                ReleaseNo = a.ReleaseNo,
                CheckQyt = a.CheckQyt,
                FacLevel = a.FacLevel,
                FcheckItem = a.FcheckItem,
                FcheckTool = a.FcheckTool,
                FdownAllow = a.FdownAllow,
                FcheckLevel = a.FcheckLevel,
                Fstand = a.Fstand,
                FupAllow = a.FupAllow,
                SampleSizeNo = a.SampleSizeNo,
                FspecRequ = a.FspecRequ,
                FreQty = a.FreQty,
                Factory = "1000",
                Company = "1000",
                FenterQty = SqlFunc.AggregateCount(b.Guid),
                FcheckResu = a.FcheckResu
            }).ToList();
    }
    public int SetQSItemDetail(MesQaItemsDetectDetail12 detail)
    {
        var oracle = UseTransaction(db =>
        {
            List<MesQaItemsDetectDetail12> result = new();
            for (var i = 0; i < detail.count; i++)
            {
                var item = new MesQaItemsDetectDetail12();
                item.ParentGuid = detail.ParentGuid;
                item.Fstand = detail.Fstand;
                item.FcheckResu = detail.FcheckResu;
                item.CreateBy = detail.LastupdateBy;
                item.CreateDate = DateTime.Now;
                result.Add(item);
            }
            return db.Insertable(result).ExecuteCommand();
        });
        detail.CreateBy = detail.LastupdateBy;
        autoResult(detail);
        return oracle;
    }
    private int autoResult(MesQaItemsDetectDetail12 detail)
    {
        // Single æ²¡æœ‰æŸ¥è¯¢åˆ°ç»“果时返回Null,如果结果大于1条会抛出错误
        var QsItemOqcItem = Db.Queryable<MesQaItemsDetectDetail5>()
            .Single(s => s.Guid == detail.ParentGuid);
        if (QsItemOqcItem == null) return 0;
        //查询这个检验项目下的检验结果
        var count = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == detail.ParentGuid).Count();
        updateDetail5(detail);
        var result = "";
        //检验实际结果不等于应该检验的个数时直接推出
        if (QsItemOqcItem.CheckQyt != count) return 0;
        //合格的有多少个
        var passCount = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == detail.ParentGuid && s.Fstand == "√")
            .Count();
        //不合格的有多少个
        var noCount = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == detail.ParentGuid && s.Fstand == "×")
            .Count();
        if (count == passCount)
            result = "合格";
        //else if (count - passCount < QsItemOqcItem.FreQty)
        //    result = "不合格";
        else if (noCount >= QsItemOqcItem.FreQty)
            result = "不合格";
        var useTransactionWithOracle = UseTransaction(
            db =>
            {
                var commit = 0;
                commit += db.Updateable<MesQaItemsDetectDetail5>()
                    .SetColumns(s => s.FcheckResu == result)
                    .SetColumns(s => s.FenterQty == count)
                    .Where(s => s.Guid == detail.ParentGuid)
                    .ExecuteCommand();
                return commit;
            });
        var isNull = Db.Queryable<MesQaItemsDetectDetail5>()
            .Where(s => s.Guid == detail.ParentGuid && s.FcheckResu == null)
            .Count();
        if (isNull > 0) return 1;
        //获取检验单的检验项目的个数
        var sum = Db.Queryable<MesQaItemsDetectDetail5>()
            .Where(s => s.Guid == detail.ParentGuid).Count();
        if (sum == 0) return 1;
        //获取检验单下的合格的检验项目个数
        var icount = Db.Queryable<MesQaItemsDetectDetail5>()
            .Where(s => s.Guid == detail.ParentGuid && s.FcheckResu == "合格")
            .Count();
        var FcheckResu = "不合格";
        //实际个数等于理论个数时对检验单进行判定
        if (sum == icount)
            //合格的检验结果等于总检验数视为合格
            FcheckResu = "合格";
        var sysUser = Db.Queryable<SysUser>()
            .Where(s => s.Account == detail.CreateBy).First();
        UseTransaction(db =>
        {
            return db.Updateable<MesQaItemsDetect01>()
                .SetColumns(s => s.FcheckResu == FcheckResu)
                .SetColumns(s => s.FcheckDate == DateTime.Now)
                .SetColumns(s => s.FcheckBy == sysUser.Account)
                .SetColumns(s => s.LastupdateBy == detail.CreateBy)
                .SetColumns(s => s.LastupdateDate == DateTime.Now)
                .Where(s => s.Guid == detail.GrandpaGuid)
                .ExecuteCommand();
        });
        //  if (FcheckResu.Equals("不合格"))
        //自动生成入库检异常对策
        ///     saveDetect02(detail.Id, detail.CreateBy);
        return useTransactionWithOracle;
    }
    /*  public int saveDetect02(decimal? gid, string? createBy)
     {
         var db = SqlSugarHelper.GetInstance();
         var qsItemOqcReq =
             db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid);
         var mesInvItemIns = db.Queryable<MesInvItemIns>()
             .Single(s => s.BillNo == qsItemOqcReq.BillNo);
         var mesSchemeResult = db.Queryable<MesSchemeResult>()
             .Single(s => s.BillNo == mesInvItemIns.CbillNo);
         var entity = new MesQaItemsDetect02();
         entity.ItemNo = mesSchemeResult.BoardItem;
         entity.BoardItem = mesSchemeResult.BoardItem;
         entity.LineNo = mesSchemeResult.LineNo;
         entity.Aufnr = mesSchemeResult.TaskNo;
         entity.ReleaseNo = qsItemOqcReq.ReleaseNo;
         entity.LotNo = qsItemOqcReq.BillNo;
         entity.FcheckDate = qsItemOqcReq.FcheckDate;
         entity.FcheckMemo = qsItemOqcReq.Remarks;
         entity.Gid = qsItemOqcReq.Id;
         // entity.PlanQty = qsItemOqcReq.FcheckDate;
         entity.FcheckResu = "不合格";
         entity.FcheckLevel = "严重";
         entity.CreateDate = DateTime.Now;
         entity.Factory = "10000";
         entity.Company = "1000";
         entity.Ftype = "4";
         entity.Fversion = 0;
         entity.Modify1Flag = 0;
         entity.IpqcStatus = 0;
         entity.Fsubmit = 1;
         entity.CreateBy = createBy;
         entity.FcheckBy = createBy;
         return SqlSugarHelper.UseTransactionWithOracle(db => db
             .Insertable(entity)
             .ExecuteCommand());
     }
     */
    public LLJDto getXjDetail02ById(string? id)
    {
        var rkjDto = new LLJDto();
        bool isValid = Guid.TryParse(id, out var parsedGuid);
        if (!isValid)
        {
            throw new Exception("GUID转换错误");
        }
        var qsItemOqcItem =
            Db.Queryable<MesQaItemsDetectDetail5>()
                .Single(s => s.Guid == parsedGuid);
        /* 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<MesQaItemsDetectDetail12>()
            .Where(s => s.Fstand == "×" && s.ParentGuid == parsedGuid).Count();
        qsItemOqcItem.Unqualified = count;
        rkjDto.ItemXj01 = qsItemOqcItem;
        rkjDto.ItemXj02s = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == parsedGuid)
            .ToList();
        return rkjDto;
    }
    public int UpdateQSItemDetail(MesQaItemsDetectDetail12 detail)
    {
        var withOracle = UseTransaction(db =>
        {
            return db.Updateable<MesQaItemsDetectDetail12>()
                .SetColumns(s => s.LastupdateBy == detail.LastupdateBy)
                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
                    s => s.Fstand == detail.Fstand)
                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
                    s => s.FcheckResu == detail.FcheckResu)
                .Where(s => s.ParentGuid
                    == detail.ParentGuid && s.Guid == detail.Guid)
                .ExecuteCommand();
        });
        detail.CreateBy = detail.LastupdateBy;
        withOracle += autoResult(detail);
        return withOracle;
    }
//更新检验明细已检、不合格数量
    private int updateDetail5(MesQaItemsDetectDetail12 detail)
    {
        //查询这个检验项目下的检验数量
        var count = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == detail.ParentGuid).Count();
        //获取不合格数
        var countNo = Db.Queryable<MesQaItemsDetectDetail12>()
            .Where(s => s.ParentGuid == detail.ParentGuid && s.Fstand == "×")
            .Count();
        //更新检验明细已检数量
        var withOracle = UseTransaction(db =>
        {
            return db.Updateable<MesQaItemsDetectDetail5>()
                .SetColumns(s => s.FenterQty == count)
                .SetColumns(s => s.FngQty == countNo)
                .Where(s => s.Guid == detail.ParentGuid)
                .ExecuteCommand();
        });
        return withOracle;
    }
    //主表修改备注字段
    public int saveRemarksGid(LLJDto dto)
    {
        return UseTransaction(db =>
        {
            return db.Updateable<MesQaItemsDetect01>()
                .SetColumns(it =>
                    it.Remarks == dto.Remarks) //SetColumns是可以叠加的 å†™2个就2个字段赋值
                .Where(it => it.ReleaseNo == dto.releaseNo)
                .ExecuteCommand();
        });
    }
    //子表修改备注字段
    public int saveRemarksPid(LLJDto dto)
    {
        bool isValid = Guid.TryParse(dto.pid, out var parsedGuid);
        if (isValid)
        {
            return UseTransaction(db =>
            {
                return db.Updateable<MesQaItemsDetectDetail5>()
                    .SetColumns(it =>
                        it.Remarks == dto.Remarks)
                    .Where(it => it.Guid == parsedGuid)
                    .ExecuteCommand();
            });
        }
        throw new Exception("GUID转换错误");
    }
    //删除主表并且连级删除子表和孙表
    public int removeXJ(string? releaseNo)
    {
        var withOracle = UseTransaction(db =>
        {
            var commit = 0;
            //删除主表
            commit += db.Deleteable<MesQaItemsDetect01>()
                .Where(s => s.ReleaseNo == releaseNo)
                .ExecuteCommand();
            //删除子表
            commit += db.Deleteable<MesQaItemsDetectDetail5>()
                .Where(s => s.ReleaseNo == releaseNo)
                .ExecuteCommand();
            //删除孙表
            // commit += db.Deleteable<MesQaItemsDetectDetail12>()
            //     .Where(s => s.ReleaseNo == releaseNo)
            //     .ExecuteCommand();
            return commit;
        });
        return withOracle;
    }
    public bool IqcQaSubmit(LLJDto dto)
    {
        //var (factory, company) = UserUtil.GetFactory(dto.userNo);
        var sysUser = Db.Queryable<SysUser>()
            .Where(s => s.Account == dto.userNo).First();
        if (sysUser == null)
            return false;
        var mesQaItemsDetect01 = Db.Queryable<MesQaItemsDetect01>()
            .Where(s => s.ReleaseNo == dto.releaseNo).First();
        if (mesQaItemsDetect01 == null)
            return false;
        if (mesQaItemsDetect01.Fsubmit == 1)
            throw new Exception("该检验单已提交");
        if (mesQaItemsDetect01.FcheckDate == null)
            throw new Exception("该检测单未输入检验日期,请核对。");
        if (mesQaItemsDetect01.FcheckBy.IsNullOrEmpty())
            throw new Exception("该检测单未输入检验人员,请核对。");
        var list = Db.Queryable<MesQaItemsDetectDetail5>()
            .Where(s => s.ReleaseNo == dto.releaseNo).ToList();
        if (CollectionUtil.IsNullOrEmpty(list))
            throw new Exception("抽样信息从表不允许为空,请维护检验项目");
        foreach (var mesQaItemsDetectDetail5 in list)
        {
            mesQaItemsDetectDetail5.FenterQty ??= 0;
            if (mesQaItemsDetectDetail5.FenterQty == 0)
            {
                throw new Exception("检验项目:" +
                                    mesQaItemsDetectDetail5.FcheckItem +
                                    " å·²å½•入数量为0,请确认。");
            }
        }
        var com = UseTransaction(db =>
        {
            var executeCommand = db.Updateable<MesQaItemsDetect01>()
                .SetColumns(s => s.Fsubmit == 1)
                .Where(s => s.ReleaseNo == dto.releaseNo)
                .ExecuteCommand();
            var mesInvItemArn = db.Queryable<MesInvItemArn>()
                .Where(b => b.BillNo == mesQaItemsDetect01.LotNo).First();
            if (mesInvItemArn == null)
                throw new Exception(mesQaItemsDetect01.LotNo + "到货单不存在,请核对。");
            if ("合格".Equals(mesQaItemsDetect01.FcheckResu))
            {
                executeCommand += db.Updateable<MesInvItemArnDetail>()
                    .SetColumns(s => s.CheckStates == "已检")
                    .SetColumns(s => s.CheckRes == "合格")
                    .SetColumns(s => s.Ischeck == 1)
                    .SetColumns(s => s.CheckDate == DateTime.Now)
                    .Where(s => s.ParentGuid == mesInvItemArn.Guid
                                && s.ItemId == mesQaItemsDetect01.ItemId)
                    .ExecuteCommand();
                executeCommand += db.Updateable<MesQaItemsDetect01>()
                    .SetColumns(s => s.Modify1Flag == 1)
                    .SetColumns(s => s.Modify1By == sysUser.Account)
                    .SetColumns(s => s.Modify1Date == DateTime.Now)
                    .SetColumns(s => s.FngHandle == "")
                    .SetColumns(s => s.IqcDate == DateTime.Now)
                    .SetColumns(s => s.FcheckDate == DateTime.Now)
                    .SetColumns(s => s.FcheckBy == sysUser.Account)
                    .Where(s => s.Guid == mesQaItemsDetect01.Guid)
                    .ExecuteCommand();
                //MesInvItemStocks
                executeCommand += db.Updateable<MesInvItemStocks>()
                    .SetColumns(t => t.CheckDate == DateTime.Now)
                    .SetColumns(t => t.IqcStatus == "已检")
                    .Where(t => t.ItemId == mesQaItemsDetect01.ItemId
                                && t.BillNo == mesQaItemsDetect01.LotNo)
                    .ExecuteCommand();
                var first = db
                    .Queryable<MesInvItemArnDetail, MesInvItemArn>(
                        (b, a) => new object[]
                        {
                            JoinType.Left, b.ParentGuid == a.Guid
                        })
                    .Where((b, a) =>
                        a.BillNo == mesQaItemsDetect01.LotNo &&
                        b.ReturnFlag == 0)
                    .Select((b, a) => new
                    {
                        TotalQuantity =
                            SqlFunc.AggregateSum(b.Quantity),
                        TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty)
                    })
                    .First();
                var totalQuantity = first.TotalQuantity ?? 0;
                var totalOkRkQty = first.TotalOkRkQty ?? 0;
                if (totalQuantity == totalOkRkQty)
                    executeCommand += db.Updateable<MesInvItemArn>()
                        .SetColumns(s => s.Status == 1)
                        .Where(s => s.BillNo == mesQaItemsDetect01.LotNo)
                        .ExecuteCommand();
            }
            else
            {
                executeCommand += db.Updateable<MesInvItemArnDetail>()
                    .SetColumns(s => s.CheckStates == "不合格待审批")
                    .SetColumns(s => s.Ischeck == 1)
                    .SetColumns(s => s.CheckRes == mesQaItemsDetect01.FcheckResu)
                    .SetColumns(s => s.CheckDate == DateTime.Now)
                    .Where(s => s.ParentGuid == mesInvItemArn.Guid
                                && s.ItemId == mesQaItemsDetect01.ItemId)
                    .ExecuteCommand();
                executeCommand += db.Updateable<MesQaItemsDetect01>()
                    .SetColumns(s => s.IqcDate == DateTime.Now)
                    .SetColumns(s => s.FcheckDate == DateTime.Now)
                    .SetColumns(s => s.FcheckBy == sysUser.Account)
                    .Where(s => s.Guid == mesQaItemsDetect01.Guid)
                    .ExecuteCommand();
            }
            if (executeCommand >=3)
                return executeCommand;
            throw new Exception("更新失败");
        });
        return com > 0;
    }
}