Jelajahi Sumber

fix(game-event):优化单元格选择判断逻辑并调整接口返回格式

- 完善 isCellSelected 方法,明确支持和不支持的单元格值
- 增加对数字类型1.0 的识别
- 排除表示"不选择"的值如 ×、否、no、false、0 等
- 修改 handleSendResults 接口返回格式为字符串形式
- 移除 ResponseEntity 返回方式,统一返回特定格式字符串
- 优化项目选择逻辑,仅添加被选中的项目 ID
zhou 1 bulan lalu
induk
melakukan
8576929757

+ 5 - 4
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/controller/app/PhysicalController.java

@@ -68,7 +68,7 @@ public class PhysicalController {
      * 1.13上传该仪器测试成绩
      */
     @PostMapping("/SendResults")
-    public ResponseEntity<Map<String, Object>> handleSendResults(
+    public String handleSendResults(
         @RequestParam("TestName") String testName,
         @RequestParam("RecordCount") int recordCount,
         @RequestParam("ResultInfo") String resultInfo) {
@@ -79,14 +79,15 @@ public class PhysicalController {
             // 3. 返回成功
             if (res){
                 log.info("设备体质测试数据处理成功,共处理 {} 条数据", recordCount);
-                return ResponseEntity.ok(Map.of("success", 1, "msg", "数据上传成功"));
+                return "1,;";
+//                return ResponseEntity.ok(Map.of("success", 1, "msg", "数据上传成功"));
             }else {
                 log.error("设备体质测试数据处理失败");
-                return ResponseEntity.ok(Map.of("success", 0, "msg", "数据处理失败"));
+                return "0,数据处理失败;";
             }
         } catch (Exception e) {
             log.error("设备体质测试数据上传异常", e);
-            return ResponseEntity.ok(Map.of("success", 0, "msg", e.getMessage()));
+            return  "0,"+e.getMessage();
         }
     }
 

+ 13 - 6
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/IEnrollServiceImpl.java

@@ -390,8 +390,9 @@ public class IEnrollServiceImpl implements IEnrollService {
     }
 
     /**
-     * 判断单元格是否表示“已选择”
+     * 判断单元格是否表示"已选择"
      * 支持:是、yes、true、1、✔、✅、√ 等
+     * 不支持:×、否、no、false、0 等表示不选择的值
      */
     private static boolean isCellSelected(Cell cell) {
         if (cell == null) return false;
@@ -401,14 +402,21 @@ public class IEnrollServiceImpl implements IEnrollService {
             return cell.getBooleanCellValue();
         }
         if (cell.getCellType() == CellType.NUMERIC) {
-            return cell.getNumericCellValue() == 1;
+            return cell.getNumericCellValue() == 1 || cell.getNumericCellValue() == 1.0;
         }
 
         String value = getCellValueAsString(cell).trim().toLowerCase();
+
+        // 明确排除表示"不选择"的值
+        if (value.isBlank() || value.equals("×") || value.equals("否") || value.equals("no") || value.equals("false") || value.equals("0") || value.equals("n")) {
+            return false;
+        }
+
+        // 只有明确表示"选择"的值才返回true
         return !value.isEmpty() &&
             (value.equals("是") || value.equals("yes") || value.equals("true") ||
                 value.equals("1") || value.contains("✔") || value.contains("✅") ||
-                value.contains("√") || value.equals("×"));
+                value.contains("√"));
     }
 
     /**
@@ -939,9 +947,8 @@ public class IEnrollServiceImpl implements IEnrollService {
         Map<String, Boolean> selectProjects = enrollInfo.getProjectSelections();
         List<Long> selectionProjectIds = new ArrayList<>();
         for (Map.Entry<String, Boolean> selectProject : selectProjects.entrySet()) {
-            Long projectId = projectList.get(selectProject.getKey());
-            if (ObjectUtils.isNotEmpty(projectId)) {
-                selectionProjectIds.add(projectId);
+            if (selectProject.getValue()) {
+                selectionProjectIds.add(projectList.get(selectProject.getKey()));
             }
         }
         gameAthleteBo.setProjectValue(JSONUtil.toJsonStr(selectionProjectIds));