Procházet zdrojové kódy

新手教程/机构数据导入导出part2

Aslee před 3 roky
rodič
revize
d8e94d6dc4

+ 0 - 19
pom.xml

@@ -296,25 +296,6 @@
             <version>5.5.13</version>
         </dependency>
 
-        <!-- jxls begin -->
-        <dependency>
-            <groupId>net.sf.jxls</groupId>
-            <artifactId>jxls-core</artifactId>
-            <version>1.0.6</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.jxls</groupId>
-            <artifactId>jxls-reader</artifactId>
-            <version>1.0.6</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.json-lib</groupId>
-            <artifactId>json-lib</artifactId>
-            <version>2.4</version>
-            <classifier>jdk15</classifier>
-        </dependency>
-
-        <!-- jxls end -->
     </dependencies>
 
     <profiles>

+ 3 - 1
src/main/java/com/caimei/config/FastDfsClient.java

@@ -22,13 +22,14 @@ public class FastDfsClient {
     private FastFileStorageClient storageClient;
 
     // 文件上传
-    public String uploadFile(String path) throws FileNotFoundException {
+    public String uploadFile(String path) throws IOException {
         File file = new File(path);
         InputStream input = new FileInputStream(file);
         long size = FileUtils.sizeOf(file);
         String name = file.getName();
         String fileName = name.substring(name.lastIndexOf("/") + 1);
         StorePath storePath = storageClient.uploadFile(input, size, FilenameUtils.getExtension(fileName), null);
+        input.close();
         return storePath.getFullPath();
     }
 
@@ -43,6 +44,7 @@ public class FastDfsClient {
         // 数据写入指定文件夹中
         outputStream = new FileOutputStream(file);
         outputStream.write(content);
+        outputStream.close();
         return true;
     }
 }

+ 2 - 2
src/main/java/com/caimei/controller/FileApi.java

@@ -103,7 +103,7 @@ public class FileApi {
         String fileName = paramsMap.getString("fileName");
         String ossName = paramsMap.getString("ossName");
         Integer fileType = paramsMap.getInteger("fileType");
-        Integer fileModule = paramsMap.getInteger("fileModule");
+        String fileModule = paramsMap.getString("fileModule");
         return fileService.saveCourseFile(fileId, fileTitle, fileName, ossName, fileType, fileModule);
     }
 
@@ -116,7 +116,7 @@ public class FileApi {
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
     @GetMapping("/course/list")
-    public ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, Integer fileModule, String fileTitle,
+    public ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, String fileModule, String fileTitle,
                                                                       @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                                                                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
         return fileService.getCourseFileList(fileType, fileModule, fileTitle, pageNum, pageSize);

+ 1 - 1
src/main/java/com/caimei/mapper/FileMapper.java

@@ -40,7 +40,7 @@ public interface FileMapper {
 
     void insertCourseFile(CourseFilePo courseFile);
 
-    List<CourseFileListVo> getCourseFileList(@Param("fileType") Integer fileType, @Param("fileModule") Integer fileModule, @Param("fileTitle") String fileTitle);
+    List<CourseFileListVo> getCourseFileList(@Param("fileType") Integer fileType, @Param("fileModule") String fileModule, @Param("fileTitle") String fileTitle);
 
     void deleteCourseFileByFileId(Integer fileId);
 }

+ 1 - 1
src/main/java/com/caimei/model/po/CourseFilePo.java

@@ -43,7 +43,7 @@ public class CourseFilePo {
     /**
      * 文件模块:1品牌授权-授权列表,2机构管理-机构列表
      */
-    private Integer fileModule;
+    private String fileModule;
 
     /**
      * 创建时间

+ 1 - 1
src/main/java/com/caimei/model/vo/CourseFileListVo.java

@@ -22,7 +22,7 @@ public class CourseFileListVo {
     private String fileName;
 
     @ApiModelProperty("文件模块:1品牌授权-授权列表,2机构管理-机构列表")
-    private Integer fileModule;
+    private String fileModule;
 
     @ApiModelProperty("文件链接")
     private String fileUrl;

+ 2 - 5
src/main/java/com/caimei/service/FileService.java

@@ -6,9 +6,6 @@ import com.caimei.model.vo.FileListVo;
 import com.caimei.model.vo.WxFileListVo;
 import com.github.pagehelper.PageInfo;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 /**
  * Description
  *
@@ -88,7 +85,7 @@ public interface FileService {
      * @param fileModule    文件模块:1品牌授权-授权列表,2机构管理-机构列表
      * @return
      */
-    ResponseJson saveCourseFile(Integer fileId, String fileTitle, String fileName, String ossName, Integer fileType, Integer fileModule);
+    ResponseJson saveCourseFile(Integer fileId, String fileTitle, String fileName, String ossName, Integer fileType, String fileModule);
 
     /**
      * 教程文件列表
@@ -99,7 +96,7 @@ public interface FileService {
      * @param pageSize      每页数量
      * @return
      */
-    ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, Integer fileModule, String fileTitle, Integer pageNum, Integer pageSize);
+    ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, String fileModule, String fileTitle, Integer pageNum, Integer pageSize);
 
     /**
      * 删除教程文件

+ 19 - 18
src/main/java/com/caimei/service/impl/AuthServiceImpl.java

@@ -281,6 +281,8 @@ public class AuthServiceImpl implements AuthService {
         // 授权列表
         List<AuthImportPo> authImportList = new ArrayList<>();
 
+        List<String> tempImageList = new ArrayList<>();
+
         try {
             FileInputStream fis = new FileInputStream(filePath);
             // 得到表格数据
@@ -339,6 +341,9 @@ public class AuthServiceImpl implements AuthService {
                         if (cellTotalNum < 13) {
                             return ResponseJson.error(authParty + "机构商品表格式错误");
                         }
+                        // 获取表格图片
+                        Map<String, XSSFPictureData> pictures = ExcelOperateUtil.getPictures(productSheet);
+                        Map<String, String> imageMap = ExcelOperateUtil.printImg(pictures);
                         // 校验商品数据是否符合规范
                         int productRowNum = productSheet.getLastRowNum();
                         for (int k = 1; k <= productRowNum; k++) {
@@ -374,8 +379,6 @@ public class AuthServiceImpl implements AuthService {
                                         brandId = authProductMapper.getBrandIdByBrandName(brand);
                                     }
                                 }
-                                Map<String, XSSFPictureData> pictures = ExcelOperateUtil.getPictures(productSheet);
-                                Map<String, String> imageMap = ExcelOperateUtil.printImg(pictures);
                                 // 校验商品图片
                                 String productImage = imageMap.get(k + "-3");
                                 if (StringUtils.isEmpty(productImage)) {
@@ -434,21 +437,16 @@ public class AuthServiceImpl implements AuthService {
                                 // sn码
                                 product.setSnCode(snCode);
                                 // 商品图片
-                                product.setProductImage(productImage);
+                                product.setProductImage(uploadImage(productImage));
                                 // 授权牌照
-                                product.setCertificateImage(certificateImage);
+                                product.setCertificateImage(uploadImage(certificateImage));
                                 // 参数列表
                                 product.setParamList(paramList);
                                 // 创建人
                                 product.setCreateBy(createBy);
                                 productList.add(product);
-                                // 删除临时图片文件
-                                for (String image : imageMap.values()) {
-                                    if (StringUtils.isNotEmpty(image)) {
-                                        File tempFile = new File(image);
-                                        tempFile.delete();
-                                    }
-                                }
+                                tempImageList.add(productImage);
+                                tempImageList.add(certificateImage);
                             }
                         }
                     }
@@ -466,7 +464,13 @@ public class AuthServiceImpl implements AuthService {
         } finally {
             // 删除临时数据
             File tempFile = new File(filePath);
-            tempFile.delete();
+            boolean delete = tempFile.delete();
+            log.info("【图片上传】>>>>>>>>>>>>>>>>删除临时表格:" + delete);
+            tempImageList.forEach(tempImagePath->{
+                File tempImage = new File(tempImagePath);
+                boolean del = tempImage.delete();
+                log.info("【图片上传】>>>>>>>>>>>>>>>>删除临时商品图片:" + del);
+            });
         }
         // 保存授权数据
         authImportList.forEach(authImportPo -> {
@@ -487,8 +491,8 @@ public class AuthServiceImpl implements AuthService {
                     // 上传商品图片和授权牌照
                     String productImage = productDto.getProductImage();
                     String certificateImage = productDto.getCertificateImage();
-                    productDto.setProductImage(uploadImage(productImage));
-                    productDto.setCertificateImage(uploadImage(certificateImage));
+                    productDto.setProductImage(productImage);
+                    productDto.setCertificateImage(certificateImage);
                     authProductService.saveProduct(productDto);
                 } catch (IOException e) {
                     e.printStackTrace();
@@ -665,14 +669,11 @@ public class AuthServiceImpl implements AuthService {
         return ResponseJson.success("导出成功");
     }
 
-    private String uploadImage(String filePath) throws FileNotFoundException {
+    private String uploadImage(String filePath) throws IOException {
         // 临时图片
         File tempFile = new File(filePath);
         log.info("【图片上传】>>>>>>>>>>>>>>>>图片临时路径:" + filePath);
         String imageUrl = imageDomain + "/" + client.uploadFile(filePath);
-        // 删除临时图片
-        boolean delete = tempFile.delete();
-        log.info("【图片上传】>>>>>>>>>>>>>>>>删除临时图片:" + delete);
         return imageUrl;
     }
 

+ 2 - 4
src/main/java/com/caimei/service/impl/FileServiceImpl.java

@@ -17,8 +17,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
@@ -170,7 +168,7 @@ public class FileServiceImpl implements FileService {
     }
 
     @Override
-    public ResponseJson saveCourseFile(Integer fileId, String fileTitle, String fileName, String ossName, Integer fileType, Integer fileModule) {
+    public ResponseJson saveCourseFile(Integer fileId, String fileTitle, String fileName, String ossName, Integer fileType, String fileModule) {
         if (StringUtils.isEmpty(fileTitle)) {
             return ResponseJson.error("参数异常,请输入文件标题");
         }
@@ -211,7 +209,7 @@ public class FileServiceImpl implements FileService {
     }
 
     @Override
-    public ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, Integer fileModule, String fileTitle, Integer pageNum, Integer pageSize) {
+    public ResponseJson<PageInfo<CourseFileListVo>> getCourseFileList(Integer fileType, String fileModule, String fileTitle, Integer pageNum, Integer pageSize) {
         if (null == fileType) {
             return ResponseJson.error("参数异常,请输入文件类型", null);
         }

+ 1 - 1
src/main/java/com/caimei/service/impl/UploadServiceImpl.java

@@ -46,7 +46,7 @@ public class UploadServiceImpl implements UploadService {
         String extName = originalFilename.substring(index);
         String filePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempFile/";
         if ("dev".equals(active)){
-            filePath = "D:\\WorkSpace\\file\\tempIomprt";
+            filePath = "D:\\WorkSpace\\file\\tempImport";
         }
         filePath += "\\" + randomStr + extName;
         // 临时图片

+ 4 - 6
src/main/java/com/caimei/utils/ExcelOperateUtil.java

@@ -1,7 +1,5 @@
 package com.caimei.utils;
 
-import net.sf.jxls.exception.ParsePropertyException;
-import net.sf.jxls.transformer.XLSTransformer;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -164,7 +162,7 @@ public class ExcelOperateUtil {
      * @param objects          我们传入的对应每个Sheet的一个Java对象
      * @param response
      */
-    public static void createMultipleSheetsExcel(String templateFileName, String fileName, List<String> listSheetNames, List<List> objects, HttpServletResponse response) {
+    /*public static void createMultipleSheetsExcel(String templateFileName, String fileName, List<String> listSheetNames, List<List> objects, HttpServletResponse response) {
         //调用引擎生成excel报表
         XLSTransformer transformer = new XLSTransformer();
 
@@ -179,7 +177,7 @@ public class ExcelOperateUtil {
 
         try {
             is = new BufferedInputStream(new FileInputStream(srcFilePath));
-		  /*
+		  *//*
 	       * transformMultipleSheetsList(InputStream is, List objects, List newSheetNames, String beanName, Map beanParams, int startSheetNum)
 	       *1)is:即Template文件的一个输入流
 	        2)objects:即我们传入的对应每个Sheet的一个Java对象,这里传入的List的元素为一个Map对象
@@ -187,7 +185,7 @@ public class ExcelOperateUtil {
 	        4)beanName:这个参数在jxls对我们传入的List进行解析的时候使用,而且,该参数还对应Template文件中的Tag,例如,beanName为map,那么在Template文件中取值的公式应该定义成${map.get("property1")};如果beanName为payslip,公式应该定义成${payslip.get("property1")}
 	        5)beanParams:这个参数在使用的时候我的代码没有使用到,这个参数是在如果传入的objects还与其他的对象关联的时候使用的,该参数是一个HashMap类型的参数,如果不使用的话,直接传入new HashMap()即可
 	        6)startSheetNo:传入0即可,即SheetNo从0开始
-	       */
+	       *//*
             HashMap hashMap = new HashMap();
             hashMap.put("excelNumberFormatter", new ExcelNumberFormatter());
             Workbook workbook = transformer.transformMultipleSheetsList(is, objects, listSheetNames, "list", hashMap, 0);
@@ -211,7 +209,7 @@ public class ExcelOperateUtil {
                 }
             }
         }
-    }
+    }*/
 
     /*public void createExcel(String srcFilePath, Map<String, Object> beanParams, String fileName, HttpServletResponse response) {
         //创建XLSTransformer对象

+ 5 - 5
src/main/resources/mapper/FileMapper.xml

@@ -8,7 +8,7 @@
     </insert>
     <insert id="insertCourseFile">
         insert into cm_brand_course_file (title, name, ossName, type, module, createTime)
-        values (#{title}, #{name}, #{ossName}, #{type}, #{module}, NOW());
+        values (#{title}, #{name}, #{ossName}, #{fileType}, #{fileModule}, NOW());
     </insert>
     <update id="updateFileByFileId">
         update cm_brand_file
@@ -60,8 +60,8 @@
         set title   = #{title},
             name    = #{name},
             ossName = #{ossName},
-            type    = #{type},
-            module  = #{module}
+            type    = #{fileType},
+            module  = #{fileModule}
         where id = #{id}
     </update>
     <delete id="deleteFileByFileId">
@@ -107,13 +107,13 @@
         order by a.createTime desc
     </select>
     <select id="getCourseFileList" resultType="com.caimei.model.vo.CourseFileListVo">
-        select title as fileTitle, name as fileName, ossName, module as fileModule, createTime
+        select id as fileId, title as fileTitle, name as fileName, ossName, module as fileModule, createTime
         from cm_brand_course_file
         where type = #{fileType}
         <if test="fileTitle != null and fileTitle != ''">
             and title = #{fileTitle}
         </if>
-        <if test="fileModule != null">
+        <if test="fileModule != null and fileModule != ''">
             and module = #{fileModule}
         </if>
         order by createTime desc