【admin】新增# 1.新增领料通知和维修派单短信通知 2.优化导出送货表格内容

dev1.0
JaxCen 2024-10-24 01:51:47 +08:00
parent f925be6248
commit df3e68dba3
9 changed files with 257 additions and 139 deletions

View File

@ -0,0 +1,37 @@
package com.hcy.admin.config;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author dabin
*/
@Data
@Component
public class SmsConfig {
/**
*
*/
public static Map<String,String> getRepairOrderNotice(){
Map<String,String> smsParam = new HashMap<>();
smsParam.put("smsTemplate","维修派单通知 派单时间:${sendOrderTime} 型号:${model} 功率:${power} 模块代码: ${moduleCode} 订单编号:${orderNo}");
smsParam.put("templateId","SMS_474980344");
return smsParam;
}
/**
*
*/
public static Map<String,String> getMaterialRequestApprovalNotice(){
Map<String,String> smsParam = new HashMap<>();
smsParam.put("smsTemplate","领料申请已通过 模块:${module} 型号:${model} 领料日期:${date}");
smsParam.put("templateId","SMS_474810439");
return smsParam;
}
}

View File

@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.query.MPJQueryWrapper;
import com.hcy.admin.AdminThreadLocal; import com.hcy.admin.AdminThreadLocal;
import com.hcy.admin.config.SmsConfig;
import com.hcy.admin.service.order.IRepairOrderAuditService; import com.hcy.admin.service.order.IRepairOrderAuditService;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.RepairOrderAuditParam; import com.hcy.admin.validate.order.RepairOrderAuditParam;
import com.hcy.admin.vo.order.*; import com.hcy.admin.vo.order.*;
import com.hcy.common.constant.TimeConstant;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.dto.order.RepairOrderAuditDto; import com.hcy.common.dto.order.RepairOrderAuditDto;
@ -30,6 +32,8 @@ import com.hcy.common.mapper.order.*;
import com.hcy.common.mapper.sparePart.SparePartMapper; import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.plugin.notice.engine.SmsNotice;
import com.hcy.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -735,8 +739,18 @@ public class RepairOrderAuditServiceImpl implements IRepairOrderAuditService {
Assert.notNull(model, "数据不存在!"); Assert.notNull(model, "数据不存在!");
model.setAuditStatus(RepairOrderAuditStatusEnum.TO_BE_CONFIRMED.getStatus()); model.setAuditStatus(RepairOrderAuditStatusEnum.TO_BE_CONFIRMED.getStatus());
repairOrderAuditMapper.updateById(model); repairOrderAuditMapper.updateById(model);
User user = userMapper.findUserById(model.getApplicantId());
if(user != null){
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getRepairOrderId());
HashMap<String, String> param = new HashMap<>();
param.put("module",repairOrder.getModuleCode());
param.put("model",repairOrder.getModuleNumber());
param.put("date", TimeUtil.dateToString(model.getAuditTime(), TimeConstant.DATETIME_NO_SS_FORMAT));
new SmsNotice().send(user.getMobile(),param, SmsConfig.getMaterialRequestApprovalNotice());
}
} }
} }

