联动报价-第二版-加项目中心物资id

This commit is contained in:
yss
2024-05-28 09:07:56 +08:00
parent 4cc4275216
commit 502f1475bc
11 changed files with 306 additions and 16 deletions

View File

@ -0,0 +1,48 @@
package com.chinaunicom.mall.ebtp.project.modelmaterial.controller;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.ProjStructureQuoteModelVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
import com.chinaunicom.mall.ebtp.project.modelmaterial.service.IQuoteModelMaterialService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
@RestController
@Api(tags = "")
@RequestMapping("/v1/quotemodelmaterial")
public class QuoteModelMaterialController{
@Resource
private IQuoteModelMaterialService iquoteModelMaterialService;
/**
* 查询数据
*
* @param id 目前主键同包id
*
* @return
*/
@ApiOperation("查询数据")
@PostMapping("/findQuoteModelMaterial/{id}")
public BaseResponse<List<ProjStructureQuoteModelVO>> findQuoteModelMaterial(@PathVariable String id){
QuoteModelMaterial quoteModelMaterial = iquoteModelMaterialService.getById(id);
if(quoteModelMaterial!=null){
return BaseResponse.success(quoteModelMaterial.getModelMaterial());
}
return BaseResponse.success(null);
}
}

View File

@ -0,0 +1,15 @@
package com.chinaunicom.mall.ebtp.project.modelmaterial.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
/**
* @auto.generated
*/
@Repository
public interface QuoteModelMaterialMapper extends BaseMapper<QuoteModelMaterial> {
}

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chinaunicom.mall.ebtp.project.modelmaterial.dao.QuoteModelMaterialMapper">
<resultMap id="BaseResultMap"
type="com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial">
<result column="id" jdbcType="VARCHAR" property="id"/>
<result column="project_id" jdbcType="VARCHAR" property="projectId"/>
<result column="section_id" jdbcType="VARCHAR" property="sectionId"/>
<result column="model_material" property="modelMaterial" typeHandler="com.chinaunicom.mall.ebtp.common.config.CustomJacksonTypeHandler"/>
<result column="project_plan_id" jdbcType="VARCHAR" property="projectPlanId"/>
<result column="create_by" jdbcType="VARCHAR" property="createBy"/>
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_by" jdbcType="VARCHAR" property="updateBy"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
</resultMap>
<sql id="Base_Column_List">
a.id id,
a.project_id projectId,
a.section_id sectionId,
a.model_material modelMaterial,
a.project_plan_id projectPlanId,
a.create_by createBy,
a.create_date createDate,
a.update_by updateBy,
a.update_date updateDate,
</sql>
<!--逻辑删除方法 此方法为代码生成器生成 不允许修改 如有特殊需求 请自行新建SQL语句-->
<update id="deleteOff" parameterType="java.lang.Long">
update biz_proj_quote_model_material
set
delete_flag="deleted"
where ID=#{id,jdbcType=BIGINT}
</update>
</mapper>

View File

@ -0,0 +1,95 @@
package com.chinaunicom.mall.ebtp.project.modelmaterial.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaunicom.mall.ebtp.common.config.CustomJacksonTypeHandler;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.ProjStructureQuoteModelVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.List;
import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler;
/**
* 实体类 QuoteModelMaterial
*
* @auto.generated
*/
@Data
@Accessors(chain = true)
@ApiModel
@EqualsAndHashCode(callSuper = false)
@TableName(value = "biz_proj_quote_model_material", autoResultMap = true)
public class QuoteModelMaterial implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty(value = "主键")
private String id;
/**
* 项目ID
*/
@ApiModelProperty(value = "项目ID")
private String projectId;
/**
* 分包标段id
*/
@ApiModelProperty(value = "分包标段id")
private String sectionId;
/**
* 模型及模型物资
*/
@ApiModelProperty("方案报价模型关联关系")
@TableField(typeHandler = CustomJacksonTypeHandler.class)
private List<ProjStructureQuoteModelVO> modelMaterial;
/**
* 方案ID采购平台推送数据
*/
@ApiModelProperty(value = "方案ID采购平台推送数据")
private String projectPlanId;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(typeHandler = CustomLocalDateTimeTypeHandler.class)
private java.time.LocalDateTime createDate;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(typeHandler = CustomLocalDateTimeTypeHandler.class)
private java.time.LocalDateTime updateDate;
}

