From 3c59926bf9623b3518574926dfcfe67f38b32893 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 21 Apr 2026 16:52:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=92=8C=E5=A1=AB=E6=8A=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/controller/ImportTaskController.java | 162 ++++++++++++++++++ .../SysUserDataScopeController.java | 7 + .../data/domain/ApprovalChangeLog.java | 5 +- .../yfd/platform/data/domain/ApprovalLog.java | 6 +- .../platform/data/domain/ApprovalMain.java | 6 +- .../platform/data/domain/FishDraftData.java | 34 +++- .../yfd/platform/data/domain/ImportTask.java | 109 ++++++++++++ .../data/mapper/ImportTaskMapper.java | 46 +++++ .../data/service/IImportTaskService.java | 65 +++++++ .../service/ISysUserDataScopeService.java | 2 + .../service/impl/ImportTaskServiceImpl.java | 140 +++++++++++++++ .../impl/SysUserDataScopeServiceImpl.java | 5 + .../impl/TreeStructureServiceImpl.java | 3 + 13 files changed, 577 insertions(+), 13 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java create mode 100644 backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java create mode 100644 backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java create mode 100644 backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java create mode 100644 backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java b/backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java new file mode 100644 index 0000000..171f3ec --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/controller/ImportTaskController.java @@ -0,0 +1,162 @@ +package com.yfd.platform.data.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.data.domain.ImportTask; +import com.yfd.platform.data.service.IImportTaskService; +import com.yfd.platform.utils.KendoUtil; +import com.yfd.platform.utils.QgcQueryWrapperUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + *

+ * 导入任务表 前端控制器 + *