View File

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.query.MPJQueryWrapper;
import com.hcy.admin.AdminThreadLocal; import com.hcy.admin.AdminThreadLocal;
import com.hcy.admin.config.SmsConfig;
import com.hcy.admin.service.order.DistributionOrderExcel; import com.hcy.admin.service.order.DistributionOrderExcel;
import com.hcy.admin.service.order.IRepairOrderService; import com.hcy.admin.service.order.IRepairOrderService;
import com.hcy.admin.service.order.RepairOrderExcel; import com.hcy.admin.service.order.RepairOrderExcel;
@ -57,6 +58,7 @@ import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.plugin.notice.engine.SmsNotice;
import com.hcy.common.utils.ArrayUtil; import com.hcy.common.utils.ArrayUtil;
import com.hcy.common.utils.StringUtil; import com.hcy.common.utils.StringUtil;
import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.TimeUtil;
@ -1114,6 +1116,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
Assert.notNull(modelList, "数据不存在!"); Assert.notNull(modelList, "数据不存在!");
Map<String, String> distMap = dictDataMapper.selectList(new LambdaQueryWrapper<DictData>()
.eq(DictData::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(DictData::getTypeId, 46))
.stream()
.collect(Collectors.toMap(DictData::getValue, DictData::getName));
for (RepairOrder repairOrder : modelList) { for (RepairOrder repairOrder : modelList) {
//获取现维修员名称 //获取现维修员名称
@ -1161,7 +1169,30 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
repairOrderStepData.setRemark("原维修员:" + previousMaintenanceStaffName.getUsername() + ",现维修员:" + authAdmin1.getUsername()); repairOrderStepData.setRemark("原维修员:" + previousMaintenanceStaffName.getUsername() + ",现维修员:" + authAdmin1.getUsername());
repairOrderStepDataMapper.insert(repairOrderStepData); repairOrderStepDataMapper.insert(repairOrderStepData);
} }
repairOrder.setReceiverId(repairOrderParam.getReceiverId()); // 接单人id
Date date = new Date();
repairOrder.setReceiverTime(date);//receiverTime; // 接单时间
repairOrder.setOrderStatus(RepairOrderStatusEnum.AWAITING_REPAIR.getStatus()); // 工单状态为待维修
//拆机之前才能重新改派,否则需要去小程序操作退仓申请
if(repairOrder.getRepairNextStep() != RepairOrderStopEnum.DISMANTLE.getStatus()){
throw new OperateException("拆机之前才能重新改派,否则需要去小程序操作退仓申请!");
}
repairOrderMapper.updateById(repairOrder); repairOrderMapper.updateById(repairOrder);
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(Math.toIntExact(repairOrderParam.getReceiverId()));
if(systemAuthAdmin != null){
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectById(repairOrder.getParentRepairOrderId());
HashMap<String, String> param = new HashMap<>();
param.put("sendOrderTime",TimeUtil.dateToString(date, TimeConstant.DATETIME_NO_SS_FORMAT));
param.put("model", repairOrder.getModuleNumber());
param.put("power",distMap.get(repairOrder.getModulePower().toString()));
param.put("moduleCode",repairOrder.getModuleCode());
param.put("orderNo",parentRepairOrder.getOrderNo());
new SmsNotice().send(systemAuthAdmin.getPhone(),param, SmsConfig.getRepairOrderNotice());
}
} }
} }

View File

