| StandardInterface/MES.Service/Dto/service/MaterialInfoDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MES.Service/Dto/service/PhsyRecordInfoDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MES.Service/Modes/MesInvPhsy.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MES.Service/Modes/MesQaItemsDetectDetail5.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MES.Service/service/QC/LljService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MESApplication/Controllers/QC/LljController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| StandardInterface/MESApplication/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
StandardInterface/MES.Service/Dto/service/MaterialInfoDto.cs
ÎļþÒÑɾ³ý StandardInterface/MES.Service/Dto/service/PhsyRecordInfoDto.cs
ÎļþÒÑɾ³ý StandardInterface/MES.Service/Modes/MesInvPhsy.cs
ÎļþÒÑɾ³ý StandardInterface/MES.Service/Modes/MesQaItemsDetectDetail5.cs
@@ -165,11 +165,6 @@ /// </summary> [SugarColumn(ColumnName = "LASTUPDATE_BY")] public string? LastupdateBy { get; set; } /// <summary> /// æ´æ°äºº /// </summary> [SugarColumn(ColumnName = "DNUM")] public string? Dnum { get; set; } /// <summary> /// æ´æ°æ¶é´ @@ -183,5 +178,4 @@ /// </summary> [SugarColumn(ColumnName = "MEOM")] public string? Meom { get; set; } } StandardInterface/MES.Service/service/QC/LljService.cs
@@ -1264,256 +1264,4 @@ } /// <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,343 +540,10 @@ } } /// <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 = test_dev; 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 = hm_prd; Password=hmprd" } }