Joburgess 5 lat temu
rodzic
commit
0b062c4b82

+ 11 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamManualLedgerDao.java

@@ -40,4 +40,15 @@ public interface ExamManualLedgerDao extends BaseDAO<Long, ExamManualLedger> {
      */
     BigDecimal countOrganLedgerWithExam(@Param("examId") Long examId,
                                         @Param("organId") Integer organId);
+
+    /**
+     * @describe 统计合作单位在指定项目中的累计支出
+     * @author Joburgess
+     * @date 2020.08.07
+     * @param examId:
+     * @param organIds:
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.math.BigDecimal>>
+     */
+    List<Map<Integer, BigDecimal>> countOrgansLedgerWithExam(@Param("examId") Long examId,
+                                                             @Param("organIds") List<Integer> organIds);
 }

+ 14 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dto/ExamOrganizationRelationExtraDto.java

@@ -1,6 +1,9 @@
 package com.keao.edu.user.dto;
 
 import com.keao.edu.user.entity.ExamOrganizationRelation;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
 
 /**
  * @Author Joburgess
@@ -12,6 +15,9 @@ public class ExamOrganizationRelationExtraDto extends ExamOrganizationRelation {
 
     private int selfOrgan;
 
+    @ApiModelProperty(value = "实际付款金额")
+    private BigDecimal actualPaymentAmount;
+
     public int getSelfOrgan() {
         return selfOrgan;
     }
@@ -27,4 +33,12 @@ public class ExamOrganizationRelationExtraDto extends ExamOrganizationRelation {
     public void setOrganizationName(String organizationName) {
         this.organizationName = organizationName;
     }
+
+    public BigDecimal getActualPaymentAmount() {
+        return actualPaymentAmount;
+    }
+
+    public void setActualPaymentAmount(BigDecimal actualPaymentAmount) {
+        this.actualPaymentAmount = actualPaymentAmount;
+    }
 }

+ 1 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamRoomStudentRelationService.java

@@ -36,11 +36,10 @@ public interface ExamRoomStudentRelationService extends BaseService<Long, ExamRo
      * @describe 自动分配学员到考场
      * @author Joburgess
      * @date 2020.08.06
-     * @param examRoomId:
      * @param selfOrganId:
      * @return void
      */
