linwe
2024-07-11 7d430038a922f02678a9ee3df1aed0d8ab33e0d5
word转pdf
11 files modified
1 files added
177 ■■■■ changed files
pom.xml 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/utils/WordToPdfUtils.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/auth/granter/CaptchaTokenGranter.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java 10 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml 3 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/entity/TaskPlaceRecordEntity.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/mapper/TaskNoFraudReportingMapper.xml 4 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/service/impl/TaskNoFraudReportingServiceImpl.java 55 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/task/service/impl/TaskServiceImpl.java 1 ●●●● patch | view | raw | blame | history
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>
src/main/java/org/springblade/common/utils/WordToPdfUtils.java
New file
@@ -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");
    }
}
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);
        }
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);
        }
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);
    }
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);
        }
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">
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格式!");
        }
    }
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;
}
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
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) {
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);
        }