Эх сурвалжийг харах

提交 工作流相关 代码

chenken 8 жил өмнө
parent
commit
7696c88cbe

+ 24 - 16
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -97,19 +97,23 @@ public class ImportPaperService {
      * @param file
      * @return
      */
-    public String ImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
+    public Map<String,String> ImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
         String errorInfo = paperService.checkPaperName(paperName, user.getOrgId().toString());
+        Map<String,String> returnMap = new HashMap<String,String>();
         if (errorInfo == null) {
             errorInfo = "";
-            errorInfo += processImportPaper(paperName, courseNo, courseName, user, file);
-            if (StringUtils.isEmpty(errorInfo)) {
-                return "success";
+            returnMap.putAll(processImportPaper(paperName, courseNo, courseName, user, file));
+            errorInfo += returnMap.get("errorInfo");
+            if (StringUtils.isBlank(errorInfo)||"null".equals(errorInfo)) {
+            	returnMap.put("returnInfo", "success");
+                return returnMap;
             } else {
                 log.error("导入异常:" + errorInfo);
-                return errorInfo;
+                returnMap.put("returnInfo",errorInfo);
+                return returnMap;
             }
         } else {
-            return errorInfo;
+            return returnMap;
         }
     }
 
@@ -121,13 +125,13 @@ public class ImportPaperService {
      * @param paperDetailUnits
      * @param importPaperCheck
      */
-    public void savePaper(Paper paper, List paperDetails, List paperDetailUnits, List questions,
+    public String savePaper(Paper paper, List paperDetails, List paperDetailUnits, List questions,
             ImportPaperCheck importPaperCheck) {
 
         Paper tempPaper = null;
 
         if (!StringUtils.isEmpty(importPaperCheck.errorInfo))
-            return;
+            return null;
 
         if (paper != null) {
             tempPaper = paperRepo.save(paper);
@@ -145,7 +149,7 @@ public class ImportPaperService {
             paperDetailUnitRepo.save(paperDetailUnits);
         }
 
-        paperService.formatPaper(tempPaper);
+        return paperService.formatPaper(tempPaper);
     }
 
     /**
@@ -153,13 +157,15 @@ public class ImportPaperService {
      *
      * @param file
      */
-    public String processImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
+    public  Map<String,String>  processImportPaper(String paperName, String courseNo, String courseName, AccessUser user, File file) {
 
         WordprocessingMLPackage wordMLPackage;
         WordprocessingMLPackage tmpWordMlPackage;
         WordprocessingMLPackage writePkg;
         ImportPaperCheck importPaperCheck = new ImportPaperCheck();
-
+        
+        Map<String,String> returnMap = new HashMap<String,String>();
+        
         try {
             wordMLPackage = WordprocessingMLPackage.load(file);
             // 初始化图片路径
@@ -215,7 +221,8 @@ public class ImportPaperService {
 
                     // 校验大题头信息
                     if (!checkQuesHeader(importPaperCheck)) {
-                        return importPaperCheck.errorInfo;
+                    	returnMap.put("errorInfo", importPaperCheck.errorInfo);
+                        return returnMap;
                     }
 
                     // 创建大题类
@@ -272,13 +279,14 @@ public class ImportPaperService {
                     i = importPaperCheck.index - 1;
                 }
                 if (!StringUtils.isEmpty(importPaperCheck.errorInfo)) {
-                    return importPaperCheck.errorInfo;
+                	returnMap.put("errorInfo", importPaperCheck.errorInfo);
+                    return returnMap;
                 }
             }
             paper.setPaperDetailCount(mainQuesNum);
             // 保存导入试卷信息
-            savePaper(paper, paperDetails, paperDetailUnits, questions, importPaperCheck);
-
+            String paperId = savePaper(paper, paperDetails, paperDetailUnits, questions, importPaperCheck);
+            returnMap.put("paperId", paperId);
         } catch (Exception e) {
             e.printStackTrace();
             importPaperCheck.setErrorInfo(e.getMessage());
@@ -289,7 +297,7 @@ public class ImportPaperService {
             writePkg = null;
             FileUtils.deleteQuietly(file);
         }
-        return importPaperCheck.errorInfo;
+        return returnMap;
     }
 
     /**

+ 54 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -16,6 +16,9 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 
 import com.google.gson.Gson;
+import com.qmth.cqb.flow.model.DataMapModel;
+import com.qmth.cqb.flow.service.ComTaskService;
+import com.qmth.cqb.flow.service.DataMapModelService;
 import com.qmth.cqb.paper.dao.ExamPaperRepo;
 import com.qmth.cqb.paper.dao.PaperDetailRepo;
 import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
@@ -76,7 +79,13 @@ public class PaperService {
 
     @Autowired
     QuesService quesService;
-
+    
+    @Autowired
+    DataMapModelService dataMapModelService;
+    
+    @Autowired
+    ComTaskService comTaskService;
+    
     /**
      * 查询所有已导入试卷
      *
@@ -97,11 +106,27 @@ public class PaperService {
      *
      * @param paperExp
      * @return
+     * @throws Exception 
      */
-    public Paper savePaper(PaperExp paperExp) {
+    public Paper savePaper(PaperExp paperExp) throws Exception {
         Paper paper = BeanCopierUtil.copyProperties(paperExp, Paper.class);
         formatPaper(paper);
-        return paperRepo.save(paper);
+        DataMapModel dataMapModel = dataMapModelService.findDataMapModel(paper.getId());
+    	String processInstanceId = dataMapModel.getProcessInstanceId();
+    	paper = paperRepo.save(paper);
+    	if(StringUtils.isNotBlank(processInstanceId)){
+    		/*
+    		 Map<String, Object> variables = new HashMap<String,Object>();
+    		  variables.put("assignee", "admin1");
+    		  if("管理员"){
+    		  		variables.put("condition", 1);
+    		  }else{
+    		  		variables.put("condition", 0);
+    		  }
+    		  comTaskService.completeTaskByProcInstId(processInstanceId, variables);
+    		 */
+    	}
+        return paper;
     }
 
     /**
@@ -225,12 +250,23 @@ public class PaperService {
      * 批量通过试卷
      *
      * @param paperIds
+     * @throws Exception 
      */
-    public void passPapers(List<String> paperIds) {
+    public void passPapers(List<String> paperIds) throws Exception {
         List<Paper> papers = CommonUtils.toList(paperRepo.findAll(paperIds));
         papers.stream().forEach(paper -> {
             paper.setPaperStatus(PaperStatus.PASS);
         });
+        for(int i = 0;i<papers.size();i++){
+        	DataMapModel dataMapModel = dataMapModelService.findDataMapModel(papers.get(i).getId());
+        	String processInstanceId = dataMapModel.getProcessInstanceId();
+        	if(StringUtils.isNotBlank(processInstanceId)){
+        		Map<String, Object> variables = new HashMap<String,Object>();
+        		variables.put("assignee", "admin1");
+        		variables.put("condition", 1);
+        		comTaskService.completeTaskByProcInstId(processInstanceId, variables);
+        	}
+        }
         paperRepo.save(papers);
     }
 
@@ -238,12 +274,23 @@ public class PaperService {
      * 批量不通过试卷
      *
      * @param paperIds
+     * @throws Exception 
      */
-    public void noPassPapers(List<String> paperIds) {
+    public void noPassPapers(List<String> paperIds) throws Exception {
         List<Paper> papers = CommonUtils.toList(paperRepo.findAll(paperIds));
         papers.stream().forEach(paper -> {
             paper.setPaperStatus(PaperStatus.NOPASS);
         });
+        for(int i = 0;i<papers.size();i++){
+        	DataMapModel dataMapModel = dataMapModelService.findDataMapModel(papers.get(i).getId());
+        	String processInstanceId = dataMapModel.getProcessInstanceId();
+        	if(StringUtils.isNotBlank(processInstanceId)){
+        		Map<String, Object> variables = new HashMap<String,Object>();
+        		variables.put("assignee", "admin1");
+        		variables.put("condition", 0);
+        		comTaskService.completeTaskByProcInstId(processInstanceId, variables);
+        	}
+        }
         paperRepo.save(papers);
     }
 
@@ -360,7 +407,7 @@ public class PaperService {
      *
      * @param paper
      */
-    public void formatPaper(Paper paper) {
+    public String formatPaper(Paper paper) {
         List<PaperDetail> paperDetails = paperDetailRepo.findByPaper(paper);
         // 计算试卷总分
         List<PaperDetailUnit> paperDetailUnitAll = paperDetailUnitRepo.findByPaper(paper);
@@ -401,6 +448,7 @@ public class PaperService {
         paper.setTotalScore(totalScore);
         paperDetailRepo.save(paperDetails);
         paperRepo.save(paper);
+        return paper.getId();
     }
 
     /**

+ 22 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ImportPaperController.java

@@ -18,6 +18,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import com.qmth.cqb.flow.model.DataMapModel;
+import com.qmth.cqb.flow.model.WorkFlowModel;
+import com.qmth.cqb.flow.service.ComProcessService;
+import com.qmth.cqb.flow.service.DataMapModelService;
 import com.qmth.cqb.paper.dao.PaperRepo;
 import com.qmth.cqb.paper.service.ImportPaperService;
 import com.qmth.cqb.paper.service.PaperService;
@@ -42,7 +46,12 @@ public class ImportPaperController {
 
     @Autowired
     PaperService paperService;
-
+    
+    @Autowired
+    ComProcessService comProcessService;
+    
+    @Autowired
+    DataMapModelService dataMapModelService;
     /**
      * 导入试卷
      * 
@@ -58,9 +67,20 @@ public class ImportPaperController {
         AccessUser user = (AccessUser) request.getAttribute("accessUser");
         log.info("导入开始");
         File tempFile = importPaperService.getUploadFile(file);
-        String returnStr = importPaperService.ImportPaper(paperName, courseNo, courseName, user, tempFile);
+        Map<String,String> returnMap  = importPaperService.ImportPaper(paperName, courseNo, courseName, user, tempFile);
+        String returnStr = returnMap.get("returnInfo");
         log.info("导入结束");
         if (returnStr.equals("success")) {
+        	try {
+        		//启动流程
+            	WorkFlowModel workFlowModel = new WorkFlowModel();
+            	workFlowModel.setStarter(user.getUserId()+"");
+            	String processInstanceId = comProcessService.tranStartProcess("importPaperAduit", workFlowModel);
+            	String paperId = returnMap.get("paperId");
+            	dataMapModelService.saveDataMapModel(new DataMapModel(processInstanceId,paperId));
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
             return new ResponseEntity(returnStr, HttpStatus.OK);
         } else {
             Map map = new HashMap();

+ 14 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperController.java

@@ -79,10 +79,11 @@ public class PaperController {
      *
      * @param paper
      * @return
+     * @throws Exception 
      */
     @ApiOperation(value = "保存试卷", notes = "保存试卷")
     @PutMapping(value = "/paper")
-    public ResponseEntity savePaperById(@RequestBody PaperExp paper) {
+    public ResponseEntity savePaperById(@RequestBody PaperExp paper) throws Exception {
         return new ResponseEntity(paperService.savePaper(paper), HttpStatus.OK);
     }
 
@@ -154,7 +155,12 @@ public class PaperController {
     @ApiOperation(value = "批量通过试卷", notes = "批量通过试卷")
     @PutMapping(value = "/paper/pass")
     public ResponseEntity passPapers(@RequestBody PaperSearchInfo paperSearchInfo) {
-        paperService.passPapers(Arrays.asList(paperSearchInfo.getPaperIds()));
+        try {
+			paperService.passPapers(Arrays.asList(paperSearchInfo.getPaperIds()));
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
         return new ResponseEntity(HttpStatus.OK);
     }
 
@@ -167,7 +173,12 @@ public class PaperController {
     @ApiOperation(value = "批量不通过试卷", notes = "批量不通过试卷")
     @PutMapping(value = "/paper/noPass")
     public ResponseEntity noPassPapers(@RequestBody PaperSearchInfo paperSearchInfo) {
-        paperService.noPassPapers(Arrays.asList(paperSearchInfo.getPaperIds()));
+        try {
+			paperService.noPassPapers(Arrays.asList(paperSearchInfo.getPaperIds()));
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
         return new ResponseEntity(HttpStatus.OK);
     }