@ -1,5 +1,8 @@
package com.chinaunicom.zyhy.ebtp.supplier.common.aop ;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse ;
import com.chinaunicom.mall.ebtp.common.sms.client.SmsFeignClient ;
import com.chinaunicom.mall.ebtp.common.sms.entity.SmsSendResponse ;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils ;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.CoscoCategoryConstant ;
import com.chinaunicom.zyhy.ebtp.supplier.common.CoscoDateUtils ;
@ -8,15 +11,14 @@ import com.chinaunicom.zyhy.ebtp.supplier.base.constant.MessageType;
import com.chinaunicom.zyhy.ebtp.supplier.coscoCategory.vo.BlackApproveVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.ApproveVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.NoTaskVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.dao.mapper.CoscoSupplierBaseMapper ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.dao.mapper.CoscoSupplierUserMapper ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoAccessCategory ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoAccessSupplier ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoMessage ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.* ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.service.ICoscoMessageService ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.CoscoSupplierAccessWorkVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.CoscoSupplierBaseVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.CoscoSupplierExitSupplierCategoryVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.UserItmeMessageVo ;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.* ;
import lombok.RequiredArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import org.aspectj.lang.ProceedingJoinPoint ;
@ -25,8 +27,11 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Component ;
import org.springframework.util.CollectionUtils ;
import org.springframework.util.ObjectUtils ;
import java.util.* ;
import java.util.stream.Collectors ;
@Aspect
@Component
@ -36,6 +41,13 @@ public class MessageLogAspect {
@Autowired
private ICoscoMessageService coscoMessageService ;
@Autowired
private SmsFeignClient smsFeignClient ;
@Autowired
private CoscoSupplierUserMapper coscoSupplierUserMapper ;
@Autowired
private CoscoSupplierBaseMapper coscoSupplierBaseMapper ;
// 修改点1: 切点定义中添加参数绑定
@ -54,7 +66,7 @@ public class MessageLogAspect {
if ( MessageType . MESSAGETYPE_GYSZR . equals ( messageType ) ) { //供应商准入审批处理
pustMessageSupplierWork ( result , messageType ) ;
}
if ( MessageType . MESSAGETYPE_GYSPLZR . equals ( messageType ) ) { //供应商准入审批处理
if ( MessageType . MESSAGETYPE_GYSPLZR . equals ( messageType ) ) { //供应商品类 准入审批处理
pustMessageSupplierCategoryWork ( result , messageType ) ;
}
if ( MessageType . MESSAGETYPE_GYSJY . equals ( messageType ) ) {
@ -199,6 +211,7 @@ public class MessageLogAspect {
if ( result instanceof CoscoSupplierAccessWorkVo ) {
CoscoSupplierAccessWorkVo vo = ( CoscoSupplierAccessWorkVo ) result ;
List < CoscoMessage > coscoMessageList = new ArrayList < > ( ) ;
List < SendMessageVo > sendMessageVoList = new ArrayList < > ( ) ;
// 使用转换后的对象
for ( CoscoAccessSupplier coscoAccessSupplier : vo . getSupplierList ( ) ) {
String approveStr = " " ;
@ -209,34 +222,66 @@ public class MessageLogAspect {
}
String cont = coscoAccessSupplier . getSupplierName ( ) + " ,准入 " + vo . getOrgName ( ) + " 单位, " + approveStr ;
coscoMessageList . add ( coscoMessageData ( coscoAccessSupplier . getSupplierId ( ) , cont , messageType ) ) ;
//只有审批通过时才发送短信
if ( CoscoType . APPROVE_STATUS_TG . equals ( vo . getApproveStatus ( ) ) ) {
//短信实体封装
SendMessageVo sendMessageVo = new SendMessageVo ( ) ;
sendMessageVo . setPhone ( getSupplierUser ( coscoAccessSupplier . getSupplierId ( ) ) ) ;
sendMessageVo . setMessage ( cont ) ;
sendMessageVo . setId ( coscoAccessSupplier . getSupplierId ( ) ) ;
sendMessageVoList . add ( sendMessageVo ) ;
}
}
//保存消息内容
pustMessage ( coscoMessageList ) ;
//发送短信
//sendMessageList(sendMessageVoList);
} else {
throw new IllegalArgumentException ( " 返回对象类型不匹配 " ) ;
}
}
/**
* 供应商品类准入审批处里
* 供应商品类准入审批处里(原来品类准入时是多选供应商,改为单选供应商,所以每次准入只会有一个供应商)
*/
public void pustMessageSupplierCategoryWork ( Object result , String messageType ) {
if ( result instanceof CoscoSupplierAccessWorkVo ) {
CoscoSupplierAccessWorkVo vo = ( CoscoSupplierAccessWorkVo ) result ;
List < CoscoMessage > coscoMessageList = new ArrayList < > ( ) ;
// 使用转换后的对象
List < SendMessageVo > sendMessageVoList = new ArrayList < > ( ) ;
List < String > categoryNameList = new ArrayList < > ( ) ;
for ( CoscoAccessCategory coscoAccessCategory : vo . getSupplierAndCategoryList ( ) ) {
categoryNameList . add ( coscoAccessCategory . getCategoryName ( ) ) ;
}
String approveStr = " " ;
if ( CoscoType . APPROVE_STATUS_TG . equals ( vo . getApproveStatus ( ) ) ) {
approveStr = " 已通过 " ;
} else {
approveStr = " 已驳回 " ;
}
String cont = coscoAccessCategory . getSupplierName ( ) + " ,准入 " +
String categoryNameStr = String . join ( " 、 " , categoryNameList ) ;
String cont = vo . getSupplierAndCategoryList ( ) . get ( 0 ) . getSupplierName ( ) + " ,准入 " +
vo . getOrgName ( ) + " 单位的 " +
coscoAccessCategory . getC ategoryName( ) + " 品类, " + approveStr ;
coscoMessageList . add ( coscoMessageData ( coscoAccessCategory . getSupplierId ( ) , cont , messageType ) ) ;
c ategoryNameStr + " 品类, " + approveStr ;
coscoMessageList . add ( coscoMessageData ( vo . getSupplierAndCategoryList ( ) . get ( 0 ) . getSupplierId ( ) , cont , messageType ) ) ;
//审批通过才发短信
if ( CoscoType . APPROVE_STATUS_TG . equals ( vo . getApproveStatus ( ) ) ) {
//短信实体封装
SendMessageVo sendMessageVo = new SendMessageVo ( ) ;
sendMessageVo . setPhone ( getSupplierUser ( vo . getSupplierAndCategoryList ( ) . get ( 0 ) . getSupplierId ( ) ) ) ;
sendMessageVo . setMessage ( cont ) ;
sendMessageVo . setId ( vo . getSupplierAndCategoryList ( ) . get ( 0 ) . getSupplierId ( ) ) ;
sendMessageVoList . add ( sendMessageVo ) ;
}
//保存消息
pustMessage ( coscoMessageList ) ;
//发送短信
//sendMessageList(sendMessageVoList);
} else {
throw new IllegalArgumentException ( " 返回对象类型不匹配 " ) ;
}
@ -249,20 +294,61 @@ public class MessageLogAspect {
if ( result instanceof CoscoSupplierExitSupplierCategoryVo ) {
CoscoSupplierExitSupplierCategoryVo vo = ( CoscoSupplierExitSupplierCategoryVo ) result ;
List < CoscoMessage > coscoMessageList = new ArrayList < > ( ) ;
// 使用转换后的对象
for ( CoscoSupplierexitSupplierCategory coscoSupplierexitSupplierCategory : vo . getCoscoSupplierexitSupplierCategoryList ( ) ) {
List < SendMessageVo > sendMessageVoList = new ArrayList < > ( ) ;
String approveStr = " " ;
if ( CoscoType . APPROVE_STATUS_TG . equals ( vo . getApproveStatus ( ) ) ) {
approveStr = " 已通过 " ;
} else {
approveStr = " 已驳回 " ;
}
String cont = coscoSupplierexitSupplierCategory . getSupplierName ( ) + " , " +
vo . getOrgName ( ) + " 单位的 " +
coscoSupplierexitSupplierCategory . getCategoryName ( ) + " 品类退出, " + approveStr ;
c oscoMessageList . add ( coscoMessageData ( cosco SupplierexitSupplierCategory . get SupplierId ( ) , cont , messageType ) ) ;
//退出的供应商
List < String > exitSupperlierId = new ArrayList < > ( ) ;
if ( ! ObjectUtils . isEmpty ( vo . getCoscoAccessSupplier ( ) ) ) {
C oscoAccess Supplier exitSupper lier = vo . getCoscoAccess Supplier( ) ;
exitSupperlierId = exitSupperlier . getIdList ( ) ;
}
//退出的品类
Map < String , List < CoscoSupplierexitSupplierCategory > > supplierCategoriesMap = vo . getCoscoSupplierexitSupplierCategoryList ( ) . stream ( )
. collect ( Collectors . groupingBy ( CoscoSupplierexitSupplierCategory : : getSupplierId ) ) ;
for ( Map . Entry < String , List < CoscoSupplierexitSupplierCategory > > entry : supplierCategoriesMap . entrySet ( ) ) {
String supplierId = entry . getKey ( ) ;
List < CoscoSupplierexitSupplierCategory > categories = entry . getValue ( ) ;
// 获取供应商名称(取第一条记录的即可,因为同一供应商名称相同)
String supplierName = categories . get ( 0 ) . getSupplierName ( ) ;
// 拼接品类名称,用顿号分隔
String categoryNames = categories . stream ( )
. map ( CoscoSupplierexitSupplierCategory : : getCategoryName )
. collect ( Collectors . joining ( " 、 " ) ) ;
String cont = supplierName + " , " + vo . getOrgName ( ) + " 单位的 " +
categoryNames + " 品类退出, " + approveStr ;
if ( ! CollectionUtils . isEmpty ( exitSupperlierId ) & & exitSupperlierId . contains ( supplierId ) ) {
cont + = " , " + supplierName + " 已被, " + vo . getOrgName ( ) + " 单位退出 " ;
}
coscoMessageList . add ( coscoMessageData ( supplierId , cont , messageType ) ) ;
if ( CoscoType . APPROVE_STATUS_TG . equals ( vo . getApproveStatus ( ) ) ) {
// 短信实体封装
SendMessageVo sendMessageVo = new SendMessageVo ( ) ;
sendMessageVo . setPhone ( getSupplierUser ( supplierId ) ) ;
sendMessageVo . setMessage ( cont ) ;
sendMessageVo . setId ( supplierId ) ;
sendMessageVoList . add ( sendMessageVo ) ;
}
}
//保存消息
pustMessage ( coscoMessageList ) ;
//发送短信
//sendMessageList(sendMessageVoList);
} else {
throw new IllegalArgumentException ( " 返回对象类型不匹配 " ) ;
}
@ -297,6 +383,7 @@ public class MessageLogAspect {
if ( result instanceof CoscoSupplierBaseVo ) {
CoscoSupplierBaseVo vo = ( CoscoSupplierBaseVo ) result ;
List < CoscoMessage > coscoMessageList = new ArrayList < > ( ) ;
List < SendMessageVo > sendMessageVoList = new ArrayList < > ( ) ;
String supplierCont = " 您的企业营业执照将于 " + vo . getEndTime ( ) + " 日到期,请及时更新 " ;
if ( vo . getDaysRemaining ( ) = = 0 ) { //已经过期
supplierCont = " 您的企业营业执照已经到期,您的准入单位和准入品类全撤销移除 " ;
@ -311,8 +398,17 @@ public class MessageLogAspect {
}
coscoMessageList . add ( coscoMessageData ( coscoAccessSupplier . getDeptId ( ) , deptCont , messageType ) ) ;
}
//短信实体封装
SendMessageVo sendMessageVo = new SendMessageVo ( ) ;
sendMessageVo . setPhone ( getSupplierUser ( vo . getSupplierId ( ) ) ) ;
sendMessageVo . setMessage ( supplierCont ) ;
sendMessageVo . setId ( vo . getSupplierId ( ) ) ;
sendMessageVoList . add ( sendMessageVo ) ;
//保存消息
pustMessage ( coscoMessageList ) ;
//发送短信
//sendMessageList(sendMessageVoList);
} else {
throw new IllegalArgumentException ( " 返回对象类型不匹配 " ) ;
}
@ -325,6 +421,7 @@ public class MessageLogAspect {
if ( result instanceof CoscoSupplierBaseVo ) {
CoscoSupplierBaseVo vo = ( CoscoSupplierBaseVo ) result ;
List < CoscoMessage > coscoMessageList = new ArrayList < > ( ) ;
List < SendMessageVo > sendMessageVoList = new ArrayList < > ( ) ;
String supplierCont = " 您的企业 " + vo . getQualificationsName ( ) + " 资质将于 " + vo . getEndTime ( ) + " 日到期,请及时更新 " ;
if ( vo . getDaysRemaining ( ) = = 0 ) { //已经过期
supplierCont = " 您的企业 " + vo . getQualificationsName ( ) + " 资质已经到期,请及时更新 " ;
@ -339,7 +436,17 @@ public class MessageLogAspect {
coscoMessageList . add ( coscoMessageData ( coscoAccessSupplier . getDeptId ( ) , deptCont , messageType ) ) ;
}
//短信实体封装
SendMessageVo sendMessageVo = new SendMessageVo ( ) ;
sendMessageVo . setPhone ( getSupplierUser ( vo . getSupplierId ( ) ) ) ;
sendMessageVo . setMessage ( supplierCont ) ;
sendMessageVo . setId ( vo . getSupplierId ( ) ) ;
sendMessageVoList . add ( sendMessageVo ) ;
//消息保存
pustMessage ( coscoMessageList ) ;
//发送短信
//sendMessageList(sendMessageVoList);
} else {
throw new IllegalArgumentException ( " 返回对象类型不匹配 " ) ;
}
@ -384,6 +491,29 @@ public class MessageLogAspect {
return coscoMessage ;
}
/**
* 查询供应商的主联系人
* @param supplierId
*/
public String getSupplierUser ( String supplierId ) {
CoscoSupplierUser coscoSupplierUser = coscoSupplierUserMapper . selectCoscoSupplierUserBySupplierId ( supplierId ) ;
return coscoSupplierUser . getContactsPhone ( ) ;
}
/**
* 查询供应商名称详情
* @param supplierId
*/
public String getSupplierName ( String supplierId ) {
CoscoSupplierBase coscoSupplierBase = coscoSupplierBaseMapper . selectCoscoSupplierBaseById ( supplierId ) ;
//如果是境外用英文名称, 否则都是用name
if ( CoscoType . SUPPLIER_TYPE_OVS . equals ( coscoSupplierBase . getSupplierType ( ) ) ) {
return coscoSupplierBase . getNameEn ( ) ;
} else {
return coscoSupplierBase . getName ( ) ;
}
}
/**
* 保存消息数据
@ -392,5 +522,27 @@ public class MessageLogAspect {
return coscoMessageService . pustMessage ( coscoMessageList ) ;
}
/**
* 发送短信
*/
public void sendMessageList ( List < SendMessageVo > sendMessageVoList ) {
for ( SendMessageVo sendMessageVo : sendMessageVoList ) {
sendMessage ( sendMessageVo . getPhone ( ) , sendMessageVo . getMessage ( ) , sendMessageVo . getId ( ) ) ;
}
}
/**
* 发送短信
* @param phone 需要发送的手机号
* @param message 需要发送的内容
* @param id 主键
*/
public void sendMessage ( String phone , String message , String id ) {
// 发送短信 [中远海运] 您的验证码是:" + code + ", 请在5分钟内输入。
//String message = "您的验证码是:" + code + ", 请在5分钟内输入。";
BaseResponse < SmsSendResponse . TemplateSMS > templateSMSBaseResponse = smsFeignClient . sendSms ( new String [ ] { phone } , " 1180212 " , new String [ ] { message } , id , null ) ;
}
}