2 Комити 719435c2ba ... ec4ee68737

Аутор SHA1 Порука Датум
  WangRuiLin ec4ee68737 Merge remote-tracking branch 'master/cirs-biz-branch' into cirs-biz-branch пре 1 година
  WangRuiLin 3d67799e57 2023/12/12 增加了打分算法的三个页面 пре 1 година
34 измењених фајлова са 6279 додато и 76 уклоњено
  1. 214 0
      cirs-biz/src/main/java/com/cirs/biz/controller/FactoryScoreController.java
  2. 11 10
      cirs-biz/src/main/java/com/cirs/biz/controller/SysTrainController.java
  3. 1 1
      cirs-biz/src/main/java/com/cirs/biz/controller/TElectronComponentController.java
  4. 116 0
      cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationScoretaskController.java
  5. 229 0
      cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationScoretaskDetailController.java
  6. 21 13
      cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationTaskDetailController.java
  7. 31 0
      cirs-biz/src/main/java/com/cirs/biz/domain/ElectronComponent.java
  8. 681 0
      cirs-biz/src/main/java/com/cirs/biz/domain/FactoryScore.java
  9. 159 0
      cirs-biz/src/main/java/com/cirs/biz/domain/TVerificationScoretask.java
  10. 709 0
      cirs-biz/src/main/java/com/cirs/biz/domain/TVerificationScoretaskDetail.java
  11. 61 0
      cirs-biz/src/main/java/com/cirs/biz/mapper/FactoryScoreMapper.java
  12. 3 1
      cirs-biz/src/main/java/com/cirs/biz/mapper/TElectronComponentMapper.java
  13. 66 0
      cirs-biz/src/main/java/com/cirs/biz/mapper/TVerificationScoretaskDetailMapper.java
  14. 64 0
      cirs-biz/src/main/java/com/cirs/biz/mapper/TVerificationScoretaskMapper.java
  15. 63 0
      cirs-biz/src/main/java/com/cirs/biz/service/IFactoryScoreService.java
  16. 67 0
      cirs-biz/src/main/java/com/cirs/biz/service/ITVerificationScoretaskDetailService.java
  17. 64 0
      cirs-biz/src/main/java/com/cirs/biz/service/ITVerificationScoretaskService.java
  18. 149 0
      cirs-biz/src/main/java/com/cirs/biz/service/impl/FactoryScoreServiceImpl.java
  19. 3 2
      cirs-biz/src/main/java/com/cirs/biz/service/impl/TElectronComponentServiceImpl.java
  20. 181 0
      cirs-biz/src/main/java/com/cirs/biz/service/impl/TVerificationScoretaskDetailServiceImpl.java
  21. 96 0
      cirs-biz/src/main/java/com/cirs/biz/service/impl/TVerificationScoretaskServiceImpl.java
  22. 281 0
      cirs-biz/src/main/resources/mapper/biz/FactoryScoreMapper.xml
  23. 2 2
      cirs-biz/src/main/resources/mapper/biz/TElectronComponentMapper.xml
  24. 304 0
      cirs-biz/src/main/resources/mapper/biz/TVerificationScoretaskDetailMapper.xml
  25. 112 0
      cirs-biz/src/main/resources/mapper/biz/TVerificationScoretaskMapper.xml
  26. 7 6
      cirs-ui/src/api/biz/detail.js
  27. 63 0
      cirs-ui/src/api/biz/score.js
  28. 79 0
      cirs-ui/src/api/biz/scoretask.js
  29. 2 2
      cirs-ui/src/api/biz/train.js
  30. 668 0
      cirs-ui/src/views/biz/marking/index.vue
  31. 60 12
      cirs-ui/src/views/biz/recommend/index.vue
  32. 933 0
      cirs-ui/src/views/biz/score/index.vue
  33. 739 0
      cirs-ui/src/views/biz/scoretask/index.vue
  34. 40 27
      cirs-ui/src/views/biz/task/index.vue

+ 214 - 0
cirs-biz/src/main/java/com/cirs/biz/controller/FactoryScoreController.java

