YuanPan il y a 7 ans
Parent
commit
fc0f46abad

+ 36 - 6
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/InspectRangeApi.java

@@ -2,8 +2,12 @@ package cn.com.qmth.stmms.ms.admin.api;
 
 import cn.com.qmth.stmms.ms.admin.service.InspectRangeService;
 import cn.com.qmth.stmms.ms.core.domain.InspectRange;
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
+import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.InspectRangeRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
+import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,10 +23,13 @@ public class InspectRangeApi {
     @Autowired
     private InspectRangeRepo inspectRangeRepo;
 
-
     @Autowired
     private InspectRangeService inspectRangeService;
 
+    @Autowired
+    private MarkUserRepo markUserRepo;
+
+
     @Autowired
     private PaperRepo paperRepo;
 
@@ -42,6 +49,12 @@ public class InspectRangeApi {
             throw new RuntimeException("接口参数缺失");
         }
 
+        //判断该评卷工作是否已经有抽查工作了
+        int inspectRangeCount = inspectRangeRepo.countByWorkId(workId);
+        if (inspectRangeCount > 0) {
+            throw new RuntimeException("请勿重复创建抽查范围");
+        }
+
         //判断是否已经全部打分完成了
         long unfinishedPaperCount = paperRepo.countByWorkIdAndScoreIsNull(workId);
 
@@ -55,19 +68,36 @@ public class InspectRangeApi {
 
     @PutMapping(value = "{domain}")
     public void update(@PathVariable InspectRange domain, @RequestBody InspectRange inspectRange) {
+
+        //如果抽查已经启动,则不能再修改了
+        if (domain.getEnabled()) {
+            throw new RuntimeException("抽查已经启动了,无法修改抽查范围。");
+        }
+
         domain.setCondition(inspectRange.getCondition());
         domain.setEnabled(inspectRange.getEnabled());
         domain.setType(inspectRange.getType());
         inspectRangeService.save(domain);
-
     }
 
 
-    //@PatchMapping(value = "{domain}/start")
-    @RequestMapping(value = "{domain}/start",method = RequestMethod.PATCH)
+    @PatchMapping(value = "{domain}/start")
     public void start(@PathVariable InspectRange domain) {
 
-        domain.setEnabled(true);
-        inspectRangeService.save(domain);
+        //已经启动了就不用再启动了
+        if (domain.getEnabled()) {
+            throw new RuntimeException("抽查已经启动了");
+        }
+
+        //判断是否可以启动
+        for (Subject subject : Subject.values()) {
+            //判断是否每一科目分配了复查专家账号
+            List<MarkUser> inspectors4Subject = markUserRepo.findByWorkIdAndSubjectAndRole(domain.getWorkId(), subject, Role.INSPECTOR);
+            if (inspectors4Subject == null || inspectors4Subject.size() < 1) {
+                throw new RuntimeException("至少添加一个" + subject.getName() + "复评专家");
+            }
+        }
+
+        inspectRangeService.start(domain.getId());
     }
 }

+ 35 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/InspectorApi.java

@@ -1,12 +1,21 @@
 package cn.com.qmth.stmms.ms.admin.api;
 
+import cn.com.qmth.stmms.ms.admin.assembler.MarkUserAssembler;
+import cn.com.qmth.stmms.ms.admin.dto.MarkUserDTO;
+import cn.com.qmth.stmms.ms.commons.utils.excel.ExportUtils;
+import cn.com.qmth.stmms.ms.core.domain.InspectRange;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
+import cn.com.qmth.stmms.ms.core.repository.InspectRangeRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
+import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Stream;
 
 /**
  * Created by yuanpan on 2017/10/16.
@@ -18,6 +27,9 @@ public class InspectorApi {
     @Autowired
     private MarkUserRepo markUserRepo;
 
+    @Autowired
+    private MarkUserAssembler markUserAssembler;
+
     @GetMapping
     public List<MarkUser> list(@RequestParam Long workId) {
 
@@ -35,4 +47,27 @@ public class InspectorApi {
         markUserRepo.save(inspectUser);
 
     }
+
+    @PutMapping(value = "{domain}")
+    public void update(@PathVariable MarkUser domain, @RequestBody MarkUser inspectUser) {
+        domain.setName(inspectUser.getName());
+        markUserRepo.save(domain);
+    }
+
+    @DeleteMapping(value = "{domain}")
+    public void delete(@PathVariable MarkUser domain) {
+        markUserRepo.delete(domain.getId());
+    }
+
+    @GetMapping("export")
+    public void export(@RequestParam Long workId, HttpServletResponse response) {
+        List<MarkUserDTO> markUserDTOs = new ArrayList<>();
+        Stream<MarkUser> markUserStream = markUserRepo.findByWorkIdAndRole(workId, Role.INSPECTOR).stream();
+
+        markUserStream.forEach(u -> {
+            markUserDTOs.add(markUserAssembler.toDTO(u));
+        });
+        String fileName = "复评专家列表";
+        ExportUtils.exportEXCEL(fileName, MarkUserDTO.class, markUserDTOs, response);
+    }
 }

+ 7 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/InspectRangeService.java

@@ -23,6 +23,13 @@ public class InspectRangeService {
     @Autowired
     private PaperRepo paperRepo;
 
+    @Transactional
+    public void start(Long id) {
+        InspectRange inspectRange = inspectRangeRepo.findOne(id);
+        inspectRange.setEnabled(true);
+        inspectRangeRepo.save(inspectRange);
+    }
+
 
     @Transactional
     public void save(InspectRange inspectRange) {

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/InspectRangeRepo.java

@@ -13,4 +13,6 @@ import java.util.List;
 public interface InspectRangeRepo extends JpaRepository<InspectRange, Long> {
 
     List<InspectRange> findByWorkId(Long workId);
+
+    int countByWorkId(Long workId);
 }