Explorar o código

Merge branch 'dev' of http://git.izouma.com/licailing/wenlvju into dev

panhui %!s(int64=5) %!d(string=hai) anos
pai
achega
d23b19141a

+ 1 - 1
src/main/java/com/izouma/wenlvju/repo/UserRepo.java

@@ -24,5 +24,5 @@ public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExe
 
     User findByPhoneAndDelFalse(String phone);
 
-    List<User> findAllByDistrictAndDelFalse(String district);
+    List<User> findAllByDistrictAndAuthoritiesContainsAndDelFalse(String district, Authority authorities);
 }

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

@@ -10,6 +10,7 @@ import com.izouma.wenlvju.enums.RateStatus;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.RateExpertAuditRepo;
 import com.izouma.wenlvju.repo.RateRepo;
+import com.izouma.wenlvju.service.sms.NjwlSmsService;
 import com.izouma.wenlvju.utils.JpaUtils;
 import com.izouma.wenlvju.utils.ObjUtils;
 import lombok.AllArgsConstructor;
@@ -24,6 +25,7 @@ public class RateExpertAuditService {
 
     private final RateExpertAuditRepo rateExpertAuditRepo;
     private final RateRepo            rateRepo;
+    private final NjwlSmsService      njwlSmsService;
 
     public Page<RateExpertAudit> all(PageQuery pageQuery) {
         return rateExpertAuditRepo.findAll(JpaUtils.toSpecification(pageQuery, RateExpertAudit.class), JpaUtils.toPageRequest(pageQuery));
@@ -51,7 +53,7 @@ public class RateExpertAuditService {
 
     public void grade(Long rateId) {
         List<RateExpertAudit> audits = rateExpertAuditRepo.findAllByRateId(rateId);
-        int sum = audits.stream().mapToInt(RateExpertAudit::getScore).sum();
+        int sum = audits.stream().mapToInt(RateExpertAudit::getExpertScore).sum();
         OrganizationGrade grade;
         if (sum >= 40) {
             grade = OrganizationGrade.EXCELLENT;
@@ -65,5 +67,7 @@ public class RateExpertAuditService {
         rate.setGrade(grade);
         rate.setStatus(RateStatus.SUBMIT_PAPER_MATERIALS);
         rateRepo.save(rate);
+        // 市区评分发送短信
+        njwlSmsService.sendSms(rate.getOwnerPhone(), "请你单位在5个工作日内将纸质申请材料(2份)送属地区文化行政主管部门,预期不送,作自动放弃处理。");
     }
 }

+ 16 - 14
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -57,29 +57,31 @@ public class RateService {
         String district = record.getDistrict();
         if (record.getId() != null) {
             Rate orig = rateRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+
             switch (record.getStatus()) {
                 case FIRST_REVIEW_PENDING: // 初审中 1
-                    record.setApplyTime(now);
+                    orig.setApplyTime(now);
                     //发送短信给地区考级管理人员
                     Map<String, String> applyMap = this.applyMessage(district, now);
                     njwlSmsService.sendSms(applyMap.get("phone"), applyMap.get("message"));
                     break;
                 case REVIEW_PENDING: // 分配专家组 3
                     // 发送给专家组长和组员
-                    Map<String, String> map = this.reviewTimesMessage(record);
+                    Map<String, String> map = this.reviewTimesMessage(orig);
                     njwlSmsService.sendSms(map.get("phone"), map.get("message"));
                     njwlSmsService.sendSms(map.get("phone1"), map.get("message1"));
                     break;
                 case SUBMIT_GRADE:// 专家组提交成绩 4
-                    record.setUndertakeExamination(orig.isUndertakeExamination());
-                    Map<String, String> gradeMessage = this.gradeMessage(district, now, record.getExpertUserId(), record
+                    orig.setUndertakeExamination(orig.isUndertakeExamination());
+
+                    Map<String, String> gradeMessage = this.gradeMessage(now, orig.getExpertUserId(), orig
                             .getName());
                     njwlSmsService.sendSms(gradeMessage.get("phone"), gradeMessage.get("message"));
-                case SUBMIT_PAPER_MATERIALS:// 提交材料 5
-                    njwlSmsService.sendSms(record.getOwnerPhone(), "请你单位在5个工作日内将纸质申请材料(2份)送属地区文化行政主管部门,预期不送,作自动放弃处理。");
+                    break;
+                default:
+                    break;
             }
-
-            ObjUtils.merge(orig, record);
             return rateRepo.save(orig);
 
         }
@@ -421,14 +423,14 @@ public class RateService {
                 .getOwner(), rate.getOwnerPhone());
 
         User user = userMap.get(rate.getExpertUserId());
-        String body1 = String.format(message1, user.getNickname(), user.getPhone(), rate.getReviewTime());
+        String body1 = String.format(message1, user.getNickname(), user.getPhone(), dtf.format(rate.getReviewTime()));
 
 
         String phone = rate.getExpertMemberUserId()
                 .stream()
                 .map(userId -> userMap.get(userId).getPhone())
                 .collect(Collectors.joining(","));
-        phone += "," + rate.getOwnerPhone();
+        phone += "," + user.getPhone();
 
         Map<String, String> map = new HashMap<>();
         map.put("message", body);
@@ -438,9 +440,9 @@ public class RateService {
         return map;
     }
 
-    public Map<String, String> gradeMessage(String district, LocalDateTime time, Long expertId, String name) {
+    public Map<String, String> gradeMessage(LocalDateTime time, Long expertId, String name) {
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DateConfig.DEFAULT_DATE_TIME_FORMAT);
-        String phone = userRepo.findAllByDistrictAndDelFalse(district)
+        String phone = userRepo.findAllByAuthoritiesContainsAndDelFalse(Authority.get(AuthorityName.ROLE_ADMIN))
                 .stream()
                 .map(User::getPhone)
                 .collect(Collectors.joining(","));
@@ -450,7 +452,7 @@ public class RateService {
         String body = "现场检查已完成:\n" +
                 "单位名称:%s\n" +
                 "完成时间:%s \n" +
-                "组  长 : %s-%s\n";
+                "组长 : %s-%s\n";
         String message = String.format(body, name, dtf.format(time), expert.getNickname(), expert.getPhone());
         Map<String, String> map = new HashMap<>();
         map.put("message", message);
@@ -460,7 +462,7 @@ public class RateService {
 
     public Map<String, String> applyMessage(String district, LocalDateTime time) {
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DateConfig.DEFAULT_DATE_TIME_FORMAT);
-        String phone = userRepo.findAllByDistrictAndDelFalse(district)
+        String phone = userRepo.findAllByDistrictAndAuthoritiesContainsAndDelFalse(district, Authority.get(AuthorityName.ROLE_DISTRICT))
                 .stream()
                 .map(User::getPhone)
                 .collect(Collectors.joining(","));

+ 20 - 1
src/main/java/com/izouma/wenlvju/service/UserService.java

@@ -198,6 +198,7 @@ public class UserService {
     }
 
     public Page<ExpertDTO> all1(PageQuery pageQuery) {
+        pageQuery.setSort("createdAt,desc");
         Map<Long, String> artMap = artTypeRepo.findAll()
                 .stream()
                 .collect(Collectors.toMap(ArtType::getId, ArtType::getName));
@@ -211,6 +212,24 @@ public class UserService {
         }), JpaUtils.toPageRequest(pageQuery)).map(user -> new ExpertDTO(user, artMap.get(user.getArtTypeId())));
     }
 
+    public Page<User> all2(PageQuery pageQuery) {
+        return userRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = JpaUtils.toPredicates(pageQuery, User.class, root, criteriaQuery, criteriaBuilder);
+            // 只有专家权限
+            SetJoin<User, Authority> join = root.join(root.getModel()
+                    .getSet("authorities", Authority.class), JoinType.LEFT);
+            and.add(join.in(
+                    Authority.get(AuthorityName.ROLE_DISTRICT),
+                    Authority.get(AuthorityName.ROLE_ORGANIZER),
+                    Authority.get(AuthorityName.ROLE_ADMIN),
+                    Authority.get(AuthorityName.ROLE_DEV),
+                    Authority.get(AuthorityName.ROLE_SUPERVISOR),
+                    Authority.get(AuthorityName.ROLE_USER)));
+            criteriaQuery.distinct(true);
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        }), JpaUtils.toPageRequest(pageQuery));
+    }
+
     /*
     注册承办单位
      */
@@ -233,7 +252,7 @@ public class UserService {
         User save = userRepo.save(user);
 
         int sort = organizationRepo.nextSort();
-        String code = dto.getDistrictCode() + dto.getGradingCode() + String.format("%04d",sort);
+        String code = dto.getDistrictCode() + dto.getGradingCode() + String.format("%04d", sort);
 
         organizationRepo.save(
                 Organization.builder()

+ 11 - 4
src/main/java/com/izouma/wenlvju/service/sms/NjwlSmsService.java

@@ -2,6 +2,7 @@ package com.izouma.wenlvju.service.sms;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
 import com.aliyuncs.CommonRequest;
 import com.aliyuncs.CommonResponse;
 import com.aliyuncs.DefaultAcsClient;
@@ -17,6 +18,7 @@ import com.izouma.wenlvju.repo.SmsRecordRepo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.configurationprocessor.json.JSONException;
@@ -26,6 +28,7 @@ import java.io.StringWriter;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 @Service
@@ -73,7 +76,7 @@ public class NjwlSmsService {
         String tokenKey = appId + appKey + expiryDate;
         System.out.println();
         String token = DigestUtils.md5Hex(tokenKey).toLowerCase();
-        log.info("短信时间戳---->" + expiryDate + ",短信token---->" + token);
+//        log.info("短信时间戳---->" + expiryDate + ",短信token---->" + token);
         Map<String, String> map = new HashMap<>();
         map.put("expiryDate", String.valueOf(expiryDate));
         map.put("token", token);
@@ -81,6 +84,9 @@ public class NjwlSmsService {
     }
 
     public void sendSms(String phone, String message) {
+        if (StringUtils.isBlank(phone)) {
+            return;
+        }
         Map<String, Object> map = new HashMap<>();
         Map<String, String> token = this.getToken();
         map.put("appId", appId);
@@ -92,7 +98,7 @@ public class NjwlSmsService {
         data.put("message", message);
         map.put("data", data);
         String body = JSONObject.toJSONString(map);
-        System.out.println(body);
+        log.info("短信内容--->"+body);
         StringWriter writer = new StringWriter();
         HttpRequest.post(url)
                 .contentType("application/json;charset=UTF-8")
@@ -101,9 +107,10 @@ public class NjwlSmsService {
 
         String responseBody = writer.toString();
         log.info(responseBody);
+        Map<String, Object> formMap = JSON.parseObject(responseBody, LinkedHashMap.class, Feature.OrderedField);//关键的地方,转化为有序map
 
-        Map formMap = JSON.parseObject(responseBody, Map.class);
-        System.out.println(formMap);
+//        Map formMap = JSON.parseObject(responseBody, Map.class);
+//        System.out.println(formMap);
         Object success = formMap.get("Code");
         String ok = "";
         if (success instanceof String) {

+ 5 - 0
src/main/java/com/izouma/wenlvju/web/UserController.java

@@ -91,6 +91,11 @@ public class UserController extends BaseController {
         return userService.all(pageQuery);
     }
 
+    @PostMapping("/all2")
+    public Page<User> all2(@RequestBody PageQuery pageQuery) {
+        return userService.all2(pageQuery);
+    }
+
     @PostMapping("/all1")
     public Page<ExpertDTO> all1(@RequestBody PageQuery pageQuery) {
         return userService.all1(pageQuery);

+ 4 - 4
src/main/vue/src/views/rate/AssignExpert.vue

@@ -37,7 +37,7 @@
                                     :key="item.value"
                                     :value="item.value"
                                     :label="item.label"
-                                    :disabled="readonly"
+                                    :disabled="formData.status !== 'ASSIGN_EXPERT'"
                                 ></el-option>
                             </el-select>
                         </el-form-item>
@@ -49,7 +49,7 @@
                                 :options="artTypes"
                                 :show-all-levels="false"
                                 placeholder="请选择专业"
-                                :disabled="readonly"
+                                :disabled="formData.status !== 'ASSIGN_EXPERT'"
                             >
                             </el-cascader>
                         </el-form-item>
@@ -66,7 +66,7 @@
                     end-placeholder="请选择结束时间"
                     range-separator="至"
                     style="margin-left: 10px"
-                    :disabled="readonly"
+                    :disabled="formData.status !== 'ASSIGN_EXPERT'"
                 >
                 </el-date-picker>
             </el-form-item>
@@ -78,7 +78,7 @@
                         filterable
                         clearable
                         placeholder="请选择专家组长"
-                        :disabled="readonly"
+                        :disabled="formData.status !== 'ASSIGN_EXPERT'"
                     >
                         <el-option v-for="item in expert" :key="item.value" :value="item.value" :label="item.label">
                             <!-- <span style="float: left">{{ item.nickname }}</span>

+ 10 - 4
src/main/vue/src/views/rate/GradeList.vue

@@ -304,10 +304,16 @@ export default {
                     }, 0);
                     return;
                 } else if (index === 6) {
-                    sums[index] = data.reduce((total, currentValue) => {
-                        // return total + this.form[currentValue.value];
-                        return total + this.getExpertScore(currentValue.value);
-                    }, 0);
+                    if (this.$route.status == '') {
+                        sums[index] = data.reduce((total, currentValue) => {
+                            return total + this.getExpertScore(currentValue.value);
+                        }, 0);
+                    } else {
+                        sums[index] = data.reduce((total, currentValue) => {
+                            return total + this.form[currentValue.value];
+                        }, 0);
+                    }
+
                     return;
                 } else {
                     return;

+ 18 - 1
src/main/vue/src/views/rate/RateDistrictList.vue

@@ -416,7 +416,24 @@ export default {
             this.form = row;
         },
         saveDismiss() {
-            this.audit(this.form, 'FIRST_REVIEW_DENY', this.reason);
+            // this.audit(this.form, 'FIRST_REVIEW_DENY', this.reason);
+            this.$http
+                .post('/rate/audit', {
+                    id: this.form.id,
+                    status: FIRST_REVIEW_DENY,
+                    score: 0,
+                    remark: this.reason
+                })
+                .then(res => {
+                    // this.$set(this.form, 'loading', false);
+                    this.$message.success('退回成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    console.log(e);
+                    // this.$set(this.form, 'loading', false);
+                    this.$message.error(e.error);
+                });
             this.form = '';
             this.reason = '';
             this.dialogDismiss = false;

+ 4 - 1
src/main/vue/src/views/rate/RateOrganizerList.vue

@@ -51,7 +51,10 @@
             </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>查看资料</el-button>
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>
+                        <span v-if="row.status == 'FIRST_REVIEW_DENY'">编辑资料</span>
+                        <span v-else>查看材料</span></el-button
+                    >
                     <el-button
                         @click="word(row)"
                         type="primary"

+ 1 - 1
src/main/vue/src/views/user/UserList.vue

@@ -69,7 +69,7 @@ export default {
         return {
             multipleMode: false,
             search: '',
-            url: '/user/all',
+            url: '/user/all2',
             downloading: false
         };
     },

+ 8 - 1
src/test/java/com/izouma/wenlvju/repo/UserRepoTest.java

@@ -40,7 +40,14 @@ public class UserRepoTest {
 
     @Test
     public void findAllByAuthoritiesContains() {
-        List<User> list = userRepo.findAllByAuthoritiesContainsAndDelFalse(Authority.builder().name("ROLE_ADMIN").build());
+        List<User> list = userRepo.findAllByAuthoritiesContainsAndDelFalse(Authority.builder()
+                .name("ROLE_ADMIN")
+                .build());
         System.out.println(list);
     }
+
+    @Test
+    public void test() {
+        System.out.println(userRepo.findAllByDistrictAndAuthoritiesContainsAndDelFalse("秦淮区", Authority.get(AuthorityName.ROLE_DISTRICT)));
+    }
 }

+ 15 - 1
src/test/java/com/izouma/wenlvju/service/RateServiceTest.java

@@ -12,6 +12,7 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.io.*;
+import java.time.LocalDateTime;
 import java.util.List;
 
 
@@ -38,7 +39,7 @@ public class RateServiceTest extends ApplicationTests {
         PDFMergerUtility mergePdf = new PDFMergerUtility();
 //        for (File f : files) {
 //            if (f.exists() && f.isFile()) {
-                // 循环添加要合并的pdf
+        // 循环添加要合并的pdf
 //                mergePdf.addSource(f);
 //            }
 //        }
@@ -90,4 +91,17 @@ public class RateServiceTest extends ApplicationTests {
 
     }
 
+    @Test
+    public void test5() {
+        Rate rate = rateRepo.findById(644L).orElse(null);
+        System.out.println(rateService.reviewTimeMessage(rate));
+    }
+
+    @Test
+    public void test6() {
+        Rate rate = rateRepo.findById(644L).orElse(null);
+        System.out.println(rateService.gradeMessage(LocalDateTime.now(), rate.getExpertUserId(), rate
+                .getName()));
+    }
+
 }

+ 3 - 3
src/test/java/com/izouma/wenlvju/service/TestToken.java

@@ -45,11 +45,11 @@ public class TestToken extends ApplicationTests {
     public void testSms() {
         Map<String, Object> map = new HashMap<>();
         map.put("appId", "189610");
-        map.put("expiryDate", "1619749649692");
-        map.put("tokenKey", "cb4729d0084a50bf842b1993640db508");
+        map.put("expiryDate", "1619768481254");
+        map.put("tokenKey", "93d2fee65ef4dc7f81757c5fad05f557");
         map.put("operationType", "ADD");
         Map<String, Object> data = new HashMap<>();
-        data.put("phone", "18205083565");
+        data.put("phone", "13365135976");
         data.put("message", "测试介绍信息");
         map.put("data", data);
         String body = JSONObject.toJSONString(map);

+ 1 - 1
src/test/java/com/izouma/wenlvju/web/SmsControllerTest.java

@@ -12,6 +12,6 @@ public class SmsControllerTest extends ApplicationTests {
 
     @Test
     public void send() {
-        smsController.sendVerify("18205083565");
+        smsController.sendVerify("13365135976");
     }
 }