From bac7755aa3aea1705caf870c4318803186484e9c Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期一, 05 十二月 2022 14:26:45 +0800
Subject: [PATCH] 流程卡及SOP更新

---
 src/main/java/com/whyc/pojo/ProcedureDoc.java                    |  124 ++++++++++
 src/main/java/com/whyc/pojo/ProcedureDocApproving.java           |  133 +++++++++++
 src/main/java/com/whyc/service/WorksheetLinkService.java         |   47 +++
 src/main/java/com/whyc/pojo/WorksheetLink.java                   |    7 
 src/main/java/com/whyc/util/Word2PdfAsposeUtil.java              |   99 +++++++
 pom.xml                                                          |   11 
 src/main/java/com/whyc/util/WordUtil.java                        |   60 +++++
 src/main/java/com/whyc/mapper/ProcedureDocMapper.java            |    6 
 src/main/java/com/whyc/pojo/WorksheetMain.java                   |   18 +
 src/main/java/com/whyc/service/WorksheetMainService.java         |   83 ++++++
 src/main/java/com/whyc/mapper/ProcedureDocApprovingMapper.java   |    6 
 src/main/java/com/whyc/service/ProcedureDocApprovingService.java |   26 ++
 src/main/java/com/whyc/config/EnumWorksheetType.java             |    6 
 src/main/java/com/whyc/service/ProcedureDocService.java          |   18 +
 src/main/java/com/whyc/controller/WorksheetMainController.java   |   18 +
 src/main/java/com/whyc/controller/WorksheetLinkController.java   |   12 
 16 files changed, 661 insertions(+), 13 deletions(-)

diff --git a/pom.xml b/pom.xml
index 38723b5..93ab603 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,10 +137,15 @@
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
         <!--poi-->
-        <dependency>
+        <!--<dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
             <version>3.10.1</version>
+        </dependency>-->
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.5.1</version>
         </dependency>
         <!--websocket-->
         <dependency>
@@ -196,9 +201,9 @@
         <dependency>
             <groupId>com.aspose</groupId>
             <artifactId>aspose-words</artifactId>
-            <version>22.3</version>
+            <version>15.8.0</version>
             <scope>system</scope>
-            <systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-22.3-jdk16.jar</systemPath>
+            <systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/whyc/config/EnumWorksheetType.java b/src/main/java/com/whyc/config/EnumWorksheetType.java
index 05e7413..3064e63 100644
--- a/src/main/java/com/whyc/config/EnumWorksheetType.java
+++ b/src/main/java/com/whyc/config/EnumWorksheetType.java
@@ -4,7 +4,11 @@
     ProductBom(1,"浜у搧Bom"),
     Material(2,"鏁h浠�"),
     MaterialProduct(3,"鏁h浠�-浜у搧"),
-    ProductSoftware(4,"浜у搧杞欢");
+    ProductSoftware(4,"浜у搧杞欢"),
+
+    //杩藉姞娴佺▼鍗�,SOP
+    ProductProcedure(11,"浜у搧娴佺▼鍗�"),
+    SOP(12,"鏍囧噯鎿嶄綔鎸囧涔�");
 
     EnumWorksheetType(Integer type, String typeName) {
         this.type = type;
diff --git a/src/main/java/com/whyc/controller/WorksheetLinkController.java b/src/main/java/com/whyc/controller/WorksheetLinkController.java
index f5dfe6c..26e65e3 100644
--- a/src/main/java/com/whyc/controller/WorksheetLinkController.java
+++ b/src/main/java/com/whyc/controller/WorksheetLinkController.java
@@ -6,10 +6,9 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
 
 @RestController
 @RequestMapping("worksheetLink")
@@ -40,6 +39,11 @@
         return new Response().setII(1,"瀹℃壒瀹屾垚");
     }
 
+    @PutMapping("confirmProductProcedureAndSOP")
+    @ApiOperation(value = "娴佺▼鍗″強SOP纭",notes = "id; linkStatus:纭1,鎷掔粷2; dealReason:鎷掔粷鏃跺~鍐欏鐞嗘剰瑙�")
+    public Response confirmProductProcedureAndSOP(@RequestBody WorksheetLink link) throws IOException {
+        return service.confirmProductProcedureAndSOP(link);
+    }
 
 
 }