View File

@ -0,0 +1,16 @@
package com.chinaunicom.mall.ebtp.project.modelmaterial.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
/**
* 对数据表 biz_proj_quote_model_material 操作的 service
* @author Auto create
*
*/
public interface IQuoteModelMaterialService extends IService<QuoteModelMaterial>{
}

View File

@ -0,0 +1,17 @@
package com.chinaunicom.mall.ebtp.project.modelmaterial.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaunicom.mall.ebtp.project.modelmaterial.dao.QuoteModelMaterialMapper;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
import com.chinaunicom.mall.ebtp.project.modelmaterial.service.IQuoteModelMaterialService;
import org.springframework.stereotype.Service;
/**
* 对数据表 biz_proj_quote_model_material 操作的 serviceImpl
* @auto.generated
*
*/
@Service
public class QuoteModelMaterialServiceImpl extends ServiceImpl<QuoteModelMaterialMapper,QuoteModelMaterial> implements IQuoteModelMaterialService {
}

View File

@ -39,6 +39,12 @@ public class ProjQuoteModelMaterialRelVO {
@ApiModelProperty(value = "建项物料是否已删除0否1是")
private String purpMaterialIsDeleted;
@ApiModelProperty(value = "统一目录名称")
private String unifDirecName;
@ApiModelProperty(value = "统一目录编码")
private String unifDirecCode;
@ApiModelProperty(value = "物料编码")
private String materialCode;

View File

@ -5,6 +5,8 @@ package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -20,12 +22,12 @@ import java.time.LocalDateTime;
* </p>
*
* @author liuyx
* @version V1.0
* @date 2020-10-06
* @version V1.0
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "PurpMaterial对象", description = "项目物料表")
@ApiModel(value="PurpMaterial对象", description="项目物料表")
public class PurpMaterialVO {
@ -51,16 +53,19 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "需求单名称")
private String requName;
@ApiModelProperty(value = "需求单是否启用结构化报价 0否1是")
private String isStructureQuote;
@ApiModelProperty(value = "需求部门编号")
private String deptCode;
@ApiModelProperty(value = "需求部门名称")
private String deptName;
@ApiModelProperty(value = "pms项目编号")
@ApiModelProperty(value = "PMS项目编号")
private String pmsProjNo;
@ApiModelProperty(value = "pms项目名称")
@ApiModelProperty(value = "PMS项目名称")
private String pmsProjName;
@ApiModelProperty(value = "批复文号")
@ -72,13 +77,13 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "库存地址")
private String reservePlace;
@ApiModelProperty(value = "编码")
@ApiModelProperty(value = "编码")
private String materialCode;
@ApiModelProperty(value = "物料行id")
private String materialId;
@ApiModelProperty(value = "说明")
@ApiModelProperty(value = "说明")
private String materialDesc;
@ApiModelProperty(value = "物料厂家")
@ -97,7 +102,7 @@ public class PurpMaterialVO {
private String inventId;
@ApiModelProperty(value = "商品SKU")
private String goodsSKU;
private String goodsSku;
@ApiModelProperty(value = "库龄")
private String libraryAge;
@ -120,12 +125,15 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "需求数量")
private BigDecimal requNum;
@ApiModelProperty(value = "单位")
@ApiModelProperty(value = "计量单位")
private String unit;
@ApiModelProperty(value = "单价")
@ApiModelProperty(value = "不含税单价")
private BigDecimal unitAmt;
@ApiModelProperty(value = "含税单价")
private BigDecimal unitPerAmt;
@ApiModelProperty(value = "采购预算(不含税)")
private BigDecimal budgetAmt;
@ -182,7 +190,7 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "最后更新时间戳")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastUpdateTime;
@ApiModelProperty(value = "备用字段1")
@ -222,16 +230,16 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "剩余数量")
private BigDecimal unDealNum;
@ApiModelProperty(value = "剩余金额")
@ApiModelProperty(value = "剩余预算金额(不含税)元")
private BigDecimal unBudgetAmt;
@ApiModelProperty(value = "引用金额")
@ApiModelProperty(value = "引用预算金额(不含税)元")
private BigDecimal inBudgetAmt;
@ApiModelProperty(value = "剩余预计预算金额(含税)元")
private BigDecimal supplyBudgetAmt;
@ApiModelProperty(value = "引用预计预算金额(含税)")
@ApiModelProperty(value = "引用预算金额(含税")
private BigDecimal inBudgetAmtTax;
@ApiModelProperty(value = "库存名称")
@ -255,12 +263,27 @@ public class PurpMaterialVO {
@ApiModelProperty(value = "冻结数量")
private BigDecimal frozenNum;
@ApiModelProperty(value = "库存产品id")
private String stockProductsId;
@ApiModelProperty(value = "处置价格")
private BigDecimal decimalPrice;
@ApiModelProperty(value = "处置单价")
private BigDecimal decimalUnitPrice;
@ApiModelProperty(value = "供应商编号")
private String supplierNo;
@ApiModelProperty(value = "供应商")
private String supplier;
@ApiModelProperty(value = "闲置物资可使用数量")
private BigDecimal labelAvailabelNum;
@ApiModelProperty(value = "是否省份 0不是1")
private String isProvince;
@ApiModelProperty(value = "被选中的子需求")
private String rowId;
}

