Bläddra i källkod

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	web/src/main/java/com/jpsoft/campus/modules/base/controller/ApplicationPrimaryController.java
xiao547607 5 år sedan
förälder
incheckning
08709248cf

+ 1 - 0
common/src/main/java/com/jpsoft/campus/modules/base/dao/AdjustDetailDAO.java

@@ -16,4 +16,5 @@ public interface AdjustDetailDAO {
 	int delete(String id);
 	List<AdjustDetail> list();
 	List<AdjustDetail> search(Map<String, Object> searchParams, List<Sort> sortList);
+	List<AdjustDetailDAO> pageSearchDTO(Map<String, Object> searchParams, List<Sort> sortList);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/campus/modules/base/dao/ApportionDetailDAO.java

@@ -2,6 +2,7 @@ package com.jpsoft.campus.modules.base.dao;
 
 import java.util.List;
 
+import com.jpsoft.campus.modules.base.dto.ApportionDetailDTO;
 import com.jpsoft.campus.modules.base.entity.ApportionDetail;
 import org.springframework.stereotype.Repository;
 import java.util.Map;
@@ -16,4 +17,5 @@ public interface ApportionDetailDAO {
 	int delete(String id);
 	List<ApportionDetail> list();
 	List<ApportionDetail> search(Map<String, Object> searchParams, List<Sort> sortList);
+	List<ApportionDetailDTO> pageSearchDTO(Map<String, Object> searchParams, List<Sort> sortList);
 }

+ 26 - 0
common/src/main/java/com/jpsoft/campus/modules/base/dto/AdjustDetailDTO.java

@@ -0,0 +1,26 @@
+package com.jpsoft.campus.modules.base.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class AdjustDetailDTO implements Serializable {
+    @ApiModelProperty(value = "编号")
+    private String id;
+    @ApiModelProperty(value = "学生姓名")
+    private String studentName;
+    @ApiModelProperty(value = "学生证件类型")
+    private String studentCardType;
+    @ApiModelProperty(value = "学生证件号码")
+    private String studentIdCard;
+    @ApiModelProperty(value = "报名类型")
+    private String typeName;
+    @ApiModelProperty(value = "报名学校")
+    private String schoolName;
+    @ApiModelProperty(value = "报名状态")
+    private String statusName;
+    @ApiModelProperty(value = "预录取学校")
+    private String offerName;
+}

+ 5 - 5
common/src/main/java/com/jpsoft/campus/modules/base/dto/ApportionDTO.java → common/src/main/java/com/jpsoft/campus/modules/base/dto/ApportionDetailDTO.java

@@ -11,7 +11,7 @@ import java.util.Date;
 import java.util.List;
 
 @Data
-public class ApportionDTO implements Serializable {
+public class ApportionDetailDTO implements Serializable {
     @ApiModelProperty(value = "编号")
     private String id;
     @ApiModelProperty(value = "学生姓名")
@@ -21,13 +21,13 @@ public class ApportionDTO implements Serializable {
     @ApiModelProperty(value = "学生证件号码")
     private String studentIdCard;
     @ApiModelProperty(value = "报名类型")
-    private String type;
+    private String typeName;
     @ApiModelProperty(value = "报名学校")
-    private String schoolId;
+    private String schoolName;
     @ApiModelProperty(value = "报名状态")
-    private String status;
+    private String statusName;
     @ApiModelProperty(value = "预录取学校")
-    private String offerId;
+    private String offerName;
     @ApiModelProperty(value = "派位结果")
     private String winner;
 }

+ 2 - 0
common/src/main/java/com/jpsoft/campus/modules/base/service/AdjustDetailService.java

@@ -3,6 +3,7 @@ package com.jpsoft.campus.modules.base.service;
 import java.util.List;
 import java.util.Map;
 import com.github.pagehelper.Page;
+import com.jpsoft.campus.modules.base.dto.AdjustDetailDTO;
 import com.jpsoft.campus.modules.base.entity.AdjustDetail;
 import com.jpsoft.campus.modules.common.dto.Sort;
 
@@ -14,4 +15,5 @@ public interface AdjustDetailService {
 	int delete(String id);
 	List<AdjustDetail> list();
 	Page<AdjustDetail> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+	Page<AdjustDetailDTO> pageSearchDTO(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/campus/modules/base/service/ApportionDetailService.java

@@ -3,6 +3,7 @@ package com.jpsoft.campus.modules.base.service;
 import java.util.List;
 import java.util.Map;
 
+import com.jpsoft.campus.modules.base.dto.ApportionDetailDTO;
 import com.jpsoft.campus.modules.base.entity.ApportionDetail;
 import com.jpsoft.campus.modules.common.dto.Sort;
 import com.github.pagehelper.Page;
@@ -15,4 +16,5 @@ public interface ApportionDetailService {
 	int delete(String id);
 	List<ApportionDetail> list();
 	Page<ApportionDetail> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+	Page<ApportionDetailDTO> pageSearchDTO(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 10 - 0
common/src/main/java/com/jpsoft/campus/modules/base/service/impl/AdjustDetailServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.UUID;
 import javax.annotation.Resource;
 
 import com.jpsoft.campus.modules.base.dao.AdjustDetailDAO;
+import com.jpsoft.campus.modules.base.dto.AdjustDetailDTO;
 import com.jpsoft.campus.modules.base.entity.AdjustDetail;
 import com.jpsoft.campus.modules.base.service.AdjustDetailService;
 import org.springframework.stereotype.Component;
@@ -68,4 +69,13 @@ public class AdjustDetailServiceImpl implements AdjustDetailService {
         
         return page;
 	}
+
+	@Override
+	public Page<AdjustDetailDTO> pageSearchDTO(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+		Page<AdjustDetailDTO> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+			adjustDetailDAO.pageSearchDTO(searchParams,sortList);
+		});
+
+		return page;
+	}
 }

+ 10 - 0
common/src/main/java/com/jpsoft/campus/modules/base/service/impl/ApportionDetailServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.UUID;
 import javax.annotation.Resource;
 
 import com.jpsoft.campus.modules.base.dao.ApportionDetailDAO;
+import com.jpsoft.campus.modules.base.dto.ApportionDetailDTO;
 import com.jpsoft.campus.modules.base.entity.ApportionDetail;
 import com.jpsoft.campus.modules.base.service.ApportionDetailService;
 import org.springframework.stereotype.Component;
@@ -68,4 +69,13 @@ public class ApportionDetailServiceImpl implements ApportionDetailService {
         
         return page;
 	}
+
+	@Override
+	public Page<ApportionDetailDTO> pageSearchDTO(Map<String, Object> searchParams, int pageNumber, int pageSize, boolean count, List<Sort> sortList) {
+		Page<ApportionDetailDTO> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+			apportionDetailDAO.pageSearchDTO(searchParams,sortList);
+		});
+
+		return page;
+	}
 }

+ 33 - 0
common/src/main/resources/mapper/base/AdjustDetail.xml

@@ -98,4 +98,37 @@ id_,application_id,student_id,person_id,school_id,del_flag,create_by,create_time
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+	<resultMap id="AdjustDetailDTOMap" type="com.jpsoft.campus.modules.base.dto.AdjustDetailDTO">
+		<id property="id" column="id_" />
+		<result property="studentName" column="studentName" />
+		<result property="studentCardType" column="studentCardType" />
+		<result property="studentIdCard" column="studentIdCard" />
+		<result property="typeName" column="typeName" />
+		<result property="schoolName" column="schoolName" />
+		<result property="statusName" column="statusName" />
+		<result property="offerName" column="offerName" />
+	</resultMap>
+	<select id="pageSearchDTO" parameterType="hashmap" resultMap="AdjustDetailDTOMap">
+		<![CDATA[
+			SELECT a.id_,b.name_ AS studentName,g.name_ AS studentCardType,b.id_card AS studentIdCard,d.name_ AS typeName,e.name_ AS schoolName,h.name_ AS statusName,f.name_ AS offerName FROM base_adjust_detail a
+			LEFT JOIN base_student_info b ON a.student_id = b.id_
+			LEFT JOIN base_application_primary c ON a.application_id = c.id_
+			LEFT JOIN sys_data_dictionary d ON c.category_id = d.id_
+			LEFT JOIN base_school_info e ON a.school_id = e.id_
+			LEFT JOIN base_school_info f ON c.offer_id = f.id_
+			LEFT JOIN sys_data_dictionary g ON (b.card_type = g.value_ AND g.parent_id = '1f0a58b9-5338-47ef-9233-a4539cc00010')
+			LEFT JOIN sys_data_dictionary h ON (c.status_ = h.value_ AND h.parent_id = '13e5b15f-8d10-44af-99f4-f05c9afd64eb')
+		]]>
+		<where>
+			<if test="searchParams.schoolId != null">
+				and c.school_id = #{searchParams.schoolId}
+			</if>
+			<if test="searchParams.idCardOrName != null">
+				and (b.id_card = #{searchParams.idCardOrName} or b.name_ = #{searchParams.idCardOrName})
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+			${sort.name} ${sort.order}
+		</foreach>
+	</select>
 </mapper>

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

@@ -137,6 +137,7 @@
 			SELECT * FROM base_application_primary
 		]]>
         <where>