@ -351,9 +351,6 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi
.build(); .build();
//公共数据 //公共数据
OfferDetailEntity offerDetail = new OfferDetailEntity(); OfferDetailEntity offerDetail = new OfferDetailEntity();
//送货单
List<ReleaseRecordListExcel> releaseRecordListExcelList = new LinkedList<>();
Map<String,ReleaseRecordListExcel> releaseRecordListExcelMap = new HashMap<>();
int index = 1; int index = 1;
//功率字典 //功率字典
@ -426,108 +423,167 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi
// offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计 // offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计
// } // }
List<RepairOrder> repairOrders = repairOrderMapper.selectList(new LambdaQueryWrapper<RepairOrder>() List<RepairOrderShipping> repairOrderShippingList = repairOrderShippingMapper.selectList(new LambdaQueryWrapper<RepairOrderShipping>()
.in(RepairOrder::getShippingId, params.getIds()) .in(RepairOrderShipping::getId, params.getIds())
.orderByDesc(RepairOrder::getCreateTime)); .orderByAsc(RepairOrderShipping::getDeliveryTime));
for (RepairOrder item : repairOrders) { Map<String,Integer> cdqMap = new HashMap<>();
ReleaseRecordListExcel releaseRecordListExcel = null; Map<String,Integer> orderNoMap = new HashMap<>();
String key = item.getModuleNumber() + item.getModulePower(); Map<Long,List<ReleaseRecordListExcel>> repairOrderShippingMap = new LinkedHashMap<>();
if(releaseRecordListExcelMap.get(key) != null){ for (RepairOrderShipping reItem : repairOrderShippingList) {
releaseRecordListExcel = releaseRecordListExcelMap.get(key); //送货单
} List<ReleaseRecordListExcel> releaseRecordListExcelList = new LinkedList<>();
Map<String,ReleaseRecordListExcel> releaseRecordListExcelMap = new HashMap<>();
//客户名称 List<RepairOrder> repairOrders = repairOrderMapper.selectList(new LambdaQueryWrapper<RepairOrder>()
Client client = clientMapper.selectOne(new LambdaQueryWrapper<Client>() .eq(RepairOrder::getShippingId, reItem.getId())
.eq(Client::getId, item.getClientId())); .orderByDesc(RepairOrder::getCreateTime));
if(client != null){
offerDetail.setClientName(client.getClientName());
}
if(releaseRecordListExcel == null){ String orderNo = TimeUtil.dateToString(reItem.getDeliveryTime(), TimeConstant.ORDER_NO_TIME);
releaseRecordListExcel = new ReleaseRecordListExcel(); Integer orderNOIndex = orderNoMap.get(orderNo);
//序号 if(orderNOIndex == null){
releaseRecordListExcel.setIndex(index); orderNoMap.put(orderNo,1);
//单位 orderNo = orderNo + "00001";
releaseRecordListExcel.setUnit("PCS");
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo());
//型号
releaseRecordListExcel.setModuleNumber(item.getModuleNumber());
//功率
releaseRecordListExcel.setPower(distMap.get(item.getModulePower().toString()));
//订单数量
releaseRecordListExcel.setOrderAmount(1);
//本次交货数量
releaseRecordListExcel.setTheQuantityShipped(1);
//发货记录
RepairOrderShipping repairOrderShipping = repairOrderShippingMapper.selectOne(new LambdaQueryWrapper<RepairOrderShipping>()
.eq(RepairOrderShipping::getId, item.getShippingId()));
//累计交货数量
releaseRecordListExcel.setAccumulativeQuantityShipped(repairOrderShipping.getAccumulativeQuantityShipped());
//未交数量
releaseRecordListExcel.setUndeliveredQuantity(repairOrderShipping.getUndeliveredQuantity());
//维修结论
if(item.getMaintenanceResult() != null){
String result;
if(item.getMaintenanceResult() == 0){
result = "报废";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc(),1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc(),1);
}
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
releaseRecordListExcel.setRemark(1 + "台");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc(),1);
}
//送货日期
releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(repairOrderShipping.getDeliveryTime(), TimeConstant.DATE_FORMAT));
releaseRecordListExcelList.add(releaseRecordListExcel);
releaseRecordListExcelMap.put(key,releaseRecordListExcel);
index++; // 序号累计
}else{ }else{
releaseRecordListExcel.setOrderAmount(releaseRecordListExcel.getOrderAmount() + 1); int newIndex = orderNOIndex + 1;
releaseRecordListExcel.setTheQuantityShipped(releaseRecordListExcel.getTheQuantityShipped() + 1); int length = String.valueOf(newIndex).length();
if(item.getMaintenanceResult() != null){ StringBuilder newOrderNo = new StringBuilder(String.valueOf(newIndex));
String result; if (length < 5) {
if(item.getMaintenanceResult() == 0){ for (int i = 0; i < 5 - length; i++) {
result = "报废"; newOrderNo.insert(0, "0");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) + 1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) + 1);
}
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
releaseRecordListExcel.setRemark(1 + "台");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) + 1);
}
StringBuilder builder = new StringBuilder();
for (String flag : releaseRecordListExcel.getRemarkMap().keySet()) {
if(RepairOrderStatusEnum.SCRAP.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台报废" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台报废");
}else if(RepairOrderStatusEnum.OK.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台OK" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台OK");
}else if(RepairOrderStatusEnum.EMPTY.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台");
} }
} }
releaseRecordListExcel.setRemark(builder.toString()); orderNoMap.put(orderNo,newIndex);
orderNo = orderNo + newOrderNo;
} }
offerDetail.setTotalQty(offerDetail.getTotalQty() + 1); // 合计
for (RepairOrder item : repairOrders) {
ReleaseRecordListExcel releaseRecordListExcel = null;
String key = item.getModuleNumber() + item.getModulePower();
if(releaseRecordListExcelMap.get(key) != null){
releaseRecordListExcel = releaseRecordListExcelMap.get(key);
}
//客户名称
Client client = clientMapper.selectOne(new LambdaQueryWrapper<Client>()
.eq(Client::getId, item.getClientId()));
if(client != null){
offerDetail.setClientName(client.getClientName());
}
if(releaseRecordListExcel == null){
releaseRecordListExcel = new ReleaseRecordListExcel();
//序号
releaseRecordListExcel.setIndex(index);
//单位
releaseRecordListExcel.setUnit("PCS");
//工单编号
releaseRecordListExcel.setOrderNo(orderNo);
//型号
releaseRecordListExcel.setModuleNumber(item.getModuleNumber());
//功率
releaseRecordListExcel.setPower(distMap.get(item.getModulePower().toString()));
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
//查询同型号和规格的模块数量
Integer count = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getParentRepairOrderId,parentRepairOrder.getId())
.eq(RepairOrder::getModuleNumber, item.getModuleNumber())
.eq(RepairOrder::getModulePower, item.getModulePower()));
//订单数量
releaseRecordListExcel.setOrderAmount(count);
//单次送货批次有多少同型号和同规格的数量
Integer count1 = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getShippingId, reItem.getId())
.eq(RepairOrder::getParentRepairOrderId, parentRepairOrder.getId())
.eq(RepairOrder::getModuleNumber, item.getModuleNumber())
.eq(RepairOrder::getModulePower, item.getModulePower()));
//本次交货数量
releaseRecordListExcel.setTheQuantityShipped(count1);
//累计交货数量
Integer accumulativeQuantity = cdqMap.get(key);
if(accumulativeQuantity != null){
int num = accumulativeQuantity + 1;
releaseRecordListExcel.setAccumulativeQuantityShipped(num);
cdqMap.put(key,num);
//未交数量
releaseRecordListExcel.setUndeliveredQuantity(count - num);
}else{
cdqMap.put(key,1);
accumulativeQuantity = 1;
releaseRecordListExcel.setAccumulativeQuantityShipped(accumulativeQuantity);
//未交数量
releaseRecordListExcel.setUndeliveredQuantity(count - accumulativeQuantity);
}
//维修结论
if(item.getMaintenanceResult() != null){
String result;
if(item.getMaintenanceResult() == 0){
result = "报废";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc(),1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc(),1);
}
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
releaseRecordListExcel.setRemark(1 + "台");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc(),1);
}
//送货日期
releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(reItem.getDeliveryTime(), TimeConstant.DATETIME_FORMAT));
releaseRecordListExcelList.add(releaseRecordListExcel);
releaseRecordListExcelMap.put(key,releaseRecordListExcel);
index++; // 序号累计
}else{
releaseRecordListExcel.setOrderAmount(releaseRecordListExcel.getOrderAmount() + 1);
releaseRecordListExcel.setTheQuantityShipped(releaseRecordListExcel.getTheQuantityShipped() + 1);
if(item.getMaintenanceResult() != null){
String result;
if(item.getMaintenanceResult() == 0){
result = "报废";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) + 1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) + 1);
}
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
releaseRecordListExcel.setRemark(1 + "台");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) + 1);
}
StringBuilder builder = new StringBuilder();
for (String flag : releaseRecordListExcel.getRemarkMap().keySet()) {
if(RepairOrderStatusEnum.SCRAP.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台报废" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台报废");
}else if(RepairOrderStatusEnum.OK.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台OK" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台OK");
}else if(RepairOrderStatusEnum.EMPTY.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台");
}
}
releaseRecordListExcel.setRemark(builder.toString());
}
offerDetail.setTotalQty(offerDetail.getTotalQty() + 1); // 合计
}
repairOrderShippingMap.put(reItem.getId(),releaseRecordListExcelList);
}
List<ReleaseRecordListExcel> releaseRecordListExcelList = new LinkedList<>();
for (Long id : repairOrderShippingMap.keySet()) {
releaseRecordListExcelList.addAll(repairOrderShippingMap.get(id));
} }
WriteSheet sheet = EasyExcel.writerSheet(0).build(); WriteSheet sheet = EasyExcel.writerSheet(0).build();

