|
@@ -0,0 +1,738 @@
|
|
|
+package com.jeeplus.finance.contractRegistration.service;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.druid.sql.visitor.functions.If;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+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.google.common.collect.Lists;
|
|
|
+import com.jeeplus.core.domain.BaseEntity;
|
|
|
+import com.jeeplus.finance.contractRegistration.domain.ContractFile;
|
|
|
+import com.jeeplus.finance.contractRegistration.domain.ContractFilePaper;
|
|
|
+import com.jeeplus.finance.contractRegistration.domain.ContractInfo;
|
|
|
+import com.jeeplus.finance.contractRegistration.domain.ContractParticipant;
|
|
|
+import com.jeeplus.finance.contractRegistration.mapper.ContractFileMapper;
|
|
|
+import com.jeeplus.finance.contractRegistration.mapper.ContractFilePaperMapper;
|
|
|
+import com.jeeplus.finance.contractRegistration.mapper.ContractInfoMapper;
|
|
|
+import com.jeeplus.finance.contractRegistration.mapper.ContractParticipantMapper;
|
|
|
+import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
|
|
|
+import com.jeeplus.finance.workClientInfo.service.CwWorkClientService;
|
|
|
+import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBaseDTO;
|
|
|
+import com.jeeplus.pubmodules.oss.domain.WorkAttachment;
|
|
|
+import com.jeeplus.pubmodules.oss.mapper.OssServiceMapper;
|
|
|
+import com.jeeplus.pubmodules.oss.service.OssService;
|
|
|
+import com.jeeplus.pubmodules.oss.service.dto.WorkAttachmentDto;
|
|
|
+import com.jeeplus.pubmodules.serialNumTpl.service.SerialnumTplService;
|
|
|
+import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
+import com.jeeplus.sys.utils.UserUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.flowable.editor.language.json.converter.util.CollectionUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author: 王强
|
|
|
+ * @create: 2022-11-08 10:50
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+public class ContractInfoService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ContractInfoMapper mapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SerialnumTplService serialnumTplService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private OssServiceMapper ossServiceMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ContractFileMapper fileMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ContractFilePaperMapper paperMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ContractParticipantMapper participantMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private CwWorkClientService cwWorkClientService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private OssService ossService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据id修改status
|
|
|
+ */
|
|
|
+ public void updateStatusById(ContractInfo info) {
|
|
|
+ mapper.updateStatusById(info.getId(), info.getStatus());
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 根据id修改合同实际金额
|
|
|
+ */
|
|
|
+ public void updateInfo(ContractInfo info) {
|
|
|
+ mapper.updateInfo(info.getId(), info.getActualContractAmount(),info.getContractApprovalType(),info.getFiledType());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据id修改合同实际金额
|
|
|
+ */
|
|
|
+ public void updatePaperInfo(ContractInfo info) {
|
|
|
+ mapper.updatePaperInfo(info.getId(), info.getActualContractAmount(),info.getContractApprovalType(), info.getFiledPaperType());
|
|
|
+ List<WorkAttachmentDto> list = info.getContractInfoList();
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ updateFiles(list, userDTO, info.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public IPage<ContractInfo> list(Page<ContractInfo> page, ContractInfo info, QueryWrapper<ContractInfo> wrapper) {
|
|
|
+// LambdaQueryWrapper<ContractInfo> wrapper = new LambdaQueryWrapper<>();
|
|
|
+
|
|
|
+ //条件查询list
|
|
|
+ //1、合同编号
|
|
|
+ if (StringUtils.isNotBlank(info.getContractNo())) {
|
|
|
+ wrapper.like("a.contract_no", info.getContractNo());
|
|
|
+ }
|
|
|
+ //案卷号
|
|
|
+ if (StringUtils.isNotBlank(info.getFiledNo())) {
|
|
|
+ wrapper.like("h.filed_no", info.getFiledNo());
|
|
|
+ }
|
|
|
+ //2、合同名称
|
|
|
+ if (StringUtils.isNotBlank(info.getContractName())) {
|
|
|
+ wrapper.like("a.contract_name", info.getContractName());
|
|
|
+ }
|
|
|
+ //3、合同金额(区间)
|
|
|
+ String[] contractAmounts = info.getContractAmounts();
|
|
|
+ if (contractAmounts != null) {
|
|
|
+ if (StringUtils.isNotBlank(contractAmounts[0])) {
|
|
|
+ wrapper.ge("a.contract_amount",contractAmounts[0]);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(contractAmounts[1])) {
|
|
|
+ wrapper.le("a.contract_amount", contractAmounts[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //4、签约时间(区间)
|
|
|
+ String[] contractDates = info.getContractDates();
|
|
|
+ if (contractDates != null) {
|
|
|
+
|
|
|
+ wrapper.between("a.signing_date", contractDates[0], contractDates[1]);
|
|
|
+ }
|
|
|
+ //5、创建人
|
|
|
+ if (StringUtils.isNotBlank(info.getCreateBy())) {
|
|
|
+ wrapper.like("c.`id`", info.getCreateBy());
|
|
|
+ }
|
|
|
+ //6、所属部门
|
|
|
+ if (StringUtils.isNotBlank(info.getDepartment())) {
|
|
|
+ //先根据id查出是否是父节点,是父节点则查出所有的子节点信息
|
|
|
+ List<String> childIds = mapper.findChildIds(info.getDepartment());
|
|
|
+ if ( null != childIds & childIds.size()>0){
|
|
|
+ childIds.add(info.getDepartment());
|
|
|
+ wrapper.in("a.department",childIds);
|
|
|
+ }else {
|
|
|
+ wrapper.eq("a.department", info.getDepartment());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //7、状态
|
|
|
+ //判断 状态是否包含 逗号
|
|
|
+ if(StringUtils.isNotBlank(info.getStatus())){
|
|
|
+ if (info.getStatus().contains(",")) {
|
|
|
+ List<String> statusList = Lists.newLinkedList();
|
|
|
+ statusList = Arrays.asList(info.getStatus().split(","));
|
|
|
+ wrapper.in("a.status", statusList);
|
|
|
+ }else{
|
|
|
+ wrapper.like("a.status", info.getStatus());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //8、归档状态
|
|
|
+ if (StringUtils.isNotBlank(info.getFiledType())) {
|
|
|
+ wrapper.like("a.filed_type", info.getFiledType());
|
|
|
+ }
|
|
|
+ //纸质归档
|
|
|
+ if (StringUtils.isNotBlank(info.getFiledPaperType())) {
|
|
|
+ wrapper.like("a.filed_paper_type", info.getFiledPaperType());
|
|
|
+ }
|
|
|
+ //委托方名称
|
|
|
+ if (StringUtils.isNotBlank(info.getClientContactsName())) {
|
|
|
+ wrapper.like("cw_wcb.name", info.getClientContactsName());
|
|
|
+ }
|
|
|
+ wrapper.eq("a.del_flag","0");
|
|
|
+
|
|
|
+
|
|
|
+ StringBuilder officeIds = new StringBuilder();
|
|
|
+ List<String> manageOfficeIdList= Lists.newArrayList();
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+ //判定是否为会计所长
|
|
|
+ /*if(CommonUtils.haveRoleKjsz()){
|
|
|
+ //获取当前人管理的部门id
|
|
|
+ if(StringUtils.isNotBlank(userDTO.getManageOfficeIds())){
|
|
|
+ manageOfficeIdList = Arrays.asList(userDTO.getManageOfficeIds().split(","));
|
|
|
+ }else{
|
|
|
+ manageOfficeIdList.add(userDTO.getOfficeDTO().getId());
|
|
|
+ }
|
|
|
+ for (int i = 0; i <manageOfficeIdList.size(); i++){
|
|
|
+ officeIds.append("'").append(manageOfficeIdList.get(i)).append("'");
|
|
|
+ if(i < manageOfficeIdList.size()-1){
|
|
|
+ officeIds.append(",");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ IPage<ContractInfo> pageList = mapper.findPageList(page, officeIds.toString(), wrapper);
|
|
|
+
|
|
|
+ return pageList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记查询
|
|
|
+ */
|
|
|
+ public ContractInfo findByContractId(String id) {
|
|
|
+
|
|
|
+ //根据id判断是file表的id,还是info表的id
|
|
|
+// ContractFile byId = mapper.getById(id);
|
|
|
+// ContractInfo dto = null;
|
|
|
+// if (byId != null){
|
|
|
+// dto = mapper.findByContractId(id);
|
|
|
+// }else {
|
|
|
+// dto = mapper.findById(id);
|
|
|
+// }
|
|
|
+ ContractInfo dto = mapper.findById(id);
|
|
|
+ if (dto != null){
|
|
|
+ dto.setContractStatus("新创建");
|
|
|
+ // 查询附件信息
|
|
|
+ List<WorkAttachmentDto> dtos = mapper.findDtos(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(dtos)) {
|
|
|
+ for (WorkAttachmentDto i : dtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dto.setContractProperList(dtos);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记查询
|
|
|
+ */
|
|
|
+ public ContractInfo findById(String id) {
|
|
|
+
|
|
|
+ ContractInfo dto = mapper.findById(id);
|
|
|
+ List<WorkAttachmentDto> fileList = Lists.newArrayList();
|
|
|
+
|
|
|
+ if (dto != null){
|
|
|
+ List<ContractParticipant> participant = participantMapper.findByInfoId(dto.getId());
|
|
|
+ dto.setContractStatus("新创建");
|
|
|
+ // 查询附件信息
|
|
|
+ List<WorkAttachmentDto> dtos = mapper.findDtos(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(dtos)) {
|
|
|
+ for (WorkAttachmentDto i : dtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fileList.addAll(dtos);
|
|
|
+ List<CwWorkClientBaseDTO> list = new ArrayList<>();
|
|
|
+ if (participant.size()>0){
|
|
|
+ participant.forEach(cw->{
|
|
|
+ CwWorkClientBaseDTO baseDTO = new CwWorkClientBaseDTO();
|
|
|
+ baseDTO.setName(cw.getCustomerName());
|
|
|
+ baseDTO.setNo(cw.getCustomerNo());
|
|
|
+ list.add(baseDTO);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ //根据合同id去归档表查归档附件信息
|
|
|
+// ContractFile file = fileMapper.getInfoByConId(dto.getId());
|
|
|
+// if (null != file){
|
|
|
+// //查归档附件信息
|
|
|
+// List<WorkAttachmentDto> fileDtos = mapper.findDtos(file.getId());
|
|
|
+// if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+// for (WorkAttachmentDto i : fileDtos) {
|
|
|
+// i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+// }
|
|
|
+// dto.setContractInfoList(fileDtos);
|
|
|
+// }
|
|
|
+// }
|
|
|
+ //根据合同id去纸质归档表查附件信息
|
|
|
+ ContractFilePaper filePaper = paperMapper.selectFilePaperByContractInfoId(id);
|
|
|
+ if (null != filePaper){
|
|
|
+ //查归档附件信息
|
|
|
+ List<WorkAttachmentDto> fileDtos = mapper.findDtos(filePaper.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+ for (WorkAttachmentDto i : fileDtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ fileList.addAll(fileDtos);
|
|
|
+ //dto.setContractInfoList(fileDtos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.setCwWorkClientContactDTOList(list);
|
|
|
+ dto.setContractProperList(fileList);
|
|
|
+ } else {
|
|
|
+ //穿来的是归档的id
|
|
|
+ ContractFile infoByConId = fileMapper.getById(id);
|
|
|
+ if ( null != infoByConId) {
|
|
|
+ dto = mapper.findById(infoByConId.getContractInfoId());
|
|
|
+ if (null != dto) {
|
|
|
+ List<ContractParticipant> participant = participantMapper.findByInfoId(dto.getId());
|
|
|
+ dto.setContractStatus("新创建");
|
|
|
+ // 查询附件信息
|
|
|
+ List<WorkAttachmentDto> dtos = mapper.findDtos(dto.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(dtos)) {
|
|
|
+ for (WorkAttachmentDto i : dtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fileList.addAll(dtos);
|
|
|
+ List<CwWorkClientBaseDTO> list = new ArrayList<>();
|
|
|
+ if (participant.size()>0){
|
|
|
+ participant.forEach(cw->{
|
|
|
+ CwWorkClientBaseDTO baseDTO = new CwWorkClientBaseDTO();
|
|
|
+ baseDTO.setName(cw.getCustomerName());
|
|
|
+ baseDTO.setNo(cw.getCustomerNo());
|
|
|
+ list.add(baseDTO);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ if (null != infoByConId){
|
|
|
+ //查归档附件信息
|
|
|
+ List<WorkAttachmentDto> fileDtos = mapper.findDtos(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+ for (WorkAttachmentDto i : fileDtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ fileList.addAll(fileDtos);
|
|
|
+ //dto.setContractInfoList(fileDtos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.setCwWorkClientContactDTOList(list);
|
|
|
+ dto.setContractProperList(fileList);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //传过来的是纸质归档的id
|
|
|
+ ContractFilePaper filePaper = paperMapper.getById(id);
|
|
|
+ if ( null != filePaper ) {
|
|
|
+ dto = mapper.findById(filePaper.getContractInfoId());
|
|
|
+ if (null != dto) {
|
|
|
+ //参与签约方信息
|
|
|
+ List<ContractParticipant> participant = participantMapper.findByInfoId(dto.getId());
|
|
|
+ dto.setContractStatus("新创建");
|
|
|
+ // 查询合同登记附件信息
|
|
|
+ List<WorkAttachmentDto> dtos = mapper.findDtos(dto.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(dtos)) {
|
|
|
+ for (WorkAttachmentDto i : dtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fileList.addAll(dtos);
|
|
|
+ List<CwWorkClientBaseDTO> list = new ArrayList<>();
|
|
|
+ if (participant.size()>0){
|
|
|
+ participant.forEach(cw->{
|
|
|
+ CwWorkClientBaseDTO baseDTO = new CwWorkClientBaseDTO();
|
|
|
+ baseDTO.setName(cw.getCustomerName());
|
|
|
+ baseDTO.setNo(cw.getCustomerNo());
|
|
|
+ list.add(baseDTO);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ //查归档附件信息
|
|
|
+ List<WorkAttachmentDto> fileDtos = mapper.findDtos(filePaper.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+ for (WorkAttachmentDto i : fileDtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ fileList.addAll(fileDtos);
|
|
|
+ //dto.setContractInfoList(fileDtos);
|
|
|
+ }
|
|
|
+// //估计合同登记id查出归档信息
|
|
|
+// ContractFile contractFile = fileMapper.getInfoByConId(dto.getId());
|
|
|
+// if (null != contractFile){
|
|
|
+// //查归档附件信息
|
|
|
+// List<WorkAttachmentDto> fileDtos = mapper.findDtos(contractFile.getId());
|
|
|
+// if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+// for (WorkAttachmentDto i : fileDtos) {
|
|
|
+// i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+// }
|
|
|
+// dto.setContractInfoList(fileDtos);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ dto.setCwWorkClientContactDTOList(list);
|
|
|
+ dto.setContractProperList(fileList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记查询附件信息
|
|
|
+ */
|
|
|
+ public ContractInfo findFileInfoById(String id) {
|
|
|
+
|
|
|
+ ContractInfo dto = mapper.findFileInfoById(id);
|
|
|
+
|
|
|
+ if (dto != null){
|
|
|
+ List<ContractParticipant> participant = participantMapper.findByInfoId(dto.getId());
|
|
|
+ dto.setContractStatus("新创建");
|
|
|
+ // 查询附件信息
|
|
|
+ List<WorkAttachmentDto> dtos = mapper.findDtos(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(dtos)) {
|
|
|
+ for (WorkAttachmentDto i : dtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<CwWorkClientBaseDTO> list = new ArrayList<>();
|
|
|
+ if (participant.size()>0){
|
|
|
+ participant.forEach(cw->{
|
|
|
+ CwWorkClientBaseDTO baseDTO = new CwWorkClientBaseDTO();
|
|
|
+ baseDTO.setName(cw.getCustomerName());
|
|
|
+ baseDTO.setNo(cw.getCustomerNo());
|
|
|
+ list.add(baseDTO);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ //根据合同id去归档表查归档附件信息
|
|
|
+ ContractFile file = fileMapper.getInfoByConId(dto.getId());
|
|
|
+ if (null != file){
|
|
|
+ //查归档附件信息
|
|
|
+ List<WorkAttachmentDto> fileDtos = mapper.findDtos(file.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(fileDtos)) {
|
|
|
+ for (WorkAttachmentDto i : fileDtos) {
|
|
|
+ i.setCreateBy(UserUtils.get(i.getBy()));
|
|
|
+ }
|
|
|
+ dto.setContractInfoList(fileDtos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.setCwWorkClientContactDTOList(list);
|
|
|
+ dto.setContractProperList(dtos);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String saveInfo(ContractInfo info) throws Exception {
|
|
|
+ info.setClientContacts(info.getCustomerId());
|
|
|
+ if (StringUtils.isNotEmpty(info.getId())) {
|
|
|
+ //对参与签约方进行处理 将参与签约方的客户编号 和 客户名称进行持久化
|
|
|
+ ContractInfo contractInfo = mapper.selectById(info.getId());
|
|
|
+ if (contractInfo != null) {
|
|
|
+ info.setCreateById(info.getCreateId());
|
|
|
+ return update(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return add(info);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记删除
|
|
|
+ */
|
|
|
+ public ResponseEntity removeById(String id) {
|
|
|
+ // 查询合同是否被引用 (项目、报销、发票)
|
|
|
+ // 查询合同是否被引用(项目)
|
|
|
+ String useByProject = mapper.isUseByProject(id);
|
|
|
+ String aa = mapper.isUseByReim(id);
|
|
|
+ String bb = mapper.isUseByInvoice(id);
|
|
|
+ if (StringUtils.isNotBlank(useByProject)) {
|
|
|
+ return ResponseEntity.ok ("合同: "+useByProject+" 被引用,不可删除");
|
|
|
+ }
|
|
|
+ // 查询合同是否被引用(报销)
|
|
|
+ String useByReim = mapper.isUseByReim(id);
|
|
|
+ if (StringUtils.isNotBlank(useByReim)) {
|
|
|
+ return ResponseEntity.ok ("合同: "+useByReim+" 被引用,不可删除");
|
|
|
+ }
|
|
|
+ // 查询合同是否被引用(发票)
|
|
|
+ String useByInvoice = mapper.isUseByInvoice(id);
|
|
|
+ if (StringUtils.isNotBlank(useByInvoice)) {
|
|
|
+ return ResponseEntity.ok ("合同: "+useByInvoice+" 被引用,不可删除");
|
|
|
+ }
|
|
|
+ mapper.deleteById(id);
|
|
|
+ return ResponseEntity.ok ("删除成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记修改
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String update(ContractInfo info) throws Exception{
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+
|
|
|
+ ContractInfo contractInfo = new ContractInfo();
|
|
|
+ BeanUtils.copyProperties(info, contractInfo);
|
|
|
+ contractInfo.setUpdateById(userDTO.getId());
|
|
|
+ contractInfo.setUpdateTime(new Date());
|
|
|
+
|
|
|
+ //合同编号生成
|
|
|
+ String serialNum = "";
|
|
|
+ if (StringUtils.isNotBlank(contractInfo.getContractType()) && StringUtils.isBlank(contractInfo.getContractNo())){
|
|
|
+ if (contractInfo.getContractType().equals("1")){
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1);
|
|
|
+ } else if (contractInfo.getContractType().equals("2")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2);
|
|
|
+ } else if (contractInfo.getContractType().equals("3")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3);
|
|
|
+ } else if (contractInfo.getContractType().equals("4")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4);
|
|
|
+ } else if (contractInfo.getContractType().equals("5")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5);
|
|
|
+ } else if (contractInfo.getContractType().equals("6")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER6);
|
|
|
+ }
|
|
|
+ contractInfo.setContractNo(serialNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(contractInfo.getStatus()) &&!contractInfo.getStatus().equals("5")){
|
|
|
+ int num = Integer.parseInt(contractInfo.getChangeNum()) + 1;
|
|
|
+ contractInfo.setChangeNum(num + "");
|
|
|
+ }else {
|
|
|
+ contractInfo.setChangeNum(contractInfo.getChangeNum());
|
|
|
+ }
|
|
|
+ //对管理员上传归档文件进行相关操作 归档修改
|
|
|
+ if (StringUtils.isNotEmpty(contractInfo.getFiledType()) && contractInfo.getFiledType().equals("5")){
|
|
|
+ //根据id找到归档表id
|
|
|
+ ContractFile contractFile = fileMapper.getInfoByConId(info.getId());
|
|
|
+ if ( null != contractFile) {
|
|
|
+ contractFile.setContractInfoList(info.getContractInfoList());
|
|
|
+ if (CollectionUtils.isNotEmpty(contractFile.getContractInfoList())){
|
|
|
+ updateFiles(contractFile.getContractInfoList(), userDTO, contractFile.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //纸质归档修改
|
|
|
+ ContractFilePaper filePaper = paperMapper.selectFilePaperByContractInfoId(info.getId());
|
|
|
+ if (null != filePaper) {
|
|
|
+ filePaper.setFiledNo(info.getFiledNo());
|
|
|
+ filePaper.setConfirmFiledNo(info.getConfirmFiledNo());
|
|
|
+ paperMapper.updateById(filePaper);
|
|
|
+ }
|
|
|
+
|
|
|
+ mapper.updateById(contractInfo);
|
|
|
+ ContractParticipant participant = new ContractParticipant();
|
|
|
+ //对参与签约方进行操作
|
|
|
+ participantMapper.deleteFromParticipant(info.getId());
|
|
|
+ //在操作前,清空之前的信息
|
|
|
+ if (info.getCwWorkClientContactDTOList() != null){
|
|
|
+ if (info.getCwWorkClientContactDTOList().size()>0){
|
|
|
+ info.getCwWorkClientContactDTOList().forEach(cw->{
|
|
|
+
|
|
|
+ String parId = UUID.randomUUID().toString().replace("-", "");
|
|
|
+ participant.setId(parId);
|
|
|
+ participant.setContractInfoId(info.getId());
|
|
|
+ participant.setCustomerName(cw.getName());
|
|
|
+ participant.setCustomerNo(cw.getNo());
|
|
|
+ participant.setCreateById(userDTO.getId());
|
|
|
+ participant.setCreateTime(info.getCreateTime());
|
|
|
+ participant.setUpdateById(userDTO.getId());
|
|
|
+ participant.setUpdateTime(new Date());
|
|
|
+ participantMapper.insert(participant);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<WorkAttachmentDto> list = info.getContractProperList();
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ updateFiles(list, userDTO, info.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ return info.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同登记新增
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String add(ContractInfo contractInfo) throws Exception{
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+ //合同流水号生成
|
|
|
+ String serialNumber = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.BIZ_CODE);
|
|
|
+ //合同编号生成
|
|
|
+ String serialNum = "";
|
|
|
+ if (StringUtils.isNotEmpty(contractInfo.getContractType())){
|
|
|
+ if (contractInfo.getContractType().equals("1")){
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER1);
|
|
|
+ } else if (contractInfo.getContractType().equals("2")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER2);
|
|
|
+ } else if (contractInfo.getContractType().equals("3")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER3);
|
|
|
+ } else if (contractInfo.getContractType().equals("4")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER4);
|
|
|
+ } else if (contractInfo.getContractType().equals("5")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER5);
|
|
|
+ } else if (contractInfo.getContractType().equals("6")) {
|
|
|
+ serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), ContractInfo.SERIAL_NUMBER6);
|
|
|
+ }
|
|
|
+ contractInfo.setContractSerialNumber(serialNumber);
|
|
|
+ }
|
|
|
+ String id = UUID.randomUUID().toString().replace("-", "");
|
|
|
+ ContractInfo info = new ContractInfo();
|
|
|
+ BeanUtils.copyProperties(contractInfo, info);
|
|
|
+ info.setId(id);
|
|
|
+// info.setNo(serialNum);
|
|
|
+ info.setContractNo(serialNum);
|
|
|
+ info.setCreateById(userDTO.getId());
|
|
|
+ info.setCreateTime(contractInfo.getCreateTime());
|
|
|
+ info.setUpdateById(userDTO.getId());
|
|
|
+ info.setUpdateTime(new Date());
|
|
|
+ mapper.insert(info);
|
|
|
+ //对参与签约方进行持久化
|
|
|
+ //对参与签约方进行操作
|
|
|
+ participantMapper.deleteFromParticipant(info.getId());
|
|
|
+ ContractParticipant participant = new ContractParticipant();
|
|
|
+ if (info.getCwWorkClientContactDTOList() != null){
|
|
|
+ if (info.getCwWorkClientContactDTOList().size()>0){
|
|
|
+ info.getCwWorkClientContactDTOList().forEach(cw->{
|
|
|
+ String parId = UUID.randomUUID().toString().replace("-", "");
|
|
|
+ participant.setId(parId);
|
|
|
+ participant.setContractInfoId(id);
|
|
|
+ participant.setCustomerName(cw.getName());
|
|
|
+ participant.setCustomerNo(cw.getNo());
|
|
|
+ participant.setCreateById(userDTO.getId());
|
|
|
+ participant.setCreateTime(contractInfo.getCreateTime());
|
|
|
+ participant.setUpdateById(userDTO.getId());
|
|
|
+ participant.setUpdateTime(new Date());
|
|
|
+ participantMapper.insert(participant);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ossService.saveOrUpdateFileList(contractInfo.getContractProperList(),id,"cwWorkContract");
|
|
|
+// List<WorkAttachmentDto> list = contractInfo.getContractProperList();
|
|
|
+// if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+// saveFiles(list, userDTO, id);
|
|
|
+// }
|
|
|
+
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存附件信息
|
|
|
+ * @param list 待保存的附件列表
|
|
|
+ * @param userDTO 当前登录用户
|
|
|
+ * @param id 关联id
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void saveFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
|
|
|
+ int j = 1;
|
|
|
+ for (WorkAttachmentDto dto : list) {
|
|
|
+ WorkAttachment i = new WorkAttachment();
|
|
|
+ //包含了url、size、name
|
|
|
+ i.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+// i.getCreateBy().setId(userDTO.getId());
|
|
|
+ i.setCreateTime(new Date());
|
|
|
+// i.getUpdateBy().setId(userDTO.getId());
|
|
|
+ i.setUpdateTime(new Date());
|
|
|
+ i.setDelFlag(0);
|
|
|
+ i.setUrl(dto.getUrl());
|
|
|
+ //文件类型处理
|
|
|
+ List<String> strings = Arrays.asList(dto.getName().split("\\."));
|
|
|
+ if (CollectionUtils.isNotEmpty(strings)) {
|
|
|
+ i.setType(strings.get(1));
|
|
|
+ }
|
|
|
+ i.setAttachmentId(id);
|
|
|
+ i.setAttachmentName(dto.getName());
|
|
|
+ i.setAttachmentFlag("cwWorkContract");
|
|
|
+ i.setFileSize(dto.getSize());
|
|
|
+ i.setSort(j);
|
|
|
+ ossServiceMapper.insertWorkAttachment(i, userDTO);
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改附件信息
|
|
|
+ * @param list 待修改的附件列表
|
|
|
+ * @param userDTO 当前登录用户
|
|
|
+ * @param id 关联id
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
|
|
|
+ int j = 1;
|
|
|
+ String names = new String();
|
|
|
+ //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
|
|
|
+ for (WorkAttachmentDto dto : list) {
|
|
|
+ names = names + "," +dto.getUrl();
|
|
|
+ }
|
|
|
+ //查询保存的附件信息
|
|
|
+ List<WorkAttachment> infoList = mapper.findList(id);
|
|
|
+ if (CollectionUtils.isNotEmpty(infoList)) {
|
|
|
+ for (WorkAttachment i : infoList) {
|
|
|
+ if (!names.contains(i.getUrl())) {
|
|
|
+ ossServiceMapper.deleteById(i.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存信息
|
|
|
+ for (WorkAttachmentDto dto : list) {
|
|
|
+ //判断是否存在
|
|
|
+ Integer isExit = mapper.findIsExit(id, dto.getName());
|
|
|
+ if (isExit == 0) {
|
|
|
+ WorkAttachment i = new WorkAttachment();
|
|
|
+ //包含了url、size、name
|
|
|
+ i.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+// i.getCreateBy().setId(userDTO.getId());
|
|
|
+ i.setCreateTime(new Date());
|
|
|
+// i.getUpdateBy().setId(userDTO.getId());
|
|
|
+ i.setUpdateTime(new Date());
|
|
|
+ i.setDelFlag(0);
|
|
|
+ i.setUrl(dto.getUrl());
|
|
|
+ //文件类型处理
|
|
|
+ List<String> strings = Arrays.asList(dto.getName().split("\\."));
|
|
|
+ if (CollectionUtils.isNotEmpty(strings)) {
|
|
|
+ i.setType(strings.get(1));
|
|
|
+ }
|
|
|
+ i.setAttachmentId(id);
|
|
|
+ i.setAttachmentName(dto.getName());
|
|
|
+ i.setAttachmentFlag("cwWorkContract");
|
|
|
+ i.setFileSize(dto.getSize());
|
|
|
+ i.setSort(j);
|
|
|
+ ossServiceMapper.insertWorkAttachment(i, userDTO);
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<ContractInfo> getByClientId(String contractId, ContractInfo contractInfo){
|
|
|
+ if (StringUtils.isNotBlank(contractId)) {
|
|
|
+ CwWorkClientBase cwWorkClientBase = cwWorkClientService.getById(contractId);
|
|
|
+ if (ObjectUtil.isNotEmpty(cwWorkClientBase)) {
|
|
|
+ if (StringUtils.isNotBlank(cwWorkClientBase.getNo())) {
|
|
|
+ List<String> ids = mapper.getClientListByClientNo(cwWorkClientBase.getNo());
|
|
|
+ if (CollectionUtil.isNotEmpty(ids)){
|
|
|
+ QueryWrapper<ContractInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.in("cw_wci.id",ids);
|
|
|
+ queryWrapper.eq("cw_wci.del_flag","0");
|
|
|
+// queryWrapper.eq("cw_wci.status","5"); // 取消查询审核通过(status=5)的合同数据,只要求数据有效(del_flag=0)就可以
|
|
|
+ queryWrapper.orderByDesc("cw_wci.create_time");
|
|
|
+ if(ObjectUtil.isNotEmpty(contractInfo)){
|
|
|
+ if(StringUtils.isNotBlank(contractInfo.getContractName())){
|
|
|
+ queryWrapper.like("cw_wci.contract_name",contractInfo.getContractName());
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(contractInfo.getContractNo())){
|
|
|
+ queryWrapper.like("cw_wci.contract_no",contractInfo.getContractNo());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mapper.getByClientId(queryWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+}
|