10-11-项目信息
This commit is contained in:
@ -4,6 +4,8 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
|
|||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
@ -82,7 +84,7 @@ public class XzdProject extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目金额
|
* 项目金额
|
||||||
*/
|
*/
|
||||||
private Long projectAmount;
|
private BigDecimal projectAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目备案经理
|
* 项目备案经理
|
||||||
@ -102,7 +104,7 @@ public class XzdProject extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目中标金额
|
* 项目中标金额
|
||||||
*/
|
*/
|
||||||
private Long winningBidAmount;
|
private BigDecimal winningBidAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划工期
|
* 计划工期
|
||||||
@ -182,22 +184,22 @@ public class XzdProject extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 目标中标金额
|
* 目标中标金额
|
||||||
*/
|
*/
|
||||||
private Long targetWinningBidAmount;
|
private BigDecimal targetWinningBidAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标合同金额
|
* 目标合同金额
|
||||||
*/
|
*/
|
||||||
private Long targetContractAmount;
|
private BigDecimal targetContractAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标产值金额
|
* 目标产值金额
|
||||||
*/
|
*/
|
||||||
private Long targetOutputValueAmount;
|
private BigDecimal targetOutputValueAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标收款金额
|
* 目标收款金额
|
||||||
*/
|
*/
|
||||||
private Long targetCollectionAmount;
|
private BigDecimal targetCollectionAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件ID
|
* 文件ID
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class XzdSettlementInfo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 开户银行
|
* 开户银行
|
||||||
*/
|
*/
|
||||||
private String openingBank;
|
private Long openingBankIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 账号
|
* 账号
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -37,13 +39,13 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目编号
|
* 项目编号
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "项目编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "项目编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String projectNumber;
|
private String projectNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目名称
|
* 项目名称
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,13 +56,13 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "项目类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotNull(message = "项目类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Long projectType;
|
private Long projectType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目状态
|
* 项目状态
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "项目状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "项目状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String projectStatus;
|
private String projectStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,7 +97,7 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目金额
|
* 项目金额
|
||||||
*/
|
*/
|
||||||
private Long projectAmount;
|
private BigDecimal projectAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目备案经理
|
* 项目备案经理
|
||||||
@ -115,7 +117,7 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目中标金额
|
* 项目中标金额
|
||||||
*/
|
*/
|
||||||
private Long winningBidAmount;
|
private BigDecimal winningBidAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划工期
|
* 计划工期
|
||||||
@ -150,7 +152,7 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 建设单位
|
* 建设单位
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "建设单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "建设单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String constructionUnit;
|
private String constructionUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,7 +183,7 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 政府备案项目名称
|
* 政府备案项目名称
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "政府备案项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "政府备案项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String govFilingProjectName;
|
private String govFilingProjectName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -197,22 +199,22 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 目标中标金额
|
* 目标中标金额
|
||||||
*/
|
*/
|
||||||
private Long targetWinningBidAmount;
|
private BigDecimal targetWinningBidAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标合同金额
|
* 目标合同金额
|
||||||
*/
|
*/
|
||||||
private Long targetContractAmount;
|
private BigDecimal targetContractAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标产值金额
|
* 目标产值金额
|
||||||
*/
|
*/
|
||||||
private Long targetOutputValueAmount;
|
private BigDecimal targetOutputValueAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标收款金额
|
* 目标收款金额
|
||||||
*/
|
*/
|
||||||
private Long targetCollectionAmount;
|
private BigDecimal targetCollectionAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件ID
|
* 文件ID
|
||||||
@ -304,4 +306,6 @@ public class XzdProjectBo extends BaseEntity {
|
|||||||
|
|
||||||
private Integer offset;
|
private Integer offset;
|
||||||
|
|
||||||
|
private String selfId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,7 @@ public class XzdProjectPersonnelBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目角色
|
* 项目角色
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "项目角色不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "项目角色不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String projectRole;
|
private String projectRole;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -33,7 +33,7 @@ public class XzdProjectProfileBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 国家
|
* 国家
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "国家不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "国家不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String country;
|
private String country;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +54,7 @@ public class XzdProjectProfileBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目地址
|
* 项目地址
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "项目地址不能为空", groups = { AddGroup.class, EditGroup.class })
|
// @NotBlank(message = "项目地址不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String projectAddress;
|
private String projectAddress;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -74,24 +74,28 @@ public class XzdProjectVo implements Serializable {
|
|||||||
* 计划开工日期
|
* 计划开工日期
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "计划开工日期")
|
@ExcelProperty(value = "计划开工日期")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date plannedStartDate;
|
private Date plannedStartDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划竣工日期
|
* 计划竣工日期
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "计划竣工日期")
|
@ExcelProperty(value = "计划竣工日期")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date plannedCompletionDate;
|
private Date plannedCompletionDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实际开工日期
|
* 实际开工日期
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "实际开工日期")
|
@ExcelProperty(value = "实际开工日期")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date actualStartDate;
|
private Date actualStartDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实际竣工日期
|
* 实际竣工日期
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "实际竣工日期")
|
@ExcelProperty(value = "实际竣工日期")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date actualCompletionDate;
|
private Date actualCompletionDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,7 +108,7 @@ public class XzdProjectVo implements Serializable {
|
|||||||
* 项目金额
|
* 项目金额
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "项目金额")
|
@ExcelProperty(value = "项目金额")
|
||||||
private Long projectAmount;
|
private BigDecimal projectAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目备案经理
|
* 项目备案经理
|
||||||
@ -135,7 +139,7 @@ public class XzdProjectVo implements Serializable {
|
|||||||
* 项目中标金额
|
* 项目中标金额
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "项目中标金额")
|
@ExcelProperty(value = "项目中标金额")
|
||||||
private Long winningBidAmount;
|
private BigDecimal winningBidAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划工期
|
* 计划工期
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package org.dromara.xzd.service.impl;
|
package org.dromara.xzd.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.HashUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -19,9 +21,7 @@ import org.dromara.xzd.mapper.XzdProjectManagerApprovalMapper;
|
|||||||
import org.dromara.xzd.service.IXzdProjectManagerApprovalService;
|
import org.dromara.xzd.service.IXzdProjectManagerApprovalService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目经理推荐及审批Service业务层处理
|
* 项目经理推荐及审批Service业务层处理
|
||||||
@ -96,18 +96,15 @@ public class XzdProjectManagerApprovalServiceImpl extends ServiceImpl<XzdProject
|
|||||||
* @param bo 项目经理推荐及审批
|
* @param bo 项目经理推荐及审批
|
||||||
* @return 是否新增成功
|
* @return 是否新增成功
|
||||||
*/
|
*/
|
||||||
@Transactional
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean insertByBo(XzdProjectManagerApprovalBo bo) {
|
public Boolean insertByBo(XzdProjectManagerApprovalBo bo) {
|
||||||
|
bo.setDocumentNumber(IdUtil.getSnowflake().nextIdStr());
|
||||||
XzdProjectManagerApproval add = MapstructUtils.convert(bo, XzdProjectManagerApproval.class);
|
XzdProjectManagerApproval add = MapstructUtils.convert(bo, XzdProjectManagerApproval.class);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
bo.setId(add.getId());
|
||||||
}
|
}
|
||||||
//生成过后更新单据编号为ID
|
|
||||||
add.setDocumentNumber(add.getId().toString());
|
|
||||||
baseMapper.updateById(add);
|
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,14 +114,27 @@ public class XzdProjectManagerApprovalServiceImpl extends ServiceImpl<XzdProject
|
|||||||
* @param bo 项目经理推荐及审批
|
* @param bo 项目经理推荐及审批
|
||||||
* @return 是否修改成功
|
* @return 是否修改成功
|
||||||
*/
|
*/
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public Boolean updateByBo(XzdProjectManagerApprovalBo bo) {
|
public Boolean updateByBo(XzdProjectManagerApprovalBo bo) {
|
||||||
//先通过BO中ID获取老数据的文件ID
|
//先通过BO中ID获取老数据的文件ID
|
||||||
XzdProjectManagerApprovalVo approvalVo = baseMapper.selectVoById(bo.getId());
|
XzdProjectManagerApprovalVo oldVo = baseMapper.selectVoById(bo.getId());
|
||||||
if (!approvalVo.getFileId().equals(bo.getFileId())){
|
List<String> list = Arrays.stream(oldVo.getFileId().split(",")).toList();
|
||||||
//如果不一样则先删除旧的再更新
|
|
||||||
sysOssService.deleteWithValidByIds(List.of(Long.valueOf(approvalVo.getFileId())), false);
|
List<String> news = Arrays.stream(bo.getFileId().split(",")).toList();
|
||||||
|
|
||||||
|
List<Long> deleteIds = new ArrayList<>();
|
||||||
|
for (String id : list) {
|
||||||
|
if (!news.contains(id)){
|
||||||
|
deleteIds.add(Long.valueOf(id));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
sysOssService.deleteWithValidByIds(deleteIds, false);
|
||||||
|
//
|
||||||
|
// if (!oldVo.getFileId().equals(bo.getFileId())){
|
||||||
|
// //如果不一样则先删除旧的再更新
|
||||||
|
// sysOssService.deleteWithValidByIds(List.of(Long.valueOf(oldVo.getFileId())), false);
|
||||||
|
// }
|
||||||
XzdProjectManagerApproval update = MapstructUtils.convert(bo, XzdProjectManagerApproval.class);
|
XzdProjectManagerApproval update = MapstructUtils.convert(bo, XzdProjectManagerApproval.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
return baseMapper.updateById(update) > 0;
|
return baseMapper.updateById(update) > 0;
|
||||||
@ -156,7 +166,10 @@ public class XzdProjectManagerApprovalServiceImpl extends ServiceImpl<XzdProject
|
|||||||
if (vo == null){
|
if (vo == null){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
sysOssService.deleteWithValidByIds(List.of(Long.valueOf(vo.getFileId())), false);
|
if (vo.getFileId() != null && !vo.getFileId().isEmpty()) {
|
||||||
|
List<Long> deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
|
||||||
|
sysOssService.deleteWithValidByIds(deleteIds, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package org.dromara.xzd.service.impl;
|
package org.dromara.xzd.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -30,6 +31,7 @@ import java.util.stream.Collectors;
|
|||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
* @date 2025-10-10
|
* @date 2025-10-10
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProject> implements IXzdProjectService {
|
public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProject> implements IXzdProjectService {
|
||||||
@ -232,6 +234,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
|
|||||||
public Boolean updateByBo(XzdProjectBo bo) {
|
public Boolean updateByBo(XzdProjectBo bo) {
|
||||||
|
|
||||||
XzdProjectVo oldValue = baseMapper.selectVoById(bo.getId());
|
XzdProjectVo oldValue = baseMapper.selectVoById(bo.getId());
|
||||||
|
setValue(oldValue);
|
||||||
|
|
||||||
XzdProject update = MapstructUtils.convert(bo, XzdProject.class);
|
XzdProject update = MapstructUtils.convert(bo, XzdProject.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
@ -246,47 +249,43 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
|
|||||||
}
|
}
|
||||||
|
|
||||||
//项目人员处理
|
//项目人员处理
|
||||||
//项目人员处理 - 更精确的更新方式
|
|
||||||
if (bo.getXmry() != null && !bo.getXmry().isEmpty()){
|
if (bo.getXmry() != null && !bo.getXmry().isEmpty()){
|
||||||
// 获取原有记录
|
// 获取原有记录的ID列表
|
||||||
LambdaQueryWrapper<XzdProjectPersonnel> queryWrapper = new LambdaQueryWrapper<>();
|
if (oldValue.getXmry() != null && !oldValue.getXmry().isEmpty()) {
|
||||||
queryWrapper.eq(XzdProjectPersonnel::getXzdProjectId, bo.getId());
|
|
||||||
List<XzdProjectPersonnel> existingPersonnel = xzdProjectPersonnelService.list(queryWrapper);
|
|
||||||
|
|
||||||
// 提取现有ID集合
|
//把双方都转换为实体
|
||||||
Set<Long> existingIds = existingPersonnel.stream()
|
List<XzdProjectPersonnel> old = new ArrayList<>();
|
||||||
.map(XzdProjectPersonnel::getId)
|
for (XzdProjectPersonnelVo personVo : oldValue.getXmry()) {
|
||||||
.collect(Collectors.toSet());
|
XzdProjectPersonnel temp = new XzdProjectPersonnel();
|
||||||
|
BeanUtils.copyProperties(personVo, temp);
|
||||||
// 处理新的或更新的记录
|
old.add(temp);
|
||||||
Set<Long> processedIds = new HashSet<>();
|
|
||||||
for (XzdProjectPersonnelBo personnelBo : bo.getXmry()) {
|
|
||||||
personnelBo.setXzdProjectId(update.getId());
|
|
||||||
if (personnelBo.getId() != null && existingIds.contains(personnelBo.getId())) {
|
|
||||||
// 更新已有记录
|
|
||||||
xzdProjectPersonnelService.updateByBo(personnelBo);
|
|
||||||
processedIds.add(personnelBo.getId());
|
|
||||||
} else {
|
|
||||||
// 新增记录
|
|
||||||
personnelBo.setId(null); // 确保是新增而不是更新
|
|
||||||
xzdProjectPersonnelService.insertByBo(personnelBo);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除未被处理的旧记录
|
List<XzdProjectPersonnel> now = new ArrayList<>();
|
||||||
existingIds.removeAll(processedIds);
|
for (XzdProjectPersonnelBo boValue : bo.getXmry()) {
|
||||||
if (!existingIds.isEmpty()) {
|
if (boValue.getId() == null){
|
||||||
xzdProjectPersonnelService.removeBatchByIds(existingIds);
|
boValue.setXzdProjectId(update.getId());
|
||||||
|
}
|
||||||
|
XzdProjectPersonnel temp = new XzdProjectPersonnel();
|
||||||
|
BeanUtils.copyProperties(boValue, temp);
|
||||||
|
now.add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (XzdProjectPersonnel warehouses : old) {
|
||||||
|
if (!now.contains(warehouses)) {
|
||||||
|
// 删除不存在的记录
|
||||||
|
xzdProjectPersonnelService.removeById(warehouses.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xzdProjectPersonnelService.saveOrUpdateBatch( now);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
for (XzdProjectPersonnelBo boValue : bo.getXmry()) {
|
||||||
|
boValue.setXzdProjectId(update.getId());
|
||||||
|
xzdProjectPersonnelService.insertByBo(boValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (bo.getXmry() != null && !bo.getXmry().isEmpty()){
|
|
||||||
// //删除后再新增
|
|
||||||
// xzdProjectPersonnelService.removeBatchByIds(oldValue.getXmry());
|
|
||||||
// for (XzdProjectPersonnelBo personnelBo : bo.getXmry()) {
|
|
||||||
// personnelBo.setXzdProjectId(update.getId());
|
|
||||||
// xzdProjectPersonnelService.insertByBo(personnelBo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
//税务信息处理
|
//税务信息处理
|
||||||
if (bo.getSwxx() != null){
|
if (bo.getSwxx() != null){
|
||||||
@ -298,93 +297,121 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
|
|||||||
xzdProjectAccountingInfoService.updateByBo(bo.getHsxx());
|
xzdProjectAccountingInfoService.updateByBo(bo.getHsxx());
|
||||||
}
|
}
|
||||||
|
|
||||||
// //仓库信息
|
|
||||||
// if (bo.getXmck() != null && !bo.getXmck().isEmpty()){
|
|
||||||
// xzdProjectWarehousesService.removeBatchByIds(oldValue.getXmck());
|
|
||||||
// for (XzdProjectWarehousesBo warehousesBo : bo.getXmck()) {
|
|
||||||
// warehousesBo.setXzdProjectId(update.getId());
|
|
||||||
// xzdProjectWarehousesService.insertByBo(warehousesBo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// //内部账户信息
|
|
||||||
// if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()){
|
|
||||||
// xzdProjectInternalAccountsService.removeBatchByIds(oldValue.getNbzj());
|
|
||||||
// for (XzdProjectInternalAccountsBo internalAccountsBo : bo.getNbzj()) {
|
|
||||||
// internalAccountsBo.setXzdProjectId(update.getId());
|
|
||||||
// xzdProjectInternalAccountsService.insertByBo(internalAccountsBo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// //参与单位信息
|
|
||||||
// if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()){
|
|
||||||
// xzdProjectParticipatingUnitsService.removeBatchByIds(oldValue.getCjdw());
|
|
||||||
// for (XzdProjectParticipatingUnitsBo participatingUnitsBo : bo.getCjdw()) {
|
|
||||||
// participatingUnitsBo.setXzdProjectId(update.getId());
|
|
||||||
// xzdProjectParticipatingUnitsService.insertByBo(participatingUnitsBo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
//仓库信息
|
//仓库信息
|
||||||
if (bo.getXmck() != null && !bo.getXmck().isEmpty()){
|
if (bo.getXmck() != null && !bo.getXmck().isEmpty()){
|
||||||
// 获取原有记录的ID列表
|
// 获取原有记录的ID列表
|
||||||
List<Long> oldWarehouseIds = oldValue.getXmck().stream()
|
if (oldValue.getXmck() != null && !oldValue.getXmck().isEmpty()) {
|
||||||
.map(XzdProjectWarehousesVo::getId)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
// 删除原有记录
|
//把双方都转换为实体
|
||||||
if (!oldWarehouseIds.isEmpty()) {
|
List<XzdProjectWarehouses> old = new ArrayList<>();
|
||||||
xzdProjectWarehousesService.removeBatchByIds(oldWarehouseIds);
|
for (XzdProjectWarehousesVo warehousesVo : oldValue.getXmck()) {
|
||||||
|
XzdProjectWarehouses temp = new XzdProjectWarehouses();
|
||||||
|
BeanUtils.copyProperties(warehousesVo, temp);
|
||||||
|
old.add(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 插入新记录
|
List<XzdProjectWarehouses> now = new ArrayList<>();
|
||||||
for (XzdProjectWarehousesBo warehousesBo : bo.getXmck()) {
|
for (XzdProjectWarehousesBo boValue : bo.getXmck()) {
|
||||||
warehousesBo.setId(null); // 清除ID避免主键冲突
|
if (boValue.getId() == null){
|
||||||
warehousesBo.setXzdProjectId(update.getId());
|
boValue.setXzdProjectId(update.getId());
|
||||||
xzdProjectWarehousesService.insertByBo(warehousesBo);
|
}
|
||||||
|
XzdProjectWarehouses temp = new XzdProjectWarehouses();
|
||||||
|
BeanUtils.copyProperties(boValue, temp);
|
||||||
|
now.add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (XzdProjectWarehouses warehouses : old) {
|
||||||
|
if (!now.contains(warehouses)) {
|
||||||
|
// 删除不存在的记录
|
||||||
|
xzdProjectWarehousesService.removeById(warehouses.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xzdProjectWarehousesService.saveOrUpdateBatch( now);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
for (XzdProjectWarehousesBo boValue : bo.getXmck()) {
|
||||||
|
boValue.setXzdProjectId(update.getId());
|
||||||
|
xzdProjectWarehousesService.insertByBo(boValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//内部账户信息
|
//内部账户信息
|
||||||
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()){
|
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()){
|
||||||
// 获取原有记录的ID列表
|
// 获取原有记录的ID列表
|
||||||
List<Long> oldAccountIds = oldValue.getNbzj().stream()
|
if (oldValue.getNbzj() != null && !oldValue.getNbzj().isEmpty()) {
|
||||||
.map(XzdProjectInternalAccountsVo::getId)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
// 删除原有记录
|
//把双方都转换为实体
|
||||||
if (!oldAccountIds.isEmpty()) {
|
List<XzdProjectInternalAccounts> old = new ArrayList<>();
|
||||||
xzdProjectInternalAccountsService.removeBatchByIds(oldAccountIds);
|
for (XzdProjectInternalAccountsVo Vo : oldValue.getNbzj()) {
|
||||||
|
XzdProjectInternalAccounts temp = new XzdProjectInternalAccounts();
|
||||||
|
BeanUtils.copyProperties(Vo, temp);
|
||||||
|
old.add(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 插入新记录
|
List<XzdProjectInternalAccounts> now = new ArrayList<>();
|
||||||
for (XzdProjectInternalAccountsBo internalAccountsBo : bo.getNbzj()) {
|
for (XzdProjectInternalAccountsBo boValue : bo.getNbzj()) {
|
||||||
internalAccountsBo.setId(null); // 清除ID避免主键冲突
|
if (boValue.getId() == null){
|
||||||
internalAccountsBo.setXzdProjectId(update.getId());
|
boValue.setXzdProjectId(update.getId());
|
||||||
xzdProjectInternalAccountsService.insertByBo(internalAccountsBo);
|
}
|
||||||
|
XzdProjectInternalAccounts temp = new XzdProjectInternalAccounts();
|
||||||
|
BeanUtils.copyProperties(boValue, temp);
|
||||||
|
now.add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (XzdProjectInternalAccounts warehouses : old) {
|
||||||
|
if (!now.contains(warehouses)) {
|
||||||
|
// 删除不存在的记录
|
||||||
|
xzdProjectInternalAccountsService.removeById(warehouses.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xzdProjectInternalAccountsService.saveOrUpdateBatch( now);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
for (XzdProjectInternalAccountsBo boValue : bo.getNbzj()) {
|
||||||
|
boValue.setXzdProjectId(update.getId());
|
||||||
|
xzdProjectInternalAccountsService.insertByBo(boValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//参与单位信息
|
//参与单位信息
|
||||||
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()){
|
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()){
|
||||||
// 获取原有记录的ID列表
|
// 获取原有记录的ID列表
|
||||||
List<Long> oldUnitIds = oldValue.getCjdw().stream()
|
if (oldValue.getCjdw() != null && !oldValue.getCjdw().isEmpty()) {
|
||||||
.map(XzdProjectParticipatingUnitsVo::getId)
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
// 删除原有记录
|
//把双方都转换为实体
|
||||||
if (!oldUnitIds.isEmpty()) {
|
List<XzdProjectParticipatingUnits> old = new ArrayList<>();
|
||||||
xzdProjectParticipatingUnitsService.removeBatchByIds(oldUnitIds);
|
for (XzdProjectParticipatingUnitsVo Vo : oldValue.getCjdw()) {
|
||||||
|
XzdProjectParticipatingUnits temp = new XzdProjectParticipatingUnits();
|
||||||
|
BeanUtils.copyProperties(Vo, temp);
|
||||||
|
old.add(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 插入新记录
|
List<XzdProjectParticipatingUnits> now = new ArrayList<>();
|
||||||
for (XzdProjectParticipatingUnitsBo participatingUnitsBo : bo.getCjdw()) {
|
for (XzdProjectParticipatingUnitsBo boValue : bo.getCjdw()) {
|
||||||
participatingUnitsBo.setId(null); // 清除ID避免主键冲突
|
if (boValue.getId() == null){
|
||||||
participatingUnitsBo.setXzdProjectId(update.getId());
|
boValue.setXzdProjectId(update.getId());
|
||||||
xzdProjectParticipatingUnitsService.insertByBo(participatingUnitsBo);
|
}
|
||||||
|
XzdProjectParticipatingUnits temp = new XzdProjectParticipatingUnits();
|
||||||
|
BeanUtils.copyProperties(boValue, temp);
|
||||||
|
now.add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (XzdProjectParticipatingUnits warehouses : old) {
|
||||||
|
if (!now.contains(warehouses)) {
|
||||||
|
// 删除不存在的记录
|
||||||
|
xzdProjectParticipatingUnitsService.removeById(warehouses.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xzdProjectParticipatingUnitsService.saveOrUpdateBatch( now);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
for (XzdProjectParticipatingUnitsBo boValue : bo.getCjdw()) {
|
||||||
|
boValue.setXzdProjectId(update.getId());
|
||||||
|
xzdProjectParticipatingUnitsService.insertByBo(boValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -422,8 +449,13 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
|
|||||||
personnelLambdaQueryWrapper.eq(XzdProjectPersonnel::getXzdProjectId, id);
|
personnelLambdaQueryWrapper.eq(XzdProjectPersonnel::getXzdProjectId, id);
|
||||||
List<XzdProjectPersonnel> list = xzdProjectPersonnelService.list(personnelLambdaQueryWrapper);
|
List<XzdProjectPersonnel> list = xzdProjectPersonnelService.list(personnelLambdaQueryWrapper);
|
||||||
for (XzdProjectPersonnel xzdProjectPersonnel : list) {
|
for (XzdProjectPersonnel xzdProjectPersonnel : list) {
|
||||||
if (xzdProjectPersonnel.getFileId() != null){
|
if (xzdProjectPersonnel.getFileId() != null && !xzdProjectPersonnel.getFileId().isEmpty()) {
|
||||||
|
try {
|
||||||
sysOssService.deleteWithValidByIds(List.of(Long.valueOf(xzdProjectPersonnel.getFileId())), false);
|
sysOssService.deleteWithValidByIds(List.of(Long.valueOf(xzdProjectPersonnel.getFileId())), false);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
log.warn("项目人员关联文件ID格式不正确,fileId: {}", xzdProjectPersonnel.getFileId(), e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xzdProjectPersonnelService.remove(personnelLambdaQueryWrapper);
|
xzdProjectPersonnelService.remove(personnelLambdaQueryWrapper);
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
profile.city as cs,
|
profile.city as cs,
|
||||||
user3.nick_name as lrr,
|
user3.nick_name as lrr,
|
||||||
project.create_time as createTime,
|
project.create_time as createTime,
|
||||||
|
project.project_amount as projectAmount,
|
||||||
profile.height as gd,
|
profile.height as gd,
|
||||||
project.contracting_method as contractingMethod,
|
project.contracting_method as contractingMethod,
|
||||||
project.manager_execution_phone as managerExecutionPhone,
|
project.manager_execution_phone as managerExecutionPhone,
|
||||||
@ -78,6 +79,10 @@
|
|||||||
AND user2.nick_name = #{xmbajl}
|
AND user2.nick_name = #{xmbajl}
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
|
<if test='selfId != null and selfId != ""'>
|
||||||
|
AND project.id != #{selfId}
|
||||||
|
</if>
|
||||||
|
|
||||||
</where>
|
</where>
|
||||||
|
|
||||||
<if test='pageNum != null and pageSize != null'>
|
<if test='pageNum != null and pageSize != null'>
|
||||||
|
|||||||
Reference in New Issue
Block a user