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);