shuzhan 3 роки тому
батько
коміт
0b962416f7

+ 3 - 0
common/src/main/resources/mapper/base/ApplicationPrimary.xml

@@ -204,6 +204,9 @@
             <if test="searchParams.grade != null">
                 and g.grade_ = #{searchParams.grade}
             </if>
+            <if test="searchParams.hit != null">
+                and a.hit_ = #{searchParams.hit}
+            </if>
         </where>
         <foreach item="sort" collection="sortList" open="order by" separator=",">
             ${sort.name} ${sort.order}

+ 46 - 1
web/src/main/java/com/jpsoft/campus/modules/base/controller/ApportionController.java

@@ -284,29 +284,49 @@ public class ApportionController {
 
         try {
             //读取等待派位人员信息列表
+            Map<String,Object> bzSearchParams = new HashMap<>();
             Map<String,Object> searchParams = new HashMap<>();
             searchParams.put("status","60");
+            bzSearchParams.put("status","60");
             if (StringUtils.isNotEmpty(schoolId)) {
                 searchParams.put("schoolId",schoolId);
+                bzSearchParams.put("schoolId",schoolId);
             }
             if (StringUtils.isNotEmpty(grade)) {
                 searchParams.put("grade",grade);
+                bzSearchParams.put("grade",grade);
             }
             if (StringUtils.isNotEmpty(type)) {
                 DataDictionary dataDictionary = dataDictionaryService.findByCatalogNameAndValue("C类生证明",type);
                 searchParams.put("categoryId",dataDictionary.getId());
+                bzSearchParams.put("categoryId",dataDictionary.getId());
             }
             List<Sort> sortList = new ArrayList<>();
             sortList.add(new Sort("a.create_time","desc"));
+
+            //必中
+            bzSearchParams.put("hit","1");
+            bzSearchParams.put("delFlag","0");
+            Page<ApplicationPrimary> bzPage = applicationPrimaryService.pageSearch(bzSearchParams,1,100000,false,sortList);
+            //随机
+            searchParams.put("hit","0");
+            searchParams.put("delFlag","0");
             Page<ApplicationPrimary> applicationPrimaryPage = applicationPrimaryService.pageSearch(searchParams,1,100000,false,sortList);
 
+            //学位数-必中的人数=剩余的数量
+            Integer syAmount = amount - bzPage.size();
+            if(syAmount < 0){
+                syAmount = 0;
+            }
+
             //随机抽取
             if(amount > applicationPrimaryPage.size()){
                 amount = applicationPrimaryPage.size();
             }
+
             List<Integer> integerList = new ArrayList<>();
             Random random = new Random();
-            for(int i=0;i<amount;i++){
+            for(int i=0;i<syAmount;i++){
                 for(int j=0;j>-1;j++) {
                     Integer ran = random.nextInt(applicationPrimaryPage.size());
                     if (!integerList.contains(ran)) {
@@ -335,6 +355,31 @@ public class ApportionController {
                 return msgResult;
             }
 
+            //必中
+            for(int i=0;i<bzPage.size();i++){
+                ApplicationPrimary applicationPrimary = bzPage.get(i);
+                ApportionDetail apportionDetail = new ApportionDetail();
+                apportionDetail.setId(UUID.randomUUID().toString());
+                apportionDetail.setApportionId(apportion.getId());
+                apportionDetail.setApplicationId(applicationPrimary.getId());
+                apportionDetail.setStudentId(applicationPrimary.getStudentId());
+                apportionDetail.setPersonId(applicationPrimary.getPersonId());
+                apportionDetail.setSchoolId(schoolId);
+                apportionDetail.setWinner(true);
+                apportionDetail.setDelFlag(false);
+                apportionDetail.setCreateBy(subject);
+                apportionDetail.setCreateTime(new Date());
+                apportionDetail.setUpdateBy(subject);
+                apportionDetail.setUpdateTime(new Date());
+                apportionDetailService.insert(apportionDetail);
+
+                applicationPrimary.setStatus(String.valueOf(Integer.parseInt(applicationPrimary.getStatus()) + 10));
+                applicationPrimary.setOfferId(schoolId);
+                applicationPrimary.setUpdateBy(subject);
+                applicationPrimary.setUpdateTime(new Date());
+                applicationPrimaryService.update(applicationPrimary);
+            }
+
             //写入派位列表
             for(int i=0;i<applicationPrimaryPage.size();i++){
                 ApplicationPrimary applicationPrimary = applicationPrimaryPage.get(i);