From 4f0ab5fbe931949871b2a777c90f00f3661404c6 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 13 Mar 2024 08:46:05 +0800
Subject: [PATCH] fix:走航日报补充提交

---
 screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java          |    3 
 screen-api/src/main/resources/word/盐城市走航监测报告.docx                                 |    0 
 screen-api/src/main/java/com/moral/api/controller/CruiserController.java          |  183 ++++++++++++++++++++++++++++++++++--
 screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java |   53 +++++-----
 screen-api/src/main/resources/mapper/DeviceMapper.xml                             |    2 
 5 files changed, 201 insertions(+), 40 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
index 31908f5..e550ddc 100644
--- a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
@@ -4,8 +4,8 @@
 import cn.hutool.poi.word.WordUtil;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.PictureRenderData;
 import com.deepoove.poi.data.RowRenderData;
-import com.deepoove.poi.data.TextRenderData;
 import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
 import com.moral.api.entity.Dustld;
 import com.moral.api.exception.BusinessException;
@@ -17,6 +17,7 @@
 import com.moral.api.service.SpecialDeviceService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
+import com.moral.util.DateUtils;
 import com.moral.util.WebUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -26,17 +27,16 @@
 import org.apache.commons.io.FileUtils;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.system.ApplicationHome;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
-import java.net.URL;
 import java.net.URLEncoder;
 import java.text.ParseException;
 import java.util.ArrayList;
@@ -153,19 +153,18 @@
         return ObjectUtils.isEmpty(daily) ? ResultMessage.ok() : ResultMessage.ok(daily);
     }
 
+
+
     /**
      * ���������������������
-     * @param id
+     * @param params
      * @return
      */