+            and del_flag = 0
             <if test="searchParams.type != null">
                 and type_ like #{searchParams.type}
             </if>
@@ -146,6 +147,15 @@
             <if test="searchParams.idCard != null">
                 and id_card like #{searchParams.idCard}
             </if>
+            <if test="searchParams.schoolId != null">
+                and school_id = #{searchParams.schoolId}
+            </if>
+            <if test="searchParams.categoryId != null">
+                and category_id like #{searchParams.categoryId}
+            </if>
+            <if test="searchParams.status != null">
+                and status_ = #{searchParams.status}
+            </if>
         </where>
         <foreach item="sort" collection="sortList" open="order by" separator=",">
             ${sort.name} ${sort.order}

+ 39 - 2
common/src/main/resources/mapper/base/ApportionDetail.xml

@@ -100,12 +100,49 @@ id_,apportion_id,application_id,student_id,person_id,school_id,winner_,del_flag,
 			select * from base_apportion_detail
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.apportionId != null">
+				and apportion_id = #{searchParams.apportionId}
+			</if>
+			<if test="searchParams.winner != null">
+				and winner_ = #{searchParams.winner}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+	<resultMap id="ApportionDetailDTOMap" type="com.jpsoft.campus.modules.base.dto.ApportionDetailDTO">
+		<id property="id" column="id_" />
+		<result property="studentName" column="studentName" />
+		<result property="studentCardType" column="studentCardType" />
+		<result property="studentIdCard" column="studentIdCard" />
+		<result property="typeName" column="typeName" />
+		<result property="schoolName" column="schoolName" />
+		<result property="statusName" column="statusName" />
+		<result property="offerName" column="offerName" />
+		<result property="winner" column="winner_" />
+	</resultMap>
+	<select id="pageSearchDTO" parameterType="hashmap" resultMap="ApportionDetailDTOMap">
+		<![CDATA[
+			SELECT a.id_,b.name_ AS studentName,g.name_ AS studentCardType,b.id_card AS studentIdCard,d.name_ AS typeName,e.name_ AS schoolName,h.name_ AS statusName,f.name_ AS offerName,a.winner_ FROM base_apportion_detail a
+			LEFT JOIN base_student_info b ON a.student_id = b.id_
+			LEFT JOIN base_application_primary c ON a.application_id = c.id_
+			LEFT JOIN sys_data_dictionary d ON c.category_id = d.id_
+			LEFT JOIN base_school_info e ON a.school_id = e.id_
+			LEFT JOIN base_school_info f ON c.offer_id = f.id_
+			LEFT JOIN sys_data_dictionary g ON (b.card_type = g.value_ AND g.parent_id = '1f0a58b9-5338-47ef-9233-a4539cc00010')
+			LEFT JOIN sys_data_dictionary h ON (c.status_ = h.value_ AND h.parent_id = '13e5b15f-8d10-44af-99f4-f05c9afd64eb')
+		]]>
+		<where>
+			<if test="searchParams.apportionId != null">
+				and a.apportion_id = #{searchParams.apportionId}
+			</if>
+			<if test="searchParams.winner != null">
+				and a.winner_ = #{searchParams.winner}
+			</if>
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+			${sort.name} ${sort.order}
+		</foreach>
+	</select>
 </mapper>

