dangsn
2024-12-03 d0ae279ff3b83358d1c07f4481a041c4ad335026
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java
@@ -1,15 +1,31 @@
package com.vci.web.controller;
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.dto.OsLifeCycleDTO;
import com.vci.starter.web.annotation.log.VciBusinessLog;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.pagemodel.OsERVO;
import com.vci.pagemodel.OsLifeCycleVO;
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.OsLifeCycleServiceI;
import com.vci.starter.web.util.Lcm.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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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;
/**
 * 生命周期的控制器
@@ -25,6 +41,11 @@
     */
    @Autowired
    private OsLifeCycleServiceI lifeCycleService;
    /**
     * 日志
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * 生命周期列表
@@ -45,4 +66,163 @@
    public BaseResult<OsERVO> listLinesPic(String id){
        return BaseResult.success(lifeCycleService.listLinesPic(id));
    }
    /**
     * 查询应用范围
     * @param lifeCycleName 版本规则英文名称
     * @return
     */
    @GetMapping("/getUsedLifeCycleList")
    public BaseResult getUsedLifeCycleList(String lifeCycleName){
        try {
            return BaseResult.dataList(lifeCycleService.getUsedLifeCycleList(lifeCycleName));
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "版本规则应用范围查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * 添加单条生命周期
     * @param osLifeCycleVO
     * @return 列表的内容
     */
    @PostMapping( "/addLifeCycle")
    @VciBusinessLog(operateName = "添加生命周期")
    public BaseResult addLifeCycle(@RequestBody OsLifeCycleVO osLifeCycleVO) {
        try {
            return lifeCycleService.addLifeCycle(osLifeCycleVO) ? BaseResult.success("生命周期添加成功!"):BaseResult.fail("生命周期添加失败!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "添加生命周期时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * 修改单条生命周期
     * @param osLifeCycleVO
     * @return 列表的内容
     */
    @PutMapping( "/updateLifeCycle")
    @VciBusinessLog(operateName = "修改生命周期")
    public BaseResult updateLifeCycle(@RequestBody OsLifeCycleVO osLifeCycleVO) {
        try {
            return lifeCycleService.updateLifeCycle(osLifeCycleVO) ? BaseResult.success("生命周期修改成功!"):BaseResult.fail("生命周期修改失败!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "修改生命周期时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * 删除生命周期
     * @param lifeCycleDTOS
     * @return 列表的内容
     */
    @DeleteMapping( "/deleteLifeCycles")
    @VciBusinessLog(operateName = "删除生命周期")
    public BaseResult deleteLifeCycles(@RequestBody List<OsLifeCycleDTO> lifeCycleDTOS) {
        try {
            return lifeCycleService.deleteLifeCycles(lifeCycleDTOS) ? BaseResult.success("生命周期删除成功!"):BaseResult.fail("生命周期删除失败!");
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "删除生命周期时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * 导出选中的生命周期
     * @param exportFileName 导出的文件名
     * @param lcNames 需要导出的生命周期英文名称
     * @param response
     */
    @GetMapping( "/exportLifeCycles")
    @VciBusinessLog(operateName = "导出生命周期")
    public void exportLifeCycles(String exportFileName,String lcNames, HttpServletResponse response){
        try {
            String excelPath = lifeCycleService.exportLifeCycles(exportFileName,lcNames,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( "/downloadLifeCycleTemplate")
    @VciBusinessLog(operateName = "下载生命周期导入模板")
    public void downloadLifeCycleTemplate(String exportFileName, HttpServletResponse response){
        try {
            String excelPath = lifeCycleService.downloadLifeCycleTemplate(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("/importLifeCycles")
    @VciBusinessLog(operateName = "导入生命周期")
    public BaseResult importLifeCycles(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 lifeCycleService.importLifeCycles(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();
        }
    }
    /**
     * 查询所有跃迁事件key
     * @return
     */
    @GetMapping("/getLCEventKeys")
    public BaseResult getLCEventKeys(){
        try {
            return BaseResult.dataList(lifeCycleService.getLCEventKeys());
        }catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "跃迁事件查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
}