licailing %!s(int64=4) %!d(string=hai) anos
pai
achega
0d7d5684ba

+ 7 - 0
pom.xml

@@ -304,6 +304,13 @@
             <artifactId>jave-all-deps</artifactId>
             <version>3.1.1</version>
         </dependency>
+
+        <!-- 解压rar -->
+        <dependency>
+            <groupId>com.github.junrar</groupId>
+            <artifactId>junrar</artifactId>
+            <version>4.0.0</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 3 - 0
src/main/java/com/izouma/wenlvju/repo/RateRepo.java

@@ -30,4 +30,7 @@ public interface RateRepo extends JpaRepository<Rate, Long>, JpaSpecificationExe
 
     @Query(nativeQuery = true, value = "select count(1) from rate where del=0 and (expert_user_id = ?1 or find_in_set(?1,expert_member_user_id))")
     Long countByExpertId(Long userId);
+
+    List<Rate> findAllByStatusAndYear(RateStatus status, String year);
+
 }

+ 19 - 19
src/main/java/com/izouma/wenlvju/service/RateExpertAuditService.java

@@ -53,30 +53,30 @@ public class RateExpertAuditService {
         });
     }
 
-    public void grade(Long rateId, Long userId) {
+    public void grade(Long rateId) {
         List<RateExpertAudit> audits = rateExpertAuditRepo.findAllByRateId(rateId);
         int sum = audits.stream().mapToInt(RateExpertAudit::getExpertScore).sum();
-        OrganizationGrade grade;
-        if (sum >= 40) {
-            grade = OrganizationGrade.EXCELLENT;
-        } else if (sum >= 20) {
-            grade = OrganizationGrade.ELIGIBLE;
-        } else {
-            grade = OrganizationGrade.NOT_ELIGIBLE;
-        }
+//        OrganizationGrade grade;
+//        if (sum >= 40) {
+//            grade = OrganizationGrade.EXCELLENT;
+//        } else if (sum >= 20) {
+//            grade = OrganizationGrade.ELIGIBLE;
+//        } else {
+//            grade = OrganizationGrade.NOT_ELIGIBLE;
+//        }
         Rate rate = rateRepo.findById(rateId).orElseThrow(new BusinessException("无申请"));
         rate.setScore(sum + 40);
-        rate.setGrade(grade);
-        rate.setStatus(RateStatus.SUBMIT_PAPER_MATERIALS);
+//        rate.setGrade(grade);
+        rate.setStatus(RateStatus.SUBMIT_GRADE);
         rateRepo.save(rate);
-        RateAudit rateAudit = RateAudit.builder()
-                .userId(userId)
-                .rateId(rateId)
-                .remark("市政管理员已评审完成,请你单位在5个工作日内将纸质申请材料(2份)送属地区文化行政主管部门。")
-                .status(RateStatus.SUBMIT_PAPER_MATERIALS.toString())
-                .build();
-        rateAuditRepo.save(rateAudit);
+//        RateAudit rateAudit = RateAudit.builder()
+//                .userId(userId)
+//                .rateId(rateId)
+//                .remark("市政管理员已评审完成,请你单位在5个工作日内将纸质申请材料(2份)送属地区文化行政主管部门。")
+//                .status(RateStatus.SUBMIT_PAPER_MATERIALS.toString())
+//                .build();
+//        rateAuditRepo.save(rateAudit);
         // 市区评分发送短信
-        njwlSmsService.sendSms(rate.getOwnerPhone(), "请你单位在5个工作日内将纸质申请材料(2份)送属" + rate.getDistrict() + "文化和旅游局文化行政主管部门,逾期不送,作自动放弃处理。");
+//        njwlSmsService.sendSms(rate.getOwnerPhone(), "请你单位在5个工作日内将纸质申请材料(2份)送属" + rate.getDistrict() + "文化和旅游局文化行政主管部门,逾期不送,作自动放弃处理。");
     }
 }

