tangxiaobao
2021-08-17 cc2dc834d7e518052d98e48ad9a9e1bef81aece7
下载安全工作记录报告
2个文件已添加
2个文件已修改
368 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java 314 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/LiveVO.java
New file
@@ -0,0 +1,26 @@
package com.panzhihua.common.model.vos;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 天气信息对象
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-8-17 12:55
 **/
@Data
@ApiModel(value = "天气信息返回体")
public class LiveVO {
    private String adcode;
    private String city;
    private String humidity;
    private String province;
    private String reporttime;
    private String temperature;
    private String weather;
    private String winddirection;
    private String windpower;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/WeatherVO.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.common.model.vos;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 天气信息对象
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-8-17 12:55
 **/
@Data
@ApiModel(value = "天气信息返回体")
public class WeatherVO {
    private String count;
    private String info;
    private String infocode;
    private String status;
    private List<LiveVO> lives;
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
@@ -48,6 +48,11 @@
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.kmood</groupId>
            <artifactId>officeexport-java</artifactId>
            <version>1.0.1.6-RELEASE</version>
        </dependency>
    </dependencies>
    <build>
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComSwPatrolRecordApi.java
@@ -4,6 +4,7 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
//import com.kmood.datahandle.DocumentProducer;
@@ -13,16 +14,23 @@
import com.panzhihua.common.listen.ComMngPopulationServeExcelListen;
import com.panzhihua.common.listen.ComSwRotaExcelListen;
import com.panzhihua.common.model.dtos.community.*;
import com.panzhihua.common.model.vos.LiveVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.WeatherVO;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.partybuilding.PartyBuildingComPbDynVO;
import com.panzhihua.common.model.vos.shop.ComShopSysConfVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.partybuilding.PartyBuildingService;
import com.panzhihua.common.utlis.HttpUtils;
import com.panzhihua.common.utlis.SFTPUtil;
import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
//import freemarker.template.Configuration;
//import freemarker.template.Template;
//import freemarker.template.Version;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -31,11 +39,13 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.applet.Main;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.File;
@@ -442,73 +452,199 @@
        }
    }
