瀏覽代碼

实习数据统计

dzx 4 月之前
父節點
當前提交
0884695967

+ 4 - 1
src/main/java/com/xjrsoft/module/databoard/controller/DataboardController.java

@@ -616,6 +616,9 @@ public class DataboardController {
     @XjrLog(value = "实习统计", saveResponseData = true)
     public RT<InternshipStatisticsVo> internshipStatistics(@Valid StatisticsDetailDto dto) {
         BaseSemester semester = semesterService.getCurrentSemester();
+        if(semester == null){
+            return RT.error("未能查询计划到当前学期");
+        }
 
         InternshipStatisticsVo result = new InternshipStatisticsVo();
 
@@ -633,7 +636,7 @@ public class DataboardController {
             " INNER JOIN xjr_user t3 ON t3.id = t1.student_user_id" +
             " INNER JOIN internship_plan_manage t4 ON t1.internship_plan_manage_id = t4.id" +
             " WHERE t1.delete_mark = 0 AND t3.delete_mark = 0 AND t4.delete_mark = 0" +
-            " and t2.base_semester_id = " + semester.getId() +
+            " and t4.base_semester_id = " + semester.getId() +
             " AND t2.current_state = 'COMPLETED'";
         List<Map<String, Object>> list2 = SqlRunnerAdapter.db().selectList(sql);
 

+ 19 - 9
src/main/java/com/xjrsoft/module/databoard/controller/DatadetailController.java

@@ -977,6 +977,9 @@ public class DatadetailController {
     public RT<InternshipStatisticsDetailVo> internshipStatistics(@Valid StatisticsDetailDto dto) {
         InternshipStatisticsDetailVo result = new InternshipStatisticsDetailVo();
         BaseSemester semester = semesterService.getCurrentSemester();
+        if(semester == null){
+            return RT.error("未能查询计划到当前学期");
+        }
         String sql = " SELECT DISTINCT t1.participant_user_id FROM internship_plan_manage_participant t1" +
                 " INNER JOIN internship_plan_manage t2 ON t1.internship_plan_manage_id = t2.id" +
                 " INNER JOIN xjr_user t3 ON t1.participant_user_id = t3.id" +
@@ -991,7 +994,7 @@ public class DatadetailController {
                 " INNER JOIN xjr_user t3 ON t3.id = t1.student_user_id" +
                 " INNER JOIN internship_plan_manage t4 ON t1.internship_plan_manage_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t3.delete_mark = 0 AND t4.delete_mark = 0" +
-                " and t2.base_semester_id = " + semester.getId() +
+                " and t4.base_semester_id = " + semester.getId() +
                 " AND t2.current_state = 'COMPLETED'";
         List<Map<String, Object>> list2 = SqlRunnerAdapter.db().selectList(sql);
 
@@ -1017,12 +1020,12 @@ public class DatadetailController {
             "(SELECT COUNT(participant_user_id) FROM internship_plan_manage_participant\n" +
             "WHERE class_id = t3.id AND internship_plan_manage_id = t2.id and delete_mark = 0) AS unite_count,\n" +
             "(SELECT COUNT(a1.student_user_id) FROM student_internship_alone_apply a1" +
-            " INNER JOIN xjr_workflow_form_relation a2 ON t1.id = CAST(t2.form_key_value AS SIGNED)" +
+            " INNER JOIN xjr_workflow_form_relation a2 ON t1.id = CAST(a2.form_key_value AS SIGNED)" +
             " WHERE a1.class_id = t3.id AND a1.internship_plan_manage_id = t2.id and a1.delete_mark = 0" +
             " and a2.current_state = 'COMPLETED'" +
             " ) AS alone_count,\n" +
             "(SELECT COUNT(student_user_id) FROM student_special_constitution a1" +
-            " INNER JOIN xjr_workflow_form_relation a2 ON t1.id = CAST(t2.form_key_value AS SIGNED)" +
+            " INNER JOIN xjr_workflow_form_relation a2 ON t1.id = CAST(a2.form_key_value AS SIGNED)" +
             " WHERE a1.class_id = t3.id and a1.delete_mark = 0 and a2.current_state = 'COMPLETED') AS special_count\n" +
             "FROM internship_plan_class t1\n" +
             "INNER JOIN internship_plan_manage t2 ON t1.internship_plan_manage_id = t2.id\n" +
@@ -1042,12 +1045,19 @@ public class DatadetailController {
         }
         result.setClassList(classList);
 
-        sql = "SELECT t1.company_name,\n" +
-            "(SELECT COUNT(*) FROM internship_plan_manage_participant WHERE delete_mark = 0 AND internship_plan_manage_id = t2.id) AS counts\n" +
-            "FROM company_coop t1\n" +
-            "INNER JOIN internship_plan_manage t2 ON t1.id = t2.internship_unit_id\n" +
-            "WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
-            " and t2.base_semester_id = " + semester.getId();
+        sql = "SELECT t1.id,t1.company_name,\n" +
+                "(\n" +
+                "SELECT COUNT(a1.id) FROM internship_plan_manage_participant a1\n" +
+                "INNER JOIN internship_plan_manage a2 ON a2.id = a1.internship_plan_manage_id \n" +
+                "WHERE a1.delete_mark = 0 AND a2.delete_mark = 0\n" +
+                "AND a2.internship_unit_id = t1.id\n" +
+                ") AS counts\n" +
+                "FROM company_coop t1\n" +
+                "WHERE t1.delete_mark = 0\n" +
+                "AND id IN (\n" +
+                "SELECT DISTINCT internship_unit_id FROM internship_plan_manage\n" +
+                "WHERE delete_mark = 0 AND base_semester_id = "  +semester.getId() +
+                ")";
         List<Map<String, Object>> companyDatas = SqlRunnerAdapter.db().selectList(sql);
         List<InternshipStatisticsDetailCompanyVo> companyList = new ArrayList<>();
         for (Map<String, Object> companyData : companyDatas) {