-    @GetMapping("loadDaily")
-    public ResultMessage loadDaily(Integer id){
-
-        DailyVo dailyVo = specialDeviceService.loadDaily(id);
-        if (dailyVo==null){
-            return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
-        }
-        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dailyVo);
+    @PostMapping("loadDaily")
+    public void loadDaily( @RequestBody Map<String,Object> params,HttpServletResponse response) throws IOException {
+        List<Integer> ids = (List<Integer>) params.get("ids");
+        List<DailyVo> dailyVos = specialDeviceService.loadDaily(ids);
+        dailyDocx(dailyVos,response);
     }
 
     /**
@@ -397,4 +396,164 @@
     }
 
 
+
+    public  void dailyDocx( List<DailyVo> dailyVos,HttpServletResponse response) throws IOException {
+//        String path = getPath(fileName);
+        //������jar���������������
+        ApplicationHome applicationHome = new ApplicationHome(getClass());
+        //���jar������������������������������upload������������������������������������
+        String path = applicationHome.getSource().getParentFile().toString() + "/static/img";
+        try {
+            //InputStream  inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������.docx");
+            InputStream stream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������������.docx");
+            //������������������
+            File file = new File("word/���������������������������.docx");
+            //���������������������������������������������������������������������������������������������
+            FileUtils.copyInputStreamToFile(stream, file);
+            //��������������������������������������������� ������������������������
+            String filePath = file.getAbsolutePath();
+
+
+
+            //������������������������������������������������������{{}}������������������������,map������������key������������������������������������������
+            HashMap<String, Object> map = new HashMap<>();
+            //������������������������
+            //RowRenderData header1 = RowRenderData.build(new TextRenderData("6495ED", "������"), new TextRenderData("6495ED", "������"),new TextRenderData("6495ED", "���������������������/������������"));
+
+            //���������������������������������������������������������list������������������������������foreach������������������
+            List<Map> detailList1 = new ArrayList<>();
+            List<Map> detailList2 = new ArrayList<>();
+            List<Map> detailList3 = new ArrayList<>();
+            List<Map> detailList4 = new ArrayList<>();
+            List<Map> detailList5 = new ArrayList<>();
+            List<Map> detailList6 = new ArrayList<>();
+            List<Map> detailList7 = new ArrayList<>();
+            List<Map> detailList8 = new ArrayList<>();
+            StringBuilder builder = new StringBuilder();
+            List<Map> pic1 = new ArrayList<>();
+            List<Map> pic2 = new ArrayList<>();
+            List<Map> pic3 = new ArrayList<>();
+            List<Map> pic4 = new ArrayList<>();
+            List<Map> pic5 = new ArrayList<>();
+            List<Map> pic6 = new ArrayList<>();
+            List<Map> pic7 = new ArrayList<>();
+            List<Map> pic8 = new ArrayList<>();
+
+//            picMap.put("urlImg", Pictures.ofUrl(str, PictureType.JPEG).size(width, height).create());
+//            picMap.put("urlImg",new PictureRenderData(500, 500, "G:\\home\\3d423e3cb05d7edc35c38e3173af2a0d.jpg"));
+//            picMap.put("urlImg1",new PictureRenderData(500, 500, "G:\\home\\3d423e3cb05d7edc35c38e3173af2a0d.jpg"));
+//            picMap.put("urlImg", Pictures.ofUrl("G:\\home\\3d423e3cb05d7edc35c38e3173af2a0d.jpg", PictureType.JPEG).size(500, 500).create());
+//            picMap.put("urlImg1", Pictures.ofUrl("G:\\home\\3d423e3cb05d7edc35c38e3173af2a0d.jpg", PictureType.JPEG).size(500, 500).create());
+            int i =1;
+            for (DailyVo dailyVo : dailyVos) {
+                Map picMap = new HashMap();
+                List<String> images = dailyVo.getImages();
+                if (!ObjectUtils.isEmpty(images)){
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(0)));
+                    pic1.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(1)));
+                    pic2.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(2)));
+                    pic3.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(3)));
+                    pic4.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(4)));
+                    pic5.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(5)));
+                    pic6.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(6)));
+                    pic7.add(picMap);
+                    picMap.put("urlImg"+i,new PictureRenderData(500, 500, path+"\\"+images.get(7)));
+                    pic8.add(picMap);
+                }
+                detailList1.add(dailyVo.getCode());
+                detailList2.add(dailyVo.getCode());
+                detailList3.add(dailyVo.getCode());
+                detailList4.add(dailyVo.getCode());
+                detailList5.add(dailyVo.getCode());
+                detailList6.add(dailyVo.getCode());
+                detailList7.add(dailyVo.getCode());
+                detailList8.add(dailyVo.getCode());
+                builder.append("("+dailyVo.getCode().get("mac")+")������������������������������������������������������������������������������������������7���������������������PM2.5���������������"+dailyVo.getCode().get("avgPm25")+"ug/m3���PM10���������������"+dailyVo.getCode().get("avgPm10")+"ug/m3���NO2���������������"
+                        +dailyVo.getCode().get("avgNO2")+"ug/m3���CO���������������"+dailyVo.getCode().get("avgCO")+"mg/m3���SO2���������������"+dailyVo.getCode().get("avgSO2")+"ug/m3���O3���������������"+dailyVo.getCode().get("avgO3")+"ug/m3���VOCs������������"+dailyVo.getCode().get("avgVOC")+"mg/m3���"+"\n"+"    ");
+            }
+/*            for (HashMap<String, Object> list : lists) {
+                detailList1.add(list);
+                detailList2.add(list);
+                detailList3.add(list);
+                detailList4.add(list);
+                detailList5.add(list);
+                detailList6.add(list);
+                detailList7.add(list);
+                detailList8.add(list);
+            builder.append("("+list.get("mac")+")������������������������������������������������������������������������������������������7���������������������PM2.5���������������"+list.get("avgPm25")+"ug/m3���PM10���������������"+list.get("avgPm10")+"ug/m3���NO2���������������"
+                    +list.get("avgNO2")+"ug/m3���CO���������������"+list.get("avgCO")+"mg/m3���SO2���������������"+list.get("avgSO2")+"ug/m3���O3���������������"+list.get("avgO3")+"ug/m3���VOCs������������"+list.get("avgVOC")+"mg/m3���"+"\n"+"    ");
+            }*/
+/*            List<Map> pic = new ArrayList<>();
+            for (MultipartFile multipartFile : files) {
+                Map picMap = new HashMap();
+                InputStream inputStream = multipartFile.getInputStream();
+                picMap.put("urlImg", Pictures.ofStream(inputStream, PictureType.JPEG).size(500, 500).create());
+                pic.add(picMap);
+            }*/
+
+
+
+            map.put("code",builder);
+            map.put("time1",DateUtils.getCurCNDate());
+//            map.put("pho",new PictureRenderData(100, 100, "G:\\home\\3d423e3cb05d7edc35c38e3173af2a0d.jpg"));
+//            Pictures.ofLocal(null);
+//            map.put("pho1",new PictureRenderData(100, 100, path+"\\0a4ab467-304d-4871-948f-55aa7e820975.png"));
+
+            HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
+            Configure config = Configure.newBuilder().bind("detailList1", policy).bind("detailList2", policy).bind("detailList3", policy).bind("detailList4", policy)
+                    .bind("detailList5", policy).bind("detailList6", policy).bind("detailList7", policy).bind("detailList8", policy).build();
+            XWPFTemplate compile = XWPFTemplate.compile(filePath,config).render(new HashMap<String, Object>(){{
+                put("code",map.get("code"));
+                put("time1",map.get("time1"));
+//                put("pho", map.get("pho"));
+//                put("pho1", map.get("pho1"));
+                put("detailList1", detailList1);
+                put("detailList2", detailList2);
+                put("detailList3", detailList3);
+                put("detailList4", detailList4);
+                put("detailList5", detailList5);
+                put("detailList6", detailList6);
+                put("detailList7", detailList7);
+                put("detailList8", detailList8);
+                put("picList1", pic1);
+                put("picList2", pic2);
+                put("picList3", pic3);
+                put("picList4", pic4);
+                put("picList5", pic5);
+                put("picList6", pic6);
+                put("picList7", pic7);
+                put("picList8", pic8);
+            }});
+
+
+
+
+            response.setContentType("multipart/form-data");
+            // ���������������
+            response.addHeader("Content-Disposition", "attachment;fileName=ce.docx" );
+            response.setCharacterEncoding("UTF-8");
+            //���������������
+//            File file1 = new File("G:\\test\\test2.docx");
+//            FileOutputStream out = new FileOutputStream(file1);
+//            compile.write(out);
+            //���������������
+            OutputStream out = response.getOutputStream();
+            compile.write(out);
+            out.flush();
+            out.close();
+            compile.close();
+        } catch (IOException e) {
+            log.error ("������������������������������������������", e);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java b/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
index 3810dd8..b6d2b5b 100644
--- a/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
+++ b/screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
@@ -6,7 +6,6 @@
 import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
-
 import com.moral.api.entity.SpecialDevice;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.moral.api.pojo.bo.ExcelBO;
@@ -48,7 +47,7 @@
     ExcelBO getDaily(Map<String, Object> params, List<MultipartFile> files) throws ParseException;
 
     //���������������������
-    DailyVo loadDaily(Integer id);
+    List<DailyVo> loadDaily(List<Integer> ids);
 
 
     //������������
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
index 44190f4..4a52535 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -3,13 +3,11 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-
 import com.moral.api.config.Interceptor.UserHelper;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.DailyMapper;
 import com.moral.api.mapper.HistorySecondCruiserMapper;
 import com.moral.api.mapper.SpecialDeviceMapper;
-import com.moral.api.mapper.SysDictTypeMapper;
 import com.moral.api.pojo.bo.ExcelBO;
 import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserListDTO;
 import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultCountDTO;
@@ -30,7 +28,6 @@
 import com.moral.util.FileUtils;
 import com.moral.util.GeodesyUtils;
 import com.moral.util.TokenUtils;
-
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,9 +35,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.File;
 import java.math.BigDecimal;
 import java.text.ParseException;
@@ -327,10 +322,11 @@
         String type = params.get("type").toString();
         String code = params.get("code").toString();
         String area = params.get("area").toString();
+        String mac = params.get("mac").toString();
         rsMap.put("area",area);
+        rsMap.put("mac",mac.substring(9));
         String value = JSON.toJSONString(rsMap);
 
-        String mac = params.get("mac").toString();
         QueryWrapper<TbDaily> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("mac",mac);
         queryWrapper.likeRight("time",time1.substring(0,10));
@@ -446,29 +442,36 @@
 
     /**
      * ���������������������
-     * @param id
+     * @param ids
      * @return
      */
     @Override
-    public DailyVo loadDaily(Integer id) {
-        ArrayList<String> rsList = new ArrayList<>();
-        DailyVo dailyVo = new DailyVo();
-        TbDaily tbDaily = dailyMapper.selectById(id);
-        if (tbDaily==null){
-            return null;
+    public List<DailyVo> loadDaily(List<Integer> ids) {
+        ArrayList<DailyVo> dailyVos = new ArrayList<>();
+        for (Integer id : ids) {
+            ArrayList<String> rsList = new ArrayList<>();
+            DailyVo dailyVo = new DailyVo();
+            TbDaily tbDaily = dailyMapper.selectById(id);
+            if (tbDaily==null){
+                continue;
+            }
+            String images = tbDaily.getImages();
+            if (!ObjectUtils.isEmpty(images)){
+                String[] split = images.split(",");
+                List<String> list1 = Arrays.asList(split);
+                dailyVo.setImages(list1);
+            }else {
+                dailyVo.setImages(rsList);
+            }
+            String value = tbDaily.getValue();
+            Map map = JSON.parseObject(value, Map.class);
+            List<String> list = (List<String>) map.get("time");
+            String join = String.join("-", list);
+            map.put("time",join);
+            dailyVo.setCode(map);
+            dailyVos.add(dailyVo);
         }
-        String images = tbDaily.getImages();
-        if (!ObjectUtils.isEmpty(images)){
-            String[] split = images.split(",");
-            List<String> list1 = Arrays.asList(split);
-            dailyVo.setImages(list1);
-        }else {
-            dailyVo.setImages(rsList);
-        }
-        String value = tbDaily.getValue();
-        Map map = JSON.parseObject(value, Map.class);
-        dailyVo.setCode(map);
-        return dailyVo;
+        return dailyVos;
     }
 
     /**
diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml
index 570004a..64c99ba 100644
--- a/screen-api/src/main/resources/mapper/DeviceMapper.xml
+++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml
@@ -257,7 +257,7 @@
                 #{id}
             </foreach>
         </if>
-        inner JOIN device_map_hierarchy as dm on d.id = dm.device_id
+        left JOIN device_map_hierarchy as dm on d.id = dm.device_id
         <if test="tableName !=null">
             left join history_hourly${tableName} hd on hd.time = #{start}  and d.mac = hd.mac
         </if>
diff --git "a/screen-api/src/main/resources/word/\347\233\220\345\237\216\345\270\202\350\265\260\350\210\252\347\233\221\346\265\213\346\212\245\345\221\212.docx" "b/screen-api/src/main/resources/word/\347\233\220\345\237\216\345\270\202\350\265\260\350\210\252\347\233\221\346\265\213\346\212\245\345\221\212.docx"
new file mode 100644
index 0000000..13703ab
--- /dev/null
+++ "b/screen-api/src/main/resources/word/\347\233\220\345\237\216\345\270\202\350\265\260\350\210\252\347\233\221\346\265\213\346\212\245\345\221\212.docx"
Binary files differ

--
Gitblit v1.8.0