+ */ +@RestController +@RequestMapping("/data/importTask") +@Tag(name = "导入任务管理") +public class ImportTaskController { + + @Resource + private IImportTaskService importTaskService; + +// @GetMapping("/page") +// @Operation(summary = "分页查询导入任务") +// public ResponseResult queryPageList( +// @RequestParam(defaultValue = "1") Integer current, +// @RequestParam(defaultValue = "10") Integer size, +// @RequestParam(required = false) String bizType, +// @RequestParam(required = false) String status, +// @RequestParam(required = false) Long uploadUserId) { +// Page page = new Page<>(current, size); +// Page result = importTaskService.queryPageList(page, bizType, status, uploadUserId); +// return ResponseResult.successData(result); +// } + @PostMapping("/page") + @Operation(summary = "分页查询导入任务") + public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) { + Page page = KendoUtil.getPage(dataSourceRequest); + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String bizType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "bizType"); + String status = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "status"); + String uploadUserId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "uploadUserId"); + Page result = importTaskService.queryPageList(page, bizType, status, uploadUserId); + return ResponseResult.successData(result); + } + + @GetMapping("/list") + @Operation(summary = "查询导入任务列表") + public ResponseResult list() { + List list = importTaskService.list(); + return ResponseResult.successData(list); + } + + @GetMapping("/getById") + @Operation(summary = "根据ID查询") + public ResponseResult getById(@RequestParam Long id) { + ImportTask importTask = importTaskService.getById(id); + return ResponseResult.successData(importTask); + } + + @GetMapping("/getByImportNo") + @Operation(summary = "根据任务编号查询") + public ResponseResult getByImportNo(@RequestParam String importNo) { + ImportTask importTask = importTaskService.getByImportNo(importNo); + return ResponseResult.successData(importTask); + } + + @GetMapping("/getByBizType") + @Operation(summary = "根据业务类型查询") + public ResponseResult getByBizType(@RequestParam String bizType) { + List list = importTaskService.getByBizType(bizType); + return ResponseResult.successData(list); + } + + @GetMapping("/getByStatus") + @Operation(summary = "根据状态查询") + public ResponseResult getByStatus(@RequestParam String status) { + List list = importTaskService.getByStatus(status); + return ResponseResult.successData(list); + } + + @PostMapping("/createTask") + @Operation(summary = "创建导入任务") + public ResponseResult createTask(@RequestBody ImportTask importTask) { + boolean result = importTaskService.createTask(importTask); + return result ? ResponseResult.success("创建成功") : ResponseResult.error("创建失败"); + } + + @PostMapping("/updateStatus") + @Operation(summary = "更新任务状态") + public ResponseResult updateStatus(@RequestParam String id, + @RequestParam String status, + @RequestParam(required = false) String errorMsg) { + boolean result = importTaskService.updateStatus(id, status, errorMsg); + return result ? ResponseResult.success("更新成功") : ResponseResult.error("更新失败"); + } + + @PostMapping("/updateProgress") + @Operation(summary = "更新解析进度") + public ResponseResult updateProgress(@RequestParam String id, + @RequestParam(required = false) Integer totalCount, + @RequestParam(required = false) Integer successCount, + @RequestParam(required = false) Integer failCount) { + boolean result = importTaskService.updateProgress(id, totalCount, successCount, failCount); + return result ? ResponseResult.success("更新成功") : ResponseResult.error("更新失败"); + } + + @PostMapping("/markFailed") + @Operation(summary = "标记任务失败") + public ResponseResult markFailed(@RequestParam String id, + @RequestParam String errorMsg) { + boolean result = importTaskService.markFailed(id, errorMsg); + return result ? ResponseResult.success("标记失败") : ResponseResult.error("标记失败"); + } + + @PostMapping("/markSuccess") + @Operation(summary = "标记任务成功") + public ResponseResult markSuccess(@RequestParam String id) { + boolean result = importTaskService.markSuccess(id); + return result ? ResponseResult.success("标记成功") : ResponseResult.error("标记失败"); + } + + @PostMapping("/deleteExpired") + @Operation(summary = "删除过期任务") + public ResponseResult deleteExpired() { + boolean result = importTaskService.deleteExpiredTasks(); + return result ? ResponseResult.success("清理完成") : ResponseResult.error("清理失败"); + } + + @PostMapping("/add") + @Operation(summary = "新增导入任务") + public ResponseResult add(@RequestBody ImportTask importTask) { + importTask.setCreatedAt(new Date()); + importTask.setUpdatedAt(new Date()); + boolean result = importTaskService.save(importTask); + return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败"); + } + + @PostMapping("/update") + @Operation(summary = "修改导入任务") + public ResponseResult update(@RequestBody ImportTask importTask) { + importTask.setUpdatedAt(new Date()); + boolean result = importTaskService.updateById(importTask); + return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败"); + } + + @PostMapping("/delete") + @Operation(summary = "删除导入任务") + public ResponseResult delete(@RequestParam Long id) { + boolean result = importTaskService.removeById(id); + return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java b/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java index c02ee7d..e895035 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java +++ b/backend/src/main/java/com/yfd/platform/data/controller/SysUserDataScopeController.java @@ -53,6 +53,13 @@ public class SysUserDataScopeController { return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败"); } + @PostMapping("/batchAdd") + @Operation(summary = "新增数据填报权限") + public ResponseResult batchAdd(@RequestBody List dataScopeList) { + boolean result = dataScopeService.batchAddDataScope(dataScopeList); + return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败"); + } + /** * 修改数据填报权限 */ diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java index b7e1af8..ddc9c05 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java @@ -1,8 +1,6 @@ package com.yfd.platform.data.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; @@ -65,5 +63,6 @@ public class ApprovalChangeLog implements Serializable { /** * 创建时间 */ + @TableField(fill = FieldFill.INSERT) private Date createdAt; } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java index bb20c64..b8d4e3e 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalLog.java @@ -1,8 +1,6 @@ package com.yfd.platform.data.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; @@ -55,5 +53,7 @@ public class ApprovalLog implements Serializable { /** * 创建时间 */ + + @TableField(fill = FieldFill.INSERT) private Date createdAt; } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java index 950200f..9989f93 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java @@ -1,8 +1,6 @@ package com.yfd.platform.data.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; @@ -75,10 +73,12 @@ public class ApprovalMain implements Serializable { /** * 创建时间 */ + @TableField(fill = FieldFill.INSERT) private Date createdAt; /** * 更新时间 */ + @TableField(fill = FieldFill.INSERT_UPDATE) private Date updatedAt; } \ No newline at end of file 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 f602b9f..383f3ad 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 @@ -1,13 +1,11 @@ package com.yfd.platform.data.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; /** @@ -124,6 +122,32 @@ public class FishDraftData implements Serializable { */ private Date submitTime; + /** + * 水温 + */ + @TableField(exist = false) + private BigDecimal wt; + + + /** + * 电站名称 + */ + @TableField(exist = false) + private String engName; + + /** + * 基地名称 + */ + @TableField(exist = false) + private String baseName; + + /** + * 设施名称 + */ + @TableField(exist = false) + private String fPname; + + /** * 审批完成时间 */ @@ -147,6 +171,7 @@ public class FishDraftData implements Serializable { /** * 创建时间 */ + @TableField(fill = FieldFill.INSERT) private Date createdAt; /** @@ -157,6 +182,7 @@ public class FishDraftData implements Serializable { /** * 更新时间 */ + @TableField(fill = FieldFill.INSERT_UPDATE) private Date updatedAt; /** diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java b/backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java new file mode 100644 index 0000000..1e4e645 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/domain/ImportTask.java @@ -0,0 +1,109 @@ +package com.yfd.platform.data.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 导入任务表(ZIP导入全过程管理) + *

+ */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("IMPORT_TASK") +public class ImportTask implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** + * 导入任务编号(唯一) + */ + private String importNo; + + /** + * 业务类型(FISH过鱼数据) + */ + private String bizType; + + /** + * 上传压缩包文件名 + */ + private String fileName; + + /** + * 文件大小(字节) + */ + private Long fileSize; + + /** + * 原始压缩包存储路径 + */ + private String filePath; + + /** + * 解压后的临时目录路径 + */ + private String tempDir; + + /** + * 总数据条数 + */ + private Integer totalCount; + + /** + * 校验通过条数 + */ + private Integer successCount; + + /** + * 校验失败条数 + */ + private Integer failCount; + + /** + * 任务状态(UPLOADED已上传 / PARSING解析中 / VALIDATED已校验 / FAILED失败 / CONFIRMED已入库) + */ + private String status; + + /** + * 错误信息(异常时记录) + */ + private String errorMsg; + + /** + * 上传人ID + */ + private Long uploadUserId; + + /** + * 上传时间 + */ + private Date uploadTime; + + /** + * 过期时间(用于清理临时文件) + */ + private Date expireTime; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createdAt; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updatedAt; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java b/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java new file mode 100644 index 0000000..dbc74bc --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/mapper/ImportTaskMapper.java @@ -0,0 +1,46 @@ +package com.yfd.platform.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yfd.platform.data.domain.ImportTask; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 导入任务表 Mapper 接口 + *

+ */ +public interface ImportTaskMapper extends BaseMapper { + + /** + * 根据任务编号查询 + */ + @Select("SELECT * FROM IMPORT_TASK WHERE IMPORT_NO = #{importNo}") + ImportTask selectByImportNo(@Param("importNo") String importNo); + + /** + * 根据业务类型查询 + */ + @Select("SELECT * FROM IMPORT_TASK WHERE BIZ_TYPE = #{bizType} ORDER BY CREATED_AT DESC") + List selectByBizType(@Param("bizType") String bizType); + + /** + * 根据状态查询 + */ + @Select("SELECT * FROM IMPORT_TASK WHERE STATUS = #{status} ORDER BY CREATED_AT DESC") + List selectByStatus(@Param("status") String status); + + /** + * 根据上传人查询 + */ + @Select("SELECT * FROM IMPORT_TASK WHERE UPLOAD_USER_ID = #{uploadUserId} ORDER BY CREATED_AT DESC") + List selectByUploadUserId(@Param("uploadUserId") Long uploadUserId); + + /** + * 查询过期的任务 + */ + @Select("SELECT * FROM IMPORT_TASK WHERE EXPIRE_TIME < SYSDATE AND EXPIRE_TIME IS NOT NULL") + List selectExpiredTasks(); +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java b/backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java new file mode 100644 index 0000000..7b305bd --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/service/IImportTaskService.java @@ -0,0 +1,65 @@ +package com.yfd.platform.data.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.data.domain.ImportTask; + +import java.util.List; + +/** + *

+ * 导入任务表 服务类 + *

+ */ +public interface IImportTaskService extends IService { + + /** + * 分页查询导入任务 + */ + Page queryPageList(Page page, String bizType, String status, String uploadUserId); + + /** + * 根据任务编号查询 + */ + ImportTask getByImportNo(String importNo); + + /** + * 根据业务类型查询 + */ + List getByBizType(String bizType); + + /** + * 根据状态查询 + */ + List getByStatus(String status); + + /** + * 创建导入任务 + */ + boolean createTask(ImportTask importTask); + + /** + * 更新任务状态 + */ + boolean updateStatus(String id, String status, String errorMsg); + + /** + * 更新解析进度 + */ + boolean updateProgress(String id, Integer totalCount, Integer successCount, Integer failCount); + + /** + * 标记任务失败 + */ + boolean markFailed(String id, String errorMsg); + + /** + * 标记任务成功 + */ + boolean markSuccess(String id); + + /** + * 删除过期任务 + */ + boolean deleteExpiredTasks(); +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java b/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java index 92a2393..fb642d4 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java +++ b/backend/src/main/java/com/yfd/platform/data/service/ISysUserDataScopeService.java @@ -52,4 +52,6 @@ public interface ISysUserDataScopeService extends IService { * 查询用户有效权限(状态=1且在有效期内的) */ List getValidPermissions(String userId); + + boolean batchAddDataScope(List dataScopeList); } diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java new file mode 100644 index 0000000..0e31749 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java @@ -0,0 +1,140 @@ +package com.yfd.platform.data.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.data.domain.ImportTask; +import com.yfd.platform.data.mapper.ImportTaskMapper; +import com.yfd.platform.data.service.IImportTaskService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; + +/** + *

+ * 导入任务表 服务实现类 + *

+ */ +@Service +public class ImportTaskServiceImpl extends ServiceImpl implements IImportTaskService { + + @Resource + private ImportTaskMapper importTaskMapper; + + @Override + public Page queryPageList(Page page, String bizType, String status, String uploadUserId) { + return this.page(page, this.lambdaQuery() + .eq(StringUtils.hasText(bizType), ImportTask::getBizType, bizType) + .eq(StringUtils.hasText(status), ImportTask::getStatus, status) + .eq(uploadUserId != null, ImportTask::getUploadUserId, uploadUserId) + .orderByDesc(ImportTask::getCreatedAt) + .getWrapper()); + } + + @Override + public ImportTask getByImportNo(String importNo) { + return importTaskMapper.selectByImportNo(importNo); + } + + @Override + public List getByBizType(String bizType) { + return importTaskMapper.selectByBizType(bizType); + } + + @Override + public List getByStatus(String status) { + return importTaskMapper.selectByStatus(status); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean createTask(ImportTask importTask) { + importTask.setStatus("UPLOADED"); + importTask.setCreatedAt(new Date()); + importTask.setUpdatedAt(new Date()); + if (importTask.getTotalCount() == null) { + importTask.setTotalCount(0); + } + if (importTask.getSuccessCount() == null) { + importTask.setSuccessCount(0); + } + if (importTask.getFailCount() == null) { + importTask.setFailCount(0); + } + return this.save(importTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateStatus(String id, String status, String errorMsg) { + ImportTask importTask = this.getById(id); + if (importTask == null) { + return false; + } + importTask.setStatus(status); + if (StringUtils.hasText(errorMsg)) { + importTask.setErrorMsg(errorMsg); + } + importTask.setUpdatedAt(new Date()); + return this.updateById(importTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateProgress(String id, Integer totalCount, Integer successCount, Integer failCount) { + ImportTask importTask = this.getById(id); + if (importTask == null) { + return false; + } + if (totalCount != null) { + importTask.setTotalCount(totalCount); + } + if (successCount != null) { + importTask.setSuccessCount(successCount); + } + if (failCount != null) { + importTask.setFailCount(failCount); + } + importTask.setUpdatedAt(new Date()); + return this.updateById(importTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean markFailed(String id, String errorMsg) { + ImportTask importTask = this.getById(id); + if (importTask == null) { + return false; + } + importTask.setStatus("FAILED"); + importTask.setErrorMsg(errorMsg); + importTask.setUpdatedAt(new Date()); + return this.updateById(importTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean markSuccess(String id) { + ImportTask importTask = this.getById(id); + if (importTask == null) { + return false; + } + importTask.setStatus("CONFIRMED"); + importTask.setUpdatedAt(new Date()); + return this.updateById(importTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteExpiredTasks() { + List expiredTasks = importTaskMapper.selectExpiredTasks(); + if (expiredTasks == null || expiredTasks.isEmpty()) { + return true; + } + List ids = expiredTasks.stream().map(ImportTask::getId).toList(); + return this.removeByIds(ids); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java index 3dd6828..fa771d2 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/SysUserDataScopeServiceImpl.java @@ -73,4 +73,9 @@ public class SysUserDataScopeServiceImpl extends ServiceImpl dataScopeList) { + return this.saveOrUpdateBatch(dataScopeList); + } } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java index 9ca2266..4b62087 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/TreeStructureServiceImpl.java @@ -70,6 +70,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { rvcdNode.put("code", rvcdDic.getRvcd()); rvcdNode.put("name", rvcdDic.getRvnm()); rvcdNode.put("path", rvcdDic.getPath()); + rvcdNode.put("orgLevel", 0); rvcdNode.put("grd", rvcdDic.getGrd()); rvcdNode.put("lgtd", rvcdDic.getLgtd()); rvcdNode.put("lttd", rvcdDic.getLttd()); @@ -102,6 +103,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { baseNode.put("shortname", base.getShortname()); baseNode.put("grd", base.getGrd()); baseNode.put("parentId", rvcdDic.getRvcd()); + baseNode.put("orgLevel", 1); List> engChildren = new ArrayList<>(); for (SdEngInfoBH eng : baseEngList) { Map engNode = new LinkedHashMap<>(); @@ -115,6 +117,7 @@ public class TreeStructureServiceImpl implements ITreeStructureService { engNode.put("bldstt", eng.getBldstt()); engNode.put("engtp", eng.getEngtp()); engNode.put("parentId", base.getBaseid()); + engNode.put("orgLevel", 2); engChildren.add(engNode); } baseNode.put("children", engChildren);