From 987ea0ce0c4c6f499802167394edbbd9bffc269b Mon Sep 17 00:00:00 2001 From: tangcy <406968399@qq.com> Date: Tue, 24 Mar 2026 20:26:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=96=B9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=20=E8=B0=83=E6=95=B4h5=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConstructionIssueFeedbackController.java | 22 +-- ...structionIssueRectificationController.java | 43 ++--- .../controller/ThirdPartyController.java | 60 +++++++ .../VideoStreamDetectionController.java | 28 ++- .../domain/dto/ThirdPartyDeductionDTO.java | 48 +++++ .../domain/vo/RectificationDetailVO.java | 22 +++ .../ConstructionIssueFeedbackMapper.java | 7 +- .../ConstructionIssueRectificationMapper.java | 16 +- .../mapper/VideoStreamDetectionMapper.java | 5 + .../IConstructionIssueFeedbackService.java | 11 +- ...ConstructionIssueRectificationService.java | 20 ++- .../service/IThirdPartyService.java | 37 ++++ .../service/IVideoStreamDetectionService.java | 7 +- .../ConstructionIssueFeedbackServiceImpl.java | 19 +- ...tructionIssueRectificationServiceImpl.java | 48 ++--- .../service/impl/ThirdPartyServiceImpl.java | 112 ++++++++++++ .../impl/VideoStreamDetectionServiceImpl.java | 5 + .../utils/ThirdPartyHttpClient.java | 170 ++++++++++++++++++ .../ConstructionIssueFeedbackMapper.xml | 7 +- .../ConstructionIssueRectificationMapper.xml | 72 ++++++-- .../mapper/VideoStreamDetectionMapper.xml | 29 +++ 21 files changed, 661 insertions(+), 127 deletions(-) create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ThirdPartyController.java create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/dto/ThirdPartyDeductionDTO.java create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/vo/RectificationDetailVO.java create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IThirdPartyService.java create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ThirdPartyServiceImpl.java create mode 100644 ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/utils/ThirdPartyHttpClient.java diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueFeedbackController.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueFeedbackController.java index 4dcdfd89..09182dc4 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueFeedbackController.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueFeedbackController.java @@ -32,11 +32,10 @@ public class ConstructionIssueFeedbackController extends BaseController { private IConstructionIssueFeedbackService constructionIssueFeedbackService; /** - * 查询施工问题反馈列表(施工方查监理确认的问题、监理查全部) + * 查询施工问题反馈列表 * 支持按项目ID、来源、状态筛选 */ @Operation(summary = "查询施工问题反馈列表") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:list')") @GetMapping("/list") public TableDataInfo list(ConstructionIssueFeedback query) { startPage(); @@ -48,27 +47,25 @@ public class ConstructionIssueFeedbackController extends BaseController { * 获取施工问题反馈详情 */ @Operation(summary = "获取施工问题反馈详情") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:query')") @GetMapping("/{id}") - public AjaxResult getInfo(@Parameter(description = "反馈ID") @PathVariable("id") Long id) { + public AjaxResult getInfo(@Parameter(description = "反馈 ID") @PathVariable("id") Long id) { return success(constructionIssueFeedbackService.selectConstructionIssueFeedbackById(id)); } /** - * 获取施工问题反馈详情(级联整改记录) + * 统计项目待整改问题数量 */ - @Operation(summary = "获取施工问题反馈详情(含整改记录)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:query')") - @GetMapping("/{id}/detail") - public AjaxResult getDetailWithRectifications(@Parameter(description = "反馈ID") @PathVariable("id") Long id) { - return success(constructionIssueFeedbackService.selectDetailWithRectifications(id)); + @Operation(summary = "统计项目待整改问题数量") + @GetMapping("/pendingCount/{projectId}") + public AjaxResult pendingCount(@Parameter(description = "项目 ID") @PathVariable("projectId") Long projectId) { + int count = constructionIssueFeedbackService.countPendingByProjectId(projectId); + return success(count); } /** - * 监理人工提交现场问题(检测名称、描述、问题照片URL等) + * 监理人工提交现场问题(检测名称、描述、问题照片 URL 等) */ @Operation(summary = "监理人工提交现场问题") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:add')") @Log(title = "施工问题反馈", businessType = BusinessType.INSERT) @PostMapping("/manual") public AjaxResult manualSubmit(@Validated @RequestBody ConstructionIssueFeedback feedback) { @@ -79,7 +76,6 @@ public class ConstructionIssueFeedbackController extends BaseController { * 更新施工问题反馈(如状态:待处理/已处理/已关闭) */ @Operation(summary = "更新施工问题反馈") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:edit')") @Log(title = "施工问题反馈", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult update(@Validated @RequestBody ConstructionIssueFeedback feedback) { diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueRectificationController.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueRectificationController.java index 2b3609fc..5cf3c914 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueRectificationController.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ConstructionIssueRectificationController.java @@ -3,6 +3,7 @@ package com.admin.contractor.controller; import com.admin.contractor.domain.ConstructionIssueRectification; import com.admin.contractor.domain.dto.RectificationReviewDTO; import com.admin.contractor.domain.dto.RectificationSubmitDTO; +import com.admin.contractor.domain.vo.RectificationDetailVO; import com.admin.contractor.domain.vo.RectificationPendingVO; import com.admin.contractor.service.IConstructionIssueRectificationService; import com.ruoyi.common.core.web.controller.BaseController; @@ -34,22 +35,11 @@ public class ConstructionIssueRectificationController extends BaseController { @Autowired private IConstructionIssueRectificationService rectificationService; - /** - * 施工单位暂存整改草稿 - */ - @Operation(summary = "暂存整改草稿(施工单位)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:edit')") - @Log(title = "施工问题整改", businessType = BusinessType.UPDATE) - @PostMapping("/saveDraft") - public AjaxResult saveDraft(@Validated @RequestBody RectificationSubmitDTO dto) { - return toAjax(rectificationService.saveDraft(dto)); - } /** * 施工单位提交整改 */ @Operation(summary = "提交整改(施工单位)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:edit')") @Log(title = "施工问题整改", businessType = BusinessType.UPDATE) @PostMapping("/submit") public AjaxResult submitRectification(@Validated @RequestBody RectificationSubmitDTO dto) { @@ -57,21 +47,19 @@ public class ConstructionIssueRectificationController extends BaseController { } /** - * 按问题反馈ID查询整改列表(含草稿、已提交,施工方/监理查看) + * 按问题反馈 ID 获取问题数据级联整改表数据 */ - @Operation(summary = "按问题反馈ID查询整改列表") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:query')") - @GetMapping("/list/{feedbackId}") - public AjaxResult listByFeedbackId(@Parameter(description = "问题反馈ID") @PathVariable("feedbackId") Long feedbackId) { - List list = rectificationService.listByFeedbackId(feedbackId); - return success(list); + @Operation(summary = "按问题反馈 ID 获取问题数据") + @GetMapping("/detail/{feedbackId}") + public AjaxResult getDetailByFeedbackId(@Parameter(description = "问题反馈 ID") @PathVariable("feedbackId") Long feedbackId) { + RectificationDetailVO detail = rectificationService.getDetailByFeedbackId(feedbackId); + return success(detail); } /** - * 施工单位查询整改记录:按项目ID联查 cons_issue_r / cons_issue_fb + * 施工单位查询整改记录:按项目 ID 联查 cons_issue_rf / cons_issue_fb */ - @Operation(summary = "施工单位查询整改记录(按项目)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:query')") + @Operation(summary = "施工单位查询整改记录(按项目id)") @GetMapping("/listByProject/{projectId}") public TableDataInfo listByProjectId(@Parameter(description = "项目ID") @PathVariable("projectId") Long projectId) { startPage(); @@ -80,22 +68,21 @@ public class ConstructionIssueRectificationController extends BaseController { } /** - * 监理待复核整改列表(问题+整改摘要) + * 按项目ID查询整改记录(级联问题反馈) */ - @Operation(summary = "待复核整改列表(监理)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:list')") - @GetMapping("/pendingReview") - public TableDataInfo pendingReview() { + @Operation(summary = "按项目ID查询整改记录(含问题反馈)") + @GetMapping("/listDetailByProject/{projectId}") + public TableDataInfo listDetailByProjectId(@Parameter(description = "项目ID") @PathVariable("projectId") Long projectId) { startPage(); - List list = rectificationService.listPendingReview(); + List list = rectificationService.listDetailByProjectId(projectId); return getDataTable(list); } + /** * 监理提交复核结果(整改到位/整改未到位,未到位需重新整改) */ @Operation(summary = "提交整改复核结果(监理)") - @PreAuthorize("@ss.hasPermi('contractor:constructionIssue:edit')") @Log(title = "施工问题整改复核", businessType = BusinessType.UPDATE) @PostMapping("/review") public AjaxResult submitReview(@Validated @RequestBody RectificationReviewDTO dto) { diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ThirdPartyController.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ThirdPartyController.java new file mode 100644 index 00000000..cafb8c5d --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/ThirdPartyController.java @@ -0,0 +1,60 @@ +package com.admin.contractor.controller; + +import com.admin.contractor.domain.dto.ThirdPartyDeductionDTO; +import com.admin.contractor.service.IThirdPartyService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 第三方接口Controller + * 提供调用第三方电力系统接口的能力 + * + * @author ruoyi + */ +@Tag(name = "第三方接口调用") +@RestController +@RequestMapping("/thirdParty") +public class ThirdPartyController extends BaseController { + + @Autowired + private IThirdPartyService thirdPartyService; + + /** + * 获取第三方系统Token + */ + @Operation(summary = "获取第三方系统Token") + @PostMapping("/getToken") + public AjaxResult getToken( + @Parameter(description = "用户名") @RequestParam String username, + @Parameter(description = "密码") @RequestParam String password) { + String token = thirdPartyService.getThirdPartyToken(username, password); + if (token != null) { + return success(token); + } + return error("获取Token失败"); + } + + /** + * 调用第三方扣分上报接口 + */ + @Operation(summary = "调用第三方扣分上报接口") + @PostMapping("/callDeduction") + public AjaxResult callDeduction(@Validated @RequestBody ThirdPartyDeductionDTO dto) { + return thirdPartyService.callThirdPartyDeduction(dto); + } + + /** + * 调用第三方获取企业评分接口 + */ + @Operation(summary = "调用第三方获取企业评分接口") + @PostMapping("/callGetCompanyScore") + public AjaxResult callGetCompanyScore(@Parameter(description = "企业ID") @RequestParam Long companyId) { + return thirdPartyService.callThirdPartyGetCompanyScore(companyId); + } +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/VideoStreamDetectionController.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/VideoStreamDetectionController.java index 008af9d5..f574bb47 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/VideoStreamDetectionController.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/controller/VideoStreamDetectionController.java @@ -53,9 +53,9 @@ public class VideoStreamDetectionController extends BaseController { @PreAuthorize("@ss.hasPermi('contractor:videoDetection:list')") @GetMapping("/allRecords") public TableDataInfo allRecords( - @Parameter(description = "项目ID") @RequestParam(required = false) String projectId, + @Parameter(description = "项目 ID") @RequestParam(required = false) String projectId, @Parameter(description = "帧时间戳") @RequestParam(required = false) Long frameTimestamp, - @Parameter(description = "报警类型(detect_type)") @RequestParam(required = false) Integer detectType) { + @Parameter(description = "报警类型 (detect_type)") @RequestParam(required = false) Integer detectType) { startPage(); VideoStreamDetection query = new VideoStreamDetection(); query.setProjectId(projectId); @@ -65,6 +65,30 @@ public class VideoStreamDetectionController extends BaseController { return getDataTable(list); } + /** + * 查询已复核的视频推送记录(review_status 为 1 或 2) + */ + @Operation(summary = "查询已复核视频推送记录") + @PreAuthorize("@ss.hasPermi('contractor:videoDetection:list')") + @GetMapping("/reviewedRecords") + public TableDataInfo reviewedRecords( + @Parameter(description = "项目 ID") @RequestParam(required = false) String projectId, + @Parameter(description = "复核状态 (1 合格 2 不合格,reviewed 表示已复核)") @RequestParam(required = false) String reviewStatus, + @Parameter(description = "报警类型 (detect_type)") @RequestParam(required = false) Integer detectType, + @Parameter(description = "帧时间戳") @RequestParam(required = false) Long frameTimestamp) { + startPage(); + VideoStreamDetection query = new VideoStreamDetection(); + query.setProjectId(projectId); + query.setReviewStatus(reviewStatus); + query.setDetectType(detectType); + query.setFrameTimestamp(frameTimestamp); + List list = videoStreamDetectionService.listReviewedRecords(query); + return getDataTable(list); + } + + /** + * 获取视频检测详情 + */ @Operation(summary = "获取视频检测详情") @PreAuthorize("@ss.hasPermi('contractor:videoDetection:query')") @GetMapping("/{id}") diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/dto/ThirdPartyDeductionDTO.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/dto/ThirdPartyDeductionDTO.java new file mode 100644 index 00000000..408f7982 --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/dto/ThirdPartyDeductionDTO.java @@ -0,0 +1,48 @@ +package com.admin.contractor.domain.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 第三方扣分上报DTO + * + * @author ruoyi + */ +@Data +@Schema(description = "第三方扣分上报") +public class ThirdPartyDeductionDTO { + + @Schema(description = "扣分配置ID", example = "47") + private Long backConfigId; + + @Schema(description = "风险等级(高、中、低)", example = "高") + private String description; + + @Schema(description = "项目ID", example = "116") + private Long projectId; + + @Schema(description = "异常原因描述", example = "异常原因描述") + private String reason; + + @Schema(description = "状态(0=未处理, 1=处理中, 2=已处理)", example = "2") + private Integer status; + + @Schema(description = "第三方ID", example = "1111") + private Long thirdId; + + @Schema(description = "预警时间,格式: yyyy-MM-dd HH:mm:ss", example = "2026-03-12 17:26:23") + private String wainTime; + + @Schema(description = "处理时间,格式: yyyy-MM-dd HH:mm:ss", example = "2026-03-13 17:26:23") + private String handTime; + + @Schema(description = "完成时间,格式: yyyy-MM-dd HH:mm:ss", example = "2026-03-14 17:26:23") + private String finishTime; + + @Schema(description = "图片路径(URL)") + private String pictureUrl; + + @Schema(description = "视频路径 (URL)") + private String videoUrl; + +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/vo/RectificationDetailVO.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/vo/RectificationDetailVO.java new file mode 100644 index 00000000..d0341335 --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/domain/vo/RectificationDetailVO.java @@ -0,0 +1,22 @@ +package com.admin.contractor.domain.vo; + +import com.admin.contractor.domain.ConstructionIssueFeedback; +import com.admin.contractor.domain.ConstructionIssueRectification; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 整改记录详情VO(级联问题反馈) + * + * @author ruoyi + */ +@Data +@Schema(description = "整改记录详情(含问题反馈)") +public class RectificationDetailVO { + + @Schema(description = "问题反馈信息") + private ConstructionIssueFeedback feedback; + + @Schema(description = "整改记录信息") + private ConstructionIssueRectification rectification; +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueFeedbackMapper.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueFeedbackMapper.java index 45da906f..eabf3aac 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueFeedbackMapper.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueFeedbackMapper.java @@ -40,7 +40,12 @@ public interface ConstructionIssueFeedbackMapper { List selectIdsByProjectIds(@Param("projectIds") Long[] projectIds); /** - * 根据项目ID列表批量删除反馈(级联删除工作计划时使用) + * 根据项目 ID 列表批量删除反馈(级联删除工作计划时使用) */ int deleteByProjectIds(@Param("projectIds") Long[] projectIds); + + /** + * 统计指定项目的待整改问题数量(status=0,3 待处理和审核不通过) + */ + int countPendingByProjectId(@Param("projectId") Long projectId); } diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueRectificationMapper.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueRectificationMapper.java index 548e9ff9..97c1ce08 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueRectificationMapper.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/ConstructionIssueRectificationMapper.java @@ -1,6 +1,7 @@ package com.admin.contractor.mapper; import com.admin.contractor.domain.ConstructionIssueRectification; +import com.admin.contractor.domain.vo.RectificationDetailVO; import com.admin.contractor.domain.vo.RectificationPendingVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,25 +19,34 @@ public interface ConstructionIssueRectificationMapper { ConstructionIssueRectification selectConstructionIssueRectificationById(Long id); /** - * 按反馈ID查询整改列表(含草稿、已提交),按创建时间倒序 + * 按反馈 ID 查询整改列表(含草稿、已提交),按创建时间倒序 */ List selectByFeedbackId(@Param("feedbackId") Long feedbackId); /** - * 按反馈ID查询最新草稿(status=0),用于暂存覆盖 + * 按问题反馈 ID 获取问题数据级联整改表数据 + */ + RectificationDetailVO selectDetailByFeedbackId(@Param("feedbackId") Long feedbackId); + + /** + * 按反馈 ID 查询最新草稿(status=0),用于暂存覆盖 */ ConstructionIssueRectification selectDraftByFeedbackId(@Param("feedbackId") Long feedbackId); /** * 待监理复核的整改列表:feedback.status=1 且 rectification.status=1 且 review_result is null,联查反馈摘要 */ - List selectPendingReviewList(); /** * 施工单位查询整改记录:根据项目ID联查 cons_issue_fb.project_id */ List selectByProjectId(@Param("projectId") Long projectId); + /** + * 根据项目 ID 查询整改详情列表(含问题反馈信息) + */ + List selectDetailByProjectId(@Param("projectId") Long projectId); + int insertConstructionIssueRectification(ConstructionIssueRectification record); int updateConstructionIssueRectification(ConstructionIssueRectification record); diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/VideoStreamDetectionMapper.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/VideoStreamDetectionMapper.java index 19f00ba6..d86ae39c 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/VideoStreamDetectionMapper.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/mapper/VideoStreamDetectionMapper.java @@ -31,6 +31,11 @@ public interface VideoStreamDetectionMapper { */ List selectAllPushRecords(VideoStreamDetection query); + /** + * 查询已复核的视频推送记录(review_status 为 1 或 2) + */ + List selectReviewedRecords(VideoStreamDetection query); + /** * 更新复核结果 */ diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueFeedbackService.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueFeedbackService.java index d0f7d6ab..3a6a5eef 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueFeedbackService.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueFeedbackService.java @@ -1,7 +1,6 @@ package com.admin.contractor.service; import com.admin.contractor.domain.ConstructionIssueFeedback; -import com.admin.contractor.domain.vo.ConstructionIssueFeedbackDetailVO; import java.util.List; @@ -17,11 +16,6 @@ public interface IConstructionIssueFeedbackService { */ ConstructionIssueFeedback selectConstructionIssueFeedbackById(Long id); - /** - * 根据ID查询详情(级联整改记录) - */ - ConstructionIssueFeedbackDetailVO selectDetailWithRectifications(Long feedbackId); - /** * 按条件查询列表(施工方/监理查询监理确认的问题) */ @@ -36,4 +30,9 @@ public interface IConstructionIssueFeedbackService { * 更新状态(施工方处理/关闭等) */ int updateConstructionIssueFeedback(ConstructionIssueFeedback feedback); + + /** + * 统计指定项目的待整改问题数量(status=0 待处理) + */ + int countPendingByProjectId(Long projectId); } diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueRectificationService.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueRectificationService.java index c8f3ae25..a1dd3539 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueRectificationService.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IConstructionIssueRectificationService.java @@ -3,7 +3,7 @@ package com.admin.contractor.service; import com.admin.contractor.domain.ConstructionIssueRectification; import com.admin.contractor.domain.dto.RectificationReviewDTO; import com.admin.contractor.domain.dto.RectificationSubmitDTO; -import com.admin.contractor.domain.vo.RectificationPendingVO; +import com.admin.contractor.domain.vo.RectificationDetailVO; import java.util.List; @@ -15,10 +15,6 @@ import java.util.List; */ public interface IConstructionIssueRectificationService { - /** - * 施工单位暂存整改草稿 - */ - int saveDraft(RectificationSubmitDTO dto); /** * 施工单位提交整改 @@ -26,19 +22,25 @@ public interface IConstructionIssueRectificationService { int submitRectification(RectificationSubmitDTO dto); /** - * 按反馈ID查询整改列表(含草稿、已提交) + * 按反馈 ID 查询整改列表(含草稿、已提交) */ List listByFeedbackId(Long feedbackId); /** - * 施工单位查询整改记录(按项目ID,联查 cons_issue_fb.project_id) + * 按问题反馈 ID 获取问题数据级联整改表数据 + */ + RectificationDetailVO getDetailByFeedbackId(Long feedbackId); + + /** + * 施工单位查询整改记录(按项目 ID,联查 cons_issue_fb.project_id) */ List listByProjectId(Long projectId); /** - * 监理待复核整改列表(问题+整改摘要) + * 按项目ID查询整改记录(级联问题反馈) */ - List listPendingReview(); + List listDetailByProjectId(Long projectId); + /** * 监理提交复核结果(整改到位/整改未到位,未到位需重新整改) diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IThirdPartyService.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IThirdPartyService.java new file mode 100644 index 00000000..72dfbd9f --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IThirdPartyService.java @@ -0,0 +1,37 @@ +package com.admin.contractor.service; + +import com.admin.contractor.domain.dto.ThirdPartyDeductionDTO; +import com.ruoyi.common.core.web.domain.AjaxResult; + +/** + * 第三方接口Service接口 + * + * @author ruoyi + */ +public interface IThirdPartyService { + + /** + * 获取第三方系统Token + * + * @param username 用户名 + * @param password 密码 + * @return Token + */ + String getThirdPartyToken(String username, String password); + + /** + * 调用第三方扣分上报接口 + * + * @param dto 扣分上报数据 + * @return 调用结果 + */ + AjaxResult callThirdPartyDeduction(ThirdPartyDeductionDTO dto); + + /** + * 调用第三方获取企业评分接口 + * + * @param companyId 企业ID + * @return 企业评分信息 + */ + AjaxResult callThirdPartyGetCompanyScore(Long companyId); +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IVideoStreamDetectionService.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IVideoStreamDetectionService.java index a977795f..67aad70a 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IVideoStreamDetectionService.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/IVideoStreamDetectionService.java @@ -32,7 +32,12 @@ public interface IVideoStreamDetectionService { List listAllPushRecords(VideoStreamDetection query); /** - * 根据ID获取视频检测详情 + * 查询已复核的视频推送记录(review_status 为 1 或 2) + */ + List listReviewedRecords(VideoStreamDetection query); + + /** + * 根据 ID 获取视频检测详情 */ VideoStreamDetection selectVideoStreamDetectionById(Long id); diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueFeedbackServiceImpl.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueFeedbackServiceImpl.java index 628b34c0..fabb4a8c 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueFeedbackServiceImpl.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueFeedbackServiceImpl.java @@ -1,8 +1,6 @@ package com.admin.contractor.service.impl; import com.admin.contractor.domain.ConstructionIssueFeedback; -import com.admin.contractor.domain.ConstructionIssueRectification; -import com.admin.contractor.domain.vo.ConstructionIssueFeedbackDetailVO; import com.admin.contractor.mapper.ConstructionIssueFeedbackMapper; import com.admin.contractor.mapper.ConstructionIssueRectificationMapper; import com.admin.contractor.service.IConstructionIssueFeedbackService; @@ -34,18 +32,6 @@ public class ConstructionIssueFeedbackServiceImpl implements IConstructionIssueF return constructionIssueFeedbackMapper.selectConstructionIssueFeedbackById(id); } - @Override - public ConstructionIssueFeedbackDetailVO selectDetailWithRectifications(Long feedbackId) { - ConstructionIssueFeedback feedback = constructionIssueFeedbackMapper.selectConstructionIssueFeedbackById(feedbackId); - if (feedback == null) { - return null; - } - ConstructionIssueFeedbackDetailVO vo = new ConstructionIssueFeedbackDetailVO(); - vo.setFeedback(feedback); - List rectifications = constructionIssueRectificationMapper.selectByFeedbackId(feedbackId); - vo.setRectifications(rectifications); - return vo; - } @Override public List selectConstructionIssueFeedbackList(ConstructionIssueFeedback query) { @@ -73,4 +59,9 @@ public class ConstructionIssueFeedbackServiceImpl implements IConstructionIssueF feedback.setUpdateBy(SecurityUtils.getUsername()); return constructionIssueFeedbackMapper.updateConstructionIssueFeedback(feedback); } + + @Override + public int countPendingByProjectId(Long projectId) { + return constructionIssueFeedbackMapper.countPendingByProjectId(projectId); + } } diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueRectificationServiceImpl.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueRectificationServiceImpl.java index 1b78a438..ea2be71e 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueRectificationServiceImpl.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ConstructionIssueRectificationServiceImpl.java @@ -4,6 +4,7 @@ import com.admin.contractor.domain.ConstructionIssueFeedback; import com.admin.contractor.domain.ConstructionIssueRectification; import com.admin.contractor.domain.dto.RectificationReviewDTO; import com.admin.contractor.domain.dto.RectificationSubmitDTO; +import com.admin.contractor.domain.vo.RectificationDetailVO; import com.admin.contractor.domain.vo.RectificationPendingVO; import com.admin.contractor.mapper.ConstructionIssueFeedbackMapper; import com.admin.contractor.mapper.ConstructionIssueRectificationMapper; @@ -14,7 +15,6 @@ import com.ruoyi.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import java.util.List; /** @@ -31,37 +31,6 @@ public class ConstructionIssueRectificationServiceImpl implements IConstructionI @Autowired private ConstructionIssueFeedbackMapper feedbackMapper; - @Override - @Transactional(rollbackFor = Exception.class) - public int saveDraft(RectificationSubmitDTO dto) { - if (dto.getFeedbackId() == null) { - throw new ServiceException("问题反馈ID不能为空"); - } - ConstructionIssueFeedback feedback = feedbackMapper.selectConstructionIssueFeedbackById(dto.getFeedbackId()); - if (feedback == null) { - throw new ServiceException("问题反馈不存在"); - } - if (!"0".equals(feedback.getStatus()) && !"3".equals(feedback.getStatus())) { - throw new ServiceException("仅待处理或复核不通过的问题可暂存整改"); - } - String username = SecurityUtils.getUsername(); - ConstructionIssueRectification draft = rectificationMapper.selectDraftByFeedbackId(dto.getFeedbackId()); - if (draft != null) { - draft.setRectificationDesc(dto.getRectificationDesc()); - draft.setRectificationPhotoUrls(dto.getRectificationPhotoUrls()); - draft.setRectificationTime(dto.getRectificationTime()); - draft.setUpdateBy(username); - return rectificationMapper.updateConstructionIssueRectification(draft); - } - ConstructionIssueRectification record = new ConstructionIssueRectification(); - record.setFeedbackId(dto.getFeedbackId()); - record.setRectificationDesc(dto.getRectificationDesc()); - record.setRectificationPhotoUrls(dto.getRectificationPhotoUrls()); - record.setRectificationTime(dto.getRectificationTime()); - record.setStatus("0"); // 草稿 - record.setCreateBy(username); - return rectificationMapper.insertConstructionIssueRectification(record); - } @Override @Transactional(rollbackFor = Exception.class) @@ -118,16 +87,22 @@ public class ConstructionIssueRectificationServiceImpl implements IConstructionI return rectificationMapper.selectByFeedbackId(feedbackId); } + @Override + public RectificationDetailVO getDetailByFeedbackId(Long feedbackId) { + return rectificationMapper.selectDetailByFeedbackId(feedbackId); + } + @Override public List listByProjectId(Long projectId) { return rectificationMapper.selectByProjectId(projectId); } @Override - public List listPendingReview() { - return rectificationMapper.selectPendingReviewList(); + public List listDetailByProjectId(Long projectId) { + return rectificationMapper.selectDetailByProjectId(projectId); } + @Override @Transactional(rollbackFor = Exception.class) public int submitReview(RectificationReviewDTO dto) { @@ -144,10 +119,7 @@ public class ConstructionIssueRectificationServiceImpl implements IConstructionI if (rect == null) { throw new ServiceException("整改记录不存在"); } - if (!"1".equals(rect.getStatus())) { - throw new ServiceException("仅已提交的整改可复核"); - } - if (StringUtils.isNotEmpty(rect.getReviewResult())) { + if (!"0".equals(rect.getReviewResult())) { throw new ServiceException("该整改已复核"); } String username = SecurityUtils.getUsername(); diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ThirdPartyServiceImpl.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ThirdPartyServiceImpl.java new file mode 100644 index 00000000..ade65687 --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/ThirdPartyServiceImpl.java @@ -0,0 +1,112 @@ +package com.admin.contractor.service.impl; + +import com.admin.contractor.domain.dto.ThirdPartyDeductionDTO; +import com.admin.contractor.service.IThirdPartyService; +import com.admin.contractor.utils.ThirdPartyHttpClient; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.core.web.domain.AjaxResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 第三方接口Service实现 + * + * @author ruoyi + */ +@Slf4j +@Service +public class ThirdPartyServiceImpl implements IThirdPartyService { + + @Autowired + private ThirdPartyHttpClient thirdPartyHttpClient; + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * 获取第三方系统Token + * + * @param username 用户名 + * @param password 密码 + * @return Token + */ + @Override + public String getThirdPartyToken(String username, String password) { + log.info("获取第三方Token: username={}", username); + return thirdPartyHttpClient.getToken(username, password); + } + + /** + * 调用第三方扣分上报接口 + * + * @param dto 扣分上报数据 + * @return 调用结果 + */ + @Override + public AjaxResult callThirdPartyDeduction(ThirdPartyDeductionDTO dto) { + try { + log.info("调用第三方扣分上报接口:thirdId={}, projectId={}", dto.getThirdId(), dto.getProjectId()); + + // 获取 Token + String token = getThirdPartyToken("admin", "admin123456"); + if (token == null) { + return AjaxResult.error("获取第三方 Token 失败"); + } + + // 转换 DTO 为 JSON 字符串 + String requestBody = objectMapper.writeValueAsString(dto); + + // 调用第三方接口 + String response = thirdPartyHttpClient.submitDeduction(token, requestBody); + if (response == null) { + return AjaxResult.error("调用第三方扣分上报接口失败"); + } + + // 检查业务返回码 + JsonNode jsonNode = objectMapper.readTree(response); + if (jsonNode.has("code") && jsonNode.get("code").asInt() != 200) { + String message = jsonNode.has("message") ? jsonNode.get("message").asText() : "业务处理失败"; + log.warn("第三方扣分上报业务失败:{}", message); + return AjaxResult.error("扣分上报失败:" + message); + } + + log.info("第三方扣分上报成功"); + return AjaxResult.success("扣分上报成功", response); + } catch (Exception e) { + log.error("调用第三方扣分上报接口异常", e); + return AjaxResult.error("调用第三方扣分上报接口异常:" + e.getMessage()); + } + } + + /** + * 调用第三方获取企业评分接口 + * + * @param companyId 企业ID + * @return 企业评分信息 + */ + @Override + public AjaxResult callThirdPartyGetCompanyScore(Long companyId) { + try { + log.info("调用第三方获取企业评分接口: companyId={}", companyId); + + // 获取Token + String token = getThirdPartyToken("admin", "admin123456"); + if (token == null) { + return AjaxResult.error("获取第三方Token失败"); + } + + // 调用第三方接口 + String response = thirdPartyHttpClient.getCompanyScore(token, companyId); + if (response == null) { + return AjaxResult.error("调用第三方获取企业评分接口失败"); + } + + log.info("获取企业评分成功: {}", response); + return AjaxResult.success("获取企业评分成功", response); + } catch (Exception e) { + log.error("调用第三方获取企业评分接口异常", e); + return AjaxResult.error("调用第三方获取企业评分接口异常: " + e.getMessage()); + } + } +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/VideoStreamDetectionServiceImpl.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/VideoStreamDetectionServiceImpl.java index 58e0c552..30c8a69a 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/VideoStreamDetectionServiceImpl.java +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/service/impl/VideoStreamDetectionServiceImpl.java @@ -90,6 +90,11 @@ public class VideoStreamDetectionServiceImpl implements IVideoStreamDetectionSer return videoStreamDetectionMapper.selectAllPushRecords(query); } + @Override + public List listReviewedRecords(VideoStreamDetection query) { + return videoStreamDetectionMapper.selectReviewedRecords(query); + } + @Override public VideoStreamDetection selectVideoStreamDetectionById(Long id) { return videoStreamDetectionMapper.selectVideoStreamDetectionById(id); diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/utils/ThirdPartyHttpClient.java b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/utils/ThirdPartyHttpClient.java new file mode 100644 index 00000000..f3e69f1b --- /dev/null +++ b/ruoyi-modules/aidmt-manage-ms/src/main/java/com/admin/contractor/utils/ThirdPartyHttpClient.java @@ -0,0 +1,170 @@ +package com.admin.contractor.utils; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; + +/** + * 第三方接口客户端工具类 + * 用于调用第三方电力系统接口 + * + * @author ruoyi + */ +@Slf4j +@Component +public class ThirdPartyHttpClient { + + private static final String BASE_URL = "http://1.13.245.108/trainCore"; + private static final HttpClient httpClient = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .build(); + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * 获取第三方系统的Token + * + * @param username 用户名 + * @param password 密码 + * @return Token字符串 + */ + public String getToken(String username, String password) { + try { + String loginUrl = BASE_URL + "/login/getToken"; + String requestBody = String.format("{\"username\":\"%s\",\"password\":\"%s\"}", username, password); + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(loginUrl)) + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString(requestBody)) + .timeout(Duration.ofSeconds(10)) + .build(); + + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + if (response.statusCode() == 200) { + log.info("获取第三方Token成功"); + // 根据实际响应格式解析Token + return parseToken(response.body()); + } else { + log.error("获取第三方Token失败,状态码: {}", response.statusCode()); + return null; + } + } catch (Exception e) { + log.error("获取第三方Token异常", e); + return null; + } + } + + /** + * 调用第三方扣分上报接口 + * + * @param token 认证 Token + * @param requestBody 请求体 JSON 字符串 + * @return 响应结果 + */ + public String submitDeduction(String token, String requestBody) { + try { + String deductionUrl = BASE_URL + "/thirdParty/deduction"; + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(deductionUrl)) + .header("Content-Type", "application/json") + .header("Authorization", token) // 添加 Bearer 前缀 + .POST(HttpRequest.BodyPublishers.ofString(requestBody)) + .timeout(Duration.ofSeconds(10)) + .build(); + + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + if (response.statusCode() == 200) { + // 检查业务返回码 + JsonNode jsonNode = objectMapper.readTree(response.body()); + if (jsonNode.has("code") && jsonNode.get("code").asInt() != 200) { + log.error("第三方扣分上报业务失败,业务码:{}, 消息:{}", + jsonNode.get("code").asInt(), + jsonNode.has("message") ? jsonNode.get("message").asText() : "未知错误"); + return response.body(); // 返回原始响应,让上层处理 + } + log.info("第三方扣分上报成功"); + return response.body(); + } else { + log.error("第三方扣分上报失败,HTTP 状态码:{}", response.statusCode()); + return null; + } + } catch (Exception e) { + log.error("第三方扣分上报异常", e); + return null; + } + } + + /** + * 调用第三方获取企业评分接口 + * + * @param token 认证Token + * @param companyId 企业ID + * @return 响应结果 + */ + public String getCompanyScore(String token, Long companyId) { + try { + String scoreUrl = BASE_URL + "/thirdParty/getCompanyScore?companyId=" + companyId; + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(scoreUrl)) + .header("Content-Type", "application/json") + .header("Authorization", token) // 添加 Bearer 前缀 + .POST(HttpRequest.BodyPublishers.ofString("")) + .timeout(Duration.ofSeconds(10)) + .build(); + + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + if (response.statusCode() == 200) { + log.info("获取企业评分成功,companyId: {}", companyId); + return response.body(); + } else { + log.error("获取企业评分失败,状态码: {}", response.statusCode()); + return null; + } + } catch (Exception e) { + log.error("获取企业评分异常", e); + return null; + } + } + + /** + * 从响应体中解析Token + * 根据实际的第三方响应格式调整 + * + * @param responseBody 响应体 + * @return Token + */ + private String parseToken(String responseBody) { + try { + // 响应格式:{"code":200,"message":"操作成功","data":{"token":"eyJhbGci..."}} + var jsonNode = objectMapper.readTree(responseBody); + if (jsonNode.has("data") && !jsonNode.get("data").isNull()) { + JsonNode dataNode = jsonNode.get("data"); + // 如果 data 是对象且包含 token 字段 + if (dataNode.has("token")) { + return dataNode.get("token").asText(); + } + // 如果 data 直接就是 token 字符串 + if (dataNode.isValueNode()) { + return dataNode.asText(); + } + } + log.error("无法从响应中解析出 Token: {}", responseBody); + return null; + } catch (Exception e) { + log.error("解析Token异常", e); + return responseBody; + } + } +} diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueFeedbackMapper.xml b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueFeedbackMapper.xml index 12f35b45..8492f9bb 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueFeedbackMapper.xml +++ b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueFeedbackMapper.xml @@ -26,7 +26,7 @@ + select count(1) from cons_issue_fb + where project_id = #{projectId} and status in (0,3) + + diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueRectificationMapper.xml b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueRectificationMapper.xml index c48a6f1e..cb8dfbd3 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueRectificationMapper.xml +++ b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/ConstructionIssueRectificationMapper.xml @@ -35,6 +35,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,26 +83,38 @@ order by create_time desc + + - - + + diff --git a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/VideoStreamDetectionMapper.xml b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/VideoStreamDetectionMapper.xml index 772e281d..20ce7baf 100644 --- a/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/VideoStreamDetectionMapper.xml +++ b/ruoyi-modules/aidmt-manage-ms/src/main/resources/mapper/VideoStreamDetectionMapper.xml @@ -71,6 +71,35 @@ order by v.create_time desc + + update cons_video_detection set review_status = #{reviewStatus}, review_by = #{reviewBy}, review_time = now()