Browse Source

Merge remote-tracking branch 'origin/feature/0406-degree' into feature/0406-degree

Eric 2 years ago
parent
commit
767b44ca84

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DegreeRegistrationDao.java

@@ -39,5 +39,5 @@ public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistrati
      *
      * @param degreeId 考级ID
      */
-    List<DegreeRegistration> selectByDegreeId(@Param("degreeId") Long degreeId);
+    List<DegreeRegistration> selectByDegreeId(@Param("degreeIds") List<Long> degreeId);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DegreeRegistration.java

@@ -83,6 +83,8 @@ public class DegreeRegistration {
 
     private Integer organId;
 
+    private String organName;
+
     private String vipTeacherName;
 
     private String normalTeacherName;

+ 21 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -58,6 +59,9 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
     @Autowired
     private SubjectService subjectService;
 
+    @Autowired
+    private OrganizationService organizationService;
+
     @Override
     public BaseDAO<Integer, DegreeRegistration> getDAO() {
         return degreeRegistrationDao;
@@ -253,6 +257,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
 
+
         List<DegreeRegistration> dataList = new ArrayList<>();
         int count = degreeRegistrationDao.queryCount(params);
 
@@ -284,6 +289,20 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 }
             }
 
+            // 设置分部
+            List<Integer> organIdSet = dataList.stream().map(o -> o.getOrganId()).filter(Objects::nonNull).collect(Collectors.toList());
+            Integer tenantId = TenantContextHolder.getTenantId();
+
+
+            List<Organization> organs = organizationService.findOrgans(organIdSet, tenantId);
+
+            if (!CollectionUtils.isEmpty(organs)) {
+                // id 分组
+                Map<Integer, String> organMap = organs.stream().collect(Collectors.toMap(Organization::getId, o -> o.getName(), (k1, k2) -> k1));
+                dataList.forEach(o -> o.setOrganName(organMap.get(o.getOrganId())));
+            }
+
+
 
             DegreeRegistration degree = degreeRegistrationDao.getTotalAmount(params);
             pageInfo.setApplyNum(degreeRegistrationDao.countApplyNum(params));
@@ -321,7 +340,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
             DegreeRegistration userLevelDegree = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(),
                     degree.getId(),DegreeTypeEnum.GRADE,levels,degreeRegistration.getSubjectId());
             if(Objects.nonNull(userLevelDegree)){
-                return BaseController.failed(HttpStatus.CREATED, "您选择的 " + userLevelDegree.getLevel() +  " 乐器考级已报名,请勿重复选择");
+                return BaseController.failed(HttpStatus.CREATED, "您选择的 乐器考级/级别" + userLevelDegree.getLevel() +  " 已报名,请勿重复选择");
             }
         }
         collect = registrationDtos.stream().filter(e -> e.getType() == DegreeTypeEnum.THEORY).collect(Collectors.toList());
@@ -330,7 +349,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
             DegreeRegistration userLevelDegree = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(),
                     degree.getId(),DegreeTypeEnum.THEORY,levels,degreeRegistration.getSubjectId());
             if(Objects.nonNull(userLevelDegree)){
-                return BaseController.failed(HttpStatus.CREATED, "您选择的 " + userLevelDegree.getLevel() +  " 乐理考级已报名,请勿重复选择");
+                return BaseController.failed(HttpStatus.CREATED, "您选择的  乐理考级/级别" + userLevelDegree.getLevel() +  " 已报名,请勿重复选择");
             }
         }
         return BaseController.succeed();

+ 34 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.beust.jcommander.internal.Lists;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
 import com.ym.mec.biz.dal.dao.OrganizationDao;
@@ -29,10 +30,7 @@ import com.ym.mec.biz.service.DegreeService;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -103,6 +101,29 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
 
         List<Organization> organs = organizationService.findOrgans(organIds, tenantId);
 