diff --git a/src/main/java/com/whyc/controller/WorksheetMainController.java b/src/main/java/com/whyc/controller/WorksheetMainController.java
index a248063..6332829 100644
--- a/src/main/java/com/whyc/controller/WorksheetMainController.java
+++ b/src/main/java/com/whyc/controller/WorksheetMainController.java
@@ -1,10 +1,12 @@
 package com.whyc.controller;
 
 import com.github.pagehelper.PageInfo;
+import com.whyc.config.EnumWorksheetType;
 import com.whyc.dto.Response;
 import com.whyc.dto.WorksheetMainDTO;
 import com.whyc.dto.WorksheetMainDTO2;
 import com.whyc.pojo.DocUser;
+import com.whyc.pojo.ProcedureDocApproving;
 import com.whyc.pojo.WorksheetMain;
 import com.whyc.service.WorksheetMainService;
 import com.whyc.util.ActionUtil;
@@ -14,6 +16,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.mail.MessagingException;
 import java.io.IOException;
 import java.util.Map;
 
@@ -158,4 +161,19 @@
         return service.getMyList(pageNum,pageSize,user);
     }
 
+    /**
+     * {@link EnumWorksheetType#getType()}
+     * @param approving
+     * @return
+     * @throws IOException
+     * @throws MessagingException
+     */
+    @PostMapping("productProcedureAndSOP")
+    @ApiOperation(value = "浜у搧娴佺▼鍗″強SOP鎻愪氦",notes = "type:1-娴佺▼鍗�,2-SOP")
+    public Response addProductProcedureAndSOP(@RequestBody ProcedureDocApproving approving) throws IOException, MessagingException {
+        DocUser user = ActionUtil.getUser();
+        return service.addProductProcedureAndSOP(approving,user);
+    }
+
+
 }
