From 6149898999c5294fd4eec515271f3f4ce51d153c Mon Sep 17 00:00:00 2001 From: tanzs Date: Wed, 26 Feb 2025 00:36:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=90=88=E5=90=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=8F=90=E4=BA=A4=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/sysMiniapp/order/vo/AppOrderPage.java | 3 ++ .../miniapp/order/controller/OrderController.java | 2 +- .../order/service/impl/OrderServiceImpl.java | 38 ++++++++++++++++++++-- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/vo/AppOrderPage.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/vo/AppOrderPage.java index a9aab0b..a2944ad 100644 --- a/jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/vo/AppOrderPage.java +++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/vo/AppOrderPage.java @@ -14,6 +14,8 @@ import org.jeecg.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import javax.validation.constraints.NotBlank; + /** * @Description: 合同订单表 * @Author: jeecg-boot @@ -46,6 +48,7 @@ public class AppOrderPage { /**产品合同模板*/ @Excel(name = "产品合同模板", width = 15) @ApiModelProperty(value = "产品合同模板") + @NotBlank(message = "未识别到产品合同模板,请检查配置") private java.lang.String productContractTemp; /**经销商*/ @Excel(name = "经销商", width = 15) diff --git a/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java b/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java index 13c926c..028fdde 100644 --- a/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java +++ b/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java @@ -162,7 +162,7 @@ public class OrderController { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("create_by", userInfo.getNickName()); queryWrapper.eq("id",orderId); - queryWrapper.eq("status",1); // 未生效的订单才可以生成 + queryWrapper.eq("status",1); // 已生效订单才能失效 AppOrder appOrderEntity = appOrderService.getOne(queryWrapper); if(appOrderEntity==null) { return Result.error("未找到对应数据"); diff --git a/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java b/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java index 59b30af..c1be99d 100644 --- a/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java +++ b/jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java @@ -3,6 +3,7 @@ package org.jeecg.modules.miniapp.order.service.impl; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; @@ -76,6 +77,7 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional(rollbackFor = Exception.class) public void saveOrder(AppOrder appOrder, List appOrderCarList, List appOrderVoucherList, List appOrderFinanceList) { + OrderInfo orderInfo = new OrderInfo(); // 订单合同内容 // 获取当前用户信息 MLoginUser user =userInfoUtil.getUserInfo(); // 生成唯一订单号 @@ -84,10 +86,19 @@ public class OrderServiceImpl implements OrderService { "CXSC", DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN), String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000)))); - appOrder.setStatus(0); // 默认未生效 + appOrder.setStatus(1); // 默认已生效 // 当前登录用户 appOrder.setCreateBy(user.getNickName()); appOrder.setCreateTime(new Date()); + if (StrUtil.isBlank(appOrder.getProductContractTemp())){ + throw new RuntimeException("产品模板合同为空,无法生成合同,请配置合同模板!"); + } + BeanUtils.copyProperties(appOrder, orderInfo); + BeanUtils.copyProperties(appOrderCarList.get(0),orderInfo); + BeanUtils.copyProperties(appOrderVoucherList.get(0),orderInfo); + BeanUtils.copyProperties(appOrderFinanceList.get(0),orderInfo); + String contractUrl = this.creatContractUrl(orderInfo); + appOrder.setContractUrl(contractUrl); appOrderMapper.insert(appOrder); if(appOrderCarList!=null && appOrderCarList.size()>0) { for(AppOrderCar entity:appOrderCarList) { @@ -163,11 +174,34 @@ public class OrderServiceImpl implements OrderService { return contractUrl; } + private String creatContractUrl(OrderInfo orderInfo){ + String contractUrl = null; + // pdf 文件表单填充 + // 1.定义输出临时路径 + String outputPath = System.getProperty("java.io.tmpdir") + "/" + orderInfo.getOrderNum() +".pdf"; + // 2.转换实体类到 Map + try { + Map formData = jsonToMap(JSONObject.toJSONString(orderInfo)); + log.debug("FormData: " + JSONObject.toJSONString(formData)); + //3. 拼接 pdf + pdfFormUtils.fillPdfFormFromUrl(orderInfo.getProductContractTemp(),outputPath,formData,6.5f); + //4. 调用合同上传 oss + File pdfFile = new File(outputPath); + contractUrl = CommonUtils.upload(convertFileToMultipartFile(pdfFile), "contract", uploadType); + // 删除临时文件 + pdfFile.delete(); + } catch (Exception e) { + log.error("合同生成失败,订单编号:{}",orderInfo.getOrderNum()); + throw new RuntimeException(e); + } + return contractUrl; + } + @Override public void canelOrderContract(AppOrder appOrder) { MLoginUser userInfo = userInfoUtil.getUserInfo(); appOrder.setUpdateBy(userInfo.getNickName()); - appOrder.setStatus(0); + appOrder.setStatus(2); appOrderMapper.updateById(appOrder); }