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