View File

@ -6,4 +6,5 @@ public class TimeConstant {
public final static String DATETIME_NO_SS_FORMAT = "yyyy-MM-dd HH:mm"; public final static String DATETIME_NO_SS_FORMAT = "yyyy-MM-dd HH:mm";
public final static String DATE_FORMAT = "yyyy-MM-dd"; public final static String DATE_FORMAT = "yyyy-MM-dd";
public final static String MONTH_DAY_HOUR_MINUTE = "MM-dd HH:mm"; public final static String MONTH_DAY_HOUR_MINUTE = "MM-dd HH:mm";
public final static String ORDER_NO_TIME = "yyyyMMddHHmm";
} }

View File

@ -34,7 +34,7 @@ public class NoticeDriver {
// 短信通知 // 短信通知
Map<String, String> smsTemplate = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice()); Map<String, String> smsTemplate = ToolsUtil.jsonToMap(noticeSetting.getSmsNotice());
if (StringUtil.isNotEmpty(smsTemplate.get("status")) && Integer.parseInt(smsTemplate.get("status")) == 1) { if (StringUtil.isNotEmpty(smsTemplate.get("status")) && Integer.parseInt(smsTemplate.get("status")) == 1) {
(new SmsNotice()).send(config, params, smsTemplate, noticeSetting); //(new SmsNotice()).send(config, params, smsTemplate, noticeSetting);
} }
// 小程序订阅通知 todo // 小程序订阅通知 todo

View File

