songhuangfeng123
2022-07-28 e2380fc99bb36cadfa8e2b5c22fcf17310a8dbfd
equipment/equipment-service/src/main/java/com/gkhy/safePlatform/equipment/controller/EquipmentInfoController.java
@@ -1,26 +1,38 @@
package com.gkhy.safePlatform.equipment.controller;
import com.alibaba.fastjson.JSONObject;
import com.gkhy.safePlatform.commons.utils.BeanCopyUtils;
import com.gkhy.safePlatform.equipment.entity.*;
import com.gkhy.safePlatform.equipment.model.dto.req.EquipmentInfoImportExcel;
import com.gkhy.safePlatform.equipment.model.dto.req.EquipmentInfoSaveOrUpdate;
import com.gkhy.safePlatform.equipment.model.dto.resp.EquipmentInfoExcel;
import com.gkhy.safePlatform.equipment.utils.DateUtils;
import com.gkhy.safePlatform.equipment.utils.poihelper.ExcelLogs;
import com.gkhy.safePlatform.equipment.utils.poihelper.ExcelUtil;
import com.google.common.collect.Lists;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.Timestamp;
import com.gkhy.safePlatform.equipment.model.dto.resp.EquipmentInfoDto;
import com.gkhy.safePlatform.equipment.service.EquipmentInfoService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.gkhy.safePlatform.commons.query.PageQuery;
import com.gkhy.safePlatform.commons.utils.PageUtils;
import com.gkhy.safePlatform.commons.vo.ResultVO;
import com.gkhy.safePlatform.commons.enums.ResultCodes;
import com.gkhy.safePlatform.equipment.model.dto.req.EquipmentInfoQueryCriteria;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
/**
 * 设备设施详细信息(EquipmentInfo)表控制层
@@ -36,6 +48,12 @@
     */
    @Resource
    private EquipmentInfoService equipmentInfoService;
    @Autowired
    public HttpServletRequest request;
    @Autowired
    public HttpServletResponse response;
    /**
     * 分页查询所有数据
@@ -109,6 +127,172 @@
        return new ResultVO<>(ResultCodes.OK,this.equipmentInfoService.statistics());
    }
    /**
     * 下载模板
     *
     */
    @GetMapping(value = "/exportTemplate")
    public void exportTemplate() throws IOException {
        Map<String,String> map = new LinkedHashMap<>();
        map.put("1", "类型/类别外键");
        map.put("2", "具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 ");
        map.put("3", "名称");
        map.put("4", "位号");
        map.put("5", "用途");
        map.put("6", "型号");
        map.put("7", "单位部门外键");
        map.put("8", "设置部位");
        map.put("9", "生产日期(yyyy-MM-dd HH:mm:ss)");
        map.put("10", "使用期限(天)");
        map.put("11", "生命周期 1:已使用 2:库存中 3:报废");
        map.put("12", "投用日期(yyyy-MM-dd HH:mm:ss)");
        map.put("13", "维修状态 1:维修中 2:已修好");
        map.put("14", "停用状态 1:停用 2.在用 3.维修 4.报废");
        map.put("15", "上次检查日期(yyyy-MM-dd HH:mm:ss)");
        map.put("16", "上次检测日期(yyyy-MM-dd HH:mm:ss)");
        map.put("17", "上次保养日期(yyyy-MM-dd HH:mm:ss)");
        map.put("18", "下次检查日期(yyyy-MM-dd HH:mm:ss)");
        map.put("19", "下次检测日期(yyyy-MM-dd HH:mm:ss)");
        map.put("20", "下次保养日期(yyyy-MM-dd HH:mm:ss)");
        map.put("21", "负责人ID外键");
        map.put("22", "负责人部门外键");
        map.put("23", "供应商");
        map.put("24", "使用说明");
        map.put("25", "是否检查 1:是 2:否");
        map.put("26", "检查周期");
        map.put("27", "检查提前提醒");
        map.put("28", "是否检测 1:是 2:否");
        map.put("29", "检测周期");
        map.put("30", "检测提前提醒");
        map.put("31", "是否保养 1:是 2:否");
        map.put("32", "检查内容");
        map.put("33", "负责部门/外键");
        map.put("34", "检查指标");
        map.put("35", "预警值");
        map.put("36", "联锁值");
        map.put("37", "停用理由");
        map.put("38", "停用后措施");
        map.put("39", "实际停用日期(yyyy-MM-dd HH:mm:ss)");
        map.put("40", "停用提交人/外键");
        map.put("41", "停用提交日期(yyyy-MM-dd HH:mm:ss)");
        map.put("42", "恢复理由");
        map.put("43", "恢复填报日期(yyyy-MM-dd HH:mm:ss)");
        map.put("44", "实际恢复日期(yyyy-MM-dd HH:mm:ss)");
        map.put("45", "报废理由");
        map.put("46", "报废填报日期(yyyy-MM-dd HH:mm:ss)");
        map.put("47", "实际报废日期(yyyy-MM-dd HH:mm:ss)");
        String fileName = URLEncoder.encode("设备设施管理数据导入模板.xls", "UTF-8");
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        ExcelUtil.exportExcel(map,new ArrayList<>() , response.getOutputStream());
        response.getOutputStream().close();
    }
    /**
     * 导入数据
     *
     */
    @RequestMapping(value = "/importData")
    public ResultVO importData(MultipartFile file) throws IOException {
        String contentType = file.getContentType();
        if(!"application/vnd.ms-excel".equals(contentType)
                && !"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(contentType)) {
            return new ResultVO<>(ResultCodes.CLIENT_PARAM_ILLEGAL, "上传的excel格式错误");
        }
        Collection<EquipmentInfoImportExcel> importExcel = ExcelUtil.importExcel(EquipmentInfoImportExcel.class, file.getInputStream(), "yyyy-MM-dd HH:mm:ss", new ExcelLogs() , 0);
        if (CollectionUtils.isEmpty(importExcel)) {
            return new ResultVO<>(ResultCodes.OK);
        }
        List<EquipmentInfo> respList = BeanCopyUtils.copyBeanList((List<EquipmentInfoImportExcel>)importExcel, EquipmentInfo.class);
        equipmentInfoService.saveBatch(respList);
        return new ResultVO<>(ResultCodes.OK);
    }
    /**
     * 导出一览数据
     *
     */
    @GetMapping(value = "/exportData")
    public void exportData(EquipmentInfoQueryCriteria queryCriteria) throws IOException {
        Map<String,String> map = new LinkedHashMap<>();
        map.put("0", "ID");
        map.put("1", "类型/类别外键");
        map.put("2", "具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 ");
        map.put("3", "名称");
        map.put("4", "位号");
        map.put("5", "用途");
        map.put("6", "型号");
        map.put("7", "单位部门外键");
        map.put("8", "设置部位");
        map.put("9", "生产日期(yyyy-MM-dd HH:mm:ss)");
        map.put("10", "使用期限(天)");
        map.put("11", "生命周期 1:已使用 2:库存中 3:报废");
        map.put("12", "投用日期(yyyy-MM-dd HH:mm:ss)");
        map.put("13", "维修状态 1:维修中 2:已修好");
        map.put("14", "停用状态 1:停用 2.在用 3.维修 4.报废");
        map.put("15", "上次检查日期(yyyy-MM-dd HH:mm:ss)");
        map.put("16", "上次检测日期(yyyy-MM-dd HH:mm:ss)");
        map.put("17", "上次保养日期(yyyy-MM-dd HH:mm:ss)");
        map.put("18", "下次检查日期(yyyy-MM-dd HH:mm:ss)");
        map.put("19", "下次检测日期(yyyy-MM-dd HH:mm:ss)");
        map.put("20", "下次保养日期(yyyy-MM-dd HH:mm:ss)");
        map.put("21", "负责人ID外键");
        map.put("22", "负责人部门外键");
        map.put("23", "供应商");
        map.put("24", "使用说明");
        map.put("25", "是否检查 1:是 2:否");
        map.put("26", "检查周期");
        map.put("27", "检查提前提醒");
        map.put("28", "是否检测 1:是 2:否");
        map.put("29", "检测周期");
        map.put("30", "检测提前提醒");
        map.put("31", "是否保养 1:是 2:否");
        map.put("32", "检查内容");
        map.put("33", "负责部门/外键");
        map.put("34", "检查指标");
        map.put("35", "预警值");
        map.put("36", "联锁值");
        map.put("37", "停用理由");
        map.put("38", "停用后措施");
        map.put("39", "实际停用日期(yyyy-MM-dd HH:mm:ss)");
        map.put("40", "停用提交人/外键");
        map.put("41", "停用提交日期(yyyy-MM-dd HH:mm:ss)");
        map.put("42", "恢复理由");
        map.put("43", "恢复填报日期(yyyy-MM-dd HH:mm:ss)");
        map.put("44", "实际恢复日期(yyyy-MM-dd HH:mm:ss)");
        map.put("45", "报废理由");
        map.put("46", "报废填报日期(yyyy-MM-dd HH:mm:ss)");
        map.put("47", "实际报废日期(yyyy-MM-dd HH:mm:ss)");
        String key = DateUtils.date2String(new Date(), DateUtils.PATTERN_ALLTIME_NOSIGN) ;
        String fileName = URLEncoder.encode("设备设施管理"+key+".xls", "UTF-8");
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        List<EquipmentInfoExcel> respList = BeanCopyUtils.copyBeanList(equipmentInfoService.queryAll(queryCriteria), EquipmentInfoExcel.class);
        ExcelUtil.exportExcel(map,respList , response.getOutputStream(),DateUtils.PATTERN_STANDARD);
        response.getOutputStream().close();
    }
    public static void main(String[] args) {
        EquipmentInfoDto infoDto = new EquipmentInfoDto();
        List<EquipmentRepairDetail> repairDetails = Lists.newArrayList();