Browse Source

月报附件存储服务变更-存入发改委

Perperon 3 months ago
parent
commit
9c4e5aecb9
18 changed files with 526 additions and 44 deletions
  1. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/RptContMapper.java
  2. 4 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubAerialImageMapper.java
  3. 32 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubAerialImageMapper.xml
  4. 6 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/ISubAerialImageService.java
  5. 2 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubRptContService.java
  6. 46 2
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubAerialImageServiceImpl.java
  7. 6 2
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java
  8. 5 1
      projects-service/src/main/java/com/rtrh/projects/modules/system/mapper/WeekAndMonrhFileMapper.java
  9. 16 8
      projects-service/src/main/java/com/rtrh/projects/modules/system/mapper/WeekAndMonrhFileMapper.xml
  10. 2 0
      projects-service/src/main/java/com/rtrh/projects/modules/system/service/WeekAndMonthFileService.java
  11. 26 9
      projects-service/src/main/java/com/rtrh/projects/modules/system/service/impl/WeekAndMonthFileImpl.java
  12. 14 0
      projects/src/main/java/com/rtrh/projects/web/controller/aerial/SubAerialImgController.java
  13. 24 0
      projects/src/main/java/com/rtrh/projects/web/controller/aerial/api/SubAerialImgApiController.java
  14. 103 0
      projects/src/main/java/com/rtrh/projects/web/controller/fileSystem/FileGetController.java
  15. 88 5
      projects/src/main/java/com/rtrh/projects/web/controller/fileSystem/FilePostController.java
  16. 20 0
      projects/src/main/java/com/rtrh/projects/web/controller/projects/api/ProjMonthReportApiController.java
  17. 114 0
      projects/src/main/webapp/vmodules/aerial/showFgw.jsp
  18. 17 16
      projects/src/main/webapp/vmodules/project/monthReport.jsp

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/RptContMapper.java

