|
|
@@ -16,6 +16,7 @@ import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
|
|
|
+import com.xjrsoft.module.base.service.IBaseSemesterService;
|
|
|
import com.xjrsoft.module.databoard.dto.StatisticsDetailDto;
|
|
|
import com.xjrsoft.module.databoard.dto.TeacherChangeStatisticsDetailDto;
|
|
|
import com.xjrsoft.module.databoard.vo.CourseCountListVo;
|
|
|
@@ -24,6 +25,10 @@ import com.xjrsoft.module.databoard.vo.DistributionVo;
|
|
|
import com.xjrsoft.module.databoard.vo.DurationVo;
|
|
|
import com.xjrsoft.module.databoard.vo.HealthItemCountVo;
|
|
|
import com.xjrsoft.module.databoard.vo.HealthStatisticsDetailVo;
|
|
|
+import com.xjrsoft.module.databoard.vo.InternshipStatisticsDetailClassVo;
|
|
|
+import com.xjrsoft.module.databoard.vo.InternshipStatisticsDetailCompanyVo;
|
|
|
+import com.xjrsoft.module.databoard.vo.InternshipStatisticsDetailEvaluateVo;
|
|
|
+import com.xjrsoft.module.databoard.vo.InternshipStatisticsDetailVo;
|
|
|
import com.xjrsoft.module.databoard.vo.ItemCount2Vo;
|
|
|
import com.xjrsoft.module.databoard.vo.ItemCountAmountVo;
|
|
|
import com.xjrsoft.module.databoard.vo.ItemCountRatioVo;
|
|
|
@@ -96,6 +101,7 @@ public class DatadetailController {
|
|
|
private final IBaseStudentService studentService;
|
|
|
private final IWfSubscriptionService subscriptionService;
|
|
|
private final BaseSemesterMapper baseSemesterMapper;
|
|
|
+ private final IBaseSemesterService semesterService;
|
|
|
|
|
|
@GetMapping(value = "/process-statistics")
|
|
|
@ApiOperation(value = "流程统计详情")
|
|
|
@@ -963,4 +969,123 @@ public class DatadetailController {
|
|
|
return RT.ok(result);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @GetMapping(value = "/internship-statistics")
|
|
|
+ @ApiOperation(value = "实习统计")
|
|
|
+ @SaCheckPermission("databoard:detail")
|
|
|
+ @XjrLog(value = "实习统计", saveResponseData = true)
|
|
|
+ public RT<InternshipStatisticsDetailVo> internshipStatistics(@Valid StatisticsDetailDto dto) {
|
|
|
+ InternshipStatisticsDetailVo result = new InternshipStatisticsDetailVo();
|
|
|
+ BaseSemester semester = semesterService.getCurrentSemester();
|
|
|
+ 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" +
|
|
|
+ " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark = 0" +
|
|
|
+ " and t2.base_semester_id = " + semester.getId();
|
|
|
+
|
|
|
+ List<Map<String, Object>> studentlist = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+
|
|
|
+
|
|
|
+ sql = "SELECT DISTINCT t3.id FROM student_internship_alone_apply t1" +
|
|
|
+ " INNER JOIN xjr_workflow_form_relation t2 ON t1.id = CAST(t2.form_key_value AS SIGNED)" +
|
|
|
+ " 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 t2.current_state = 'COMPLETED'";
|
|
|
+ List<Map<String, Object>> list2 = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+
|
|
|
+ int studentCount = studentlist.size() + list2.size();
|
|
|
+ result.setStudentCount(studentCount);
|
|
|
+
|
|
|
+ //实习班级
|
|
|
+ sql = " SELECT DISTINCT t3.id FROM internship_plan_class t1" +
|
|
|
+ " INNER JOIN internship_plan_manage t2 ON t1.internship_plan_manage_id = t2.id" +
|
|
|
+ " INNER JOIN base_class t3 ON t1.class_id = t3.id" +
|
|
|
+ " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark = 0" +
|
|
|
+ " and t2.base_semester_id = " + semester.getId();
|
|
|
+ List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+ result.setClassCount(list.size());
|
|
|
+
|
|
|
+ //实习企业
|
|
|
+ sql = " SELECT * FROM company_coop WHERE delete_mark = 0";
|
|
|
+ list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+ result.setCompanyCount(list.size());
|
|
|
+
|
|
|
+
|
|
|
+ sql = "SELECT DISTINCT t3.name,\n" +
|
|
|
+ "(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)" +
|
|
|
+ " 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)" +
|
|
|
+ " 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" +
|
|
|
+ "INNER JOIN base_class t3 ON t1.class_id = t3.id\n" +
|
|
|
+ "WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark = 0" +
|
|
|
+ " and t2.base_semester_id = " + semester.getId();
|
|
|
+ List<Map<String, Object>> classDatas = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+
|
|
|
+ List<InternshipStatisticsDetailClassVo> classList = new ArrayList<>();
|
|
|
+ for (Map<String, Object> objectMap : classDatas) {
|
|
|
+ classList.add(new InternshipStatisticsDetailClassVo(){{
|
|
|
+ setClassName(objectMap.get("name").toString());
|
|
|
+ setUniteCount(Integer.parseInt(objectMap.get("unite_count").toString()));
|
|
|
+ setAloneCount(Integer.parseInt(objectMap.get("alone_count").toString()));
|
|
|
+ setSpecialCount(Integer.parseInt(objectMap.get("special_count").toString()));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ 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();
|
|
|
+ List<Map<String, Object>> companyDatas = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+ List<InternshipStatisticsDetailCompanyVo> companyList = new ArrayList<>();
|
|
|
+ for (Map<String, Object> companyData : companyDatas) {
|
|
|
+ companyList.add(new InternshipStatisticsDetailCompanyVo(){{
|
|
|
+ setCompanyName(companyData.get("company_name").toString());
|
|
|
+ setStudentCount(Integer.parseInt(companyData.get("counts").toString()));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ result.setCompanyList(companyList);
|
|
|
+
|
|
|
+ sql = "SELECT t3.name,\n" +
|
|
|
+ "(SELECT COUNT(*) FROM internship_plan_manage_participant WHERE delete_mark = 0\n" +
|
|
|
+ "AND result = '1' AND class_id = t3.id AND internship_plan_manage_id = t2.id\n" +
|
|
|
+ ") AS unqualified, \n" +
|
|
|
+ "(SELECT COUNT(*) FROM internship_plan_manage_participant WHERE delete_mark = 0\n" +
|
|
|
+ "AND result = '2' AND class_id = t3.id AND internship_plan_manage_id = t2.id\n" +
|
|
|
+ ") AS qualified, \n" +
|
|
|
+ "(SELECT COUNT(*) FROM internship_plan_manage_participant WHERE delete_mark = 0\n" +
|
|
|
+ "AND result = '3' AND class_id = t3.id AND internship_plan_manage_id = t2.id\n" +
|
|
|
+ ") AS excellent\n" +
|
|
|
+ "FROM internship_plan_class t1\n" +
|
|
|
+ "INNER JOIN internship_plan_manage t2 ON t1.internship_plan_manage_id = t2.id\n" +
|
|
|
+ "INNER JOIN base_class t3 ON t1.class_id = t3.id\n" +
|
|
|
+ "WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark = 0" +
|
|
|
+ " and t2.base_semester_id = " + semester.getId();
|
|
|
+ List<Map<String, Object>> evaluateDatas = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+ List<InternshipStatisticsDetailEvaluateVo> evaluateList = new ArrayList<>();
|
|
|
+ for (Map<String, Object> companyData : evaluateDatas) {
|
|
|
+ evaluateList.add(new InternshipStatisticsDetailEvaluateVo(){{
|
|
|
+ setClassName(companyData.get("name").toString());
|
|
|
+ setUnqualifiedCount(Integer.parseInt(companyData.get("unqualified").toString()));
|
|
|
+ setQualifiedCount(Integer.parseInt(companyData.get("qualified").toString()));
|
|
|
+ setExcellentCount(Integer.parseInt(companyData.get("excellent").toString()));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ result.setEvaluateList(evaluateList);
|
|
|
+
|
|
|
+ return RT.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
}
|