View File

@ -32,6 +32,8 @@ import com.chinaunicom.mall.ebtp.project.feign.MallPurpApi;
import com.chinaunicom.mall.ebtp.project.feign.entity.AnnoVO;
import com.chinaunicom.mall.ebtp.project.feign.entity.BizAssessRoom;
import com.chinaunicom.mall.ebtp.project.feign.entity.ProjInvitationFailRequest;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
import com.chinaunicom.mall.ebtp.project.modelmaterial.service.IQuoteModelMaterialService;
import com.chinaunicom.mall.ebtp.project.projectentrust.entity.inquiryentity.InquiryNoticeVO;
import com.chinaunicom.mall.ebtp.project.projectexception.dao.ProjectExceptionMapper;
import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectException;
@ -114,6 +116,8 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl<ProjectExceptio
@Resource
private EbtpEvaluationApi ebtpEvaluationApi;
@Resource
private IQuoteModelMaterialService quoteModelMaterialService;
@Override
public IPage<ProjectExceptionVO> getPage(ProjectExceptionVO projectExceptionVO) {
@ -416,11 +420,18 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl<ProjectExceptio
List<BidRatio> bidRatioList = bidRatioService.list(bidRatioQueryWrapper);
//转换成map形式方便处理数据
Map<String,List<BidRatio>> bidRatioMap = bidRatioList.stream().collect(Collectors.groupingBy(BidRatio::getSectionId));
//查询结构化报价模型
QueryWrapper<QuoteModelMaterial> quoteModelMaterialWrapper = new QueryWrapper<>();
quoteModelMaterialWrapper.in("section_id",sectionIds);
List<QuoteModelMaterial> quoteModelMaterialList = quoteModelMaterialService.list(quoteModelMaterialWrapper);
//转换成map形式方便处理数据
Map<String,List<QuoteModelMaterial>> quoteModelMaterialMap = quoteModelMaterialList.stream().collect(Collectors.groupingBy(QuoteModelMaterial::getSectionId));
//最终要插入的数据结果
List<SectionSupplier> sectionSupplierAddList = new ArrayList<>();
List<SectionMaterial> materialAddList = new ArrayList<>();
List<BidRatio> bidRatioAddList = new ArrayList<>();
List<QuoteModelMaterial> quoteModelMaterialAddList = new ArrayList<>();
//是否资审预审项目
boolean isReviewMethod = projectRecordService.isReviewMethod(projectRecord);
@ -472,6 +483,18 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl<ProjectExceptio
}
bidRatioAddList.addAll(ratioList);
}
//重新赋值新的项目ID和报价结构化模型ID
List<QuoteModelMaterial> modelMaterialList = quoteModelMaterialMap.get(section.getParentSectionId());
if (null != modelMaterialList && !modelMaterialList.isEmpty()) {
for (QuoteModelMaterial modelMaterial : modelMaterialList) {
modelMaterial.setSectionId(section.getId());
modelMaterial.setProjectId(projectRecord.getId());
modelMaterial.setCreateDate(null);
modelMaterial.setUpdateDate(null);
modelMaterial.setId(section.getId());
}
quoteModelMaterialAddList.addAll(modelMaterialList);
}
}
projectRecord.setCreateDate(null);
@ -494,6 +517,10 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl<ProjectExceptio
if (null != bidRatioAddList && !bidRatioAddList.isEmpty()) {
bidRatioService.saveBatch(bidRatioAddList);
}
//插入结构化报价模型及物资关系
if (null != quoteModelMaterialAddList && !quoteModelMaterialAddList.isEmpty()) {
quoteModelMaterialService.saveBatch(quoteModelMaterialAddList);
}
//通知招标服务邀请函信息
callEbtpMallBidApi(projectRecord, sectionSupplierList);