-    void autoSplitStudentToRoom(Long examRoomId, Integer selfOrganId);
+    void autoSplitStudentToRoom(Long examId, Integer selfOrganId);
 
     /**
      * @describe 更换学员考场

+ 3 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamOrganizationRelationServiceImpl.java

@@ -90,10 +90,13 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
 			params.put("offset", pageInfo.getOffset());
 			dataList = examOrganizationRelationDao.queryExamOrgans(params);
 			List<Integer> organIds = dataList.stream().map(ExamOrganizationRelation::getOrganId).collect(Collectors.toList());
+			List<Map<Integer, BigDecimal>> examOrganAmountMaps = examManualLedgerDao.countOrgansLedgerWithExam(queryInfo.getExamId().longValue(), organIds);
+			Map<Integer, BigDecimal> examOrganAmountMap = MapUtil.convertMybatisMap(examOrganAmountMaps, Integer.class, BigDecimal.class);
 			for (ExamOrganizationRelationExtraDto examOrganizationRelation : dataList) {
 				if(examOrganizationRelation.getOrganId().equals(queryInfo.getOrganId())){
 					examOrganizationRelation.setSelfOrgan(1);
 				}
+				examOrganizationRelation.setActualPaymentAmount(examOrganAmountMap.get(examOrganizationRelation.getOrganId()));
 			}
 		}
 		pageInfo.setRows(dataList);

+ 9 - 3
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -265,6 +265,9 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		Set<Integer> subjectIds = subjectRegistMap.keySet();
 		//未排考学员可排考考场
 		List<ExamRoom> examRooms = examRoomDao.getWithExamAndSubjects(examId, new ArrayList<>(subjectIds));
+		if(CollectionUtils.isEmpty(examRooms)){
+			throw new BizException("请先建立考场");
+		}
 		Set<Long> roomIds = examRooms.stream().map(ExamRoom::getId).collect(Collectors.toSet());
 		//未排考学员可排考考场学员
 		List<ExamRoomStudentRelation> examRoomStudents = examRoomStudentRelationDao.getWithExamRooms(new ArrayList<>(roomIds));
@@ -275,15 +278,17 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		//每个考场可分配学员数
 		Integer roomStudentNum=allStudentNum/roomNum;
 
+		Integer existRoomStudentAvgNum = examRoomStudents.size()/roomNum;
+
 		Set<Long> inRoomRegistIds=new HashSet<>();
 
 		List<ExamRoomStudentRelation> newRoomStudents = new ArrayList<>();
 		Map<Long, Integer> roomStudentNumMap = examRooms.stream().collect(Collectors.toMap(ExamRoom::getId, e->Objects.isNull(e.getExamRoomStudentNum())?0:e.getExamRoomStudentNum()));
 
-		if(roomStudentNum>0){
+		if(roomStudentNum>existRoomStudentAvgNum){
 			int startIndex=0;
 			for (ExamRoom examRoom : examRooms) {
-				List<ExamRegistration> examRegistrations = notInRoomStudents.subList(startIndex, roomStudentNum - examRoom.getExamRoomStudentNum());
+				List<ExamRegistration> examRegistrations = notInRoomStudents.subList(startIndex, startIndex + roomStudentNum - examRoom.getExamRoomStudentNum());
 				startIndex = startIndex+examRegistrations.size();
 				for (ExamRegistration examRegistration : examRegistrations) {
 					ExamRoomStudentRelation e=new ExamRoomStudentRelation();
@@ -299,7 +304,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			}
 		}
 
-		List<ExamRegistration> surplusRegist = notInRoomStudents.stream().filter(e -> !inRoomRegistIds.contains(e.getId())).collect(Collectors.toList());
+		List<ExamRegistration> surplusRegist = notInRoomStudents.stream().filter(e -> !inRoomRegistIds.contains(e.getId().longValue())).collect(Collectors.toList());
 
 		for (ExamRegistration examRegistration : surplusRegist) {
 			List<Long> sortedRoomIds=new LinkedList<>();
@@ -312,6 +317,7 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 				e.setStudentId(examRegistration.getStudentId());
 				e.setTenantId(examinationBasic.getTenantId());
 				newRoomStudents.add(e);
+				break;
 			}
 		}
 

+ 13 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -382,6 +382,19 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
         examinationBasic.setActualExamStartTime(existsExam.getActualExamStartTime());
         examinationBasic.setActualExamEndTime(existsExam.getActualExamEndTime());
 
+        if(Objects.isNull(examinationBasic.getPosterBackgroundImg())){
+            examinationBasic.setPosterBackgroundImg(existsExam.getPosterBackgroundImg());
+        }
+        if(Objects.isNull(examinationBasic.getCustomPoster())){
+            examinationBasic.setCustomPoster(existsExam.getCustomPoster());
+        }
+        if(Objects.isNull(examinationBasic.getActualExamStartTime())){
+            examinationBasic.setActualExamStartTime(existsExam.getActualExamStartTime());
+        }
+        if(Objects.isNull(examinationBasic.getActualExamEndTime())){
+            examinationBasic.setActualExamEndTime(existsExam.getActualExamEndTime());
+        }
+
         examinationBasicDao.update(examinationBasic);
         if(examRegistIsChange){
             examOrganizationRelationService.examDateChangePush(examinationBasic.getId());

+ 16 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamManualLedgerMapper.xml

@@ -170,4 +170,20 @@
 			AND organ_id_ = #{organId}
 			AND trans_direction_ = 'EXPENDITURE'
 	</select>
+
+    <select id="countOrgansLedgerWithExam" resultType="java.util.Map">
+		SELECT
+			target_organ_id_ AS 'key',
+			SUM( amount_ ) AS 'value'
+		FROM
+			exam_manual_ledger
+		WHERE
+			examination_basic_id_ = #{examId}
+			AND target_organ_id_ IN
+			<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+				#{organId}
+			</foreach>
+		GROUP BY
+			target_organ_id_;
+    </select>
 </mapper>

+ 2 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRoomStudentRelationController.java

@@ -131,7 +131,7 @@ public class ExamRoomStudentRelationController extends BaseController {
 
     @ApiOperation("自动分配学员到考场")
     @PostMapping(value = "/autoSplitStudentToRoom")
-    public HttpResponseResult autoSplitStudentToRoom(Long examRoomId){
+    public HttpResponseResult autoSplitStudentToRoom(Long examId){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         Integer organId=null;
         if(!sysUser.getIsSuperAdmin()){
@@ -141,7 +141,7 @@ public class ExamRoomStudentRelationController extends BaseController {
             }
             organId=employee.getOrganId();
         }
-        examRoomStudentRelationService.autoSplitStudentToRoom(examRoomId, organId);
+        examRoomStudentRelationService.autoSplitStudentToRoom(examId, organId);
         return succeed();
     }
 

+ 3 - 4
edu-util/src/main/java/com/keao/edu/util/collection/MapUtil.java

@@ -9,10 +9,7 @@ import java.beans.PropertyDescriptor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 public class MapUtil {
 
@@ -144,6 +141,8 @@ public class MapUtil {
 		int size = 0;
 		if(maps != null){
 			size = maps.size();
+		}else{
+			return Collections.EMPTY_MAP;
 		}
 		Map result=new HashMap(size);
 		try {