wuhp пре 1 година
родитељ
комит
4f8702e7f5

+ 37 - 2
src/main/java/com/ydtech/modules/fnc/controller/contract/ContractController.java

@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
 
 @RestController
 @Api(tags = "公司内部合同")
@@ -77,9 +79,8 @@ public class ContractController extends BaseController {
     }
 
     /**
-     *
      * @param contractDto
-     * @return  合同协议新增
+     * @return 合同协议新增
      */
     @PostMapping("copyContract")
     @ApiOperation("合同协议新增")
@@ -88,4 +89,38 @@ public class ContractController extends BaseController {
         return HttpResult.ok();
     }
 
+
+    /**
+     * @param contractVo
+     * @return 合同协议检查是否失效
+     */
+    @PostMapping("checkCopyContract")
+    @ApiOperation("合同协议检查是否失效")
+    public HttpResult<HashMap<String,Object>> checkCopyContract(@RequestBody ContractVo contractVo) {
+        HashMap<String, Object> code = contractService.checkCopyContract(contractVo);
+        return HttpResult.ok(code);
+    }
+
+  /**
+     * @param contractVo
+     * @return 同以及未失效的关联合同列表
+     */
+    @PostMapping("copyContractList")
+    @ApiOperation("关联合同列表")
+    public HttpResult<List<ContractDto>> copyContractList(@RequestBody ContractVo contractVo) {
+        List<ContractDto> result = contractService.copyContractList(contractVo);
+        return HttpResult.ok(result);
+    }
+
+
+    /**
+     * @param contractVo
+     * @return 补充协议修改状态
+     */
+    @PutMapping("updateFileStatus")
+    @ApiOperation("补充协议修改状态")
+    public HttpResult updateFileStatus(@RequestBody ContractVo contractVo) {
+        contractService.updateFileStatus(contractVo);
+        return HttpResult.ok("补充协议状态修改成功");
+    }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/dao/contract/ContractMapper.java

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.HashMap;
+import java.util.List;
 
 @Mapper
 public interface ContractMapper  extends BaseMapper<ContractEntity> {
@@ -32,4 +33,6 @@ public interface ContractMapper  extends BaseMapper<ContractEntity> {
      * @return  获取新增协议最大的合同编码
      */
     HashMap<String, Object> copyContractCode(String id);
+
+
 }

+ 21 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/ContractService.java

@@ -7,6 +7,9 @@ import com.ydtech.modules.fnc.dto.contract.ContractDto;
 import com.ydtech.modules.fnc.entity.ContractEntity;
 import com.ydtech.modules.fnc.vo.ContractVo;
 
+import java.util.HashMap;
+import java.util.List;
+
 
 public interface ContractService extends IService<ContractEntity> {
 
@@ -36,4 +39,22 @@ public interface ContractService extends IService<ContractEntity> {
      * @return  合同协议新增
      */
     void copyContract(ContractDto contractDto);
+
+    /**
+     *     合同协议检查是否失效
+     * @param contractVo
+     */
+    HashMap<String,Object> checkCopyContract(ContractVo contractVo);
+
+
+    /**
+     * 同以及未失效的关联合同列表
+     * @param contractVo
+     */
+    List<ContractDto> copyContractList(ContractVo contractVo);
+    /**
+     * @param contractVo
+     * @return 补充协议修改状态
+     */
+    void updateFileStatus(ContractVo contractVo);
 }

+ 97 - 10
src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java

@@ -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);
+    }
 }

+ 8 - 0
src/main/java/com/ydtech/modules/fnc/vo/ContractVo.java

@@ -105,4 +105,12 @@ public class ContractVo implements Serializable {
     @ApiModelProperty("合同是否有效 0 有效 1 无效")
     private String contractStatus;
 
+
+    @ApiModelProperty("合同父id")
+    private String parentId;
+
+
+
+    @ApiModelProperty("合同idList")
+    private List<String> idList;
 }

+ 0 - 1
src/main/resources/mapper/modules/fnc/contract/ContractMapper.xml

@@ -63,7 +63,6 @@
               and  parent_id =#{id}
             </if>
         </where>
-
     </select>
 
 </mapper>