package cn.iocoder.yudao.module.mdm.controller.admin.agent; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.mdm.controller.admin.agent.vo.MdmAgentImportCommitReqVO; import cn.iocoder.yudao.module.mdm.controller.admin.agent.vo.MdmAgentImportPreflightReqVO; import cn.iocoder.yudao.module.mdm.controller.admin.agent.vo.MdmAgentImportPreflightRespVO; import cn.iocoder.yudao.module.mdm.controller.admin.agent.vo.MdmAgentImportReceiptRespVO; import cn.iocoder.yudao.module.mdm.service.agent.MdmAgentImportCommandService; import cn.iocoder.yudao.module.mdm.service.agent.MdmAgentImportPreflightService; import cn.iocoder.yudao.module.system.framework.agent.AgentPrincipal; import cn.iocoder.yudao.module.system.framework.agent.SystemAgentBridgeGuard; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** 智能体物料导入桥接:只读预检 + 幂等提交 + 回执查询。 */ @RestController @RequestMapping("/agent/bridge/material-imports") public class MdmAgentImportBridgeController { @Resource private MdmAgentImportPreflightService preflightService; @Resource private MdmAgentImportCommandService commandService; @Resource private SystemAgentBridgeGuard bridgeGuard; @PostMapping("/preflight") @PreAuthorize("@ss.hasPermission('mdm:item:import')") public CommonResult preflight( @RequestHeader(value = "X-Agent-Service-Token", required = false) String serviceToken, @Valid @RequestBody MdmAgentImportPreflightReqVO reqVO) { AgentPrincipal principal = bridgeGuard.require(serviceToken, SystemAgentBridgeGuard.PERMISSION_ITEM_IMPORT); return success(preflightService.preflight(reqVO, principal)); } @PostMapping("/commit") @PreAuthorize("@ss.hasPermission('mdm:item:import')") public CommonResult commit( @RequestHeader(value = "X-Agent-Service-Token", required = false) String serviceToken, @Valid @RequestBody MdmAgentImportCommitReqVO reqVO) { AgentPrincipal principal = bridgeGuard.require(serviceToken, SystemAgentBridgeGuard.PERMISSION_ITEM_IMPORT); return success(commandService.commit(reqVO, principal)); } @GetMapping("/commands/{commandId}") @PreAuthorize("@ss.hasPermission('mdm:item:import')") public CommonResult getCommand( @RequestHeader(value = "X-Agent-Service-Token", required = false) String serviceToken, @PathVariable String commandId) { AgentPrincipal principal = bridgeGuard.require(serviceToken, SystemAgentBridgeGuard.PERMISSION_ITEM_IMPORT); return success(commandService.getCommand(commandId, principal)); } }