diff --git a/src/main/java/com/whyc/mapper/ProcedureDocApprovingMapper.java b/src/main/java/com/whyc/mapper/ProcedureDocApprovingMapper.java
new file mode 100644
index 0000000..8a6c5ba
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/ProcedureDocApprovingMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.ProcedureDocApproving;
+
+public interface ProcedureDocApprovingMapper extends CustomMapper<ProcedureDocApproving> {
+}
diff --git a/src/main/java/com/whyc/mapper/ProcedureDocMapper.java b/src/main/java/com/whyc/mapper/ProcedureDocMapper.java
new file mode 100644
index 0000000..8502d9e
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/ProcedureDocMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.ProcedureDoc;
+
+public interface ProcedureDocMapper  extends CustomMapper<ProcedureDoc> {
+}
diff --git a/src/main/java/com/whyc/pojo/ProcedureDoc.java b/src/main/java/com/whyc/pojo/ProcedureDoc.java
new file mode 100644
index 0000000..7306bf5
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/ProcedureDoc.java
@@ -0,0 +1,124 @@
+package com.whyc.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.apache.ibatis.type.Alias;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+
+@Alias("ProcedureDoc")
+@TableName("tb_procedure_doc")
+public class ProcedureDoc {
+
+    private Integer id;
+    private String name;
+    private String version;
+    private Long fzr;
+    private Long bz;
+    private Long zz;
+    private Long pb;
+    private String description;
+    private String file;
+    private Integer type;
+    private Date createTime;
+
+    @TableField(exist = false)
+    private MultipartFile multipartFile;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public Long getFzr() {
+        return fzr;
+    }
+
+    public void setFzr(Long fzr) {
+        this.fzr = fzr;
+    }
+
+    public Long getBz() {
+        return bz;
+    }
+
+    public void setBz(Long bz) {
+        this.bz = bz;
+    }
+
+    public Long getZz() {
+        return zz;
+    }
+
+    public void setZz(Long zz) {
+        this.zz = zz;
+    }
+
+    public Long getPb() {
+        return pb;
+    }
+
+    public void setPb(Long pb) {
+        this.pb = pb;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public MultipartFile getMultipartFile() {
+        return multipartFile;
+    }
+
+    public void setMultipartFile(MultipartFile multipartFile) {
+        this.multipartFile = multipartFile;
+    }
+}
diff --git a/src/main/java/com/whyc/pojo/ProcedureDocApproving.java b/src/main/java/com/whyc/pojo/ProcedureDocApproving.java
new file mode 100644
index 0000000..69f5ce9
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/ProcedureDocApproving.java
@@ -0,0 +1,133 @@
+package com.whyc.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.apache.ibatis.type.Alias;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+
+@Alias("ProcedureDocApproving")
+@TableName("tb_procedure_doc_approving")
+public class ProcedureDocApproving {
+
+    private Integer id;
+    private Integer mainId;
+    private String name;
+    private String version;
+    private Long fzr;
+    private Long bz;
+    private Long zz;
+    private Long pb;
+    private String description;
+    private String file;
+    private Integer type;
+    private Date createTime;
+
+    @TableField(exist = false)
+    private MultipartFile multipartFile;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getMainId() {
+        return mainId;
+    }
+
+    public void setMainId(Integer mainId) {
+        this.mainId = mainId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public Long getFzr() {
+        return fzr;
+    }
+
+    public void setFzr(Long fzr) {
+        this.fzr = fzr;
+    }
+
+    public Long getBz() {
+        return bz;
+    }
+
+    public void setBz(Long bz) {
+        this.bz = bz;
+    }
+
+    public Long getZz() {
+        return zz;
+    }
+
+    public void setZz(Long zz) {
+        this.zz = zz;
+    }
+
+    public Long getPb() {
+        return pb;
+    }
+
+    public void setPb(Long pb) {
+        this.pb = pb;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public MultipartFile getMultipartFile() {
+        return multipartFile;
+    }
+
+    public void setMultipartFile(MultipartFile multipartFile) {
+        this.multipartFile = multipartFile;
+    }
+}
diff --git a/src/main/java/com/whyc/pojo/WorksheetLink.java b/src/main/java/com/whyc/pojo/WorksheetLink.java
index beaedf9..a2f60bc 100644
--- a/src/main/java/com/whyc/pojo/WorksheetLink.java
+++ b/src/main/java/com/whyc/pojo/WorksheetLink.java
@@ -35,6 +35,13 @@
      * 1:宸查�氳繃
      * 2:宸查┏鍥�
      *
+     * ->
+     *  娴佺▼鍗″拰SOP涓�:
+     *  0:寰呯‘璁�
+     *  1:宸茬‘璁�
+     *  2:宸查┏鍥�
+     *
+     *
      * */
     private Integer  linkStatus;
 
diff --git a/src/main/java/com/whyc/pojo/WorksheetMain.java b/src/main/java/com/whyc/pojo/WorksheetMain.java
index 6d831e2..deae351 100644
--- a/src/main/java/com/whyc/pojo/WorksheetMain.java
+++ b/src/main/java/com/whyc/pojo/WorksheetMain.java
@@ -34,6 +34,11 @@
      * 1:缁忕悊澶勭悊涓�
      * 2:鎬荤粡鐞嗗鐞嗕腑
      * 5:褰掓。
+     *
+     * ->鍦ㄦ祦绋嬪崱/SOP涓�
+     *  0:椹冲洖,瀹岀粨
+     *  1:澶勭悊涓�
+     *  5:褰掓。
      * */
     private Integer status;
     @ApiModelProperty("宸ュ崟缁撴潫鎰忚")
@@ -42,7 +47,7 @@
     /**
      * {@link EnumWorksheetType#getType()}
      */
-    @ApiModelProperty("宸ュ崟绫诲瀷:1-bom,2-鏁h浠�,3-bom-鏁h浠�")
+    @ApiModelProperty("宸ュ崟绫诲瀷")
     private Integer type;
 
     @ApiModelProperty("娴佺▼鐨勪笅涓鐞嗕汉")
@@ -72,6 +77,9 @@
 
     @TableField(exist = false)
     private List<MaterialProductApproving> mpApprovingList;
+
+    @TableField(exist = false)
+    private ProcedureDoc procedureDoc;
 
     public Integer getId() {
         return id;
@@ -224,4 +232,12 @@
     public void setMpApprovingList(List<MaterialProductApproving> mpApprovingList) {
         this.mpApprovingList = mpApprovingList;
     }
+
+    public ProcedureDoc getProcedureDoc() {
+        return procedureDoc;
+    }
+
+    public void setProcedureDoc(ProcedureDoc procedureDoc) {
+        this.procedureDoc = procedureDoc;
+    }
 }
diff --git a/src/main/java/com/whyc/service/ProcedureDocApprovingService.java b/src/main/java/com/whyc/service/ProcedureDocApprovingService.java
new file mode 100644
index 0000000..ece5d16
--- /dev/null
+++ b/src/main/java/com/whyc/service/ProcedureDocApprovingService.java
@@ -0,0 +1,26 @@
+package com.whyc.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.whyc.mapper.ProcedureDocApprovingMapper;
+import com.whyc.pojo.ProcedureDocApproving;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class ProcedureDocApprovingService {
+
+    @Resource
+    private ProcedureDocApprovingMapper mapper;
+
+    public ProcedureDocApproving getByMainId(Integer mainId) {
+        QueryWrapper<ProcedureDocApproving> query = Wrappers.query();
+        query.eq("main_id",mainId).last(" limit 1");
+        return mapper.selectOne(query);
+    }
+
+    public void insert(ProcedureDocApproving approving) {
+        mapper.insert(approving);
+    }
+}
diff --git a/src/main/java/com/whyc/service/ProcedureDocService.java b/src/main/java/com/whyc/service/ProcedureDocService.java
new file mode 100644
index 0000000..36971b7
--- /dev/null
+++ b/src/main/java/com/whyc/service/ProcedureDocService.java
@@ -0,0 +1,18 @@
+package com.whyc.service;
+
+import com.whyc.mapper.ProcedureDocMapper;
+import com.whyc.pojo.ProcedureDoc;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class ProcedureDocService {
+
+    @Resource
+    private ProcedureDocMapper mapper;
+
+    public void insert(ProcedureDoc procedureDoc) {
+        mapper.insert(procedureDoc);
+    }
+}
diff --git a/src/main/java/com/whyc/service/WorksheetLinkService.java b/src/main/java/com/whyc/service/WorksheetLinkService.java
index 80dd0ac..f620956 100644
--- a/src/main/java/com/whyc/service/WorksheetLinkService.java
+++ b/src/main/java/com/whyc/service/WorksheetLinkService.java
@@ -3,11 +3,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.config.EnumWorksheetType;
+import com.whyc.dto.Response;
 import com.whyc.mapper.ProductBomApprovingMapper;
 import com.whyc.mapper.WorksheetLinkMapper;
 import com.whyc.pojo.*;
 import com.whyc.util.CommonUtil;
 import com.whyc.util.FileUtil;
+import com.whyc.util.WordUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,6 +68,12 @@
 
     @Autowired
     private ProductHistoryService phService;
+
+    @Autowired
+    private ProcedureDocApprovingService procedureDocApprovingService;
+
+    @Autowired
+    private ProcedureDocService procedureDocService;
 
     @Transactional
     public void audit(WorksheetLink link) {
@@ -583,4 +591,43 @@
     public DocUser getApprovingUser(Integer mainId) {
         return linkMapper.getApprovingUser(mainId);
     }
+
+    @Transactional
+    public Response confirmProductProcedureAndSOP(WorksheetLink link) throws IOException {
+        Integer mainId = linkMapper.selectById(link.getId()).getMainId();
+        //鏇存柊瀛愯〃
+        linkMapper.updateById(link);
+        if(link.getLinkStatus() ==1){
+            //鏌ヨ褰撳墠鍗曟嵁瀛愯〃鏄惁宸茬粡鍏ㄩ儴鍚屾剰
+            QueryWrapper<WorksheetLink> query = Wrappers.query();
+            query.eq("main_id",mainId);
+            List<WorksheetLink> linkList = linkMapper.selectList(query);
+            List<WorksheetLink> rejectList = linkList.stream().filter(linkFilter -> linkFilter.getLinkStatus() != 1).collect(Collectors.toList());
+            if(rejectList == null){
+                //閮戒负1,宸茬‘璁�
+                mainService.updateEndStatusById(mainId,"宸茬‘璁�",5);
+                //鏂囦欢杞Щ鍒板鎵瑰畬鎴愬悗鐨勬寮忚矾寰� 鏂囦欢淇濆瓨鍦�/doc_file/procedure/xxx.doc
+                ProcedureDocApproving approving = procedureDocApprovingService.getByMainId(mainId);
+                String fileRelativePath = approving.getFile();
+                String projectDir = CommonUtil.getProjectDir();
+                String inFilePath = projectDir + File.separator + fileRelativePath;
+                String outFilePath = (projectDir + File.separator + fileRelativePath).replace("_approving","");
+                WordUtil.fillValue(inFilePath,outFilePath,Arrays.asList(approving.getFzr(),approving.getBz(),approving.getZz(),approving.getPb()));
+                //娴佺▼鏂囦欢鏁版嵁杞Щ
+                ProcedureDoc procedureDoc = new ProcedureDoc();
+                procedureDoc.setName(approving.getName());
+                procedureDoc.setDescription(approving.getDescription());
+                procedureDoc.setVersion(approving.getVersion());
+                procedureDoc.setFzr(approving.getFzr());
+                procedureDoc.setBz(approving.getBz());
+                procedureDoc.setType(approving.getType());
+                procedureDoc.setCreateTime(new Date());
+                procedureDoc.setFile(fileRelativePath.replace("_approving",""));
+                procedureDocService.insert(procedureDoc);
+            }
+        }else{
+            mainService.updateEndStatusById(mainId,"宸查┏鍥�",0);
+        }
+        return new Response().set(1);
+    }
 }
diff --git a/src/main/java/com/whyc/service/WorksheetMainService.java b/src/main/java/com/whyc/service/WorksheetMainService.java
index 51b4873..ed0b7de 100644
--- a/src/main/java/com/whyc/service/WorksheetMainService.java
+++ b/src/main/java/com/whyc/service/WorksheetMainService.java
@@ -5,6 +5,7 @@
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.whyc.config.EnumWorksheetType;
+import com.whyc.dto.MailDTO;
 import com.whyc.dto.Response;
 import com.whyc.dto.WorksheetMainDTO;
 import com.whyc.dto.WorksheetMainDTO2;
@@ -15,6 +16,7 @@
 import com.whyc.util.CommonUtil;
 import com.whyc.util.Zip4jUtil;
 import org.aspectj.util.FileUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -22,6 +24,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.mail.MessagingException;
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
@@ -77,6 +80,12 @@
 
     @Autowired
     private ProductHistoryService productHistoryService;
+
+    @Autowired
+    private MailService mailService;
+
+    @Autowired
+    private ProcedureDocApprovingService procedureDocApprovingService;
 
     @Transactional
     public boolean submit(WorksheetMain main, DocUser user) throws IOException {
@@ -725,4 +734,78 @@
 
     }
 
+    public Response addProductProcedureAndSOP(ProcedureDocApproving approving, DocUser user) throws IOException, MessagingException {
+        WorksheetMain main = new WorksheetMain();
+         //瀛樺偍涓婁紶淇℃伅鍒颁富琛�,鑺傜偣琛�
+        //鏂囦欢淇濆瓨鍦�/doc_file/procedure_approving/xxx.doc
+        MultipartFile multipartFile = approving.getMultipartFile();
+        String originalFilename = multipartFile.getOriginalFilename();
+        String rootFile = CommonUtil.getRootFile();
+        Date date = new Date();
+        String suffixFilePath = "procedure_approving" + File.separator + date.getTime() + "_" + originalFilename;
+        String outFilePath = rootFile + suffixFilePath;
+        File outFile = new File(outFilePath);
+        multipartFile.transferTo(outFile);
+
+        main.setTitle(approving.getName());
+        main.setDescription(approving.getDescription());
+        main.setCreateUserId(user.getId());
+        main.setBeginTime(date);
+        main.setStatus(1);
+        if(approving.getType()==1){
+            main.setType(EnumWorksheetType.ProductProcedure.getType());
+        }else{
+            main.setType(EnumWorksheetType.SOP.getType());
+        }
+        mainMapper.insert(main);
+
+        List<WorksheetLink> links = new LinkedList<>();
+        WorksheetLink baseLink = new WorksheetLink();
+        WorksheetLink linkFzr = new WorksheetLink();
+        WorksheetLink linkBz = new WorksheetLink();
+        WorksheetLink linkZz = new WorksheetLink();
+        WorksheetLink linkPb = new WorksheetLink();
+
+        baseLink.setMainId(main.getId());
+        baseLink.setLinkStatus(0);
+        baseLink.setCreateTime(date);
+
+        BeanUtils.copyProperties(baseLink,linkFzr);
+        BeanUtils.copyProperties(baseLink,linkBz);
+        BeanUtils.copyProperties(baseLink,linkZz);
+        BeanUtils.copyProperties(baseLink,linkPb);
+
+        linkFzr.setDealUserId(approving.getFzr());
+        linkBz.setDealUserId(approving.getBz());
+        linkZz.setDealUserId(approving.getZz());
+        linkPb.setDealUserId(approving.getPb());
+        links.add(linkFzr);
+        links.add(linkBz);
+        links.add(linkZz);
+        links.add(linkPb);
+        linkMapper.insertBatchSomeColumn(links);
+
+        //娴佺▼鏂囨。瀹℃壒瀛愯〃瀛樺叆
+        approving.setFile("doc_file"+ File.separator + suffixFilePath);
+        approving.setMainId(main.getId());
+        procedureDocApprovingService.insert(approving);
+        //鍙戦�侀偖浠剁粰鍥涗釜纭浜�
+        QueryWrapper<DocUser> query = Wrappers.query();
+        query.select("mail").in("id",approving.getFzr(),approving.getBz(),approving.getZz(),approving.getPb());
+        List<DocUser> docUsers = userMapper.selectList(query);
+        List<String> userMailList = docUsers.stream().map(DocUser::getMail).collect(Collectors.toList());
+
+        MailDTO mailDTO = new MailDTO();
+        mailDTO.setMailList(userMailList);
+        if(approving.getType()==1){
+            mailDTO.setTitle("銆愭祦绋嬪崱纭銆�"+main.getTitle());
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙颁笂浼犱簡浜у搧娴佺▼鍗�,璇峰強鏃剁‘璁�");
+        }else{
+            mailDTO.setTitle("銆怱OP纭銆�"+main.getTitle());
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙颁笂浼犱簡SOP,璇峰強鏃剁‘璁�");
+        }
+        mailService.sendMail(mailDTO);
+
+        return new Response().setII(1,"涓婁紶瀹屾垚");
+    }
 }
diff --git a/src/main/java/com/whyc/util/Word2PdfAsposeUtil.java b/src/main/java/com/whyc/util/Word2PdfAsposeUtil.java
index b336b6f..777c01b 100644
--- a/src/main/java/com/whyc/util/Word2PdfAsposeUtil.java
+++ b/src/main/java/com/whyc/util/Word2PdfAsposeUtil.java
@@ -1,16 +1,19 @@
 package com.whyc.util;
 
-import com.aspose.words.Document;
-import com.aspose.words.SaveFormat;
+import com.aspose.cad.internal.bouncycastle.util.test.Test;
+import com.aspose.words.Shape;
+import com.aspose.words.*;
 
+import java.awt.*;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 
 public class Word2PdfAsposeUtil {
 
     /**鍘婚櫎姘村嵃涓撶敤*/
-    /*public static boolean getLicense() {
+    public static boolean getLicense() {
         boolean result = false;
         try {
             InputStream is = Test.class.getClassLoader().getResourceAsStream("\\license.xml"); // license.xml搴旀斁鍦�..\WebRoot\WEB-INF\classes璺緞涓�
@@ -21,7 +24,7 @@
             e.printStackTrace();
         }
         return result;
-    }*/
+    }
 
     public static boolean doc2pdf(String inPath, String outPath) {
         /*if (!getLicense()) { // 楠岃瘉License 鑻ヤ笉楠岃瘉鍒欒浆鍖栧嚭鐨刾df鏂囨。浼氭湁姘村嵃浜х敓
@@ -48,5 +51,93 @@
         }
         return true;
     }
+
+    public static boolean doc2pdfWithWaterMark(String inPath, String outPath) {
+        if (!getLicense()) { // 楠岃瘉License 鑻ヤ笉楠岃瘉鍒欒浆鍖栧嚭鐨刾df鏂囨。浼氭湁姘村嵃浜х敓
+            return false;
+        }
+        FileOutputStream os = null;
+        try {
+            File file = new File(outPath); // 鏂板缓涓�涓┖鐧絧df鏂囨。
+            os = new FileOutputStream(file);
+            Document doc = new Document(inPath); // Address鏄皢瑕佽杞寲鐨剋ord鏂囨。
+            insertWaterMark(doc,"鏃犳晥绛惧悕");
+            doc.save(os, SaveFormat.PDF);// 鍏ㄩ潰鏀寔DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }finally {
+            if (os != null) {
+                try {
+                    os.flush();
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return true;
+    }
+
+    private static void insertWaterMark(Document doc, String watermarkText) throws Exception {
+        Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
+        watermark.getTextPath().setText(watermarkText);
+
+        //璁剧疆姘村嵃鏍峰紡
+        //watermark.getTextPath().setFontFamily("Arial");//璁剧疆瀛椾綋
+        watermark.getTextPath().setFontFamily("瀹嬩綋");//璁剧疆瀛椾綋
+        watermark.setRotation(-40);//璁剧疆鍋忕Щ瑙掑害
+        watermark.setHeight(100);//姘村嵃楂樺害
+        watermark.setWidth(200);//姘村嵃瀹藉害
+        watermark.setFillColor(Color.pink);//璁剧疆濉厖棰滆壊
+        watermark.setStrokeColor(Color.pink);//璁剧疆鎻忚竟棰滆壊
+
+        //瀹樻柟api缁欑殑瑙i噴  澶畼鏂逛簡  (鍙彃鍏ヤ竴鏉℃按鍗� 榛樿涓鸿繖浜涙暟鎹�)
+        watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);//鎸囧畾鐩稿浜庢按骞虫斁缃殑浣嶇疆
+        watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);//鎸囧畾鐩稿浜庡舰鐘跺瀭鐩村畾浣嶇殑浣嶇疆
+
+        //watermark.setWrapType(WrapType.TOP_BOTTOM);//瀹氫箟姘村嵃鐨勭幆缁曟ā寮�
+        watermark.setWrapType(WrapType.NONE);//瀹氫箟姘村嵃鐨勭幆缁曟ā寮�
+        watermark.setVerticalAlignment(VerticalAlignment.CENTER);//  鎸囧畾褰㈢姸鍨傜洿鏀剧疆鐨勬柟寮�
+        watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);// 鎸囧畾褰㈢姸濡備綍姘村钩鏀剧疆
+
+
+        Paragraph watermarkPara = new Paragraph(doc);
+        watermarkPara.appendChild(watermark);
+
+        /*String text = watermarkPara.getText();
+        System.out.println("++++++++++" + text);
+        System.out.println("______________" + watermarkPara);
+        NodeCollection childNodes = watermarkPara.getChildNodes();
+        String text1 = childNodes.get(0).getText();
+        System.out.println("111111" + text);*/
+        for (Section section : doc.getSections()) {
+            InsertWatermarkIntoHeader(watermarkPara, section, HeaderFooterType.HEADER_PRIMARY);
+            InsertWatermarkIntoHeader(watermarkPara, section, HeaderFooterType.HEADER_FIRST);
+            InsertWatermarkIntoHeader(watermarkPara, section, HeaderFooterType.HEADER_EVEN);
+        }
+
+    }
+
+    /**
+     * 灏嗘按鍗版彃鍏ュ浘鍍忓ご閮�
+     * @param watermarkPara
+     * @param section
+     * @param headerType
+     */
+    private static void InsertWatermarkIntoHeader(Paragraph watermarkPara, Section section, int headerType) throws Exception {
+        HeaderFooterCollection headerFooters = section.getHeadersFooters();
+        HeaderFooter footer = headerFooters.getByHeaderFooterType(headerType);
+        if (footer == null) {
+            footer = new HeaderFooter(section.getDocument(), headerType);
+            section.getHeadersFooters().add(footer);
+        }
+        footer.appendChild(watermarkPara.deepClone(true));
+    }
+
+    public static void main(String[] args) {
+        doc2pdfWithWaterMark("C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\202207鍥剧焊绠$悊\\娴佺▼鍗″拰SOP鐨刣oc瀹℃壒娉ㄥ叆\\鏂癋BI绯诲垪娴佺▼鍗$瀛�2.doc",
+                "C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\202207鍥剧焊绠$悊\\娴佺▼鍗″拰SOP鐨刣oc瀹℃壒娉ㄥ叆\\鏂癋BI绯诲垪娴佺▼鍗$瀛�2-doc.pdf");
+    }
 }
 
diff --git a/src/main/java/com/whyc/util/WordUtil.java b/src/main/java/com/whyc/util/WordUtil.java
new file mode 100644
index 0000000..c7dec7f
--- /dev/null
+++ b/src/main/java/com/whyc/util/WordUtil.java
@@ -0,0 +1,60 @@
+package com.whyc.util;
+
+import com.deepoove.poi.XWPFTemplate;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+
+public class WordUtil {
+
+    public static void fillValue(String inFilePath, String outFilePath, List valueList) throws IOException {
+        HashMap<String,Object> hashMap = new HashMap<>();
+        hashMap.put("fzr", valueList.get(0));
+        hashMap.put("bz", valueList.get(1));
+        hashMap.put("zz", valueList.get(2));
+        hashMap.put("pb", valueList.get(3));
+        XWPFTemplate template = XWPFTemplate.compile(inFilePath).render(hashMap);
+        template.write(new FileOutputStream(outFilePath));
+
+
+        /*//鑾峰彇涓存椂鏂囦欢
+        File file = new File(filePath);
+        HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
+        Configure config = Configure.newBuilder().bind("detailList", policy).build();
+        XWPFTemplate template = XWPFTemplate.compile(filePath, config).render(
+                new HashMap<String, Object>() {{
+                    put("fzr", "璐熻矗浜�");
+                    put("bz", "缂栧埗");
+                    put("zz", "鍒堕��");
+                    put("pb", "鍝佷繚");
+                }}
+        );
+        //鐢熸垚鏂囦欢鍚�
+        Long time = new Date().getTime();
+        // 鐢熸垚鐨剋ord鏍煎紡
+        String fileName =  time + ".docx";
+        System.out.println("鏂囦欢鍚嶏細" + fileName);
+        //=================鐢熸垚word鍒拌缃祻瑙堥粯璁や笅杞藉湴鍧�=================
+        //瑙e喅鏂囦欢涓嬭浇鍚嶇О鍙樹负 ____涓嬪垝绾跨殑BUG
+        //閽堝IE鎴栬�呬互IE涓哄唴鏍哥殑娴忚鍣細
+        String userAgent = request.getHeader("User-Agent");
+        if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
+            fileName = java.net.URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+        } else {
+            //闈濱E娴忚鍣細
+            fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
+            // 璁剧疆寮哄埗涓嬭浇涓嶆墦寮�
+            response.setContentType("application/force-download");
+            // 璁剧疆鏂囦欢鍚�
+            response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
+            response.setCharacterEncoding("UTF-8");
+            OutputStream out = response.getOutputStream();
+            template.write(out);
+            out.flush();
+            out.close();
+            template.close();
+        }*/
+    }
+}

--
Gitblit v1.9.1