代码升级

This commit is contained in:
ajaxfan
2021-02-16 12:11:17 +08:00
parent d2b68ac345
commit 076b7bd362
25 changed files with 498 additions and 129 deletions

View File

@ -1,5 +1,6 @@
package com.chinaunicom.mall.ebtp.project;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -8,17 +9,18 @@ import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
@SpringBootApplication(exclude = { DruidDataSourceAutoConfigure.class, DataSourceAutoConfiguration.class })
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class
})
@EnableFeignClients
@EnableEurekaClient
@MapperScan({ "com.chinaunicom.mall.ebtp.project.**.dao" })
@MapperScan({"com.chinaunicom.mall.ebtp.project.**.dao"})
@ComponentScan("com.chinaunicom.mall.ebtp.*")
public class BizServiceEbtpProjectApplication {
public static void main(String[] args) {
SpringApplication.run(BizServiceEbtpProjectApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(BizServiceEbtpProjectApplication.class, args);
}
}

View File

@ -1,10 +1,13 @@
package com.chinaunicom.mall.ebtp.project.baseoperlog.aop;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
import com.chinaunicom.mall.ebtp.common.util.HttpContextUtils;
import com.chinaunicom.mall.ebtp.common.util.IPUtils;
import com.chinaunicom.mall.ebtp.common.util.JsonUtils;
import com.chinaunicom.mall.ebtp.project.baseoperlog.service.IBaseOperLogService;
import groovy.util.logging.Slf4j;
import io.swagger.annotations.ApiOperation;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@ -16,20 +19,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
import com.chinaunicom.mall.ebtp.common.util.HttpContextUtils;
import com.chinaunicom.mall.ebtp.common.util.IPUtils;
import com.chinaunicom.mall.ebtp.common.util.JsonUtils;
import com.chinaunicom.mall.ebtp.project.baseoperlog.service.IBaseOperLogService;
import io.swagger.annotations.ApiOperation;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* 操作审计日志切面类
*
* @author huangjl
*/
@Slf4j
@Aspect
@Component
public class OperLogAspect {

View File

@ -1,5 +1,8 @@
package com.chinaunicom.mall.ebtp.project.common;
import java.util.HashMap;
import java.util.Map;
/**
* 项目建档辅助字段实体类
*
@ -351,6 +354,11 @@ public class ProjectCommonUtil {
*/
public static final String PARTAKE_TYPE_1 = "partake_type_1";
/**
* 参与方式 发公告
*/
public static final String PARTAKE_TYPE_2 = "partake_type_2";
/**
* 项目失败描述字典名
*/
@ -490,4 +498,26 @@ public class ProjectCommonUtil {
* 是否使用简化流程 0 否 1 是
*/
public static final String IS_APPROVAL_1 = "1";
/**
* 询价单1询价文件,2项目需求方案或技术方案,3其他附件
*/
public static final int INQUIRY_FILE = 1;
/**
* 模块类型1招募结果2询价单3归档单4合同模版
*/
public static final int MODULE_TYPE_2 = 2;
public static Map<String,String[]> PROCUREMENT_MODE_MAP = new HashMap<String,String[]>(){{
String[] biddingArray = {PROCUREMENT_MODE_1,PROCUREMENT_MODE_2};
String[] recruitArray = {PROCUREMENT_MODE_4};
String[] negotiationArray = {PROCUREMENT_MODE_5,PROCUREMENT_MODE_6};
//招标
this.put("01",biddingArray);
//招募
this.put("03",recruitArray);
//谈判
this.put("04",negotiationArray);
}};
}

View File

@ -135,6 +135,16 @@ public enum ProjectExceptionEnum implements BusinessExceptionAssert {
FRAME_EXCEPTION_PROJECT_EXCEPTION_CHECK_STATUS_ERROR(110058, "采购系统子项目信息版本已升级不可以发起重新评审"),
FRAME_EXCEPTION_PROJECT_EXCEPTION_SECTION_BUSINESS_MODULE_ERROR(110059, "异常的标段中含有已归档标段,不可以进行异常处理!"),
FRAME_EXCEPTION_INQUIRY_ATTACHMENT_LIST_EMPTY(110060, "询价文件不能为空"),
FRAME_EXCEPTION_PROJECT_ENTRUST_REVIEW_NUM_EMPTY(110061, "评审次数不能为空"),
FRAME_EXCEPTION_PROJECT_ENTRUST_SUPP_QUALIFY_EMPTY(110062, "资审方式不能为空"),
FRAME_EXCEPTION_PROJECT_ENTRUST_COMPAR_SELECT_MODE_EMPTY(110063, "比选方式不能为空"),
FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_CHOOSE_PROCESS(110064, "标段流程信息不能为空,请选择流程!"),
;
/**

View File

@ -32,5 +32,13 @@ public interface EbtpRespsApi {
* @return 返回应答文件信息
*/
@PostMapping("/v1/tdoc/initInquiryResponseFormat")
BaseResponse<List<String>> initInquiryResponseFormat(@RequestBody TdocVO tdocParam);
BaseResponse<Boolean> initInquiryResponseFormat(@RequestBody TdocVO tdocParam);
/**
* 修改项目报价截止时间
* @param tdoc 应答文件传入实体
* @return 返回结果
*/
@PostMapping("/v1/tdoc/updateTdocEndDateBySectionId")
BaseResponse<Boolean> updateTdocEndDateBySectionId(@RequestBody TdocVO tdoc);
}

View File

@ -25,9 +25,25 @@ public class TdocVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
private String id;
@ApiModelProperty(value = "项目id")
private String tpId;
@ApiModelProperty(value = "招标项目名称")
private String projectName;
@ApiModelProperty(value = "标段id")
private String sectionId;
@ApiModelProperty(value = "标段名称")
private String sectionName;
@ApiModelProperty("项目创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "应答截止时间")

View File

@ -8,6 +8,7 @@ import com.chinaunicom.mall.ebtp.project.baseoperlog.aop.OperLog;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.InquiryVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustInquiryService;
import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustService;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.InquiryNoticeVO;
@ -231,5 +232,20 @@ public class ProjectEntrustController{
return BaseResponse.success(inquiryService.inquiryNotice(inquiryNoticeVO));
}
/**
* 初始化询价信息接口
*
* @param inquiryVO 询价返回实体
*
* @return 返回结果
*/
@OperLog("初始化询价信息接口")
@ApiOperation("初始化询价信息接口")
@PostMapping("/initInquiryProjectEntrust")
public BaseResponse<Boolean> initInquiryProjectEntrust(@ApiParam(value = "询价实体", required = true) @RequestBody @Valid InquiryVO inquiryVO){
return BaseResponse.success(inquiryService.initProjectEntrust(inquiryVO));
}
}

View File

@ -188,7 +188,7 @@ public class ProjectEntrust extends BaseEntity implements Serializable {
/**
* 对应采购平台的采购方案id(项目实施ID)
*/
@ApiModelProperty(value = "对应采购平台的采购方案id")
@ApiModelProperty(value = "对应采购平台的项目实施ID")
private String procurementPlanId;

View File

@ -8,6 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@ -37,9 +38,10 @@ public class AttachmentVO implements Serializable {
@ApiModelProperty(value = "单据id")
private String billId;
@ApiModelProperty(value = "业务类型招募结果1评审报告,2决策依据,3其它附件询价1,2,3归档单1,2,3")
@ApiModelProperty(value = "业务类型招募结果1评审报告,2决策依据,3其它附件1询价文件,2项目需求方案或技术方案,3其他附件归档单1询价文件,2项目需求方案或技术方案,3其他附件,4决策或审批依据,5定向询价依据文件,6立项文件,7其他附件方案审批单,8评审报告,9其他附件")
private Integer businessType;
@NotNull(message = "附件名称不能为空")
@ApiModelProperty(value = "附件名称")
private String fileName;
@ -49,6 +51,7 @@ public class AttachmentVO implements Serializable {
@ApiModelProperty(value = "附件大小B")
private Long fileSize;
@NotNull(message = "文档中心附件ID不能为空")
@ApiModelProperty(value = "文档中心文件id")
private String fileId;

View File

@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@ -36,12 +37,14 @@ public class InquiryResponseFormatVO implements Serializable {
@ApiModelProperty(value = "类别名称")
private String categoryName;
@ApiModelProperty(value = "类别编码")
private String categoryCode;
@NotNull(message = "类别编码不能为空")
@ApiModelProperty(value = "类别编码 0-商务、1-技术、2-服务、3-报价、4-其他")
private String code;
@ApiModelProperty(value = "名称")
private String name;
@NotNull(message = "格式类型不能为空")
@ApiModelProperty(value = "格式类型 0:rar/zip ; 1: pdf")
private Integer type;

View File

@ -2,8 +2,10 @@ package com.chinaunicom.mall.ebtp.project.projectentrust.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
import com.chinaunicom.mall.ebtp.project.common.EbpProjectCommonUtil;
import com.chinaunicom.mall.ebtp.project.common.InquiryCommonUtil;
import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil;
import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum;
@ -16,6 +18,7 @@ import com.chinaunicom.mall.ebtp.project.projectentrust.dao.ProjectEntrustMapper
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.AttachmentVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.InquiryNoticeVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.InquiryVO;
import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustExpandService;
@ -24,13 +27,14 @@ import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustS
import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectExceptionService;
import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO;
import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService;
import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection;
import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService;
import io.seata.spring.annotation.GlobalTransactional;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
@ -58,6 +62,9 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
@Resource
private IProjectEntrustExpandService entrustExpandService;
@Resource
private IProjectSectionService sectionService;
@Resource
private EbtpRespsApi ebtpRespsApi;
@ -113,13 +120,49 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
boolean result = false;
switch (inquiryNoticeVO.getInquiryNoticeStatus()){
case ProjectCommonUtil.INQUIRY_NOTICE_STATUS_0:result = initInquiryProject(inquiryNoticeVO);break;
case ProjectCommonUtil.INQUIRY_NOTICE_STATUS_1:exceptionService.saveInquiryException(inquiryNoticeVO);break;
case ProjectCommonUtil.INQUIRY_NOTICE_STATUS_2:break;
case ProjectCommonUtil.INQUIRY_NOTICE_STATUS_1:result = exceptionService.saveInquiryException(inquiryNoticeVO);break;
case ProjectCommonUtil.INQUIRY_NOTICE_STATUS_2:result = putOffInquiry(inquiryNoticeVO);break;
default:ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_UPDATE.throwException();
}
return result;
}
/**
* 推迟询价单信息
* @param inquiryNoticeVO 询价实体
* @return 返回结果
*/
@GlobalTransactional
private boolean putOffInquiry(InquiryNoticeVO inquiryNoticeVO){
boolean result = false;
ProjectSection section = sectionService.selectByPlanId(inquiryNoticeVO.getInquiryId());
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValid(null == section);
//修改报价截至时间
if(null != inquiryNoticeVO.getEndTime()){
TdocVO tdocVO = new TdocVO();
tdocVO.setSectionId(section.getId());
tdocVO.setEndDate(inquiryNoticeVO.getEndTime());
BaseResponse<Boolean> response = ebtpRespsApi.updateTdocEndDateBySectionId(tdocVO);
if(!response.isSuccess()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess());
}
result = response.getData();
}
//修改评审室开始时间
if(null != inquiryNoticeVO.getReviewStartTime()){
Map<String, LocalDateTime> updateProcessMap = new HashMap<>(16);
updateProcessMap.put(section.getId(),inquiryNoticeVO.getReviewStartTime());
BaseResponse<Boolean> response = processApi.updateOpenTime(updateProcessMap);
if(!response.isSuccess()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess());
}
result = response.getData();
}
return result;
}
/**
* 询价返回告知结果进行初始化项目以及询价文件和投标应答格式文件信息
* @param inquiryNoticeVO 询价返回信息结果实体
@ -145,6 +188,7 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
return result;
}
@GlobalTransactional
private void initProcess(ProjectEntrustVO projectEntrustVO){
//初始化流程
@ -166,18 +210,30 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
xjVO.setTpId(recordVO.getId());
xjVO.setBsId(sectionId);
xjVO.setList(inquiryVO.getAttachmentList());
bidApi.insertTp(xjVO);
BaseResponse<Boolean> response = bidApi.insertTp(xjVO);
if(!response.isSuccess()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess());
}
//初始化应答文件
TdocVO tdocVO = new TdocVO();
tdocVO.setList(inquiryVO.getResponseFormatList());
tdocVO.setSectionId(sectionId);
tdocVO.setTpId(recordVO.getId());
tdocVO.setProjectName(recordVO.getProjectName());
tdocVO.setCreateDate(recordVO.getCreateDate());
tdocVO.setSectionName(recordVO.getProjectName()+ "包件");
tdocVO.setEndDate(inquiryVO.getEndTime());
ebtpRespsApi.initInquiryResponseFormat(tdocVO);
response = ebtpRespsApi.initInquiryResponseFormat(tdocVO);
if(!response.isSuccess()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess());
}
//修改评审室开始时间
Map<String, LocalDateTime> updateProcessMap = new HashMap<>();
Map<String, LocalDateTime> updateProcessMap = new HashMap<>(16);
updateProcessMap.put(sectionId,inquiryVO.getReviewStartTime());
processApi.updateOpenTime(updateProcessMap);
response = processApi.updateOpenTime(updateProcessMap);
if(!response.isSuccess()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess());
}
}
/**
@ -187,46 +243,54 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
*/
private ProjectEntrustVO assembleProjectEntrust(InquiryVO inquiryVO) {
ProjectEntrustVO entrustVO = new ProjectEntrustVO();
//ID
entrustVO.setId(PropertyUtils.getSnowflakeId());
//采购人/询价单位名称
entrustVO.setPurchaser(inquiryVO.getInquiryOrg());
//代理公司/代理机构编号
entrustVO.setAgencyCompany(inquiryVO.getDelegationCode());
//代理公司名称/代理机构名称
entrustVO.setAgencyCompanyName(inquiryVO.getDelegationName());
//项目名称/标题
entrustVO.setProjectName(inquiryVO.getTitle());
//采购类型
entrustVO.setProcurementType(InquiryCommonUtil.BID_TYPE_MAP.get(inquiryVO.getBidType()));
//采购方式
entrustVO.setProcurementMode(InquiryCommonUtil.BUY_WAY_MAP.get(inquiryVO.getBuyWay()));
//组织方式
entrustVO.setOrganization(InquiryCommonUtil.IS_DELEGATION_MAP.get(inquiryVO.getIsDelegation()));
//采购经理
entrustVO.setPurchasingManager(inquiryVO.getManagerBy());
entrustVO.setPurchasingManagerName(inquiryVO.getManagerCn());
entrustVO.setPurchasingManagerPhone(inquiryVO.getTelphone());
ProjectEntrustVO result = new ProjectEntrustVO();
//编号
result.setId(PropertyUtils.getSnowflakeId());
//状态
result.setStatus(ProjectCommonUtil.ENTRUS_STATUS_1);
//项目名称
result.setProjectName(inquiryVO.getTitle());
//实施项目编号
result.setProjectNumber(inquiryVO.getInquiryNo());
//对应采购平台的采购方案id(项目实施ID)
result.setProcurementPlanId(inquiryVO.getInquiryId());
//起草人
entrustVO.setDraftUser(inquiryVO.getManagerBy());
result.setDraftUser(inquiryVO.getManagerBy());
//采购人
result.setPurchaser(inquiryVO.getInquiryOrg());
//委托部门名称
result.setEntrustDepartmentName(inquiryVO.getInquiryCompany());
//代理公司/代理机构编号
result.setAgencyCompany(inquiryVO.getDelegationCode());
//代理公司名称/代理机构名称
result.setAgencyCompanyName(inquiryVO.getDelegationName());
//采购类型
result.setProcurementType(InquiryCommonUtil.BID_TYPE_MAP.get(inquiryVO.getBidType()));
//采购方式
result.setProcurementMode(InquiryCommonUtil.BUY_WAY_MAP.get(inquiryVO.getBuyWay()));
//组织方式
result.setOrganization(InquiryCommonUtil.IS_DELEGATION_MAP.get(inquiryVO.getIsDelegation()));
//采购经理
result.setPurchasingManager(inquiryVO.getManagerBy());
result.setPurchasingManagerName(inquiryVO.getManagerCn());
result.setPurchasingManagerPhone(inquiryVO.getTelphone());
//如果自主采购 采购经理就是项目经理
if(StringUtils.equals(ProjectCommonUtil.ORGANIZATION_2,entrustVO.getOrganization())){
entrustVO.setProjectManager(entrustVO.getPurchasingManager());
entrustVO.setProjectManagerName(entrustVO.getPurchasingManagerName());
entrustVO.setProjectManagerPhone(entrustVO.getPurchasingManagerPhone());
entrustVO.setStatus(ProjectCommonUtil.ENTRUS_STATUS_3);
if(StringUtils.equals(ProjectCommonUtil.ORGANIZATION_2,result.getOrganization())){
result.setProjectManager(inquiryVO.getManagerBy());
result.setProjectManagerName(inquiryVO.getManagerCn());
result.setProjectManagerPhone(inquiryVO.getTelphone());
result.setStatus(ProjectCommonUtil.ENTRUS_STATUS_3);
}
ProjectEntrustExpand expand = new ProjectEntrustExpand();
expand.setId(PropertyUtils.getSnowflakeId());
expand.setEntrustId(entrustVO.getId());
expand.setEntrustId(result.getId());
expand.setInquiry(inquiryVO);
entrustVO.setProjectEntrustExpand(expand);
result.setProjectEntrustExpand(expand);
return entrustVO;
return result;
}
/**
@ -251,16 +315,33 @@ public class ProjectEntrustInquiryServiceImpl extends BaseServiceImpl<ProjectEnt
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_BUY_WAY_EMPTY.throwException();
}
//询价单中中选方式0:综合评分法1:最低价法
if(null != inquiryVO.getSelectType()){
if(null == inquiryVO.getSelectType()){
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_SELECT_TYPE_EMPTY.throwException();
}
//询价单唱标状态
if(null != inquiryVO.getAnnouncementStatus()){
if(null == inquiryVO.getAnnouncementStatus()){
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_ANNOUNCEMENT_STATUS_EMPTY.throwException();
}
//询价商品列表
if(null == inquiryVO.getInquiryGoodsList() || inquiryVO.getInquiryGoodsList().size() <= 0){
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_INQUIRY_GOODS_EMPTY.throwException();
}
//询价文件不能为空
if(null == inquiryVO.getAttachmentList() || inquiryVO.getAttachmentList().size() <= 0){
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_ATTACHMENT_LIST_EMPTY.throwException();
}
//询价文件不能为空
boolean isExistInquiryFile = false;
for(AttachmentVO attachmentVO : inquiryVO.getAttachmentList()){
//模块类型为询价单 并且 文件类型是询价文件
if(ProjectCommonUtil.MODULE_TYPE_2 == attachmentVO.getModuleType() && ProjectCommonUtil.INQUIRY_FILE == attachmentVO.getBusinessType()){
isExistInquiryFile = true;
}
}
if(!isExistInquiryFile){
ProjectExceptionEnum.FRAME_EXCEPTION_INQUIRY_ATTACHMENT_LIST_EMPTY.throwException();
}
}
}

View File

@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
@ -370,7 +371,7 @@ public class ProjectEntrustServiceImpl extends BaseServiceImpl<ProjectEntrustMap
//代理公司名称
result.setAgencyCompanyName(purpImplementSendVO.getPurpSuperVo().getAgencyComp());
//采购类型
result.setProcurementType(EbpProjectCommonUtil.PROCUREMENT_TYPE_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getPurcMode()));
result.setProcurementType(EbpProjectCommonUtil.PROCUREMENT_TYPE_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getTargetType()));
//组织方式
result.setOrganization(EbpProjectCommonUtil.ORGANIZATIONAL_MAP.get(purpImplementSendVO.getPurpSuperVo().getOrganizationalForm()));
//采购方式
@ -405,7 +406,9 @@ public class ProjectEntrustServiceImpl extends BaseServiceImpl<ProjectEntrustMap
@Transactional(rollbackFor = Exception.class)
public boolean saveProject(ProjectEntrustVO projectEntrustVO){
boolean result = this.save(BeanUtil.toBean(projectEntrustVO,ProjectEntrust.class));
ProjectEntrust projectEntrust = BeanUtil.toBean(projectEntrustVO,ProjectEntrust.class);
boolean result = this.save(projectEntrust);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_SAVE.customValid(!result);
@ -558,12 +561,30 @@ public class ProjectEntrustServiceImpl extends BaseServiceImpl<ProjectEntrustMap
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY.throwException();
}
//采购方式 寻源业务
if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_001,purpSuperVo.getBusinessType())&&
StringUtils.isEmpty((purpBaseInfo.getProjBaseInfoVO().getPurcMode()))){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY.throwException();
}
//如果采购方式是招募方式 评审方法字段存入评审次数字典值
if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_002,purpSuperVo.getBusinessType())){
//评审次数 字典
if(StringUtils.isEmpty(purpBaseInfo.getProjBaseInfoVO().getReviewNum())){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_REVIEW_NUM_EMPTY.throwException();
}
}else{
//采购方式 寻源业务
if(StringUtils.isEmpty((purpBaseInfo.getProjBaseInfoVO().getPurcMode()))){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY.throwException();
}else{
//当项目是招标项目(公开招标、邀请招标)、比选项目 资审方式为空 提示错误信息
String[] isSuppQualifyList = {EbpProjectCommonUtil.PURC_MODE_001,EbpProjectCommonUtil.PURC_MODE_002,EbpProjectCommonUtil.PURC_MODE_005};
if(Arrays.asList(isSuppQualifyList).contains(purpBaseInfo.getProjBaseInfoVO().getPurcMode())
&& StringUtils.isEmpty(purpBaseInfo.getProjBaseInfoVO().getSuppQualify())){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_SUPP_QUALIFY_EMPTY.throwException();
}
//比选方式 字典
if(StringUtils.equals(purpBaseInfo.getProjBaseInfoVO().getPurcMode(),EbpProjectCommonUtil.PURC_MODE_005)
&& StringUtils.isEmpty(purpBaseInfo.getProjBaseInfoVO().getComparSelectMode())){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_COMPAR_SELECT_MODE_EMPTY.throwException();
}
}
}
}
}

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 项目建档信息 controller
@ -36,7 +37,7 @@ public class ProjectRecordController{
*
* @param projectRecord 项目建档信息
*
* @return
* @return 返回结果
*/
@ApiOperation("插入新数据")
@PostMapping("")
@ -52,7 +53,7 @@ public class ProjectRecordController{
*
* @param projectRecord 项目建档信息
*
* @return
* @return 返回结果
*/
@ApiOperation("修改数据")
@PutMapping("")
@ -67,7 +68,7 @@ public class ProjectRecordController{
*
* @param id 项目ID
*
* @return
* @return 返回结果
*/
@ApiOperation("查询数据")
@GetMapping("/{id}")
@ -83,7 +84,7 @@ public class ProjectRecordController{
*
* @param projectRecord 分页信息
*
* @return
* @return 返回结果
*/
@ApiOperation("查询分页数据")
@PostMapping("/getPage")
@ -111,7 +112,7 @@ public class ProjectRecordController{
*
* @param projectRecordVO 项目查询条件
*
* @return
* @return 返回结果
*/
@ApiOperation("查询集合数据")
@PostMapping("/getList")
@ -163,4 +164,28 @@ public class ProjectRecordController{
return BaseResponse.success(projectRecordService.getProjectIsUpdate(id));
}
/**
* 查询当前项目经理参与项目分类统计
* @param selectDate 查询条件
* @return 返回结果
*/
@ApiOperation("查询当前项目经理参与项目分类统计")
@PostMapping("/getUserProjectRecordCount/{selectDate}")
public BaseResponse<List<Map<String,Integer>>> getUserProjectRecordCount(@ApiParam(value = "主键id", required = true) @PathVariable String selectDate){
return BaseResponse.success(projectRecordService.getUserProjectRecordCount(selectDate));
}
/**
* 查询项目经理登录首页展示项目信息
* @param limit 展示条数
* @return 返回结果 <项目采购模式,项目集合>
*/
@ApiOperation("查询项目经理登录首页展示项目信息")
@PostMapping("/getUserProjectRecordListByProcurementMode/{limit}")
public BaseResponse<Map<String,List<ProjectRecord>>> getUserProjectRecordListByProcurementMode(@ApiParam(value = "主键id", required = true) @PathVariable Integer limit){
return BaseResponse.success(projectRecordService.getUserProjectRecordListByProcurementMode(limit));
}
}

View File

@ -3,8 +3,12 @@ package com.chinaunicom.mall.ebtp.project.projectrecord.dao;
import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper;
import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord;
import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 项目建档mapper
* @author daixc
@ -26,4 +30,11 @@ public interface ProjectRecordMapper extends IBaseMapper<ProjectRecord> {
* @return 返回结果
*/
int deletePhysical(@Param(value = "id") String id);
/**
* 项目首页查询信息
* @param vo 实体
* @return 返回结果
*/
List<Map<String, Integer>> getUserProjectRecordCount(@Param(value = "vo") ProjectRecordVO vo);
}

View File

@ -109,4 +109,12 @@
<delete id="deletePhysical" parameterType="java.lang.String">
delete from biz_project_record where id = #{id}
</delete>
<select id="getUserProjectRecordCount" parameterType="com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO" resultType="java.util.Map">
SELECT bid_method_dict as bidMethodDict,
count(id) projectCount
from biz_project_record
where date_format(create_date, '%Y%m') = #{vo.selectDate}
and app_manager_id = #{vo.appManagerId}
GROUP BY bid_method_dict ORDER BY bid_method_dict
</select>
</mapper>

View File

@ -324,7 +324,7 @@ public class ProjectRecord extends BaseEntity implements Serializable {
@ApiModelProperty(value = "是否开标使用IPass进行解密 0 是 1 否")
private String isIPassDecode;
@ApiModelProperty(value = "招募开始时间")
@ApiModelProperty(value = "招募开始时间 | 询价预计评审开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime recruitStartTime;
@ -341,7 +341,7 @@ public class ProjectRecord extends BaseEntity implements Serializable {
private String isApproval;
@ApiModelProperty(value = "邀请方式(作废 和 参与方式重复)")
@ApiModelProperty(value = "询价方式(公开询价 定向询价)")
private String invitationMethod;
}

View File

@ -63,4 +63,10 @@ public class ProjectRecordVO extends ProjectRecord implements Serializable {
@ApiModelProperty(value = "采购方式集合")
private List<String> selectBidMethod;
@ApiModelProperty(value = "查询条数")
private Integer limit;
@ApiModelProperty(value = "首页查询时间")
private String selectDate;
}

View File

@ -47,6 +47,20 @@ public interface IProjectRecordService extends IBaseService<ProjectRecord>{
*/
boolean assent(String entrustId);
/**
* 查询当前用户登录首页展示项目信息
* @param limit 展示条数
* @return 返回结果 <项目采购模式,项目集合>
*/
Map<String,List<ProjectRecord>> getUserProjectRecordListByProcurementMode(Integer limit);
/**
* 查询当前项目经理参与项目分类统计
* @param selectDate 查询条件
* @return 返回结果
*/
List<Map<String,Integer>> getUserProjectRecordCount(String selectDate);
/**
* 删除项目建档信息
* @param id 项目建档ID

View File

@ -47,15 +47,13 @@ import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier;
import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO;
import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplierService;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 对数据表 biz_project_record 操作的 serviceImpl
@ -63,6 +61,7 @@ import java.util.Map;
* @date 2020/10/26
*
*/
@Slf4j
@Service
public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMapper,ProjectRecord> implements IProjectRecordService {
@ -130,8 +129,8 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
query.eq("procurement_type", projectRecordVO.getProcurementType());
}
if(StringUtils.isNotBlank(projectRecordVO.getBidMethodDict())){
query.eq("bid_method_dict", projectRecordVO.getBidMethodDict());
if(StringUtils.isNotBlank(projectRecordVO.getAppManagerId())){
query.eq("app_manager_id", projectRecordVO.getAppManagerId());
}
if(null != projectRecordVO.getStatus()){
@ -146,16 +145,25 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
query.eq("ebp_project_id", projectRecordVO.getEbpProjectId());
}
if(StringUtils.isNotBlank(projectRecordVO.getEbpProjectId())){
query.eq("ebp_project_id", projectRecordVO.getEbpProjectId());
}
if(null != projectRecordVO.getSelectBidMethod() && projectRecordVO.getSelectBidMethod().size() > 0){
query.in("bid_method_dict", projectRecordVO.getSelectBidMethod());
}
if(null != projectRecordVO.getLimit()){
query.last("limit "+ projectRecordVO.getLimit());
}
return query;
}
@Override
public IPage<ProjectRecordVO> getPage(ProjectRecordVO projectRecordVO) {
QueryWrapper<ProjectRecord> query = getProjectRecordQueryWrapper(projectRecordVO);
if(null == projectRecordVO.getBasePageRequest()){
@ -230,6 +238,7 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
//当项目不是单一来源简化流程 初始化评审流程
if(!(StringUtils.equals(projectRecord.getBidMethodSubDict(),ProjectCommonUtil.PROCUREMENT_MODE_6) && StringUtils.equals(projectRecord.getIsApproval(),ProjectCommonUtil.IS_APPROVAL_1))){
log.info("初始化流程调用方法 projectID"+id + " isReviewMethod"+isReviewMethod + " sectionMaps"+JsonUtils.objectToJson(sectionMaps));
initialize(id, isReviewMethod, sectionMaps);
}
@ -238,10 +247,8 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
//插入标段变更记录
sectionMaps.forEach((key,value) -> sectionIds.add(key));
sectionFlowService.saveSectionList(sectionIds,ProjectCommonUtil.BUSINESS_MODULE_1,businessModule);
if(null != projectRecord){
initInvitation(projectRecord);
}
//初始化邀请调用
initInvitation(projectRecord);
return result;
}
@ -299,7 +306,7 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
BaseResponse<Boolean> result = ebtpMallProcessApi.initialize(id,sectionMaps,isReviewMethod);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_INIT_ERROR.customValid(!result.isSuccess());
log.info("初始化流程返回 projectID"+id + " 返回结果:"+JsonUtils.objectToJson(result));
}
@Override
@ -330,32 +337,36 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
}
//项目进行中
if(projectRecord.getStatus() == ProjectCommonUtil.PROJECT_STATUS_2){
QueryWrapper<ProjectSection> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_id",id);
//判断是否资格预审项目
if (StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_1) ||
StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_3)
) {
//资格预审 大于2 资审招标
queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_2);
}else{
//不是资格预审 大于7 招标
queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_7);
}
//标段信息状态不能过招标才可以进行修改
int count = projectSectionService.count(queryWrapper);
if(count <= 0){
result = true;
}
result = isMoreThanTheToBId(projectRecord);
}
}
return result;
}
/**
* 获取进行中项目标段是否大于招标环节 如果大于前端项目和标段信息不允许修改
* @param projectRecord 项目信息
* @return 返回结果
*/
private boolean isMoreThanTheToBId(ProjectRecord projectRecord) {
QueryWrapper<ProjectSection> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_id", projectRecord.getId());
//判断是否资格预审项目
if (StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_1) ||
StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_3)
) {
//资格预审 大于2 资审招标
queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_2);
}else{
//不是资格预审 大于7 招标
queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_7);
}
//标段信息状态不能过招标才可以进行修改
int count = projectSectionService.count(queryWrapper);
return count <= 0;
}
@Override
public boolean initProjectByIndependentProcurement(ProjectEntrustVO projectEntrustVO) {
//1 拼装信息
@ -411,6 +422,39 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
return insertProject(resultMap);
}
@Override
public Map<String,List<ProjectRecord>> getUserProjectRecordListByProcurementMode(Integer limit){
limit = null == limit? 5:limit;
BaseCacheUser cacheUser = cacheUserService.getCacheUser();
Map<String,List<ProjectRecord>> resultMap = new HashMap<>(16);
for(String key:ProjectCommonUtil.PROCUREMENT_MODE_MAP.keySet()){
ProjectRecordVO vo = new ProjectRecordVO();
String[] procurementModes = ProjectCommonUtil.PROCUREMENT_MODE_MAP.get(key);
//如果当前查询采购方式大于1种 则放入list中
if(procurementModes.length > 1){
vo.setSelectBidMethod(new ArrayList<>(Arrays.asList(procurementModes)));
}else{
vo.setBidMethodDict(procurementModes[0]);
}
vo.setLimit(limit);
vo.setAppManagerId(cacheUser.getUserId());
QueryWrapper<ProjectRecord> query = getProjectRecordQueryWrapper(vo);
query.orderByDesc("create_date");
resultMap.put(key,this.list(query));
}
return resultMap;
}
@Override
public List<Map<String,Integer>> getUserProjectRecordCount(String selectDate){
BaseCacheUser cacheUser = cacheUserService.getCacheUser();
ProjectRecordVO vo = new ProjectRecordVO();
vo.setAppManagerId(cacheUser.getUserId());
vo.setSelectDate(selectDate);
List<Map<String,Integer>> result = projectRecordMapper.getUserProjectRecordCount(vo);
return result;
}
/**
* 校验项目提交时前置条件
* @param id 项目ID
@ -496,8 +540,8 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
//业务类型
record.setBidMethodSubDict(purpSuperVO.getBusinessType());
//比选方式 字典
if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_3)){
//比选方式 字典
record.setBiddingSignDict(EbpProjectCommonUtil.SELECTION_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getComparSelectMode()));
}
@ -505,9 +549,14 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_4)){
//评审次数 字典
record.setExaminationMethodDict(EbpProjectCommonUtil.RECRUITMENT_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getReviewNum()));
}else{
}else if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_1)
||StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_2)
||StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_3)){
//资审方式 字典
record.setExaminationMethodDict(EbpProjectCommonUtil.EXAMINATION_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getSuppQualify()));
}else if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_5)){
//竞谈默认初始化 发公告
record.setExaminationMethodDict(ProjectCommonUtil.PARTAKE_TYPE_2);
}
//是否为竞拍项目
@ -739,6 +788,10 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
record.setTenderAgencyName(projectEntrust.getAgencyCompanyName());
//委托单ID
record.setEntrustId(expand.getEntrustId());
//询价方式
record.setInvitationMethod(InquiryCommonUtil.INQUIRY_MODEL_MAP.get(inquiryVO.getInquiryModel()));
//询价预计评审开始时间
record.setRecruitStartTime(inquiryVO.getReviewStartTime());
//采购类型 标的类型
record.setProcurementType(projectEntrust.getProcurementType());
//采购方式
@ -752,12 +805,14 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
//询价项目ID
record.setEbpProjectId(inquiryVO.getInquiryId());
//询价项目编号
record.setEbpParentProjectNumber(inquiryVO.getInquiryNo());
record.setEbpProjectNumber(inquiryVO.getInquiryNo());
//是否使用客户端工具制作应答文件
//是否使用客户端工具制作应答文件
record.setIsClientFile(ProjectCommonUtil.IS_IPASS_YES);
//是否使用IPass制作应答文件
record.setIsIPassFile(ProjectCommonUtil.IS_IPASS_YES);
//是否使用IPass制作应答文件
record.setIsIPassFile(ProjectCommonUtil.IS_IPASS_NO);
//是否开标使用IPass进行解密 否
record.setIsIPassDecode(ProjectCommonUtil.IS_IPASS_NO);
ProjectSection section = new ProjectSection();
@ -785,6 +840,8 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
section.setSelectionMethod(InquiryCommonUtil.INQUIRY_MODEL_MAP.get(inquiryVO.getInquiryModel()));
//询价初始化直接到投标
section.setBusinessModule(ProjectCommonUtil.BUSINESS_MODULE_8);
//预算金额
section.setBidSectContractPrice(inquiryVO.getBudgetNum());
//标段流程
DictChooseProcess chooseProcess = new DictChooseProcess();
chooseProcess.setProcurementMode(record.getBidMethodDict());
@ -793,6 +850,7 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
if(null == chooseProcessList || chooseProcessList.size() != 1){
ProjectExceptionEnum.FRAME_EXCEPTION_CHOOSE_PROCESS_NOT_FIND.throwException();
}
chooseProcess = chooseProcessList.get(0);
section.setChooseProcess(chooseProcess.getChooseProcess());
//项目状态
section.setStatus(ProjectCommonUtil.SECTION_STATUS_2);
@ -851,7 +909,6 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
resultList.add(material);
}
}
return resultList;
}

View File

@ -35,6 +35,7 @@ import com.chinaunicom.mall.ebtp.project.projectreevaluation.service.IProjectReE
import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection;
import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -42,6 +43,7 @@ import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -51,6 +53,7 @@ import java.util.stream.Collectors;
* @date 2020/12/20
*
*/
@Slf4j
@Service
public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEvaluationMapper,ProjectReEvaluation> implements IProjectReEvaluationService {
@ -325,31 +328,49 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
int roomSort = 1;
//初始化评审室信息
log.info("初始化评审 请求参数:"+ evaluation.getProjectId(), evaluation.getSectionId(), roomSort);
BaseResponse<AgainRoomVO> response = mallProcessApi.againinitialize(evaluation.getProjectId(), evaluation.getSectionId(), roomSort);
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(response.getMessage(),!response.isSuccess());
log.info("初始化评审 返回结果:"+ JsonUtils.objectToJson(response));
AgainRoomVO againRoomVO = response.getData();
//复制招标信息
log.info("复制招标信息 请求参数:"+ JsonUtils.objectToJson(againRoomVO));
response = ebtpMallBidApi.copyDocument(againRoomVO);
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(response.getMessage(),!response.isSuccess());
log.info("复制招标信息 返回结果:"+ JsonUtils.objectToJson(response));
//复制投标信息
log.info("复制投标信息 请求参数:"+ JsonUtils.objectToJson(response.getData()),evaluation.getAssessId());
response = ebtpTenderApi.reviewAgain(response.getData(),evaluation.getAssessId());
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(response.getMessage(),!response.isSuccess());
log.info("复制投标信息 返回结果:"+ JsonUtils.objectToJson(response));
//复制应答信息
log.info("复制应答信息 请求参数:"+ JsonUtils.objectToJson(response.getData()));
response = ebtpRespsApi.copyTdocByAgainRoom(response.getData());
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(response.getMessage(),!response.isSuccess());
log.info("复制应答信息 返回结果:"+ JsonUtils.objectToJson(response));
//复制评审设置信息
log.info("复制评审设置信息 请求参数:"+ JsonUtils.objectToJson(response.getData()));
BaseResponse<Boolean> rsmsResponse = ebtpRsmsApi.again(response.getData());
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(rsmsResponse.getMessage(),!rsmsResponse.isSuccess());
log.info("复制评审设置信息 返回结果:"+ JsonUtils.objectToJson(rsmsResponse));
//是否专家与上次一致 如果 是 进行复制
if(StringUtils.equals(ProjectCommonUtil.IS_AGREEMENT_YES,evaluation.getIsAgreement())){
BaseResponse<Boolean> juryResponse = ebtpRsmsApi.copyJury(evaluation.getAssessId(),againRoomVO.getRoomId());
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(juryResponse.getMessage(),!juryResponse.isSuccess());
}
//修改评审开始时间
Map<String, LocalDateTime> updateProcessMap = new HashMap<>(16);
updateProcessMap.put(evaluation.getSectionId(),evaluation.getEvaluationStartTime());
log.info("修改评审开始时间 请求参数:"+ JsonUtils.objectToJson(updateProcessMap));
rsmsResponse = mallProcessApi.updateOpenTime(updateProcessMap);
ProjectExceptionEnum.FRAME_EXCEPTION_ERROR.customValidName(rsmsResponse.getMessage(),!rsmsResponse.isSuccess());
log.info("修改评审开始时间 返回结果:"+ JsonUtils.objectToJson(rsmsResponse));
sectionService.calibrationToEvaluation(evaluation.getSectionId());
}

