From 184302cb9d4bdd4a9d69d7c6fcc2e25ad597d962 Mon Sep 17 00:00:00 2001
From: "DESKTOP-DDTUS3E\\yaxin" <daixiaoyi0622@gmail.com>
Date: Tue, 13 Aug 2024 15:39:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9C=9F=E5=AE=9E=E5=88=A0?=
 =?UTF-8?q?=E9=99=A4=EF=BC=88=E6=89=B9=E9=87=8F=EF=BC=89=E3=80=81=E6=81=A2?=
 =?UTF-8?q?=E5=A4=8D=E5=88=A0=E9=99=A4=EF=BC=88=E6=89=B9=E9=87=8F=EF=BC=89?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=8E=9F=E9=80=BB=E8=BE=91=E5=88=A0?=
 =?UTF-8?q?=E9=99=A4=E6=8E=A5=E5=8F=A3=E4=B8=AD=E7=9A=84=E7=9F=A5=E8=AF=86?=
 =?UTF-8?q?=E5=BA=93=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C=E7=A7=BB=E5=8A=A8?=
 =?UTF-8?q?=E5=88=B0=E7=9C=9F=E5=AE=9E=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?=
 =?UTF-8?q?=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/ModelCaseController.java       | 10 ++++
 .../police/service/ModelCaseService.java      |  4 ++
 .../service/impl/ModelCaseServiceImpl.java    | 52 ++++++++++++++++---
 3 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/supervision/police/controller/ModelCaseController.java b/src/main/java/com/supervision/police/controller/ModelCaseController.java
index a71c2e6..2df18d1 100644
--- a/src/main/java/com/supervision/police/controller/ModelCaseController.java
+++ b/src/main/java/com/supervision/police/controller/ModelCaseController.java
@@ -62,6 +62,16 @@ public class ModelCaseController {
         return modelCaseService.addOrUpd(modelCaseBase);
     }
 
+    @DeleteMapping("/realDeleteByIds")
+    public R<?> realDeleteByIds(@RequestBody List<String> ids) {
+        return modelCaseService.realDeleteByIds(ids);
+    }
+
+    @PostMapping("/resetDataStatusByIds")
+    public R<?> resetDataStatusByIds(@RequestBody List<String> ids) {
+        return modelCaseService.resetDataStatusByIds(ids);
+    }
+
     /**
      * 删除
      * @param id
diff --git a/src/main/java/com/supervision/police/service/ModelCaseService.java b/src/main/java/com/supervision/police/service/ModelCaseService.java
index b012697..ffdcf74 100644
--- a/src/main/java/com/supervision/police/service/ModelCaseService.java
+++ b/src/main/java/com/supervision/police/service/ModelCaseService.java
@@ -28,6 +28,10 @@ public interface ModelCaseService extends IService<ModelCase> {
 
     R<?> del(String id);
 
+    R<?> realDeleteByIds(List<String> ids);
+
+    R<?> resetDataStatusByIds(List<String> ids);
+
     R<List<CasePerson>> getPerson(String caseId, String name);
 
     R<?> addPerson(CasePerson person);
diff --git a/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java
index 5b6125f..3e9dbbf 100644
--- a/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java
+++ b/src/main/java/com/supervision/police/service/impl/ModelCaseServiceImpl.java
@@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.supervision.chat.UploadParamEnum;
 import com.supervision.chat.client.LangChainChatService;
 import com.supervision.chat.client.dto.CreateBaseDTO;
 import com.supervision.chat.client.dto.LangChainChatRes;
@@ -55,6 +54,8 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase> implements ModelCaseService {
 
+    private static final String DATA_STATUS_DEFAULT = "1";
+
     private final ComDictionaryService comDictionaryService;
 
     private final ModelCaseMapper modelCaseMapper;
@@ -108,7 +109,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
             if (CollUtil.isNotEmpty(casePersonMap)) {
                 Optional<CasePerson> optionalCasePerson = casePersonMap.getOrDefault("1", new ArrayList<>())
                         .stream().filter(person -> Integer.valueOf(1).equals(person.getCaseActorFlag())).findAny();
-                if (optionalCasePerson.isPresent()){
+                if (optionalCasePerson.isPresent()) {
                     modelCaseDTO.setLawActor(optionalCasePerson.get());
                     modelCaseDTO.floatLawActorInfo();
                 }
@@ -177,12 +178,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
 
     @Override
     public R<?> del(String id) {
-
         ModelCase modelCase = modelCaseMapper.selectById(id);
-        LangChainChatRes langChainChatRes = langChainChatService.deleteBase(modelCase.getCaseNo());
-        if (200 != langChainChatRes.getCode()){
-            log.info("删除知识库失败");
-        }
         modelCase.setDataStatus(DataStatus.NOT_AVAILABLE.getCode());
         int i = modelCaseMapper.updateById(modelCase);
         if (i > 0) {
@@ -192,6 +188,46 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
         }
     }
 
+    @Override
+    @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
+    public R<?> realDeleteByIds(List<String> ids) {
+        List<ModelCase> modelCases = modelCaseMapper.selectBatchIds(ids);
+        if (modelCases != null && !modelCases.isEmpty()) {
+            modelCases.forEach(modelCase -> {
+                LangChainChatRes<Object> langChainChatRes = langChainChatService.deleteBase(modelCase.getCaseNo());
+                if (200 != langChainChatRes.getCode()) {
+                    log.error("删除知识库失败:{}, caseNo:{}", langChainChatRes.getMsg(), modelCase.getCaseNo());
+                    throw new BusinessException("删除知识库失败");
+                }
+            });
+        }
+        int i = modelCaseMapper.deleteBatchIds(ids);
+        if (i > 0) {
+            return R.okMsg("删除成功");
+        } else {
+            return R.fail("删除失败");
+        }
+    }
+
+    @Override
+    @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
+    public R<?> resetDataStatusByIds(List<String> ids) {
+        boolean result = false;
+        //批量查出案件,并更新案件状态
+        List<ModelCase> modelCases = modelCaseMapper.selectBatchIds(ids);
+        if (modelCases != null && !modelCases.isEmpty()) {
+            modelCases.forEach(modelCase -> {
+                modelCase.setDataStatus(DATA_STATUS_DEFAULT);
+            });
+            result = updateBatchById(modelCases);
+        }
+        if (result) {
+            return R.okMsg("恢复成功");
+        } else {
+            return R.fail("恢复失败");
+        }
+    }
+
     @Override
     public R<List<CasePerson>> getPerson(String caseId, String name) {
         LambdaQueryWrapper<CasePerson> wrapper = Wrappers.lambdaQuery();
@@ -245,7 +281,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
                 .set(CasePerson::getName, person.getName())
                 .set(CasePerson::getRoleCode, person.getRoleCode())
                 .update();
-        if (update){
+        if (update) {
             caseStatusManageService.whenSaveCasePeople(person.getCaseId(), person);
         }