@@ -0,0 +1,214 @@
+package com.cirs.biz.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.cirs.biz.domain.SysTrain;
+import com.cirs.biz.domain.TrainReturn;
+import com.cirs.common.utils.DictUtils;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.cirs.common.annotation.Log;
+import com.cirs.common.core.controller.BaseController;
+import com.cirs.common.core.domain.AjaxResult;
+import com.cirs.common.enums.BusinessType;
+import com.cirs.biz.domain.FactoryScore;
+import com.cirs.biz.service.IFactoryScoreService;
+import com.cirs.common.utils.poi.ExcelUtil;
+import com.cirs.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
+
+/**
+ * 厂家得分Controller
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@RestController
+@RequestMapping("/biz/score")
+public class FactoryScoreController extends BaseController
+{
+    @Autowired
+    private IFactoryScoreService factoryScoreService;
+
+    private WebClient webClient = WebClient.builder()
+//            .baseUrl("http://jsonplaceholder.typicode.com")
+            .build();
+
+    /**
+     * 查询厂家得分列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(FactoryScore factoryScore)
+    {
+        startPage();
+        List<FactoryScore> list = factoryScoreService.selectFactoryScoreList(factoryScore);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出厂家得分列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:export')")
+    @Log(title = "厂家得分", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, FactoryScore factoryScore)
+    {
+        List<FactoryScore> list = factoryScoreService.selectFactoryScoreList(factoryScore);
+        ExcelUtil<FactoryScore> util = new ExcelUtil<FactoryScore>(FactoryScore.class);
+        util.exportExcel(response, list, "厂家得分数据");
+    }
+
+    /**
+     * 获取厂家得分详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(factoryScoreService.selectFactoryScoreById(id));
+    }
+
+    /**
+     * 新增厂家得分
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:add')")
+    @Log(title = "厂家得分", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FactoryScore factoryScore)
+    {
+        return toAjax(factoryScoreService.insertFactoryScore(factoryScore));
+    }
+
+    /**
+     * 修改厂家得分
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:edit')")
+    @Log(title = "厂家得分", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FactoryScore factoryScore)
+    {
+        return toAjax(factoryScoreService.updateFactoryScore(factoryScore));
+    }
+
+    /**
+     * 删除厂家得分
+     */
+    @PreAuthorize("@ss.hasPermi('biz:score:remove')")
+    @Log(title = "厂家得分", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(factoryScoreService.deleteFactoryScoreByIds(ids));
+    }
+
+    @PreAuthorize("@ss.hasPermi('biz:score:import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
+    {
+        ExcelUtil<FactoryScore> util = new ExcelUtil<FactoryScore>(FactoryScore.class);
+        List<FactoryScore> scoreList = util.importExcel(file.getInputStream());
+
+        String operName = getUsername();
+        String message = factoryScoreService.importTrain(scoreList, updateSupport, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<FactoryScore> util = new ExcelUtil<FactoryScore>(FactoryScore.class);
+        util.importTemplateExcel(response, "训练集数据");
+    }
+
+    @PreAuthorize("@ss.hasPermi('biz:score:train')")
+    @GetMapping("/train")
+    public AjaxResult train() {
+        try {
+
+            String model_path = DictUtils.getDictValue("biz_factoryScore_algorithm_config","model_path");
+            String train_uri = DictUtils.getDictValue("biz_factoryScore_algorithm_config","train_uri");
+
+            Map<String, Object> objectMap=new HashMap<>();
+
+            objectMap.put("dataSet", factoryScoreService.selectFactoryScoreList(new FactoryScore()));
+
+            objectMap.put("modelPath", model_path);
+            // 发送请求
+            // todo wangruilin uri 应该是一个全地址+端口,这个地址可以通过数据字典配置和获取
+            Mono<String> mono = webClient
+                    .post() // POST 请求
+                    .uri(train_uri)  // 请求路径
+                    .contentType(MediaType.APPLICATION_JSON_UTF8)
+                    .syncBody(objectMap)
+                    .retrieve() // 获取响应体
+                    .bodyToMono(String.class); //响应数据类型转换
+
+
+            mono.subscribe(result -> {
+                logger.info(result);
+            });
+            //接下来就传入算法即可
+//            System.out.println(JSON.toJSONString(objectMap));
+
+            return success("训练成功");
+        } catch (Exception e) {
+
+            return error("训练失败");
+        }
+    }
+
+    @PreAuthorize("@ss.hasPermi('biz:score:marking')")
+    @PostMapping ("/marking")
+    public AjaxResult recommend(@RequestBody FactoryScore args) {
+        try {
+            String model_path = DictUtils.getDictValue("biz_factoryScore_algorithm_config","model_path");
+            String marking_uri = DictUtils.getDictValue("biz_factoryScore_algorithm_config","marking_uri");
+
+            Map<String, Object> objectMap=new HashMap<>();
+            objectMap.put("data", args);
+            objectMap.put("modelPath", model_path);
+
+            //接下来就传入算法
+//            System.out.println(JSON.toJSONString(objectMap));
+            // todo wangruilin uri 应该是一个全地址+端口,这个地址可以通过数据字典配置和获取
+            Mono<String> mono = webClient
+                    .post() // POST 请求
+                    .uri(marking_uri)  // 请求路径
+                    .contentType(MediaType.APPLICATION_JSON_UTF8)
+                    .syncBody(objectMap)
+                    .retrieve() // 获取响应体
+                    .bodyToMono(String.class); //响应数据类型转换
+
+
+            String res = mono.block();
+            // // todo wangruilin 改成logger
+            logger.info(res);
+
+            AjaxResult result = new AjaxResult();
+            result.put("msg","成功");
+            result.put("data",res);
+            result.put("code",200);
+            return result;
+        } catch (Exception e) {
+
+            return error("打分失败!");
+        }
+    }
+
+
+}

+ 11 - 10
cirs-biz/src/main/java/com/cirs/biz/controller/SysTrainController.java

@@ -198,6 +198,7 @@ public class SysTrainController extends BaseController
 
             mono.subscribe(result -> {
                 logger.info(result);
+
             });
             //接下来就传入算法即可
 //            System.out.println(JSON.toJSONString(objectMap));
@@ -211,15 +212,17 @@ public class SysTrainController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('biz:train:recommend')")
     @PostMapping ("/recommend")
-    public AjaxResult recommend(@RequestBody TrainReturn recommend_args, String modelPath) {
+    public AjaxResult recommend(@RequestBody TrainReturn recommend_args) {
         try {
 
             String recommend_uri = DictUtils.getDictValue("biz_algorithm_config","recommend_uri");
 
+            String model_path = DictUtils.getDictValue("biz_algorithm_config","model_path");
+
             Map<String, Object> objectMap=new HashMap<>();
             objectMap.put("useScene", recommend_args.getUseScene());
             objectMap.put("SearchCondition",recommend_args.getSearchCondition());
-            objectMap.put("modelPath", modelPath);
+            objectMap.put("modelPath", model_path);
             objectMap.put("result1Id",recommend_args.getResult1Id());
             objectMap.put("result2Id",recommend_args.getResult2Id());
             objectMap.put("result3Id",recommend_args.getResult3Id());
@@ -236,15 +239,13 @@ public class SysTrainController extends BaseController
                     .retrieve() // 获取响应体
                     .bodyToMono(String.class); //响应数据类型转换
 
-
-
+                String res = mono.block();
                 // // todo wangruilin 改成logger
-                logger.info(mono.block());
-
-            //暂时赋值
-            recommend_args.setResult1Id((long)53);
-
-            return success(recommend_args);
+                logger.info(res);
+            AjaxResult result = new AjaxResult();
+            result.put("data",res);
+            result.put("code",200);
+            return result;
         } catch (Exception e) {
 
             return error("推荐元器件失败");

+ 1 - 1
cirs-biz/src/main/java/com/cirs/biz/controller/TElectronComponentController.java

@@ -97,7 +97,7 @@ public class TElectronComponentController extends BaseController
         ids[2] = recommend_return.getResult3Id();
         ids[3] = recommend_return.getResult4Id();
         ids[4] = recommend_return.getResult5Id();
-        System.out.println(ids[0]);
+//        System.out.println(ids[0]);
         startPage();
         List<RecommendInfo> list = recommendInfoMapper.RecommendQueryList(ids);
         return getDataTable(list);

+ 116 - 0
cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationScoretaskController.java

@@ -0,0 +1,116 @@
+package com.cirs.biz.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+import com.cirs.biz.domain.TVerificationTaskDetail;
+import com.cirs.biz.domain.VerificationData;
+import com.cirs.common.utils.DictUtils;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.cirs.common.annotation.Log;
+import com.cirs.common.core.controller.BaseController;
+import com.cirs.common.core.domain.AjaxResult;
+import com.cirs.common.enums.BusinessType;
+import com.cirs.biz.domain.TVerificationScoretask;
+import com.cirs.biz.service.ITVerificationScoretaskService;
+import com.cirs.common.utils.poi.ExcelUtil;
+import com.cirs.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+import reactor.core.publisher.Mono;
+
+/**
+ * 打分算法验证任务Controller
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@RestController
+@RequestMapping("/biz/scoretask")
+public class TVerificationScoretaskController extends BaseController
+{
+    @Autowired
+    private ITVerificationScoretaskService tVerificationScoretaskService;
+
+    /**
+     * 查询打分算法验证任务列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TVerificationScoretask tVerificationScoretask)
+    {
+        startPage();
+        List<TVerificationScoretask> list = tVerificationScoretaskService.selectTVerificationScoretaskList(tVerificationScoretask);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出打分算法验证任务列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:export')")
+    @Log(title = "打分算法验证任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TVerificationScoretask tVerificationScoretask)
+    {
+        List<TVerificationScoretask> list = tVerificationScoretaskService.selectTVerificationScoretaskList(tVerificationScoretask);
+        ExcelUtil<TVerificationScoretask> util = new ExcelUtil<TVerificationScoretask>(TVerificationScoretask.class);
+        util.exportExcel(response, list, "打分算法验证任务数据");
+    }
+
+    /**
+     * 获取打分算法验证任务详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(tVerificationScoretaskService.selectTVerificationScoretaskById(id));
+    }
+
+    /**
+     * 新增打分算法验证任务
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:add')")
+    @Log(title = "打分算法验证任务", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TVerificationScoretask tVerificationScoretask)
+    {
+        return toAjax(tVerificationScoretaskService.insertTVerificationScoretask(tVerificationScoretask));
+    }
+
+    /**
+     * 修改打分算法验证任务
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:edit')")
+    @Log(title = "打分算法验证任务", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TVerificationScoretask tVerificationScoretask)
+    {
+        return toAjax(tVerificationScoretaskService.updateTVerificationScoretask(tVerificationScoretask));
+    }
+
+    /**
+     * 删除打分算法验证任务
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretask:remove')")
+    @Log(title = "打分算法验证任务", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tVerificationScoretaskService.deleteTVerificationScoretaskByIds(ids));
+    }
+
+
+}

+ 229 - 0
cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationScoretaskDetailController.java

@@ -0,0 +1,229 @@
+package com.cirs.biz.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.cirs.biz.domain.TVerificationTaskDetail;
+import com.cirs.biz.domain.VerificationData;
+import com.cirs.common.utils.DictUtils;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.cirs.common.annotation.Log;
+import com.cirs.common.core.controller.BaseController;
+import com.cirs.common.core.domain.AjaxResult;
+import com.cirs.common.enums.BusinessType;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+import com.cirs.biz.service.ITVerificationScoretaskDetailService;
+import com.cirs.common.utils.poi.ExcelUtil;
+import com.cirs.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
+
+/**
+ * 打分算法验证详情Controller
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@RestController
+@RequestMapping("/biz/scoretaskdetail")
+public class TVerificationScoretaskDetailController extends BaseController
+{
+    @Autowired
+    private ITVerificationScoretaskDetailService tVerificationScoretaskDetailService;
+
+    private WebClient webClient = WebClient.builder()
+//            .baseUrl("http://jsonplaceholder.typicode.com")
+            .build();
+    /**
+     * 查询打分算法验证详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        startPage();
+        List<TVerificationScoretaskDetail> list = tVerificationScoretaskDetailService.selectTVerificationScoretaskDetailList(tVerificationScoretaskDetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出打分算法验证详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:export')")
+    @Log(title = "打分算法验证详情", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        List<TVerificationScoretaskDetail> list = tVerificationScoretaskDetailService.selectTVerificationScoretaskDetailList(tVerificationScoretaskDetail);
+        ExcelUtil<TVerificationScoretaskDetail> util = new ExcelUtil<TVerificationScoretaskDetail>(TVerificationScoretaskDetail.class);
+        util.exportExcel(response, list, "打分算法验证详情数据");
+    }
+
+    /**
+     * 获取打分算法验证详情详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(tVerificationScoretaskDetailService.selectTVerificationScoretaskDetailById(id));
+    }
+
+    /**
+     * 新增打分算法验证详情
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:add')")
+    @Log(title = "打分算法验证详情", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        return toAjax(tVerificationScoretaskDetailService.insertTVerificationScoretaskDetail(tVerificationScoretaskDetail));
+    }
+
+    /**
+     * 修改打分算法验证详情
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:edit')")
+    @Log(title = "打分算法验证详情", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        return toAjax(tVerificationScoretaskDetailService.updateTVerificationScoretaskDetail(tVerificationScoretaskDetail));
+    }
+
+    /**
+     * 删除打分算法验证详情
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:remove')")
+    @Log(title = "打分算法验证详情", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tVerificationScoretaskDetailService.deleteTVerificationScoretaskDetailByIds(ids));
+    }
+
+    /**
+     * 导入验证任务detail wangruilin
+     */
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
+    {
+        ExcelUtil<TVerificationScoretaskDetail> util = new ExcelUtil<TVerificationScoretaskDetail>(TVerificationScoretaskDetail.class);
+        List<TVerificationScoretaskDetail> taskDetailList = util.importExcel(file.getInputStream());
+        String operName = getUsername();
+        String fileName = file.getOriginalFilename();
+
+        assert fileName != null;
+        fileName =  fileName.substring(0, fileName.lastIndexOf("."));
+
+        String message = tVerificationScoretaskDetailService.importTaskDetail(taskDetailList, updateSupport, operName,fileName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<TVerificationScoretaskDetail> util = new ExcelUtil<TVerificationScoretaskDetail>(TVerificationScoretaskDetail.class);
+        util.importTemplateExcel(response, "score任务详情数据");
+    }
+
+
+
+    @PreAuthorize("@ss.hasPermi('biz:scoretaskdetail:verification')")
+    @GetMapping("/verification")
+    public AjaxResult verification(Long taskid) {
+
+        try {
+
+            String model_path = DictUtils.getDictValue("biz_factoryScore_algorithm_config","model_path");
+            String verification_uri = DictUtils.getDictValue("biz_factoryScore_algorithm_config","verification_uri");
+
+
+            logger.info(taskid.toString());
+//            System.out.println(taskid);
+
+
+            Map<String, Object> objectMap=new HashMap<>();
+
+            List<TVerificationScoretaskDetail> dataset = tVerificationScoretaskDetailService.getByscoretaskid(taskid);
+            objectMap.put("dataSet", dataset);
+            objectMap.put("modelPath", model_path);
+            // 发送请求
+            Mono<String> mono = webClient
+                    .post() // POST 请求
+                    .uri(verification_uri)  // 请求路径
+                    .contentType(MediaType.APPLICATION_JSON_UTF8)
+                    .syncBody(objectMap)
+                    .retrieve() // 获取响应体
+                    .bodyToMono(String.class); //响应数据类型转换
+
+            AjaxResult res = new AjaxResult();
+            String result = mono.block();//返回值有accuracyRate和recallRate属性
+
+            res.put("data",result);
+            res.put("msg","打分任务"+taskid+"验证算法调用成功");
+            res.put("code",200);
+
+//            System.out.println(result);
+            logger.info(result);
+            return res;
+//            return success(returndata);
+
+//            return success("任务"+taskid+"验证算法调用成功");
+        } catch (Exception e) {
+
+            return error("任务"+taskid+"验证算法调用失败");
+        }
+    }
+
+
+
+
+    @PostMapping("/updateDetails")
+    public AjaxResult updateDetails(@RequestBody List<TVerificationScoretaskDetail> dataset){
+        try {
+            for (TVerificationScoretaskDetail data : dataset) {
+
+                tVerificationScoretaskDetailService.updateTVerificationScoretaskDetail(data);
+            }
+
+
+
+            return success();
+        } catch (Exception e){
+            return error("加载数据出错");
+        }
+    }
+
+//    @PostMapping("/getUpdatedDetails")
+//    public TableDataInfo getUpdatedDetails(@RequestBody List<Long> taskids){
+////        try{
+//            startPage();
+//            return getDataTable(tVerificationScoretaskDetailService.selectTVerificationScoreaskDetailByTaskIds(taskids));
+////        } catch (Exception e){
+////            return null;
+////        }
+//
+//    }
+
+    @PostMapping("/getUpdatedDetails")
+    public PageInfo<TVerificationScoretaskDetail> getUpdatedDetails(
+            @RequestBody List<Long> taskids,
+            @RequestParam(name = "pageNum", defaultValue = "1") int pageNum,
+            @RequestParam(name = "pageSize", defaultValue = "10") int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageInfo<TVerificationScoretaskDetail> Page = new PageInfo<>(tVerificationScoretaskDetailService.selectTVerificationScoreaskDetailByTaskIds(taskids));
+        return Page;
+    }
+}

+ 21 - 13
cirs-biz/src/main/java/com/cirs/biz/controller/TVerificationTaskDetailController.java

@@ -6,14 +6,14 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson2.JSON;
-import com.cirs.biz.domain.SysTrain;
-import com.cirs.biz.domain.TVerificationTask;
-import com.cirs.biz.domain.VerificationData;
+import com.cirs.biz.domain.*;
 import com.cirs.biz.service.ITElectronComponentService;
 import com.cirs.common.utils.DictUtils;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import org.springframework.boot.json.GsonJsonParser;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -23,7 +23,6 @@ import com.cirs.common.annotation.Log;
 import com.cirs.common.core.controller.BaseController;
 import com.cirs.common.core.domain.AjaxResult;
 import com.cirs.common.enums.BusinessType;
-import com.cirs.biz.domain.TVerificationTaskDetail;
 import com.cirs.biz.service.ITVerificationTaskDetailService;
 import com.cirs.common.utils.poi.ExcelUtil;
 import com.cirs.common.core.page.TableDataInfo;
@@ -176,7 +175,7 @@ public class TVerificationTaskDetailController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('biz:detail:verification')")
     @GetMapping("/verification")
-    public AjaxResult train(Long taskid) {
+    public AjaxResult verification(Long taskid) {
 
         try {
 
@@ -267,14 +266,23 @@ public class TVerificationTaskDetailController extends BaseController
         }
     }
 
+//    @PostMapping("/getUpdatedDetails")
+//    public TableDataInfo getUpdatedDetails(@RequestBody List<Long> taskids){
+//        try{
+//            startPage();
+//            return getDataTable(tVerificationTaskDetailService.selectTVerificationTaskDetailByTaskIds(taskids));
+//        } catch (Exception e){
+//            return null;
+//        }
+//
+//    }
     @PostMapping("/getUpdatedDetails")
-    public TableDataInfo getUpdatedDetails(@RequestBody List<Long> taskids){
-        try{
-            startPage();
-            return getDataTable(tVerificationTaskDetailService.selectTVerificationTaskDetailByTaskIds(taskids));
-        } catch (Exception e){
-            return null;
-        }
-
+    public PageInfo<TVerificationTaskDetail> getUpdatedDetails(
+            @RequestBody List<Long> taskids,
+            @RequestParam(name = "pageNum", defaultValue = "1") int pageNum,
+            @RequestParam(name = "pageSize", defaultValue = "10") int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageInfo<TVerificationTaskDetail> Page = new PageInfo<>(tVerificationTaskDetailService.selectTVerificationTaskDetailByTaskIds(taskids));
+        return Page;
     }
 }

+ 31 - 0
cirs-biz/src/main/java/com/cirs/biz/domain/ElectronComponent.java

@@ -0,0 +1,31 @@
+package com.cirs.biz.domain;
+
+public class ElectronComponent {
+    String component_name;
+    String component_model;
+    String quality_grade;
+
+    public String getComponent_name() {
+        return component_name;
+    }
+
+    public void setComponent_name(String component_name) {
+        this.component_name = component_name;
+    }
+
+    public String getComponent_model() {
+        return component_model;
+    }
+
+    public void setComponent_model(String component_model) {
+        this.component_model = component_model;
+    }
+
+    public String getQuality_grade() {
+        return quality_grade;
+    }
+
+    public void setQuality_grade(String quality_grade) {
+        this.quality_grade = quality_grade;
+    }
+}

+ 681 - 0
cirs-biz/src/main/java/com/cirs/biz/domain/FactoryScore.java

@@ -0,0 +1,681 @@
+package com.cirs.biz.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.cirs.common.annotation.Excel;
+import com.cirs.common.core.domain.BaseEntity;
+
+/**
+ * 厂家得分对象 factory_score
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public class FactoryScore extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 厂家名称 */
+    @Excel(name = "厂家名称")
+    private String factoryName;
+
+    /** 生产线运行情况良好 */
+    @Excel(name = "生产线运行情况良好")
+    private String factor1;
+
+    /** 生产过程耗材稳定供应 */
+    @Excel(name = "生产过程耗材稳定供应")
+    private String factor2;
+
+    /** 定期进行生产线维护保养 */
+    @Excel(name = "定期进行生产线维护保养")
+    private String factor3;
+
+    /** 质量体系完善且运行情况良好 */
+    @Excel(name = "质量体系完善且运行情况良好")
+    private String factor4;
+
+    /** 建立了与配套元器件生产相适应的生产管理系统且运行情况良好 */
+    @Excel(name = "建立了与配套元器件生产相适应的生产管理系统且运行情况良好")
+    private String factor5;
+
+    /** 重要岗位人员定期进行专业培训 */
+    @Excel(name = "重要岗位人员定期进行专业培训")
+    private String factor6;
+
+    /** 产品批次管理有具体文件内容规定,是否有管理责任人 */
+    @Excel(name = "产品批次管理有具体文件内容规定,是否有管理责任人")
+    private String factor7;
+
+    /** 未发生过因产品批次问题引起的交付问题 */
+    @Excel(name = "未发生过因产品批次问题引起的交付问题")
+    private String factor8;
+
+    /** 产品全寿命周期可追溯,质量一致性高 */
+    @Excel(name = "产品全寿命周期可追溯,质量一致性高")
+    private String factor9;
+
+    /** 生产工艺已完成定型,且有相关产品生产经历 */
+    @Excel(name = "生产工艺已完成定型,且有相关产品生产经历")
+    private String factor10;
+
+    /** 有明确生产过程控制技术手段 */
+    @Excel(name = "有明确生产过程控制技术手段")
+    private String factor11;
+
+    /** 关键工序有明确的评价准则、严格的监控措施和完整记录 */
+    @Excel(name = "关键工序有明确的评价准则、严格的监控措施和完整记录")
+    private String factor12;
+
+    /** 芯片的合格率水平满足要求 */
+    @Excel(name = "芯片的合格率水平满足要求")
+    private String factor13;
+
+    /** 封装的合格率水平满足要求 */
+    @Excel(name = "封装的合格率水平满足要求")
+    private String factor14;
+
+    /** 未发生过中重大失效问题 */
+    @Excel(name = "未发生过中重大失效问题")
+    private String factor15;
+
+    /** 针对重大失效问题,建立有应急处理机制,且严格执行。 */
+    @Excel(name = "针对重大失效问题,建立有应急处理机制,且严格执行。")
+    private String factor16;
+
+    /** 针对不同的核心零部件,由相应的采购策略 */
+    @Excel(name = "针对不同的核心零部件,由相应的采购策略")
+    private String factor17;
+
+    /** 具有稳定可靠的供货渠道 */
+    @Excel(name = "具有稳定可靠的供货渠道")
+    private String factor18;
+
+    /** 核心零部件检验制度完善 */
+    @Excel(name = "核心零部件检验制度完善")
+    private String factor19;
+
+    /** 无重大质量问题发生 */
+    @Excel(name = "无重大质量问题发生")
+    private String factor20;
+
+    /** 生产产能充足 */
+    @Excel(name = "生产产能充足")
+    private String factor21;
+
+    /** 产能调度分配机制成熟完善,能够满足要求 */
+    @Excel(name = "产能调度分配机制成熟完善,能够满足要求")
+    private String factor22;
+
+    /** 根据产品自身和用户应用需求特点,建立合理的库存策略 */
+    @Excel(name = "根据产品自身和用户应用需求特点,建立合理的库存策略")
+    private String factor23;
+
+    /** 针对有供货风险的零部件有合理的进出库管理策略 */
+    @Excel(name = "针对有供货风险的零部件有合理的进出库管理策略")
+    private String factor24;
+
+    /** 温湿度等存储环境条件满足要求 */
+    @Excel(name = "温湿度等存储环境条件满足要求")
+    private String factor25;
+
+    /** 有稳定的核心零部件、半成品/成品库存量 */
+    @Excel(name = "有稳定的核心零部件、半成品/成品库存量")
+    private String factor26;
+
+    /** 该产品符合技术发展趋势,为企业主攻主流产品 */
+    @Excel(name = "该产品符合技术发展趋势,为企业主攻主流产品")
+    private String factor27;
+
+    /** 产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略 */
+    @Excel(name = "产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略")
+    private String factor28;
+
+    /** 制定有完善的元器件状态管控制度或措施,且有效执行 */
+    @Excel(name = "制定有完善的元器件状态管控制度或措施,且有效执行")
+    private String factor29;
+
+    /** 器件状态清晰明确,且状态变更过程完全受控 */
+    @Excel(name = "器件状态清晰明确,且状态变更过程完全受控")
+    private String factor30;
+
+    /** 产品供货周期合理,能满足用户采购要求 */
+    @Excel(name = "产品供货周期合理,能满足用户采购要求")
+    private String factor31;
+
+    /** 最小起订量设置合理 */
+    @Excel(name = "最小起订量设置合理")
+    private String factor32;
+
+    /** 制定有相应的供应商准入、选择、评价等制度,并严格执行 */
+    @Excel(name = "制定有相应的供应商准入、选择、评价等制度,并严格执行")
+    private String factor33;
+
+    /** 有长期稳定合作的核心关键的外协单位 */
+    @Excel(name = "有长期稳定合作的核心关键的外协单位")
+    private String factor34;
+
+    /** 能够及时为用户提供应用全过程的技术售后服务 */
+    @Excel(name = "能够及时为用户提供应用全过程的技术售后服务")
+    private String factor35;
+
+    /** 了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求 */
+    @Excel(name = "了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求")
+    private String factor36;
+
+    /** 制定了健全的稳定核心人员的措施,并有效执行 */
+    @Excel(name = "制定了健全的稳定核心人员的措施,并有效执行")
+    private String factor37;
+
+    /** 成立有专门的军品管理部门和科研生产技术团队,核心团队稳定 */
+    @Excel(name = "成立有专门的军品管理部门和科研生产技术团队,核心团队稳定")
+    private String factor38;
+
+    /** 核心人员均具备相应的专业知识和技术能力 */
+    @Excel(name = "核心人员均具备相应的专业知识和技术能力")
+    private String factor39;
+
+    /** 建立了良好的成本管控措施 */
+    @Excel(name = "建立了良好的成本管控措施")
+    private String factor40;
+
+    /** 能够承担产品生产、配套相关成本,能够持续盈利 */
+    @Excel(name = "能够承担产品生产、配套相关成本,能够持续盈利")
+    private String factor41;
+
+    /** 经济性好,企业能够持续获利 */
+    @Excel(name = "经济性好,企业能够持续获利")
+    private String factor42;
+
+    /** 和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题 */
+    @Excel(name = "和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题")
+    private String factor43;
+
+    /** 产品推广应用情况良好,市场认可度高,客户满意度高 */
+    @Excel(name = "产品推广应用情况良好,市场认可度高,客户满意度高")
+    private String factor44;
+
+    /** 最终等级 */
+    @Excel(name = "最终等级")
+    private String finalGrade;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setFactoryName(String factoryName) 
+    {
+        this.factoryName = factoryName;
+    }
+
+    public String getFactoryName() 
+    {
+        return factoryName;
+    }
+    public void setFactor1(String factor1) 
+    {
+        this.factor1 = factor1;
+    }
+
+    public String getFactor1() 
+    {
+        return factor1;
+    }
+    public void setFactor2(String factor2) 
+    {
+        this.factor2 = factor2;
+    }
+
+    public String getFactor2() 
+    {
+        return factor2;
+    }
+    public void setFactor3(String factor3) 
+    {
+        this.factor3 = factor3;
+    }
+
+    public String getFactor3() 
+    {
+        return factor3;
+    }
+    public void setFactor4(String factor4) 
+    {
+        this.factor4 = factor4;
+    }
+
+    public String getFactor4() 
+    {
+        return factor4;
+    }
+    public void setFactor5(String factor5) 
+    {
+        this.factor5 = factor5;
+    }
+
+    public String getFactor5() 
+    {
+        return factor5;
+    }
+    public void setFactor6(String factor6) 
+    {
+        this.factor6 = factor6;
+    }
+
+    public String getFactor6() 
+    {
+        return factor6;
+    }
+    public void setFactor7(String factor7) 
+    {
+        this.factor7 = factor7;
+    }
+
+    public String getFactor7() 
+    {
+        return factor7;
+    }
+    public void setFactor8(String factor8) 
+    {
+        this.factor8 = factor8;
+    }
+
+    public String getFactor8() 
+    {
+        return factor8;
+    }
+    public void setFactor9(String factor9) 
+    {
+        this.factor9 = factor9;
+    }
+
+    public String getFactor9() 
+    {
+        return factor9;
+    }
+    public void setFactor10(String factor10) 
+    {
+        this.factor10 = factor10;
+    }
+
+    public String getFactor10() 
+    {
+        return factor10;
+    }
+    public void setFactor11(String factor11) 
+    {
+        this.factor11 = factor11;
+    }
+
+    public String getFactor11() 
+    {
+        return factor11;
+    }
+    public void setFactor12(String factor12) 
+    {
+        this.factor12 = factor12;
+    }
+
+    public String getFactor12() 
+    {
+        return factor12;
+    }
+    public void setFactor13(String factor13) 
+    {
+        this.factor13 = factor13;
+    }
+
+    public String getFactor13() 
+    {
+        return factor13;
+    }
+    public void setFactor14(String factor14) 
+    {
+        this.factor14 = factor14;
+    }
+
+    public String getFactor14() 
+    {
+        return factor14;
+    }
+    public void setFactor15(String factor15) 
+    {
+        this.factor15 = factor15;
+    }
+
+    public String getFactor15() 
+    {
+        return factor15;
+    }
+    public void setFactor16(String factor16) 
+    {
+        this.factor16 = factor16;
+    }
+
+    public String getFactor16() 
+    {
+        return factor16;
+    }
+    public void setFactor17(String factor17) 
+    {
+        this.factor17 = factor17;
+    }
+
+    public String getFactor17() 
+    {
+        return factor17;
+    }
+    public void setFactor18(String factor18) 
+    {
+        this.factor18 = factor18;
+    }
+
+    public String getFactor18() 
+    {
+        return factor18;
+    }
+    public void setFactor19(String factor19) 
+    {
+        this.factor19 = factor19;
+    }
+
+    public String getFactor19() 
+    {
+        return factor19;
+    }
+    public void setFactor20(String factor20) 
+    {
+        this.factor20 = factor20;
+    }
+
+    public String getFactor20() 
+    {
+        return factor20;
+    }
+    public void setFactor21(String factor21) 
+    {
+        this.factor21 = factor21;
+    }
+
+    public String getFactor21() 
+    {
+        return factor21;
+    }
+    public void setFactor22(String factor22) 
+    {
+        this.factor22 = factor22;
+    }
+
+    public String getFactor22() 
+    {
+        return factor22;
+    }
+    public void setFactor23(String factor23) 
+    {
+        this.factor23 = factor23;
+    }
+
+    public String getFactor23() 
+    {
+        return factor23;
+    }
+    public void setFactor24(String factor24) 
+    {
+        this.factor24 = factor24;
+    }
+
+    public String getFactor24() 
+    {
+        return factor24;
+    }
+    public void setFactor25(String factor25) 
+    {
+        this.factor25 = factor25;
+    }
+
+    public String getFactor25() 
+    {
+        return factor25;
+    }
+    public void setFactor26(String factor26) 
+    {
+        this.factor26 = factor26;
+    }
+
+    public String getFactor26() 
+    {
+        return factor26;
+    }
+    public void setFactor27(String factor27) 
+    {
+        this.factor27 = factor27;
+    }
+
+    public String getFactor27() 
+    {
+        return factor27;
+    }
+    public void setFactor28(String factor28) 
+    {
+        this.factor28 = factor28;
+    }
+
+    public String getFactor28() 
+    {
+        return factor28;
+    }
+    public void setFactor29(String factor29) 
+    {
+        this.factor29 = factor29;
+    }
+
+    public String getFactor29() 
+    {
+        return factor29;
+    }
+    public void setFactor30(String factor30) 
+    {
+        this.factor30 = factor30;
+    }
+
+    public String getFactor30() 
+    {
+        return factor30;
+    }
+    public void setFactor31(String factor31) 
+    {
+        this.factor31 = factor31;
+    }
+
+    public String getFactor31() 
+    {
+        return factor31;
+    }
+    public void setFactor32(String factor32) 
+    {
+        this.factor32 = factor32;
+    }
+
+    public String getFactor32() 
+    {
+        return factor32;
+    }
+    public void setFactor33(String factor33) 
+    {
+        this.factor33 = factor33;
+    }
+
+    public String getFactor33() 
+    {
+        return factor33;
+    }
+    public void setFactor34(String factor34) 
+    {
+        this.factor34 = factor34;
+    }
+
+    public String getFactor34() 
+    {
+        return factor34;
+    }
+    public void setFactor35(String factor35) 
+    {
+        this.factor35 = factor35;
+    }
+
+    public String getFactor35() 
+    {
+        return factor35;
+    }
+    public void setFactor36(String factor36) 
+    {
+        this.factor36 = factor36;
+    }
+
+    public String getFactor36() 
+    {
+        return factor36;
+    }
+    public void setFactor37(String factor37) 
+    {
+        this.factor37 = factor37;
+    }
+
+    public String getFactor37() 
+    {
+        return factor37;
+    }
+    public void setFactor38(String factor38) 
+    {
+        this.factor38 = factor38;
+    }
+
+    public String getFactor38() 
+    {
+        return factor38;
+    }
+    public void setFactor39(String factor39) 
+    {
+        this.factor39 = factor39;
+    }
+
+    public String getFactor39() 
+    {
+        return factor39;
+    }
+    public void setFactor40(String factor40) 
+    {
+        this.factor40 = factor40;
+    }
+
+    public String getFactor40() 
+    {
+        return factor40;
+    }
+    public void setFactor41(String factor41) 
+    {
+        this.factor41 = factor41;
+    }
+
+    public String getFactor41() 
+    {
+        return factor41;
+    }
+    public void setFactor42(String factor42) 
+    {
+        this.factor42 = factor42;
+    }
+
+    public String getFactor42() 
+    {
+        return factor42;
+    }
+    public void setFactor43(String factor43) 
+    {
+        this.factor43 = factor43;
+    }
+
+    public String getFactor43() 
+    {
+        return factor43;
+    }
+    public void setFactor44(String factor44) 
+    {
+        this.factor44 = factor44;
+    }
+
+    public String getFactor44() 
+    {
+        return factor44;
+    }
+    public void setFinalGrade(String finalGrade) 
+    {
+        this.finalGrade = finalGrade;
+    }
+
+    public String getFinalGrade() 
+    {
+        return finalGrade;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("factoryName", getFactoryName())
+            .append("factor1", getFactor1())
+            .append("factor2", getFactor2())
+            .append("factor3", getFactor3())
+            .append("factor4", getFactor4())
+            .append("factor5", getFactor5())
+            .append("factor6", getFactor6())
+            .append("factor7", getFactor7())
+            .append("factor8", getFactor8())
+            .append("factor9", getFactor9())
+            .append("factor10", getFactor10())
+            .append("factor11", getFactor11())
+            .append("factor12", getFactor12())
+            .append("factor13", getFactor13())
+            .append("factor14", getFactor14())
+            .append("factor15", getFactor15())
+            .append("factor16", getFactor16())
+            .append("factor17", getFactor17())
+            .append("factor18", getFactor18())
+            .append("factor19", getFactor19())
+            .append("factor20", getFactor20())
+            .append("factor21", getFactor21())
+            .append("factor22", getFactor22())
+            .append("factor23", getFactor23())
+            .append("factor24", getFactor24())
+            .append("factor25", getFactor25())
+            .append("factor26", getFactor26())
+            .append("factor27", getFactor27())
+            .append("factor28", getFactor28())
+            .append("factor29", getFactor29())
+            .append("factor30", getFactor30())
+            .append("factor31", getFactor31())
+            .append("factor32", getFactor32())
+            .append("factor33", getFactor33())
+            .append("factor34", getFactor34())
+            .append("factor35", getFactor35())
+            .append("factor36", getFactor36())
+            .append("factor37", getFactor37())
+            .append("factor38", getFactor38())
+            .append("factor39", getFactor39())
+            .append("factor40", getFactor40())
+            .append("factor41", getFactor41())
+            .append("factor42", getFactor42())
+            .append("factor43", getFactor43())
+            .append("factor44", getFactor44())
+            .append("finalGrade", getFinalGrade())
+            .toString();
+    }
+}

+ 159 - 0
cirs-biz/src/main/java/com/cirs/biz/domain/TVerificationScoretask.java

@@ -0,0 +1,159 @@
+package com.cirs.biz.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.cirs.common.annotation.Excel;
+import com.cirs.common.core.domain.BaseEntity;
+
+/**
+ * 打分算法验证任务对象 t_verification_scoretask
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public class TVerificationScoretask extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 任务名称 */
+    @Excel(name = "任务名称")
+    private String taskName;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String taskStatus;
+
+    /** 任务数 */
+    @Excel(name = "任务数")
+    private Long subtaskNum;
+
+    /** 开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /** 结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /** 完成率 */
+    @Excel(name = "完成率")
+    private BigDecimal progress;
+
+    /** 准确率 */
+    @Excel(name = "准确率")
+    private String accuracyRate;
+
+    /** 召回率 */
+    @Excel(name = "召回率")
+    private String recallRate;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTaskName(String taskName) 
+    {
+        this.taskName = taskName;
+    }
+
+    public String getTaskName() 
+    {
+        return taskName;
+    }
+    public void setTaskStatus(String taskStatus) 
+    {
+        this.taskStatus = taskStatus;
+    }
+
+    public String getTaskStatus() 
+    {
+        return taskStatus;
+    }
+    public void setSubtaskNum(Long subtaskNum) 
+    {
+        this.subtaskNum = subtaskNum;
+    }
+
+    public Long getSubtaskNum() 
+    {
+        return subtaskNum;
+    }
+    public void setStartTime(Date startTime) 
+    {
+        this.startTime = startTime;
+    }
+
+    public Date getStartTime() 
+    {
+        return startTime;
+    }
+    public void setEndTime(Date endTime) 
+    {
+        this.endTime = endTime;
+    }
+
+    public Date getEndTime() 
+    {
+        return endTime;
+    }
+    public void setProgress(BigDecimal progress) 
+    {
+        this.progress = progress;
+    }
+
+    public BigDecimal getProgress() 
+    {
+        return progress;
+    }
+    public void setAccuracyRate(String accuracyRate) 
+    {
+        this.accuracyRate = accuracyRate;
+    }
+
+    public String getAccuracyRate() 
+    {
+        return accuracyRate;
+    }
+    public void setRecallRate(String recallRate) 
+    {
+        this.recallRate = recallRate;
+    }
+
+    public String getRecallRate() 
+    {
+        return recallRate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("taskName", getTaskName())
+            .append("taskStatus", getTaskStatus())
+            .append("subtaskNum", getSubtaskNum())
+            .append("startTime", getStartTime())
+            .append("endTime", getEndTime())
+            .append("progress", getProgress())
+            .append("accuracyRate", getAccuracyRate())
+            .append("recallRate", getRecallRate())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 709 - 0
cirs-biz/src/main/java/com/cirs/biz/domain/TVerificationScoretaskDetail.java

@@ -0,0 +1,709 @@
+package com.cirs.biz.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.cirs.common.annotation.Excel;
+import com.cirs.common.core.domain.BaseEntity;
+
+/**
+ * 打分算法验证详情对象 t_verification_scoretask_detail
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public class TVerificationScoretaskDetail extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** scoretask的id */
+//    @Excel(name = "scoretask的id")
+    private Long taskId;
+
+    /** 厂家名称 */
+    @Excel(name = "厂家名称")
+    private String factoryName;
+
+    /** 生产线运行情况良好 */
+    @Excel(name = "生产线运行情况良好")
+    private String factor1;
+
+    /** 生产过程耗材稳定供应 */
+    @Excel(name = "生产过程耗材稳定供应")
+    private String factor2;
+
+    /** 定期进行生产线维护保养 */
+    @Excel(name = "定期进行生产线维护保养")
+    private String factor3;
+
+    /** 质量体系完善且运行情况良好 */
+    @Excel(name = "质量体系完善且运行情况良好")
+    private String factor4;
+
+    /** 建立了与配套元器件生产相适应的生产管理系统且运行情况良好 */
+    @Excel(name = "建立了与配套元器件生产相适应的生产管理系统且运行情况良好")
+    private String factor5;
+
+    /** 重要岗位人员定期进行专业培训 */
+    @Excel(name = "重要岗位人员定期进行专业培训")
+    private String factor6;
+
+    /** 产品批次管理有具体文件内容规定,是否有管理责任人 */
+    @Excel(name = "产品批次管理有具体文件内容规定,是否有管理责任人")
+    private String factor7;
+
+    /** 未发生过因产品批次问题引起的交付问题 */
+    @Excel(name = "未发生过因产品批次问题引起的交付问题")
+    private String factor8;
+
+    /** 产品全寿命周期可追溯,质量一致性高 */
+    @Excel(name = "产品全寿命周期可追溯,质量一致性高")
+    private String factor9;
+
+    /** 生产工艺已完成定型,且有相关产品生产经历 */
+    @Excel(name = "生产工艺已完成定型,且有相关产品生产经历")
+    private String factor10;
+
+    /** 有明确生产过程控制技术手段 */
+    @Excel(name = "有明确生产过程控制技术手段")
+    private String factor11;
+
+    /** 关键工序有明确的评价准则、严格的监控措施和完整记录 */
+    @Excel(name = "关键工序有明确的评价准则、严格的监控措施和完整记录")
+    private String factor12;
+
+    /** 芯片的合格率水平满足要求 */
+    @Excel(name = "芯片的合格率水平满足要求")
+    private String factor13;
+
+    /** 封装的合格率水平满足要求 */
+    @Excel(name = "封装的合格率水平满足要求")
+    private String factor14;
+
+    /** 未发生过中重大失效问题 */
+    @Excel(name = "未发生过中重大失效问题")
+    private String factor15;
+
+    /** 针对重大失效问题,建立有应急处理机制,且严格执行。 */
+    @Excel(name = "针对重大失效问题,建立有应急处理机制,且严格执行。")
+    private String factor16;
+
+    /** 针对不同的核心零部件,由相应的采购策略 */
+    @Excel(name = "针对不同的核心零部件,由相应的采购策略")
+    private String factor17;
+
+    /** 具有稳定可靠的供货渠道 */
+    @Excel(name = "具有稳定可靠的供货渠道")
+    private String factor18;
+
+    /** 核心零部件检验制度完善 */
+    @Excel(name = "核心零部件检验制度完善")
+    private String factor19;
+
+    /** 无重大质量问题发生 */
+    @Excel(name = "无重大质量问题发生")
+    private String factor20;
+
+    /** 生产产能充足 */
+    @Excel(name = "生产产能充足")
+    private String factor21;
+
+    /** 产能调度分配机制成熟完善,能够满足要求 */
+    @Excel(name = "产能调度分配机制成熟完善,能够满足要求")
+    private String factor22;
+
+    /** 根据产品自身和用户应用需求特点,建立合理的库存策略 */
+    @Excel(name = "根据产品自身和用户应用需求特点,建立合理的库存策略")
+    private String factor23;
+
+    /** 针对有供货风险的零部件有合理的进出库管理策略 */
+    @Excel(name = "针对有供货风险的零部件有合理的进出库管理策略")
+    private String factor24;
+
+    /** 温湿度等存储环境条件满足要求 */
+    @Excel(name = "温湿度等存储环境条件满足要求")
+    private String factor25;
+
+    /** 有稳定的核心零部件、半成品/成品库存量 */
+    @Excel(name = "有稳定的核心零部件、半成品/成品库存量")
+    private String factor26;
+
+    /** 该产品符合技术发展趋势,为企业主攻主流产品 */
+    @Excel(name = "该产品符合技术发展趋势,为企业主攻主流产品")
+    private String factor27;
+
+    /** 产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略 */
+    @Excel(name = "产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略")
+    private String factor28;
+
+    /** 制定有完善的元器件状态管控制度或措施,且有效执行 */
+    @Excel(name = "制定有完善的元器件状态管控制度或措施,且有效执行")
+    private String factor29;
+
+    /** 器件状态清晰明确,且状态变更过程完全受控 */
+    @Excel(name = "器件状态清晰明确,且状态变更过程完全受控")
+    private String factor30;
+
+    /** 产品供货周期合理,能满足用户采购要求 */
+    @Excel(name = "产品供货周期合理,能满足用户采购要求")
+    private String factor31;
+
+    /** 最小起订量设置合理 */
+    @Excel(name = "最小起订量设置合理")
+    private String factor32;
+
+    /** 制定有相应的供应商准入、选择、评价等制度,并严格执行 */
+    @Excel(name = "制定有相应的供应商准入、选择、评价等制度,并严格执行")
+    private String factor33;
+
+    /** 有长期稳定合作的核心关键的外协单位 */
+    @Excel(name = "有长期稳定合作的核心关键的外协单位")
+    private String factor34;
+
+    /** 能够及时为用户提供应用全过程的技术售后服务 */
+    @Excel(name = "能够及时为用户提供应用全过程的技术售后服务")
+    private String factor35;
+
+    /** 了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求 */
+    @Excel(name = "了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求")
+    private String factor36;
+
+    /** 制定了健全的稳定核心人员的措施,并有效执行 */
+    @Excel(name = "制定了健全的稳定核心人员的措施,并有效执行")
+    private String factor37;
+
+    /** 成立有专门的军品管理部门和科研生产技术团队,核心团队稳定 */
+    @Excel(name = "成立有专门的军品管理部门和科研生产技术团队,核心团队稳定")
+    private String factor38;
+
+    /** 核心人员均具备相应的专业知识和技术能力 */
+    @Excel(name = "核心人员均具备相应的专业知识和技术能力")
+    private String factor39;
+
+    /** 建立了良好的成本管控措施 */
+    @Excel(name = "建立了良好的成本管控措施")
+    private String factor40;
+
+    /** 能够承担产品生产、配套相关成本,能够持续盈利 */
+    @Excel(name = "能够承担产品生产、配套相关成本,能够持续盈利")
+    private String factor41;
+
+    /** 经济性好,企业能够持续获利 */
+    @Excel(name = "经济性好,企业能够持续获利")
+    private String factor42;
+
+    /** 和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题 */
+    @Excel(name = "和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题")
+    private String factor43;
+
+    /** 产品推广应用情况良好,市场认可度高,客户满意度高 */
+    @Excel(name = "产品推广应用情况良好,市场认可度高,客户满意度高")
+    private String factor44;
+
+    /** 最终等级 */
+    @Excel(name = "最终等级")
+    private String finalGrade;
+
+    /** 算法计算的最终等级 */
+    @Excel(name = "算法计算的最终等级")
+    private String calculatedGrade;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTaskId(Long taskId) 
+    {
+        this.taskId = taskId;
+    }
+
+    public Long getTaskId() 
+    {
+        return taskId;
+    }
+    public void setFactoryName(String factoryName) 
+    {
+        this.factoryName = factoryName;
+    }
+
+    public String getFactoryName() 
+    {
+        return factoryName;
+    }
+    public void setFactor1(String factor1) 
+    {
+        this.factor1 = factor1;
+    }
+
+    public String getFactor1() 
+    {
+        return factor1;
+    }
+    public void setFactor2(String factor2) 
+    {
+        this.factor2 = factor2;
+    }
+
+    public String getFactor2() 
+    {
+        return factor2;
+    }
+    public void setFactor3(String factor3) 
+    {
+        this.factor3 = factor3;
+    }
+
+    public String getFactor3() 
+    {
+        return factor3;
+    }
+    public void setFactor4(String factor4) 
+    {
+        this.factor4 = factor4;
+    }
+
+    public String getFactor4() 
+    {
+        return factor4;
+    }
+    public void setFactor5(String factor5) 
+    {
+        this.factor5 = factor5;
+    }
+
+    public String getFactor5() 
+    {
+        return factor5;
+    }
+    public void setFactor6(String factor6) 
+    {
+        this.factor6 = factor6;
+    }
+
+    public String getFactor6() 
+    {
+        return factor6;
+    }
+    public void setFactor7(String factor7) 
+    {
+        this.factor7 = factor7;
+    }
+
+    public String getFactor7() 
+    {
+        return factor7;
+    }
+    public void setFactor8(String factor8) 
+    {
+        this.factor8 = factor8;
+    }
+
+    public String getFactor8() 
+    {
+        return factor8;
+    }
+    public void setFactor9(String factor9) 
+    {
+        this.factor9 = factor9;
+    }
+
+    public String getFactor9() 
+    {
+        return factor9;
+    }
+    public void setFactor10(String factor10) 
+    {
+        this.factor10 = factor10;
+    }
+
+    public String getFactor10() 
+    {
+        return factor10;
+    }
+    public void setFactor11(String factor11) 
+    {
+        this.factor11 = factor11;
+    }
+
+    public String getFactor11() 
+    {
+        return factor11;
+    }
+    public void setFactor12(String factor12) 
+    {
+        this.factor12 = factor12;
+    }
+
+    public String getFactor12() 
+    {
+        return factor12;
+    }
+    public void setFactor13(String factor13) 
+    {
+        this.factor13 = factor13;
+    }
+
+    public String getFactor13() 
+    {
+        return factor13;
+    }
+    public void setFactor14(String factor14) 
+    {
+        this.factor14 = factor14;
+    }
+
+    public String getFactor14() 
+    {
+        return factor14;
+    }
+    public void setFactor15(String factor15) 
+    {
+        this.factor15 = factor15;
+    }
+
+    public String getFactor15() 
+    {
+        return factor15;
+    }
+    public void setFactor16(String factor16) 
+    {
+        this.factor16 = factor16;
+    }
+
+    public String getFactor16() 
+    {
+        return factor16;
+    }
+    public void setFactor17(String factor17) 
+    {
+        this.factor17 = factor17;
+    }
+
+    public String getFactor17() 
+    {
+        return factor17;
+    }
+    public void setFactor18(String factor18) 
+    {
+        this.factor18 = factor18;
+    }
+
+    public String getFactor18() 
+    {
+        return factor18;
+    }
+    public void setFactor19(String factor19) 
+    {
+        this.factor19 = factor19;
+    }
+
+    public String getFactor19() 
+    {
+        return factor19;
+    }
+    public void setFactor20(String factor20) 
+    {
+        this.factor20 = factor20;
+    }
+
+    public String getFactor20() 
+    {
+        return factor20;
+    }
+    public void setFactor21(String factor21) 
+    {
+        this.factor21 = factor21;
+    }
+
+    public String getFactor21() 
+    {
+        return factor21;
+    }
+    public void setFactor22(String factor22) 
+    {
+        this.factor22 = factor22;
+    }
+
+    public String getFactor22() 
+    {
+        return factor22;
+    }
+    public void setFactor23(String factor23) 
+    {
+        this.factor23 = factor23;
+    }
+
+    public String getFactor23() 
+    {
+        return factor23;
+    }
+    public void setFactor24(String factor24) 
+    {
+        this.factor24 = factor24;
+    }
+
+    public String getFactor24() 
+    {
+        return factor24;
+    }
+    public void setFactor25(String factor25) 
+    {
+        this.factor25 = factor25;
+    }
+
+    public String getFactor25() 
+    {
+        return factor25;
+    }
+    public void setFactor26(String factor26) 
+    {
+        this.factor26 = factor26;
+    }
+
+    public String getFactor26() 
+    {
+        return factor26;
+    }
+    public void setFactor27(String factor27) 
+    {
+        this.factor27 = factor27;
+    }
+
+    public String getFactor27() 
+    {
+        return factor27;
+    }
+    public void setFactor28(String factor28) 
+    {
+        this.factor28 = factor28;
+    }
+
+    public String getFactor28() 
+    {
+        return factor28;
+    }
+    public void setFactor29(String factor29) 
+    {
+        this.factor29 = factor29;
+    }
+
+    public String getFactor29() 
+    {
+        return factor29;
+    }
+    public void setFactor30(String factor30) 
+    {
+        this.factor30 = factor30;
+    }
+
+    public String getFactor30() 
+    {
+        return factor30;
+    }
+    public void setFactor31(String factor31) 
+    {
+        this.factor31 = factor31;
+    }
+
+    public String getFactor31() 
+    {
+        return factor31;
+    }
+    public void setFactor32(String factor32) 
+    {
+        this.factor32 = factor32;
+    }
+
+    public String getFactor32() 
+    {
+        return factor32;
+    }
+    public void setFactor33(String factor33) 
+    {
+        this.factor33 = factor33;
+    }
+
+    public String getFactor33() 
+    {
+        return factor33;
+    }
+    public void setFactor34(String factor34) 
+    {
+        this.factor34 = factor34;
+    }
+
+    public String getFactor34() 
+    {
+        return factor34;
+    }
+    public void setFactor35(String factor35) 
+    {
+        this.factor35 = factor35;
+    }
+
+    public String getFactor35() 
+    {
+        return factor35;
+    }
+    public void setFactor36(String factor36) 
+    {
+        this.factor36 = factor36;
+    }
+
+    public String getFactor36() 
+    {
+        return factor36;
+    }
+    public void setFactor37(String factor37) 
+    {
+        this.factor37 = factor37;
+    }
+
+    public String getFactor37() 
+    {
+        return factor37;
+    }
+    public void setFactor38(String factor38) 
+    {
+        this.factor38 = factor38;
+    }
+
+    public String getFactor38() 
+    {
+        return factor38;
+    }
+    public void setFactor39(String factor39) 
+    {
+        this.factor39 = factor39;
+    }
+
+    public String getFactor39() 
+    {
+        return factor39;
+    }
+    public void setFactor40(String factor40) 
+    {
+        this.factor40 = factor40;
+    }
+
+    public String getFactor40() 
+    {
+        return factor40;
+    }
+    public void setFactor41(String factor41) 
+    {
+        this.factor41 = factor41;
+    }
+
+    public String getFactor41() 
+    {
+        return factor41;
+    }
+    public void setFactor42(String factor42) 
+    {
+        this.factor42 = factor42;
+    }
+
+    public String getFactor42() 
+    {
+        return factor42;
+    }
+    public void setFactor43(String factor43) 
+    {
+        this.factor43 = factor43;
+    }
+
+    public String getFactor43() 
+    {
+        return factor43;
+    }
+    public void setFactor44(String factor44) 
+    {
+        this.factor44 = factor44;
+    }
+
+    public String getFactor44() 
+    {
+        return factor44;
+    }
+    public void setFinalGrade(String finalGrade) 
+    {
+        this.finalGrade = finalGrade;
+    }
+
+    public String getFinalGrade() 
+    {
+        return finalGrade;
+    }
+    public void setCalculatedGrade(String calculatedGrade) 
+    {
+        this.calculatedGrade = calculatedGrade;
+    }
+
+    public String getCalculatedGrade() 
+    {
+        return calculatedGrade;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("taskId", getTaskId())
+            .append("factoryName", getFactoryName())
+            .append("factor1", getFactor1())
+            .append("factor2", getFactor2())
+            .append("factor3", getFactor3())
+            .append("factor4", getFactor4())
+            .append("factor5", getFactor5())
+            .append("factor6", getFactor6())
+            .append("factor7", getFactor7())
+            .append("factor8", getFactor8())
+            .append("factor9", getFactor9())
+            .append("factor10", getFactor10())
+            .append("factor11", getFactor11())
+            .append("factor12", getFactor12())
+            .append("factor13", getFactor13())
+            .append("factor14", getFactor14())
+            .append("factor15", getFactor15())
+            .append("factor16", getFactor16())
+            .append("factor17", getFactor17())
+            .append("factor18", getFactor18())
+            .append("factor19", getFactor19())
+            .append("factor20", getFactor20())
+            .append("factor21", getFactor21())
+            .append("factor22", getFactor22())
+            .append("factor23", getFactor23())
+            .append("factor24", getFactor24())
+            .append("factor25", getFactor25())
+            .append("factor26", getFactor26())
+            .append("factor27", getFactor27())
+            .append("factor28", getFactor28())
+            .append("factor29", getFactor29())
+            .append("factor30", getFactor30())
+            .append("factor31", getFactor31())
+            .append("factor32", getFactor32())
+            .append("factor33", getFactor33())
+            .append("factor34", getFactor34())
+            .append("factor35", getFactor35())
+            .append("factor36", getFactor36())
+            .append("factor37", getFactor37())
+            .append("factor38", getFactor38())
+            .append("factor39", getFactor39())
+            .append("factor40", getFactor40())
+            .append("factor41", getFactor41())
+            .append("factor42", getFactor42())
+            .append("factor43", getFactor43())
+            .append("factor44", getFactor44())
+            .append("finalGrade", getFinalGrade())
+            .append("calculatedGrade", getCalculatedGrade())
+            .toString();
+    }
+}

+ 61 - 0
cirs-biz/src/main/java/com/cirs/biz/mapper/FactoryScoreMapper.java

@@ -0,0 +1,61 @@
+package com.cirs.biz.mapper;
+
+import java.util.List;
+import com.cirs.biz.domain.FactoryScore;
+
+/**
+ * 厂家得分Mapper接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface FactoryScoreMapper 
+{
+    /**
+     * 查询厂家得分
+     * 
+     * @param id 厂家得分主键
+     * @return 厂家得分
+     */
+    public FactoryScore selectFactoryScoreById(Long id);
+
+    /**
+     * 查询厂家得分列表
+     * 
+     * @param factoryScore 厂家得分
+     * @return 厂家得分集合
+     */
+    public List<FactoryScore> selectFactoryScoreList(FactoryScore factoryScore);
+
+    /**
+     * 新增厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    public int insertFactoryScore(FactoryScore factoryScore);
+
+    /**
+     * 修改厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    public int updateFactoryScore(FactoryScore factoryScore);
+
+    /**
+     * 删除厂家得分
+     * 
+     * @param id 厂家得分主键
+     * @return 结果
+     */
+    public int deleteFactoryScoreById(Long id);
+
+    /**
+     * 批量删除厂家得分
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFactoryScoreByIds(Long[] ids);
+}

+ 3 - 1
cirs-biz/src/main/java/com/cirs/biz/mapper/TElectronComponentMapper.java

@@ -1,6 +1,8 @@
 package com.cirs.biz.mapper;
 
 import java.util.List;
+
+import com.cirs.biz.domain.ElectronComponent;
 import com.cirs.biz.domain.TElectronComponent;
 import org.apache.ibatis.annotations.Param;
 
@@ -62,5 +64,5 @@ public interface TElectronComponentMapper
 
     public List<TElectronComponent> getAll();
 
-    public List<String> getDetailById(@Param("id") Long id);
+    public ElectronComponent getDetailById(@Param("id") Long id);
 }

+ 66 - 0
cirs-biz/src/main/java/com/cirs/biz/mapper/TVerificationScoretaskDetailMapper.java

@@ -0,0 +1,66 @@
+package com.cirs.biz.mapper;
+
+import java.util.List;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 打分算法验证详情Mapper接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface TVerificationScoretaskDetailMapper 
+{
+    /**
+     * 查询打分算法验证详情
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 打分算法验证详情
+     */
+    public TVerificationScoretaskDetail selectTVerificationScoretaskDetailById(Long id);
+
+    /**
+     * 查询打分算法验证详情列表
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 打分算法验证详情集合
+     */
+    public List<TVerificationScoretaskDetail> selectTVerificationScoretaskDetailList(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 新增打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    public int insertTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 修改打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    public int updateTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 删除打分算法验证详情
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskDetailById(Long id);
+
+    /**
+     * 批量删除打分算法验证详情
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskDetailByIds(Long[] ids);
+
+    public List<TVerificationScoretaskDetail> getByscoretaskid(Long taskid);
+
+    public List<TVerificationScoretaskDetail> selectTVerificationScoreaskDetailByTaskIds(@Param("taskids") List<Long> taskids);
+}

+ 64 - 0
cirs-biz/src/main/java/com/cirs/biz/mapper/TVerificationScoretaskMapper.java

@@ -0,0 +1,64 @@
+package com.cirs.biz.mapper;
+
+import java.util.List;
+import com.cirs.biz.domain.TVerificationScoretask;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+
+/**
+ * 打分算法验证任务Mapper接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface TVerificationScoretaskMapper 
+{
+    /**
+     * 查询打分算法验证任务
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 打分算法验证任务
+     */
+    public TVerificationScoretask selectTVerificationScoretaskById(Long id);
+
+    /**
+     * 查询打分算法验证任务列表
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 打分算法验证任务集合
+     */
+    public List<TVerificationScoretask> selectTVerificationScoretaskList(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 新增打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    public int insertTVerificationScoretask(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 修改打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    public int updateTVerificationScoretask(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 删除打分算法验证任务
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskById(Long id);
+
+    /**
+     * 批量删除打分算法验证任务
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskByIds(Long[] ids);
+
+
+}

+ 63 - 0
cirs-biz/src/main/java/com/cirs/biz/service/IFactoryScoreService.java

@@ -0,0 +1,63 @@
+package com.cirs.biz.service;
+
+import java.util.List;
+import com.cirs.biz.domain.FactoryScore;
+
+/**
+ * 厂家得分Service接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface IFactoryScoreService 
+{
+    /**
+     * 查询厂家得分
+     * 
+     * @param id 厂家得分主键
+     * @return 厂家得分
+     */
+    public FactoryScore selectFactoryScoreById(Long id);
+
+    /**
+     * 查询厂家得分列表
+     * 
+     * @param factoryScore 厂家得分
+     * @return 厂家得分集合
+     */
+    public List<FactoryScore> selectFactoryScoreList(FactoryScore factoryScore);
+
+    /**
+     * 新增厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    public int insertFactoryScore(FactoryScore factoryScore);
+
+    /**
+     * 修改厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    public int updateFactoryScore(FactoryScore factoryScore);
+
+    /**
+     * 批量删除厂家得分
+     * 
+     * @param ids 需要删除的厂家得分主键集合
+     * @return 结果
+     */
+    public int deleteFactoryScoreByIds(Long[] ids);
+
+    /**
+     * 删除厂家得分信息
+     * 
+     * @param id 厂家得分主键
+     * @return 结果
+     */
+    public int deleteFactoryScoreById(Long id);
+
+    public String importTrain(List<FactoryScore> scoreList, boolean updateSupport, String operName);
+}

+ 67 - 0
cirs-biz/src/main/java/com/cirs/biz/service/ITVerificationScoretaskDetailService.java

@@ -0,0 +1,67 @@
+package com.cirs.biz.service;
+
+import java.util.List;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+
+/**
+ * 打分算法验证详情Service接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface ITVerificationScoretaskDetailService 
+{
+    /**
+     * 查询打分算法验证详情
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 打分算法验证详情
+     */
+    public TVerificationScoretaskDetail selectTVerificationScoretaskDetailById(Long id);
+
+    /**
+     * 查询打分算法验证详情列表
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 打分算法验证详情集合
+     */
+    public List<TVerificationScoretaskDetail> selectTVerificationScoretaskDetailList(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 新增打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    public int insertTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 修改打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    public int updateTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail);
+
+    /**
+     * 批量删除打分算法验证详情
+     * 
+     * @param ids 需要删除的打分算法验证详情主键集合
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskDetailByIds(Long[] ids);
+
+    /**
+     * 删除打分算法验证详情信息
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskDetailById(Long id);
+
+    public String importTaskDetail(List<TVerificationScoretaskDetail> taskDetailList, boolean updateSupport, String operName, String fileName);
+
+    public List<TVerificationScoretaskDetail> getByscoretaskid(Long taskid);
+
+    public List<TVerificationScoretaskDetail> selectTVerificationScoreaskDetailByTaskIds(List<Long> taskids);
+}

+ 64 - 0
cirs-biz/src/main/java/com/cirs/biz/service/ITVerificationScoretaskService.java

@@ -0,0 +1,64 @@
+package com.cirs.biz.service;
+
+import java.util.List;
+import com.cirs.biz.domain.TVerificationScoretask;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+
+/**
+ * 打分算法验证任务Service接口
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+public interface ITVerificationScoretaskService 
+{
+    /**
+     * 查询打分算法验证任务
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 打分算法验证任务
+     */
+    public TVerificationScoretask selectTVerificationScoretaskById(Long id);
+
+    /**
+     * 查询打分算法验证任务列表
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 打分算法验证任务集合
+     */
+    public List<TVerificationScoretask> selectTVerificationScoretaskList(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 新增打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    public int insertTVerificationScoretask(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 修改打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    public int updateTVerificationScoretask(TVerificationScoretask tVerificationScoretask);
+
+    /**
+     * 批量删除打分算法验证任务
+     * 
+     * @param ids 需要删除的打分算法验证任务主键集合
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskByIds(Long[] ids);
+
+    /**
+     * 删除打分算法验证任务信息
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 结果
+     */
+    public int deleteTVerificationScoretaskById(Long id);
+
+
+}

+ 149 - 0
cirs-biz/src/main/java/com/cirs/biz/service/impl/FactoryScoreServiceImpl.java

@@ -0,0 +1,149 @@
+package com.cirs.biz.service.impl;
+
+import java.util.List;
+
+import com.cirs.biz.domain.SysTrain;
+import com.cirs.common.exception.ServiceException;
+import com.cirs.common.utils.StringUtils;
+import com.cirs.common.utils.bean.BeanValidators;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.cirs.biz.mapper.FactoryScoreMapper;
+import com.cirs.biz.domain.FactoryScore;
+import com.cirs.biz.service.IFactoryScoreService;
+
+import javax.validation.Validator;
+
+/**
+ * 厂家得分Service业务层处理
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@Service
+public class FactoryScoreServiceImpl implements IFactoryScoreService 
+{
+    @Autowired
+    private FactoryScoreMapper factoryScoreMapper;
+
+    private static final Logger log = LoggerFactory.getLogger(FactoryScoreServiceImpl.class);
+
+    @Autowired
+    protected Validator validator;
+    /**
+     * 查询厂家得分
+     * 
+     * @param id 厂家得分主键
+     * @return 厂家得分
+     */
+    @Override
+    public FactoryScore selectFactoryScoreById(Long id)
+    {
+        return factoryScoreMapper.selectFactoryScoreById(id);
+    }
+
+    /**
+     * 查询厂家得分列表
+     * 
+     * @param factoryScore 厂家得分
+     * @return 厂家得分
+     */
+    @Override
+    public List<FactoryScore> selectFactoryScoreList(FactoryScore factoryScore)
+    {
+        return factoryScoreMapper.selectFactoryScoreList(factoryScore);
+    }
+
+    /**
+     * 新增厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    @Override
+    public int insertFactoryScore(FactoryScore factoryScore)
+    {
+        return factoryScoreMapper.insertFactoryScore(factoryScore);
+    }
+
+    /**
+     * 修改厂家得分
+     * 
+     * @param factoryScore 厂家得分
+     * @return 结果
+     */
+    @Override
+    public int updateFactoryScore(FactoryScore factoryScore)
+    {
+        return factoryScoreMapper.updateFactoryScore(factoryScore);
+    }
+
+    /**
+     * 批量删除厂家得分
+     * 
+     * @param ids 需要删除的厂家得分主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFactoryScoreByIds(Long[] ids)
+    {
+        return factoryScoreMapper.deleteFactoryScoreByIds(ids);
+    }
+
+    /**
+     * 删除厂家得分信息
+     * 
+     * @param id 厂家得分主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFactoryScoreById(Long id)
+    {
+        return factoryScoreMapper.deleteFactoryScoreById(id);
+    }
+
+    @Override
+    public String importTrain(List<FactoryScore> scoreList, boolean updateSupport, String operName) {
+        if (StringUtils.isNull(scoreList) || scoreList.size() == 0)
+        {
+            throw new ServiceException("导入元器件数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+
+        for (FactoryScore score : scoreList)
+        {
+            try
+            {
+
+                BeanValidators.validateWithException(validator, score);
+                score.setCreateBy(operName);
+                factoryScoreMapper.insertFactoryScore(score);
+                successNum++;
+                successMsg.append("<br/>" + successNum + "、训练数据 " + score.getId() + " 导入成功");
+
+            }
+            catch (Exception e)
+            {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、训练数据 " + score.getId() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
+}

+ 3 - 2
cirs-biz/src/main/java/com/cirs/biz/service/impl/TElectronComponentServiceImpl.java

@@ -2,6 +2,7 @@ package com.cirs.biz.service.impl;
 
 import java.util.List;
 
+import com.cirs.biz.domain.ElectronComponent;
 import com.cirs.biz.domain.TVerificationTask;
 import com.cirs.biz.mapper.TVerificationTaskMapper;
 import com.cirs.common.exception.ServiceException;
@@ -158,7 +159,7 @@ public class TElectronComponentServiceImpl implements ITElectronComponentService
 
     @Override
     public String getDetailById(Long id) {
-        List<String> detail = tElectronComponentMapper.getDetailById(id);
-        return detail.get(0)+"-"+detail.get(1)+"-"+detail.get(2);
+        ElectronComponent detail = tElectronComponentMapper.getDetailById(id);
+        return detail.getComponent_name()+"-"+detail.getComponent_model()+"-"+detail.getQuality_grade();
     }
 }

+ 181 - 0
cirs-biz/src/main/java/com/cirs/biz/service/impl/TVerificationScoretaskDetailServiceImpl.java

@@ -0,0 +1,181 @@
+package com.cirs.biz.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import com.cirs.biz.domain.TVerificationScoretask;
+import com.cirs.biz.domain.TVerificationTask;
+import com.cirs.biz.domain.TVerificationTaskDetail;
+import com.cirs.biz.mapper.TVerificationScoretaskMapper;
+import com.cirs.common.exception.ServiceException;
+import com.cirs.common.utils.StringUtils;
+import com.cirs.common.utils.bean.BeanValidators;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.cirs.biz.mapper.TVerificationScoretaskDetailMapper;
+import com.cirs.biz.domain.TVerificationScoretaskDetail;
+import com.cirs.biz.service.ITVerificationScoretaskDetailService;
+
+import javax.validation.Validator;
+
+/**
+ * 打分算法验证详情Service业务层处理
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@Service
+public class TVerificationScoretaskDetailServiceImpl implements ITVerificationScoretaskDetailService 
+{
+    private static final Logger log = LoggerFactory.getLogger(TVerificationScoretaskDetailServiceImpl.class);
+    @Autowired
+    private TVerificationScoretaskDetailMapper tVerificationScoretaskDetailMapper;
+
+    @Autowired
+    private TVerificationScoretaskMapper tVerificationScoretaskMapper;
+
+    @Autowired
+    protected Validator validator;
+    /**
+     * 查询打分算法验证详情
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 打分算法验证详情
+     */
+    @Override
+    public TVerificationScoretaskDetail selectTVerificationScoretaskDetailById(Long id)
+    {
+        return tVerificationScoretaskDetailMapper.selectTVerificationScoretaskDetailById(id);
+    }
+
+    /**
+     * 查询打分算法验证详情列表
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 打分算法验证详情
+     */
+    @Override
+    public List<TVerificationScoretaskDetail> selectTVerificationScoretaskDetailList(TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        return tVerificationScoretaskDetailMapper.selectTVerificationScoretaskDetailList(tVerificationScoretaskDetail);
+    }
+
+    /**
+     * 新增打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    @Override
+    public int insertTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        return tVerificationScoretaskDetailMapper.insertTVerificationScoretaskDetail(tVerificationScoretaskDetail);
+    }
+
+    /**
+     * 修改打分算法验证详情
+     * 
+     * @param tVerificationScoretaskDetail 打分算法验证详情
+     * @return 结果
+     */
+    @Override
+    public int updateTVerificationScoretaskDetail(TVerificationScoretaskDetail tVerificationScoretaskDetail)
+    {
+        return tVerificationScoretaskDetailMapper.updateTVerificationScoretaskDetail(tVerificationScoretaskDetail);
+    }
+
+    /**
+     * 批量删除打分算法验证详情
+     * 
+     * @param ids 需要删除的打分算法验证详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTVerificationScoretaskDetailByIds(Long[] ids)
+    {
+        return tVerificationScoretaskDetailMapper.deleteTVerificationScoretaskDetailByIds(ids);
+    }
+
+    /**
+     * 删除打分算法验证详情信息
+     * 
+     * @param id 打分算法验证详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTVerificationScoretaskDetailById(Long id)
+    {
+        return tVerificationScoretaskDetailMapper.deleteTVerificationScoretaskDetailById(id);
+    }
+
+    @Override
+    public String importTaskDetail(List<TVerificationScoretaskDetail> taskDetailList, boolean updateSupport, String operName, String fileName) {
+        if (StringUtils.isNull(taskDetailList) || taskDetailList.size() == 0)
+        {
+            throw new ServiceException("导入任务数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+
+        TVerificationScoretask task = new TVerificationScoretask();
+
+        task.setCreateBy(operName);//setCreateBy(operName)
+        task.setTaskStatus("未运行");
+
+        task.setTaskName(fileName);
+        task.setCreateTime(new Date());
+
+        tVerificationScoretaskMapper.insertTVerificationScoretask(task);
+
+        for (TVerificationScoretaskDetail taskDetail : taskDetailList)
+        {
+            try
+            {
+
+                BeanValidators.validateWithException(validator, taskDetail);
+                taskDetail.setCreateBy(operName);
+
+                taskDetail.setTaskId(task.getId());//任务标识
+
+                tVerificationScoretaskDetailMapper.insertTVerificationScoretaskDetail(taskDetail);
+                successNum++;
+                successMsg.append("<br/>" + successNum + "、任务 " + taskDetail.getTaskId() + "详情导入成功");
+
+            }
+            catch (Exception e)
+            {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、任务 " + taskDetail.getTaskId() + " 详情导入失败:";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        task.setSubtaskNum((long) successNum);
+        tVerificationScoretaskMapper.updateTVerificationScoretask(task);
+
+        return successMsg.toString();
+    }
+
+    @Override
+    public List<TVerificationScoretaskDetail> getByscoretaskid(Long taskid) {
+        return tVerificationScoretaskDetailMapper.getByscoretaskid(taskid);
+    }
+
+    @Override
+    public List<TVerificationScoretaskDetail> selectTVerificationScoreaskDetailByTaskIds(List<Long> taskids) {
+        return tVerificationScoretaskDetailMapper.selectTVerificationScoreaskDetailByTaskIds(taskids);
+    }
+}

+ 96 - 0
cirs-biz/src/main/java/com/cirs/biz/service/impl/TVerificationScoretaskServiceImpl.java

@@ -0,0 +1,96 @@
+package com.cirs.biz.service.impl;
+
+import java.util.List;
+import com.cirs.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.cirs.biz.mapper.TVerificationScoretaskMapper;
+import com.cirs.biz.domain.TVerificationScoretask;
+import com.cirs.biz.service.ITVerificationScoretaskService;
+
+/**
+ * 打分算法验证任务Service业务层处理
+ * 
+ * @author allen
+ * @date 2023-12-10
+ */
+@Service
+public class TVerificationScoretaskServiceImpl implements ITVerificationScoretaskService 
+{
+    @Autowired
+    private TVerificationScoretaskMapper tVerificationScoretaskMapper;
+
+    /**
+     * 查询打分算法验证任务
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 打分算法验证任务
+     */
+    @Override
+    public TVerificationScoretask selectTVerificationScoretaskById(Long id)
+    {
+        return tVerificationScoretaskMapper.selectTVerificationScoretaskById(id);
+    }
+
+    /**
+     * 查询打分算法验证任务列表
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 打分算法验证任务
+     */
+    @Override
+    public List<TVerificationScoretask> selectTVerificationScoretaskList(TVerificationScoretask tVerificationScoretask)
+    {
+        return tVerificationScoretaskMapper.selectTVerificationScoretaskList(tVerificationScoretask);
+    }
+
+    /**
+     * 新增打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    @Override
+    public int insertTVerificationScoretask(TVerificationScoretask tVerificationScoretask)
+    {
+        tVerificationScoretask.setCreateTime(DateUtils.getNowDate());
+        return tVerificationScoretaskMapper.insertTVerificationScoretask(tVerificationScoretask);
+    }
+
+    /**
+     * 修改打分算法验证任务
+     * 
+     * @param tVerificationScoretask 打分算法验证任务
+     * @return 结果
+     */
+    @Override
+    public int updateTVerificationScoretask(TVerificationScoretask tVerificationScoretask)
+    {
+        tVerificationScoretask.setUpdateTime(DateUtils.getNowDate());
+        return tVerificationScoretaskMapper.updateTVerificationScoretask(tVerificationScoretask);
+    }
+
+    /**
+     * 批量删除打分算法验证任务
+     * 
+     * @param ids 需要删除的打分算法验证任务主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTVerificationScoretaskByIds(Long[] ids)
+    {
+        return tVerificationScoretaskMapper.deleteTVerificationScoretaskByIds(ids);
+    }
+
+    /**
+     * 删除打分算法验证任务信息
+     * 
+     * @param id 打分算法验证任务主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTVerificationScoretaskById(Long id)
+    {
+        return tVerificationScoretaskMapper.deleteTVerificationScoretaskById(id);
+    }
+}

+ 281 - 0
cirs-biz/src/main/resources/mapper/biz/FactoryScoreMapper.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cirs.biz.mapper.FactoryScoreMapper">
+    
+    <resultMap type="FactoryScore" id="FactoryScoreResult">
+        <result property="id"    column="id"    />
+        <result property="factoryName"    column="factory_name"    />
+        <result property="factor1"    column="factor1"    />
+        <result property="factor2"    column="factor2"    />
+        <result property="factor3"    column="factor3"    />
+        <result property="factor4"    column="factor4"    />
+        <result property="factor5"    column="factor5"    />
+        <result property="factor6"    column="factor6"    />
+        <result property="factor7"    column="factor7"    />
+        <result property="factor8"    column="factor8"    />
+        <result property="factor9"    column="factor9"    />
+        <result property="factor10"    column="factor10"    />
+        <result property="factor11"    column="factor11"    />
+        <result property="factor12"    column="factor12"    />
+        <result property="factor13"    column="factor13"    />
+        <result property="factor14"    column="factor14"    />
+        <result property="factor15"    column="factor15"    />
+        <result property="factor16"    column="factor16"    />
+        <result property="factor17"    column="factor17"    />
+        <result property="factor18"    column="factor18"    />
+        <result property="factor19"    column="factor19"    />
+        <result property="factor20"    column="factor20"    />
+        <result property="factor21"    column="factor21"    />
+        <result property="factor22"    column="factor22"    />
+        <result property="factor23"    column="factor23"    />
+        <result property="factor24"    column="factor24"    />
+        <result property="factor25"    column="factor25"    />
+        <result property="factor26"    column="factor26"    />
+        <result property="factor27"    column="factor27"    />
+        <result property="factor28"    column="factor28"    />
+        <result property="factor29"    column="factor29"    />
+        <result property="factor30"    column="factor30"    />
+        <result property="factor31"    column="factor31"    />
+        <result property="factor32"    column="factor32"    />
+        <result property="factor33"    column="factor33"    />
+        <result property="factor34"    column="factor34"    />
+        <result property="factor35"    column="factor35"    />
+        <result property="factor36"    column="factor36"    />
+        <result property="factor37"    column="factor37"    />
+        <result property="factor38"    column="factor38"    />
+        <result property="factor39"    column="factor39"    />
+        <result property="factor40"    column="factor40"    />
+        <result property="factor41"    column="factor41"    />
+        <result property="factor42"    column="factor42"    />
+        <result property="factor43"    column="factor43"    />
+        <result property="factor44"    column="factor44"    />
+        <result property="finalGrade"    column="final_grade"    />
+    </resultMap>
+
+    <sql id="selectFactoryScoreVo">
+        select id, factory_name, factor1, factor2, factor3, factor4, factor5, factor6, factor7, factor8, factor9, factor10, factor11, factor12, factor13, factor14, factor15, factor16, factor17, factor18, factor19, factor20, factor21, factor22, factor23, factor24, factor25, factor26, factor27, factor28, factor29, factor30, factor31, factor32, factor33, factor34, factor35, factor36, factor37, factor38, factor39, factor40, factor41, factor42, factor43, factor44, final_grade from factory_score
+    </sql>
+
+    <select id="selectFactoryScoreList" parameterType="FactoryScore" resultMap="FactoryScoreResult">
+        <include refid="selectFactoryScoreVo"/>
+        <where>  
+            <if test="factoryName != null  and factoryName != ''"> and factory_name like concat('%', #{factoryName}, '%')</if>
+            <if test="factor1 != null  and factor1 != ''"> and factor1 = #{factor1}</if>
+            <if test="factor2 != null  and factor2 != ''"> and factor2 = #{factor2}</if>
+            <if test="factor3 != null  and factor3 != ''"> and factor3 = #{factor3}</if>
+            <if test="factor4 != null  and factor4 != ''"> and factor4 = #{factor4}</if>
+            <if test="factor5 != null  and factor5 != ''"> and factor5 = #{factor5}</if>
+            <if test="factor6 != null  and factor6 != ''"> and factor6 = #{factor6}</if>
+            <if test="factor7 != null  and factor7 != ''"> and factor7 = #{factor7}</if>
+            <if test="factor8 != null  and factor8 != ''"> and factor8 = #{factor8}</if>
+            <if test="factor9 != null  and factor9 != ''"> and factor9 = #{factor9}</if>
+            <if test="factor10 != null  and factor10 != ''"> and factor10 = #{factor10}</if>
+            <if test="factor11 != null  and factor11 != ''"> and factor11 = #{factor11}</if>
+            <if test="factor12 != null  and factor12 != ''"> and factor12 = #{factor12}</if>
+            <if test="factor13 != null  and factor13 != ''"> and factor13 = #{factor13}</if>
+            <if test="factor14 != null  and factor14 != ''"> and factor14 = #{factor14}</if>
+            <if test="factor15 != null  and factor15 != ''"> and factor15 = #{factor15}</if>
+            <if test="factor16 != null  and factor16 != ''"> and factor16 = #{factor16}</if>
+            <if test="factor17 != null  and factor17 != ''"> and factor17 = #{factor17}</if>
+            <if test="factor18 != null  and factor18 != ''"> and factor18 = #{factor18}</if>
+            <if test="factor19 != null  and factor19 != ''"> and factor19 = #{factor19}</if>
+            <if test="factor20 != null  and factor20 != ''"> and factor20 = #{factor20}</if>
+            <if test="factor21 != null  and factor21 != ''"> and factor21 = #{factor21}</if>
+            <if test="factor22 != null  and factor22 != ''"> and factor22 = #{factor22}</if>
+            <if test="factor23 != null  and factor23 != ''"> and factor23 = #{factor23}</if>
+            <if test="factor24 != null  and factor24 != ''"> and factor24 = #{factor24}</if>
+            <if test="factor25 != null  and factor25 != ''"> and factor25 = #{factor25}</if>
+            <if test="factor26 != null  and factor26 != ''"> and factor26 = #{factor26}</if>
+            <if test="factor27 != null  and factor27 != ''"> and factor27 = #{factor27}</if>
+            <if test="factor28 != null  and factor28 != ''"> and factor28 = #{factor28}</if>
+            <if test="factor29 != null  and factor29 != ''"> and factor29 = #{factor29}</if>
+            <if test="factor30 != null  and factor30 != ''"> and factor30 = #{factor30}</if>
+            <if test="factor31 != null  and factor31 != ''"> and factor31 = #{factor31}</if>
+            <if test="factor32 != null  and factor32 != ''"> and factor32 = #{factor32}</if>
+            <if test="factor33 != null  and factor33 != ''"> and factor33 = #{factor33}</if>
+            <if test="factor34 != null  and factor34 != ''"> and factor34 = #{factor34}</if>
+            <if test="factor35 != null  and factor35 != ''"> and factor35 = #{factor35}</if>
+            <if test="factor36 != null  and factor36 != ''"> and factor36 = #{factor36}</if>
+            <if test="factor37 != null  and factor37 != ''"> and factor37 = #{factor37}</if>
+            <if test="factor38 != null  and factor38 != ''"> and factor38 = #{factor38}</if>
+            <if test="factor39 != null  and factor39 != ''"> and factor39 = #{factor39}</if>
+            <if test="factor40 != null  and factor40 != ''"> and factor40 = #{factor40}</if>
+            <if test="factor41 != null  and factor41 != ''"> and factor41 = #{factor41}</if>
+            <if test="factor42 != null  and factor42 != ''"> and factor42 = #{factor42}</if>
+            <if test="factor43 != null  and factor43 != ''"> and factor43 = #{factor43}</if>
+            <if test="factor44 != null  and factor44 != ''"> and factor44 = #{factor44}</if>
+            <if test="finalGrade != null  and finalGrade != ''"> and final_grade = #{finalGrade}</if>
+        </where>
+    </select>
+    
+    <select id="selectFactoryScoreById" parameterType="Long" resultMap="FactoryScoreResult">
+        <include refid="selectFactoryScoreVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertFactoryScore" parameterType="FactoryScore" useGeneratedKeys="true" keyProperty="id">
+        insert into factory_score
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="factoryName != null">factory_name,</if>
+            <if test="factor1 != null">factor1,</if>
+            <if test="factor2 != null">factor2,</if>
+            <if test="factor3 != null">factor3,</if>
+            <if test="factor4 != null">factor4,</if>
+            <if test="factor5 != null">factor5,</if>
+            <if test="factor6 != null">factor6,</if>
+            <if test="factor7 != null">factor7,</if>
+            <if test="factor8 != null">factor8,</if>
+            <if test="factor9 != null">factor9,</if>
+            <if test="factor10 != null">factor10,</if>
+            <if test="factor11 != null">factor11,</if>
+            <if test="factor12 != null">factor12,</if>
+            <if test="factor13 != null">factor13,</if>
+            <if test="factor14 != null">factor14,</if>
+            <if test="factor15 != null">factor15,</if>
+            <if test="factor16 != null">factor16,</if>
+            <if test="factor17 != null">factor17,</if>
+            <if test="factor18 != null">factor18,</if>
+            <if test="factor19 != null">factor19,</if>
+            <if test="factor20 != null">factor20,</if>
+            <if test="factor21 != null">factor21,</if>
+            <if test="factor22 != null">factor22,</if>
+            <if test="factor23 != null">factor23,</if>
+            <if test="factor24 != null">factor24,</if>
+            <if test="factor25 != null">factor25,</if>
+            <if test="factor26 != null">factor26,</if>
+            <if test="factor27 != null">factor27,</if>
+            <if test="factor28 != null">factor28,</if>
+            <if test="factor29 != null">factor29,</if>
+            <if test="factor30 != null">factor30,</if>
+            <if test="factor31 != null">factor31,</if>
+            <if test="factor32 != null">factor32,</if>
+            <if test="factor33 != null">factor33,</if>
+            <if test="factor34 != null">factor34,</if>
+            <if test="factor35 != null">factor35,</if>
+            <if test="factor36 != null">factor36,</if>
+            <if test="factor37 != null">factor37,</if>
+            <if test="factor38 != null">factor38,</if>
+            <if test="factor39 != null">factor39,</if>
+            <if test="factor40 != null">factor40,</if>
+            <if test="factor41 != null">factor41,</if>
+            <if test="factor42 != null">factor42,</if>
+            <if test="factor43 != null">factor43,</if>
+            <if test="factor44 != null">factor44,</if>
+            <if test="finalGrade != null">final_grade,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="factoryName != null">#{factoryName},</if>
+            <if test="factor1 != null">#{factor1},</if>
+            <if test="factor2 != null">#{factor2},</if>
+            <if test="factor3 != null">#{factor3},</if>
+            <if test="factor4 != null">#{factor4},</if>
+            <if test="factor5 != null">#{factor5},</if>
+            <if test="factor6 != null">#{factor6},</if>
+            <if test="factor7 != null">#{factor7},</if>
+            <if test="factor8 != null">#{factor8},</if>
+            <if test="factor9 != null">#{factor9},</if>
+            <if test="factor10 != null">#{factor10},</if>
+            <if test="factor11 != null">#{factor11},</if>
+            <if test="factor12 != null">#{factor12},</if>
+            <if test="factor13 != null">#{factor13},</if>
+            <if test="factor14 != null">#{factor14},</if>
+            <if test="factor15 != null">#{factor15},</if>
+            <if test="factor16 != null">#{factor16},</if>
+            <if test="factor17 != null">#{factor17},</if>
+            <if test="factor18 != null">#{factor18},</if>
+            <if test="factor19 != null">#{factor19},</if>
+            <if test="factor20 != null">#{factor20},</if>
+            <if test="factor21 != null">#{factor21},</if>
+            <if test="factor22 != null">#{factor22},</if>
+            <if test="factor23 != null">#{factor23},</if>
+            <if test="factor24 != null">#{factor24},</if>
+            <if test="factor25 != null">#{factor25},</if>
+            <if test="factor26 != null">#{factor26},</if>
+            <if test="factor27 != null">#{factor27},</if>
+            <if test="factor28 != null">#{factor28},</if>
+            <if test="factor29 != null">#{factor29},</if>
+            <if test="factor30 != null">#{factor30},</if>
+            <if test="factor31 != null">#{factor31},</if>
+            <if test="factor32 != null">#{factor32},</if>
+            <if test="factor33 != null">#{factor33},</if>
+            <if test="factor34 != null">#{factor34},</if>
+            <if test="factor35 != null">#{factor35},</if>
+            <if test="factor36 != null">#{factor36},</if>
+            <if test="factor37 != null">#{factor37},</if>
+            <if test="factor38 != null">#{factor38},</if>
+            <if test="factor39 != null">#{factor39},</if>
+            <if test="factor40 != null">#{factor40},</if>
+            <if test="factor41 != null">#{factor41},</if>
+            <if test="factor42 != null">#{factor42},</if>
+            <if test="factor43 != null">#{factor43},</if>
+            <if test="factor44 != null">#{factor44},</if>
+            <if test="finalGrade != null">#{finalGrade},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFactoryScore" parameterType="FactoryScore">
+        update factory_score
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="factoryName != null">factory_name = #{factoryName},</if>
+            <if test="factor1 != null">factor1 = #{factor1},</if>
+            <if test="factor2 != null">factor2 = #{factor2},</if>
+            <if test="factor3 != null">factor3 = #{factor3},</if>
+            <if test="factor4 != null">factor4 = #{factor4},</if>
+            <if test="factor5 != null">factor5 = #{factor5},</if>
+            <if test="factor6 != null">factor6 = #{factor6},</if>
+            <if test="factor7 != null">factor7 = #{factor7},</if>
+            <if test="factor8 != null">factor8 = #{factor8},</if>
+            <if test="factor9 != null">factor9 = #{factor9},</if>
+            <if test="factor10 != null">factor10 = #{factor10},</if>
+            <if test="factor11 != null">factor11 = #{factor11},</if>
+            <if test="factor12 != null">factor12 = #{factor12},</if>
+            <if test="factor13 != null">factor13 = #{factor13},</if>
+            <if test="factor14 != null">factor14 = #{factor14},</if>
+            <if test="factor15 != null">factor15 = #{factor15},</if>
+            <if test="factor16 != null">factor16 = #{factor16},</if>
+            <if test="factor17 != null">factor17 = #{factor17},</if>
+            <if test="factor18 != null">factor18 = #{factor18},</if>
+            <if test="factor19 != null">factor19 = #{factor19},</if>
+            <if test="factor20 != null">factor20 = #{factor20},</if>
+            <if test="factor21 != null">factor21 = #{factor21},</if>
+            <if test="factor22 != null">factor22 = #{factor22},</if>
+            <if test="factor23 != null">factor23 = #{factor23},</if>
+            <if test="factor24 != null">factor24 = #{factor24},</if>
+            <if test="factor25 != null">factor25 = #{factor25},</if>
+            <if test="factor26 != null">factor26 = #{factor26},</if>
+            <if test="factor27 != null">factor27 = #{factor27},</if>
+            <if test="factor28 != null">factor28 = #{factor28},</if>
+            <if test="factor29 != null">factor29 = #{factor29},</if>
+            <if test="factor30 != null">factor30 = #{factor30},</if>
+            <if test="factor31 != null">factor31 = #{factor31},</if>
+            <if test="factor32 != null">factor32 = #{factor32},</if>
+            <if test="factor33 != null">factor33 = #{factor33},</if>
+            <if test="factor34 != null">factor34 = #{factor34},</if>
+            <if test="factor35 != null">factor35 = #{factor35},</if>
+            <if test="factor36 != null">factor36 = #{factor36},</if>
+            <if test="factor37 != null">factor37 = #{factor37},</if>
+            <if test="factor38 != null">factor38 = #{factor38},</if>
+            <if test="factor39 != null">factor39 = #{factor39},</if>
+            <if test="factor40 != null">factor40 = #{factor40},</if>
+            <if test="factor41 != null">factor41 = #{factor41},</if>
+            <if test="factor42 != null">factor42 = #{factor42},</if>
+            <if test="factor43 != null">factor43 = #{factor43},</if>
+            <if test="factor44 != null">factor44 = #{factor44},</if>
+            <if test="finalGrade != null">final_grade = #{finalGrade},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFactoryScoreById" parameterType="Long">
+        delete from factory_score where id = #{id}
+    </delete>
+
+    <delete id="deleteFactoryScoreByIds" parameterType="String">
+        delete from factory_score where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 2 - 2
cirs-biz/src/main/resources/mapper/biz/TElectronComponentMapper.xml

@@ -89,8 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getAll" resultType="com.cirs.biz.domain.TElectronComponent" resultMap="TElectronComponentResult">
         <include refid="selectTElectronComponentVo"/>
     </select>
-    <select id="getDetailById" resultType="java.lang.String">
-        select component_name,component_model,quality_grade from from t_electron_component where id = #{id}
+    <select id="getDetailById" resultType="ElectronComponent">
+        select component_name,component_model,quality_grade from t_electron_component where id = #{id}
     </select>
 
     <insert id="insertTElectronComponent" parameterType="TElectronComponent" useGeneratedKeys="true" keyProperty="id">

+ 304 - 0
cirs-biz/src/main/resources/mapper/biz/TVerificationScoretaskDetailMapper.xml

@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cirs.biz.mapper.TVerificationScoretaskDetailMapper">
+    
+    <resultMap type="TVerificationScoretaskDetail" id="TVerificationScoretaskDetailResult">
+        <result property="id"    column="id"    />
+        <result property="taskId"    column="task_id"    />
+        <result property="factoryName"    column="factory_name"    />
+        <result property="factor1"    column="factor1"    />
+        <result property="factor2"    column="factor2"    />
+        <result property="factor3"    column="factor3"    />
+        <result property="factor4"    column="factor4"    />
+        <result property="factor5"    column="factor5"    />
+        <result property="factor6"    column="factor6"    />
+        <result property="factor7"    column="factor7"    />
+        <result property="factor8"    column="factor8"    />
+        <result property="factor9"    column="factor9"    />
+        <result property="factor10"    column="factor10"    />
+        <result property="factor11"    column="factor11"    />
+        <result property="factor12"    column="factor12"    />
+        <result property="factor13"    column="factor13"    />
+        <result property="factor14"    column="factor14"    />
+        <result property="factor15"    column="factor15"    />
+        <result property="factor16"    column="factor16"    />
+        <result property="factor17"    column="factor17"    />
+        <result property="factor18"    column="factor18"    />
+        <result property="factor19"    column="factor19"    />
+        <result property="factor20"    column="factor20"    />
+        <result property="factor21"    column="factor21"    />
+        <result property="factor22"    column="factor22"    />
+        <result property="factor23"    column="factor23"    />
+        <result property="factor24"    column="factor24"    />
+        <result property="factor25"    column="factor25"    />
+        <result property="factor26"    column="factor26"    />
+        <result property="factor27"    column="factor27"    />
+        <result property="factor28"    column="factor28"    />
+        <result property="factor29"    column="factor29"    />
+        <result property="factor30"    column="factor30"    />
+        <result property="factor31"    column="factor31"    />
+        <result property="factor32"    column="factor32"    />
+        <result property="factor33"    column="factor33"    />
+        <result property="factor34"    column="factor34"    />
+        <result property="factor35"    column="factor35"    />
+        <result property="factor36"    column="factor36"    />
+        <result property="factor37"    column="factor37"    />
+        <result property="factor38"    column="factor38"    />
+        <result property="factor39"    column="factor39"    />
+        <result property="factor40"    column="factor40"    />
+        <result property="factor41"    column="factor41"    />
+        <result property="factor42"    column="factor42"    />
+        <result property="factor43"    column="factor43"    />
+        <result property="factor44"    column="factor44"    />
+        <result property="finalGrade"    column="final_grade"    />
+        <result property="calculatedGrade"    column="calculated_grade"    />
+    </resultMap>
+
+    <sql id="selectTVerificationScoretaskDetailVo">
+        select id, task_id, factory_name, factor1, factor2, factor3, factor4, factor5, factor6, factor7, factor8, factor9, factor10, factor11, factor12, factor13, factor14, factor15, factor16, factor17, factor18, factor19, factor20, factor21, factor22, factor23, factor24, factor25, factor26, factor27, factor28, factor29, factor30, factor31, factor32, factor33, factor34, factor35, factor36, factor37, factor38, factor39, factor40, factor41, factor42, factor43, factor44, final_grade, calculated_grade from t_verification_scoretask_detail
+    </sql>
+
+    <select id="selectTVerificationScoretaskDetailList" parameterType="TVerificationScoretaskDetail" resultMap="TVerificationScoretaskDetailResult">
+        <include refid="selectTVerificationScoretaskDetailVo"/>
+        <where>  
+            <if test="taskId != null "> and task_id = #{taskId}</if>
+            <if test="factoryName != null  and factoryName != ''"> and factory_name like concat('%', #{factoryName}, '%')</if>
+            <if test="factor1 != null  and factor1 != ''"> and factor1 = #{factor1}</if>
+            <if test="factor2 != null  and factor2 != ''"> and factor2 = #{factor2}</if>
+            <if test="factor3 != null  and factor3 != ''"> and factor3 = #{factor3}</if>
+            <if test="factor4 != null  and factor4 != ''"> and factor4 = #{factor4}</if>
+            <if test="factor5 != null  and factor5 != ''"> and factor5 = #{factor5}</if>
+            <if test="factor6 != null  and factor6 != ''"> and factor6 = #{factor6}</if>
+            <if test="factor7 != null  and factor7 != ''"> and factor7 = #{factor7}</if>
+            <if test="factor8 != null  and factor8 != ''"> and factor8 = #{factor8}</if>
+            <if test="factor9 != null  and factor9 != ''"> and factor9 = #{factor9}</if>
+            <if test="factor10 != null  and factor10 != ''"> and factor10 = #{factor10}</if>
+            <if test="factor11 != null  and factor11 != ''"> and factor11 = #{factor11}</if>
+            <if test="factor12 != null  and factor12 != ''"> and factor12 = #{factor12}</if>
+            <if test="factor13 != null  and factor13 != ''"> and factor13 = #{factor13}</if>
+            <if test="factor14 != null  and factor14 != ''"> and factor14 = #{factor14}</if>
+            <if test="factor15 != null  and factor15 != ''"> and factor15 = #{factor15}</if>
+            <if test="factor16 != null  and factor16 != ''"> and factor16 = #{factor16}</if>
+            <if test="factor17 != null  and factor17 != ''"> and factor17 = #{factor17}</if>
+            <if test="factor18 != null  and factor18 != ''"> and factor18 = #{factor18}</if>
+            <if test="factor19 != null  and factor19 != ''"> and factor19 = #{factor19}</if>
+            <if test="factor20 != null  and factor20 != ''"> and factor20 = #{factor20}</if>
+            <if test="factor21 != null  and factor21 != ''"> and factor21 = #{factor21}</if>
+            <if test="factor22 != null  and factor22 != ''"> and factor22 = #{factor22}</if>
+            <if test="factor23 != null  and factor23 != ''"> and factor23 = #{factor23}</if>
+            <if test="factor24 != null  and factor24 != ''"> and factor24 = #{factor24}</if>
+            <if test="factor25 != null  and factor25 != ''"> and factor25 = #{factor25}</if>
+            <if test="factor26 != null  and factor26 != ''"> and factor26 = #{factor26}</if>
+            <if test="factor27 != null  and factor27 != ''"> and factor27 = #{factor27}</if>
+            <if test="factor28 != null  and factor28 != ''"> and factor28 = #{factor28}</if>
+            <if test="factor29 != null  and factor29 != ''"> and factor29 = #{factor29}</if>
+            <if test="factor30 != null  and factor30 != ''"> and factor30 = #{factor30}</if>
+            <if test="factor31 != null  and factor31 != ''"> and factor31 = #{factor31}</if>
+            <if test="factor32 != null  and factor32 != ''"> and factor32 = #{factor32}</if>
+            <if test="factor33 != null  and factor33 != ''"> and factor33 = #{factor33}</if>
+            <if test="factor34 != null  and factor34 != ''"> and factor34 = #{factor34}</if>
+            <if test="factor35 != null  and factor35 != ''"> and factor35 = #{factor35}</if>
+            <if test="factor36 != null  and factor36 != ''"> and factor36 = #{factor36}</if>
+            <if test="factor37 != null  and factor37 != ''"> and factor37 = #{factor37}</if>
+            <if test="factor38 != null  and factor38 != ''"> and factor38 = #{factor38}</if>
+            <if test="factor39 != null  and factor39 != ''"> and factor39 = #{factor39}</if>
+            <if test="factor40 != null  and factor40 != ''"> and factor40 = #{factor40}</if>
+            <if test="factor41 != null  and factor41 != ''"> and factor41 = #{factor41}</if>
+            <if test="factor42 != null  and factor42 != ''"> and factor42 = #{factor42}</if>
+            <if test="factor43 != null  and factor43 != ''"> and factor43 = #{factor43}</if>
+            <if test="factor44 != null  and factor44 != ''"> and factor44 = #{factor44}</if>
+            <if test="finalGrade != null  and finalGrade != ''"> and final_grade = #{finalGrade}</if>
+            <if test="calculatedGrade != null  and calculatedGrade != ''"> and calculated_grade = #{calculatedGrade}</if>
+        </where>
+    </select>
+    
+    <select id="selectTVerificationScoretaskDetailById" parameterType="Long" resultMap="TVerificationScoretaskDetailResult">
+        <include refid="selectTVerificationScoretaskDetailVo"/>
+        where id = #{id}
+    </select>
+    <select id="getByscoretaskid" resultMap="TVerificationScoretaskDetailResult">
+        <include refid="selectTVerificationScoretaskDetailVo"/>
+        <where>
+        <if test="taskId != null "> and task_id = #{taskid}</if>
+        </where>
+    </select>
+    <select id="selectTVerificationScoreaskDetailByTaskIds" resultMap="TVerificationScoretaskDetailResult">
+        <include refid="selectTVerificationScoretaskDetailVo"/>
+        where task_id in
+        <foreach item="item" collection="taskids" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <insert id="insertTVerificationScoretaskDetail" parameterType="TVerificationScoretaskDetail" useGeneratedKeys="true" keyProperty="id">
+        insert into t_verification_scoretask_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">task_id,</if>
+            <if test="factoryName != null">factory_name,</if>
+            <if test="factor1 != null">factor1,</if>
+            <if test="factor2 != null">factor2,</if>
+            <if test="factor3 != null">factor3,</if>
+            <if test="factor4 != null">factor4,</if>
+            <if test="factor5 != null">factor5,</if>
+            <if test="factor6 != null">factor6,</if>
+            <if test="factor7 != null">factor7,</if>
+            <if test="factor8 != null">factor8,</if>
+            <if test="factor9 != null">factor9,</if>
+            <if test="factor10 != null">factor10,</if>
+            <if test="factor11 != null">factor11,</if>
+            <if test="factor12 != null">factor12,</if>
+            <if test="factor13 != null">factor13,</if>
+            <if test="factor14 != null">factor14,</if>
+            <if test="factor15 != null">factor15,</if>
+            <if test="factor16 != null">factor16,</if>
+            <if test="factor17 != null">factor17,</if>
+            <if test="factor18 != null">factor18,</if>
+            <if test="factor19 != null">factor19,</if>
+            <if test="factor20 != null">factor20,</if>
+            <if test="factor21 != null">factor21,</if>
+            <if test="factor22 != null">factor22,</if>
+            <if test="factor23 != null">factor23,</if>
+            <if test="factor24 != null">factor24,</if>
+            <if test="factor25 != null">factor25,</if>
+            <if test="factor26 != null">factor26,</if>
+            <if test="factor27 != null">factor27,</if>
+            <if test="factor28 != null">factor28,</if>
+            <if test="factor29 != null">factor29,</if>
+            <if test="factor30 != null">factor30,</if>
+            <if test="factor31 != null">factor31,</if>
+            <if test="factor32 != null">factor32,</if>
+            <if test="factor33 != null">factor33,</if>
+            <if test="factor34 != null">factor34,</if>
+            <if test="factor35 != null">factor35,</if>
+            <if test="factor36 != null">factor36,</if>
+            <if test="factor37 != null">factor37,</if>
+            <if test="factor38 != null">factor38,</if>
+            <if test="factor39 != null">factor39,</if>
+            <if test="factor40 != null">factor40,</if>
+            <if test="factor41 != null">factor41,</if>
+            <if test="factor42 != null">factor42,</if>
+            <if test="factor43 != null">factor43,</if>
+            <if test="factor44 != null">factor44,</if>
+            <if test="finalGrade != null">final_grade,</if>
+            <if test="calculatedGrade != null">calculated_grade,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">#{taskId},</if>
+            <if test="factoryName != null">#{factoryName},</if>
+            <if test="factor1 != null">#{factor1},</if>
+            <if test="factor2 != null">#{factor2},</if>
+            <if test="factor3 != null">#{factor3},</if>
+            <if test="factor4 != null">#{factor4},</if>
+            <if test="factor5 != null">#{factor5},</if>
+            <if test="factor6 != null">#{factor6},</if>
+            <if test="factor7 != null">#{factor7},</if>
+            <if test="factor8 != null">#{factor8},</if>
+            <if test="factor9 != null">#{factor9},</if>
+            <if test="factor10 != null">#{factor10},</if>
+            <if test="factor11 != null">#{factor11},</if>
+            <if test="factor12 != null">#{factor12},</if>
+            <if test="factor13 != null">#{factor13},</if>
+            <if test="factor14 != null">#{factor14},</if>
+            <if test="factor15 != null">#{factor15},</if>
+            <if test="factor16 != null">#{factor16},</if>
+            <if test="factor17 != null">#{factor17},</if>
+            <if test="factor18 != null">#{factor18},</if>
+            <if test="factor19 != null">#{factor19},</if>
+            <if test="factor20 != null">#{factor20},</if>
+            <if test="factor21 != null">#{factor21},</if>
+            <if test="factor22 != null">#{factor22},</if>
+            <if test="factor23 != null">#{factor23},</if>
+            <if test="factor24 != null">#{factor24},</if>
+            <if test="factor25 != null">#{factor25},</if>
+            <if test="factor26 != null">#{factor26},</if>
+            <if test="factor27 != null">#{factor27},</if>
+            <if test="factor28 != null">#{factor28},</if>
+            <if test="factor29 != null">#{factor29},</if>
+            <if test="factor30 != null">#{factor30},</if>
+            <if test="factor31 != null">#{factor31},</if>
+            <if test="factor32 != null">#{factor32},</if>
+            <if test="factor33 != null">#{factor33},</if>
+            <if test="factor34 != null">#{factor34},</if>
+            <if test="factor35 != null">#{factor35},</if>
+            <if test="factor36 != null">#{factor36},</if>
+            <if test="factor37 != null">#{factor37},</if>
+            <if test="factor38 != null">#{factor38},</if>
+            <if test="factor39 != null">#{factor39},</if>
+            <if test="factor40 != null">#{factor40},</if>
+            <if test="factor41 != null">#{factor41},</if>
+            <if test="factor42 != null">#{factor42},</if>
+            <if test="factor43 != null">#{factor43},</if>
+            <if test="factor44 != null">#{factor44},</if>
+            <if test="finalGrade != null">#{finalGrade},</if>
+            <if test="calculatedGrade != null">#{calculatedGrade},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTVerificationScoretaskDetail" parameterType="TVerificationScoretaskDetail">
+        update t_verification_scoretask_detail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null">task_id = #{taskId},</if>
+            <if test="factoryName != null">factory_name = #{factoryName},</if>
+            <if test="factor1 != null">factor1 = #{factor1},</if>
+            <if test="factor2 != null">factor2 = #{factor2},</if>
+            <if test="factor3 != null">factor3 = #{factor3},</if>
+            <if test="factor4 != null">factor4 = #{factor4},</if>
+            <if test="factor5 != null">factor5 = #{factor5},</if>
+            <if test="factor6 != null">factor6 = #{factor6},</if>
+            <if test="factor7 != null">factor7 = #{factor7},</if>
+            <if test="factor8 != null">factor8 = #{factor8},</if>
+            <if test="factor9 != null">factor9 = #{factor9},</if>
+            <if test="factor10 != null">factor10 = #{factor10},</if>
+            <if test="factor11 != null">factor11 = #{factor11},</if>
+            <if test="factor12 != null">factor12 = #{factor12},</if>
+            <if test="factor13 != null">factor13 = #{factor13},</if>
+            <if test="factor14 != null">factor14 = #{factor14},</if>
+            <if test="factor15 != null">factor15 = #{factor15},</if>
+            <if test="factor16 != null">factor16 = #{factor16},</if>
+            <if test="factor17 != null">factor17 = #{factor17},</if>
+            <if test="factor18 != null">factor18 = #{factor18},</if>
+            <if test="factor19 != null">factor19 = #{factor19},</if>
+            <if test="factor20 != null">factor20 = #{factor20},</if>
+            <if test="factor21 != null">factor21 = #{factor21},</if>
+            <if test="factor22 != null">factor22 = #{factor22},</if>
+            <if test="factor23 != null">factor23 = #{factor23},</if>
+            <if test="factor24 != null">factor24 = #{factor24},</if>
+            <if test="factor25 != null">factor25 = #{factor25},</if>
+            <if test="factor26 != null">factor26 = #{factor26},</if>
+            <if test="factor27 != null">factor27 = #{factor27},</if>
+            <if test="factor28 != null">factor28 = #{factor28},</if>
+            <if test="factor29 != null">factor29 = #{factor29},</if>
+            <if test="factor30 != null">factor30 = #{factor30},</if>
+            <if test="factor31 != null">factor31 = #{factor31},</if>
+            <if test="factor32 != null">factor32 = #{factor32},</if>
+            <if test="factor33 != null">factor33 = #{factor33},</if>
+            <if test="factor34 != null">factor34 = #{factor34},</if>
+            <if test="factor35 != null">factor35 = #{factor35},</if>
+            <if test="factor36 != null">factor36 = #{factor36},</if>
+            <if test="factor37 != null">factor37 = #{factor37},</if>
+            <if test="factor38 != null">factor38 = #{factor38},</if>
+            <if test="factor39 != null">factor39 = #{factor39},</if>
+            <if test="factor40 != null">factor40 = #{factor40},</if>
+            <if test="factor41 != null">factor41 = #{factor41},</if>
+            <if test="factor42 != null">factor42 = #{factor42},</if>
+            <if test="factor43 != null">factor43 = #{factor43},</if>
+            <if test="factor44 != null">factor44 = #{factor44},</if>
+            <if test="finalGrade != null">final_grade = #{finalGrade},</if>
+            <if test="calculatedGrade != null">calculated_grade = #{calculatedGrade},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTVerificationScoretaskDetailById" parameterType="Long">
+        delete from t_verification_scoretask_detail where id = #{id}
+    </delete>
+
+    <delete id="deleteTVerificationScoretaskDetailByIds" parameterType="String">
+        delete from t_verification_scoretask_detail where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 112 - 0
cirs-biz/src/main/resources/mapper/biz/TVerificationScoretaskMapper.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cirs.biz.mapper.TVerificationScoretaskMapper">
+    
+    <resultMap type="TVerificationScoretask" id="TVerificationScoretaskResult">
+        <result property="id"    column="id"    />
+        <result property="taskName"    column="task_name"    />
+        <result property="taskStatus"    column="task_status"    />
+        <result property="subtaskNum"    column="subtask_num"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="endTime"    column="end_time"    />
+        <result property="progress"    column="progress"    />
+        <result property="accuracyRate"    column="accuracy_rate"    />
+        <result property="recallRate"    column="recall_rate"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectTVerificationScoretaskVo">
+        select id, task_name, task_status, subtask_num, start_time, end_time, progress, accuracy_rate, recall_rate, create_by, create_time, update_by, update_time, remark from t_verification_scoretask
+    </sql>
+
+    <select id="selectTVerificationScoretaskList" parameterType="TVerificationScoretask" resultMap="TVerificationScoretaskResult">
+        <include refid="selectTVerificationScoretaskVo"/>
+        <where>  
+            <if test="taskName != null  and taskName != ''"> and task_name like concat('%', #{taskName}, '%')</if>
+            <if test="taskStatus != null  and taskStatus != ''"> and task_status = #{taskStatus}</if>
+            <if test="subtaskNum != null "> and subtask_num = #{subtaskNum}</if>
+            <if test="startTime != null "> and start_time = #{startTime}</if>
+            <if test="endTime != null "> and end_time = #{endTime}</if>
+            <if test="progress != null "> and progress = #{progress}</if>
+            <if test="accuracyRate != null  and accuracyRate != ''"> and accuracy_rate = #{accuracyRate}</if>
+            <if test="recallRate != null  and recallRate != ''"> and recall_rate = #{recallRate}</if>
+        </where>
+    </select>
+    
+    <select id="selectTVerificationScoretaskById" parameterType="Long" resultMap="TVerificationScoretaskResult">
+        <include refid="selectTVerificationScoretaskVo"/>
+        where id = #{id}
+    </select>
+
+
+    <insert id="insertTVerificationScoretask" parameterType="TVerificationScoretask" useGeneratedKeys="true" keyProperty="id">
+        insert into t_verification_scoretask
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskName != null">task_name,</if>
+            <if test="taskStatus != null">task_status,</if>
+            <if test="subtaskNum != null">subtask_num,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="progress != null">progress,</if>
+            <if test="accuracyRate != null">accuracy_rate,</if>
+            <if test="recallRate != null">recall_rate,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskName != null">#{taskName},</if>
+            <if test="taskStatus != null">#{taskStatus},</if>
+            <if test="subtaskNum != null">#{subtaskNum},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="progress != null">#{progress},</if>
+            <if test="accuracyRate != null">#{accuracyRate},</if>
+            <if test="recallRate != null">#{recallRate},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTVerificationScoretask" parameterType="TVerificationScoretask">
+        update t_verification_scoretask
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskName != null">task_name = #{taskName},</if>
+            <if test="taskStatus != null">task_status = #{taskStatus},</if>
+            <if test="subtaskNum != null">subtask_num = #{subtaskNum},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="progress != null">progress = #{progress},</if>
+            <if test="accuracyRate != null">accuracy_rate = #{accuracyRate},</if>
+            <if test="recallRate != null">recall_rate = #{recallRate},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTVerificationScoretaskById" parameterType="Long">
+        delete from t_verification_scoretask where id = #{id}
+    </delete>
+
+    <delete id="deleteTVerificationScoretaskByIds" parameterType="String">
+        delete from t_verification_scoretask where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 7 - 6
cirs-ui/src/api/biz/detail.js

@@ -50,14 +50,15 @@ export function verification(taskid) {
     params: { taskid: taskid }
   })
 }
-export function getTraindataset(){
+export function getTraindataset(query){
   return request({
-    url:'/biz/train/getTraindataset',
-    method:'get'
+    url:'/biz/train/list',
+    method:'get',
+    params: query
   })
 }
 
-// 修改验证任务详情
+// 更新验证任务详情
 export function updateDetails(dataset) {
   return request({
     url: '/biz/detail/updateDetails',
@@ -68,9 +69,9 @@ export function updateDetails(dataset) {
 }
 
 //得到运行验证任务详情
-export function getUpdatedDetails(taskids){
+export function getUpdatedDetails(taskids,pageNum,pageSize){
   return request({
-    url:'/biz/detail/getUpdatedDetails',
+    url:`/biz/detail/getUpdatedDetails?pageNum=${pageNum}&pageSize=${pageSize}`,
     method:'post',
     data: taskids,
   })

+ 63 - 0
cirs-ui/src/api/biz/score.js

@@ -0,0 +1,63 @@
+import request from '@/utils/request'
+
+// 查询厂家得分列表
+export function listScore(query) {
+  return request({
+    url: '/biz/score/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询厂家得分详细
+export function getScore(id) {
+  return request({
+    url: '/biz/score/' + id,
+    method: 'get'
+  })
+}
+
+// 新增厂家得分
+export function addScore(data) {
+  return request({
+    url: '/biz/score',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改厂家得分
+export function updateScore(data) {
+  return request({
+    url: '/biz/score',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除厂家得分
+export function delScore(id) {
+  return request({
+    url: '/biz/score/' + id,
+    method: 'delete'
+  })
+}
+
+//训练按钮
+export function train() {
+  return request({
+    url:'/biz/score/train',
+    method:'get',
+
+  })
+}
+
+//推荐按钮
+export function marking(args) {
+  return request({
+    url: '/biz/score/marking',
+    method: 'post',
+    data: args,
+
+  })
+}

+ 79 - 0
cirs-ui/src/api/biz/scoretask.js

@@ -0,0 +1,79 @@
+import request from '@/utils/request'
+
+// 查询打分算法验证任务列表
+export function listScoretask(query) {
+  return request({
+    url: '/biz/scoretask/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询打分算法验证任务详细
+export function getScoretask(id) {
+  return request({
+    url: '/biz/scoretask/' + id,
+    method: 'get'
+  })
+}
+
+// 新增打分算法验证任务
+export function addScoretask(data) {
+  return request({
+    url: '/biz/scoretask',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改打分算法验证任务
+export function updateScoretask(data) {
+  return request({
+    url: '/biz/scoretask',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除打分算法验证任务
+export function delScoretask(id) {
+  return request({
+    url: '/biz/scoretask/' + id,
+    method: 'delete'
+  })
+}
+
+export function verification(taskid) {
+  return request({
+    url: '/biz/scoretaskdetail/verification',
+    method: 'get',
+    params: { taskid: taskid }
+  })
+}
+export function getTraindataset(scorequery){
+  return request({
+    url:'/biz/score/list',
+    method:'get',
+    params: scorequery
+  })
+}
+
+// 更新验证任务详情
+export function updateDetails(dataset) {
+  return request({
+    url: '/biz/scoretaskdetail/updateDetails',
+    method: 'post',
+    data: dataset,
+
+  })
+}
+
+//得到运行验证任务详情
+export function getUpdatedDetails(taskids,pageNum,pageSize){
+  return request({
+    url:`/biz/scoretaskdetail/getUpdatedDetails?pageNum=${pageNum}&pageSize=${pageSize}`,
+    method:'post',
+    data: taskids,
+  })
+}
+

+ 2 - 2
cirs-ui/src/api/biz/train.js

@@ -59,11 +59,11 @@ export function train() {
   })
 }
 
-export function recommend(recommend_args,modelPath) {
+export function recommend(recommend_args) {
   return request({
     url: '/biz/train/recommend',
     method: 'post',
     data: recommend_args,
-    params: modelPath,
+
   })
 }

+ 668 - 0
cirs-ui/src/views/biz/marking/index.vue

@@ -0,0 +1,668 @@
+<template>
+  <div class="app-container">
+<!--    输入-->
+    <el-dialog title="输入打分要素" :visible.sync="open" width="580px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="550px" label-position="top">
+        <el-form-item label="厂家名称" prop="factoryName">
+          <el-input v-model="form.factoryName" placeholder="请输入厂家名称" />
+
+        </el-form-item>
+        <el-form-item label="生产线运行情况良好" prop="factor1">
+
+          <el-select v-model="form.factor1" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产过程耗材稳定供应" prop="factor2">
+          <!--          <el-input v-model="form.factor2" placeholder="请输入生产过程耗材稳定供应" />-->
+          <el-select v-model="form.factor2" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="定期进行生产线维护保养" prop="factor3">
+          <!--          <el-input v-model="form.factor3" placeholder="请输入定期进行生产线维护保养" />-->
+          <el-select v-model="form.factor3" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="质量体系完善且运行情况良好" prop="factor4">
+          <!--          <el-input v-model="form.factor4" placeholder="请输入质量体系完善且运行情况良好" />-->
+          <el-select v-model="form.factor4"  >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" prop="factor5">
+          <!--          <el-input v-model="form.factor5" placeholder="请输入建立了与配套元器件生产相适应的生产管理系统且运行情况良好" />-->
+          <el-select v-model="form.factor5" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="重要岗位人员定期进行专业培训" prop="factor6">
+          <!--          <el-input v-model="form.factor6" placeholder="请输入重要岗位人员定期进行专业培训" />-->
+          <el-select v-model="form.factor6" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品批次管理有具体文件内容规定,是否有管理责任人" prop="factor7">
+          <!--          <el-input v-model="form.factor7" placeholder="请输入产品批次管理有具体文件内容规定,是否有管理责任人" />-->
+          <el-select v-model="form.factor7" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="未发生过因产品批次问题引起的交付问题" prop="factor8">
+          <!--          <el-input v-model="form.factor8" placeholder="请输入未发生过因产品批次问题引起的交付问题" />-->
+          <el-select v-model="form.factor8" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品全寿命周期可追溯,质量一致性高" prop="factor9">
+          <!--          <el-input v-model="form.factor9" placeholder="请输入产品全寿命周期可追溯,质量一致性高" />-->
+          <el-select v-model="form.factor9" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产工艺已完成定型,且有相关产品生产经历" prop="factor10">
+          <!--          <el-input v-model="form.factor10" placeholder="请输入生产工艺已完成定型,且有相关产品生产经历" />-->
+          <el-select v-model="form.factor10" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有明确生产过程控制技术手段" prop="factor11">
+          <!--          <el-input v-model="form.factor11" placeholder="请输入有明确生产过程控制技术手段" />-->
+          <el-select v-model="form.factor11" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="关键工序有明确的评价准则、严格的监控措施和完整记录" prop="factor12">
+          <!--          <el-input v-model="form.factor12" placeholder="请输入关键工序有明确的评价准则、严格的监控措施和完整记录" />-->
+          <el-select v-model="form.factor12" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="芯片的合格率水平满足要求" prop="factor13">
+          <!--          <el-input v-model="form.factor13" placeholder="请输入芯片的合格率水平满足要求" />-->
+          <el-select v-model="form.factor13" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="封装的合格率水平满足要求" prop="factor14">
+          <!--          <el-input v-model="form.factor14" placeholder="请输入封装的合格率水平满足要求" />-->
+          <el-select v-model="form.factor14" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="未发生过中重大失效问题" prop="factor15">
+          <!--          <el-input v-model="form.factor15" placeholder="请输入未发生过中重大失效问题" />-->
+          <el-select v-model="form.factor15" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对重大失效问题,建立有应急处理机制,且严格执行。" prop="factor16">
+          <!--          <el-input v-model="form.factor16" placeholder="请输入针对重大失效问题,建立有应急处理机制,且严格执行。" />-->
+          <el-select v-model="form.factor16" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对不同的核心零部件,由相应的采购策略" prop="factor17">
+          <!--          <el-input v-model="form.factor17" placeholder="请输入针对不同的核心零部件,由相应的采购策略" />-->
+          <el-select v-model="form.factor17" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="具有稳定可靠的供货渠道" prop="factor18">
+          <!--          <el-input v-model="form.factor18" placeholder="请输入具有稳定可靠的供货渠道" />-->
+          <el-select v-model="form.factor18" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="核心零部件检验制度完善" prop="factor19">
+          <!--          <el-input v-model="form.factor19" placeholder="请输入核心零部件检验制度完善" />-->
+          <el-select v-model="form.factor19" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="无重大质量问题发生" prop="factor20">
+          <!--          <el-input v-model="form.factor20" placeholder="请输入无重大质量问题发生" />-->
+          <el-select v-model="form.factor20" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产产能充足" prop="factor21">
+          <!--          <el-input v-model="form.factor21" placeholder="请输入生产产能充足" />-->
+          <el-select v-model="form.factor21" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产能调度分配机制成熟完善,能够满足要求" prop="factor22">
+          <!--          <el-input v-model="form.factor22" placeholder="请输入产能调度分配机制成熟完善,能够满足要求" />-->
+          <el-select v-model="form.factor22" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="根据产品自身和用户应用需求特点,建立合理的库存策略" prop="factor23">
+          <!--          <el-input v-model="form.factor23" placeholder="请输入根据产品自身和用户应用需求特点,建立合理的库存策略" />-->
+          <el-select v-model="form.factor23" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对有供货风险的零部件有合理的进出库管理策略" prop="factor24">
+          <!--          <el-input v-model="form.factor24" placeholder="请输入针对有供货风险的零部件有合理的进出库管理策略" />-->
+          <el-select v-model="form.factor24" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="温湿度等存储环境条件满足要求" prop="factor25">
+          <!--          <el-input v-model="form.factor25" placeholder="请输入温湿度等存储环境条件满足要求" />-->
+          <el-select v-model="form.factor25" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有稳定的核心零部件、半成品/成品库存量" prop="factor26">
+          <!--          <el-input v-model="form.factor26" placeholder="请输入有稳定的核心零部件、半成品/成品库存量" />-->
+          <el-select v-model="form.factor26" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="该产品符合技术发展趋势,为企业主攻主流产品" prop="factor27">
+          <!--          <el-input v-model="form.factor27" placeholder="请输入该产品符合技术发展趋势,为企业主攻主流产品" />-->
+          <el-select v-model="form.factor27" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" prop="factor28">
+          <!--          <el-input v-model="form.factor28" placeholder="请输入产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" />-->
+          <el-select v-model="form.factor28" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定有完善的元器件状态管控制度或措施,且有效执行" prop="factor29">
+          <!--          <el-input v-model="form.factor29" placeholder="请输入制定有完善的元器件状态管控制度或措施,且有效执行" />-->
+          <el-select v-model="form.factor29" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="器件状态清晰明确,且状态变更过程完全受控" prop="factor30">
+          <!--          <el-input v-model="form.factor30" placeholder="请输入器件状态清晰明确,且状态变更过程完全受控" />-->
+          <el-select v-model="form.factor30" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品供货周期合理,能满足用户采购要求" prop="factor31">
+          <!--          <el-input v-model="form.factor31" placeholder="请输入产品供货周期合理,能满足用户采购要求" />-->
+          <el-select v-model="form.factor31" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="最小起订量设置合理" prop="factor32">
+          <!--          <el-input v-model="form.factor32" placeholder="请输入最小起订量设置合理" />-->
+          <el-select v-model="form.factor32" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定有相应的供应商准入、选择、评价等制度,并严格执行" prop="factor33">
+          <!--          <el-input v-model="form.factor33" placeholder="请输入制定有相应的供应商准入、选择、评价等制度,并严格执行" />-->
+          <el-select v-model="form.factor33" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有长期稳定合作的核心关键的外协单位" prop="factor34">
+          <!--          <el-input v-model="form.factor34" placeholder="请输入有长期稳定合作的核心关键的外协单位" />-->
+          <el-select v-model="form.factor34" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="能够及时为用户提供应用全过程的技术售后服务" prop="factor35">
+          <!--          <el-input v-model="form.factor35" placeholder="请输入能够及时为用户提供应用全过程的技术售后服务" />-->
+          <el-select v-model="form.factor35" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" prop="factor36">
+          <!--          <el-input v-model="form.factor36" placeholder="请输入了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" />-->
+          <el-select v-model="form.factor36" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定了健全的稳定核心人员的措施,并有效执行" prop="factor37">
+          <!--          <el-input v-model="form.factor37" placeholder="请输入制定了健全的稳定核心人员的措施,并有效执行" />-->
+          <el-select v-model="form.factor37" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" prop="factor38">
+          <!--          <el-input v-model="form.factor38" placeholder="请输入成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" />-->
+          <el-select v-model="form.factor38" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="核心人员均具备相应的专业知识和技术能力" prop="factor39">
+          <!--          <el-input v-model="form.factor39" placeholder="请输入核心人员均具备相应的专业知识和技术能力" />-->
+          <el-select v-model="form.factor39" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="建立了良好的成本管控措施" prop="factor40">
+          <!--          <el-input v-model="form.factor40" placeholder="请输入建立了良好的成本管控措施" />-->
+          <el-select v-model="form.factor40" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="能够承担产品生产、配套相关成本,能够持续盈利" prop="factor41">
+          <!--          <el-input v-model="form.factor41" placeholder="请输入能够承担产品生产、配套相关成本,能够持续盈利" />-->
+          <el-select v-model="form.factor41" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="经济性好,企业能够持续获利" prop="factor42">
+          <!--          <el-input v-model="form.factor42" placeholder="请输入经济性好,企业能够持续获利" />-->
+          <el-select v-model="form.factor42" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" prop="factor43">
+          <!--          <el-input v-model="form.factor43" placeholder="请输入和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" />-->
+          <el-select v-model="form.factor43" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品推广应用情况良好,市场认可度高,客户满意度高" prop="factor44">
+          <!--          <el-input v-model="form.factor44" placeholder="请输入产品推广应用情况良好,市场认可度高,客户满意度高" />-->
+          <el-select v-model="form.factor44" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="getmarking_result">打 分</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <div style="padding-bottom: 8px">
+
+    <span>
+      <el-button type="info" @click="open=true" >输入打分评级要素</el-button>
+
+    </span>
+    </div>
+    <el-table v-loading="loading" :data="List">
+      <el-table-column label="最终等级" align="center" prop="finalGrade" />
+      <el-table-column label="厂家名称" align="center" prop="factoryName"  />
+      <el-table-column label="生产线运行情况良好" align="center" prop="factor1" width="140"/>
+      <el-table-column label="生产过程耗材稳定供应" align="center" prop="factor2" width="170"/>
+      <el-table-column label="定期进行生产线维护保养" align="center" prop="factor3" width="180"/>
+      <el-table-column label="质量体系完善且运行情况良好" align="center" prop="factor4" width="200"/>
+      <el-table-column label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" align="center" prop="factor5" width="400"/>
+      <el-table-column label="重要岗位人员定期进行专业培训" align="center" prop="factor6" width="210"/>
+      <el-table-column label="产品批次管理有具体文件内容规定,是否有管理责任人" align="center" prop="factor7" width="380"/>
+      <el-table-column label="未发生过因产品批次问题引起的交付问题" align="center" prop="factor8" width="300"/>
+      <el-table-column label="产品全寿命周期可追溯,质量一致性高" align="center" prop="factor9" width="320" />
+      <el-table-column label="生产工艺已完成定型,且有相关产品生产经历" align="center" prop="factor10" width="280"/>
+      <el-table-column label="有明确生产过程控制技术手段" align="center" prop="factor11" width="270" />
+      <el-table-column label="关键工序有明确的评价准则、严格的监控措施和完整记录" align="center" prop="factor12" width="370" />
+      <el-table-column label="芯片的合格率水平满足要求" align="center" prop="factor13" width="240"/>
+      <el-table-column label="封装的合格率水平满足要求" align="center" prop="factor14" width="240" />
+      <el-table-column label="未发生过中重大失效问题" align="center" prop="factor15" width="230" />
+      <el-table-column label="针对重大失效问题,建立有应急处理机制,且严格执行。" align="center" prop="factor16" width="350"/>
+      <el-table-column label="针对不同的核心零部件,由相应的采购策略" align="center" prop="factor17" width="320" />
+      <el-table-column label="具有稳定可靠的供货渠道" align="center" prop="factor18" width="250"/>
+      <el-table-column label="核心零部件检验制度完善" align="center" prop="factor19" width="250"/>
+      <el-table-column label="无重大质量问题发生" align="center" prop="factor20" width="230"/>
+      <el-table-column label="生产产能充足" align="center" prop="factor21" width="210"/>
+      <el-table-column label="产能调度分配机制成熟完善,能够满足要求" align="center" prop="factor22" width="320"/>
+      <el-table-column label="根据产品自身和用户应用需求特点,建立合理的库存策略" align="center" prop="factor23" width="380"/>
+      <el-table-column label="针对有供货风险的零部件有合理的进出库管理策略" align="center" prop="factor24" width="360"/>
+      <el-table-column label="温湿度等存储环境条件满足要求" align="center" prop="factor25" width="260"/>
+      <el-table-column label="有稳定的核心零部件、半成品/成品库存量" align="center" prop="factor26" width="340" />
+      <el-table-column label="该产品符合技术发展趋势,为企业主攻主流产品" align="center" prop="factor27" width="360"/>
+      <el-table-column label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" align="center" prop="factor28" width="508"/>
+      <el-table-column label="制定有完善的元器件状态管控制度或措施,且有效执行" align="center" prop="factor29" width="340"/>
+      <el-table-column label="器件状态清晰明确,且状态变更过程完全受控" align="center" prop="factor30" width="320"/>
+      <el-table-column label="产品供货周期合理,能满足用户采购要求" align="center" prop="factor31" width="300"/>
+      <el-table-column label="最小起订量设置合理" align="center" prop="factor32" width="200"/>
+      <el-table-column label="制定有相应的供应商准入、选择、评价等制度,并严格执行" align="center" prop="factor33" width="370"/>
+      <el-table-column label="有长期稳定合作的核心关键的外协单位" align="center" prop="factor34" width="320"/>
+      <el-table-column label="能够及时为用户提供应用全过程的技术售后服务" align="center" prop="factor35" width="300"/>
+      <el-table-column label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" align="center" prop="factor36" width="480"/>
+      <el-table-column label="制定了健全的稳定核心人员的措施,并有效执行" align="center" prop="factor37" width="320"/>
+      <el-table-column label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" align="center" prop="factor38" width="400"/>
+      <el-table-column label="核心人员均具备相应的专业知识和技术能力" align="center" prop="factor39" width="300"/>
+      <el-table-column label="建立了良好的成本管控措施" align="center" prop="factor40" width="240"/>
+      <el-table-column label="能够承担产品生产、配套相关成本,能够持续盈利" align="center" prop="factor41" width="320"/>
+      <el-table-column label="经济性好,企业能够持续获利" align="center" prop="factor42" width="250"/>
+      <el-table-column label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" align="center" prop="factor43" width="514"/>
+      <el-table-column label="产品推广应用情况良好,市场认可度高,客户满意度高" align="center" prop="factor44" width="340"/>
+
+    </el-table>
+
+    <el-dialog
+      title="推荐"
+      :visible.sync="dialogVisible"
+      width="20%"
+      style="top:225px"
+
+    >
+      <div  align="center">
+        <el-progress
+          type="circle"
+          :percentage="Progress"
+          width="80"
+          :status="progressStatus"
+        ></el-progress>
+      </div>
+    </el-dialog>
+
+
+
+
+  </div>
+</template>
+
+<script>
+
+import { marking } from "@/api/biz/score";
+export default {
+  name: "recommend",
+  data() {
+    return {
+      dialogVisible:false,
+      Progress:0,
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 元器件数据
+      List: [
+      ],
+
+
+      // 是否显示弹出层
+      open: false,
+
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      options:[
+        {
+          value: '是',
+          label: '是'
+        }, {
+          value: '否',
+          label: '否'
+        }
+      ],
+
+    };
+  },
+  computed: {
+    progressStatus() {
+      return this.Progress === 100 ? 'success' : '';
+    },
+  },
+  methods: {
+    getmarking_result(){
+      this.open = false
+      //调用打分算法
+      this.List = []
+      let result;
+        marking(this.form).then(res=>{
+          result = res
+          if(res.code===200) {
+            this.form = JSON.parse(res.data).data
+            this.form.finalGrade = 'A'
+            // console.log(this.form)
+            // this.List.push(this.form)
+            this.$set(this.List,0,this.form)
+            this.$modal.msgSuccess("调用打分算法成功")
+
+            // this.getList()
+
+
+          } else {
+            this.$modal.msgError(res.msg)
+          }
+
+
+        })
+
+      // 模拟进度变化,每0.0.5秒更新一次,共更新100次
+      this.dialogVisible = true
+
+      const intervalId = setInterval(() => {
+
+        this.Progress++;
+        // 如果进度达到100%,清除定时器
+        if (this.Progress >= 100) {
+          this.Progress = 0
+          clearInterval(intervalId);
+          this.dialogVisible = false
+
+          if(result.code===200){
+            this.getList()
+            this.$modal.msgSuccess("调用打分算法成功")
+          }
+
+          else {
+            this.$modal.msgError(result.msg);
+          }
+        }
+      }, 50);
+    },
+
+
+
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        factoryName: null,
+        factor1: null,
+        factor2: null,
+        factor3: null,
+        factor4: null,
+        factor5: null,
+        factor6: null,
+        factor7: null,
+        factor8: null,
+        factor9: null,
+        factor10: null,
+        factor11: null,
+        factor12: null,
+        factor13: null,
+        factor14: null,
+        factor15: null,
+        factor16: null,
+        factor17: null,
+        factor18: null,
+        factor19: null,
+        factor20: null,
+        factor21: null,
+        factor22: null,
+        factor23: null,
+        factor24: null,
+        factor25: null,
+        factor26: null,
+        factor27: null,
+        factor28: null,
+        factor29: null,
+        factor30: null,
+        factor31: null,
+        factor32: null,
+        factor33: null,
+        factor34: null,
+        factor35: null,
+        factor36: null,
+        factor37: null,
+        factor38: null,
+        factor39: null,
+        factor40: null,
+        factor41: null,
+        factor42: null,
+        factor43: null,
+        factor44: null,
+        finalGrade: null
+      };
+      this.resetForm("form");
+    },
+
+  }
+};
+</script>
+<style>
+
+.el-checkbox__inner {
+  border-color: #8492a6 !important;
+}
+.app-container {
+  min-height: 100vh;
+  background: radial-gradient(circle at 10% 20%, #3A71A8 0%, rgb(239, 249, 249) 90%);
+}
+</style>

+ 60 - 12
cirs-ui/src/views/biz/recommend/index.vue

@@ -184,6 +184,22 @@
 
     </el-dialog>
 
+    <el-dialog
+      title="推荐"
+      :visible.sync="dialogVisible"
+      width="20%"
+      style="top:225px"
+
+    >
+      <div  align="center">
+        <el-progress
+          type="circle"
+          :percentage="Progress"
+          width="80"
+          :status="progressStatus"
+        ></el-progress>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -194,6 +210,7 @@ export default {
   name: "recommend",
   data() {
     return {
+      Progress:0,
       useInfoList:[],
       eremark:'',//评分的备注
       // 遮罩层
@@ -269,7 +286,7 @@ export default {
       currentTime:0,
       startTime:0,
       pageviewTime:{},
-      modelPath: 'D:\\checkpoint\\mymodel.pth',
+
       recommmend_args:{
 
         useScene: '',
@@ -279,12 +296,15 @@ export default {
         result3Id: null,
         result4Id: null,
         result5Id: null,
-      }
+      },
+      dialogVisible:false,
     };
   },
-  // created() {
-  //   this.getList();
-  // },
+  computed: {
+    progressStatus() {
+      return this.Progress === 100 ? 'success' : '';
+    },
+  },
   methods: {
     // 得到evaluation
     getevaluationdata(row){
@@ -307,19 +327,22 @@ export default {
     recommend() {
       this.recommmend_args.useScene = this.use_scene
       this.recommmend_args.searchCondition = this.searchCondition
-      recommend(this.recommmend_args, {modelPath: this.modelPath}).then(res=>{
+      let result;
+      recommend(this.recommmend_args).then(res=>{
+        result = res;
         if(res.code===200) {
-          this.recommmend_args = res.data
-          // this.queryParams.result1Id = this.recommmend_args.result1Id
+          this.recommmend_args = JSON.parse(res.data).data
+          console.log(this.recommmend_args)
+          // this.queryParams.result1Id = 53
           this.queryParams.result1Id = this.recommmend_args.result1Id
           this.queryParams.result2Id = this.recommmend_args.result2Id
           this.queryParams.result3Id = this.recommmend_args.result3Id
           this.queryParams.result4Id = this.recommmend_args.result4Id
           this.queryParams.result5Id = this.recommmend_args.result5Id
 
-          this.$modal.msgSuccess("调用推荐算法成功")
-          console.log(this.recommmend_args)
-          this.getList()
+          // this.$modal.msgSuccess("调用推荐算法成功")
+
+
 
 
         } else {
@@ -327,15 +350,40 @@ export default {
         }
 
       })
+
+      // 模拟进度变化,每0.0.5秒更新一次,共更新100次
+      this.dialogVisible = true
+
+      const intervalId = setInterval(() => {
+
+        this.Progress++;
+        // 如果进度达到100%,清除定时器
+        if (this.Progress >= 100) {
+          this.Progress = 0
+          clearInterval(intervalId);
+          this.dialogVisible = false
+
+          if(result.code===200){
+            this.getList()
+            this.$modal.msgSuccess("调用推荐算法成功")
+          }
+
+          else {
+            this.$modal.msgError(result.msg);
+          }
+        }
+      }, 50);
+
     },
     /** 查询元器件列表 */
     getList() {
-      console.log(this.queryParams)
+      // console.log(this.queryParams)
       this.loading = true;
       this.evaluation.searchCondition = this.searchCondition
       RecommendlistComponent(this.queryParams).then(response => {//queryParams中分页的信息应该是在session中保存,在请求的时候通过session封装到了pagedomain中了
 
         this.componentList = response.rows;
+
         let clist = response.rows;
         for(let i=0; i< clist.length;i++){
 

+ 933 - 0
cirs-ui/src/views/biz/score/index.vue

@@ -0,0 +1,933 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="厂家名称" prop="factoryName">
+        <el-input
+          v-model="queryParams.factoryName"
+          placeholder="请输入厂家名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['biz:score:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['biz:score:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:score:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['biz:score:import']"
+        >训练数据集导入</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['biz:score:export']"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5" >
+        <el-button type="primary" size="mini" @click="mytrain">训练</el-button>
+
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="scoreList" @selection-change="handleSelectionChange" >
+      <el-table-column type="selection" width="55" align="center" />
+
+      <el-table-column label="厂家名称" align="center" prop="factoryName"  />
+      <el-table-column label="生产线运行情况良好" align="center" prop="factor1" width="140"/>
+      <el-table-column label="生产过程耗材稳定供应" align="center" prop="factor2" width="170"/>
+      <el-table-column label="定期进行生产线维护保养" align="center" prop="factor3" width="180"/>
+      <el-table-column label="质量体系完善且运行情况良好" align="center" prop="factor4" width="200"/>
+      <el-table-column label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" align="center" prop="factor5" width="400"/>
+      <el-table-column label="重要岗位人员定期进行专业培训" align="center" prop="factor6" width="210"/>
+      <el-table-column label="产品批次管理有具体文件内容规定,是否有管理责任人" align="center" prop="factor7" width="380"/>
+      <el-table-column label="未发生过因产品批次问题引起的交付问题" align="center" prop="factor8" width="300"/>
+      <el-table-column label="产品全寿命周期可追溯,质量一致性高" align="center" prop="factor9" width="320" />
+      <el-table-column label="生产工艺已完成定型,且有相关产品生产经历" align="center" prop="factor10" width="280"/>
+      <el-table-column label="有明确生产过程控制技术手段" align="center" prop="factor11" width="270" />
+      <el-table-column label="关键工序有明确的评价准则、严格的监控措施和完整记录" align="center" prop="factor12" width="370" />
+      <el-table-column label="芯片的合格率水平满足要求" align="center" prop="factor13" width="240"/>
+      <el-table-column label="封装的合格率水平满足要求" align="center" prop="factor14" width="240" />
+      <el-table-column label="未发生过中重大失效问题" align="center" prop="factor15" width="230" />
+      <el-table-column label="针对重大失效问题,建立有应急处理机制,且严格执行。" align="center" prop="factor16" width="350"/>
+      <el-table-column label="针对不同的核心零部件,由相应的采购策略" align="center" prop="factor17" width="320" />
+      <el-table-column label="具有稳定可靠的供货渠道" align="center" prop="factor18" width="250"/>
+      <el-table-column label="核心零部件检验制度完善" align="center" prop="factor19" width="250"/>
+      <el-table-column label="无重大质量问题发生" align="center" prop="factor20" width="230"/>
+      <el-table-column label="生产产能充足" align="center" prop="factor21" width="210"/>
+      <el-table-column label="产能调度分配机制成熟完善,能够满足要求" align="center" prop="factor22" width="320"/>
+      <el-table-column label="根据产品自身和用户应用需求特点,建立合理的库存策略" align="center" prop="factor23" width="380"/>
+      <el-table-column label="针对有供货风险的零部件有合理的进出库管理策略" align="center" prop="factor24" width="360"/>
+      <el-table-column label="温湿度等存储环境条件满足要求" align="center" prop="factor25" width="260"/>
+      <el-table-column label="有稳定的核心零部件、半成品/成品库存量" align="center" prop="factor26" width="340" />
+      <el-table-column label="该产品符合技术发展趋势,为企业主攻主流产品" align="center" prop="factor27" width="360"/>
+      <el-table-column label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" align="center" prop="factor28" width="508"/>
+      <el-table-column label="制定有完善的元器件状态管控制度或措施,且有效执行" align="center" prop="factor29" width="340"/>
+      <el-table-column label="器件状态清晰明确,且状态变更过程完全受控" align="center" prop="factor30" width="320"/>
+      <el-table-column label="产品供货周期合理,能满足用户采购要求" align="center" prop="factor31" width="300"/>
+      <el-table-column label="最小起订量设置合理" align="center" prop="factor32" width="200"/>
+      <el-table-column label="制定有相应的供应商准入、选择、评价等制度,并严格执行" align="center" prop="factor33" width="370"/>
+      <el-table-column label="有长期稳定合作的核心关键的外协单位" align="center" prop="factor34" width="320"/>
+      <el-table-column label="能够及时为用户提供应用全过程的技术售后服务" align="center" prop="factor35" width="300"/>
+      <el-table-column label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" align="center" prop="factor36" width="480"/>
+      <el-table-column label="制定了健全的稳定核心人员的措施,并有效执行" align="center" prop="factor37" width="320"/>
+      <el-table-column label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" align="center" prop="factor38" width="400"/>
+      <el-table-column label="核心人员均具备相应的专业知识和技术能力" align="center" prop="factor39" width="300"/>
+      <el-table-column label="建立了良好的成本管控措施" align="center" prop="factor40" width="240"/>
+      <el-table-column label="能够承担产品生产、配套相关成本,能够持续盈利" align="center" prop="factor41" width="320"/>
+      <el-table-column label="经济性好,企业能够持续获利" align="center" prop="factor42" width="250"/>
+      <el-table-column label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" align="center" prop="factor43" width="514"/>
+      <el-table-column label="产品推广应用情况良好,市场认可度高,客户满意度高" align="center" prop="factor44" width="340"/>
+      <el-table-column label="最终等级" align="center" prop="finalGrade" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:score:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:score:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改厂家得分对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="500px">
+        <el-form-item label="厂家名称" prop="factoryName">
+          <el-input v-model="form.factoryName" placeholder="请输入厂家名称" />
+
+        </el-form-item>
+        <el-form-item label="生产线运行情况良好" prop="factor1">
+
+          <el-select v-model="form.factor1" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产过程耗材稳定供应" prop="factor2">
+<!--          <el-input v-model="form.factor2" placeholder="请输入生产过程耗材稳定供应" />-->
+          <el-select v-model="form.factor2" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="定期进行生产线维护保养" prop="factor3">
+<!--          <el-input v-model="form.factor3" placeholder="请输入定期进行生产线维护保养" />-->
+          <el-select v-model="form.factor3" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="质量体系完善且运行情况良好" prop="factor4">
+<!--          <el-input v-model="form.factor4" placeholder="请输入质量体系完善且运行情况良好" />-->
+          <el-select v-model="form.factor4"  >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" prop="factor5">
+<!--          <el-input v-model="form.factor5" placeholder="请输入建立了与配套元器件生产相适应的生产管理系统且运行情况良好" />-->
+          <el-select v-model="form.factor5" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="重要岗位人员定期进行专业培训" prop="factor6">
+<!--          <el-input v-model="form.factor6" placeholder="请输入重要岗位人员定期进行专业培训" />-->
+          <el-select v-model="form.factor6" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品批次管理有具体文件内容规定,是否有管理责任人" prop="factor7">
+<!--          <el-input v-model="form.factor7" placeholder="请输入产品批次管理有具体文件内容规定,是否有管理责任人" />-->
+          <el-select v-model="form.factor7" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="未发生过因产品批次问题引起的交付问题" prop="factor8">
+<!--          <el-input v-model="form.factor8" placeholder="请输入未发生过因产品批次问题引起的交付问题" />-->
+          <el-select v-model="form.factor8" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品全寿命周期可追溯,质量一致性高" prop="factor9">
+<!--          <el-input v-model="form.factor9" placeholder="请输入产品全寿命周期可追溯,质量一致性高" />-->
+          <el-select v-model="form.factor9" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产工艺已完成定型,且有相关产品生产经历" prop="factor10">
+<!--          <el-input v-model="form.factor10" placeholder="请输入生产工艺已完成定型,且有相关产品生产经历" />-->
+          <el-select v-model="form.factor10" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有明确生产过程控制技术手段" prop="factor11">
+<!--          <el-input v-model="form.factor11" placeholder="请输入有明确生产过程控制技术手段" />-->
+          <el-select v-model="form.factor11" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="关键工序有明确的评价准则、严格的监控措施和完整记录" prop="factor12">
+<!--          <el-input v-model="form.factor12" placeholder="请输入关键工序有明确的评价准则、严格的监控措施和完整记录" />-->
+          <el-select v-model="form.factor12" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="芯片的合格率水平满足要求" prop="factor13">
+<!--          <el-input v-model="form.factor13" placeholder="请输入芯片的合格率水平满足要求" />-->
+          <el-select v-model="form.factor13" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="封装的合格率水平满足要求" prop="factor14">
+<!--          <el-input v-model="form.factor14" placeholder="请输入封装的合格率水平满足要求" />-->
+          <el-select v-model="form.factor14" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="未发生过中重大失效问题" prop="factor15">
+<!--          <el-input v-model="form.factor15" placeholder="请输入未发生过中重大失效问题" />-->
+          <el-select v-model="form.factor15" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对重大失效问题,建立有应急处理机制,且严格执行。" prop="factor16">
+<!--          <el-input v-model="form.factor16" placeholder="请输入针对重大失效问题,建立有应急处理机制,且严格执行。" />-->
+          <el-select v-model="form.factor16" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对不同的核心零部件,由相应的采购策略" prop="factor17">
+<!--          <el-input v-model="form.factor17" placeholder="请输入针对不同的核心零部件,由相应的采购策略" />-->
+          <el-select v-model="form.factor17" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="具有稳定可靠的供货渠道" prop="factor18">
+<!--          <el-input v-model="form.factor18" placeholder="请输入具有稳定可靠的供货渠道" />-->
+          <el-select v-model="form.factor18" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="核心零部件检验制度完善" prop="factor19">
+<!--          <el-input v-model="form.factor19" placeholder="请输入核心零部件检验制度完善" />-->
+          <el-select v-model="form.factor19" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="无重大质量问题发生" prop="factor20">
+<!--          <el-input v-model="form.factor20" placeholder="请输入无重大质量问题发生" />-->
+          <el-select v-model="form.factor20" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="生产产能充足" prop="factor21">
+<!--          <el-input v-model="form.factor21" placeholder="请输入生产产能充足" />-->
+          <el-select v-model="form.factor21" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产能调度分配机制成熟完善,能够满足要求" prop="factor22">
+<!--          <el-input v-model="form.factor22" placeholder="请输入产能调度分配机制成熟完善,能够满足要求" />-->
+          <el-select v-model="form.factor22" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="根据产品自身和用户应用需求特点,建立合理的库存策略" prop="factor23">
+<!--          <el-input v-model="form.factor23" placeholder="请输入根据产品自身和用户应用需求特点,建立合理的库存策略" />-->
+          <el-select v-model="form.factor23" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="针对有供货风险的零部件有合理的进出库管理策略" prop="factor24">
+<!--          <el-input v-model="form.factor24" placeholder="请输入针对有供货风险的零部件有合理的进出库管理策略" />-->
+          <el-select v-model="form.factor24" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="温湿度等存储环境条件满足要求" prop="factor25">
+<!--          <el-input v-model="form.factor25" placeholder="请输入温湿度等存储环境条件满足要求" />-->
+          <el-select v-model="form.factor25" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有稳定的核心零部件、半成品/成品库存量" prop="factor26">
+<!--          <el-input v-model="form.factor26" placeholder="请输入有稳定的核心零部件、半成品/成品库存量" />-->
+          <el-select v-model="form.factor26" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="该产品符合技术发展趋势,为企业主攻主流产品" prop="factor27">
+<!--          <el-input v-model="form.factor27" placeholder="请输入该产品符合技术发展趋势,为企业主攻主流产品" />-->
+          <el-select v-model="form.factor27" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" prop="factor28">
+<!--          <el-input v-model="form.factor28" placeholder="请输入产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" />-->
+          <el-select v-model="form.factor28" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定有完善的元器件状态管控制度或措施,且有效执行" prop="factor29">
+<!--          <el-input v-model="form.factor29" placeholder="请输入制定有完善的元器件状态管控制度或措施,且有效执行" />-->
+          <el-select v-model="form.factor29" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="器件状态清晰明确,且状态变更过程完全受控" prop="factor30">
+<!--          <el-input v-model="form.factor30" placeholder="请输入器件状态清晰明确,且状态变更过程完全受控" />-->
+          <el-select v-model="form.factor30" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品供货周期合理,能满足用户采购要求" prop="factor31">
+<!--          <el-input v-model="form.factor31" placeholder="请输入产品供货周期合理,能满足用户采购要求" />-->
+          <el-select v-model="form.factor31" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="最小起订量设置合理" prop="factor32">
+<!--          <el-input v-model="form.factor32" placeholder="请输入最小起订量设置合理" />-->
+          <el-select v-model="form.factor32" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定有相应的供应商准入、选择、评价等制度,并严格执行" prop="factor33">
+<!--          <el-input v-model="form.factor33" placeholder="请输入制定有相应的供应商准入、选择、评价等制度,并严格执行" />-->
+          <el-select v-model="form.factor33" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="有长期稳定合作的核心关键的外协单位" prop="factor34">
+<!--          <el-input v-model="form.factor34" placeholder="请输入有长期稳定合作的核心关键的外协单位" />-->
+          <el-select v-model="form.factor34" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="能够及时为用户提供应用全过程的技术售后服务" prop="factor35">
+<!--          <el-input v-model="form.factor35" placeholder="请输入能够及时为用户提供应用全过程的技术售后服务" />-->
+          <el-select v-model="form.factor35" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" prop="factor36">
+<!--          <el-input v-model="form.factor36" placeholder="请输入了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" />-->
+          <el-select v-model="form.factor36" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="制定了健全的稳定核心人员的措施,并有效执行" prop="factor37">
+<!--          <el-input v-model="form.factor37" placeholder="请输入制定了健全的稳定核心人员的措施,并有效执行" />-->
+          <el-select v-model="form.factor37" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" prop="factor38">
+<!--          <el-input v-model="form.factor38" placeholder="请输入成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" />-->
+          <el-select v-model="form.factor38" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="核心人员均具备相应的专业知识和技术能力" prop="factor39">
+<!--          <el-input v-model="form.factor39" placeholder="请输入核心人员均具备相应的专业知识和技术能力" />-->
+          <el-select v-model="form.factor39" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="建立了良好的成本管控措施" prop="factor40">
+<!--          <el-input v-model="form.factor40" placeholder="请输入建立了良好的成本管控措施" />-->
+          <el-select v-model="form.factor40" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="能够承担产品生产、配套相关成本,能够持续盈利" prop="factor41">
+<!--          <el-input v-model="form.factor41" placeholder="请输入能够承担产品生产、配套相关成本,能够持续盈利" />-->
+          <el-select v-model="form.factor41" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="经济性好,企业能够持续获利" prop="factor42">
+<!--          <el-input v-model="form.factor42" placeholder="请输入经济性好,企业能够持续获利" />-->
+          <el-select v-model="form.factor42" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" prop="factor43">
+<!--          <el-input v-model="form.factor43" placeholder="请输入和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" />-->
+          <el-select v-model="form.factor43" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="产品推广应用情况良好,市场认可度高,客户满意度高" prop="factor44">
+<!--          <el-input v-model="form.factor44" placeholder="请输入产品推广应用情况良好,市场认可度高,客户满意度高" />-->
+          <el-select v-model="form.factor44" >
+            <el-option
+              v-for="item in options"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="最终等级" prop="finalGrade">
+          <el-input v-model="form.finalGrade" placeholder="请输入最终等级" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 训练数据导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog
+      title="训练"
+      :visible.sync="dialogVisible"
+      width="20%"
+      style="top:225px"
+
+    >
+      <div  align="center">
+        <el-progress
+          type="circle"
+          :percentage="Progress"
+          width="80"
+          :status="progressStatus"
+        ></el-progress>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listScore, getScore, delScore, addScore, updateScore,train } from "@/api/biz/score";
+import { getToken } from "@/utils/auth";
+export default {
+  name: "Score",
+  data() {
+    return {
+      options:[{
+        value: '是',
+        label: '是'
+      }, {
+        value: '否',
+        label: '否'
+      }],
+      dialogVisible:false,
+      Progress:0,
+      // 导入参数
+      upload: {
+        // 是否显示弹出层(导入)
+        open: false,
+        // 弹出层标题(导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/biz/score/importData"
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 厂家得分表格数据
+      scoreList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        factoryName: null,
+        factor1: null,
+        factor2: null,
+        factor3: null,
+        factor4: null,
+        factor5: null,
+        factor6: null,
+        factor7: null,
+        factor8: null,
+        factor9: null,
+        factor10: null,
+        factor11: null,
+        factor12: null,
+        factor13: null,
+        factor14: null,
+        factor15: null,
+        factor16: null,
+        factor17: null,
+        factor18: null,
+        factor19: null,
+        factor20: null,
+        factor21: null,
+        factor22: null,
+        factor23: null,
+        factor24: null,
+        factor25: null,
+        factor26: null,
+        factor27: null,
+        factor28: null,
+        factor29: null,
+        factor30: null,
+        factor31: null,
+        factor32: null,
+        factor33: null,
+        factor34: null,
+        factor35: null,
+        factor36: null,
+        factor37: null,
+        factor38: null,
+        factor39: null,
+        factor40: null,
+        factor41: null,
+        factor42: null,
+        factor43: null,
+        factor44: null,
+        finalGrade: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  computed: {
+    progressStatus() {
+      return this.Progress === 100 ? 'success' : '';
+    },
+  },
+  methods: {
+    mytrain(){
+      let result;
+      train().then(res=>{
+        result = res
+
+      })
+      // 模拟进度变化,每0.1秒更新一次,共更新100次
+      this.dialogVisible = true
+      const intervalId = setInterval(() => {
+
+        this.Progress++;
+        // 如果进度达到100%,清除定时器
+        if (this.Progress >= 100) {
+          this.Progress = 0
+          clearInterval(intervalId);
+          this.dialogVisible = false
+
+          if(result.code===200)
+            this.$modal.msgSuccess(result.msg);
+          else {
+            this.$modal.msgError(result.msg);
+          }
+        }
+      }, 100);
+
+    },
+    /** 查询厂家得分列表 */
+    getList() {
+      this.loading = true;
+      listScore(this.queryParams).then(response => {
+        this.scoreList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        factoryName: null,
+        factor1: null,
+        factor2: null,
+        factor3: null,
+        factor4: null,
+        factor5: null,
+        factor6: null,
+        factor7: null,
+        factor8: null,
+        factor9: null,
+        factor10: null,
+        factor11: null,
+        factor12: null,
+        factor13: null,
+        factor14: null,
+        factor15: null,
+        factor16: null,
+        factor17: null,
+        factor18: null,
+        factor19: null,
+        factor20: null,
+        factor21: null,
+        factor22: null,
+        factor23: null,
+        factor24: null,
+        factor25: null,
+        factor26: null,
+        factor27: null,
+        factor28: null,
+        factor29: null,
+        factor30: null,
+        factor31: null,
+        factor32: null,
+        factor33: null,
+        factor34: null,
+        factor35: null,
+        factor36: null,
+        factor37: null,
+        factor38: null,
+        factor39: null,
+        factor40: null,
+        factor41: null,
+        factor42: null,
+        factor43: null,
+        factor44: null,
+        finalGrade: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加厂家得分";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getScore(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改厂家得分";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateScore(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addScore(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除厂家得分编号为"' + ids + '"的数据项?').then(function() {
+        return delScore(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('biz/train/importTemplate', {
+      }, `train_dataset_template_${new Date().getTime()}.xlsx`)
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('biz/score/export', {
+        ...this.queryParams
+      }, `score_${new Date().getTime()}.xlsx`)
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "训练数据集导入";
+      this.upload.open = true;
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+// 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+
+  }
+};
+</script>
+<style>
+
+.el-checkbox__inner {
+  border-color: #8492a6 !important;
+}
+.app-container {
+  min-height: 100vh;
+  background: radial-gradient(circle at 10% 20%, #3A71A8 0%, rgb(239, 249, 249) 90%);
+}
+</style>

+ 739 - 0
cirs-ui/src/views/biz/scoretask/index.vue

@@ -0,0 +1,739 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="任务名称" prop="taskName">
+        <el-input
+          v-model="queryParams.taskName"
+          placeholder="请输入任务名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <el-row :gutter="10" class="mb8">
+    <el-col :span="1.5">
+      <el-button
+        type="danger"
+        plain
+        icon="el-icon-delete"
+        size="mini"
+        :disabled="multiple"
+        @click="handleDelete"
+        v-hasPermi="['biz:task:remove']"
+      >删除</el-button>
+    </el-col>
+    <el-col :span="1.5">
+      <el-button
+        type="info"
+        icon="el-icon-upload2"
+        size="mini"
+        @click="handleImport"
+        v-hasPermi="['biz:detail:import']"
+      >导入</el-button>
+    </el-col>
+
+    <el-col :span="1.5">
+      <el-button
+        type="warning"
+        plain
+        icon="el-icon-download"
+        size="mini"
+        @click="handleExport"
+        v-hasPermi="['biz:detail:export']"
+      >选择任务导出任务详情</el-button>
+    </el-col>
+    <el-col :span="1.5" >
+      <el-button
+
+        type='success'
+        plain
+        icon="el-icon-video-play"
+        size="mini"
+        @click="handleRun"
+      >验证运行</el-button>
+
+    </el-col>
+    <el-col :span="1.5" >
+      <el-button
+
+        type='info'
+        plain
+        icon="el-icon-document"
+        size="mini"
+        @click="gettraindata"
+      >查询训练数据</el-button>
+
+    </el-col>
+    <el-col :span="1.5" >
+      <el-button
+
+        type='info'
+        plain
+        icon="el-icon-document"
+        size="mini"
+        @click="getverificationdata"
+      >查询验证数据</el-button>
+
+    </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="scoretaskList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="任务名称" align="center" prop="taskName" />
+      <el-table-column label="状态" align="center" prop="taskStatus" />
+      <el-table-column label="任务数" align="center" prop="subtaskNum" />
+      <el-table-column label="开始时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="结束时间" align="center" prop="endTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="完成率" align="center" prop="progress" />
+      <el-table-column label="准确率" align="center" prop="accuracyRate" />
+      <el-table-column label="召回率" align="center" prop="recallRate" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['biz:scoretask:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['biz:scoretask:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 任务详情导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 添加或修改打分算法验证任务对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="任务名称" prop="taskName">
+          <el-input v-model="form.taskName" placeholder="请输入任务名称" />
+        </el-form-item>
+        <el-form-item label="任务数" prop="subtaskNum">
+          <el-input v-model="form.subtaskNum" placeholder="请输入任务数" />
+        </el-form-item>
+        <el-form-item label="开始时间" prop="startTime">
+          <el-date-picker clearable
+            v-model="form.startTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="结束时间" prop="endTime">
+          <el-date-picker clearable
+            v-model="form.endTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="完成率" prop="progress">
+          <el-input v-model="form.progress" placeholder="请输入完成率" />
+        </el-form-item>
+        <el-form-item label="准确率" prop="accuracyRate">
+          <el-input v-model="form.accuracyRate" placeholder="请输入准确率" />
+        </el-form-item>
+        <el-form-item label="召回率" prop="recallRate">
+          <el-input v-model="form.recallRate" placeholder="请输入召回率" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="训练数据" :visible.sync="traindatavisible" width="800px" append-to-body>
+
+      <el-table v-loading = tloading :data="traindataset" >
+        <el-table-column label="厂家名称" align="center" prop="factoryName"  />
+        <el-table-column label="生产线运行情况良好" align="center" prop="factor1" width="140"/>
+        <el-table-column label="生产过程耗材稳定供应" align="center" prop="factor2" width="170"/>
+        <el-table-column label="定期进行生产线维护保养" align="center" prop="factor3" width="180"/>
+        <el-table-column label="质量体系完善且运行情况良好" align="center" prop="factor4" width="200"/>
+        <el-table-column label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" align="center" prop="factor5" width="400"/>
+        <el-table-column label="重要岗位人员定期进行专业培训" align="center" prop="factor6" width="210"/>
+        <el-table-column label="产品批次管理有具体文件内容规定,是否有管理责任人" align="center" prop="factor7" width="380"/>
+        <el-table-column label="未发生过因产品批次问题引起的交付问题" align="center" prop="factor8" width="300"/>
+        <el-table-column label="产品全寿命周期可追溯,质量一致性高" align="center" prop="factor9" width="320" />
+        <el-table-column label="生产工艺已完成定型,且有相关产品生产经历" align="center" prop="factor10" width="280"/>
+        <el-table-column label="有明确生产过程控制技术手段" align="center" prop="factor11" width="270" />
+        <el-table-column label="关键工序有明确的评价准则、严格的监控措施和完整记录" align="center" prop="factor12" width="370" />
+        <el-table-column label="芯片的合格率水平满足要求" align="center" prop="factor13" width="240"/>
+        <el-table-column label="封装的合格率水平满足要求" align="center" prop="factor14" width="240" />
+        <el-table-column label="未发生过中重大失效问题" align="center" prop="factor15" width="230" />
+        <el-table-column label="针对重大失效问题,建立有应急处理机制,且严格执行。" align="center" prop="factor16" width="350"/>
+        <el-table-column label="针对不同的核心零部件,由相应的采购策略" align="center" prop="factor17" width="320" />
+        <el-table-column label="具有稳定可靠的供货渠道" align="center" prop="factor18" width="250"/>
+        <el-table-column label="核心零部件检验制度完善" align="center" prop="factor19" width="250"/>
+        <el-table-column label="无重大质量问题发生" align="center" prop="factor20" width="230"/>
+        <el-table-column label="生产产能充足" align="center" prop="factor21" width="210"/>
+        <el-table-column label="产能调度分配机制成熟完善,能够满足要求" align="center" prop="factor22" width="320"/>
+        <el-table-column label="根据产品自身和用户应用需求特点,建立合理的库存策略" align="center" prop="factor23" width="380"/>
+        <el-table-column label="针对有供货风险的零部件有合理的进出库管理策略" align="center" prop="factor24" width="360"/>
+        <el-table-column label="温湿度等存储环境条件满足要求" align="center" prop="factor25" width="260"/>
+        <el-table-column label="有稳定的核心零部件、半成品/成品库存量" align="center" prop="factor26" width="340" />
+        <el-table-column label="该产品符合技术发展趋势,为企业主攻主流产品" align="center" prop="factor27" width="360"/>
+        <el-table-column label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" align="center" prop="factor28" width="508"/>
+        <el-table-column label="制定有完善的元器件状态管控制度或措施,且有效执行" align="center" prop="factor29" width="340"/>
+        <el-table-column label="器件状态清晰明确,且状态变更过程完全受控" align="center" prop="factor30" width="320"/>
+        <el-table-column label="产品供货周期合理,能满足用户采购要求" align="center" prop="factor31" width="300"/>
+        <el-table-column label="最小起订量设置合理" align="center" prop="factor32" width="200"/>
+        <el-table-column label="制定有相应的供应商准入、选择、评价等制度,并严格执行" align="center" prop="factor33" width="370"/>
+        <el-table-column label="有长期稳定合作的核心关键的外协单位" align="center" prop="factor34" width="320"/>
+        <el-table-column label="能够及时为用户提供应用全过程的技术售后服务" align="center" prop="factor35" width="300"/>
+        <el-table-column label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" align="center" prop="factor36" width="480"/>
+        <el-table-column label="制定了健全的稳定核心人员的措施,并有效执行" align="center" prop="factor37" width="320"/>
+        <el-table-column label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" align="center" prop="factor38" width="400"/>
+        <el-table-column label="核心人员均具备相应的专业知识和技术能力" align="center" prop="factor39" width="300"/>
+        <el-table-column label="建立了良好的成本管控措施" align="center" prop="factor40" width="240"/>
+        <el-table-column label="能够承担产品生产、配套相关成本,能够持续盈利" align="center" prop="factor41" width="320"/>
+        <el-table-column label="经济性好,企业能够持续获利" align="center" prop="factor42" width="250"/>
+        <el-table-column label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" align="center" prop="factor43" width="514"/>
+        <el-table-column label="产品推广应用情况良好,市场认可度高,客户满意度高" align="center" prop="factor44" width="340"/>
+        <el-table-column label="最终等级" align="center" prop="finalGrade" />
+        <el-table-column label="trained" align="center" >1</el-table-column>
+        <el-table-column label="tested" align="center" >0</el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="ttotal>0"
+        :total="ttotal"
+        :page.sync="scorequery.pageNum"
+        :limit.sync="scorequery.pageSize"
+        @pagination="gettraindata"
+      />
+    </el-dialog>
+    <el-dialog title="验证数据" :visible.sync="verificationdatavisible" width="800px" append-to-body>
+
+      <el-table v-loading = vloading :data="verificationtabledata" >
+        <el-table-column label="厂家名称" align="center" prop="factoryName"  />
+        <el-table-column label="生产线运行情况良好" align="center" prop="factor1" width="140"/>
+        <el-table-column label="生产过程耗材稳定供应" align="center" prop="factor2" width="170"/>
+        <el-table-column label="定期进行生产线维护保养" align="center" prop="factor3" width="180"/>
+        <el-table-column label="质量体系完善且运行情况良好" align="center" prop="factor4" width="200"/>
+        <el-table-column label="建立了与配套元器件生产相适应的生产管理系统且运行情况良好" align="center" prop="factor5" width="400"/>
+        <el-table-column label="重要岗位人员定期进行专业培训" align="center" prop="factor6" width="210"/>
+        <el-table-column label="产品批次管理有具体文件内容规定,是否有管理责任人" align="center" prop="factor7" width="380"/>
+        <el-table-column label="未发生过因产品批次问题引起的交付问题" align="center" prop="factor8" width="300"/>
+        <el-table-column label="产品全寿命周期可追溯,质量一致性高" align="center" prop="factor9" width="320" />
+        <el-table-column label="生产工艺已完成定型,且有相关产品生产经历" align="center" prop="factor10" width="280"/>
+        <el-table-column label="有明确生产过程控制技术手段" align="center" prop="factor11" width="270" />
+        <el-table-column label="关键工序有明确的评价准则、严格的监控措施和完整记录" align="center" prop="factor12" width="370" />
+        <el-table-column label="芯片的合格率水平满足要求" align="center" prop="factor13" width="240"/>
+        <el-table-column label="封装的合格率水平满足要求" align="center" prop="factor14" width="240" />
+        <el-table-column label="未发生过中重大失效问题" align="center" prop="factor15" width="230" />
+        <el-table-column label="针对重大失效问题,建立有应急处理机制,且严格执行。" align="center" prop="factor16" width="350"/>
+        <el-table-column label="针对不同的核心零部件,由相应的采购策略" align="center" prop="factor17" width="320" />
+        <el-table-column label="具有稳定可靠的供货渠道" align="center" prop="factor18" width="250"/>
+        <el-table-column label="核心零部件检验制度完善" align="center" prop="factor19" width="250"/>
+        <el-table-column label="无重大质量问题发生" align="center" prop="factor20" width="230"/>
+        <el-table-column label="生产产能充足" align="center" prop="factor21" width="210"/>
+        <el-table-column label="产能调度分配机制成熟完善,能够满足要求" align="center" prop="factor22" width="320"/>
+        <el-table-column label="根据产品自身和用户应用需求特点,建立合理的库存策略" align="center" prop="factor23" width="380"/>
+        <el-table-column label="针对有供货风险的零部件有合理的进出库管理策略" align="center" prop="factor24" width="360"/>
+        <el-table-column label="温湿度等存储环境条件满足要求" align="center" prop="factor25" width="260"/>
+        <el-table-column label="有稳定的核心零部件、半成品/成品库存量" align="center" prop="factor26" width="340" />
+        <el-table-column label="该产品符合技术发展趋势,为企业主攻主流产品" align="center" prop="factor27" width="360"/>
+        <el-table-column label="产品用户市场需求量大,有长期生产、供货意愿和策略,有相关产品系列化发展策略" align="center" prop="factor28" width="508"/>
+        <el-table-column label="制定有完善的元器件状态管控制度或措施,且有效执行" align="center" prop="factor29" width="340"/>
+        <el-table-column label="器件状态清晰明确,且状态变更过程完全受控" align="center" prop="factor30" width="320"/>
+        <el-table-column label="产品供货周期合理,能满足用户采购要求" align="center" prop="factor31" width="300"/>
+        <el-table-column label="最小起订量设置合理" align="center" prop="factor32" width="200"/>
+        <el-table-column label="制定有相应的供应商准入、选择、评价等制度,并严格执行" align="center" prop="factor33" width="370"/>
+        <el-table-column label="有长期稳定合作的核心关键的外协单位" align="center" prop="factor34" width="320"/>
+        <el-table-column label="能够及时为用户提供应用全过程的技术售后服务" align="center" prop="factor35" width="300"/>
+        <el-table-column label="了解用户对于国产元器件的应用需求及其发展趋势,了解用户的配套供货需求" align="center" prop="factor36" width="480"/>
+        <el-table-column label="制定了健全的稳定核心人员的措施,并有效执行" align="center" prop="factor37" width="320"/>
+        <el-table-column label="成立有专门的军品管理部门和科研生产技术团队,核心团队稳定" align="center" prop="factor38" width="400"/>
+        <el-table-column label="核心人员均具备相应的专业知识和技术能力" align="center" prop="factor39" width="300"/>
+        <el-table-column label="建立了良好的成本管控措施" align="center" prop="factor40" width="240"/>
+        <el-table-column label="能够承担产品生产、配套相关成本,能够持续盈利" align="center" prop="factor41" width="320"/>
+        <el-table-column label="经济性好,企业能够持续获利" align="center" prop="factor42" width="250"/>
+        <el-table-column label="和供应链各节点单位之间建立了良好的信息沟通机制,能有效沟通信息,协调解决问题" align="center" prop="factor43" width="514"/>
+        <el-table-column label="产品推广应用情况良好,市场认可度高,客户满意度高" align="center" prop="factor44" width="340"/>
+        <el-table-column label="最终等级" align="center" prop="finalGrade" />
+        <el-table-column label="算法计算的最终等级" align="center" prop="calculatedGrade" />
+
+        <el-table-column label="trained" align="center" >0</el-table-column>
+        <el-table-column label="tested" align="center" >1</el-table-column>
+      </el-table>
+      <pagination
+        v-show="vtotal>0"
+        :total="vtotal"
+        :page.sync="vpageNum"
+        :limit.sync="vpageSize"
+        @pagination="getverificationdata"
+      />
+    </el-dialog>
+
+    <el-dialog
+      :title=progresstitle
+      :visible.sync="dialogVisible"
+      width="20%"
+      style="top:225px"
+    >
+      <div  align="center">
+        <el-progress
+          type="circle"
+          :percentage="ProgressMap[taskidToIndexMap.get(ids[0])]"
+          width="80"
+          :status="progressStatus"
+        ></el-progress>
+      </div>
+
+
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listScoretask, getScoretask, delScoretask, addScoretask, updateScoretask,verification,getTraindataset,updateDetails,getUpdatedDetails } from "@/api/biz/scoretask";
+import dayjs from "dayjs";
+
+import { getToken } from "@/utils/auth";
+import {Loading, Message} from "element-ui";
+import service from "../../../utils/request";
+import errorCode from "../../../utils/errorCode";
+import {updateTask} from "../../../api/biz/task";
+
+export default {
+  name: "Scoretask",
+  data() {
+    return {
+      vpageNum:1,
+      vpageSize:10,
+
+      progresstitle:'',
+      dialogVisible:false,
+      // 遮罩层
+      loading: true,
+      vloading:true,
+      tloading:true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      ttotal:0,
+      vtotal:0,
+      // 打分算法验证任务表格数据
+      scoretaskList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskName: null,
+        taskStatus: null,
+        subtaskNum: null,
+        startTime: null,
+        endTime: null,
+        progress: null,
+        accuracyRate: null,
+        recallRate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      // 导入参数
+      upload: {
+        // 是否显示弹出层(导入)
+        open: false,
+        // 弹出层标题(导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/biz/scoretaskdetail/importData"
+      },
+      traindatavisible:false,
+      verificationdatavisible:false,
+      traindataset:[],
+      verificationdataset:[],
+      ProgressMap: [],
+      taskidToIndexMap: new Map(),
+      verificationtabledata:[],
+      progressStatus:'',
+      scorequery :{
+        pageNum: 1,
+        pageSize: 10,
+      },
+
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    gettraindata(){
+
+      getTraindataset(this.scorequery).then(res=>{
+        this.traindatavisible = true
+        // console.log(res)
+
+        this.tloading = false
+        this.ttotal = res.total;
+        this.traindataset = res.rows
+
+
+      })
+
+    },
+    getverificationdata(){
+      // this.querywithids.ids = this.ids
+      if(this.ids.length===0){
+        this.$modal.msg("请先选择查看的任务!")
+        return
+      }
+      getUpdatedDetails(this.ids, this.vpageNum, this.vpageSize ).then(res=>{
+        this.verificationdatavisible = true
+        console.log(res)
+        this.verificationtabledata = res.list
+        this.vloading = false
+        this.vtotal = res.total;
+
+      })
+
+    },
+
+    handleRun() {
+      if(this.ids.length>1) {
+        this.$modal.msg("不能选择多个任务!")
+        return ;
+      }
+      if(this.ids.length===0){
+        this.$modal.msg("请先选中验证任务!")
+        return ;
+      }
+      this.progresstitle = "验证任务"+this.ids[0]+"运行"
+      this.progressStatus = ''
+      this.dialogVisible = true
+      let taskids = this.ids;
+      const dayjs = require('dayjs');
+
+      for (let taskid of taskids) {
+        let index = this.taskidToIndexMap.get(taskid)
+        getScoretask(taskid).then(response => {
+
+          let task = response.data;
+          task.startTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
+          let code = 0;
+          this.ProgressMap[index] = 0;
+          verification(taskid).then(res => {
+            console.log(res);
+            code = res.code;
+            if (res.code === 200) {
+              this.verificationdataset = JSON.parse(res.data).dataSet;
+              //更新任务详情表
+              updateDetails(this.verificationdataset).then(res1=>{
+                console.log(res1.msg)
+              })
+
+              // console.log(this.verificationdataset)
+
+              task.accuracyRate = res.data.accuracyRate
+              task.recallRate = res.data.recallRate
+              task.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
+              task.taskStatus = '运行成功';
+              task.progress = 100;
+              //这里需要更新数据库task
+              updateScoretask(task).then(res2=>{
+                console.log(res2.msg)
+              })
+            }
+          });
+
+          // 使用闭包确保每个循环迭代中创建一个新的 taskid
+          const createInterval = (taskId) => {
+            // 模拟进度变化,每0.1秒更新一次,共更新100次
+            const intervalId = setInterval(() => {
+              let idx = this.taskidToIndexMap.get(taskId)
+              // this.ProgressMap[index] = this.ProgressMap[index] + 1
+              this.$set(this.ProgressMap, idx, this.ProgressMap[idx] + 1);
+              if(code!==200&&code!==0){
+                clearInterval(intervalId);
+                this.$message.error('任务' + taskId + '运行失败!');
+              }
+              // 如果进度达到100%,清除定时器并调用后端算法
+              if (this.ProgressMap[idx] >= 100) {
+                this.$set(this.ProgressMap, idx, 0);
+                clearInterval(intervalId);
+                this.progressStatus = 'success'
+                this.dialogVisible = false
+
+                if(code===200){
+                  this.$message.success('任务' + taskId + '运行成功!');
+                  this.getList();
+                }
+              }
+            }, 100);
+          };
+
+          // 调用闭包函数,传入当前的 taskid
+
+          createInterval(taskid);
+        });
+      }
+    },
+    /** 查询打分算法验证任务列表 */
+    getList() {
+      this.loading = true;
+      listScoretask(this.queryParams).then(response => {
+        this.scoretaskList = response.rows;
+        let task;
+        let idx = 0;
+        for(task of this.scoretaskList){
+          this.taskidToIndexMap.set(task.id, idx)
+          // this.ProgressMap.push(task.progress)
+          this.ProgressMap.push(0)
+          idx++;
+        }
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        taskName: null,
+        taskStatus: null,
+        subtaskNum: null,
+        startTime: null,
+        endTime: null,
+        progress: null,
+        accuracyRate: null,
+        recallRate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加打分算法验证任务";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getScoretask(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改打分算法验证任务";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateScoretask(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addScoretask(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除打分算法验证任务编号为"' + ids + '"的数据项?').then(function() {
+        return delScoretask(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+
+      if(this.ids.length===0) {
+        this.importTemplate()
+      }else {
+        // this.download('biz/scoretaskdetail/export', this.ids, `taskdetail_${new Date().getTime()}.xlsx`)
+        let downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
+
+        let taskids = this.ids;
+        return service.post('biz/scoretaskdetail/export', taskids, {
+          headers: { 'Content-Type': 'application/json' },
+          responseType: 'blob',
+
+        }).then(async (data) => {
+          // Debug: 输出实际的响应 Content-Type
+          // console.log(data)
+          // console.log("Response Content-Type:", data.type);
+
+          const isBlob = (data.type !== 'application/json');
+          if (isBlob) {
+            const blob = new Blob([data])
+            saveAs(blob, `scoretaskdetail_${new Date().getTime()}.xlsx`)
+          } else {
+            const resText = await data.text();
+            const rspObj = JSON.parse(resText);
+            const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
+            Message.error(errMsg);
+          }
+          downloadLoadingInstance.close();
+        }).catch((error) => {
+          console.error(error)
+          Message.error('下载文件出现错误,请联系管理员!')
+          downloadLoadingInstance.close();
+        })
+      }
+
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "任务详情导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('biz/scoretaskdetail/importTemplate', {
+      }, `scoretaskdetail_template_${new Date().getTime()}.xlsx`)
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+// 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+  }
+};
+</script>
+
+<style>
+
+.el-checkbox__inner {
+  border-color: #8492a6 !important;
+}
+.app-container {
+  min-height: 100vh;
+  background: radial-gradient(circle at 10% 20%, #3A71A8 0%, rgb(239, 249, 249) 90%);
+}
+
+</style>
+

+ 40 - 27
cirs-ui/src/views/biz/task/index.vue

@@ -86,17 +86,17 @@
 <!--          v-hasPermi="['biz:task:edit']"-->
 <!--        >修改</el-button>-->
 <!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="danger"-->
-<!--          plain-->
-<!--          icon="el-icon-delete"-->
-<!--          size="mini"-->
-<!--          :disabled="multiple"-->
-<!--          @click="handleDelete"-->
-<!--          v-hasPermi="['biz:task:remove']"-->
-<!--        >删除</el-button>-->
-<!--      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['biz:task:remove']"
+        >删除</el-button>
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="info"
@@ -299,15 +299,15 @@
         <el-table-column label="标准结果3" align="center" prop="result3" />
         <el-table-column label="标准结果4" align="center" prop="result4" />
         <el-table-column label="标准结果5" align="center" prop="result5" />
-        <el-table-column label="trained" align="center" >{{1}}</el-table-column>
-        <el-table-column label="tested" align="center" >{{0}}</el-table-column>
+        <el-table-column label="trained" align="center" >1</el-table-column>
+        <el-table-column label="tested" align="center" >0</el-table-column>
       </el-table>
 
       <pagination
         v-show="ttotal>0"
         :total="ttotal"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
+        :page.sync="query.pageNum"
+        :limit.sync="query.pageSize"
         @pagination="gettraindata"
       />
     </el-dialog>
@@ -327,14 +327,14 @@
         <el-table-column label="计算结果4" align="center" prop="calculate4" />
         <el-table-column label="计算结果5" align="center" prop="calculate5" />
 
-        <el-table-column label="trained" align="center" >{{0}}</el-table-column>
-        <el-table-column label="tested" align="center" >{{1}}</el-table-column>
+        <el-table-column label="trained" align="center" >0</el-table-column>
+        <el-table-column label="tested" align="center" >1</el-table-column>
       </el-table>
       <pagination
         v-show="vtotal>0"
         :total="vtotal"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
+        :page.sync="vpageNum"
+        :limit.sync="vpageSize"
         @pagination="getverificationdata"
       />
     </el-dialog>
@@ -442,6 +442,12 @@ export default {
       taskidToIndexMap: new Map(),
       verificationtabledata:[],
       progressStatus:'',
+      query :{
+        pageNum: 1,
+        pageSize: 10,
+      },
+      vpageNum:1,
+      vpageSize:10,
     };
 
   },
@@ -457,7 +463,7 @@ export default {
 
 
     gettraindata(){
-      getTraindataset().then(res=>{
+      getTraindataset(this.query).then(res=>{
         this.traindatavisible = true
         // console.log(res)
 
@@ -471,15 +477,21 @@ export default {
     },
     getverificationdata(){
 
-      getUpdatedDetails(this.ids).then(res=>{
-        this.verificationdatavisible = true
 
-        this.verificationtabledata = res.rows
+      if(this.ids.length===0){
+        this.$modal.msg("请先选择查看的任务!")
+        return
+      }
+      getUpdatedDetails(this.ids, this.vpageNum, this.vpageSize ).then(res=>{
+        this.verificationdatavisible = true
+        console.log(res)
+        this.verificationtabledata = res.list
         this.vloading = false
         this.vtotal = res.total;
 
       })
 
+
     },
 
     handleRun() {
@@ -506,10 +518,11 @@ export default {
           let code = 0;
           this.ProgressMap[index] = 0;
           verification(taskid).then(res => {
-            console.log(res);
+            let result = JSON.parse(res.data).data
             code = res.code;
             if (res.code === 200) {
-              this.verificationdataset = JSON.parse(res.data).dataSet;
+              this.verificationdataset = result.dataSet;
+
               //更新任务详情表
               updateDetails(this.verificationdataset).then(res1=>{
                 console.log(res1.msg)
@@ -517,8 +530,8 @@ export default {
 
               // console.log(this.verificationdataset)
 
-              task.accuracyRate = res.data.accuracyRate
-              task.recallRate = res.data.recallRate
+              task.accuracyRate = result.accuracyRate+'%'
+              task.recallRate = result.recallRate+'%'
               task.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
               task.taskStatus = '运行成功';
               task.progress = 100;