MES.Service/Dto/service/SingleBoardGenerateDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/service/WholeboardGenerateDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/MesPcbComponentData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/MesPcbTestData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/service/QC/PcbTestDataService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MESApplication/Controllers/QC/PcbTestDataController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
MES.Service/Dto/service/SingleBoardGenerateDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,150 @@ using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace MES.Service.Dto.service { /// <summary> /// æ¼æ¿(åæ¿)çææ°æ®DTO /// </summary> public class SingleBoardGenerateDto { /// <summary> /// 设å¤åç§° /// </summary> [JsonPropertyName("device_name")] public string DeviceName { get; set; } /// <summary> /// æ´æ¿æ¡ç /// </summary> [JsonPropertyName("pcb_sn")] public string PcbSn { get; set; } /// <summary> /// 轨éä¿¡æ¯ï¼1ï¼1轨ï¼ï¼2ï¼2è½¨ï¼ /// </summary> [JsonPropertyName("pcb_track_line")] public int PcbTrackLine { get; set; } /// <summary> /// æ¿é¢ï¼Tï¼é¡¶é¢ï¼ï¼Bï¼åºé¢ï¼ï¼T+Bï¼æ¿é¢+åºé¢ï¼ /// </summary> [JsonPropertyName("pcb_board_side")] public string PcbBoardSide { get; set; } /// <summary> /// æ£æµæ¶é´ /// </summary> [JsonPropertyName("pcb_test_time")] public string PcbTestTime { get; set; } /// <summary> /// æ£æµèæ¶ï¼åä½ç§ /// </summary> [JsonPropertyName("pcb_cycle_time")] public float PcbCycleTime { get; set; } /// <summary> /// ç¨åºå/æ¿å¼å /// </summary> [JsonPropertyName("pcb_project_name")] public string PcbProjectName { get; set; } /// <summary> /// æ´æ¿æ£æµç»æ /// </summary> [JsonPropertyName("pcb_robot_result")] public string PcbRobotResult { get; set; } /// <summary> /// æ´æ¿å¤å¤ç»æ /// </summary> [JsonPropertyName("pcb_user_result")] public string PcbUserResult { get; set; } /// <summary> /// æ´æ¿æç»ç»æ /// </summary> [JsonPropertyName("pcb_final_result")] public string PcbFinalResult { get; set; } /// <summary> /// ç»´ä¿®ç«å¤å¤ç¨æ·å /// </summary> [JsonPropertyName("pcb_repair_user")] public string PcbRepairUser { get; set; } /// <summary> /// æ¼æ¿æ°é /// </summary> [JsonPropertyName("pcb_board_number")] public int PcbBoardNumber { get; set; } /// <summary> /// å¨ä»¶æ»æ°é /// </summary> [JsonPropertyName("pcb_comp_number")] public int PcbCompNumber { get; set; } /// <summary> /// æ¼æ¿æ¡ç /// </summary> [JsonPropertyName("board_sn")] public string BoardSn { get; set; } /// <summary> /// æ¼æ¿åºå· /// </summary> [JsonPropertyName("board_no")] public string BoardNo { get; set; } /// <summary> /// æ¼æ¿æ£æµç»æ /// </summary> [JsonPropertyName("board_robot_result")] public string BoardRobotResult { get; set; } /// <summary> /// æ¼æ¿å¤å¤ç»æ /// </summary> [JsonPropertyName("board_user_result")] public string BoardUserResult { get; set; } /// <summary> /// æ¼æ¿æç»ç»æ /// </summary> [JsonPropertyName("board_final_result")] public string BoardFinalResult { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶æ°é /// </summary> [JsonPropertyName("board_comp_number")] public int BoardCompNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶æ£æµNGæ»æ° /// </summary> [JsonPropertyName("board_comp_robot_ng_number")] public int BoardCompRobotNgNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶å¤å¤NGæ»æ° /// </summary> [JsonPropertyName("board_comp_user_ng_number")] public int BoardCompUserNgNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶è¯¯æ¥æ»æ° /// </summary> [JsonPropertyName("board_comp_repass_number")] public int BoardCompRepassNumber { get; set; } /// <summary> /// å¨ä»¶å表 /// </summary> [JsonPropertyName("comp_data")] public List<ComponentDataDto> CompData { get; set; } } } MES.Service/Dto/service/WholeboardGenerateDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,234 @@ using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace MES.Service.Dto.service { /// <summary> /// æ´æ¿çææ°æ®DTO /// </summary> public class WholeboardGenerateDto { /// <summary> /// 设å¤åç§° /// </summary> [JsonPropertyName("device_name")] public string DeviceName { get; set; } /// <summary> /// æ´æ¿æ¡ç /// </summary> [JsonPropertyName("pcb_sn")] public string PcbSn { get; set; } /// <summary> /// 轨éä¿¡æ¯ï¼1ï¼1轨ï¼ï¼2ï¼2è½¨ï¼ /// </summary> [JsonPropertyName("pcb_track_line")] public int PcbTrackLine { get; set; } /// <summary> /// æ¿é¢ï¼Tï¼é¡¶é¢ï¼ï¼Bï¼åºé¢ï¼ï¼T+Bï¼æ¿é¢+åºé¢ï¼ /// </summary> [JsonPropertyName("pcb_board_side")] public string PcbBoardSide { get; set; } /// <summary> /// æ£æµæ¶é´ï¼æ ¼å¼yyyy-mm-dd hh:mm:ss /// </summary> [JsonPropertyName("pcb_test_time")] public string PcbTestTime { get; set; } /// <summary> /// æ£æµèæ¶ï¼åä½ç§ /// </summary> [JsonPropertyName("pcb_cycle_time")] public float PcbCycleTime { get; set; } /// <summary> /// ç¨åºå/æ¿å¼å /// </summary> [JsonPropertyName("pcb_project_name")] public string PcbProjectName { get; set; } /// <summary> /// æ´æ¿æ£æµç»æ /// </summary> [JsonPropertyName("pcb_robot_result")] public string PcbRobotResult { get; set; } /// <summary> /// æ´æ¿å¤å¤ç»æ /// </summary> [JsonPropertyName("pcb_user_result")] public string PcbUserResult { get; set; } /// <summary> /// æ´æ¿æç»ç»æ /// </summary> [JsonPropertyName("pcb_final_result")] public string PcbFinalResult { get; set; } /// <summary> /// ç»´ä¿®ç«å¤å¤ç¨æ·å /// </summary> [JsonPropertyName("pcb_repair_user")] public string PcbRepairUser { get; set; } /// <summary> /// æ¼æ¿æ°é /// </summary> [JsonPropertyName("pcb_board_number")] public int PcbBoardNumber { get; set; } /// <summary> /// æ¼æ¿æ£æµNGæ°é /// </summary> [JsonPropertyName("pcb_board_robot_ng_number")] public int PcbBoardRobotNgNumber { get; set; } /// <summary> /// æ¼æ¿å¤å¤NGæ°é /// </summary> [JsonPropertyName("pcb_board_user_ng_number")] public int PcbBoardUserNgNumber { get; set; } /// <summary> /// æ¼æ¿è¯¯æ¥æ°é /// </summary> [JsonPropertyName("pcb_board_repass_number")] public int PcbBoardRepassNumber { get; set; } /// <summary> /// å¨ä»¶æ»æ°é /// </summary> [JsonPropertyName("pcb_comp_number")] public int PcbCompNumber { get; set; } /// <summary> /// å¨ä»¶æ£æµNGæ°é /// </summary> [JsonPropertyName("pcb_comp_robot_ng_number")] public int PcbCompRobotNgNumber { get; set; } /// <summary> /// å¨ä»¶å¤å¤NGæ°é /// </summary> [JsonPropertyName("pcb_comp_user_ng_number")] public int PcbCompUserNgNumber { get; set; } /// <summary> /// å¨ä»¶è¯¯æ¥æ°é /// </summary> [JsonPropertyName("pcb_comp_repass_number")] public int PcbCompRepassNumber { get; set; } /// <summary> /// æ¼æ¿å表 /// </summary> [JsonPropertyName("board_data")] public List<BoardDataDto> BoardData { get; set; } } /// <summary> /// æ¼æ¿æ°æ®DTO /// </summary> public class BoardDataDto { /// <summary> /// æ¼æ¿æ¡ç /// </summary> [JsonPropertyName("board_sn")] public string BoardSn { get; set; } /// <summary> /// æ¼æ¿åºå· /// </summary> [JsonPropertyName("board_no")] public string BoardNo { get; set; } /// <summary> /// æ¼æ¿æ£æµç»æ /// </summary> [JsonPropertyName("board_robot_result")] public string BoardRobotResult { get; set; } /// <summary> /// æ¼æ¿å¤å¤ç»æ /// </summary> [JsonPropertyName("board_user_result")] public string BoardUserResult { get; set; } /// <summary> /// æ¼æ¿æç»ç»æ /// </summary> [JsonPropertyName("board_final_result")] public string BoardFinalResult { get; set; } /// <summary> /// å¨ä»¶å表 /// </summary> [JsonPropertyName("comp_data")] public List<ComponentDataDto> CompData { get; set; } } /// <summary> /// å¨ä»¶æ°æ®DTO /// </summary> public class ComponentDataDto { /// <summary> /// å¨ä»¶ä½å· /// </summary> [JsonPropertyName("comp_designator")] public string CompDesignator { get; set; } /// <summary> /// å¨ä»¶æå· /// </summary> [JsonPropertyName("comp_part")] public string CompPart { get; set; } /// <summary> /// å¨ä»¶å°è£ /// </summary> [JsonPropertyName("comp_package")] public string CompPackage { get; set; } /// <summary> /// å¨ä»¶ç±»å /// </summary> [JsonPropertyName("comp_type")] public string CompType { get; set; } /// <summary> /// å¨ä»¶æ£æµä¸è¯ä»£ç /// </summary> [JsonPropertyName("comp_robot_code")] public string CompRobotCode { get; set; } /// <summary> /// å¨ä»¶æ£æµç»æ /// </summary> [JsonPropertyName("comp_robot_result")] public string CompRobotResult { get; set; } /// <summary> /// å¨ä»¶å¤å¤ä¸è¯ä»£ç /// </summary> [JsonPropertyName("comp_user_code")] public string CompUserCode { get; set; } /// <summary> /// å¨ä»¶å¤å¤ç»æ /// </summary> [JsonPropertyName("comp_user_result")] public string CompUserResult { get; set; } /// <summary> /// å¨ä»¶å¾çå°å /// </summary> [JsonPropertyName("comp_image")] public string CompImage { get; set; } } } MES.Service/Modes/MesPcbComponentData.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ using SqlSugar; using System; namespace MES.Service.Modes { /// <summary> /// PCBå¨ä»¶æ£æµæ°æ®è¡¨ /// </summary> [SugarTable("MES_PCB_COMPONENT_DATA")] public class MesPcbComponentData { /// <summary> /// 主é®ID /// </summary> [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_PCB_COMPONENT_DATA", IsPrimaryKey = true)] public decimal Id { get; set; } /// <summary> /// æ£æµæ°æ®ä¸»è¡¨ID /// </summary> [SugarColumn(ColumnName = "TEST_DATA_ID")] public decimal TestDataId { get; set; } /// <summary> /// å¨ä»¶ä½å· /// </summary> [SugarColumn(ColumnName = "COMP_DESIGNATOR")] public string? CompDesignator { get; set; } /// <summary> /// å¨ä»¶æå· /// </summary> [SugarColumn(ColumnName = "COMP_PART")] public string? CompPart { get; set; } /// <summary> /// å¨ä»¶å°è£ /// </summary> [SugarColumn(ColumnName = "COMP_PACKAGE")] public string? CompPackage { get; set; } /// <summary> /// å¨ä»¶ç±»å /// </summary> [SugarColumn(ColumnName = "COMP_TYPE")] public string? CompType { get; set; } /// <summary> /// å¨ä»¶æ£æµä¸è¯ä»£ç /// </summary> [SugarColumn(ColumnName = "COMP_ROBOT_CODE")] public string? CompRobotCode { get; set; } /// <summary> /// å¨ä»¶æ£æµç»æ /// </summary> [SugarColumn(ColumnName = "COMP_ROBOT_RESULT")] public string? CompRobotResult { get; set; } /// <summary> /// å¨ä»¶å¤å¤ä¸è¯ä»£ç /// </summary> [SugarColumn(ColumnName = "COMP_USER_CODE")] public string? CompUserCode { get; set; } /// <summary> /// å¨ä»¶å¤å¤ç»æ /// </summary> [SugarColumn(ColumnName = "COMP_USER_RESULT")] public string? CompUserResult { get; set; } /// <summary> /// å¨ä»¶å¾çå°å /// </summary> [SugarColumn(ColumnName = "COMP_IMAGE")] public string? CompImage { get; set; } /// <summary> /// å建æ¶é´ /// </summary> [SugarColumn(ColumnName = "CREATE_TIME")] public DateTime? CreateTime { get; set; } /// <summary> /// æ´æ°æ¶é´ /// </summary> [SugarColumn(ColumnName = "UPDATE_TIME")] public DateTime? UpdateTime { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(ColumnName = "REMARKS")] public string? Remarks { get; set; } } } MES.Service/Modes/MesPcbTestData.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,210 @@ using SqlSugar; using System; namespace MES.Service.Modes { /// <summary> /// PCBæ£æµæ°æ®è¡¨ï¼æ´æ¿/åæ¿ç»ä¸åå¨ï¼ /// </summary> [SugarTable("MES_PCB_TEST_DATA")] public class MesPcbTestData { /// <summary> /// 主é®ID /// </summary> [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_PCB_TEST_DATA", IsPrimaryKey = true)] public decimal Id { get; set; } /// <summary> /// æ°æ®ç±»åï¼WHOLE-æ´æ¿ï¼SINGLE-åæ¿ /// </summary> [SugarColumn(ColumnName = "DATA_TYPE")] public string DataType { get; set; } /// <summary> /// 设å¤åç§° /// </summary> [SugarColumn(ColumnName = "DEVICE_NAME")] public string? DeviceName { get; set; } /// <summary> /// æ´æ¿æ¡ç /// </summary> [SugarColumn(ColumnName = "PCB_SN")] public string? PcbSn { get; set; } /// <summary> /// 轨éä¿¡æ¯ï¼1-1轨ï¼2-2è½¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_TRACK_LINE")] public int? PcbTrackLine { get; set; } /// <summary> /// æ¿é¢ï¼T-é¡¶é¢ï¼B-åºé¢ï¼T+B-é¡¶é¢+åºé¢ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_BOARD_SIDE")] public string? PcbBoardSide { get; set; } /// <summary> /// æ£æµæ¶é´ /// </summary> [SugarColumn(ColumnName = "PCB_TEST_TIME")] public DateTime? PcbTestTime { get; set; } /// <summary> /// æ£æµèæ¶ï¼ç§ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_CYCLE_TIME")] public decimal? PcbCycleTime { get; set; } /// <summary> /// ç¨åºå/æ¿å¼å /// </summary> [SugarColumn(ColumnName = "PCB_PROJECT_NAME")] public string? PcbProjectName { get; set; } /// <summary> /// æ´æ¿æ£æµç»æ /// </summary> [SugarColumn(ColumnName = "PCB_ROBOT_RESULT")] public string? PcbRobotResult { get; set; } /// <summary> /// æ´æ¿å¤å¤ç»æ /// </summary> [SugarColumn(ColumnName = "PCB_USER_RESULT")] public string? PcbUserResult { get; set; } /// <summary> /// æ´æ¿æç»ç»æ /// </summary> [SugarColumn(ColumnName = "PCB_FINAL_RESULT")] public string? PcbFinalResult { get; set; } /// <summary> /// ç»´ä¿®ç«å¤å¤ç¨æ·å /// </summary> [SugarColumn(ColumnName = "PCB_REPAIR_USER")] public string? PcbRepairUser { get; set; } /// <summary> /// æ¼æ¿æ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_BOARD_NUMBER")] public int? PcbBoardNumber { get; set; } /// <summary> /// æ¼æ¿æ£æµNGæ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_BOARD_ROBOT_NG_NUMBER")] public int? PcbBoardRobotNgNumber { get; set; } /// <summary> /// æ¼æ¿å¤å¤NGæ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_BOARD_USER_NG_NUMBER")] public int? PcbBoardUserNgNumber { get; set; } /// <summary> /// æ¼æ¿è¯¯æ¥æ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_BOARD_REPASS_NUMBER")] public int? PcbBoardRepassNumber { get; set; } /// <summary> /// å¨ä»¶æ»æ°é /// </summary> [SugarColumn(ColumnName = "PCB_COMP_NUMBER")] public int? PcbCompNumber { get; set; } /// <summary> /// å¨ä»¶æ£æµNGæ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_COMP_ROBOT_NG_NUMBER")] public int? PcbCompRobotNgNumber { get; set; } /// <summary> /// å¨ä»¶å¤å¤NGæ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_COMP_USER_NG_NUMBER")] public int? PcbCompUserNgNumber { get; set; } /// <summary> /// å¨ä»¶è¯¯æ¥æ°éï¼æ´æ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "PCB_COMP_REPASS_NUMBER")] public int? PcbCompRepassNumber { get; set; } /// <summary> /// æ¼æ¿æ¡ç ï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_SN")] public string? BoardSn { get; set; } /// <summary> /// æ¼æ¿åºå·ï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_NO")] public string? BoardNo { get; set; } /// <summary> /// æ¼æ¿æ£æµç»æï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_ROBOT_RESULT")] public string? BoardRobotResult { get; set; } /// <summary> /// æ¼æ¿å¤å¤ç»æï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_USER_RESULT")] public string? BoardUserResult { get; set; } /// <summary> /// æ¼æ¿æç»ç»æï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_FINAL_RESULT")] public string? BoardFinalResult { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶æ°éï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_COMP_NUMBER")] public int? BoardCompNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶æ£æµNGæ»æ°ï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_COMP_ROBOT_NG_NUMBER")] public int? BoardCompRobotNgNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶å¤å¤NGæ»æ°ï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_COMP_USER_NG_NUMBER")] public int? BoardCompUserNgNumber { get; set; } /// <summary> /// æ¼æ¿å¨ä»¶è¯¯æ¥æ»æ°ï¼åæ¿æ°æ®ä½¿ç¨ï¼ /// </summary> [SugarColumn(ColumnName = "BOARD_COMP_REPASS_NUMBER")] public int? BoardCompRepassNumber { get; set; } /// <summary> /// å建æ¶é´ /// </summary> [SugarColumn(ColumnName = "CREATE_TIME")] public DateTime? CreateTime { get; set; } /// <summary> /// æ´æ°æ¶é´ /// </summary> [SugarColumn(ColumnName = "UPDATE_TIME")] public DateTime? UpdateTime { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(ColumnName = "REMARKS")] public string? Remarks { get; set; } } } MES.Service/service/QC/PcbTestDataService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,366 @@ using System; using System.Collections.Generic; using System.Linq; using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.util; using SqlSugar; namespace MES.Service.service.QC { /// <summary> /// PCBæ£æµæ°æ®æå¡ /// </summary> public class PcbTestDataService { /// <summary> /// ä¿åæ´æ¿æ£æµæ°æ® /// </summary> /// <param name="dto">æ´æ¿æ£æµæ°æ®DTO</param> /// <returns>ä¿åç»æ</returns> public bool SaveWholeboardData(WholeboardGenerateDto dto) { try { return SqlSugarHelper.UseTransactionWithOracle(db => { var testData = ConvertWholeboardToEntity(dto); testData.CreateTime = DateTime.Now; testData.DataType = "WHOLE"; var testDataId = db.Insertable(testData).ExecuteReturnIdentity(); var affectedRows = 1; if (dto.BoardData != null && dto.BoardData.Count > 0) { var componentDataList = new List<MesPcbComponentData>(); foreach (var boardData in dto.BoardData) { if (boardData.CompData != null && boardData.CompData.Count > 0) { var componentData = ConvertComponentListToEntity(boardData.CompData, testDataId); componentDataList.AddRange(componentData); } } if (componentDataList.Count > 0) { affectedRows += db.Insertable(componentDataList).ExecuteCommand(); } } return affectedRows; }) > 0; } catch (Exception ex) { throw new Exception($"ä¿åæ´æ¿æ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// ä¿ååæ¿æ£æµæ°æ® /// </summary> /// <param name="dto">åæ¿æ£æµæ°æ®DTO</param> /// <returns>ä¿åç»æ</returns> public bool SaveSingleBoardData(SingleBoardGenerateDto dto) { try { return SqlSugarHelper.UseTransactionWithOracle(db => { var testData = ConvertSingleBoardToEntity(dto); testData.CreateTime = DateTime.Now; testData.DataType = "SINGLE"; var testDataId = db.Insertable(testData).ExecuteReturnIdentity(); var affectedRows = 1; if (dto.CompData != null && dto.CompData.Count > 0) { var componentDataList = ConvertComponentListToEntity(dto.CompData, testDataId); affectedRows += db.Insertable(componentDataList).ExecuteCommand(); } return affectedRows; }) > 0; } catch (Exception ex) { throw new Exception($"ä¿ååæ¿æ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// æ ¹æ®IDè·åPCBæ£æµæ°æ® /// </summary> /// <param name="id">æ°æ®ID</param> /// <returns>PCBæ£æµæ°æ®</returns> public MesPcbTestData GetPcbTestDataById(decimal id) { try { var db = SqlSugarHelper.GetInstance(); return db.Queryable<MesPcbTestData>() .Where(x => x.Id == id) .First(); } catch (Exception ex) { throw new Exception($"è·åPCBæ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// æ ¹æ®æ¡ä»¶å页æ¥è¯¢PCBæ£æµæ°æ® /// </summary> /// <param name="dataType">æ°æ®ç±»åï¼WHOLE/SINGLEï¼</param> /// <param name="deviceName">设å¤åç§°</param> /// <param name="pcbSn">PCBæ¡ç </param> /// <param name="startTime">å¼å§æ¶é´</param> /// <param name="endTime">ç»ææ¶é´</param> /// <param name="pageIndex">页ç </param> /// <param name="pageSize">页大å°</param> /// <returns>åé¡µæ°æ®</returns> public (List<MesPcbTestData> items, int totalCount) GetPcbTestDataPage( string dataType = null, string deviceName = null, string pcbSn = null, DateTime? startTime = null, DateTime? endTime = null, int pageIndex = 1, int pageSize = 20) { try { var db = SqlSugarHelper.GetInstance(); var totalCount = 0; var data = db.Queryable<MesPcbTestData>() .WhereIF(StringUtil.IsNotNullOrEmpty(dataType), x => x.DataType == dataType) .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName), x => x.DeviceName.Contains(deviceName)) .WhereIF(StringUtil.IsNotNullOrEmpty(pcbSn), x => x.PcbSn.Contains(pcbSn)) .WhereIF(startTime.HasValue, x => x.PcbTestTime >= startTime.Value) .WhereIF(endTime.HasValue, x => x.PcbTestTime <= endTime.Value) .OrderBy(x => x.PcbTestTime, OrderByType.Desc) .ToPageList(pageIndex, pageSize, ref totalCount); return (data, totalCount); } catch (Exception ex) { throw new Exception($"æ¥è¯¢PCBæ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// æ ¹æ®æµè¯æ°æ®IDè·åå¨ä»¶æ°æ® /// </summary> /// <param name="testDataId">æµè¯æ°æ®ID</param> /// <returns>å¨ä»¶æ°æ®å表</returns> public List<MesPcbComponentData> GetComponentDataByTestDataId(decimal testDataId) { try { var db = SqlSugarHelper.GetInstance(); return db.Queryable<MesPcbComponentData>() .Where(x => x.TestDataId == testDataId) .OrderBy(x => x.CompDesignator) .ToList(); } catch (Exception ex) { throw new Exception($"è·åå¨ä»¶æ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// æ ¹æ®PCBæ¡ç è·åæ£æµæ°æ® /// </summary> /// <param name="pcbSn">PCBæ¡ç </param> /// <returns>æ£æµæ°æ®å表</returns> public List<MesPcbTestData> GetPcbTestDataByPcbSn(string pcbSn) { try { var db = SqlSugarHelper.GetInstance(); return db.Queryable<MesPcbTestData>() .Where(x => x.PcbSn == pcbSn) .OrderBy(x => x.PcbTestTime, OrderByType.Desc) .ToList(); } catch (Exception ex) { throw new Exception($"æ ¹æ®PCBæ¡ç è·åæ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// å é¤PCBæ£æµæ°æ®ï¼çº§èå é¤å¨ä»¶æ°æ®ï¼ /// </summary> /// <param name="id">æ°æ®ID</param> /// <returns>å é¤ç»æ</returns> public bool DeletePcbTestData(decimal id) { try { return SqlSugarHelper.UseTransactionWithOracle(db => { var affectedRows = 0; // å å é¤å¨ä»¶æ°æ® affectedRows += db.Deleteable<MesPcbComponentData>() .Where(x => x.TestDataId == id) .ExecuteCommand(); // åå é¤ä¸»æ°æ® affectedRows += db.Deleteable<MesPcbTestData>() .Where(x => x.Id == id) .ExecuteCommand(); return affectedRows; }) > 0; } catch (Exception ex) { throw new Exception($"å é¤PCBæ£æµæ°æ®å¤±è´¥: {ex.Message}", ex); } } /// <summary> /// è·åæ£æµç»è®¡æ°æ® /// </summary> /// <param name="dataType">æ°æ®ç±»å</param> /// <param name="deviceName">设å¤åç§°</param> /// <param name="startTime">å¼å§æ¶é´</param> /// <param name="endTime">ç»ææ¶é´</param> /// <returns>ç»è®¡æ°æ®</returns> public dynamic GetTestStatistics(string dataType = null, string deviceName = null, DateTime? startTime = null, DateTime? endTime = null) { try { var db = SqlSugarHelper.GetInstance(); var statistics = db.Queryable<MesPcbTestData>() .WhereIF(StringUtil.IsNotNullOrEmpty(dataType), x => x.DataType == dataType) .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName), x => x.DeviceName == deviceName) .WhereIF(startTime.HasValue, x => x.PcbTestTime >= startTime.Value) .WhereIF(endTime.HasValue, x => x.PcbTestTime <= endTime.Value) .GroupBy(x => new { x.DataType, x.DeviceName }) .Select(x => new { DataType = x.DataType, DeviceName = x.DeviceName, TotalCount = SqlFunc.AggregateCount(x.Id), PassCount = SqlFunc.AggregateCount(SqlFunc.IIF(x.PcbFinalResult == "PASS", x.Id, 0)), FailCount = SqlFunc.AggregateCount(SqlFunc.IIF(x.PcbFinalResult == "FAIL", x.Id, 0)), AvgCycleTime = SqlFunc.AggregateAvg(x.PcbCycleTime) }) .ToList(); return statistics; } catch (Exception ex) { throw new Exception($"è·åæ£æµç»è®¡æ°æ®å¤±è´¥: {ex.Message}", ex); } } #region ç§ææ¹æ³ - DTOè½¬æ¢ /// <summary> /// å°æ´æ¿DTO转æ¢ä¸ºå®ä½ /// </summary> /// <param name="dto">æ´æ¿DTO</param> /// <returns>å®ä½å¯¹è±¡</returns> private MesPcbTestData ConvertWholeboardToEntity(WholeboardGenerateDto dto) { return new MesPcbTestData { DeviceName = dto.DeviceName, PcbSn = dto.PcbSn, PcbTrackLine = dto.PcbTrackLine, PcbBoardSide = dto.PcbBoardSide, PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ? DateTime.Parse(dto.PcbTestTime) : null, PcbCycleTime = (decimal?)dto.PcbCycleTime, PcbProjectName = dto.PcbProjectName, PcbRobotResult = dto.PcbRobotResult, PcbUserResult = dto.PcbUserResult, PcbFinalResult = dto.PcbFinalResult, PcbRepairUser = dto.PcbRepairUser, PcbBoardNumber = dto.PcbBoardNumber, PcbBoardRobotNgNumber = dto.PcbBoardRobotNgNumber, PcbBoardUserNgNumber = dto.PcbBoardUserNgNumber, PcbBoardRepassNumber = dto.PcbBoardRepassNumber, PcbCompNumber = dto.PcbCompNumber, PcbCompRobotNgNumber = dto.PcbCompRobotNgNumber, PcbCompUserNgNumber = dto.PcbCompUserNgNumber, PcbCompRepassNumber = dto.PcbCompRepassNumber }; } /// <summary> /// å°åæ¿DTO转æ¢ä¸ºå®ä½ /// </summary> /// <param name="dto">åæ¿DTO</param> /// <returns>å®ä½å¯¹è±¡</returns> private MesPcbTestData ConvertSingleBoardToEntity(SingleBoardGenerateDto dto) { return new MesPcbTestData { DeviceName = dto.DeviceName, PcbSn = dto.PcbSn, PcbTrackLine = dto.PcbTrackLine, PcbBoardSide = dto.PcbBoardSide, PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ? DateTime.Parse(dto.PcbTestTime) : null, PcbCycleTime = (decimal?)dto.PcbCycleTime, PcbProjectName = dto.PcbProjectName, PcbRobotResult = dto.PcbRobotResult, PcbUserResult = dto.PcbUserResult, PcbFinalResult = dto.PcbFinalResult, PcbRepairUser = dto.PcbRepairUser, PcbBoardNumber = dto.PcbBoardNumber, PcbCompNumber = dto.PcbCompNumber, BoardSn = dto.BoardSn, BoardNo = dto.BoardNo, BoardRobotResult = dto.BoardRobotResult, BoardUserResult = dto.BoardUserResult, BoardFinalResult = dto.BoardFinalResult, BoardCompNumber = dto.BoardCompNumber, BoardCompRobotNgNumber = dto.BoardCompRobotNgNumber, BoardCompUserNgNumber = dto.BoardCompUserNgNumber, BoardCompRepassNumber = dto.BoardCompRepassNumber }; } /// <summary> /// å°å¨ä»¶DTOå表转æ¢ä¸ºå®ä½å表 /// </summary> /// <param name="dtoList">å¨ä»¶DTOå表</param> /// <param name="testDataId">æµè¯æ°æ®ID</param> /// <returns>å®ä½å表</returns> private List<MesPcbComponentData> ConvertComponentListToEntity(List<ComponentDataDto> dtoList, decimal testDataId) { return dtoList.Select(dto => new MesPcbComponentData { TestDataId = testDataId, CompDesignator = dto.CompDesignator, CompPart = dto.CompPart, CompPackage = dto.CompPackage, CompType = dto.CompType, CompRobotCode = dto.CompRobotCode, CompRobotResult = dto.CompRobotResult, CompUserCode = dto.CompUserCode, CompUserResult = dto.CompUserResult, CompImage = dto.CompImage, CreateTime = DateTime.Now }).ToList(); } #endregion } } MESApplication/Controllers/QC/PcbTestDataController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,508 @@ using System; using System.Dynamic; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.service; using MES.Service.service.QC; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace MESApplication.Controllers.QC { /// <summary> /// PCBæ£æµæ°æ®æ§å¶å¨ /// </summary> [Route("api/[controller]")] [ApiController] public class PcbTestDataController : ControllerBase { private readonly MessageCenterManager _manager = new(); private readonly PcbTestDataService _service = new(); private readonly string METHOD = "POST"; private readonly string TableName = "MES_PCB_TEST_DATA"; private readonly string URL = "http://localhost:10054/api/PcbTestData/"; /// <summary> /// ä¿åæ´æ¿æ£æµæ°æ® /// </summary> /// <param name="dto">æ´æ¿æ£æµæ°æ®DTO</param> /// <returns>ä¿åç»æ</returns> [HttpPost("SaveWholeboardData")] public ResponseResult SaveWholeboardData([FromBody] WholeboardGenerateDto dto) { var entity = new MessageCenter(); entity.TableName = TableName; entity.Url = URL + "SaveWholeboardData"; entity.Method = METHOD; entity.Data = JsonConvert.SerializeObject(dto); entity.Status = 1; entity.CreateBy = "PL017"; try { dynamic resultInfos = new ExpandoObject(); var result = _service.SaveWholeboardData(dto); resultInfos.result = result; resultInfos.message = result ? "æ´æ¿æ£æµæ°æ®ä¿åæå" : "æ´æ¿æ£æµæ°æ®ä¿å失败"; entity.Result = result ? (short)1 : (short)0; entity.DealWith = 1; _manager.save(entity); return new ResponseResult { status = result ? 0 : 1, message = result ? "OK" : "FAIL", data = resultInfos }; } catch (Exception ex) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = ex.Message; _manager.save(entity); return ResponseResult.ResponseError(ex); } } /// <summary> /// ä¿ååæ¿æ£æµæ°æ® /// </summary> /// <param name="dto">åæ¿æ£æµæ°æ®DTO</param> /// <returns>ä¿åç»æ</returns> [HttpPost("SaveSingleBoardData")] public ResponseResult SaveSingleBoardData([FromBody] SingleBoardGenerateDto dto) { var entity = new MessageCenter(); entity.TableName = TableName; entity.Url = URL + "SaveSingleBoardData"; entity.Method = METHOD; entity.Data = JsonConvert.SerializeObject(dto); entity.Status = 1; entity.CreateBy = "PL017"; try { dynamic resultInfos = new ExpandoObject(); var result = _service.SaveSingleBoardData(dto); resultInfos.result = result; resultInfos.message = result ? "åæ¿æ£æµæ°æ®ä¿åæå" : "åæ¿æ£æµæ°æ®ä¿å失败"; entity.Result = result ? (short)1 : (short)0; entity.DealWith = 1; _manager.save(entity); return new ResponseResult { status = result ? 0 : 1, message = result ? "OK" : "FAIL", data = resultInfos }; } catch (Exception ex) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = ex.Message; _manager.save(entity); return ResponseResult.ResponseError(ex); } } /// <summary> /// å页æ¥è¯¢PCBæ£æµæ°æ® /// </summary> /// <param name="request">æ¥è¯¢è¯·æ±</param> /// <returns>åé¡µæ°æ®</returns> [HttpPost("GetPage")] public ResponseResult GetPage([FromBody] JObject request) { try { var dataType = request["dataType"]?.ToString(); var deviceName = request["deviceName"]?.ToString(); var pcbSn = request["pcbSn"]?.ToString(); var startTime = request["startTime"]?.ToString(); var endTime = request["endTime"]?.ToString(); var pageIndex = request["pageIndex"]?.ToObject<int>() ?? 1; var pageSize = request["pageSize"]?.ToObject<int>() ?? 20; DateTime? startDateTime = null; DateTime? endDateTime = null; if (StringUtil.IsNotNullOrEmpty(startTime) && DateTime.TryParse(startTime, out var start)) startDateTime = start; if (StringUtil.IsNotNullOrEmpty(endTime) && DateTime.TryParse(endTime, out var end)) endDateTime = end; var (items, totalCount) = _service.GetPcbTestDataPage( dataType, deviceName, pcbSn, startDateTime, endDateTime, pageIndex, pageSize); dynamic resultInfos = new ExpandoObject(); resultInfos.items = items; return new ResponseResult { status = 0, message = "OK", data = resultInfos, TotalCount = totalCount }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// æ ¹æ®IDè·åPCBæ£æµæ°æ® /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>PCBæ£æµæ°æ®</returns> [HttpPost("GetById")] public ResponseResult GetById([FromBody] JObject request) { try { var id = request["id"]?.ToObject<decimal>(); if (!id.HasValue) { return new ResponseResult { status = 1, message = "IDä¸è½ä¸ºç©º", data = null }; } var testData = _service.GetPcbTestDataById(id.Value); var componentData = _service.GetComponentDataByTestDataId(id.Value); dynamic resultInfos = new ExpandoObject(); resultInfos.testData = testData; resultInfos.componentData = componentData; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// æ ¹æ®PCBæ¡ç è·åæ£æµæ°æ® /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>æ£æµæ°æ®å表</returns> [HttpPost("GetByPcbSn")] public ResponseResult GetByPcbSn([FromBody] JObject request) { try { var pcbSn = request["pcbSn"]?.ToString(); if (StringUtil.IsNullOrEmpty(pcbSn)) { return new ResponseResult { status = 1, message = "PCBæ¡ç ä¸è½ä¸ºç©º", data = null }; } var testDataList = _service.GetPcbTestDataByPcbSn(pcbSn); dynamic resultInfos = new ExpandoObject(); resultInfos.testDataList = testDataList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// è·åå¨ä»¶æ£æµæ°æ® /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>å¨ä»¶æ£æµæ°æ®</returns> [HttpPost("GetComponentData")] public ResponseResult GetComponentData([FromBody] JObject request) { try { var testDataId = request["testDataId"]?.ToObject<decimal>(); if (!testDataId.HasValue) { return new ResponseResult { status = 1, message = "æµè¯æ°æ®IDä¸è½ä¸ºç©º", data = null }; } var componentData = _service.GetComponentDataByTestDataId(testDataId.Value); dynamic resultInfos = new ExpandoObject(); resultInfos.componentData = componentData; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// è·åæ£æµç»è®¡æ°æ® /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>ç»è®¡æ°æ®</returns> [HttpPost("GetStatistics")] public ResponseResult GetStatistics([FromBody] JObject request) { try { var dataType = request["dataType"]?.ToString(); var deviceName = request["deviceName"]?.ToString(); var startTime = request["startTime"]?.ToString(); var endTime = request["endTime"]?.ToString(); DateTime? startDateTime = null; DateTime? endDateTime = null; if (StringUtil.IsNotNullOrEmpty(startTime) && DateTime.TryParse(startTime, out var start)) startDateTime = start; if (StringUtil.IsNotNullOrEmpty(endTime) && DateTime.TryParse(endTime, out var end)) endDateTime = end; var statistics = _service.GetTestStatistics(dataType, deviceName, startDateTime, endDateTime); dynamic resultInfos = new ExpandoObject(); resultInfos.statistics = statistics; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// <summary> /// å é¤PCBæ£æµæ°æ® /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>å é¤ç»æ</returns> [HttpPost("Delete")] public ResponseResult Delete([FromBody] JObject request) { var entity = new MessageCenter(); entity.TableName = TableName; entity.Url = URL + "Delete"; entity.Method = METHOD; entity.Data = JsonConvert.SerializeObject(request); entity.Status = 1; entity.CreateBy = "PL017"; try { var id = request["id"]?.ToObject<decimal>(); if (!id.HasValue) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = "IDä¸è½ä¸ºç©º"; _manager.save(entity); return new ResponseResult { status = 1, message = "IDä¸è½ä¸ºç©º", data = null }; } var result = _service.DeletePcbTestData(id.Value); dynamic resultInfos = new ExpandoObject(); resultInfos.result = result; resultInfos.message = result ? "å 餿å" : "å é¤å¤±è´¥"; entity.Result = result ? (short)1 : (short)0; entity.DealWith = 1; _manager.save(entity); return new ResponseResult { status = result ? 0 : 1, message = result ? "OK" : "FAIL", data = resultInfos }; } catch (Exception ex) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = ex.Message; _manager.save(entity); return ResponseResult.ResponseError(ex); } } /// <summary> /// ç»ä¸ä¿åæ¥å£ï¼èªå¨è¯å«æ´æ¿æåæ¿æ°æ®ï¼ /// </summary> /// <param name="request">请æ±åæ°</param> /// <returns>ä¿åç»æ</returns> [HttpPost("SaveTestData")] public ResponseResult SaveTestData([FromBody] JObject request) { var entity = new MessageCenter(); entity.TableName = TableName; entity.Url = URL + "SaveTestData"; entity.Method = METHOD; entity.Data = JsonConvert.SerializeObject(request); entity.Status = 1; entity.CreateBy = "PL017"; try { var dataType = request["dataType"]?.ToString(); if (StringUtil.IsNullOrEmpty(dataType)) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = "æ°æ®ç±»åä¸è½ä¸ºç©ºï¼è¯·æå®WHOLEæSINGLE"; _manager.save(entity); return new ResponseResult { status = 1, message = "æ°æ®ç±»åä¸è½ä¸ºç©ºï¼è¯·æå®WHOLEæSINGLE", data = null }; } dynamic resultInfos = new ExpandoObject(); bool result = false; string message = ""; switch (dataType.ToUpper()) { case "WHOLE": var wholeboardDto = request["data"]?.ToObject<WholeboardGenerateDto>(); if (wholeboardDto == null) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = "æ´æ¿æ°æ®ä¸è½ä¸ºç©º"; _manager.save(entity); return new ResponseResult { status = 1, message = "æ´æ¿æ°æ®ä¸è½ä¸ºç©º", data = null }; } result = _service.SaveWholeboardData(wholeboardDto); message = result ? "æ´æ¿æ£æµæ°æ®ä¿åæå" : "æ´æ¿æ£æµæ°æ®ä¿å失败"; break; case "SINGLE": var singleBoardDto = request["data"]?.ToObject<SingleBoardGenerateDto>(); if (singleBoardDto == null) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = "åæ¿æ°æ®ä¸è½ä¸ºç©º"; _manager.save(entity); return new ResponseResult { status = 1, message = "åæ¿æ°æ®ä¸è½ä¸ºç©º", data = null }; } result = _service.SaveSingleBoardData(singleBoardDto); message = result ? "åæ¿æ£æµæ°æ®ä¿åæå" : "åæ¿æ£æµæ°æ®ä¿å失败"; break; default: entity.Result = 0; entity.DealWith = 0; entity.ResultData = "䏿¯æçæ°æ®ç±»åï¼è¯·æå®WHOLEæSINGLE"; _manager.save(entity); return new ResponseResult { status = 1, message = "䏿¯æçæ°æ®ç±»åï¼è¯·æå®WHOLEæSINGLE", data = null }; } resultInfos.result = result; resultInfos.message = message; entity.Result = result ? (short)1 : (short)0; entity.DealWith = 1; _manager.save(entity); return new ResponseResult { status = result ? 0 : 1, message = result ? "OK" : "FAIL", data = resultInfos }; } catch (Exception ex) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = ex.Message; _manager.save(entity); return ResponseResult.ResponseError(ex); } } } }