4 Commits 3891946cc1 ... 470f204837

Author SHA1 Message Date
  dzx 470f204837 实习管理增加查询字段 5 months ago
  dzx c89653db9f 实习管理 5 months ago
  dzx cf040bd09e 实习管理 5 months ago
  dzx 819fb8c240 实习管理 5 months ago

+ 10 - 3
src/main/java/com/xjrsoft/module/internship/controller/InternshipPlanManageParticipantController.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.annotation.XjrLog;
 import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.internship.dto.AddInternshipPlanManageParticipantDto;
 import com.xjrsoft.module.internship.dto.EvaluateInternshipPlanManageParticipantDto;
@@ -16,7 +15,6 @@ import com.xjrsoft.module.internship.entity.InternshipPlanManageParticipant;
 import com.xjrsoft.module.internship.service.IInternshipPlanManageParticipantService;
 import com.xjrsoft.module.internship.vo.InternshipPlanManageParticipantPageVo;
 import com.xjrsoft.module.internship.vo.InternshipPlanManageParticipantVo;
-import com.xjrsoft.module.student.vo.BaseStudentInfoPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -47,11 +45,20 @@ public class InternshipPlanManageParticipantController {
 
     private final IInternshipPlanManageParticipantService internshipPlanManageParticipantService;
 
+    @GetMapping(value = "/page")
+    @ApiOperation(value="所有参与人(分页)")
+    @SaCheckPermission("internshipplanmanageparticipant:detail")
+    @XjrLog(value = "所有参与人(分页)")
+    public RT<PageOutput<InternshipPlanManageParticipantPageVo>> page(@Valid InternshipPlanManageParticipantPageDto dto){
+        PageOutput<InternshipPlanManageParticipantPageVo> pageOutput = internshipPlanManageParticipantService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/team-student-page")
     @ApiOperation(value="实习计划参与人表列表(分页)")
     @SaCheckPermission("internshipplanmanageparticipant:detail")
     @XjrLog(value = "实习计划参与人表列表(分页)")
-    public RT<PageOutput<InternshipPlanManageParticipantPageVo>> page(@Valid InternshipPlanManageParticipantPageDto dto){
+    public RT<PageOutput<InternshipPlanManageParticipantPageVo>> teamStudentPage(@Valid InternshipPlanManageParticipantPageDto dto){
         PageOutput<InternshipPlanManageParticipantPageVo> pageOutput = internshipPlanManageParticipantService.getTeamStudentPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         return RT.ok(pageOutput);
     }

+ 12 - 0
src/main/java/com/xjrsoft/module/internship/dto/InternshipPlanManageParticipantPageDto.java

@@ -18,4 +18,16 @@ public class InternshipPlanManageParticipantPageDto extends PageInput {
 
     @ApiModelProperty("实习计划id")
     private Long internshipPlanManageId;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/internship/service/IInternshipPlanManageParticipantService.java

@@ -25,4 +25,6 @@ public interface IInternshipPlanManageParticipantService extends MPJBaseService<
     PageOutput<InternshipPlanManageParticipantPageVo> getChooseStudentPage(Page<BaseStudentInfoPageVo> page, InternshipPlanManageParticipantPageDto dto);
 
     PageOutput<InternshipPlanManageParticipantPageVo> getTeamStudentPage(Page<BaseStudentInfoPageVo> page, InternshipPlanManageParticipantPageDto dto);
+
+    PageOutput<InternshipPlanManageParticipantPageVo> getPage(Page<BaseStudentInfoPageVo> page, InternshipPlanManageParticipantPageDto dto);
 }

+ 25 - 3
src/main/java/com/xjrsoft/module/internship/service/impl/InternshipPlanManageParticipantServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.internship.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -128,7 +129,7 @@ public class InternshipPlanManageParticipantServiceImpl extends MPJBaseServiceIm
             notInIds.add(Long.parseLong(objectMap.get("id").toString()));
         }
 
-        BaseStudentInfoPageDto studentInfoPageDto = new BaseStudentInfoPageDto();
+        BaseStudentInfoPageDto studentInfoPageDto = BeanUtil.toBean(dto, BaseStudentInfoPageDto.class);
         studentInfoPageDto.setNotInIds(notInIds);
 
         List<String> roleList = StpUtil.getRoleList();
@@ -189,9 +190,30 @@ public class InternshipPlanManageParticipantServiceImpl extends MPJBaseServiceIm
                         .eq(InternshipPlanManageParticipant::getTeacherId, teacherId)
         );
 
-        Map<Long, String> collect = list.stream().collect(Collectors.toMap(InternshipPlanManageParticipant::getParticipantUserId, InternshipPlanManageParticipant::getResult));
+        Map<Long, String> collect = list.stream().filter(x -> x.getResult() != null).collect(Collectors.toMap(InternshipPlanManageParticipant::getParticipantUserId, InternshipPlanManageParticipant::getResult));
 
-        BaseStudentInfoPageDto studentInfoPageDto = new BaseStudentInfoPageDto();
+        BaseStudentInfoPageDto studentInfoPageDto = BeanUtil.toBean(dto, BaseStudentInfoPageDto.class);
+        studentInfoPageDto.setInIds(list.stream().map(InternshipPlanManageParticipant::getParticipantUserId).collect(Collectors.toList()));
+        studentInfoPageDto.setKeyWord(dto.getKeyword());
+
+        Page<BaseStudentInfoPageVo> mobilePage = baseStudentSchoolRollService.getMobilePage(page, studentInfoPageDto);
+        PageOutput<InternshipPlanManageParticipantPageVo> pageOutput = ConventPage.getPageOutput(mobilePage, InternshipPlanManageParticipantPageVo.class);
+        for (InternshipPlanManageParticipantPageVo vo : pageOutput.getList()) {
+            vo.setEvaluateResult(collect.get(vo.getId()));
+        }
+        return pageOutput;
+    }
+
+    @Override
+    public PageOutput<InternshipPlanManageParticipantPageVo> getPage(Page<BaseStudentInfoPageVo> page, InternshipPlanManageParticipantPageDto dto) {
+        List<InternshipPlanManageParticipant> list = this.list(
+                new QueryWrapper<InternshipPlanManageParticipant>().lambda()
+                        .eq(dto.getInternshipPlanManageId() != null, InternshipPlanManageParticipant::getInternshipPlanManageId, dto.getInternshipPlanManageId())
+        );
+
+        Map<Long, String> collect = list.stream().filter(x -> x.getResult() != null).collect(Collectors.toMap(InternshipPlanManageParticipant::getParticipantUserId, InternshipPlanManageParticipant::getResult));
+
+        BaseStudentInfoPageDto studentInfoPageDto = BeanUtil.toBean(dto, BaseStudentInfoPageDto.class);
         studentInfoPageDto.setInIds(list.stream().map(InternshipPlanManageParticipant::getParticipantUserId).collect(Collectors.toList()));
         studentInfoPageDto.setKeyWord(dto.getKeyword());
 

+ 85 - 0
src/main/java/com/xjrsoft/module/job/InternshipTask.java

@@ -0,0 +1,85 @@
+package com.xjrsoft.module.job;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.DateUtils;
+import com.xjrsoft.common.utils.LocalDateUtil;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
+import com.xjrsoft.module.evaluate.entity.EvaluateManage;
+import com.xjrsoft.module.internship.entity.InternshipPlanManage;
+import com.xjrsoft.module.internship.entity.InternshipTeacherCollect;
+import com.xjrsoft.module.internship.service.IInternshipPlanManageService;
+import com.xjrsoft.module.internship.service.IInternshipTeacherCollectService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 实习相关数据处理
+ */
+@Component
+@Slf4j
+public class InternshipTask {
+
+    @Autowired
+    private IInternshipPlanManageService internshipPlanManageService;
+
+    @Autowired
+    private IInternshipTeacherCollectService internshipTeacherCollectService;
+
+    @Async
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void addSubmitRecord() {
+        //查询实习计划,根据开始时间和结束时间来判断并修改状态
+        List<InternshipPlanManage> list = internshipPlanManageService.list(
+                new QueryWrapper<InternshipPlanManage>().lambda()
+                        .eq(InternshipPlanManage::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        LocalDate now = LocalDate.now();
+        List<InternshipPlanManage> updateList = new ArrayList<>();
+        for (InternshipPlanManage planManage : list) {
+            if(LocalDateUtil.isDateInRange(now, planManage.getStartTime(), planManage.getEndTime())){
+                planManage.setStatus(1);
+                updateList.add(planManage);
+            }else if(now.isAfter(planManage.getEndTime())){
+                planManage.setStatus(2);
+                updateList.add(planManage);
+            }
+        }
+
+        if(!updateList.isEmpty()){
+            internshipPlanManageService.updateBatchById(updateList);
+        }
+
+
+        //查询实习计划,根据开始时间和结束时间来判断并修改状态
+        List<InternshipTeacherCollect> collectList = internshipTeacherCollectService.list(
+                new QueryWrapper<InternshipTeacherCollect>().lambda()
+                        .eq(InternshipTeacherCollect::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+
+        List<InternshipTeacherCollect> collectUpdateList = new ArrayList<>();
+        for (InternshipTeacherCollect collect : collectList) {
+            if(LocalDateUtil.isDateInRange(now, collect.getStartDate(), collect.getEndDate())){
+                collect.setStatus(1);
+                collectUpdateList.add(collect);
+            }else if(now.isAfter(collect.getEndDate())){
+                collect.setStatus(2);
+                collectUpdateList.add(collect);
+            }
+        }
+
+        if(!collectUpdateList.isEmpty()){
+            internshipTeacherCollectService.updateBatchById(collectUpdateList);
+        }
+    }
+}

+ 12 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentInfoPageDto.java

@@ -55,4 +55,16 @@ public class BaseStudentInfoPageDto extends PageInput {
 
     @ApiModelProperty("包含的学生id")
     private List<Long> inIds;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
 }

+ 13 - 0
src/main/resources/mapper/student/BaseStudentSchoolRollMapper.xml

@@ -73,6 +73,19 @@
             OR t2.mobile LIKE concat('%', #{dto.keyWord}, '%')
             )
         </if>
+
+        <if test="dto.name != null and dto.name != ''">
+            AND t2.name LIKE concat('%', #{dto.name}, '%')
+        </if>
+        <if test="dto.mobile != null and dto.mobile != ''">
+            AND t2.mobile LIKE concat('%', #{dto.mobile}, '%')
+        </if>
+        <if test="dto.className != null and dto.className != ''">
+            AND t4.name LIKE concat('%', #{dto.className}, '%')
+        </if>
+        <if test="dto.credentialNumber != null and dto.credentialNumber != ''">
+            AND t2.credential_number LIKE concat('%', #{dto.credentialNumber}, '%')
+        </if>
         <if test="dto.notInIds != null and dto.notInIds.size() > 0">
             and t2.id in
             <foreach item="notInId" index="index" collection="dto.notInIds" open="(" close=")" separator=",">