| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5,10 +5,12 @@ import com.hnac.hzims.common.logs.utils.StringUtils; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.safeproduct.constants.SafeProductConstant; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.safeproduct.constants.SafeProductConstant; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.commons.io.IOUtils; | 
					 | 
					 | 
					 | 
					import org.apache.commons.io.IOUtils; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.poi.xwpf.usermodel.XWPFDocument; | 
					 | 
					 | 
					 | 
					import org.apache.poi.xwpf.usermodel.*; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.poi.xwpf.usermodel.XWPFTable; | 
					 | 
					 | 
					 | 
					import org.json.JSONArray; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.poi.xwpf.usermodel.XWPFTableCell; | 
					 | 
					 | 
					 | 
					import org.json.JSONObject; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.apache.poi.xwpf.usermodel.XWPFTableRow; | 
					 | 
					 | 
					 | 
					import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; | 
					 | 
					 | 
					 | 
					import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.log.exception.ServiceException; | 
					 | 
					 | 
					 | 
					import org.springblade.core.log.exception.ServiceException; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.DateUtil; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.DateUtil; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -68,10 +70,10 @@ public class BaseUtil { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @param pdfPath pdf生成路径 | 
					 | 
					 | 
					 | 
					     * @param pdfPath pdf生成路径 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @param response 响应类 | 
					 | 
					 | 
					 | 
					     * @param response 响应类 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public static void exportDocument(String templateFile, Map<String, Object> params, String wordPath, String pdfPath, HttpServletResponse response) { | 
					 | 
					 | 
					 | 
					    public static void exportDocument(String templateFile, Map<String, Object> params, String wordPath, String pdfPath,String findName,  HttpServletResponse response) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            List<XWPFDocument> res = new ArrayList<>(); | 
					 | 
					 | 
					 | 
					            List<XWPFDocument> res = new ArrayList<>(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            XWPFDocument document = BaseUtil.fillDocument(templateFile, params); | 
					 | 
					 | 
					 | 
					            XWPFDocument document = BaseUtil.fillDocument(templateFile, params,findName); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            res.add(document); | 
					 | 
					 | 
					 | 
					            res.add(document); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            BaseUtil.exportWord(res, wordPath); | 
					 | 
					 | 
					 | 
					            BaseUtil.exportWord(res, wordPath); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -112,15 +114,55 @@ public class BaseUtil { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @param params 数据参数 | 
					 | 
					 | 
					 | 
					     * @param params 数据参数 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @return 文件 | 
					 | 
					 | 
					 | 
					     * @return 文件 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public static XWPFDocument fillDocument(String templatePath, Map<String, Object> params) { | 
					 | 
					 | 
					 | 
					    public static XWPFDocument fillDocument(String templatePath, Map<String, Object> params, String findName) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        XWPFDocument xwpfDocument = null; | 
					 | 
					 | 
					 | 
					        XWPFDocument xwpfDocument = null; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            xwpfDocument = WordExportUtil.exportWord07(templatePath, params); | 
					 | 
					 | 
					 | 
					            xwpfDocument = WordExportUtil.exportWord07(templatePath, params); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if (StringUtils.isNotEmpty(findName)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                String findText = params.get(findName).toString(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (StringUtils.isNotEmpty(findText)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    JSONArray jsonArray = new JSONArray(findText); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    for (XWPFTable table : xwpfDocument.getTables()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        for (int row = 0; row < table.getNumberOfRows(); row++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            for (int col = 0; col < table.getRow(row).getTableCells().size(); col++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                XWPFTableCell cell = table.getRow(row).getCell(col); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                for (XWPFParagraph p : cell.getParagraphs()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    Iterator<XWPFRun> iterator = p.getRuns().iterator(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    while (iterator.hasNext()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        XWPFRun r = iterator.next(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        String text = r.getText(0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        if (findText.equals(text)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            r.setText("", 0); // 清除原有文本
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            XWPFParagraph paragraph = r.getParagraph(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            for (int i = 0; i < jsonArray.length(); i++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                JSONObject jsonObject = jsonArray.getJSONObject(i); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                String name = jsonObject.getString("name"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                String url = jsonObject.getString("url"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                String id = paragraph.getDocument().getPackagePart().addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                CTHyperlink cLink = paragraph.getCTP().addNewHyperlink(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                cLink.setId(id); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                CTText ctText = CTText.Factory.newInstance(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                ctText.setStringValue(name); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                CTR ctr = CTR.Factory.newInstance(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                ctr.setTArray(new CTText[]{ctText}); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                cLink.setRArray(new CTR[]{ctr}); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                if(i<jsonArray.length()-1)  { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                    paragraph.createRun().addBreak(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (templatePath.equals("template/卫生自查表.docx")) { | 
					 | 
					 | 
					 | 
					            if (templatePath.equals("template/卫生自查表.docx")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                formatHygieneRecordTable(xwpfDocument); | 
					 | 
					 | 
					 | 
					                formatHygieneRecordTable(xwpfDocument); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            log.error("数据写入异常: {}", e.getMessage()); | 
					 | 
					 | 
					 | 
					            log.error("数据写入异常: {}",e.getCause().toString()+ e.getStackTrace()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            e.printStackTrace(); | 
					 | 
					 | 
					 | 
					            e.printStackTrace(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return xwpfDocument; | 
					 | 
					 | 
					 | 
					        return xwpfDocument; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |