From 7d430038a922f02678a9ee3df1aed0d8ab33e0d5 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Thu, 11 Jul 2024 16:15:26 +0800
Subject: [PATCH] word转pdf

---
 src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java     |   22 +++++--
 src/main/java/org/springblade/common/utils/WordToPdfUtils.java                               |   38 ++++++++++++
 src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml             |    4 +
 src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java                 |    1 
 src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java                  |    5 +
 src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml                       |    3 -
 src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java                 |    5 +
 src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java                     |   13 ----
 src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java                 |    9 +++
 src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java  |   10 +-
 pom.xml                                                                                      |   12 ++++
 src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java |   55 ++++++++++++++++++
 12 files changed, 149 insertions(+), 28 deletions(-)

diff --git a/pom.xml b/pom.xml
index 264992b..def6489 100644
--- a/pom.xml
+++ b/pom.xml
@@ -342,6 +342,18 @@
             <version>1.7.6</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.luhuiguo</groupId>
+            <artifactId>aspose-pdf</artifactId>
+            <version>23.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.luhuiguo</groupId>
+            <artifactId>aspose-words</artifactId>
+            <version>23.1</version>
+        </dependency>
+
+
     </dependencies>
 
     <build>
diff --git a/src/main/java/org/springblade/common/utils/WordToPdfUtils.java b/src/main/java/org/springblade/common/utils/WordToPdfUtils.java
new file mode 100644
index 0000000..011a972
--- /dev/null
+++ b/src/main/java/org/springblade/common/utils/WordToPdfUtils.java
@@ -0,0 +1,38 @@
+package org.springblade.common.utils;
+
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class WordToPdfUtils {
+	// https://srgdjczzxtpt.com:2080/gminio/jczz/upload/20240710/ade086b8d725a08631b62d812a63f6da.docx
+
+	public static String wordToPdf(String fileName, String pdfPath) throws Exception {
+		// 判断入参是否有空
+		if (fileName == null || pdfPath == null) {
+			throw new Exception("入参不能为空");
+		}
+		// 判断文件后缀名是否doc,ppt,xls
+		if (fileName.endsWith(".doc") || fileName.endsWith(".docx")) {
+			// 获取文件流
+			URL url = new URL(pdfPath);
+			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+			connection.setRequestProperty("User-Agent", "Mozilla/5.0");
+			// 获取文件名
+			String orFileName = fileName.substring(0, fileName.lastIndexOf("."));
+			InputStream inputStream = connection.getInputStream();
+			long timeMillis = System.currentTimeMillis();
+			// String filePathPdf = "/data/app/jczz/pdf/" + orFileName + "_" + timeMillis + ".pdf";
+			String filePathPdf = "D:\\公司\\" + orFileName + "_" + timeMillis + ".pdf";
+			com.aspose.words.Document doc = new com.aspose.words.Document(inputStream);
+			doc.save(filePathPdf, com.aspose.words.SaveFormat.PDF);
+			return filePathPdf;
+		} else {
+			throw new Exception("文件格式不正确");
+		}
+	}
+
+	public static void main(String[] args) throws Exception {
+		wordToPdf(" 测试.docx", "https://srgdjczzxtpt.com:2080/gminio/jczz/upload/20240710/ade086b8d725a08631b62d812a63f6da.docx");
+	}
+}
diff --git a/src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java b/src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java
index d4ab053..d899f36 100644
--- a/src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java
+++ b/src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java
@@ -17,6 +17,8 @@
 package org.springblade.modules.auth.granter;
 
 import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.common.cache.CacheNames;
 import org.springblade.common.cache.ParamCache;
 import org.springblade.core.log.exception.ServiceException;
@@ -48,6 +50,8 @@
 @Component
 @AllArgsConstructor
 public class CaptchaTokenGranter implements ITokenGranter {
+
+	protected static final Logger logger = LoggerFactory.getLogger(CaptchaTokenGranter.class);
 
 	public static final String GRANT_TYPE = "captcha";
 	public static final Integer FAIL_COUNT = 5;
@@ -83,6 +87,7 @@
 		int cnt = Func.toInt(bladeRedis.get(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username)), 0);
 		int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), FAIL_COUNT);
 		if (cnt >= failCount) {
+			logger.error("用户名或密码错误,用户账号:{},用户名:{},错误次数:{}",tenantId, username, cnt);
 			throw new ServiceException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
 		}
 
diff --git a/src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java b/src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java
index 207a0d0..4ba934b 100644
--- a/src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java
+++ b/src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java
@@ -17,6 +17,8 @@
 package org.springblade.modules.auth.granter;
 
 import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.common.cache.CacheNames;
 import org.springblade.common.cache.ParamCache;
 import org.springblade.core.log.exception.ServiceException;
@@ -48,6 +50,8 @@
 @AllArgsConstructor
 public class PasswordTokenGranter implements ITokenGranter {
 
+	protected static final Logger logger = LoggerFactory.getLogger(CaptchaTokenGranter.class);
+
 	public static final String GRANT_TYPE = "password";
 	public static final Integer FAIL_COUNT = 5;
 	public static final String FAIL_COUNT_VALUE = "account.failCount";
@@ -75,6 +79,7 @@
 		int cnt = Func.toInt(bladeRedis.get(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username)), 0);
 		int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), FAIL_COUNT);
 		if (cnt >= failCount) {
+			logger.error("用户名或密码错误,用户账号:{},用户名:{},错误次数:{}",tenantId, username, cnt);
 			throw new ServiceException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
 		}
 
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java b/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
index 744fd6e..ba4a8ea 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
+++ b/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
@@ -145,13 +145,13 @@
 		// 创建居住证发送短信定时任务
 		EcOrderParamDTO ecOrderParamDTO = new EcOrderParamDTO();
 		// 获取当前日期时间
-		LocalDateTime now = LocalDateTime.now();
+		// LocalDateTime now = LocalDateTime.now();
 		// 获取前一天的开始时间
-		LocalDateTime yesterdayStart = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MIN);
+		// LocalDateTime yesterdayStart = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MIN);
 		// 获取前一天的结束时间
-		LocalDateTime yesterdayEnd = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MAX);
-		ecOrderParamDTO.setEndTime(yesterdayEnd.format(DateUtil.DATETIME_FORMATTER));
-		ecOrderParamDTO.setStartTime(yesterdayStart.format(DateUtil.DATETIME_FORMATTER));
+		// LocalDateTime yesterdayEnd = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MAX);
+		// ecOrderParamDTO.setEndTime(yesterdayEnd.format(DateUtil.DATETIME_FORMATTER));
+		// ecOrderParamDTO.setStartTime(yesterdayStart.format(DateUtil.DATETIME_FORMATTER));
 		boolean b = ecOrderService.SynchronizeData(ecOrderParamDTO);
 		return R.status(b);
 	}
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java b/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
index 73c37b8..c16dfe0 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
+++ b/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
@@ -1,6 +1,7 @@
 package org.springblade.modules.eCallEventTwo.service.impl;
 
 import cn.hutool.core.convert.Convert;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -125,27 +126,34 @@
 		if (StringUtils.isNotBlank(ecOrderParamDTO.getStartTime()) && StringUtils.isNotEmpty(ecOrderParamDTO.getEndTime())) {
 			ecOrderQueryWrapper.between("import_time", ecOrderParamDTO.getStartTime(), ecOrderParamDTO.getEndTime());
 		}
+		// System.out.println("**********参数**************************" + JSON.toJSONString(ecOrderParamDTO));
 		long count = count(ecOrderQueryWrapper);
+		System.out.println("**********总数**************************" + count);
 		int totalPages = (int) Math.ceil((double) count / pageSize); // 计算总页数
 
 		for (int pageNum = 1; pageNum <= totalPages; pageNum++) {
 			Page<EcOrder> page = new Page<>(pageNum, pageSize);
-			QueryWrapper<EcOrder> objectQueryWrapper = new QueryWrapper<>();
-			IPage<EcOrder> resultPage = baseMapper.selectPage(page, objectQueryWrapper);
+			IPage<EcOrder> resultPage = baseMapper.selectPage(page, ecOrderQueryWrapper);
 			List<EcOrder> records = resultPage.getRecords();
 			List<ECallEventTwoEntity> recordEntityList = BeanUtil.copy(records, ECallEventTwoEntity.class);
-			List<ECallEventTwoEntity> arrayList = new ArrayList<>();
+			List<ECallEventTwoEntity> addList = new ArrayList<>();
+			List<ECallEventTwoEntity> updateList = new ArrayList<>();
 			// 过滤出已同步的订单
 			recordEntityList.forEach(record -> {
-				long count1 = ecOrderService.count(Wrappers.<ECallEventTwoEntity>lambdaQuery().eq(ECallEventTwoEntity::getOrderId, record.getOrderId()));
+				long count1 = ecOrderService.count(Wrappers.<ECallEventTwoEntity>lambdaQuery().eq(ECallEventTwoEntity::getOrderCode, record.getOrderCode()));
 				if (count1 == 0) {
-					arrayList.add(record);
+					addList.add(record);
+				} else {
+					updateList.add(record);
 				}
 			});
 			// 同步订单
 			boolean b = false;
-			if (arrayList.size() > 0) {
-				b = ecOrderService.saveOrUpdateBatch(arrayList);
+			if (addList.size() > 0) {
+				b = ecOrderService.saveBatch(addList);
+			}
+			if (updateList.size() > 0) {
+				b = ecOrderService.saveOrUpdateBatch(updateList);
 			}
 			System.out.println("更新第" + pageNum + "页" + b);
 		}
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
index ec09a74..6baddd0 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
@@ -349,11 +349,8 @@
                 and jhs.district_code = #{household.aoiCode}
             </if>
             and jh.is_deleted = 0
-            and jg.grid_code is not null
             order by jh.id desc
         </where>
-
-
     </select>
 
     <select id="getAllHouseHold" resultMap="householdPageAndLabelMap">
diff --git a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
index 08c0bf0..69384d1 100644
--- a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
+++ b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
@@ -16,9 +16,7 @@
  */
 package org.springblade.modules.resource.endpoint;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.JSONPObject;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
@@ -33,7 +31,6 @@
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ImageUtil;
 import org.springblade.modules.resource.builder.oss.OssBuilder;
 import org.springblade.modules.resource.entity.Attach;
 import org.springblade.modules.resource.entity.AttachData;
@@ -42,14 +39,6 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.util.Arrays;
 import java.util.List;
 
@@ -267,7 +256,7 @@
 			// 返回
 			return R.data(bladeFile);
 		} else {
-			return R.fail("上传的附件必须是pdf,ppt,doc,docx格式!");
+			return R.fail("上传的附件必须是pdf,doc,docx格式!");
 		}
 	}
 
diff --git a/src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java b/src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java
index 758fbfb..34c44d7 100644
--- a/src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java
+++ b/src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java
@@ -111,4 +111,13 @@
 	@ApiModelProperty(value = "1:图片  2:ppt  3:其他", example = "")
 	@TableField("file_type")
 	private String fileType;
+
+	@ApiModelProperty(value = "PDF图片地址", example = "")
+	@TableField("pdf_path")
+	private String pdfPath;
+
+	// 文件原名称
+	@ApiModelProperty(value = "文件原名称", example = "")
+	@TableField("original_name")
+	private String originalName;
 }
