whycxzp
2023-06-25 7951879338b046e000d39ebb6fbcfae16ff47324
sop接口更新
5个文件已修改
2个文件已添加
96 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/SOPController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/SOPProductMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/SOP.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/SOPProduct.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/SOPProductService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/SOPService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/FileUtil.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/SOPController.java
@@ -14,7 +14,6 @@
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
@RequestMapping("sop")
@RestController
@@ -33,14 +32,14 @@
        if(!name.substring(name.length()-4).equals(".xls") && !name.substring(name.length()-5).equals(".xlsx")){
            response.set(1,false,"文件解析错误:上传格式非excel格式");
        }else{
            response =  service.excelParse(multipartFile.getInputStream());
            response =  service.excelParse(multipartFile);
        }
        return response;
    }
    @ApiOperation("确定sop")
    @PostMapping("confirm")
    public Response add(@RequestBody SOP sop) {
    public Response add(@RequestBody SOP sop) throws IOException {
        return service.add(sop);
    }
src/main/java/com/whyc/mapper/SOPProductMapper.java
New file
@@ -0,0 +1,6 @@
package com.whyc.mapper;
import com.whyc.pojo.SOPProduct;
public interface SOPProductMapper extends CustomMapper<SOPProduct> {
}
src/main/java/com/whyc/pojo/SOP.java
@@ -1,6 +1,7 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
@@ -10,6 +11,7 @@
/**
 * SOP:操作指导书
 */
@TableName("tb_sop")
public class SOP {
    private Integer id;
@@ -44,6 +46,7 @@
     *      {"测试":["测1","测2"}
     * ]
     */
    @TableField(exist = false)
    private List<Map<String,List<String>>> fileTypeList;
    @TableField(exist = false)
src/main/java/com/whyc/pojo/SOPProduct.java
@@ -1,8 +1,11 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
/**
 * SOP适用的产品
 */
@TableName("tb_sop_product")
public class SOPProduct {
    private Integer id;
    /**编码*/
src/main/java/com/whyc/service/SOPProductService.java
New file
@@ -0,0 +1,19 @@
package com.whyc.service;
import com.whyc.mapper.SOPProductMapper;
import com.whyc.pojo.SOPProduct;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SOPProductService {
    @Resource
    private SOPProductMapper mapper;
    public void insertBatch(List<SOPProduct> sopProductList) {
        mapper.insertBatchSomeColumn(sopProductList);
    }
}
src/main/java/com/whyc/service/SOPService.java
@@ -7,14 +7,20 @@
import com.whyc.pojo.SOPProduct;
import com.whyc.util.CommonUtil;
import com.whyc.util.DateUtil;
import com.whyc.util.FileUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
@@ -27,13 +33,18 @@
    @Resource
    private SOPMapper mapper;
    @Autowired
    private SOPProductService productService;
    public Response<Object> excelParse(InputStream inputStream) throws IOException, InvalidFormatException {
    @Transactional
    public Response<Object> excelParse(MultipartFile multipartFile) throws IOException, InvalidFormatException {
        SOP sop = new SOP();
        List<SOPProduct> sopProductList = new LinkedList<>();
        sop.setCreateTime(new Date());
        Workbook workbook = null;
        InputStream inputStream = multipartFile.getInputStream();
        workbook = WorkbookFactory.create(inputStream);
        inputStream.close();
        //取第一个sheet表
@@ -273,10 +284,17 @@
            }else{
                product.setModel(model);
            }
            //TODO 存储excel文件
            sopProductList.add(product);
        }
        //存储excel文件,/sop_submit/xxx_202306250506.xlsx
        String originalFilename = multipartFile.getOriginalFilename();
        String[] fileNameSplit = originalFilename.split("\\.");
        String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(new Date());
        String newFileName = fileNameSplit[0]+"_"+dateFormat+"."+fileNameSplit[1];
        String fileUrl = FileUtil.saveFile(multipartFile,"/sop_submit/"+newFileName);
        sop.setFileUrl(fileUrl);
        sopProductList = sopProductList.stream().filter(product -> !product.getCode().equals("")).collect(Collectors.toList());
        sop.setSopProductList(sopProductList);
@@ -284,8 +302,25 @@
        return new Response().setII(1,true,sop,"文件解析成功");
    }
    public Response add(SOP sop) {
        return null;
    @Transactional
    public Response add(SOP sop) throws IOException {
        List<SOPProduct> sopProductList = sop.getSopProductList();
        mapper.insert(sop);
        sopProductList.forEach(product -> product.setSopId(sop.getId()));
        productService.insertBatch(sopProductList);
        //文件转移
        String fileUrl = sop.getFileUrl();
        String fileNameFrom = fileUrl.substring(fileUrl.lastIndexOf("/"));
        String projectDir = CommonUtil.getProjectDir();
        String filePathFrom = projectDir + File.separator + fileUrl;
        File fileFrom = new File(filePathFrom);
        String filePathTo = projectDir + File.separator + "/sop" + fileNameFrom;
        File fileTo = new File(filePathTo);
        if(!fileTo.getParentFile().exists()){
            fileTo.getParentFile().mkdirs();
        }
        FileCopyUtils.copy(fileFrom,fileTo);
        return new Response().setII(1,"上传完成");
    }
    //查询sop信息
src/main/java/com/whyc/util/FileUtil.java
@@ -1,5 +1,7 @@
package com.whyc.util;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
@@ -84,6 +86,21 @@
        }
    }
    public static String saveFile(MultipartFile multipartFile,String fileName) throws IOException {
        String rootFile = CommonUtil.getRootFile();
        String filePath = rootFile + fileName;
        File file = new File(filePath);
        File parentFile = file.getParentFile();
        if(!parentFile.exists()){
            parentFile.mkdirs();
        }
        //存储
        multipartFile.transferTo(file);
        return "doc_file"+fileName;
    }
    public static void main(String[] args) {
        File file = new File("C:\\Users\\29550\\Desktop\\当前项目\\202207泰州平台");
        List list = new ArrayList<>();