@@ -47,7 +47,7 @@ public interface RptContMapper {
     @Insert("INSERT INTO sub_rpt_cont (id, kind, begin_date, end_date, content, reason, amt_last, amt_rt, year, week, num_bl, sub_id, sub_plan_id, amt, create_time, logic_delete_flag, create_user_id, kj_month) VALUES (#{r.id}, #{r.kind}, #{r.beginDate}, #{r.endDate}, #{r.content}, #{r.reason}, #{r.amtLast}, #{r.amtRt}, #{r.year}, #{r.week}, #{r.numBl}, #{r.subId}, #{r.subPlanId}, #{r.amt}, #{r.createTime}, #{r.logicDeleteFlag}, #{r.createUserId}, #{r.kjMonth})")
     void save(@Param("r") RptCont rptCont);
 
-    @Update("UPDATE sub_rpt_cont SET reason = #{r.reason}, content = #{r.content}, amt_last = #{r.amtLast}, num_bl = #{r.numBl}, amt = #{r.amt}, sub_plan_id = #{r.subPlanId}, last_update_time = #{r.lastUpdateTime}, last_update_userId = #{lastUpdateUserId} WHERE id = #{r.id}")
+    @Update("UPDATE sub_rpt_cont SET reason = #{r.reason}, content = #{r.content}, amt_last = #{r.amtLast}, num_bl = #{r.numBl}, amt = #{r.amt}, sub_plan_id = #{r.subPlanId}, last_update_time = #{r.lastUpdateTime}, last_update_userId = #{r.lastUpdateUserId} WHERE id = #{r.id}")
     void update(@Param("r") RptCont rptCont);
 
     @Select("select " +

+ 4 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubAerialImageMapper.java

@@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
+import java.util.List;
+
 /**
  * @author dupengcheng
  * @date 2025/1/9
@@ -33,4 +35,6 @@ public interface SubAerialImageMapper {
     void  update(@Param("s") SubAerialImage image);
     @Insert("INSERT INTO sub_aerial_image (id, sub_id, aerial_date, img_id, remark, create_time, create_user_id, last_update_userId, last_update_time, logic_delete_flag, type) VALUES (#{s.id}, #{s.subId}, #{s.aerialDate}, #{s.imgId}, #{s.remark}, #{s.createTime}, #{s.createUserId}, #{s.lastUpdateUserId}, #{s.lastUpdateTime}, #{s.logicDeleteFlag}, #{s.type})")
     void  save(@Param("s") SubAerialImage image);
+
+    List<SubAerialImage> findBySubId(@Param("subId") String subId, @Param("type") String type);
 }

+ 32 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubAerialImageMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.rtrh.projects.modules.projects.mapper.SubAerialImageMapper">
+
+    <select id="findBySubId" parameterType="string" resultType="com.rtrh.projects.modules.projects.po.SubAerialImage">
+        select
+        id,
+        sub_id as subId,
+        aerial_date as aerialDate,
+        img_id as imgId,
+        remark,
+        create_time as createTime,
+        create_user_id as createUserId,
+        last_update_userId as lastUpdateUserId,
+        last_update_time as lastUpdateTime,
+        logic_delete_flag as logicDeleteFlag,
+        type
+        from sub_aerial_image
+        where
+        logic_delete_flag = 0
+        <if test="subId != null and subId != ''">
+            and sub_id =#{subId}
+        </if>
+        <if test="type != null and type != ''">
+            and type = #{type}
+        </if>
+        <if test="type == null or type == ''">
+            and type is null
+        </if>
+        order by aerial_date asc
+    </select>
+</mapper>

+ 6 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/ISubAerialImageService.java

@@ -10,6 +10,8 @@ public interface ISubAerialImageService {
 
 	List<SubAerialImage> listBySubId(String subId);
 
+	List<SubAerialImage> listByFgwSubId(String subId, String type);
+
 
 	List<SubAerialImage> listBySubIdType(String subId,String type);
 
@@ -20,5 +22,9 @@ public interface ISubAerialImageService {
 
 	void save(List<SubAerialImgVO> list, LoginUserVO loginUserVO);
 
+	void saveFgw(List<SubAerialImgVO> list, LoginUserVO loginUserVO);
+
 	void del(String id);
+
+	void delFgw(String id);
 }

+ 2 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubRptContService.java

@@ -176,4 +176,6 @@ public interface SubRptContService {
 	Page list(Page page, LoginUserVO loginUserVO, SubInfoQueryTzVO queryTzVO);
 
     String selectNewestMonthReportByIdAndKind(String subId, String code);
+
+	RptCont getBySubIdAndMonthFgw(String subId, String year, String week, RptContKindEnum contKindEnum);
 }

+ 46 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubAerialImageServiceImpl.java

@@ -38,6 +38,12 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 		return subAerialImageDao.find(detachedCriteria);
 	}
 
+	@Override
+	@TargetDataSource("secondary")
+	public List<SubAerialImage> listByFgwSubId(String subId, String type) {
+		return subAerialImageMapper.findBySubId(subId,type);
+	}
+
 	@Override
 	public List<SubAerialImage> listBySubIdType(String subId, String type) {
 		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubAerialImage.class);
@@ -53,8 +59,6 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 			}
 
 		}
-
-
 		detachedCriteria.add(criterion);
 		detachedCriteria.addOrder(Order.asc("aerialDate"));
 		return subAerialImageDao.find(detachedCriteria);
@@ -92,6 +96,7 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 			image.setAerialDate(vo.getAerialDate());
 			image.setImgId(vo.getImgId());
 			image.setRemark(vo.getRemark());
+			image.setType("0");
 			image.setLastUpdateTime(new Date());
 			image.setLastUpdateUserId(loginUserVO.getId());
 			subAerialImageMapper.update(image);
@@ -101,6 +106,7 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 			image.setImgId(vo.getImgId());
 			image.setRemark(vo.getRemark());
 			image.setSubId(vo.getSubId());
+			image.setType("0");
 			image.setCreateTime(new Date());
 			image.setCreateUserId(loginUserVO.getId());
 			subAerialImageMapper.save(image);
@@ -134,7 +140,37 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 			subAerialImageDao.saveOrUpdate(image);
 		}
 
+	}
 
+	@Override
+	@TargetDataSource("secondary")
+	public void saveFgw(List<SubAerialImgVO> list, LoginUserVO loginUserVO) {
+
+		for (SubAerialImgVO vo:list){
+			SubAerialImage image = new SubAerialImage();
+			if(StringUtil.isNotEmpty(vo.getId())) {
+				image = subAerialImageMapper.findById(vo.getId());
+				image.setAerialDate(vo.getAerialDate());
+				image.setImgId(vo.getImgId());
+				image.setRemark(vo.getRemark());
+				image.setLastUpdateTime(new Date());
+				image.setType("1");
+				image.setLogicDeleteFlag(vo.getLogicDeleteFlag());
+				image.setLastUpdateUserId(loginUserVO.getId());
+				subAerialImageMapper.update(image);
+			}else {
+				image.setId(Identities.uuid());
+				image.setAerialDate(vo.getAerialDate());
+				image.setImgId(vo.getImgId());
+				image.setRemark(vo.getRemark());
+				image.setSubId(vo.getSubId());
+				image.setCreateTime(new Date());
+				image.setType("1");
+				image.setCreateUserId(loginUserVO.getId());
+				subAerialImageMapper.save(image);
+			}
+
+		}
 
 	}
 
@@ -146,5 +182,13 @@ public class SubAerialImageServiceImpl implements ISubAerialImageService {
 
 	}
 
+	@Override
+	@TargetDataSource("secondary")
+	public void delFgw(String id) {
+		SubAerialImage image = subAerialImageMapper.findById(id);
+		image.setLogicDeleteFlag(1);
+		subAerialImageMapper.update(image);
+
+	}
 
 }

+ 6 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java

@@ -412,7 +412,7 @@ public class SubRptContServiceImpl implements SubRptContService {
 		}
 		//保存附件信息
 		if(CollectionUtil.isNotEmpty(vo.getListFile())) {
-			weekAndMonthFileService.saveOrUpdate(vo.getListFile(), loginUserVO.getLoginName(), mainId);
+			weekAndMonthFileService.saveOrUpdateFgw(vo.getListFile(), loginUserVO.getLoginName(), mainId);
 		}
 	}
 
@@ -1977,5 +1977,9 @@ public class SubRptContServiceImpl implements SubRptContService {
 		return sql;
 	}
 
-
+	@Override
+	@TargetDataSource("secondary")
+	public RptCont getBySubIdAndMonthFgw(String subId, String year, String week, RptContKindEnum contKindEnum) {
+		return rptContMapper.getBySubIdAndMonth(subId, year, week, contKindEnum.getCode());
+	}
 }

+ 5 - 1
projects-service/src/main/java/com/rtrh/projects/modules/system/mapper/WeekAndMonrhFileMapper.java

@@ -5,6 +5,7 @@ import com.rtrh.projects.modules.system.po.WeekAndMonthFile;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 
@@ -25,11 +26,14 @@ public interface WeekAndMonrhFileMapper {
             "create_user_id as createUserId,\n" +
             "last_update_userId as lastUpdateUserId,\n" +
             "last_update_time as lastUpdateTime,\n" +
-            "logic_delete_flag as logicDeleteFlag from week_and_month_file where main_id=#{mainId}")
+            "logic_delete_flag as logicDeleteFlag from week_and_month_file where main_id=#{mainId} and logic_delete_flag = 0")
     List<WeekAndMonthFile> listByMainId(@Param("mainId") String mainId);
 
     @Delete("delete from week_and_month_file where id = #{id}")
     void delete(@Param("id") String id);
 
     void saveOrUpdateAll(List<WeekAndMonthFile> list);
+
+    @Update("update week_and_month_file set logic_delete_flag = #{w.logicDeleteFlag} where id = #{w.id}")
+    void update(@Param("w") WeekAndMonthFile w);
 }

+ 16 - 8
projects-service/src/main/java/com/rtrh/projects/modules/system/mapper/WeekAndMonrhFileMapper.xml

@@ -4,14 +4,18 @@
 
 
 <insert id="saveOrUpdateAll" parameterType="java.util.List">
-    insert into kb_teach_together_group_member
+    insert into week_and_month_file
     (
-    id,
-    create_time,
-    create_user_id,
-    last_update_time,
-    last_update_userId,
-    main_id
+        id,
+        create_time,
+        create_user_id,
+        last_update_time,
+        last_update_userId,
+        main_id,
+        file_name,
+        file_addre,
+        file_type,
+        logic_delete_flag
     )
     values
     <foreach collection="list" item="item" index= "index" separator =",">
@@ -21,7 +25,11 @@
         #{item.createUserId},
         #{item.lastUpdateTime},
         #{item.lastUpdateUserId},
-        #{item.mainId}
+        #{item.mainId},
+        #{item.fileName},
+        #{item.fileAddre},
+        #{item.fileType},
+         0
         )
     </foreach>
 </insert>

+ 2 - 0
projects-service/src/main/java/com/rtrh/projects/modules/system/service/WeekAndMonthFileService.java

@@ -7,6 +7,8 @@ import com.rtrh.projects.modules.system.po.WeekAndMonthFile;
 
 public interface WeekAndMonthFileService {
     List<WeekAndMonthFile> listByMainId(String mainId);
+
+    List<WeekAndMonthFile> listByMainIdFgw(String mainId);
     /**
      * 保存
      * @param unit

+ 26 - 9
projects-service/src/main/java/com/rtrh/projects/modules/system/service/impl/WeekAndMonthFileImpl.java

@@ -1,9 +1,12 @@
 package com.rtrh.projects.modules.system.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
 import com.rtrh.projects.modules.system.mapper.WeekAndMonrhFileMapper;
+import com.rtrh.projects.util.TargetDataSource;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +31,12 @@ public class WeekAndMonthFileImpl implements WeekAndMonthFileService {
         return weekAndMonrhFileDao.listByMainId(mainId);
     }
 
+    @Override
+    @TargetDataSource("secondary")
+    public List<WeekAndMonthFile> listByMainIdFgw(String mainId) {
+        return weekAndMonrhFileMapper.listByMainId(mainId);
+    }
+
     @Override
     @Transactional
     public void saveOrUpdate(List<WeekAndMonthFile> list, String currUserName, String mainId) {
@@ -54,22 +63,30 @@ public class WeekAndMonthFileImpl implements WeekAndMonthFileService {
     @Override
     public void saveOrUpdateFgw(List<WeekAndMonthFile> list, String currUserName, String mainId) {
 
-        List<WeekAndMonthFile> list1= weekAndMonrhFileMapper.listByMainId(mainId);
+        /*List<WeekAndMonthFile> list1= weekAndMonrhFileMapper.listByMainId(mainId);
         for (WeekAndMonthFile weekAndMonthFile:list1){
             weekAndMonrhFileMapper.delete(weekAndMonthFile.getId());
-        }
+        }*/
 
 
         if(CollectionUtil.isNotEmpty(list)) {
+            List<WeekAndMonthFile> newList = new ArrayList<>();
             for (WeekAndMonthFile weekAndMonrhFile :list){
-                weekAndMonrhFile.setId(Identities.uuid());
-                weekAndMonrhFile.setCreateTime(new Date());
-                weekAndMonrhFile.setCreateUserId(currUserName);
-                weekAndMonrhFile.setLastUpdateTime(new Date());
-                weekAndMonrhFile.setLastUpdateUserId(currUserName);
-                weekAndMonrhFile.setMainId(mainId);
+                if (StringUtils.isEmpty(weekAndMonrhFile.getId())){
+                    weekAndMonrhFile.setId(Identities.uuid());
+                    weekAndMonrhFile.setCreateTime(new Date());
+                    weekAndMonrhFile.setCreateUserId(currUserName);
+                    weekAndMonrhFile.setLastUpdateTime(new Date());
+                    weekAndMonrhFile.setLastUpdateUserId(currUserName);
+                    weekAndMonrhFile.setMainId(mainId);
+                    newList.add(weekAndMonrhFile);
+                }else{
+                    weekAndMonrhFileMapper.update(weekAndMonrhFile);
+                }
+            }
+            if (newList.size()>0){
+                weekAndMonrhFileMapper.saveOrUpdateAll(newList);
             }
-            weekAndMonrhFileMapper.saveOrUpdateAll(list);
         }
     }
 

+ 14 - 0
projects/src/main/java/com/rtrh/projects/web/controller/aerial/SubAerialImgController.java

@@ -44,6 +44,20 @@ public class SubAerialImgController {
          return new ModelAndView("/vmodules/aerial/show.jsp");
     }
 
+	@GetMapping("imgShowFgw")
+	public ModelAndView aerialImgShowFgw(ModelMap model, String subId, String imgId) {
+		model.put("subId", subId);
+
+		List<SubAerialImage> list = subAerialImageService.listByFgwSubId(subId,null);
+		model.put("list", list);
+		if(StringUtil.isEmpty(imgId) && CollectionUtil.isNotEmpty(list)) {
+			imgId = list.get(0).getImgId();
+		}
+		model.put("imgId", imgId);
+
+		return new ModelAndView("/vmodules/aerial/showFgw.jsp");
+	}
+
     /**
      * 上传航拍图片的项目列表
      * @return

+ 24 - 0
projects/src/main/java/com/rtrh/projects/web/controller/aerial/api/SubAerialImgApiController.java

@@ -33,6 +33,14 @@ public class SubAerialImgApiController extends BaseController {
 		return message;
 	}
 
+	@PostMapping("listFgw")
+	public Message listFgw(@RequestBody SubAerialImgTypeVO subIdVO) {
+		Message message = new Message();
+		List<SubAerialImage> list = subAerialImageService.listByFgwSubId(subIdVO.getSubId(),subIdVO.getType());
+		message.setData(list);
+		return message;
+	}
+
 	@PostMapping("save")
 	@Log("航拍图片新增修改")
 	public Message save(@RequestBody SubAerialImgVO vo) {
@@ -58,6 +66,14 @@ public class SubAerialImgApiController extends BaseController {
 		return message;
 	}
 
+	@PostMapping("saveFgwNk")
+	@Log("航拍图片保存鸟瞰")
+	public Message saveFgwNk(@RequestBody List<SubAerialImgVO> list) {
+		Message message = new Message();
+		subAerialImageService.saveFgw(list, getCurUser().getLoginUser());
+		return message;
+	}
+
 
 	@PostMapping("del")
 	@Log("航拍图片删除")
@@ -66,4 +82,12 @@ public class SubAerialImgApiController extends BaseController {
 		subAerialImageService.del(idDTO.getId());
 		return message;
 	}
+
+	@PostMapping("delFgw")
+	@Log("航拍图片删除")
+	public Message delFgw(@RequestBody IdDTO idDTO) {
+		Message message = new Message();
+		subAerialImageService.delFgw(idDTO.getId());
+		return message;
+	}
 }

+ 103 - 0
projects/src/main/java/com/rtrh/projects/web/controller/fileSystem/FileGetController.java

@@ -3,6 +3,10 @@ package com.rtrh.projects.web.controller.fileSystem;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.List;
+import java.util.ResourceBundle;
 
 import javax.imageio.IIOImage;
 import javax.imageio.ImageIO;
@@ -10,6 +14,16 @@ import javax.imageio.ImageWriter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rtrh.projects.outapi.result.JsonResult;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -128,6 +142,95 @@ public class FileGetController {
 		}
 		return null;
 	}
+
+	/**
+	 * 查看文件
+	 * @param fileId
+	 * @param arg0
+	 * @param arg1
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value = "static/file/{fileId}/showfileFgw", method = RequestMethod.GET)
+	public ModelAndView showFileFgw(@PathVariable("fileId") String fileId, Integer width, Integer height,
+								 HttpServletRequest arg0, HttpServletResponse arg1) {
+		handleCrossDomain(arg0, arg1);
+		ByteArrayInputStream is = null;
+		try {
+			if (!StringUtil.isEmpty(fileId)) {
+				try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
+					// 创建一个HttpGet请求
+					ResourceBundle resourceBundle = ResourceBundle.getBundle("config");
+					// 拼接 B 系统的 URL
+					String url = resourceBundle.getString("app.fgw.url");
+					url = url + "/static/file/"+fileId;
+					// 创建一个HttpGet请求
+					HttpGet request = new HttpGet(url);
+					// 发送请求并获取响应
+					try (CloseableHttpResponse response = httpClient.execute(request)) {
+						// 获取响应实体
+						HttpEntity entity = response.getEntity();
+						// 如果响应实体不为空,则输出响应内容
+						if (entity != null) {
+							String responseBody = EntityUtils.toString(entity);
+							FileInfoBO bo = JSONObject.parseObject(JSON.parse(responseBody).toString(), FileInfoBO.class);
+							if (bo != null) {
+								is = new ByteArrayInputStream(bo.getByteData());
+								FileInfoBean fileInfoBean = bo.getFileInfo();
+								FileType fileType = FileSystemEnum.FileType.getFileTypeByKey(fileInfoBean.getFtype());
+								arg1.setContentType(fileType.getMimeType());
+								arg1.setHeader("Content-disposition", "inline;filename=\""
+										+ new String(fileInfoBean.getName().getBytes("utf-8"), "iso-8859-1") + "\"");
+								// 对图片进行压缩处理
+								if (width != null && height != null) {
+									switch (fileType) {
+										case PNG:
+										case JPG:
+										case BMP:
+											ImageWriter imgWrier = ImageIO.getImageWritersByFormatName(fileType.getExtension()).next();
+											ByteArrayOutputStream out = new ByteArrayOutputStream();
+											try {
+												BufferedImage src = ImageIO.read(is);
+												src = Thumbnails.of(src).size(width, height).keepAspectRatio(false).asBufferedImage();
+												imgWrier.reset();
+												imgWrier.setOutput(ImageIO.createImageOutputStream(out));
+												imgWrier.write(new IIOImage(src, null, null));
+											} catch (Exception e) {
+												e.printStackTrace();
+											} finally {
+												out.flush();
+												out.close();
+												is.close();
+											}
+											byte[] data = out.toByteArray();
+											is = new ByteArrayInputStream(data);
+											break;
+										default:
+											break;
+									}
+								}
+								arg1.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(bo.getByteData().length));
+								arg1.setDateHeader("expires", System.currentTimeMillis() + 60000 * 60 * 24 * 7);
+								SystemUtil.writeStream(is, arg1.getOutputStream());
+							} else {
+								arg1.sendError(HttpServletResponse.SC_NOT_FOUND);
+							}
+						}
+					}
+				}
+			}
+		} catch (FileNotFoundException e) {
+			logger.error(e.getMessage());
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error(e.getMessage());
+		} finally {
+			if (is != null) {
+				SystemUtil.closeAll(is);
+			}
+		}
+		return null;
+	}
 	
 	
 	

+ 88 - 5
projects/src/main/java/com/rtrh/projects/web/controller/fileSystem/FilePostController.java

@@ -1,15 +1,25 @@
 package com.rtrh.projects.web.controller.fileSystem;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.time.Duration;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.rtrh.projects.outapi.result.JsonResult;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -149,6 +159,79 @@ public class FilePostController {
 		return msgMap;
 	}
 
+	@RequestMapping(value = "static/file/uploadFgw", method = RequestMethod.POST)
+	@ResponseBody
+	public Map<String, Object> uploadFgw(MultipartHttpServletRequest arg0, HttpServletResponse arg1){
+		HashMap<String, Object> msgMap = new HashMap<>();
+
+		try {
+			Iterator<String> names = arg0.getFileNames();
+			List<FileInfoBO> bos = new ArrayList<>();
+			List<FileInfoBean> beans = new ArrayList<>();
+			while (names.hasNext()) {
+				MultipartFile part = arg0.getFile(names.next());
+				FileInfoBO bo = creatSpaceFileBO(arg0, part);
+				if (bo != null) {
+					bos.add(bo);
+				}
+			}
+
+			if (CollectionUtil.isNotEmpty(bos)) {
+				for (FileInfoBO bo : bos) {
+					// 设置文件为正式文件
+					bo.getFileInfo().setFstatus(FileStatus.Official.getKey());
+					//保存文件到发改委服务器上
+					// 创建ObjectMapper实例用于序列化Java对象为JSON
+					ObjectMapper objectMapper = new ObjectMapper();
+					String jsonRequest = objectMapper.writeValueAsString(bo);
+					try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
+						// 创建一个HttpGet请求
+						ResourceBundle resourceBundle = ResourceBundle.getBundle("config");
+						// 拼接 B 系统的 URL
+						String url = resourceBundle.getString("app.fgw.url");
+						url = url + "/static/file/saveOfficialDocument";
+						HttpPost request = new HttpPost(url);
+						// 设置请求头,指明内容类型为JSON
+						request.setHeader("Content-Type", "application/json");
+						// 设置请求体为JSON字符串
+						StringEntity entity = new StringEntity(jsonRequest);
+						request.setEntity(entity);
+						// 发送请求并获取响应
+						try (CloseableHttpResponse response = httpClient.execute(request)) {
+							// 获取响应实体
+							HttpEntity responseEntity = response.getEntity();
+							// 如果响应实体不为空,则输出响应内容
+							if (responseEntity != null) {
+								String responseBody = EntityUtils.toString(responseEntity);
+								JSONObject jsonObject = JSONObject.parseObject(responseBody);
+								FileInfoBean fileInfoBean = JSONObject.parseObject(jsonObject.get("resultList").toString(), FileInfoBean.class);
+								beans.add(fileInfoBean);
+							}
+						}
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+					// 转成pdf 穿件一个新的线程
+					String realname = bo.getFileInfo().getName();
+					if (realname.endsWith(".docx") || realname.endsWith(".doc") || realname.endsWith(".xls")
+							|| realname.endsWith(".xlsx") || realname.endsWith(".ppt") || realname.endsWith(".pptx")
+							|| realname.endsWith(".pdf") || realname.endsWith(".txt")) {
+					}
+				}
+			}
+			msgMap.put("success", true);
+			msgMap.put("resultList", beans);
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error("", e);
+			msgMap.put("success", false);
+			msgMap.put("resultList", "[]");
+		} finally {
+
+		}
+		return msgMap;
+	}
+
 	/**
 	 * 编辑器上传
 	 * @param arg0

+ 20 - 0
projects/src/main/java/com/rtrh/projects/web/controller/projects/api/ProjMonthReportApiController.java

@@ -4,6 +4,7 @@ import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Map;
 
+import com.rtrh.projects.modules.projects.mapper.RptContMapper;
 import com.rtrh.projects.modules.projects.po.SubInfo;
 import com.rtrh.projects.modules.projects.service.SubInfoService;
 import com.rtrh.projects.modules.projects.vo.SubRptWeekVO;
@@ -52,6 +53,8 @@ public class ProjMonthReportApiController extends BaseController {
 	@Autowired
 	private RptContDao rptContDao;
 	@Autowired
+	private SubRptContService rptContService;
+	@Autowired
 	private SubInfoService subInfoService;
 
 	@Autowired
@@ -136,6 +139,23 @@ public class ProjMonthReportApiController extends BaseController {
 		return res;
 	}
 
+	@PostMapping("getByInfoFgw")
+	public Message getByInfoFgw(@RequestBody ReportInfoGetVO getVO) {
+		Message res = new Message();
+		try {
+			String   week = String.valueOf(DateUtil.month(getVO.getStartDate()) +1);
+			RptCont old = rptContService.getBySubIdAndMonthFgw(getVO.getSubId(), getVO.getYear(), week, RptContKindEnum.MONTH);
+			if (old!=null){
+				List<WeekAndMonthFile> list=weekAndMonthFileService.listByMainIdFgw(old.getId());
+				res.setData(list);
+			}
+		} catch (Exception e) {
+			logger.error("",e);
+			res.addError(e.getMessage());
+		}
+		return res;
+	}
+
 	/**
 	 * 获取月报报信息
 	 */

+ 114 - 0
projects/src/main/webapp/vmodules/aerial/showFgw.jsp

@@ -0,0 +1,114 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+         pageEncoding="UTF-8"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<!DOCTYPE html>
+<html>
+<head>
+	<script src="${WebSite.asset}/lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
+	<script type="text/javascript" src="${WebSite.asset}/lib/vuejs/2.5.13/vue.js"></script>
+    <link rel="stylesheet" href="${WebSite.asset}/lib/photo-sphere-viewer/index.min.css" />
+	<style type="text/css">
+		.banner {
+			
+		}
+		
+		.banner ul {
+			display: flex;
+			list-style: none;
+		}
+		
+		.banner li {
+			width: 100px;
+			height: 120px;
+		}
+		
+		.banner img {
+			width: 100px;
+			height: 100px;
+		}
+		
+		.banner .choose {
+			border: 1px solid #62c4e9;
+		}
+		[v-cloak] {display: none !important;}
+	</style>
+
+</head>
+<body>
+<div id="viewer" style="width: 98vw; height: 90vh;">还没有航拍图片哟!!</div>
+<div class="banner" id="banner" v-cloak>
+	<ul>
+		<li :title="item.remark" v-for="(item, index ) in imgList" @click="choose(index)" :class="item.choose?'choose':''">
+			<img :src="`${domain }/static/file/`+item.imgId+`/showfileFgw`"/>
+			<span class="date">{{item.date }}</span>
+		</li>
+	</ul>
+</div>
+
+<script type="importmap">
+    {
+        "imports": {
+            "three": "${WebSite.asset}/lib/three/three.module.js",
+            "@photo-sphere-viewer/core": "${WebSite.asset}/lib/photo-sphere-viewer/index.module.js",
+        	"@photo-sphere-viewer/autorotatePlugin" : "${WebSite.asset}/lib/photo-sphere-viewer/plugin/AutorotatePlugin-5.7.2.js"
+		}
+    }
+</script>
+
+<script type="module">
+    import { Viewer } from '@photo-sphere-viewer/core';
+	import { AutorotatePlugin } from '@photo-sphere-viewer/autorotatePlugin';
+	new Vue({
+	  el: "#banner",
+	  data: {
+		imgList: []
+	  },
+	  mounted: function () {
+		  var initIndex = null;
+		  <c:forEach items="${list }" var="li" varStatus="lis">
+			<c:if test="${li.imgId eq imgId}">
+			initIndex = ${lis.index};
+			this.imgList.push({"imgId": "${li.imgId}", "date": '<fmt:formatDate value="${li.aerialDate}" pattern="yyyy-MM-dd"/>',  "remark":"${li.remark}", "choose": true});
+			</c:if>
+			<c:if test="${li.imgId ne imgId}">
+			this.imgList.push({"imgId": "${li.imgId}", "date": '<fmt:formatDate value="${li.aerialDate}" pattern="yyyy-MM-dd"/>',  "remark":"${li.remark}", "choose": false});
+			</c:if>
+			</c:forEach>
+		    if(initIndex != null) {
+    	      this.init360(initIndex);
+			}
+      },	
+	  methods: {
+	    init360: function(index) {
+			var item = this.imgList[index];
+			var img = "${domain}/static/file/"+item.imgId+"/showfileFgw";
+			$("#viewer").html("");
+			var viewer = new Viewer({
+       			container: document.querySelector('#viewer'),
+       			panorama: img,
+    			caption: item.date,
+				plugins: [
+					[AutorotatePlugin, {
+						enabled: true
+					}]
+				]
+				
+			});
+		},
+		choose: function(index) {
+			for(var i =0;i<this.imgList.length;i++) {
+				if(i == index) {
+					this.imgList[i].choose = true;
+				}else {
+					this.imgList[i].choose = false;
+				}
+			}
+			this.init360(index);
+		}
+	  }
+	})
+</script>
+</body>
+</html>

+ 17 - 16
projects/src/main/webapp/vmodules/project/monthReport.jsp

@@ -372,7 +372,7 @@
                                 <span class="delButton" title="删除" @click="del(item)">X</span>
                             </span>
                                     <img @dblclick="showAerial(item)"
-                                         :src="`${domain }/static/file/`+item.imgId+`/showfile`">
+                                         :src="`${domain }/static/file/`+item.imgId+`/showfileFgw`">
                                     <span class="detailbar">
 	        				<span class="time">{{item.aerialDate}}</span>
 	        				<span class="remark" :title="item.remark">{{item.remark}}</span>
@@ -521,7 +521,7 @@
                     }
                 });
 
-                App.common.utils.uploadFile('#upFile', App.getUrl('static/file/upload'), {
+                App.common.utils.uploadFile('#upFile', App.getUrl('static/file/uploadFgw'), {
                     acceptMime: 'image/png,image/jpg,image/jpeg',
                     exts: 'png|jpg|jpeg'
                 }, function (index, file, result) {
@@ -533,12 +533,13 @@
                 });
 
 
-                App.common.utils.uploadFile('#addPic', App.getUrl('/static/file/upload'), {
+                App.common.utils.uploadFile('#addPic', App.getUrl('/static/file/uploadFgw'), {
                     acceptMime: 'image/png,video/mp4,image/jpg,image/jpeg,application/pdf,application/msword,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                     exts: 'png|jpg|jpeg|pdf|xls|xlsx|doc|docx|mp4'
                 }, null, function (res) {
                     for (var i = 0; i < res.resultList.length; i++) {
                         var pic = {};
+                        console.log(res.resultList[i])
                         pic.fileAddre = res.resultList[i].id;
                         pic.fileName = res.resultList[i].name;
                         pic.fileType = res.resultList[i].ftype;
@@ -548,7 +549,7 @@
                 });
 
 
-                App.common.utils.uploadFile('#addPicPlus', App.getUrl('/static/file/upload'), {
+                App.common.utils.uploadFile('#addPicPlus', App.getUrl('/static/file/uploadFgw'), {
                     acceptMime: 'image/png,video/mp4,image/jpg,image/jpeg,application/pdf,application/msword,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                     exts: 'png|jpg|jpeg'
                 }, null, function (res) {
@@ -632,7 +633,7 @@
             edit: function (item) {
                 this.editInfo = item;
                 if (item.imgId) {
-                    $("#upFile").attr("src", App.common.utils.imgShow(item.imgId));
+                    $("#upFile").attr("src", App.getUrl("/static/file/"+fileId+"/showfileFgw"));
                 } else {
                     $("#upFile").attr("src", "${WebSite.asset }/css/images/jiahao.png");
                 }
@@ -646,7 +647,7 @@
             del: function (item) {
                 var self = this;
                 App.msg.confirm("确认删除该照片吗?", function () {
-                    App.postJson("/api/aerial/del", {id: item.id}, function (res) {
+                    App.postJson("/api/aerial/delFgw", {id: item.id}, function (res) {
                         if (res.success) {
                             self.getImgList();
                         }
@@ -683,13 +684,13 @@
             getImgList: function () {
                 var self = this;
                 this.imgList = [];
-                App.postJson("/api/aerial/list", {subId: self.yuebaoInfo.subId, type: "0"}, function (res) {
+                App.postJson("/api/aerial/listFgw", {subId: self.yuebaoInfo.subId, type: "0"}, function (res) {
                     if (res.success) {
                         self.imgList = res.data;
                     }
                 })
 
-                App.postJson("/api/aerial/list", {subId: self.yuebaoInfo.subId, type: "1"}, function (res) {
+                App.postJson("/api/aerial/listFgw", {subId: self.yuebaoInfo.subId, type: "1"}, function (res) {
                     if (res.success) {
                         self.imgLsPlus = res.data;
                     }
@@ -908,11 +909,11 @@
                 var mp4Url = "";
                 if (type == 8) {
                     <%--imageUrl= "${WebSite.asset}/css/images/pdf.png";--%>
-                    imageUrl = "${domain}/static/file/" + fileId + "/showfile";
+                    imageUrl = "${domain}/static/file/" + fileId + "/showfileFgw";
                     //$(tempId).attr("realUrl", "${domain}/static/file/"+fileId+"/showfile");
                 } else if (type == null || type == "") {
                 } else if (type == 101 || type == 102 || type == 103 || type == 104 || type == 105) {
-                    imageUrl = "${domain}/static/file/" + fileId + "/showfile";
+                    imageUrl = "${domain}/static/file/" + fileId + "/showfileFgw";
                     //$(tempId).attr("realUrl", "${domain}/static/file/"+fileId+"/showfile");
                 } else if (type == 4 || type == 5) {
                     imageUrl = "${WebSite.asset}/css/images/excel.png";
@@ -921,7 +922,7 @@
                     imageUrl = "${WebSite.asset}/css/images/word.png";
                     realUrl = "/static/file/download/" + fileId + "";
                 } else {
-                    imageUrl = '<video width="100%" height="100%"  controls="controls" autobuffer="autobuffer"  autoplay="autoplay" loop="loop"><source src="${domain}/static/file/' + fileId + '/showfile" type="video/mp4"></source></video>';
+                    imageUrl = '<video width="100%" height="100%"  controls="controls" autobuffer="autobuffer"  autoplay="autoplay" loop="loop"><source src="${domain}/static/file/' + fileId + '/showfileFgw" type="video/mp4"></source></video>';
                 }
                 if (imageUrl) {
                     if (type == 2 || type == 3 || type == 4 || type == 5) {
@@ -972,7 +973,7 @@
             showImagePlus: function (fileId) {
                 var imageUrl = "";
 
-                imageUrl = "${domain}/static/file/" + fileId + "/showfile";
+                imageUrl = "${domain}/static/file/" + fileId + "/showfileFgw";
                 var type = "101";
                 var createTime = "";
                 if (imageUrl) {
@@ -1027,7 +1028,7 @@
                     return "${WebSite.asset}/css/images/pdf.png";
                 } else if (type == null || type == "") {
                 } else if (type == 101 || type == 102 || type == 103 || type == 104 || type == 105) {
-                    return "${domain}/static/file/" + fileId + "/showfile";
+                    return "${domain}/static/file/" + fileId + "/showfileFgw";
                 } else if (type == 4 || type == 5) {
                     return "${WebSite.asset}/css/images/excel.png";
                 } else if (type == 2 || type == 3) {
@@ -1038,7 +1039,7 @@
 
             },
             picShowPlus(fileId) {
-                return "${domain}/static/file/" + fileId + "/showfile";
+                return "${domain}/static/file/" + fileId + "/showfileFgw";
             },
             getData() {
                 var self = this;
@@ -1304,7 +1305,7 @@
                         });
 
 
-                        App.postJson("/api/aerial/saveNk", self.imgLsPlus, function (res) {
+                        App.postJson("/api/aerial/saveFgwNk", self.imgLsPlus, function (res) {
 
                         });
                     },
@@ -1364,7 +1365,7 @@
                 date.setFullYear(row.kj_month.split("年")[0]);
                 date.setMonth(row.kj_month.split("年")[1].split("月")[0] - 1);
                 date.setDate(1);
-                App.postJson("/api/monthReport/getByInfo", {
+                App.postJson("/api/monthReport/getByInfoFgw", {
                     subId: subId,
                     year: year,
                     startDate: date.format("yyyy-MM-dd")