From efd2c3628f1c35e88e3821bf088f815d88705953 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 2 Jul 2024 15:17:17 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=8A=9F=E8=83=BD=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E6=88=90=E5=91=98-=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SafetyCenterSubitemContactsService.java | 6 ++ .../service/SafetyCenterSubitemService.java | 61 ++++++++++++++++--- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java index 67fb0da8..f7de7294 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemContactsService.java @@ -23,4 +23,10 @@ public class SafetyCenterSubitemContactsService extends ServiceImpl idList = list.stream().map(SafetyCenterSubitemContacts::getId).collect(Collectors.toList()); this.removeByIds(idList); } + public List listBySubitemId(String subitemId){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyCenterSubitemContacts::getSubitemId,subitemId); + return this.list(wrapper); + } + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java index 229ebff7..06d20cc2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/functionalsafetycenter/service/SafetyCenterSubitemService.java @@ -17,6 +17,7 @@ import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.functionalsafetycenter.mapper.SafetyCenterSubitemMapper; import com.jero.functionalsafetycenter.entity.SafetyCenterSubitem; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -26,6 +27,7 @@ import javax.annotation.Resource; *@date 2024-06-12 15:13 */ @Service +@Transactional(rollbackFor = Exception.class) public class SafetyCenterSubitemService extends ServiceImpl { @Resource private SafetyCenterService safetyCenterService; @@ -48,12 +50,34 @@ public class SafetyCenterSubitemService extends ServiceImpl contactsList = safetyCenterSubitem.getContactsList(); - if (!contactsList.isEmpty()){ - List collect = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); - if (collect.size() != contactsList.size()){ - throw new JeroBootException("企业联系人重复"); + if (contactsList.isEmpty()){ + throw new JeroBootException("企业联系人不能为空"); + } + List contactIdList = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (contactIdList.size() != contactsList.size()){ + throw new JeroBootException("企业联系人重复"); + } + //判断父级是否有所选企业和所选联系人 + Integer projectType = safetyCenter.getProjectType(); + if (SafetyCenterCommon.PROJECT_TYPE_3 != projectType){ + //判断企业 + String parentId = safetyCenter.getParentId(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId,parentId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId,companyId); + SafetyCenterSubitem parentCenterSubitem = this.getOne(wrapper); + if (parentCenterSubitem == null){ + throw new JeroBootException("该成员单位无法添加到当前项目"); + } + //判断联系人 + String parentCenterSubitemId = parentCenterSubitem.getId(); + List parentContactList = contactsService.listBySubitemId(parentCenterSubitemId); + List parentContactIdList = parentContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (!parentContactIdList.containsAll(contactIdList)) { + throw new JeroBootException("联系人无法添加到当前项目"); } } + //保存成员 this.save(safetyCenterSubitem); //保存成员单位联系人 String subitemId = safetyCenterSubitem.getId(); @@ -84,10 +108,31 @@ public class SafetyCenterSubitemService extends ServiceImpl contactsList = safetyCenterSubitem.getContactsList(); - if (!contactsList.isEmpty()){ - List collect = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); - if (collect.size() != contactsList.size()){ - throw new JeroBootException("企业联系人重复"); + if (contactsList.isEmpty()){ + throw new JeroBootException("企业联系人不能为空"); + } + List contactIdList = contactsList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (contactIdList.size() != contactsList.size()){ + throw new JeroBootException("企业联系人重复"); + } + //判断父级是否有所选企业和所选联系人 + Integer projectType = safetyCenter.getProjectType(); + if (SafetyCenterCommon.PROJECT_TYPE_3 != projectType){ + //判断企业 + String parentId = safetyCenter.getParentId(); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SafetyCenterSubitem::getProjectId,parentId); + wrapper1.eq(SafetyCenterSubitem::getCompanyId,companyId); + SafetyCenterSubitem parentCenterSubitem = this.getOne(wrapper); + if (parentCenterSubitem == null){ + throw new JeroBootException("该成员单位无法添加到当前项目"); + } + //判断联系人 + String parentCenterSubitemId = parentCenterSubitem.getId(); + List parentContactList = contactsService.listBySubitemId(parentCenterSubitemId); + List parentContactIdList = parentContactList.stream().map(SafetyCenterSubitemContacts::getContactsId).distinct().collect(Collectors.toList()); + if (!parentContactIdList.containsAll(contactIdList)) { + throw new JeroBootException("联系人无法添加到当前项目"); } } this.updateById(safetyCenterSubitem);