订单短信发送1
This commit is contained in:
parent
50b984ba3b
commit
7cd842073e
|
|
@ -273,7 +273,9 @@ public class OrderController extends BaseController {
|
|||
String text = run.getText(0);
|
||||
if (text != null) {
|
||||
for (Map.Entry<String, String> entry : replacements.entrySet()) {
|
||||
text = text.replace(entry.getKey(), entry.getValue());
|
||||
String entryValue = entry.getValue();
|
||||
if (entryValue == null) {continue;}
|
||||
text = text.replace(entry.getKey(), entryValue);
|
||||
}
|
||||
run.setText(text, 0);
|
||||
}
|
||||
|
|
@ -491,22 +493,30 @@ public class OrderController extends BaseController {
|
|||
}
|
||||
|
||||
private static void fillOrderTable(XWPFDocument document, List<OrderDetailDto> orderDetails, String cost) {
|
||||
// 获取第一个表格(假设模板中只有一个表格)
|
||||
XWPFTable table = document.getTables().get(1);
|
||||
|
||||
// 保留第一行(表头)和最后一行(合计行),仅在中间插入数据行
|
||||
XWPFTable table = null;
|
||||
int headerRowIndex = 0; // 表头行索引
|
||||
int footerRowIndex = table.getRows().size(); // 合计行索引
|
||||
int footerRowIndex = 0; // 合计行索引
|
||||
int cellCount = 0;
|
||||
try {
|
||||
// 获取第一个表格(假设模板中只有一个表格)
|
||||
table = document.getTables().get(1);
|
||||
|
||||
// 删除中间的所有行(如果有的话)
|
||||
for (int i = table.getRows().size() - 2; i > headerRowIndex; i--) {
|
||||
table.removeRow(i);
|
||||
// 保留第一行(表头)和最后一行(合计行),仅在中间插入数据行
|
||||
headerRowIndex = 0;
|
||||
footerRowIndex = table.getRows().size();
|
||||
|
||||
// 删除中间的所有行(如果有的话)
|
||||
for (int i = table.getRows().size() - 2; i > headerRowIndex; i--) {
|
||||
table.removeRow(i);
|
||||
}
|
||||
// 获取表头行的单元格数量
|
||||
cellCount = table.getRow(headerRowIndex).getTableCells().size();
|
||||
|
||||
// 遍历订单详情并动态插入数据行
|
||||
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
throw new RuntimeException("模板表处理异常,请检查合同信息");
|
||||
}
|
||||
// 获取表头行的单元格数量
|
||||
int cellCount = table.getRow(headerRowIndex).getTableCells().size();
|
||||
|
||||
// 遍历订单详情并动态插入数据行
|
||||
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
int num = orderDetails.size();
|
||||
for (OrderDetailDto detail : orderDetails) {
|
||||
XWPFTableRow newRow = table.insertNewTableRow(headerRowIndex + 1);
|
||||
|
|
|
|||
|
|
@ -165,12 +165,18 @@ public class OrderDetailDto {
|
|||
@ApiModelProperty(value = "买方承租方公司名称")
|
||||
private String buyerCompanyName;
|
||||
|
||||
@ApiModelProperty(value = "买方承租方电话")
|
||||
private String buyerPhoneNumber;
|
||||
|
||||
@ApiModelProperty(value = "卖方出租方公司id")
|
||||
private Integer sellerCompany;
|
||||
|
||||
@ApiModelProperty(value = "卖方出租方公司名称")
|
||||
private String sellerCompanyName;
|
||||
|
||||
@ApiModelProperty(value = "卖方出租方电话")
|
||||
private String sellerPhoneNumber;
|
||||
|
||||
@ApiModelProperty(value = "单位")
|
||||
private String unitName;
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author:liang.chao
|
||||
|
|
@ -320,7 +321,7 @@ public class OrderServiceImpl implements OrderService {
|
|||
}
|
||||
// 退租
|
||||
if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString())) {
|
||||
if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) {
|
||||
if (!dtos.isEmpty() && CollectionUtil.isNotEmpty(dtos)) {
|
||||
if (CollectionUtil.isNotEmpty(orderInfoDto.getMaIds())) {
|
||||
for (OrderDetailDto dto : dtos) {
|
||||
if (orderInfoDto.getMaIds().contains(dto.getMaId())) {
|
||||
|
|
@ -334,6 +335,13 @@ public class OrderServiceImpl implements OrderService {
|
|||
orderMapper.updateDeviceStatus(dto);
|
||||
}
|
||||
}
|
||||
String sendMessage = sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber(), dtos.get(0).getSellerPhoneNumber()), orderInfoDto.getOrderCode() + "订单,退租成功");
|
||||
if (StringUtils.isBlank(sendMessage)) {
|
||||
System.err.println("短信发送失败");
|
||||
} else {
|
||||
System.out.println("短信发送消息:" + sendMessage);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// 取消
|
||||
|
|
@ -344,10 +352,11 @@ public class OrderServiceImpl implements OrderService {
|
|||
orderMapper.updateDeviceStatus(dto);
|
||||
}
|
||||
}
|
||||
sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber(), dtos.get(0).getSellerPhoneNumber()), orderInfoDto.getOrderCode() + "订单已被取消");
|
||||
}
|
||||
// 订单完成,修改装备为下架状态
|
||||
if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_FINISHED.getStatus().toString())) {
|
||||
if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) {
|
||||
if (!dtos.isEmpty() && CollectionUtil.isNotEmpty(dtos)) {
|
||||
if (CollectionUtil.isNotEmpty(orderInfoDto.getMaIds())) {
|
||||
for (OrderDetailDto dto : dtos) {
|
||||
if (orderInfoDto.getMaIds().contains(dto.getMaId())) {
|
||||
|
|
@ -361,6 +370,7 @@ public class OrderServiceImpl implements OrderService {
|
|||
orderMapper.updateDeviceStatus(dto);
|
||||
}
|
||||
}
|
||||
sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber(), dtos.get(0).getSellerPhoneNumber()), orderInfoDto.getOrderCode() + "订单已完成。");
|
||||
}
|
||||
}
|
||||
String userName = SecurityUtils.getLoginUser().getUsername();
|
||||
|
|
@ -375,11 +385,14 @@ public class OrderServiceImpl implements OrderService {
|
|||
if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_PENDING_SHIPMENT.getStatus().toString()) ||
|
||||
orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_TERMINATED.getStatus().toString())) {
|
||||
tmTask.setNoticeCompanyId(tmTask.getBuyerCompanyId());
|
||||
sendMsgToSms(Collections.singletonList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已出库,请注意查收。");
|
||||
} else if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_RECEIVE.getStatus().toString()) ||
|
||||
orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_AWAITING_RECEIPT.getStatus().toString()) ||
|
||||
orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString()) ||
|
||||
orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_REPAIRED.getStatus().toString())) {
|
||||
tmTask.setNoticeCompanyId(tmTask.getSellerCompanyId());
|
||||
sendMsgToSms(Collections.singletonList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已接单,待出库。");
|
||||
|
||||
}
|
||||
tmTaskMapper.updateTaskStatus(tmTask);
|
||||
}
|
||||
|
|
@ -424,6 +437,46 @@ public class OrderServiceImpl implements OrderService {
|
|||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送消息到短信
|
||||
*
|
||||
* @param phoneNumbers 电话号码列表,可能包含无效或重复的号码
|
||||
* @param msg 要发送的短信消息内容
|
||||
* @return 发送短信的结果,具体形式依赖于SmsUtils.smsToken的实现
|
||||
* 此方法首先检查电话号码列表是否为空如果为空,则直接返回空字符串接下来,它会移除列表中所有为空的电话号码,
|
||||
* 然后对列表中超过11位的电话号码进行解密处理
|
||||
* 确保只有有效的电话号码被用来发送短信
|
||||
*/
|
||||
private String sendMsgToSms(List<String> phoneNumbers, String msg) {
|
||||
// 检查电话号码列表是否为空
|
||||
if (CollectionUtils.isEmpty(phoneNumbers)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// 先用迭代器
|
||||
Iterator<String> iterator = phoneNumbers.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String phoneNumber = iterator.next();
|
||||
if (StringUtils.isEmpty(phoneNumber)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
// 遍历电话号码列表
|
||||
for (String phoneNumber : phoneNumbers) {
|
||||
if (StringUtils.isEmpty(phoneNumber)) {
|
||||
continue;
|
||||
}
|
||||
// 对超过11位的电话号码进行解密处理
|
||||
if (phoneNumber.length() > 11) {
|
||||
Sm4Utils.decrypt(phoneNumber);
|
||||
}
|
||||
}
|
||||
|
||||
// 使用处理后的电话号码列表发送短信
|
||||
return SmsUtils.smsToken(String.join(",", phoneNumbers), msg, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成六位随机数取件码
|
||||
* @return
|
||||
|
|
|
|||
|
|
@ -314,6 +314,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</select>
|
||||
<select id="getOrderDetailsByOrderId" resultType="com.bonus.material.order.domain.OrderDetailDto">
|
||||
SELECT
|
||||
su1.phonenumber as buyerPhoneNumber,
|
||||
mdi.person_phone as sellerPhoneNumber,
|
||||
hh.id,
|
||||
hh.ma_id,
|
||||
hh.num,
|
||||
|
|
@ -338,6 +340,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
LEFT JOIN ma_type mt ON mdi.type_id = mt.type_id
|
||||
LEFT JOIN sys_dept bdept on bdept.dept_id = moi.buyer_company
|
||||
LEFT JOIN sys_dept sdept on sdept.dept_id = mdi.own_co
|
||||
LEFT JOIN sys_user su1 ON moi.buyer_id = su1.user_id AND su1.del_flag != 2
|
||||
WHERE
|
||||
mt.del_flag = 0 and hh.order_id = #{orderId}
|
||||
</select>
|
||||
|
|
|
|||
Loading…
Reference in New Issue