Bladeren bron

feat:1212

Joburgess 4 jaren geleden
bovenliggende
commit
c8e643ed35

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

@@ -9,6 +9,8 @@ import java.util.Map;
 
 public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistration> {
 
+    int batchUpdate(@Param("degrees") List<DegreeRegistration> degrees);
+
     DegreeRegistration findByMobileAndSporadicId(@Param("mobile") String mobile, @Param("sporadicId") Integer sporadicId);
 
     DegreeRegistration getLock(@Param("id") Integer id);
@@ -17,8 +19,6 @@ public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistrati
 
     DegreeRegistration getWithUserIdAndActivityTag(@Param("degree") DegreeRegistration degree);
 
-    DegreeRegistration getWithLevel(@Param("degree") DegreeRegistration degree);
-
     List<DegreeRegistration> getUserLevelDegrees(@Param("userId") Integer userId,
                                                  @Param("activityTag") String activityTag);
 }

+ 25 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -77,18 +77,19 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         Student student = studentDao.getLocked(degreeRegistration.getUserId());
 
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(), ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long endLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long ingLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(1)).count();
+        long endTheoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
+        long ingTheoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(1)).count();
 
-        if(Objects.nonNull(degreeRegistration.getSporadicId())&&levelNum>0){
+        if(Objects.nonNull(degreeRegistration.getSporadicId())&&endLevelNum>0){
             throw new BizException("您已报考过选择的考级项目");
         }
-        if(Objects.nonNull(degreeRegistration.getTheoryLevel())&&theoryLevelNum>0){
+        if(Objects.nonNull(degreeRegistration.getTheoryLevel())&&endTheoryLevelNum>0){
             throw new BizException("您已报考过选择的考级项目");
         }
 
         degreeRegistration.setActivityTag(ACTIVITY_TAG);
-        DegreeRegistration degree = degreeRegistrationDao.getWithLevel(degreeRegistration);
 
         Date nowDate = new Date();
 
@@ -139,24 +140,26 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         }
 
         if(Objects.nonNull(degreeRegistration.getSporadicId())||Objects.nonNull(degreeRegistration.getTheoryLevel())){
-            if (degree == null) {
-                degreeRegistration.setStatus(1);
-                degreeRegistration.setCreateTime(nowDate);
-                degreeRegistration.setUpdateTime(nowDate);
-                degreeRegistrationDao.insert(degreeRegistration);
-            } else if (degree.getStatus().equals(2)) {
-                throw new BizException("您已报考过选择的考级项目");
-            } else {
-                if (!degreeRegistration.getIsRepay() && degree.getStatus().equals(1)) {
-                    return BaseController.failed(HttpStatus.CONTINUE, "");
+            degreeRegistration.setStatus(1);
+            degreeRegistration.setCreateTime(nowDate);
+            degreeRegistration.setUpdateTime(nowDate);
+            degreeRegistrationDao.insert(degreeRegistration);
+
+            List<DegreeRegistration> updateDegrees = new ArrayList<>();
+            if(ingLevelNum>0||ingTheoryLevelNum>0){
+                for (DegreeRegistration userLevelDegree : userLevelDegrees) {
+                    if(Objects.nonNull(userLevelDegree.getSporadicId())&&userLevelDegree.getSporadicId().equals(degreeRegistration.getSporadicId())){
+                        userLevelDegree.setStatus(0);
+                        updateDegrees.add(userLevelDegree);
+                    }
+                    if(Objects.nonNull(userLevelDegree.getTheoryLevel())&&userLevelDegree.getTheoryLevel().equals(degreeRegistration.getTheoryLevel())){
+                        userLevelDegree.setStatus(0);
+                        updateDegrees.add(userLevelDegree);
+                    }
+                }
+                if(!CollectionUtils.isEmpty(updateDegrees)){
+                    degreeRegistrationDao.batchUpdate(updateDegrees);
                 }
-                degree.setStatus(0);
-                degreeRegistrationDao.update(degree);
-
-                degreeRegistration.setStatus(1);
-                degreeRegistration.setCreateTime(nowDate);
-                degreeRegistration.setUpdateTime(nowDate);
-                degreeRegistrationDao.insert(degreeRegistration);
             }
         }
 

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

@@ -209,6 +209,79 @@
         where id_ = #{id,jdbcType=INTEGER}
     </update>
 
+    <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.DegreeRegistration">
+        <foreach collection="degrees" item="degree" separator=";">
+            update degree_registration
+            <set>
+                <if test="degree.userId != null">
+                    user_id_ = #{degree.userId},
+                </if>
+                <if test="degree.organId != null">
+                    organ_id_ = #{degree.organId,jdbcType=INTEGER},
+                </if>
+                <if test="degree.sporadicId != null">
+                    sporadic_id_ = #{degree.sporadicId,jdbcType=INTEGER},
+                </if>
+                <if test="degree.orderNo != null">
+                    order_no_ = #{degree.orderNo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.transNo != null">
+                    trans_no_ = #{degree.transNo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.name != null">
+                    name_ = #{degree.name,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.gender != null">
+                    gender_ = #{degree.gender,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.idcard != null">
+                    idcard_ = #{degree.idcard,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.city != null">
+                    city_ = #{degree.city,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.school != null">
+                    school_ = #{degree.school,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.subject != null">
+                    subject_ = #{degree.subject,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.level != null">
+                    level_ = #{degree.level,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_level_ = #{degree.theoryLevel,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_money_ = #{degree.theoryMoney,jdbcType=DECIMAL},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_cert_ = #{degree.theoryCert,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.mobile != null">
+                    mobile_ = #{degree.mobile,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.money != null">
+                    money_ = #{degree.money,jdbcType=DECIMAL},
+                </if>
+                <if test="degree.memo != null">
+                    memo_ = #{degree.memo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.createTime != null">
+                    create_time_ = #{degree.createTime},
+                </if>
+                <if test="degree.status != null">
+                    status_ = #{degree.status,jdbcType=INTEGER},
+                </if>
+                <if test="degree.activityTag != null">
+                    activity_tag_ = #{degree.activityTag},
+                </if>
+                update_time_ = NOW()
+            </set>
+            where id_ = #{degree.id,jdbcType=INTEGER}
+        </foreach>
+    </update>
+
     <select id="findByMobileAndSporadicId" resultMap="DegreeRegistration">
         SELECT *
         FROM degree_registration
@@ -240,16 +313,6 @@
             </if>
     </select>
 
-    <select id="getWithLevel" resultMap="DegreeRegistration">
-        select *
-            from degree_registration
-        where
-            user_id_ = #{degree.userId}
-            AND activity_tag_=#{degree.activityTag}
-            AND (sporadic_id_ = #{degree.sporadicId} OR theory_level_ = #{degree.theoryLevel})
-            AND status_=1
-    </select>
-
     <select id="getUserLevelDegrees" resultMap="DegreeRegistration">
         select *
             from degree_registration

+ 4 - 4
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -105,8 +105,8 @@ public class DegreeController extends BaseController {
         degreeRegistration.setActivityTag(DegreeRegistrationService.ACTIVITY_TAG);
         studentDao.getLocked(degreeRegistration.getUserId());
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(), DegreeRegistrationService.ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
 
         if(Objects.nonNull(degreeRegistration.getSporadicId())&&levelNum>0){
             return failed(HttpStatus.CREATED, "您已报考过选择的考级项目");
@@ -154,8 +154,8 @@ public class DegreeController extends BaseController {
         result.put("sporadicChargeInfo", sporadicChargeInfoService.queryDetailPage(queryInfo));
 
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(user.getId(), DegreeRegistrationService.ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
 
         result.put("levelApplied", levelNum>0?1:0);
         result.put("theoryLevelApplied", theoryLevelNum>0?1:0);