//    @ApiOperation(value = "导出图片测试")
//    @GetMapping("/export/picture")
//    public static void testPictureOutModel () {
//        try {
//            Class<? extends Class> aClass = Main.class.getClass();
//            ClassLoader classLoader = aClass.getClassLoader();
//            if (classLoader == null){
//                classLoader = ClassLoader.getSystemClassLoader();
//            }
//            String ActualModelPath = classLoader.getResource("model/").toURI().getPath();
//            String xmlPath = classLoader.getResource("model").toURI().getPath();
//            String ExportFilePath = classLoader.getResource(".").toURI().getPath() + "/picture.doc";
//
//            HashMap<String, Object> map = new HashMap<>();
//            //读取输出图片
//            URL introUrl = classLoader.getResource("./picture/微信图片_20210805165019.jpg");
////            URL codeUrl = classLoader.getResource("./picture/exportTestPicture-code.png");
////            URL titleUrl = classLoader.getResource("./picture/exportTestPicture-title.png");
//
//            String intro = Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(introUrl.toURI().getPath()));
//            map.put("intro", intro);
////            String code = Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(codeUrl.toURI().getPath()));
////            map.put("code", code);
////            map.put("title", Base64.getEncoder().encodeToString(FileUtils.readToBytesByFilepath(titleUrl.toURI().getPath())));
//            //编译输出
//            DocumentProducer dp = new DocumentProducer(ActualModelPath);
////            String complie = dp.Complie(xmlPath, "picture.xml", true);
//            dp.produce(map, ExportFilePath);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    @ApiOperation(value = "导出图片测试")
//    @PostMapping("/export/picture")
//    public void test(@RequestParam(value = "id") Long id){
//        Long communityId = this.getLoginUserInfo().getCommunityId();
//        Map<String,Object> dataMap = new HashMap<String, Object>();
//        try {
//            ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailSafetyWorkRecord(id, communityId).getData()),ComSwSafetyWorkRecordVO.class);
//            //日期
//            dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
//            Configuration configuration = new Configuration(new Version("2.3.0"));
//            configuration.setDefaultEncoding("utf-8");
//
//            /**
//             * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是
//             * 指定ftl文件所在目录的路径,而不是ftl文件的路径
//             */
//            //指定路径的第一种方式(根据某个类的相对路径指定)
////                configuration.setClassForTemplateLoading(this.getClass(), "");
//
//            //指定路径的第二种方式,我的路径是C:/a.ftl
//            configuration.setDirectoryForTemplateLoading(new File("c:/"));
//
//            //输出文档路径及名称
//            File outFile = new File("D:/报销信息导出.doc");
//
//            //以utf-8的编码读取ftl文件
//            Template template = configuration.getTemplate("报告.ftl", "utf-8");
//            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
//            template.process(dataMap, out);
//            out.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    @ApiOperation(value = "下载安全工作记录报告")
    @PostMapping("/export/safetyWorkRecord")
    public R exportSafetyWorkRecord(@RequestParam(value = "id") Long id){
        Long communityId = this.getLoginUserInfo().getCommunityId();
        Map<String,Object> dataMap = new HashMap<String, Object>();
        ComSwSafetyWorkRecordVO comSwSafetyWorkRecordVO = JSONObject.parseObject(JSONObject.toJSONString(communityService.detailSafetyWorkRecord(id, communityId).getData()),ComSwSafetyWorkRecordVO.class);
        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
        String name = "安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc";
        try {
            //日期
            dataMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
            //巡查类型
            dataMap.put("patrolType", comSwSafetyWorkRecordVO.getPatrolType());
            //社区名称
            dataMap.put("communityName", comSwSafetyWorkRecordVO.getCommunityName());
            //地址
            dataMap.put("address", comSwSafetyWorkRecordVO.getAddress());
            //记录内容
            dataMap.put("recordContent", comSwSafetyWorkRecordVO.getRecordContent());
            //发现记录
            dataMap.put("findRecord", comSwSafetyWorkRecordVO.getFindRecord());
            //记录照片
            String[] photo = comSwSafetyWorkRecordVO.getRecordPhoto().split(",");
            for (int i = 0; i < photo.length; i++){
                downloadPicture(photo[i], comSwSafetyWorkRecordVO.getId() + "_" + i);
            }
            if (photo.length == 0 || null == photo){
                dataMap.put("imgStr1", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr2", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr3", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr4", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr5", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 1){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr3", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr4", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr5", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 2){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr4", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr5", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 3){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr5", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 4){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 5){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", photo[4]);
                dataMap.put("imgStr6", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 6){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", photo[4]);
                dataMap.put("imgStr6", photo[5]);
                dataMap.put("imgStr7", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 7){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", photo[4]);
                dataMap.put("imgStr6", photo[5]);
                dataMap.put("imgStr7", photo[6]);
                dataMap.put("imgStr8", getImageStr("/mnt/data/web/blank.jpg"));
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 8){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", photo[4]);
                dataMap.put("imgStr6", photo[5]);
                dataMap.put("imgStr7", photo[6]);
                dataMap.put("imgStr8", photo[7]);
                dataMap.put("imgStr9", getImageStr("/mnt/data/web/blank.jpg"));
            }
            if (photo.length == 9){
                dataMap.put("imgStr1", photo[0]);
                dataMap.put("imgStr2", photo[1]);
                dataMap.put("imgStr3", photo[2]);
                dataMap.put("imgStr4", photo[3]);
                dataMap.put("imgStr5", photo[4]);
                dataMap.put("imgStr6", photo[5]);
                dataMap.put("imgStr7", photo[6]);
                dataMap.put("imgStr8", photo[7]);
                dataMap.put("imgStr9", photo[8]);
            }
            //备注
            dataMap.put("remark", comSwSafetyWorkRecordVO.getRemark());
            //巡查时间
            dataMap.put("patrolTime", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getPatrolTime()));
            //工作人员
            dataMap.put("personName", comSwSafetyWorkRecordVO.getPersonName());
            //填报人员
            dataMap.put("createName", comSwSafetyWorkRecordVO.getCreateName());
            //填报时间
            dataMap.put("createAt", new SimpleDateFormat("yyyy-MM-dd").format(comSwSafetyWorkRecordVO.getCreateAt()));
            //获取请求url
            String url = Constants.G_D_WEATHER_URL;
            //获取请求参数
            String param = "key=" + Constants.G_D_WEATHER_KEY + "&city=510400";
            String result = HttpUtils.sendGet(url,param);
            R r = R.ok(JSON.parseObject(result));
            WeatherVO weatherVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), WeatherVO.class);if (null != weatherVO) {
                LiveVO liveVO = weatherVO.getLives().get(0);
                //城市
                dataMap.put("city", liveVO.getCity());
                //天气
                dataMap.put("weather", liveVO.getWeather());
                //温度
                dataMap.put("temperature", liveVO.getTemperature());
                //风向
                dataMap.put("winddirection", liveVO.getWinddirection());
                //风力
                dataMap.put("windpower", liveVO.getWindpower());
            }
            Configuration configuration = new Configuration(new Version("2.3.0"));
            configuration.setDefaultEncoding("utf-8");
            /**
             * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是
             * 指定ftl文件所在目录的路径,而不是ftl文件的路径
             */
            //指定路径的第一种方式(根据某个类的相对路径指定)
//                configuration.setClassForTemplateLoading(this.getClass(), "");
            //指定路径的第二种方式,我的路径是C:/a.ftl
            configuration.setDirectoryForTemplateLoading(new File("mnt/data/web/"));
            //输出文档路径及名称
            File outFile = new File("mnt/data/web/excel/安全工作记录_" + comSwSafetyWorkRecordVO.getId() + ".doc");
            //以utf-8的编码读取ftl文件
            Template template = configuration.getTemplate("安全工作记录.ftl", "utf-8");
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
            template.process(dataMap, out);
            out.close();
            return R.ok(excelUrl + name);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("文件传输失败【{}】", e.getMessage());
            return R.fail();
        }
    }
    private List<List<String>> headDataFilling(){
        List<List<String>> list = new ArrayList<List<String>>();
@@ -538,11 +674,51 @@
        data.add("2021-01-01");
        data.add("张三、李四、王二");
        data.add("138000000、138000000、138000000");
        data.add("王五、王六");
        data.add("138000000、138000000");
        data.add("王五");
        data.add("138000000");
        data.add("示例");
        return data;
    }
    public String getImageStr(String fileName) {
        String imgFile = fileName;
        InputStream in = null;
        byte[] data = null;
        try {
            in = new FileInputStream(imgFile);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }
    public String downloadPicture(String urlString, String fileName) throws Exception {
        // 构造URL
        URL url = new URL(urlString);
        // 打开连接
        URLConnection con = url.openConnection();
        // 输入流
        InputStream is = con.getInputStream();
        // 1K的数据缓冲
        byte[] bs = new byte[1024];
        // 读取到的数据长度
        int len;
        // 输出的文件流
        String filename = "d:/" + fileName + ".jpg";  //下载路径及下载图片名称
        File file = new File(filename);
        FileOutputStream os = new FileOutputStream(file, true);
        // 开始读取
        while ((len = is.read(bs)) != -1) {
            os.write(bs, 0, len);
        }
        // 完毕,关闭所有链接
        os.close();
        is.close();
        return filename;
    }
}