diff --git a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java
index 15861bb..9eef43d 100644
--- a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java
+++ b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java
@@ -30,6 +30,7 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -112,16 +113,57 @@ public class FishDraftDataController {
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
}
+// @PostMapping("/batchSaveDraft")
+// @Operation(summary = "批量保存草稿")
+// public ResponseResult saveDraft(@RequestBody List fishDraftDataList) {
+//
+// fishDraftDataList.forEach(fishDraftData -> {
+// fishDraftData.setStatus("DRAFT");
+// fishDraftData.setDeletedFlag(0);
+// fishDraftData.setLockFlag(0);
+// });
+// boolean result = fishDraftDataService.saveBatch(fishDraftDataList);
+// return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
+// }
+
@PostMapping("/batchSaveDraft")
@Operation(summary = "批量保存草稿")
- public ResponseResult saveDraft(@RequestBody List fishDraftDataList) {
+ @Transactional(rollbackFor = Exception.class)
+ public ResponseResult saveDraft(@RequestBody FishImportRowRequest request) {
+ String taskId = request.getTaskId();
+ ImportTask importTask = importTaskService.getById(taskId);
+ String resultJson = importTask.getResultJson();
+ FishImportResult importResult = null;
+ if (resultJson != null && !resultJson.isEmpty()) {
+ try {
+ importResult = objectMapper.readValue(resultJson, FishImportResult.class);
+ ZipFileUtil.ZipContent content = new ZipFileUtil.ZipContent();
+ content.images = importResult.getImageFiles();
+ content.videos = importResult.getVideoFiles();
+ fishImportService.processAttachments(importResult, content);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // ignore parse error
+ }
+ }
- fishDraftDataList.forEach(fishDraftData -> {
- fishDraftData.setStatus("DRAFT");
- fishDraftData.setDeletedFlag(0);
- fishDraftData.setLockFlag(0);
- });
+ if (importResult == null || importResult.getRows() == null) {
+ return ResponseResult.error("导入数据不存在");
+ }
+ Date date = new Date();
+ List fishDraftDataList = new ArrayList<>();
+ for (FishImportResult.FishImportRow row : importResult.getRows()) {
+ FishDraftData data = row.getData();
+ data.setRowIndex(row.getRowIndex());
+ data.setStatus("DRAFT");
+ data.setEnddt(data.getStrdt());
+ data.setDeletedFlag(0);
+ data.setLockFlag(0);
+ data.setTm(date);
+ fishDraftDataList.add(data);
+ }
boolean result = fishDraftDataService.saveBatch(fishDraftDataList);
+ importTaskService.markSuccess(taskId);
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
}
@@ -204,7 +246,7 @@ public class FishDraftDataController {
@PostMapping("/submitDraftsAll")
@Operation(summary = "批量提交当前用户全部草稿")
public ResponseResult submitDraftsAll() {
- List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus,"REJECTED", "DRAFT").select(FishDraftData::getId));
+ List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus, "REJECTED", "DRAFT").select(FishDraftData::getId));
List ids = draft.stream().map(FishDraftData::getId).toList();
boolean result = fishDraftDataService.submitDrafts(ids);
return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败");
@@ -482,12 +524,13 @@ public class FishDraftDataController {
writeErrorResponse(response, "预览失败: " + e.getMessage());
}
}
+
@GetMapping("/deleteFile")
@Operation(summary = "删除导入文件")
public ResponseResult deleteFile(@RequestParam String taskId,
- @RequestParam String id,
- @RequestParam String type,
- @RequestParam String filename) {
+ @RequestParam String id,
+ @RequestParam String type,
+ @RequestParam String filename) {
if (taskId == null || taskId.isEmpty()) {
return ResponseResult.error("任务ID不能为空");
}
@@ -892,6 +935,57 @@ public class FishDraftDataController {
}
}
+ @PostMapping("/deleteRowById")
+ @Operation(summary = "删除数据")
+ public ResponseResult deleteRowById(@RequestBody FishImportRowRequest request) {
+ String taskId = request.getTaskId();
+ FishDraftData data = request.getData();
+
+ if (taskId == null || taskId.isEmpty()) {
+ return ResponseResult.error("任务ID不能为空");
+ }
+ if (data == null || data.getId() == null || data.getId().isEmpty()) {
+ return ResponseResult.error("数据对象或其ID不能为空");
+ }
+
+ try {
+ ImportTask task = importTaskService.getById(taskId);
+ if (task == null) {
+ return ResponseResult.error("任务不存在");
+ }
+
+ String resultJson = task.getResultJson();
+ if (resultJson == null || resultJson.isEmpty()) {
+ return ResponseResult.error("任务结果为空");
+ }
+
+ FishImportResult importResult = objectMapper.readValue(resultJson, FishImportResult.class);
+
+ FishImportResult.FishImportRow targetRow = null;
+ int targetIndex = -1;
+ for (int i = 0; i < importResult.getRows().size(); i++) {
+ FishImportResult.FishImportRow row = importResult.getRows().get(i);
+ if (row.getData() != null && data.getId().equals(row.getData().getId())) {
+ targetRow = row;
+ targetIndex = i;
+ break;
+ }
+ }
+
+ if (targetIndex == -1) {
+ return ResponseResult.error("未找到对应的数据行");
+ }
+ importResult.getRows().remove(targetIndex);
+ String updatedJson = objectMapper.writeValueAsString(importResult);
+ importTaskService.saveResultJson(taskId, updatedJson);
+ return ResponseResult.success();
+
+ } catch (Exception e) {
+ log.error("删除数据失败: " + e.getMessage(), e);
+ return ResponseResult.error("删除数据失败: " + e.getMessage());
+ }
+ }
+
private void validateAndNormalizeData(FishDraftData data, FishImportResult.FishImportRow importRow,
List warnings) {
if (data.getStcd() == null || data.getStcd().isEmpty()) {
diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
index fe8ac15..4273248 100644
--- a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
+++ b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java
@@ -156,6 +156,14 @@ public class FishDraftData implements Serializable {
*/
private Integer deletedFlag;
+
+ /**
+ * 行号
+ */
+ private Integer rowIndex;
+
+
+
/**
* 删除人
*/
diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java b/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java
index 2037ca7..35fa621 100644
--- a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java
+++ b/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java
@@ -216,7 +216,7 @@ public class FishDraftDataVO implements Serializable {
/**
* 排序字段
*/
- private Integer orderIndex;
+ private Integer rowIndex;
/**
* 创建人名称
diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java
index aeab231..c1d83a4 100644
--- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java
+++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java
@@ -18,9 +18,12 @@ import com.yfd.platform.data.service.IApprovalLogService;
import com.yfd.platform.data.service.IApprovalMainService;
import com.yfd.platform.data.service.IFishDraftDataService;
import com.yfd.platform.env.domain.SdEngInfoBH;
+import com.yfd.platform.env.domain.SdFpssR;
import com.yfd.platform.env.domain.SdHbrvDic;
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
+import com.yfd.platform.env.mapper.SdFpssRMapper;
import com.yfd.platform.env.mapper.SdHbrvDicMapper;
+import com.yfd.platform.env.service.ISdFpssRService;
import com.yfd.platform.system.domain.SysUser;
import com.yfd.platform.system.mapper.SysUserMapper;
import com.yfd.platform.utils.KendoUtil;
@@ -28,6 +31,8 @@ import com.yfd.platform.utils.QgcQueryWrapperUtil;
import com.yfd.platform.utils.SecurityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.executor.BatchResult;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +46,7 @@ import java.util.*;
*
*/
@Service
+@Slf4j
public class FishDraftDataServiceImpl extends ServiceImpl implements IFishDraftDataService {
@Resource
@@ -70,9 +76,17 @@ public class FishDraftDataServiceImpl extends ServiceImpl queryPageList(DataSourceRequest dataSourceRequest) {
Page page = KendoUtil.getPage(dataSourceRequest);
+ page.setSize(dataSourceRequest.getTake());
+ page.setCurrent(dataSourceRequest.getSkip());
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String approvalId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "approvalId");
@@ -397,6 +411,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl dataList = this.listByIds(ids);
Set processedApprovalIds = new HashSet<>();
List validIds = new ArrayList<>();
+ List fpssRList = new ArrayList<>();
for (FishDraftData fishDraftData : dataList) {
if ("PENDING".equals(fishDraftData.getStatus())) {
@@ -404,6 +419,8 @@ public class FishDraftDataServiceImpl extends ServiceImpl
-
+
@@ -123,7 +123,8 @@
E.RVCD,
E.LGTD,
E.LTTD,
- E.ORDER_INDEX
+ E.ORDER_INDEX,
+ D.ROW_INDEX