package com.vincent.rsf.server.system.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.common.SnowflakeIdWorker; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.system.entity.AiDiagnosticToolConfig; import com.vincent.rsf.server.system.service.AiDiagnosticToolConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @RestController public class AiDiagnosticToolConfigController extends BaseController { @Autowired private AiDiagnosticToolConfigService aiDiagnosticToolConfigService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @PreAuthorize("hasAuthority('system:aiToolConfig:list')") @PostMapping("/aiToolConfig/page") public R page(@RequestBody Map map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam pageParam = new PageParam<>(baseParam, AiDiagnosticToolConfig.class); com.baomidou.mybatisplus.core.conditions.query.QueryWrapper wrapper = pageParam.buildWrapper(true); wrapper.eq("tenant_id", getTenantId()); return R.ok().add(aiDiagnosticToolConfigService.page(pageParam, wrapper)); } @PreAuthorize("hasAuthority('system:aiToolConfig:list')") @GetMapping("/aiToolConfig/{id}") public R get(@PathVariable("id") Long id) { AiDiagnosticToolConfig config = aiDiagnosticToolConfigService.getTenantConfig(getTenantId(), id); if (config == null) { return R.error("config not found"); } return R.ok().add(config); } @PreAuthorize("hasAuthority('system:aiToolConfig:save')") @OperationLog("Create AiDiagnosticToolConfig") @PostMapping("/aiToolConfig/save") public R save(@RequestBody AiDiagnosticToolConfig config) { if (Cools.isEmpty(config.getSceneCode()) || Cools.isEmpty(config.getToolCode())) { return R.error("场景编码和工具编码不能为空"); } Date now = new Date(); config.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); config.setTenantId(getTenantId()); config.setCreateBy(getLoginUserId()); config.setCreateTime(now); config.setUpdateBy(getLoginUserId()); config.setUpdateTime(now); if (config.getEnabledFlag() == null) { config.setEnabledFlag(1); } if (config.getPriority() == null) { config.setPriority(1); } if (config.getStatus() == null) { config.setStatus(1); } if (!aiDiagnosticToolConfigService.save(config)) { return R.error("Save Fail"); } return R.ok("Save Success").add(config); } @PreAuthorize("hasAuthority('system:aiToolConfig:update')") @OperationLog("Update AiDiagnosticToolConfig") @PostMapping("/aiToolConfig/update") public R update(@RequestBody AiDiagnosticToolConfig config) { AiDiagnosticToolConfig existed = aiDiagnosticToolConfigService.getTenantConfig(getTenantId(), config.getId()); if (existed == null) { return R.error("config not found"); } config.setTenantId(getTenantId()); config.setUpdateBy(getLoginUserId()); config.setUpdateTime(new Date()); config.setCreateBy(existed.getCreateBy()); config.setCreateTime(existed.getCreateTime()); if (config.getEnabledFlag() == null) { config.setEnabledFlag(existed.getEnabledFlag()); } if (config.getPriority() == null) { config.setPriority(existed.getPriority()); } if (config.getStatus() == null) { config.setStatus(existed.getStatus()); } if (!aiDiagnosticToolConfigService.updateById(config)) { return R.error("Update Fail"); } return R.ok("Update Success").add(config); } @PreAuthorize("hasAuthority('system:aiToolConfig:remove')") @OperationLog("Delete AiDiagnosticToolConfig") @PostMapping("/aiToolConfig/remove/{ids}") public R remove(@PathVariable Long[] ids) { List idList = Arrays.asList(ids); List configs = aiDiagnosticToolConfigService.list(new LambdaQueryWrapper() .eq(AiDiagnosticToolConfig::getTenantId, getTenantId()) .in(AiDiagnosticToolConfig::getId, idList)); if (configs.size() != idList.size() || !aiDiagnosticToolConfigService.removeByIds(idList)) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); } @PreAuthorize("hasAuthority('system:aiToolConfig:list')") @PostMapping("/aiToolConfig/export") public void export(@RequestBody Map map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(aiDiagnosticToolConfigService.list(new LambdaQueryWrapper() .eq(AiDiagnosticToolConfig::getTenantId, getTenantId())), AiDiagnosticToolConfig.class), response); } @PreAuthorize("hasAuthority('system:aiToolConfig:list')") @GetMapping("/ai/tool-config/list") public R customList(@RequestParam(required = false) String sceneCode) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(AiDiagnosticToolConfig::getTenantId, getTenantId()) .orderByAsc(AiDiagnosticToolConfig::getSceneCode, AiDiagnosticToolConfig::getPriority, AiDiagnosticToolConfig::getId); if (!Cools.isEmpty(sceneCode)) { wrapper.eq(AiDiagnosticToolConfig::getSceneCode, sceneCode); } return R.ok().add(aiDiagnosticToolConfigService.list(wrapper)); } @PreAuthorize("hasAnyAuthority('system:aiToolConfig:save','system:aiToolConfig:update')") @PostMapping("/ai/tool-config/save") public R customSave(@RequestBody AiDiagnosticToolConfig config) { if (config.getId() == null) { if (!hasAuthority("system:aiToolConfig:save")) { return R.error("无新增权限"); } return save(config); } if (!hasAuthority("system:aiToolConfig:update")) { return R.error("无更新权限"); } return update(config); } }