diff --git a/src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml b/src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml
index c73c20a..8bc58c2 100644
--- a/src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml
+++ b/src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml
@@ -87,7 +87,7 @@
                 and jtnfr.pcs_name like concat('%', #{place.pcsName},'%')
             </if>
 
-            <if test="isAdministrator==2">
+            <if test="isAdministrator==2 and place.createUser == null">
                 <choose>
                     <when test="place.roleName != null and place.roleName != ''">
                         <if test="place.roleName=='wgy'">
@@ -167,6 +167,8 @@
                jpr.rectification_image_urls,
                jpr.rectification_remark,
                jpr.rectification_time,
+               jpr.pdf_path,
+               jpr.original_name,
                jpgi.items_name
         from jczz_task_place_record jpr
                  LEFT JOIN jczz_patrol_group_item jpgi on jpr.item_id = jpgi.id
diff --git a/src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java b/src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java
index ef6896f..4496216 100644
--- a/src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java
+++ b/src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java
@@ -19,15 +19,20 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.DictConstant;
 import org.springblade.common.exception.CustomException;
 import org.springblade.common.param.CommonParamSet;
 import org.springblade.common.param.GridSet;
 import org.springblade.common.utils.SpringUtils;
+import org.springblade.common.utils.WordToPdfUtils;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.modules.resource.builder.oss.OssBuilder;
 import org.springblade.modules.task.entity.TaskNoFraudReportingEntity;
 import org.springblade.modules.task.entity.TaskPlaceRecordEntity;
 import org.springblade.modules.task.excel.TaskNoExplosionExcel;
@@ -37,9 +42,12 @@
 import org.springblade.modules.task.service.ITaskService;
 import org.springblade.modules.task.vo.TaskNoFraudReportingVO;
 import org.springblade.modules.task.vo.TaskPlaceRecordVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -51,6 +59,15 @@
  */
 @Service
 public class TaskNoFraudReportingServiceImpl extends ServiceImpl<TaskNoFraudReportingMapper, TaskNoFraudReportingEntity> implements ITaskNoFraudReportingService {
+
+
+	private static final Logger logger = LoggerFactory.getLogger(TaskNoFraudReportingServiceImpl.class);
+
+	/**
+	 * 对象存储构建类
+	 */
+	@Autowired
+	private OssBuilder ossBuilder;
 
 	@Override
 	public IPage<TaskNoFraudReportingVO> selectTaskNoFraudReportingPage(IPage<TaskNoFraudReportingVO> page, TaskNoFraudReportingVO taskNoFraudReporting) {
@@ -106,6 +123,30 @@
 				item.setTaskPlaceSelfCheckId(taskNoFraudReporting.getId());
 				item.setCreateUser(AuthUtil.getUserId());
 				item.setType("2");
+				// 判断是否有生成pdf
+				if (StringUtils.isBlank(item.getPdfPath()) && StringUtils.isNotBlank(item.getImageUrls())) {
+					// 生成pdf
+					String filePath;
+					FileInputStream file = null;
+					try {
+						filePath = WordToPdfUtils.wordToPdf(item.getOriginalName(), item.getImageUrls());
+						file = new FileInputStream(filePath);
+						BladeFile bladeFile = ossBuilder.template().putFile(item.getOriginalName(), file);
+						item.setPdfPath(bladeFile.getLink());
+					} catch (Exception e) {
+						logger.error("生成pdf失败", e);
+						// throw new RuntimeException(e);
+					} finally {
+						if (file != null) {
+							try {
+								file.close();
+							} catch (IOException e) {
+								logger.error("关闭流异常", e);
+								/* 异常处理 */
+							}
+						}
+					}
+				}
 			});
 			List<TaskPlaceRecordEntity> collect = taskPlaceRecordList.stream().collect(Collectors.toList());
 			if (collect.size() > 0) {
@@ -153,6 +194,20 @@
 				List<TaskPlaceRecordEntity> recordEntityList = BeanUtil.copy(taskPlaceRecordList, TaskPlaceRecordEntity.class);
 				for (TaskPlaceRecordEntity taskPlaceRecordEntity : recordEntityList) {
 					taskPlaceRecordEntity.setType("2");
+					// 判断是否有生成pdf
+					if (StringUtils.isBlank(taskPlaceRecordEntity.getPdfPath()) && StringUtils.isNotBlank(taskPlaceRecordEntity.getImageUrls())) {
+						// 生成pdf
+						String filePath;
+						try {
+							filePath = WordToPdfUtils.wordToPdf(taskPlaceRecordEntity.getOriginalName(), taskPlaceRecordEntity.getImageUrls());
+							FileInputStream file = new FileInputStream(filePath);
+							BladeFile bladeFile = ossBuilder.template().putFile(taskPlaceRecordEntity.getOriginalName(), file);
+							taskPlaceRecordEntity.setPdfPath(bladeFile.getLink());
+						} catch (Exception e) {
+							logger.error("生成pdf失败", e);
+							// throw new RuntimeException(e);
+						}
+					}
 				}
 				boolean result = bean.saveOrUpdateBatch(recordEntityList);
 				if (result) {
diff --git a/src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java b/src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java
index a266572..cb68682 100644
--- a/src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java
+++ b/src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java
@@ -699,6 +699,7 @@
 				objectLambdaUpdateWrapper.set(TaskNoFraudReportingEntity::getHouseCode, task.getHouseCode());
 			}
 			objectLambdaUpdateWrapper.set(TaskNoFraudReportingEntity::getStatus, task.getStatus());
+			objectLambdaUpdateWrapper.set(TaskNoFraudReportingEntity::getRemark, task.getRemark());
 			objectLambdaUpdateWrapper.eq(TaskNoFraudReportingEntity::getTaskId, task.getId());
 			return bean.update(objectLambdaUpdateWrapper);
 		}

--
Gitblit v1.9.3