Kaynağa Gözat

考核材料管理

xiaoqiao 9 ay önce
ebeveyn
işleme
1cbb9a6456

+ 75 - 4
src/main/java/com/ghsc/partybuild/controller/CheckDataController.java

@@ -7,13 +7,23 @@ import com.ghsc.partybuild.model.*;
 import com.ghsc.partybuild.service.*;
 import com.ghsc.partybuild.util.DateUtils;
 import com.ghsc.partybuild.util.ExcelHelper;
+import com.ghsc.partybuild.util.FtpHelper;
 import com.ghsc.partybuild.util.StringUtils;
 import com.github.pagehelper.PageInfo;
+import org.apache.commons.net.ftp.FTP;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.tools.zip.ZipEntry;
+import org.apache.tools.zip.ZipOutputStream;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.util.*;
 
 @RestController
@@ -26,6 +36,8 @@ public class CheckDataController {
     private UserService userService;
     @Autowired
     private DateUtils dateUtils;
+    @Autowired
+    FtpHelper ftpHelper;
 
     @ResponseBody
     @GetMapping("/getCheckNameList")
@@ -83,6 +95,7 @@ public class CheckDataController {
         res.setItem(checkDataService.getCheckName(id));
         return res;
     }
+
     @ResponseBody
     @GetMapping("/getCheckDataList")
     public RequsetData<PageInfo<HashMap<String, Object>>> getCheckDataList(int pageindex, int pagesize, Integer year, String dzzdm, String remark) {
@@ -93,7 +106,7 @@ public class CheckDataController {
 
     @ResponseBody
     @PostMapping("/saveCheckdata")
-    public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item,String userid,String username) {
+    public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item, String userid, String username) {
         RequsetData<Integer> res = new RequsetData<>();
         try {
             item.setCheckdatauserid(userService.getLoginUser().getUserid());
@@ -102,7 +115,7 @@ public class CheckDataController {
             item.setCreatetime(new Date());
             item.setCreateuserid(userService.getLoginUser().getUserid());
             item.setCreateusername(userService.getUserInfobyId(userService.getLoginUser().getUserid()).getName());
-            int id = checkDataService.saveCheckdata(item,userid,username);
+            int id = checkDataService.saveCheckdata(item, userid, username);
             res.setItem(id);
             res.setMsg("保存成功!");
         } catch (Exception ex) {
@@ -125,12 +138,13 @@ public class CheckDataController {
         }
         return res;
     }
+
     @RequestMapping(value = "/exportCheckData", method = RequestMethod.GET)
     public void exportCheckData(HttpServletResponse response,
-                               Integer year, String dzzdm, String remark) throws Exception {
+                                Integer year, String dzzdm, String remark) throws Exception {
 
         /**查询数据**/
-        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1,9999, year, dzzdm, remark).getList();
+        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1, 9999, year, dzzdm, remark).getList();
 
         ExcelHelper excelHelper = new ExcelHelper();
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
@@ -163,4 +177,61 @@ public class CheckDataController {
 
         excelHelper.exportExcel(response, "考核材料信息.xlsx", data);
     }
+
+    @RequestMapping("/downCheckDataZip")
+    public String downCheckDataZip(HttpServletResponse response,
+                                   String year,
+                                   HttpServletRequest request) {
+        ZipOutputStream out=null;
+        String fileName = String.format("%s年度考核材料.zip", year);
+        try {
+            ByteArrayOutputStream fileOStream = new ByteArrayOutputStream();
+            out = new ZipOutputStream(fileOStream);
+            out.setEncoding("gbk");
+            List<HashMap<String, Object>> dataList = checkDataService.getCheckDataFleList(year);
+            FTPClient ftpClient = new FTPClient();
+            ftpHelper.connectToServer(ftpClient);
+            ftpClient.enterLocalPassiveMode();
+            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+
+            for (HashMap<String, Object> item : dataList) {
+                //打包显示的文件名
+                String fileExt = item.get("fileurl").toString().substring(item.get("fileurl").toString().lastIndexOf(".")).toLowerCase();
+                out.putNextEntry(new ZipEntry(String.format("%s_%s(%s)%s", item.get("dzzdm").toString(), item.get("checkdatausername"), item.get("dzzmc"), fileExt)));
+                ftpClient.retrieveFile(item.get("fileurl").toString(), out);
+                out.flush();
+                out.closeEntry();
+            }
+            ftpHelper.closeConnect(ftpClient);
+            //所有文件写完后一定要关闭输出流,否则文件下载会不完整。
+            out.flush();
+            out.close();
+            //将zip文件写入响应
+            String name;
+            String agent = request.getHeader("USER-AGENT");
+            if (agent != null && agent.toLowerCase().indexOf("firefox") > 0) {
+                name = "=?UTF-8?B?" + (Base64.getEncoder().encodeToString(fileName.getBytes("UTF-8"))) + "?=";
+            } else {
+                name = URLEncoder.encode(fileName, "UTF-8");
+            }
+            response.setContentType("application/force-download");// 设置强制下载不打开
+            response.setContentType("multipart/form-data;charset=UTF-8");
+            response.setContentType("application/octet-stream");
+            response.addHeader("Content-Disposition", "attachment;filename=" + name);
+
+            OutputStream os = response.getOutputStream();
+            fileOStream.writeTo(os);
+            os.flush();
+        } catch (Exception e) {
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (IOException ie) {
+                    ie.printStackTrace();
+                }
+            }
+            throw new RuntimeException();
+        }
+        return "";
+    }
 }

+ 3 - 0
src/main/java/com/ghsc/partybuild/mapper/cquery/PtCheckdataCQuery.java

@@ -1,5 +1,6 @@
 package com.ghsc.partybuild.mapper.cquery;
 
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.HashMap;
@@ -11,4 +12,6 @@ public interface PtCheckdataCQuery {
     List<HashMap<String,Object>> selectCheckNameList(Integer year, Integer quarter, String dzzdm, String checkUserName, String partyCode,Integer recordStatus);
 
     List<HashMap<String,Object>> selectCheckDataList(Integer year, String dzzdm, String remark);
+
+    List<HashMap<String,Object>> selectCheckDataFleList(@Param("year") String year);
 }

+ 2 - 0
src/main/java/com/ghsc/partybuild/service/CheckDataService.java

@@ -22,6 +22,8 @@ public interface CheckDataService {
 
     PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark);
 
+    List<HashMap<String, Object>> getCheckDataFleList( String year);
+
     int saveCheckdata(PtCheckdata item,String userid,String username);
 
     PtCheckdata getCheckdata(String id);

+ 7 - 0
src/main/java/com/ghsc/partybuild/service/impl/CheckDataServiceImpl.java

@@ -102,6 +102,13 @@ public class CheckDataServiceImpl implements CheckDataService {
         return result;
     }
     @Override
+    public List<HashMap<String, Object>> getCheckDataFleList(String year) {
+
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckDataFleList(year);
+
+        return list;
+    }
+    @Override
     public int saveCheckdata(PtCheckdata item,String userid,String username){
         PtCheckdata dbItem = CheckdataMapper.selectByPrimaryKey(item.getDataid());
         if(dbItem==null){

+ 13 - 0
src/main/resources/mapping/CQuery/PtCheckdataCQuery.xml

@@ -51,4 +51,17 @@
             and pcd.dzzdm like concat('%',#{dzzdm},'%')
         </if>
     </select>
+
+    <select id="selectCheckDataFleList" resultType="java.util.HashMap" parameterType="java.lang.String">
+        select  pcd.dataid, pcd.dzzdm, pcd.year, pcd.leadingdepartment, pcd.checkdatauserid, pcd.checkdatausername, pcd.recordstatus,
+                pcd.createtime, pcd.createuserid, pcd.createusername, pcd.updatetime, pcd.updateuserid, pcd.updateusername, pcd.remark
+                ,zz.dzzmc,cf.filename,cf.fileurl
+        from pt_checkData pcd inner join  ZZ_ZZQKXX zz on pcd.dzzdm = zz.DZZDM
+                              left join cf_file cf on pcd.dataId = cf.FILEREFID
+        <where>
+            <if test="year != null and year != ''">
+                and pcd.year = #{year}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 1 - 1
src/main/resources/static/app/main/party/checkData/list.html

@@ -81,7 +81,7 @@
                     <div class="search-btn" style="margin-right: 20px;">
                         <div style="float: right">
                             <button class="btn  btn-default1"
-                                    ng-click="disable()">打包材料
+                                    ng-click="downCheckDataZip()">打包材料
                             </button>
                             <button class="btn  btn-default1"
                                     ng-click="export()">导出

+ 14 - 1
src/main/resources/static/app/main/party/checkData/list.js

@@ -197,7 +197,20 @@
                 });
             }
         };
-
+        $scope.downCheckDataZip = function () {
+            if($scope.selectparams.year==''||$scope.selectparams.year==null){
+                $scope.showMsg("消息", '请选择年度');
+                return;
+            }
+            if ($scope.selectparams.dzzdm != "") {
+                var params = "?1=1";
+                for (var p in $scope.selectparams) {
+                    if ($scope.selectparams[p] !== '' && $scope.selectparams[p] !== null)
+                        params += ("&" + p + "=" + encodeURI($scope.selectparams[p]));
+                }
+                window.open('../../api/checkdata/downCheckDataZip' + params);
+            }
+        };
         $scope.export = function () {
             if ($scope.selectparams.dzzdm != "") {
                 var params = "?1=1";