@ -14,70 +14,49 @@ public class SmsNotice {
/** /**
* *
* *
* @author fzr
* @param config
* @param params * @param params
* @param smsTemplate * @param configMap
* @param noticeSetting
*/ */
public void send(Map<String, String> config, Map<String, String> params, Map<String, String> smsTemplate, NoticeSetting noticeSetting) { public void send(String mobile, Map<String, String> params,Map<String,String> configMap) {
String mobile = config.getOrDefault("mobile", ""); // 判断手机号是否为空
String scene = config.getOrDefault("scene", ""); if (StringUtil.isNotEmpty(mobile)) {
new SmsDriver()
if (StringUtil.isNotEmpty(mobile) && StringUtil.isNotEmpty(scene)) {
(new SmsDriver())
.setMobile(mobile) .setMobile(mobile)
.setTemplateCode(smsTemplate.getOrDefault("templateId", "")) .setTemplateCode(configMap.getOrDefault("templateId", ""))
.setTemplateParam(this.getSmsParams(params, smsTemplate)) .setTemplateParam(this.getSmsParams(params, configMap.getOrDefault("smsTemplate","")))
.setSmsContent(this.getContent(params, smsTemplate))
.sendSms(); .sendSms();
// 1=业务通知, 2=验证码
if (noticeSetting.getType() == 2 && StringUtil.isNotNull(params.get("code"))) {
String code = params.get("code").toLowerCase();
RedisUtil.set(GlobalConfig.redisSmsCode+scene+":"+mobile, code);
}
} }
} }
/** /**
* *
* *
* @author fzr
* @param params * @param params
* @param smsTemplate * @param smsTemplate
* @return String * @return String
*/ */
private String getContent(Map<String, String> params, Map<String, String> smsTemplate) { private String getContent(Map<String, String> params, String smsTemplate) {
String content = smsTemplate.getOrDefault("content", "");
for (Map.Entry<String, String> entry : params.entrySet()) { for (Map.Entry<String, String> entry : params.entrySet()) {
String searchReplace = "\\$\\{" + entry.getKey() + "}"; String searchReplace = "\\$\\{" + entry.getKey() + "}";
content = content.replaceAll(searchReplace, entry.getValue()); smsTemplate = smsTemplate.replaceAll(searchReplace, entry.getValue());
} }
return content; return smsTemplate;
} }
/** /**
* *
* *
* @author fzr
* @return Map<String, String> * @return Map<String, String>
*/ */
private Map<String, String> getSmsParams(Map<String, String> params, Map<String, String> smsTemplate) { private Map<String, String> getSmsParams(Map<String, String> params, String smsTemplate) {
String engine = ConfigUtil.get("sms", "default", "");
if (!engine.equals("tencent")) {
return params;
}
// 获取内容变量 // 获取内容变量
List<String> arr = new LinkedList<>(); List<String> arr = new LinkedList<>();
String content = smsTemplate.getOrDefault("content", "");
for (Map.Entry<String, String> entry : params.entrySet()) { for (Map.Entry<String, String> entry : params.entrySet()) {
String search = "\\$\\{" + entry.getKey() + "}"; String search = "{" + entry.getKey() + "}";
if (content.indexOf(search) != 1 && !arr.contains(entry.getKey())) { if (smsTemplate.indexOf(search) != 1 && !arr.contains(entry.getKey())) {
arr.add(entry.getKey()); arr.add(entry.getKey());
} }
} }
// 获取变量名称 // 获取变量名称
@ -85,7 +64,7 @@ public class SmsNotice {
Map<Integer, String> arr2 = new LinkedHashMap<>(); Map<Integer, String> arr2 = new LinkedHashMap<>();
if (arr.size() > 0) { if (arr.size() > 0) {
for (String v: arr) { for (String v: arr) {
int k = content.indexOf(v); int k = smsTemplate.indexOf(v);
arrIndex.add(k); arrIndex.add(k);
arr2.put(k, v); arr2.put(k, v);
} }
@ -101,8 +80,8 @@ public class SmsNotice {
// 取变量对应值 // 取变量对应值
Map<String, String> arr4 = new LinkedHashMap<>(); Map<String, String> arr4 = new LinkedHashMap<>();
for (String v : arr3) { for (String v : arr3) {
if (StringUtil.isNotNull(params.get(v))) { if (StringUtil.isNotEmpty(params.get(v))) {
arr4.put(params.get(v), ""); arr4.put(v, params.get(v));
} }
} }

View File

@ -14,7 +14,7 @@ public class OrderUtil {
} else { } else {
int lastOrderNo = Integer.parseInt(orderNo.substring(8)); int lastOrderNo = Integer.parseInt(orderNo.substring(8));
int length = String.valueOf((lastOrderNo + 1)).length(); int length = String.valueOf((lastOrderNo + 1)).length();
StringBuilder newOrderNo = new StringBuilder(lastOrderNo + 1 + ""); StringBuilder newOrderNo = new StringBuilder(String.valueOf(lastOrderNo + 1));
//如果流水号长度小于6位则在前面补0 //如果流水号长度小于6位则在前面补0
if (length < 6) { if (length < 6) {