View File

@ -31,6 +31,8 @@ import com.chinaunicom.mall.ebtp.project.dict.service.IDictProvincesCodeService;
import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess;
import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService;
import com.chinaunicom.mall.ebtp.project.feign.*;
import com.chinaunicom.mall.ebtp.project.modelmaterial.entity.QuoteModelMaterial;
import com.chinaunicom.mall.ebtp.project.modelmaterial.service.IQuoteModelMaterialService;
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;
@ -134,6 +136,8 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
private IBidRatioService bidRatioService;
@Resource
private IBizQualifyConditionItemService qualifyConditionItemService;
@Resource
private IQuoteModelMaterialService quoteModelMaterialService;
/**
* 查询条件拼接
@ -848,6 +852,10 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
section.setMaterialList(assembleMaterial(record.getId(),section.getId(),purpBaseInfoVo.getPurpMaterialVOList()));
materialList.addAll(section.getMaterialList());
//保存报价结构化模型及物资关系
quoteModelMaterialService.saveOrUpdate(new QuoteModelMaterial().setId(section.getId()).setModelMaterial(projBaseInfoVO.getQuoteModelVOList())
.setProjectId(record.getId()).setSectionId(section.getId()));
if(projBaseInfoVO.getTemplateItemList()!=null){
//资格条件模板-资格条件项(页面手动新增或来自资格条件库引用)-结构化公告用
projBaseInfoVO.getTemplateItemList().forEach(v->{
@ -916,7 +924,7 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl<ProjectRecordMappe
material.setMaterialExplain(purpMaterialVO.getMaterialDesc());
material.setMaterialBrand(purpMaterialVO.getSpecModel());
material.setMaterialTypeName(purpMaterialVO.getMaterialCategoryName());
material.setProcurementCount(Optional.ofNullable(purpMaterialVO.getInRequNum()).orElseGet(purpMaterialVO::getRequNum));
material.setProcurementCount(Optional.ofNullable(purpMaterialVO.getNum()).orElseGet(purpMaterialVO::getInRequNum));
material.setMaterialUnit(purpMaterialVO.getUnit());
material.setBasePrice(purpMaterialVO.getUnitAmt());
material.setMaterialCode(purpMaterialVO.getMaterialCode());

View File

@ -254,7 +254,7 @@ public class ProjectSection extends BaseEntity implements Serializable {
@ApiModelProperty(value = "是否启用结构化报价 0否1是")
private String isStructureQuote;
@ApiModelProperty(value = "结构化报价模型 001普通报价模型002联动报价模型")
@ApiModelProperty(value = "结构化报价模型 001普通报价模型002联动报价模型003定额折扣报价模型;004非定额折扣报价模型 ")
private String structureQuoteModel;
@ApiModelProperty(value = "结构化报价限价类型 001总价限制002单价+总价限制003总价+基准单价限制")