xwt
2025-09-30 b5636d685f902bacfba65827d78bf59978c111e8
IQC堵穴数,IQC破坏实验
已修改4个文件
已添加3个文件
745 ■■■■■ 文件已修改
StandardInterface/MES.Service/Dto/service/MaterialInfoDto.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/service/PhsyRecordInfoDto.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/MesInvPhsy.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/MesQaItemsDetectDetail5.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/QC/LljService.cs 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/QC/LljController.cs 333 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/service/MaterialInfoDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MES.Service.Dto.service
{
    /// <summary>
    /// ç‰©æ–™ä¿¡æ¯DTO
    /// </summary>
    public class MaterialInfoDto
    {
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string? ItemNo { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        public string? ItemName { get; set; }
        /// <summary>
        /// è§„格型号
        /// </summary>
        public string? ItemModel { get; set; }
        /// <summary>
        /// æ•°é‡
        /// </summary>
        public decimal? OldQty { get; set; }
        /// <summary>
        /// ç‰©æ–™ID
        /// </summary>
        public decimal? ItemId { get; set; }
        /// <summary>
        /// åˆ°è´§å•号
        /// </summary>
        public string? BillNo { get; set; }
    }
}
StandardInterface/MES.Service/Dto/service/PhsyRecordInfoDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
using System;
namespace MES.Service.Dto.service
{
    /// <summary>
    /// ç ´åå®žéªŒè®°å½•信息DTO
    /// </summary>
    public class PhsyRecordInfoDto
    {
        /// <summary>
        /// æ‰«ææ¡ç 
        /// </summary>
        public string? ItemBarcode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码
        /// </summary>
        public string? ItemNo { get; set; }
        /// <summary>
        /// ç‰©æ–™åç§°
        /// </summary>
        public string? ItemName { get; set; }
        /// <summary>
        /// è§„格型号
        /// </summary>
        public string? ItemModel { get; set; }
        /// <summary>
        /// åˆ°è´§å•号
        /// </summary>
        public string? BillNo { get; set; }
        /// <summary>
        /// æ¡ç æ•°é‡
        /// </summary>
        public decimal? Yqty { get; set; }
        /// <summary>
        /// ç ´åæ•°
        /// </summary>
        public decimal? Cqty { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¥æœŸ
        /// </summary>
        public DateTime? CreateDate { get; set; }
    }
}
StandardInterface/MES.Service/Modes/MesInvPhsy.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     ç ´åå®žéªŒè®°å½•表
/// </summary>
[SugarTable("MES_INV_PHSY")]
public class MesInvPhsy
{
    /// <summary>
    ///     ID
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public decimal Id { get; set; }
    /// <summary>
    ///     ç‰©æ–™æ¡ç 
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_BARCODE")]
    public string? ItemBarcode { get; set; }
    /// <summary>
    ///     åˆ°è´§å•号
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? BillNo { get; set; }
    /// <summary>
    ///     æ¡ç æ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "YQTY")]
    public decimal? Yqty { get; set; }
    /// <summary>
    ///     ç ´åæ•°é‡
    /// </summary>
    [SugarColumn(ColumnName = "CQTY")]
    public decimal? Cqty { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "CREATE_DATE")]
    public DateTime? CreateDate { get; set; }
    /// <summary>
    ///     æ£€éªŒå•号
    /// </summary>
    [SugarColumn(ColumnName = "RELEASE_NO")]
    public string? ReleaseNo { get; set; }
    /// <summary>
    ///     ç‰©æ–™ID
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_ID")]
    public decimal? ItemId { get; set; }
}
StandardInterface/MES.Service/Modes/MesQaItemsDetectDetail5.cs
@@ -165,6 +165,11 @@
    /// </summary>
    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
    public string? LastupdateBy { get; set; }
    /// <summary>
    ///     æ›´æ–°äºº
    /// </summary>
    [SugarColumn(ColumnName = "DNUM")]
    public string? Dnum { get; set; }
    /// <summary>
    ///     æ›´æ–°æ—¶é—´
@@ -178,4 +183,5 @@
    /// </summary>
    [SugarColumn(ColumnName = "MEOM")]
    public string? Meom { get; set; }
}
StandardInterface/MES.Service/service/QC/LljService.cs
@@ -1264,4 +1264,256 @@
    }
    /// <summary>
    /// æ ¹æ®äºŒç»´ç æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <param name="itemBarcode">二维码内容</param>
    /// <param name="currentBillNo">当前检验单的到货单号(已废弃,保留参数兼容性)</param>
    /// <returns>物料信息</returns>
    public List<MaterialInfoDto> GetMaterialByBarcode(string itemBarcode, string currentBillNo)
    {
        var db = SqlSugarHelper.GetInstance();
        try
        {
            // ä½¿ç”¨JOIN查询MES_INV_ITEM_BARCODES和MES_ITEMS表
            var materialInfo = db.Queryable<MesInvItemBarcodes>()
                .LeftJoin<MesItems>((b, m) => b.ItemId == m.Id)
                .Where((b, m) => b.ItemBarcode == itemBarcode && b.ComeFlg == 1)
                .Select((b, m) => new MaterialInfoDto
                {
                    ItemNo = b.ItemNo,        // ç‰©æ–™ç¼–码
                    OldQty = b.Oldqty,        // æ•°é‡
                    ItemId = b.ItemId,        // ç‰©æ–™ID
                    ItemName = m.ItemName,    // ç‰©æ–™åç§°
                    ItemModel = m.ItemModel,  // è§„格型号
                    BillNo = b.BillNo         // åˆ°è´§å•号
                })
                .ToList();
            // ç§»é™¤åˆ°è´§å•号校验,直接返回查询结果
            return materialInfo;
        }
        catch (Exception ex)
        {
            throw new Exception($"查询物料信息失败: {ex.Message}");
        }
    }
    /// <summary>
    /// æŸ¥è¯¢ç ´åå®žéªŒè®°å½•是否存在
    /// </summary>
    /// <param name="billNo">到货单号</param>
    /// <param name="releaseNo">检验单号</param>
    /// <returns>是否存在记录</returns>
    public bool CheckPhsyRecordExists(string billNo, string releaseNo)
    {
        var db = SqlSugarHelper.GetInstance();
        try
        {
            var count = db.Queryable<MesInvPhsy>()
                .Where(x => x.BillNo == billNo && x.ReleaseNo == releaseNo)
                .Count();
            return count > 0;
        }
        catch (Exception ex)
        {
            throw new Exception($"查询破坏实验记录失败: {ex.Message}");
        }
    }
    /// <summary>
    /// èŽ·å–ç ´åå®žéªŒè®°å½•è¯¦ç»†ä¿¡æ¯
    /// </summary>
    /// <param name="billNo">到货单号</param>
    /// <param name="releaseNo">检验单号</param>
    /// <returns>破坏实验记录信息</returns>
    public List<PhsyRecordInfoDto> GetPhsyRecordInfo(string billNo, string releaseNo)
    {
        var db = SqlSugarHelper.GetInstance();
        try
        {
            // å…ˆæŸ¥è¯¢ç ´åå®žéªŒè®°å½•
            var phsyRecords = db.Queryable<MesInvPhsy>()
                .Where(x => x.BillNo == billNo && x.ReleaseNo == releaseNo)
                .ToList();
            var result = new List<PhsyRecordInfoDto>();
            foreach (var record in phsyRecords)
            {
                // å°è¯•通过条码查询物料信息
                var materialInfo = db.Queryable<MesInvItemBarcodes>()
                    .LeftJoin<MesItems>((b, m) => b.ItemId == m.Id)
                    .Where((b, m) => b.ItemBarcode == record.ItemBarcode)
                    .Select((b, m) => new {
                        ItemNo = b.ItemNo,
                        ItemName = m.ItemName,
                        ItemModel = m.ItemModel
                    })
                    .First();
                var dto = new PhsyRecordInfoDto
                {
                    ItemBarcode = record.ItemBarcode,
                    ItemNo = materialInfo?.ItemNo ?? record.ItemBarcode,
                    ItemName = materialInfo?.ItemName ?? "已记录物料",
                    ItemModel = materialInfo?.ItemModel ?? "已记录规格",
                    BillNo = record.BillNo,
                    Yqty = record.Yqty,
                    Cqty = record.Cqty,
                    CreateDate = record.CreateDate
                };
                result.Add(dto);
            }
            return result;
        }
        catch (Exception ex)
        {
            throw new Exception($"获取破坏实验记录信息失败: {ex.Message}");
        }
    }
    /// <summary>
    /// è°ƒç”¨ç ´åå®žéªŒå­˜å‚¨è¿‡ç¨‹
    /// </summary>
    /// <param name="itemBarcode">扫描的条码值</param>
    /// <param name="yqty">扫码查询出来的条码数量</param>
    /// <param name="cqty">填写的破坏实验数量</param>
    /// <param name="billNo">查询到的到货单号</param>
    /// <param name="lx">操作类型:1新增,2修改,3删除</param>
    /// <param name="releaseNo">检验单号</param>
    /// <param name="itemId">物料ID</param>
    /// <returns>执行结果</returns>
    public (int result, string message) CallPhsyUpdateProcedure(string itemBarcode, decimal yqty, decimal cqty, string billNo, int lx, string releaseNo, decimal? itemId = null)
    {
        var db = SqlSugarHelper.GetInstance();
        try
        {
            // å®šä¹‰è¾“入参数
            var inputParam1 = new SugarParameter("P_ITEM_BARCODE", itemBarcode, DbType.String, ParameterDirection.Input);
            var inputParam2 = new SugarParameter("P_YQTY", yqty, DbType.Decimal, ParameterDirection.Input);
            var inputParam3 = new SugarParameter("P_CQTY", cqty, DbType.Decimal, ParameterDirection.Input);
            var inputParam4 = new SugarParameter("P_BILL_NO", billNo, DbType.String, ParameterDirection.Input);
            var inputParam5 = new SugarParameter("P_LX", lx, DbType.Int32, ParameterDirection.Input);
            var inputParam6 = new SugarParameter("ITEM_ID", itemId ?? 0, DbType.Decimal, ParameterDirection.Input);
            var inputParam7 = new SugarParameter("P_RELEASE_NO", releaseNo, DbType.String, ParameterDirection.Input);
            // å®šä¹‰è¾“出参数
            var outputResult = new SugarParameter("PO_RESULT", null, DbType.Int32, ParameterDirection.Output);
            var outputMessage = new SugarParameter("PO_MSG", null, DbType.String, ParameterDirection.Output, 4000);
            // ä½¿ç”¨SqlSugar执行存储过程
            db.Ado.ExecuteCommand("BEGIN PRC_INV_PHSYUPDATE(:P_ITEM_BARCODE, :P_YQTY, :P_CQTY, :P_BILL_NO, :P_LX, :ITEM_ID, :P_RELEASE_NO, :PO_RESULT, :PO_MSG); END;",
                inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, inputParam6, inputParam7, outputResult, outputMessage);
            // èŽ·å–è¾“å‡ºå‚æ•°çš„å€¼
            var result = outputResult.Value == null ? 1 : Convert.ToInt32(outputResult.Value);
            var message = outputMessage.Value?.ToString() ?? "";
            return (result, message);
        }
        catch (Exception ex)
        {
            return (1, $"调用存储过程失败: {ex.Message}");
        }
    }
    /// <summary>
    /// è®¾ç½®å µç©´ä¿¡æ¯
    /// </summary>
    /// <param name="releaseNo">检验单号</param>
    /// <param name="blockedHoles">堵穴信息,格式如"1,2,3"</param>
    /// <param name="itemId">检验项目ID</param>
    /// <returns>执行结果</returns>
    public (int result, string message) SetBlockedHoles(string releaseNo, string blockedHoles, decimal itemId)
    {
        var db = SqlSugarHelper.GetInstance();
        try
        {
            // è§£æžå µç©´ä¿¡æ¯
            var blockedHolesList = blockedHoles.Split(',', ',')
                .Select(s => s.Trim())
                .Where(s => !string.IsNullOrEmpty(s))
                .Select(s => int.Parse(s))
                .ToList();
            // èŽ·å–æ£€éªŒé¡¹ç›®ä¿¡æ¯
            var item = db.Queryable<MesQaItemsDetectDetail5>()
                .Where(x => x.Id == itemId && x.ReleaseNo == releaseNo)
                .First();
            if (item == null)
            {
                return (1, "检验项目不存在");
            }
            // è§£æžå¼€ç©´æ•°
            var holeCount = ParseHoleCount(item.FcheckItem);
            if (holeCount == 0)
            {
                return (1, "该检验项目没有穴数信息");
            }
            // éªŒè¯å µç©´æ•°é‡ä¸èƒ½å¤§äºŽç­‰äºŽå¼€ç©´æ•°
            if (blockedHolesList.Count >= holeCount)
            {
                return (1, $"堵穴数量不能大于等于开穴数({holeCount})");
            }
            // éªŒè¯å µç©´å·æ˜¯å¦åœ¨æœ‰æ•ˆèŒƒå›´å†…
            foreach (var hole in blockedHolesList)
            {
                if (hole < 1 || hole > holeCount)
                {
                    return (1, $"堵穴号必须在1-{holeCount}之间");
                }
            }
            // è®¡ç®—新的检验数量
            var newCheckQyt = item.CheckQyt - (item.CheckQyt / holeCount) * blockedHolesList.Count;
            // æ›´æ–°æ•°æ®åº“
            var result = SqlSugarHelper.UseTransactionWithOracle(db =>
            {
                return db.Updateable<MesQaItemsDetectDetail5>()
                    .SetColumns(x => x.Dnum == blockedHoles)
                    .SetColumns(x => x.CheckQyt == newCheckQyt)
                    .Where(x => x.Id == itemId && x.ReleaseNo == releaseNo)
                    .ExecuteCommand();
            });
            if (result > 0)
            {
                return (0, "堵穴设置成功");
            }
            else
            {
                return (1, "堵穴设置失败");
            }
        }
        catch (Exception ex)
        {
            return (1, $"设置堵穴失败: {ex.Message}");
        }
    }
    /// <summary>
    /// è§£æžæ£€éªŒé¡¹ç›®åç§°ä¸­çš„ç©´æ•°
    /// </summary>
    /// <param name="checkItemName">检验项目名称</param>
    /// <returns>穴数,如果没有穴数信息返回0</returns>
    private int ParseHoleCount(string checkItemName)
    {
        if (string.IsNullOrEmpty(checkItemName))
            return 0;
        // åŒ¹é…æ ¼å¼ï¼šå°ºå¯¸æ£€æŸ¥ï¼ˆ5穴)或 å°ºå¯¸æ£€æŸ¥(5ç©´)
        var match = System.Text.RegularExpressions.Regex.Match(checkItemName, @"[((](\d+)ç©´[))]");
        return match.Success ? int.Parse(match.Groups[1].Value) : 0;
    }
}
StandardInterface/MESApplication/Controllers/QC/LljController.cs
@@ -540,10 +540,343 @@
        }
    }
    /// <summary>
    /// æ ¹æ®äºŒç»´ç æŸ¥è¯¢ç‰©æ–™ä¿¡æ¯
    /// </summary>
    /// <param name="data">包含二维码内容和当前到货单号的请求对象</param>
    /// <returns>物料信息</returns>
    [HttpPost("GetMaterialByBarcode")]
    public ResponseResult GetMaterialByBarcode([FromBody] GetMaterialByBarcodeRequest data)
    {
        try
        {
            if (string.IsNullOrEmpty(data.itemBarcode))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "二维码内容不能为空",
                    data = null
                };
            }
            dynamic resultInfos = new System.Dynamic.ExpandoObject();
            var materialInfo = new LljService().GetMaterialByBarcode(data.itemBarcode, data.currentBillNo);
            if (materialInfo == null || materialInfo.Count == 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "未找到对应的物料信息,请检查二维码是否正确",
                    data = null
                };
            }
            resultInfos.tbBillList = materialInfo;
            return new ResponseResult
            {
                status = 0,
                message = "查询成功",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = ex.Message, // ç›´æŽ¥è¿”回异常信息,包含"该条码不是此检验单条码!"
                data = null
            };
        }
    }
    /// <summary>
    /// æŸ¥è¯¢ç ´åå®žéªŒè®°å½•是否存在
    /// </summary>
    /// <param name="data">查询请求数据</param>
    /// <returns>查询结果</returns>
    [HttpPost("CheckPhsyRecord")]
    public ResponseResult CheckPhsyRecord([FromBody] CheckPhsyRecordRequest data)
    {
        try
        {
            if (string.IsNullOrEmpty(data.billNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "到货单号不能为空",
                    data = null
                };
            }
            if (string.IsNullOrEmpty(data.releaseNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "检验单号不能为空",
                    data = null
                };
            }
            var exists = new LljService().CheckPhsyRecordExists(data.billNo, data.releaseNo);
            dynamic resultInfos = new System.Dynamic.ExpandoObject();
            resultInfos.exists = exists;
            return new ResponseResult
            {
                status = 0,
                message = "查询成功",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = $"查询失败: {ex.Message}",
                data = null
            };
        }
    }
    /// <summary>
    /// è°ƒç”¨ç ´åå®žéªŒå­˜å‚¨è¿‡ç¨‹
    /// </summary>
    /// <param name="data">破坏实验请求数据</param>
    /// <returns>执行结果</returns>
    [HttpPost("CallPhsyUpdateProcedure")]
    public ResponseResult CallPhsyUpdateProcedure([FromBody] PhsyUpdateRequest data)
    {
        try
        {
            if (string.IsNullOrEmpty(data.itemBarcode))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "条码不能为空",
                    data = null
                };
            }
            if (string.IsNullOrEmpty(data.billNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "到货单号不能为空",
                    data = null
                };
            }
            if (data.yqty <= 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "条码数量必须大于0",
                    data = null
                };
            }
            if (data.cqty <= 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "破坏实验数量必须大于0",
                    data = null
                };
            }
            if (string.IsNullOrEmpty(data.releaseNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "检验单号不能为空",
                    data = null
                };
            }
            var (result, message) = new LljService().CallPhsyUpdateProcedure(
                data.itemBarcode,
                data.yqty,
                data.cqty,
                data.billNo,
                data.lx,
                data.releaseNo,
                data.itemId);
            dynamic resultInfos = new System.Dynamic.ExpandoObject();
            resultInfos.result = result;
            resultInfos.message = message;
            return new ResponseResult
            {
                status = result,
                message = message,
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = $"调用存储过程失败: {ex.Message}",
                data = null
            };
        }
    }
    public class GetWomdabRequest
    {
        public string daa001 { get; set; }
        public string ItemNo { get; set; }
    }
    public class GetMaterialByBarcodeRequest
    {
        public string itemBarcode { get; set; }
        public string currentBillNo { get; set; }
    }
    public class PhsyUpdateRequest
    {
        public string itemBarcode { get; set; }
        public decimal yqty { get; set; }
        public decimal cqty { get; set; }
        public string billNo { get; set; }
        public int lx { get; set; } // æ“ä½œç±»åž‹ï¼š1新增,2修改,3删除
        public string releaseNo { get; set; } // æ£€éªŒå•号
        public decimal? itemId { get; set; } // ç‰©æ–™ID
    }
    public class CheckPhsyRecordRequest
    {
        public string billNo { get; set; }
        public string releaseNo { get; set; }
    }
    [HttpPost("GetPhsyRecordInfo")]
    public ResponseResult GetPhsyRecordInfo([FromBody] CheckPhsyRecordRequest data)
    {
        try
        {
            if (string.IsNullOrEmpty(data.billNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "到货单号不能为空",
                    data = null
                };
            }
            if (string.IsNullOrEmpty(data.releaseNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "检验单号不能为空",
                    data = null
                };
            }
            var records = new LljService().GetPhsyRecordInfo(data.billNo, data.releaseNo);
            return new ResponseResult
            {
                status = 0,
                message = "查询成功",
                data = new { tbBillList = records }
            };
        }
        catch (Exception ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = $"查询失败: {ex.Message}",
                data = null
            };
        }
    }
    /// <summary>
    /// è®¾ç½®å µç©´ä¿¡æ¯
    /// </summary>
    /// <param name="data">堵穴设置请求数据</param>
    /// <returns>执行结果</returns>
    [HttpPost("SetBlockedHoles")]
    public ResponseResult SetBlockedHoles([FromBody] SetBlockedHolesRequest data)
    {
        try
        {
            if (string.IsNullOrEmpty(data.releaseNo))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "检验单号不能为空",
                    data = null
                };
            }
            if (string.IsNullOrEmpty(data.blockedHoles))
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "堵穴信息不能为空",
                    data = null
                };
            }
            if (data.itemId <= 0)
            {
                return new ResponseResult
                {
                    status = 1,
                    message = "检验项目ID不能为空",
                    data = null
                };
            }
            var (result, message) = new LljService().SetBlockedHoles(data.releaseNo, data.blockedHoles, data.itemId);
            return new ResponseResult
            {
                status = result,
                message = message,
                data = new { result = result, message = message }
            };
        }
        catch (Exception ex)
        {
            return new ResponseResult
            {
                status = 1,
                message = $"设置堵穴失败: {ex.Message}",
                data = null
            };
        }
    }
    public class SetBlockedHolesRequest
    {
        public string releaseNo { get; set; }
        public string blockedHoles { get; set; }
        public decimal itemId { get; set; }
    }
}
StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@
  "AppSettings": {
    "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo",
    "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal",
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd"
    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd"
  }
}