|
@ -3,6 +3,7 @@ package org.jeecg.modules.miniapp.order.service.impl; |
|
|
import cn.hutool.core.date.DatePattern; |
|
|
import cn.hutool.core.date.DatePattern; |
|
|
import cn.hutool.core.date.DateUtil; |
|
|
import cn.hutool.core.date.DateUtil; |
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
@ -76,6 +77,7 @@ public class OrderServiceImpl implements OrderService { |
|
|
@Override |
|
|
@Override |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public void saveOrder(AppOrder appOrder, List<AppOrderCar> appOrderCarList, List<AppOrderVoucher> appOrderVoucherList, List<AppOrderFinance> appOrderFinanceList) { |
|
|
public void saveOrder(AppOrder appOrder, List<AppOrderCar> appOrderCarList, List<AppOrderVoucher> appOrderVoucherList, List<AppOrderFinance> appOrderFinanceList) { |
|
|
|
|
|
OrderInfo orderInfo = new OrderInfo(); // 订单合同内容 |
|
|
// 获取当前用户信息 |
|
|
// 获取当前用户信息 |
|
|
MLoginUser user =userInfoUtil.getUserInfo(); |
|
|
MLoginUser user =userInfoUtil.getUserInfo(); |
|
|
// 生成唯一订单号 |
|
|
// 生成唯一订单号 |
|
@ -84,10 +86,19 @@ public class OrderServiceImpl implements OrderService { |
|
|
"CXSC", |
|
|
"CXSC", |
|
|
DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN), |
|
|
DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN), |
|
|
String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000)))); |
|
|
String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000)))); |
|
|
appOrder.setStatus(0); // 默认未生效 |
|
|
|
|
|
|
|
|
appOrder.setStatus(1); // 默认已生效 |
|
|
// 当前登录用户 |
|
|
// 当前登录用户 |
|
|
appOrder.setCreateBy(user.getNickName()); |
|
|
appOrder.setCreateBy(user.getNickName()); |
|
|
appOrder.setCreateTime(new Date()); |
|
|
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); |
|
|
appOrderMapper.insert(appOrder); |
|
|
if(appOrderCarList!=null && appOrderCarList.size()>0) { |
|
|
if(appOrderCarList!=null && appOrderCarList.size()>0) { |
|
|
for(AppOrderCar entity:appOrderCarList) { |
|
|
for(AppOrderCar entity:appOrderCarList) { |
|
@ -163,11 +174,34 @@ public class OrderServiceImpl implements OrderService { |
|
|
return contractUrl; |
|
|
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<String,String> 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 |
|
|
@Override |
|
|
public void canelOrderContract(AppOrder appOrder) { |
|
|
public void canelOrderContract(AppOrder appOrder) { |
|
|
MLoginUser userInfo = userInfoUtil.getUserInfo(); |
|
|
MLoginUser userInfo = userInfoUtil.getUserInfo(); |
|
|
appOrder.setUpdateBy(userInfo.getNickName()); |
|
|
appOrder.setUpdateBy(userInfo.getNickName()); |
|
|
appOrder.setStatus(0); |
|
|
|
|
|
|
|
|
appOrder.setStatus(2); |
|
|
appOrderMapper.updateById(appOrder); |
|
|
appOrderMapper.updateById(appOrder); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|