|
@@ -1,5 +1,6 @@
|
|
|
package com.jeeplus.test.cw.projectRecords.service;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
@@ -18,11 +19,21 @@ import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
import com.jeeplus.sys.utils.Global;
|
|
|
import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
+import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
|
|
|
+import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
|
|
|
+import com.jeeplus.test.cw.contractRegistration.mapper.ContractInfoMapper;
|
|
|
+import com.jeeplus.test.cw.projectRecords.domain.CwProjectClientContact;
|
|
|
import com.jeeplus.test.cw.projectRecords.domain.CwProjectRecords;
|
|
|
+import com.jeeplus.test.cw.projectRecords.mapper.CwProjectClientContactMapper;
|
|
|
import com.jeeplus.test.cw.projectRecords.mapper.CwProjectRecordsMapper;
|
|
|
+import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectClientContactDTO;
|
|
|
import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectClientInfoDTO;
|
|
|
import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
|
+import com.jeeplus.test.cw.projectRecords.service.mapstruct.CwProjectClientContactWrapper;
|
|
|
import com.jeeplus.test.cw.projectRecords.service.mapstruct.CwProjectRecordsWrapper;
|
|
|
+import com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientContact;
|
|
|
+import com.jeeplus.test.cw.workClientInfo.service.CwWorkClientContactService;
|
|
|
+import com.jeeplus.test.cw.workClientInfo.service.CwWorkClientService;
|
|
|
import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientBaseDTO;
|
|
|
import com.jeeplus.test.mould.service.SerialnumTplService;
|
|
|
import com.jeeplus.test.oss.domain.WorkAttachment;
|
|
@@ -56,11 +67,18 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
private CwProjectRecordsMapper cwProjectRecordsMapper;
|
|
|
@Resource
|
|
|
private OssService ossService;
|
|
|
-
|
|
|
+ @Resource
|
|
|
+ private CwProjectClientContactMapper cwProjectClientContactMapper;
|
|
|
+ @Resource
|
|
|
+ private CwProjectClientContactService cwProjectClientContactService;
|
|
|
+ @Resource
|
|
|
+ private ContractInfoMapper contractInfoMapper;
|
|
|
@Resource
|
|
|
private SerialnumTplService serialnumTplService;
|
|
|
@Resource
|
|
|
private UserMapper userMapper;
|
|
|
+ @Resource
|
|
|
+ private CwWorkClientContactService cwWorkClientContactService;
|
|
|
|
|
|
/**
|
|
|
* 差选项目列表信息
|
|
@@ -125,6 +143,23 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
//项目编号生成
|
|
|
String serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), CwProjectRecordsDTO.BIZ_CODE);
|
|
|
cwProjectRecordsDTO.setProjectNumber(serialNum);
|
|
|
+ } else {
|
|
|
+ //把原项目关联的客户联系人从客户表删除
|
|
|
+ CwProjectRecords project = this.getById(cwProjectRecordsDTO.getId());
|
|
|
+ if (ObjectUtil.isNotEmpty(project)) {
|
|
|
+ if (StringUtils.isNotBlank(project.getContractId())) {
|
|
|
+ ContractInfo contractInfo = contractInfoMapper.selectById(project.getContractId());
|
|
|
+ if (ObjectUtil.isNotEmpty(contractInfo)) {
|
|
|
+ if (StringUtils.isNotBlank(contractInfo.getClientContacts())) {
|
|
|
+ // 删除客户的联系人表中与此项目关联的联系人
|
|
|
+ cwWorkClientContactService.remove(new QueryWrapper<CwWorkClientContact>().lambda()
|
|
|
+ .eq(CwWorkClientContact::getClientId,contractInfo.getClientContacts())
|
|
|
+ .eq(CwWorkClientContact::getProjectId,cwProjectRecordsDTO.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
CwProjectRecords cwProjectRecords = CwProjectRecordsWrapper.INSTANCE.toEntity(cwProjectRecordsDTO);
|
|
|
if (ObjectUtil.isNotEmpty(cwProjectRecords)) {
|
|
@@ -153,6 +188,83 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
//对数据进行批量插入
|
|
|
cwProjectRecordsMapper.insertProjectClientInfoList(cwProjectClientInfoDTOList);
|
|
|
}
|
|
|
+
|
|
|
+ // 客户联系人
|
|
|
+ if (CollectionUtil.isNotEmpty(cwProjectRecordsDTO.getCwProjectClientContactDTOList())) {
|
|
|
+ if (CollectionUtil.isNotEmpty(cwProjectRecordsDTO.getCwProjectClientContactDTOList())) {
|
|
|
+ // 1. 查看数据是否有合同信息,
|
|
|
+ // 如果有合同信息,有委托人,则把所有的联系人client_id替换为合同的委托人id
|
|
|
+ // 如果有合同信息,但是没有委托人,则把所有的联系人client_id置空""
|
|
|
+ // 如果有合同信息id,但是并没有通过合同信息id查询到数据,则把所有的联系人client_id置空""
|
|
|
+ // 如果没有合同信息,则把所有的联系人client_id置空""
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecords.getContractId())) {
|
|
|
+ ContractInfo contractInfo = contractInfoMapper.selectById(cwProjectRecords.getContractId());
|
|
|
+ if (ObjectUtil.isNotEmpty(contractInfo)){
|
|
|
+ if (StringUtils.isNotBlank(contractInfo.getClientContacts())) {
|
|
|
+ cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().forEach(item->{
|
|
|
+ item.setClientId(contractInfo.getClientContacts());
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().forEach(item->{
|
|
|
+ item.setClientId("");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().forEach(item->{
|
|
|
+ item.setClientId("");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().forEach(item->{
|
|
|
+ item.setClientId("");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 2. 联系人的添加或修改
|
|
|
+ List<String> liveIds = cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().filter(item -> {
|
|
|
+ if (StringUtils.isNotBlank(item.getId())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(CwProjectClientContactDTO::getId).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isNotEmpty(liveIds)) {
|
|
|
+ cwProjectClientContactMapper.delete(new QueryWrapper<CwProjectClientContact>().lambda().notIn(CwProjectClientContact::getId, liveIds).eq(CwProjectClientContact::getProjectId,cwProjectRecords.getId()));
|
|
|
+ } else {
|
|
|
+ cwProjectClientContactMapper.delete(new QueryWrapper<CwProjectClientContact>().lambda().eq(CwProjectClientContact::getProjectId,cwProjectRecords.getId()));
|
|
|
+ }
|
|
|
+ List<CwProjectClientContact> updateBatchById = new ArrayList<>();
|
|
|
+ List<CwProjectClientContact> insertBatchById = new ArrayList<>();
|
|
|
+ List<CwWorkClientContact> saveBatchClient = new ArrayList<>();
|
|
|
+ cwProjectRecordsDTO.getCwProjectClientContactDTOList().stream().forEach(item->{
|
|
|
+ item.setProjectId(cwProjectRecords.getId());
|
|
|
+ if (StringUtils.isNotBlank(item.getId())){
|
|
|
+ // 有id进行修改操作
|
|
|
+ updateBatchById.add(CwProjectClientContactWrapper.INSTANCE.toEntity(item));
|
|
|
+ }else{
|
|
|
+ // 无id进行新增操作
|
|
|
+ insertBatchById.add(CwProjectClientContactWrapper.INSTANCE.toEntity(item));
|
|
|
+ }
|
|
|
+ CwWorkClientContact cwWorkClientContact = new CwWorkClientContact();
|
|
|
+ BeanUtil.copyProperties(item, cwWorkClientContact);
|
|
|
+ cwWorkClientContact.setProjectId(cwProjectRecords.getId());
|
|
|
+ cwWorkClientContact.setId("");
|
|
|
+ saveBatchClient.add(cwWorkClientContact);
|
|
|
+ });
|
|
|
+ // 批量根据id修改数据
|
|
|
+ if (CollectionUtil.isNotEmpty(updateBatchById)){
|
|
|
+ cwProjectClientContactService.updateBatchById(updateBatchById);
|
|
|
+ }
|
|
|
+ // 批量新增数据
|
|
|
+ if (CollectionUtil.isNotEmpty(insertBatchById)){
|
|
|
+ cwProjectClientContactService.saveBatch(insertBatchById);
|
|
|
+ }
|
|
|
+ // 将数据添加到客户的联系人表中
|
|
|
+ if (CollectionUtil.isNotEmpty(saveBatchClient)){
|
|
|
+ cwWorkClientContactService.saveBatch(saveBatchClient);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cwProjectClientContactMapper.delete(new QueryWrapper<CwProjectClientContact>().lambda().eq(CwProjectClientContact::getProjectId,cwProjectRecords.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return cwProjectRecords.getId();
|
|
|
}
|