+ 58 - 36
web/src/main/java/com/jpsoft/campus/modules/base/controller/AdjustDetailController.java

@@ -1,8 +1,11 @@
 package com.jpsoft.campus.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.campus.modules.base.dto.AdjustDetailDTO;
 import com.jpsoft.campus.modules.base.entity.AdjustDetail;
+import com.jpsoft.campus.modules.base.entity.ApplicationPrimary;
 import com.jpsoft.campus.modules.base.service.AdjustDetailService;
+import com.jpsoft.campus.modules.base.service.ApplicationPrimaryService;
 import com.jpsoft.campus.modules.common.dto.MessageResult;
 import com.jpsoft.campus.modules.common.utils.PojoUtils;
 import io.swagger.annotations.Api;
@@ -26,6 +29,8 @@ public class AdjustDetailController {
 
     @Autowired
     private AdjustDetailService adjustDetailService;
+    @Autowired
+    private ApplicationPrimaryService applicationPrimaryService;
 
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
@@ -39,37 +44,6 @@ public class AdjustDetailController {
 
         return msgResult;
     }
-    
-    @ApiOperation(value="添加信息")
-    @PostMapping("add")
-    public MessageResult<AdjustDetail> add(@RequestBody AdjustDetail adjustDetail,@RequestAttribute String subject){
-        MessageResult<AdjustDetail> msgResult = new MessageResult<>();
-
-        try {
-            adjustDetail.setId(UUID.randomUUID().toString());
-            adjustDetail.setDelFlag(false);
-            adjustDetail.setCreateBy(subject);
-            adjustDetail.setCreateTime(new Date());
-            
-            int affectCount = adjustDetailService.insert(adjustDetail);
-
-            if (affectCount > 0) {
-                msgResult.setResult(true);
-                msgResult.setData(adjustDetail);
-            } else {
-                msgResult.setResult(false);
-                msgResult.setMessage("数据库添加失败");
-            }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
-
-            msgResult.setResult(false);
-            msgResult.setMessage(ex.getMessage());
-        }
-
-        return msgResult;
-    }
 
     @ApiOperation(value="获取信息")
     @GetMapping("edit/{id}")
@@ -193,10 +167,10 @@ public class AdjustDetailController {
         return msgResult;
     }
 
-    @ApiOperation(value="列表")
+    @ApiOperation(value="调剂列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     public MessageResult<Map> pageList(
-            String id,
+            String schoolId,String idCardOrName,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             @RequestAttribute String subject){
@@ -211,15 +185,63 @@ public class AdjustDetailController {
         List<Sort> sortList = new ArrayList<>();
         sortList.add(new Sort("id_","asc"));
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+        if (StringUtils.isNotEmpty(schoolId)) {
+            searchParams.put("schoolId",schoolId);
+        }
+        if (StringUtils.isNotEmpty(idCardOrName)) {
+            searchParams.put("idCardOrName",idCardOrName);
         }
 
-        Page<AdjustDetail> page = adjustDetailService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+        Page<AdjustDetailDTO> page = adjustDetailService.pageSearchDTO(searchParams,pageIndex,pageSize,true,sortList);
 
         msgResult.setResult(true);
         msgResult.setData(PojoUtils.pageWrapper(page));
 
         return msgResult;
     }
+
+    @ApiOperation(value="调剂学校")
+    @PostMapping("add")
+    public MessageResult<AdjustDetail> add(String applicationId,String schoolId,@RequestAttribute String subject){
+        MessageResult<AdjustDetail> msgResult = new MessageResult<>();
+
+        try {
+            ApplicationPrimary applicationPrimary = applicationPrimaryService.get(applicationId);
+            applicationPrimary.setOfferId(schoolId);
+            applicationPrimary.setStatus(String.valueOf(Integer.parseInt(applicationPrimary.getStatus()) + 10));
+            applicationPrimary.setUpdateBy(subject);
+            applicationPrimary.setUpdateTime(new Date());
+            applicationPrimaryService.update(applicationPrimary);
+
+            //写入调剂
+            AdjustDetail adjustDetail = new AdjustDetail();
+            adjustDetail.setId(UUID.randomUUID().toString());
+            adjustDetail.setApplicationId(applicationPrimary.getId());
+            adjustDetail.setStudentId(applicationPrimary.getStudentId());
+            adjustDetail.setPersonId(applicationPrimary.getPersonId());
+            adjustDetail.setSchoolId(schoolId);
+            adjustDetail.setDelFlag(false);
+            adjustDetail.setCreateBy(subject);
+            adjustDetail.setCreateTime(new Date());
+            adjustDetail.setUpdateBy(subject);
+            adjustDetail.setUpdateTime(new Date());
+            int affectCount = adjustDetailService.update(adjustDetail);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(adjustDetail);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库更新失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 98 - 0
web/src/main/java/com/jpsoft/campus/modules/base/controller/ApportionController.java

@@ -1,8 +1,12 @@
 package com.jpsoft.campus.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.campus.modules.base.entity.ApplicationPrimary;
 import com.jpsoft.campus.modules.base.entity.Apportion;
+import com.jpsoft.campus.modules.base.entity.ApportionDetail;
 import com.jpsoft.campus.modules.base.entity.SchoolInfo;
+import com.jpsoft.campus.modules.base.service.ApplicationPrimaryService;
+import com.jpsoft.campus.modules.base.service.ApportionDetailService;
 import com.jpsoft.campus.modules.base.service.ApportionService;
 import com.jpsoft.campus.modules.base.service.SchoolInfoService;
 import com.jpsoft.campus.modules.common.dto.Sort;
@@ -34,11 +38,15 @@ public class ApportionController {
     @Autowired
     private ApportionService apportionService;
     @Autowired
+    private ApportionDetailService apportionDetailService;
+    @Autowired
     private SchoolInfoService schoolInfoService;
     @Autowired
     private DataDictionaryService dataDictionaryService;
     @Autowired
     private UserService userService;
+    @Autowired
+    private ApplicationPrimaryService applicationPrimaryService;
 
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
@@ -263,4 +271,94 @@ public class ApportionController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="开始派位-小学")
+    @PostMapping("startApportionPrimary")
+    public MessageResult<Map> startApportionPrimary(String schoolId,String type,Integer amount,@RequestAttribute String subject){
+        MessageResult<Map> msgResult = new MessageResult<>();
+        Map<String,Object> map = new HashMap<>();
+
+        try {
+            //读取等待派位人员信息列表
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("status","60");
+            if (StringUtils.isNotEmpty(schoolId)) {
+                searchParams.put("schoolId",schoolId);
+            }
+            if (StringUtils.isNotEmpty(type)) {
+                searchParams.put("categoryId",type);
+            }
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time","desc"));
+            Page<ApplicationPrimary> applicationPrimaryPage = applicationPrimaryService.pageSearch(searchParams,1,100000,false,sortList);
+
+            //随机抽取
+            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 j=0;j>-1;j++) {
+                    Integer ran = random.nextInt(applicationPrimaryPage.size());
+                    if (!integerList.contains(ran)) {
+                        integerList.add(ran);
+                        break;
+                    }
+                }
+            }
+
+            //写入派位信息
+            Apportion apportion = new Apportion();
+            apportion.setId(UUID.randomUUID().toString());
+            apportion.setSchoolId(schoolId);
+            apportion.setType(type);
+            apportion.setDelFlag(false);
+            apportion.setCreateBy(subject);
+            apportion.setCreateTime(new Date());
+            apportion.setUpdateBy(subject);
+            apportion.setUpdateTime(new Date());
+            apportionService.insert(apportion);
+
+            //写入派位列表
+            for(int i=0;i<applicationPrimaryPage.size();i++){
+                ApplicationPrimary applicationPrimary = applicationPrimaryPage.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);
+                Boolean bl = integerList.contains(i) == true ? true : false;
+                apportionDetail.setWinner(bl);
+                apportionDetail.setDelFlag(false);
+                apportionDetail.setCreateBy(subject);
+                apportionDetail.setCreateTime(new Date());
+                apportionDetail.setUpdateBy(subject);
+                apportionDetail.setUpdateTime(new Date());
+                apportionDetailService.insert(apportionDetail);
+
+                if(bl){
+                    applicationPrimary.setStatus(String.valueOf(Integer.parseInt(applicationPrimary.getStatus()) + 10));
+                    applicationPrimary.setOfferId(schoolId);
+                    applicationPrimary.setUpdateBy(subject);
+                    applicationPrimary.setUpdateTime(new Date());
+                    applicationPrimaryService.update(applicationPrimary);
+                }
+            }
+
+            map.put("apportionId",apportion.getId());
+            msgResult.setResult(true);
+            msgResult.setData(map);
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 76 - 0
web/src/main/java/com/jpsoft/campus/modules/base/controller/ApportionDetailController.java

@@ -1,7 +1,10 @@
 package com.jpsoft.campus.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.campus.modules.base.dto.ApportionDetailDTO;
+import com.jpsoft.campus.modules.base.entity.ApplicationPrimary;
 import com.jpsoft.campus.modules.base.entity.ApportionDetail;
+import com.jpsoft.campus.modules.base.service.ApplicationPrimaryService;
 import com.jpsoft.campus.modules.base.service.ApportionDetailService;
 import com.jpsoft.campus.modules.common.dto.Sort;
 import com.jpsoft.campus.modules.common.dto.MessageResult;
@@ -26,6 +29,8 @@ public class ApportionDetailController {
 
     @Autowired
     private ApportionDetailService apportionDetailService;
+    @Autowired
+    private ApplicationPrimaryService applicationPrimaryService;
 
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
@@ -222,4 +227,75 @@ public class ApportionDetailController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="派位详情列表")
+    @RequestMapping(value = "pageListDTO",method = RequestMethod.POST)
+    public MessageResult<Map> pageListDTO(
+            String apportionId,
+            Boolean winner,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            @RequestAttribute String subject){
+
+        //当前用户ID
+        System.out.println(subject);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.create_time","asc"));
+
+        if (StringUtils.isNotEmpty(apportionId)) {
+            searchParams.put("apportionId",apportionId);
+        }
+        if (winner != null) {
+            searchParams.put("winner",winner);
+        }
+
+        Page<ApportionDetailDTO> page = apportionDetailService.pageSearchDTO(searchParams,pageIndex,pageSize,true,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="统计:派位详情列表")
+    @PostMapping("startApportionPrimary")
+    public MessageResult<Map> startApportionPrimary(String apportionId,@RequestAttribute String subject){
+        MessageResult<Map> msgResult = new MessageResult<>();
+        Map<String,Object> map = new HashMap<>();
+
+        try {
+            Map<String,Object> searchParams = new HashMap<>();
+            if (StringUtils.isNotEmpty(apportionId)) {
+                searchParams.put("apportionId",apportionId);
+            }
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time","desc"));
+            Page<ApplicationPrimary> applicationPrimaryPage = applicationPrimaryService.pageSearch(searchParams,1,100000,false,sortList);
+            map.put("all",applicationPrimaryPage.size());
+
+            searchParams.put("winner",true);
+            applicationPrimaryPage = applicationPrimaryService.pageSearch(searchParams,1,100000,false,sortList);
+            map.put("winner",applicationPrimaryPage.size());
+
+            searchParams.put("winner",false);
+            applicationPrimaryPage = applicationPrimaryService.pageSearch(searchParams,1,100000,false,sortList);
+            map.put("loser",applicationPrimaryPage.size());
+
+            msgResult.setResult(true);
+            msgResult.setData(map);
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }