|
|
@@ -1,10 +1,12 @@
|
|
|
package com.ydtech.modules.fnc.service.contract.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
+import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
|
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.base.model.vo.PageVo;
|
|
|
import com.ydtech.modules.fnc.dao.contract.ContractMapper;
|
|
|
@@ -32,9 +34,11 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -96,17 +100,20 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
|
|
|
} else {
|
|
|
ContractEntity contractEntity = new ContractEntity();
|
|
|
BeanUtils.copyProperties(contractDto, contractEntity);
|
|
|
- String contractCode = this.generateCode(contractDto);
|
|
|
- contractEntity.setContractCode(contractCode);
|
|
|
- //甲方名称
|
|
|
- String name = this.getNameInv(contractDto.getExternalCompaniesId());
|
|
|
- contractEntity.setExternalCompaniesName(name);
|
|
|
-
|
|
|
- //乙方名称
|
|
|
- String interName = this.getNameInv(contractDto.getInternalCompanyId());
|
|
|
- contractEntity.setInternalCompanyName(interName);
|
|
|
+ if(StringUtils.isNotEmpty(contractDto.getExternalCompaniesId())){
|
|
|
+ String contractCode = this.generateCode(contractDto);
|
|
|
+ contractEntity.setContractCode(contractCode);
|
|
|
+ //甲方名称
|
|
|
+ String name = this.getNameInv(contractDto.getExternalCompaniesId());
|
|
|
+ contractEntity.setExternalCompaniesName(name);
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotEmpty(contractDto.getInternalCompanyId())){
|
|
|
+ //乙方名称
|
|
|
+ String interName = this.getNameInv(contractDto.getInternalCompanyId());
|
|
|
+ contractEntity.setInternalCompanyName(interName);
|
|
|
+ }
|
|
|
baseMapper.updateById(contractEntity);
|
|
|
- if (!contractDto.getSupplierIdList().isEmpty()) {
|
|
|
+ if (contractDto.getSupplierIdList() !=null && !contractDto.getSupplierIdList().isEmpty()) {
|
|
|
contractSupplierService.saveAndUpdate(contractDto.getSupplierIdList(), contractEntity.getId());
|
|
|
}
|
|
|
|
|
|
@@ -300,6 +307,66 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 合同协议检查是否失效
|
|
|
+ *
|
|
|
+ * @param contractVo
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public HashMap<String, Object> checkCopyContract(ContractVo contractVo) {
|
|
|
+ int i =0;
|
|
|
+ HashMap<String, Object> resultMap = new HashMap<>();
|
|
|
+ // 检查当前合同状态是否为"0"
|
|
|
+ QueryWrapper<ContractEntity> contractQueryWrapper = new QueryWrapper<>();
|
|
|
+ contractQueryWrapper.eq("id", contractVo.getId());
|
|
|
+ List<ContractEntity> contracts = baseMapper.selectList(contractQueryWrapper);
|
|
|
+ if(!contracts.isEmpty()){
|
|
|
+ i=0;
|
|
|
+ }
|
|
|
+ // 检查是否有以当前合同为父合同的合同且状态为"0"
|
|
|
+ QueryWrapper<ContractEntity> parentContractQueryWrapper = new QueryWrapper<>();
|
|
|
+ parentContractQueryWrapper.eq("contract_status", "0").eq("parent_id", contractVo.getId());
|
|
|
+ List<ContractEntity> parentContracts = baseMapper.selectList(parentContractQueryWrapper);
|
|
|
+ if(!parentContracts.isEmpty()){
|
|
|
+ i=i+ parentContracts.size();
|
|
|
+ }
|
|
|
+ // 如果有以当前合同为父合同的合同且状态为"0",则设置failStatus为"1",否则为"0"
|
|
|
+ resultMap.put("failStatus", i);
|
|
|
+
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ContractDto> copyContractList(ContractVo contractVo) {
|
|
|
+ // 查询当前状态的合同
|
|
|
+ QueryWrapper<ContractEntity> contractQueryWrapper = new QueryWrapper<>();
|
|
|
+ contractQueryWrapper.eq("contract_status", "0").eq("id", contractVo.getId());
|
|
|
+ List<ContractEntity> currentContracts = baseMapper.selectList(contractQueryWrapper);
|
|
|
+
|
|
|
+ // 查询以其为父合同的合同
|
|
|
+ QueryWrapper<ContractEntity> parentContractQueryWrapper = new QueryWrapper<>();
|
|
|
+ parentContractQueryWrapper.eq("contract_status", "0").eq("parent_id", contractVo.getId());
|
|
|
+ List<ContractEntity> parentContracts = baseMapper.selectList(parentContractQueryWrapper);
|
|
|
+
|
|
|
+ // 根据业务逻辑处理查询结果(这里不合并列表)
|
|
|
+ // 假设我们需要检查是否有任何合同(当前或父合同)处于状态"0",并返回所有符合条件的合同的Dto列表
|
|
|
+ List<ContractDto> contractDtoList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 将当前合同转换为Dto并添加到列表中
|
|
|
+ if (!currentContracts.isEmpty()) {
|
|
|
+ contractDtoList.addAll(BeanUtil.copyToList(currentContracts, ContractDto.class));
|
|
|
+
|
|
|
+ // 如果只需要一个“失败”状态来指示存在任何状态为"0"的合同,则可以在这里设置状态并返回
|
|
|
+ // 但由于您要求返回Dto列表,我们将继续处理父合同
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将父合同转换为Dto并添加到列表中(如果需要的话)
|
|
|
+ if (!parentContracts.isEmpty()) {
|
|
|
+ contractDtoList.addAll(BeanUtil.copyToList(parentContracts, ContractDto.class));
|
|
|
+ }
|
|
|
+ return contractDtoList;
|
|
|
+ }
|
|
|
+
|
|
|
private String contractCopyCode(String contractCode, String id) {
|
|
|
HashMap<String, Object> contractCodeCopy = baseMapper.copyContractCode(id);
|
|
|
if (contractCodeCopy == null) {
|
|
|
@@ -311,4 +378,24 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param contractVo
|
|
|
+ * @return 补充协议修改状态
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void updateFileStatus(ContractVo contractVo) {
|
|
|
+ ArrayList<ContractEntity> contractEntities = new ArrayList<>();
|
|
|
+ if(contractVo.getIdList().isEmpty()){
|
|
|
+ throw new SystemException("请选择有效合同");
|
|
|
+ }
|
|
|
+ for (String s : contractVo.getIdList()) {
|
|
|
+ ContractEntity contractEntity = new ContractEntity();
|
|
|
+ contractEntity.setId(s);
|
|
|
+ contractEntity.setContractStatus("1");
|
|
|
+ contractEntities.add(contractEntity);
|
|
|
+ }
|
|
|
+ this.saveOrUpdateBatch(contractEntities);
|
|
|
+ }
|
|
|
}
|