From 58975b9bf544e3d3ffd793e8f35ba3945ca9dc0b Mon Sep 17 00:00:00 2001 From: TL <2445390702@qq.com> Date: Fri, 25 Jul 2025 12:15:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supplier/common/aop/MessageLogAspect.java | 210 +++++++++++++++--- .../dao/mapper/CoscoSupplierUserMapper.java | 1 + .../entity/CoscoAccessSupplier.java | 2 + .../impl/CoscoSupplierexitServiceImpl.java | 7 +- .../CoscoSupplierExitSupplierCategoryVo.java | 7 +- .../coscosupplier/vo/SendMessageVo.java | 16 ++ .../dao/mapper/CoscoSupplierUserMapper.xml | 11 + 7 files changed, 221 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/SendMessageVo.java diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/common/aop/MessageLogAspect.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/common/aop/MessageLogAspect.java index 6b25317..355a37a 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/common/aop/MessageLogAspect.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/common/aop/MessageLogAspect.java @@ -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 coscoMessageList = new ArrayList<>(); + List 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 coscoMessageList = new ArrayList<>(); - // 使用转换后的对象 + List sendMessageVoList = new ArrayList<>(); + List categoryNameList = new ArrayList<>(); + for (CoscoAccessCategory coscoAccessCategory : vo.getSupplierAndCategoryList()) { - String approveStr = ""; - if (CoscoType.APPROVE_STATUS_TG.equals(vo.getApproveStatus())) { - approveStr = "已通过"; - } else { - approveStr = "已驳回"; - } - String cont = coscoAccessCategory.getSupplierName() + ",准入" + - vo.getOrgName() + "单位的" + - coscoAccessCategory.getCategoryName() + "品类," + approveStr; - coscoMessageList.add(coscoMessageData(coscoAccessCategory.getSupplierId(), cont, messageType)); + categoryNameList.add(coscoAccessCategory.getCategoryName()); } + String approveStr = ""; + if (CoscoType.APPROVE_STATUS_TG.equals(vo.getApproveStatus())) { + approveStr = "已通过"; + } else { + approveStr = "已驳回"; + } + String categoryNameStr = String.join("、", categoryNameList); + String cont = vo.getSupplierAndCategoryList().get(0).getSupplierName() + ",准入" + + vo.getOrgName() + "单位的" + + categoryNameStr + "品类," + 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 coscoMessageList = new ArrayList<>(); - // 使用转换后的对象 - for(CoscoSupplierexitSupplierCategory coscoSupplierexitSupplierCategory : vo.getCoscoSupplierexitSupplierCategoryList()){ - String approveStr = ""; - if(CoscoType.APPROVE_STATUS_TG.equals(vo.getApproveStatus())){ - approveStr = "已通过"; - }else{ - approveStr = "已驳回"; - } - String cont = coscoSupplierexitSupplierCategory.getSupplierName()+","+ - vo.getOrgName()+"单位的"+ - coscoSupplierexitSupplierCategory.getCategoryName()+"品类退出,"+approveStr; - coscoMessageList.add(coscoMessageData(coscoSupplierexitSupplierCategory.getSupplierId(),cont,messageType)); + List sendMessageVoList = new ArrayList<>(); + + String approveStr = ""; + if(CoscoType.APPROVE_STATUS_TG.equals(vo.getApproveStatus())){ + approveStr = "已通过"; + }else{ + approveStr = "已驳回"; } + //退出的供应商 + List exitSupperlierId = new ArrayList<>(); + if(!ObjectUtils.isEmpty(vo.getCoscoAccessSupplier())){ + CoscoAccessSupplier exitSupperlier = vo.getCoscoAccessSupplier(); + exitSupperlierId = exitSupperlier.getIdList(); + } + + + //退出的品类 + Map> supplierCategoriesMap = vo.getCoscoSupplierexitSupplierCategoryList().stream() + .collect(Collectors.groupingBy(CoscoSupplierexitSupplierCategory::getSupplierId)); + for (Map.Entry> entry : supplierCategoriesMap.entrySet()) { + String supplierId = entry.getKey(); + List 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 coscoMessageList = new ArrayList<>(); + List 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 coscoMessageList = new ArrayList<>(); + List 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 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 templateSMSBaseResponse = smsFeignClient.sendSms(new String[]{phone}, "1180212", new String[]{message}, id, null); + + + } } \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/dao/mapper/CoscoSupplierUserMapper.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/dao/mapper/CoscoSupplierUserMapper.java index dcf6fca..1612f95 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/dao/mapper/CoscoSupplierUserMapper.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/dao/mapper/CoscoSupplierUserMapper.java @@ -22,6 +22,7 @@ public interface CoscoSupplierUserMapper { */ public CoscoSupplierUser selectCoscoSupplierUserById(String id); + public CoscoSupplierUser selectCoscoSupplierUserBySupplierId(String supplierId); /** * 通过userId查询用户信息 * @param userId diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/entity/CoscoAccessSupplier.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/entity/CoscoAccessSupplier.java index 2562a72..8716515 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/entity/CoscoAccessSupplier.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/entity/CoscoAccessSupplier.java @@ -22,6 +22,8 @@ public class CoscoAccessSupplier extends CoscoBaseEntity { //准入单位 private String orgId; + //准入单位 + private String orgName; //准入部门id private String deptId; diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/service/impl/CoscoSupplierexitServiceImpl.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/service/impl/CoscoSupplierexitServiceImpl.java index a836641..1cf3ae0 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/service/impl/CoscoSupplierexitServiceImpl.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/service/impl/CoscoSupplierexitServiceImpl.java @@ -240,7 +240,7 @@ public class CoscoSupplierexitServiceImpl implements ICoscoSupplierexitService { List deptSupplierId = coscoSupplierBaseMapper.selectCoscoSupplierBaseCountCategoryNum(coscoSupplierBase); if (!CollectionUtils.isEmpty(otherDeptSupplierId)) { - //供应商基本信息修改,如果任务下的供应商在别的部门有没品类了直接修改为未准入 + //供应商基本信息表修改,如果任务下的供应商在本单位有没品类了直接修改为未准入 coscoSupplierBase = new CoscoSupplierBase(); coscoSupplierBase.setIdList(otherDeptSupplierId); coscoSupplierBase.setAccessStatus(CoscoType.ACCESS_STATUS_WZR); @@ -249,13 +249,15 @@ public class CoscoSupplierexitServiceImpl implements ICoscoSupplierexitService { if (!CollectionUtils.isEmpty(deptSupplierId)) { //准入供应商表状态修改,如果任务下的供应商在本单位下有没品类了直接修改为退出 - //修改准入供应商关联表状态 CoscoAccessSupplier coscoAccessSupplier = new CoscoAccessSupplier(); coscoAccessSupplier.setIdList(deptSupplierId); coscoAccessSupplier.setOrgId(coscoSupplierexit.getOrgId()); coscoAccessSupplier.setAccessStatus(CoscoType.ACCESS_STATUS_TC); coscoAccessSupplier.setSupplierexitId(coscoSupplierexit.getId());//退出任务表id coscoAccessSupplierMapper.batchUpdateCoscoAccessSupplierIdAndDeptId(coscoAccessSupplier); + + //所有退出的供应商发给消息 + coscoSupplierExitSupplierCategoryVo.setCoscoAccessSupplier(coscoAccessSupplier); } @@ -264,7 +266,6 @@ public class CoscoSupplierexitServiceImpl implements ICoscoSupplierexitService { coscoSupplierExitSupplierCategoryVo.setCoscoSupplierexitSupplierCategoryList(categoryList); //审批状态 coscoSupplierExitSupplierCategoryVo.setApproveStatus(coscoSupplierexit.getApproveStatus()); - //查询单位名称,推送消息给该单位 coscoSupplierExitSupplierCategoryVo.setOrgName(orgService.getOrgInfo(coscoSupplierexit.getOrgId()).getOrgName()); return coscoSupplierExitSupplierCategoryVo; diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/CoscoSupplierExitSupplierCategoryVo.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/CoscoSupplierExitSupplierCategoryVo.java index 228b810..a2585c2 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/CoscoSupplierExitSupplierCategoryVo.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/CoscoSupplierExitSupplierCategoryVo.java @@ -1,5 +1,6 @@ package com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo; +import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoAccessSupplier; import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoSupplierexitSupplierCategory; import lombok.Data; @@ -9,10 +10,14 @@ import java.util.List; public class CoscoSupplierExitSupplierCategoryVo { /** - * 供应商id集合 + * 供应商退出的品类集合 */ List coscoSupplierexitSupplierCategoryList; + /** + * 本单位退出的供应商 + */ + CoscoAccessSupplier coscoAccessSupplier; /** * 审批状态 */ diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/SendMessageVo.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/SendMessageVo.java new file mode 100644 index 0000000..c401a2b --- /dev/null +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscosupplier/vo/SendMessageVo.java @@ -0,0 +1,16 @@ +package com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo; + +import lombok.Data; + +/** + * 短信实体封装 + */ +@Data +public class SendMessageVo { + + private String phone; + + private String message; + + private String id; +} diff --git a/src/main/resources/com/chinaunicom/zyhy/ebtp/supplier/base/dao/mapper/CoscoSupplierUserMapper.xml b/src/main/resources/com/chinaunicom/zyhy/ebtp/supplier/base/dao/mapper/CoscoSupplierUserMapper.xml index a49a801..aa4765d 100644 --- a/src/main/resources/com/chinaunicom/zyhy/ebtp/supplier/base/dao/mapper/CoscoSupplierUserMapper.xml +++ b/src/main/resources/com/chinaunicom/zyhy/ebtp/supplier/base/dao/mapper/CoscoSupplierUserMapper.xml @@ -118,6 +118,17 @@ order by create_time desc + +