+ 34 - 3
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -227,9 +227,9 @@ public class RateService {
                 .status(status.toString())
                 .build();
         rateAuditRepo.save(rateAudit);
-        if (RateStatus.COMPLETE.equals(status)) {
-            njwlSmsService.sendSms(rate.getOwnerPhone(), "等级评定结果公告已发布,请在南京市文化和旅游局官方网站(http://wlj.nanjing.gov.cn/)上查询。");
-        }
+//        if (RateStatus.COMPLETE.equals(status)) {
+//            njwlSmsService.sendSms(rate.getOwnerPhone(), "等级评定结果公告已发布,请在南京市文化和旅游局官方网站(http://wlj.nanjing.gov.cn/)上查询。");
+//        }
     }
 
     public String export(Rate rate) {
@@ -606,4 +606,35 @@ public class RateService {
         map.put("phone", phone);
         return map;
     }
+
+    /**
+     * 发短信
+     *
+     * @param announcement
+     */
+    public void batchSendSms(boolean announcement) {
+        List<Rate> rates = rateRepo.findAllByStatusAndYear(RateStatus.SUBMIT_PAPER_MATERIALS, String.valueOf(LocalDate.now()
+                .getYear()));
+        String phones = rates.stream().map(Rate::getOwnerPhone).collect(Collectors.joining(","));
+
+        if (announcement) {
+            njwlSmsService.sendSms(phones, "等级评定结果公告已发布,请在南京市文化和旅游局官方网站(http://wlj.nanjing.gov.cn/)上查询。");
+        } else {
+            njwlSmsService.sendSms(phones, "请你单位在5个工作日内将纸质申请材料(2份)送属地区文化和旅游局文化行政主管部门,逾期不送,作自动放弃处理。");
+        }
+
+    }
+
+    /**
+     * 等级
+     */
+    public void grade(double excellent,double eligible) {
+        List<Rate> rates = rateRepo.findAllByStatusAndYear(RateStatus.SUBMIT_GRADE, String.valueOf(LocalDate.now()
+                .getYear()));
+        rates.sort(Comparator.comparingInt(Rate::getSort));
+        int excellentSum = (int) Math.round(rates.size() * excellent);
+        List<Rate> excellentList = rates.subList(0, excellentSum);
+        int eligibleSum = (int) Math.round(rates.size() * eligible);
+//        List<Rate> eligibleList = rates.subList(total);
+    }
 }

+ 14 - 6
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -249,14 +249,20 @@ public class ProgrammeService {
         }
 
         File destDir = TempFile.createTempDirectory("import");
+//        String originalFilename = file.getOriginalFilename();
+//        boolean zip = Pattern.matches(".zip", FilenameUtils.getExtension(file.getName()));
+//        boolean rar = Pattern.matches(".rar", FilenameUtils.getExtension(file.getName()));
+//        if (rar) {
+
+//        } else if (zip) {
+            try {
+                ZipUtil.unzip(file.getInputStream(), destDir, StandardCharsets.UTF_8);
+            } catch (Exception e) {
+                ZipUtil.unzip(file.getInputStream(), destDir, Charset.forName("gbk"));
+            }
+//        }
 
 
-        try {
-            ZipUtil.unzip(file.getInputStream(), destDir, StandardCharsets.UTF_8);
-        } catch (Exception e) {
-            ZipUtil.unzip(file.getInputStream(), destDir, Charset.forName("gbk"));
-        }
-
         File xlsxFile = FileUtils.findInDir(destDir, null);
         if (xlsxFile == null) {
             return;
@@ -292,6 +298,8 @@ public class ProgrammeService {
                 programme.setGradingOrganizationId(gradeMap.get(dto.getGradingOrganization()));
                 programme.setPerformanceId(performance);
                 programme.setSpecialtyId(specialty.getId());
+                // 节目状态
+                programme.setProgrammeStatus(ProgrammeStatus.INITIAL);
                 String level = dto.getLevel();
                 if (StrUtil.isNotBlank(level)) {
                     level = level.substring(0, 2);

+ 3 - 0
src/main/java/com/izouma/wenlvju/web/AuthenticationController.java

@@ -57,6 +57,9 @@ public class AuthenticationController {
         try {
             User user = userService.loginByPhone(phone);
             return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
+        } catch (NullPointerException e) {
+            log.error("loginByPhone", e);
+            throw new AuthenticationException("该手机号未注册", e);
         } catch (Exception e) {
             log.error("loginByPhone", e);
             throw new AuthenticationException("登陆错误", e);

+ 1 - 1
src/main/java/com/izouma/wenlvju/web/RateExpertAuditController.java

@@ -52,7 +52,7 @@ public class RateExpertAuditController extends BaseController {
 
     @PostMapping("/grade")
     public void grade(Long rateId) {
-        rateExpertAuditService.grade(rateId, SecurityUtils.getAuthenticatedUser().getId());
+        rateExpertAuditService.grade(rateId);
     }
 
 

+ 1 - 1
src/main/resources/application.yaml

@@ -14,7 +14,7 @@ spring:
     profiles:
         active: dev
     datasource:
-        url: jdbc:mysql://mysql.izouma.com/exam?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+        url: jdbc:mysql://mysql.izouma.com/exam_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
 #        url: jdbc:mysql://localhost:3306/exam_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
 #        username: root
 #        password: 123456

+ 2 - 0
src/main/vue/src/views/rate/RateListDone.vue

@@ -122,6 +122,8 @@
                         :disabled="totalElements <= 0"
                         >导出EXCEL
                     </el-button>
+                    <el-button type="primary" :loading="downloading" class="filter-item">公告短信通知 </el-button>
+                    <el-button type="primary" :loading="downloading" class="filter-item">提交材料短信通知 </el-button>
                 </el-col>
             </div>
         </div>