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