package com.vci.web.controller; import com.vci.constant.FrameWorkLangCodeConstant; import com.vci.dto.OsRevisionRuleDTO; import com.vci.pagemodel.OsRevisionRuleVO; import com.vci.starter.web.annotation.controller.VciUnCheckRight; import com.vci.starter.web.annotation.log.VciBusinessLog; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.ControllerUtil; import com.vci.starter.web.util.LocalFileUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.OsRevisionRuleServiceI; import com.vci.web.util.Func; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.List; /** * 版本规则控制器 * @author ludc * @date 2024/7/30 16:02 */ @RequestMapping("/revisionRuleController") @RestController public class OsRevisionRuleController { @Autowired private OsRevisionRuleServiceI revisionRuleServiceI; /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 版本规则列表(全查询) * @return */ @GetMapping("/getVersionRuleAllList") public BaseResult getVersionRuleAllList(){ try { return BaseResult.dataList(revisionRuleServiceI.selectAllRevision()); }catch (Exception e) { e.printStackTrace(); String exceptionMessage = "版本规则管理列表查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 查询应用范围 * @param vrName 版本规则英文名称 * @return */ @GetMapping("/getUsedVersionRuleList") public BaseResult getUsedVersionRuleList(String vrName){ try { return BaseResult.dataList(revisionRuleServiceI.getUsedVersionRuleList(vrName)); }catch (Exception e) { e.printStackTrace(); String exceptionMessage = "版本规则应用范围查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 创建版本规则 * @param osRevisionRuleDTO 版本规则数据传输对象 * @return */ @PostMapping("/addVersionRule") public BaseResult addVersionRule(@RequestBody OsRevisionRuleDTO osRevisionRuleDTO){ try { return revisionRuleServiceI.addVersionRule(osRevisionRuleDTO) ? BaseResult.success("版本规则添加成功!"):BaseResult.fail("版本规则添加失败!"); }catch (Exception e) { e.printStackTrace(); String exceptionMessage = "增加属性时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 修改版本规则 * @param osRevisionRuleDTO 版本规则数据传输对象 * @return */ @PutMapping("/updateVersionRule") public BaseResult updateVersionRule(@RequestBody OsRevisionRuleDTO osRevisionRuleDTO){ try { return revisionRuleServiceI.updateVersionRule(osRevisionRuleDTO) ? BaseResult.success("版本规则修改成功!"):BaseResult.fail("版本规则修改失败!"); }catch (Exception e) { e.printStackTrace(); String exceptionMessage = "修改版本规则时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 删除版本规则 * @param osRevisionRuleDTOS 版本规则数据传输对象 * @return */ @DeleteMapping("/deleteVersionRule") public BaseResult deleteVersionRule(@RequestBody List osRevisionRuleDTOS){ try { return revisionRuleServiceI.deleteVersionRule(osRevisionRuleDTOS) ? BaseResult.success("版本规则删除成功!"):BaseResult.fail("版本规则删除失败!"); }catch (Exception e) { e.printStackTrace(); String exceptionMessage = "删除版本规则时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 导出选中的版本规则 * @param exportFileName 导出的文件名 * @param vrNames 需要导出的规则英文名称 * @param response */ @GetMapping( "/exportVersionRule") @VciBusinessLog(operateName = "导出版本规则") public void exportVersionRule(String exportFileName,String vrNames, HttpServletResponse response){ try { String excelPath = revisionRuleServiceI.exportVersionRule(exportFileName,vrNames,false); ControllerUtil.writeFileToResponse(response,excelPath); } catch (Exception e) { String msg = "导出版本规则时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); try { //出错时 e.printStackTrace(); ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null); } catch (IOException ioException) { ioException.printStackTrace(); } } } /** * 下载版本规则导入模板 * @param exportFileName * @param response */ @GetMapping( "/downloadAttributeTemplate") @VciBusinessLog(operateName = "下载版本规则导入模板") public void downloadVersionRuleTemplate(String exportFileName, HttpServletResponse response){ try { String excelPath = revisionRuleServiceI.downloadVersionRuleTemplate(exportFileName); ControllerUtil.writeFileToResponse(response,excelPath); } catch (Exception e) { String msg = "下载版本规则导入模板时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); try { //出错时 e.printStackTrace(); ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null); } catch (IOException ioException) { ioException.printStackTrace(); } } } /** * 导入版本规则 * @param file * @return */ @PostMapping("/importVersionRules") @VciBusinessLog(operateName = "导入版本规则") public BaseResult importVersionRules(MultipartFile file){ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename()); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); if (file != null) { return revisionRuleServiceI.importVersionRules(file1); } else { return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"无导入的文件"}); } }catch (Throwable e) { throw new VciBaseException(VciBaseUtil.getExceptionMessage(e),new String[0],e); }finally { file1.delete(); } } }