View File

@ -235,7 +235,7 @@ public class ProjectSectionController{
* @param sectionId 项目标段ID
* @return 返回结果
*/
@ApiOperation("标段修改业务模块 定标到归档")
@ApiOperation("标段修改业务模块 修改标段到归档")
@PostMapping("/calibrationToArchive")
public BaseResponse<Boolean> calibrationToArchive(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") String sectionId){
@ -254,6 +254,18 @@ public class ProjectSectionController{
return BaseResponse.success(projectSectionService.calibrationToEvaluation(sectionId));
}
/**
* 标段修改业务模块 定标到评标
* @param sectionId 项目标段ID
* @return 返回结果
*/
@ApiOperation("标段修改业务模块 定标到投标 招募多轮专用")
@PostMapping("/calibrationToTender")
public BaseResponse<Boolean> calibrationToTender(@ApiParam(value = "项目标段ID集合", required = true) @RequestParam(name = "sectionId") String sectionId){
return BaseResponse.success(projectSectionService.calibrationToTender(sectionId));
}
/**
* 项目标段信息查询数据(项目标段和项目拼装数据)

View File

@ -160,6 +160,7 @@
from biz_project_section t
left join biz_project_section_exception e on e.section_id = t.id and e.exception_id = ${exceptionId}
where t.project_id = ${projectId} and t.status != '9'
and exists (select e.* from biz_project_section_exception e,biz_project_section s where s.id = e.section_id and s.project_id = ${projectId} and e.exception_id != ${exceptionId})
</select>
<select id="selectEditSectionBySelect"

View File

@ -101,7 +101,7 @@ public class ProjectSection extends BaseEntity implements Serializable {
/**
* 评审规则(合格制|数量有限制)
*/
@ApiModelProperty(value = "评审规则(合格制|数量有限制)")
@ApiModelProperty(value = "招募方式评审规则(合格制|数量有限制)")
private String reviewRules;
/**

View File

@ -137,6 +137,13 @@ public interface IProjectSectionService extends IBaseService<ProjectSection>{
*/
boolean calibrationToEvaluation(String sectionId);
/**
*标段修改业务模块 定标到招标
* @param sectionId 标段ID
* @return 返回结果
*/
boolean calibrationToTender(String sectionId);
/**
* 获取集合信息
* @param projectSection 查询标段集合条件
@ -166,4 +173,5 @@ public interface IProjectSectionService extends IBaseService<ProjectSection>{
* @return 返回结果
*/
ProjectSectionVO selectByPlanId(String planId);
}

View File

@ -137,6 +137,8 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
if(ProjectCommonUtil.SECTION_STATUS_0 == projectSection.getStatus()){
projectSection.setStatus(ProjectCommonUtil.SECTION_STATUS_1);
//判断流程是否选择
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_CHOOSE_PROCESS.customValid(StringUtils.isEmpty(projectSection.getChooseProcess()));
}
boolean result = this.update(projectSection,updateWrapper);
@ -268,14 +270,15 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
@Override
@Transactional(rollbackFor = Exception.class)
public boolean bidToTender(List<String> sectionIds) {
log.info("xid 2021-02-07:"+ RootContext.getXID());
log.info("xid:"+ RootContext.getXID());
UpdateWrapper<ProjectSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.in("id",sectionIds);
updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_7);
updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_8);
boolean result = this.update(updateWrapper);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result);
sectionFlowService.saveSectionList(sectionIds,ProjectCommonUtil.BUSINESS_MODULE_7,ProjectCommonUtil.BUSINESS_MODULE_8);
@ -340,7 +343,6 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
public boolean calibrationToArchive(String sectionId) {
UpdateWrapper<ProjectSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id",sectionId);
updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_11);
updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_12);
boolean result = this.update(updateWrapper);
@ -368,6 +370,22 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
return result;
}
@Override
public boolean calibrationToTender(String sectionId) {
UpdateWrapper<ProjectSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id",sectionId);
updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_11);
updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_8);
boolean result = this.update(updateWrapper);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result);
saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_11,ProjectCommonUtil.BUSINESS_MODULE_8);
return result;
}
@Override
public List<ProjectSectionVO> selectAllBatchIds(ProjectSectionVO projectSection) {
return projectSectionMapper.selectAllBatchIds(projectSection);
@ -393,9 +411,8 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
sectionVO.setProjectPlanId(planId);
sectionVO.setNotStatus(ProjectCommonUtil.SECTION_STATUS_9);
QueryWrapper<ProjectSection> query = getQueryWrapper(sectionVO);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValid(null == query);
ProjectSection section = this.list(query).get(0);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValid(null == section);
ProjectRecord projectRecord = recordService.getById(section.getProjectId());
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RECORD_NOT_FIND.customValid(null == projectRecord);
DictProjectConfig projectConfig = new DictProjectConfig();