标后分析自动生成项目

This commit is contained in:
zzz
2025-12-11 20:15:55 +08:00
parent 97898aa395
commit 4588f3f4c0
8 changed files with 103 additions and 1 deletions

View File

@ -45,6 +45,11 @@ public class XzdBidPreProject extends BaseEntity {
*/ */
private String country; private String country;
/**
* 区域码
*/
private Long cityCode;
/** /**
* 省 * 省
*/ */

View File

@ -41,6 +41,12 @@ public class XzdBidPreProjectBo extends BaseEntity {
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName; private String projectName;
/**
* 区域码
*/
@NotBlank(message = "区域不能为空", groups = { AddGroup.class, EditGroup.class })
private Long cityCode;
/** /**
* 国家 * 国家
*/ */

View File

@ -74,6 +74,11 @@ public class XzdBidPreProjectVo implements Serializable {
@ExcelProperty(value = "区县") @ExcelProperty(value = "区县")
private String district; private String district;
/**
* 区域码
*/
private Long cityCode;
/** /**
* 工程地点 * 工程地点
*/ */

View File

@ -121,6 +121,10 @@ public class XzdPostBidAnalysis extends BaseEntity {
* 备注 * 备注
*/ */
private String remark; private String remark;
/**
* 未中标原因
*/
private String unbidReason;
/** /**
* 审核状态 * 审核状态

View File

@ -124,6 +124,11 @@ public class XzdPostBidAnalysisBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 未中标原因
*/
private String unbidReason;
/** /**
* 审核状态 * 审核状态
*/ */

View File

@ -167,6 +167,12 @@ public class XzdPostBidAnalysisVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 未中标原因
*/
private String unbidReason;
/** /**
* 审核状态 * 审核状态
*/ */

View File

@ -1,10 +1,12 @@
package org.dromara.xzd.biddingManagement.postAnalysis.service.impl; package org.dromara.xzd.biddingManagement.postAnalysis.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.enums.BusinessStatusEnum;
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;
@ -14,9 +16,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo; import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.mapper.XzdBidPreProjectMapper; import org.dromara.xzd.biddingManagement.biaoqianlixiang.mapper.XzdBidPreProjectMapper;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBqlxProjectInfoService;
import org.dromara.xzd.biddingManagement.biddingDocumentList.domain.XzdBiddingDocument; import org.dromara.xzd.biddingManagement.biddingDocumentList.domain.XzdBiddingDocument;
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdBhfxDwpm; import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdBhfxDwpm;
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdPostBidAnalysis; import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdPostBidAnalysis;
@ -27,9 +36,17 @@ import org.dromara.xzd.biddingManagement.postAnalysis.domain.vo.XzdPostBidAnalys
import org.dromara.xzd.biddingManagement.postAnalysis.mapper.XzdPostBidAnalysisMapper; import org.dromara.xzd.biddingManagement.postAnalysis.mapper.XzdPostBidAnalysisMapper;
import org.dromara.xzd.biddingManagement.postAnalysis.service.IXzdBhfxDwpmService; import org.dromara.xzd.biddingManagement.postAnalysis.service.IXzdBhfxDwpmService;
import org.dromara.xzd.biddingManagement.postAnalysis.service.IXzdPostBidAnalysisService; import org.dromara.xzd.biddingManagement.postAnalysis.service.IXzdPostBidAnalysisService;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.XzdSubcontract;
import org.dromara.xzd.domain.XzdProject;
import org.dromara.xzd.domain.XzdProjectProfile;
import org.dromara.xzd.domain.bo.XzdProjectProfileBo;
import org.dromara.xzd.domain.vo.XzdProjectTypeVo; import org.dromara.xzd.domain.vo.XzdProjectTypeVo;
import org.dromara.xzd.enums.ZxdEnum;
import org.dromara.xzd.service.IXzdProjectProfileService;
import org.dromara.xzd.service.IXzdProjectService;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo; import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -52,11 +69,22 @@ public class XzdPostBidAnalysisServiceImpl extends ServiceImpl<XzdPostBidAnalysi
private final IXzdBhfxDwpmService xzdBhfxDwpmService; private final IXzdBhfxDwpmService xzdBhfxDwpmService;
private final SysDeptMapper sysDeptMapper;
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
private final XzdBidPreProjectMapper xzdBidPreProjectMapper; private final XzdBidPreProjectMapper xzdBidPreProjectMapper;
private final IXzdProjectProfileService xzdProjectProfileService;
private final IXzdBqlxProjectInfoService xzdBqlxProjectInfoService;
@Autowired
@Lazy
private IXzdProjectService xzdProjectService;
/** /**
* 查询标后分析 * 查询标后分析
* *
@ -68,7 +96,7 @@ public class XzdPostBidAnalysisServiceImpl extends ServiceImpl<XzdPostBidAnalysi
XzdPostBidAnalysisVo vo = baseMapper.selectVoById(id); XzdPostBidAnalysisVo vo = baseMapper.selectVoById(id);
List<XzdBhfxDwpm> xzdBhfxDwpms = xzdBhfxDwpmService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdBhfxDwpm>().eq(XzdBhfxDwpm::getMasterId, id).orderByAsc(XzdBhfxDwpm::getRanking)); List<XzdBhfxDwpm> xzdBhfxDwpms = xzdBhfxDwpmService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdBhfxDwpm>().eq(XzdBhfxDwpm::getMasterId, id).orderByAsc(XzdBhfxDwpm::getRanking));
vo.setPm(MapstructUtils.convert(xzdBhfxDwpms, XzdBhfxDwpmVo.class)); vo.setPm(MapstructUtils.convert(xzdBhfxDwpms, XzdBhfxDwpmVo.class));
getName( vo); getName(vo);
return vo; return vo;
} }
@ -245,10 +273,51 @@ public class XzdPostBidAnalysisServiceImpl extends ServiceImpl<XzdPostBidAnalysi
if (vo == null) { if (vo == null) {
return; return;
} }
// 审核通过并且中标则转换项目数据
if (processEvent.getStatus().equals(BusinessStatusEnum.FINISH.getStatus()) && ZxdEnum.SFZB_F.getTypeValue().equals(vo.getBiddingResult())){
// 查询顶层下的公司id 理论只有一个
List<SysDeptVo> sysDeptVos = sysDeptMapper.selectDeptList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getDelFlag, "0").eq(SysDept::getParentId, "100"));
// 查询投标管理中的项目信息
XzdBqlxProjectInfo xzdBqlxProjectInfo = xzdBqlxProjectInfoService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdBqlxProjectInfo>().eq(XzdBqlxProjectInfo::getBidPreProjectId, vo.getProjectName()));
// 标前立项
XzdBidPreProjectVo xzdBidPreProjectVo = xzdBidPreProjectMapper.selectVoOne(new LambdaQueryWrapper<XzdBidPreProject>().eq(XzdBidPreProject::getId, vo.getProjectName()));
// 项目信息
XzdProject xzdProject = new XzdProject();
xzdProject.setProjectNumber(BatchNumberGenerator.generateBatchNumber("XMXX-"));
xzdProject.setCityCode(xzdBidPreProjectVo.getCityCode());
xzdProject.setProjectName(xzdBidPreProjectVo.getProjectName());
xzdProject.setProjectAttribute(ZxdEnum.XMXX_BHFXLY.getTypeValue());
xzdProject.setProjectType(xzdBidPreProjectVo.getProjectTypeId());
xzdProject.setManagementOrganization(sysDeptVos.getFirst().getDeptId());
xzdProject.setDefaultFinancialOrganization(sysDeptVos.getFirst().getDeptId());
xzdProject.setSsgs(sysDeptVos.getFirst().getDeptId());
xzdProject.setConstructionUnit(xzdBidPreProjectVo.getProjectTypeId());
if (xzdBqlxProjectInfo != null){
xzdProject.setConstructionUnit(xzdBqlxProjectInfo.getConstructionUnit());
}
xzdProjectService.save(xzdProject);
// 项目概况
XzdProjectProfile xzdProjectProfile = new XzdProjectProfile();
xzdProjectProfile.setXzdProjectId(xzdProject.getId());
xzdProjectProfile.setCity(xzdBidPreProjectVo.getCity());
xzdProjectProfile.setCountry(xzdBidPreProjectVo.getCountry());
xzdProjectProfile.setDistrict(xzdBidPreProjectVo.getDistrict());
xzdProjectProfile.setProvince(xzdBidPreProjectVo.getProvince());
xzdProjectProfileService.save(xzdProjectProfile);
}
vo.setAuditStatus(processEvent.getStatus()); vo.setAuditStatus(processEvent.getStatus());
this.updateById(vo); this.updateById(vo);
} }
/** /**
* 执行任务创建监听 * 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断

View File

@ -15,6 +15,8 @@ public enum ZxdEnum {
PURCHASE_PREFIX("采购合同信息前缀","CCTEG(CWZ)"), PURCHASE_PREFIX("采购合同信息前缀","CCTEG(CWZ)"),
SFWJSD_S("决算单","1"), SFWJSD_S("决算单","1"),
SFWJSD_TZ("决算单调整","2"), SFWJSD_TZ("决算单调整","2"),
SFZB_F("中标","1"),
XMXX_BHFXLY("项目属性","标后分析"),
FENBAOHETONG_PREFIX("分包合同信息前缀","CCTEG(CSG)"), FENBAOHETONG_PREFIX("分包合同信息前缀","CCTEG(CSG)"),
HETONGZTYS("合同状态","正常"), HETONGZTYS("合同状态","正常"),
HETONGZTBG("合同状态","变更"), HETONGZTBG("合同状态","变更"),