+
+        // 考级ID集合
+        List<Long> degreeIds = degrees.stream().map(DegreeWrapper.Degree::getId).collect(Collectors.toList());
+
+        // 查询考级报名的订单
+        List<DegreeRegistration> registrations = degreeRegistrationDao.selectByDegreeId(degreeIds);
+
+        // 按考级ID分组
+        Map<Long, List<DegreeRegistration>> registrationMap = registrations.stream().collect(Collectors.groupingBy(DegreeRegistration::getDegreeId));
+
+        for (DegreeWrapper.Degree degree : degrees) {
+            List<DegreeRegistration> registrationList = registrationMap.get(degree.getId());
+            if (CollectionUtils.isEmpty(registrationList)) {
+                continue;
+            }
+            List<Integer> userIds = registrationList.stream().map(DegreeRegistration::getUserId).collect(Collectors.toList());
+
+            degree.setRegisterTotal(userIds.size());
+
+            degree.setRegisterNum(new HashSet<>(userIds).size());
+
+        }
+
         degrees.forEach(o -> {
             List<String> organNames = Arrays.stream(o.getOrganIds().split(","))
                     .filter(Objects::nonNull)
@@ -207,7 +228,7 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
         statistical.setRegisterNum(degree.getRegisterNum());
 
         // 查询考级报名的订单
-        List<DegreeRegistration> registrations = degreeRegistrationDao.selectByDegreeId(id);
+        List<DegreeRegistration> registrations = degreeRegistrationDao.selectByDegreeId(Lists.newArrayList(id));
 
         if (CollectionUtils.isEmpty(registrations)) {
             return statistical;
@@ -221,6 +242,14 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
             return statistical;
         }
 
+        // 用户ID集合
+        List<Integer> userIds = registrations.stream().map(DegreeRegistration::getUserId).collect(Collectors.toList());
+        statistical.setRegisterTotal(userIds.size());
+
+        statistical.setRegisterNum(new HashSet<>(userIds).size());
+
+
+
         // 订单号集合
         List<String> orderNos = registrations.stream().map(DegreeRegistration::getOrderNo).collect(Collectors.toList());
 

+ 10 - 4
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -16,6 +16,7 @@
         <result column="city_" jdbcType="VARCHAR" property="city"/>
         <result column="school_" jdbcType="VARCHAR" property="school"/>
         <result column="subject_id_" property="subjectId"/>
+        <result column="subjectName" property="subjectName"/>
         <result column="level_" jdbcType="VARCHAR" property="level"/>
         <result column="theory_cert_" jdbcType="VARCHAR" property="theoryCert"/>
         <result column="mobile_" jdbcType="VARCHAR" property="mobile"/>
@@ -326,20 +327,25 @@
 
     <select id="getUserLevelDegrees" resultMap="DegreeRegistration">
         select * from degree_registration
-        where user_id_ = #{userId} and degree_id_ = #{degreeId} and ype_ = #{type}
+        where user_id_ = #{userId} and degree_id_ = #{degreeId} and type_ = #{type}
           AND FIND_IN_SET(level_,#{levels}) AND subject_id_ = #{subjectId} AND status_ = 2 LIMIT 1
     </select>
     <select id="getLockByOrderId" resultMap="DegreeRegistration">
         SELECT * FROM degree_registration WHERE order_no_ = #{orderNo} FOR UPDATE
     </select>
     <select id="findByByOrderId" resultMap="DegreeRegistration">
-        SELECT * FROM degree_registration WHERE order_no_ = #{orderNo}
+        SELECT dr.*,s.name_ subjectName FROM degree_registration dr
+        left join subject s ON s.id_ = dr.subject_id_
+        WHERE dr.order_no_ = #{orderNo}
     </select>
 
     <select id="selectByDegreeId" resultMap="DegreeRegistration">
         SELECT *
         FROM degree_registration
-        WHERE degree_id_ = #{degreeId}
-          AND status_ = 1
+        WHERE degree_id_ in
+        <foreach collection="degreeIds" item="degreeId" open="(" separator="," close=")">
+            #{degreeId}
+        </foreach>
+          AND status_ = 2
     </select>
 </mapper>

+ 15 - 13
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1773,28 +1773,30 @@ public class ExportController extends BaseController {
             throw new BizException("没有可导出的记录");
         }
         Map<String, String> map = new HashMap<>(10);
-        map.put("一级", "1");
-        map.put("二级", "2");
-        map.put("三级", "3");
-        map.put("四级", "4");
-        map.put("五级", "5");
-        map.put("六级", "6");
-        map.put("七级", "7");
-        map.put("八级", "8");
-        map.put("九级", "9");
-        map.put("十级", "10");
+        map.put("1","一级");
+        map.put("2","二级");
+        map.put("3","三级");
+        map.put("4","四级");
+        map.put("5","五级");
+        map.put("6","六级");
+        map.put("7","七级");
+        map.put("8","八级");
+        map.put("9","九级");
+        map.put("10","十级");
         for (DegreeRegistration row : pageList.getRows()) {
 //            row.setActivityTag(map.get(row.getLevel()));
 //            if (row.getType() == DegreeTypeEnum.THEORY) {
 //                row.setSubject("乐理");
 //            }
             row.setGender("1".equals(row.getGender()) ? "男" : "女");
+            row.setLevel(map.get(row.getLevel()));
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            String[] header = {"姓名", "性别", "编号", "证件号码",  "VIP老师",  "声部课老师", "城市", "学校", "报考乐器", "报考级别", "级别", "乐理级别证书", "家长联系电话", "考级费用", "备注", "缴费状态", "订单编号", "商户订单号", "报名时间"};
-            String[] body = {"name", "gender", "id", "idcard",  "vipTeacherName",  "normalTeacherName", "city", "school", "subject", "level", "activityTag",
-                    "theoryCert", "mobile", "money", "memo", "status == 2?'已缴费':status == 3?'已退费':'未缴费'", "orderNo", "transNo", "createTime"};
+            String[] header = {"姓名", "性别", "用户编号", "证件号码", "所属城市", "学校", "报考专业", "报考信息", "证书", "联系电话", "备注", "缴费状态", "订单编号", "交易流水号", "报名时间"};
+            String[] body = {"name", "gender", "userId", "idcard",  "organName",  "school", "type.code =='GRADE'?'专业考级':'乐理考级'",
+                    "type.code =='GRADE'?subjectName+'/'+level+'/'+money +'元':level+'/'+money +'元'",
+                    "theoryCert", "mobile", "memo", "status == 2?'已缴费':status == 3?'已退费':'未缴费'", "orderNo", "transNo", "createTime"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");