修改合同接口
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package com.zt.plat.module.contractorder.enums.contract;
|
package com.zt.plat.module.contractorder.enums;
|
||||||
|
|
||||||
public class DateConstants {
|
public class DateConstants {
|
||||||
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.zt.plat.module.contractorder.enums.contract;
|
package com.zt.plat.module.contractorder.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合同字典类型常量
|
* 合同字典类型常量
|
||||||
*
|
*
|
||||||
* @author ZT
|
* @author ZT
|
||||||
*/
|
*/
|
||||||
public class ContractDictTypeConstants {
|
public class DictTypeConstants {
|
||||||
|
|
||||||
// 合同状态
|
// 合同状态
|
||||||
public static String BSE_CTRT_STS = "BSE_CTRT_STS";
|
public static String BSE_CTRT_STS = "BSE_CTRT_STS";
|
||||||
@@ -16,4 +16,6 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode CONTRACT_NAME_EXISTS = new ErrorCode(1_027_000_001, "合同名已存在");
|
ErrorCode CONTRACT_NAME_EXISTS = new ErrorCode(1_027_000_001, "合同名已存在");
|
||||||
ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在");
|
ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在");
|
||||||
ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(1_027_000_003, "合同不存在");
|
ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(1_027_000_003, "合同不存在");
|
||||||
|
ErrorCode CONTRACT_ID_NOT_EXISTS = new ErrorCode(1_027_000_004, "合同主键为空");
|
||||||
|
ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_004, "{}合同不允许修改");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package com.zt.plat.module.contractorder.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表字段常量
|
||||||
|
*
|
||||||
|
* @author ZT
|
||||||
|
*/
|
||||||
|
public class TableFieldConstants {
|
||||||
|
|
||||||
|
// 表主键
|
||||||
|
public static final String ID = "ID";
|
||||||
|
|
||||||
|
/* 合同主信息表 */
|
||||||
|
// 合同名称;与ERP(HTMC)对应,校验唯一
|
||||||
|
public static final String BSE_CTRT_MAIN_CTRT_NAME = "CTRT_NAME";
|
||||||
|
// 合同编号;与ERP(HTBH)对应,校验唯一
|
||||||
|
public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM = "CTRT_PPR_NUM";
|
||||||
|
|
||||||
|
/* 合同明细表 */
|
||||||
|
// 合同主信息主键
|
||||||
|
public static final String BSE_CTRT_DTL_CTRT_MAIN_ID = "CTRT_MAIN_ID";
|
||||||
|
|
||||||
|
/* 交货计划条款表 */
|
||||||
|
// 合同明细主键
|
||||||
|
public static final String BSE_CTRT_PLN_CTRT_DTL_ID = "CTRT_DTL_ID";
|
||||||
|
|
||||||
|
/* 价款结算条款表 */
|
||||||
|
// 合同明细主键
|
||||||
|
public static final String BSE_CTRT_FMU_CTRT_DTL_ID = "CTRT_DTL_ID";
|
||||||
|
|
||||||
|
/* 基础系数配置表 */
|
||||||
|
// 条款主键
|
||||||
|
public static final String BSE_CTRT_COEF_FMU_ID = "FMU_ID";
|
||||||
|
|
||||||
|
/* 品位等级价配置表 */
|
||||||
|
// 条款主键
|
||||||
|
public static final String BSE_CTRT_GRD_FMU_ID = "FMU_ID";
|
||||||
|
|
||||||
|
/* 调整价配置表 */
|
||||||
|
// 条款主键
|
||||||
|
public static final String BSE_CTRT_DDCT_FMU_ID = "FMU_ID";
|
||||||
|
|
||||||
|
/* 市场价配置表 */
|
||||||
|
// 条款主键
|
||||||
|
public static final String BSE_CTRT_PRC_FMU_ID = "FMU_ID";
|
||||||
|
|
||||||
|
/* 品位不计价配置表 */
|
||||||
|
// 条款主键
|
||||||
|
public static final String BSE_CTRT_NT_FMU_ID = "FMU_ID";
|
||||||
|
|
||||||
|
/* 实例字段值表 */
|
||||||
|
// 关联实例主键
|
||||||
|
public static final String BSE_TMPL_INSC_DAT_INSC_ID = "INSC_ID";
|
||||||
|
|
||||||
|
/* 实例条款值表 */
|
||||||
|
// 关联实例主键
|
||||||
|
public static final String BSE_TMPL_INSC_ITM_INSC_ID = "INSC_ID";
|
||||||
|
}
|
||||||
@@ -57,12 +57,11 @@ public class ContractController implements BusinessControllerMarker {
|
|||||||
return success(contractViewRespVO);
|
return success(contractViewRespVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
|
||||||
@PutMapping("update")
|
@PutMapping("update")
|
||||||
@Operation(summary = "修改合同")
|
@Operation(summary = "修改合同")
|
||||||
@PreAuthorize("@ss.hasPermission('system:contract:update')")
|
@PreAuthorize("@ss.hasPermission('system:contract:update')")
|
||||||
public CommonResult<Boolean> update(@Valid @RequestBody ContractSaveReqVO reqVO) {
|
public CommonResult<Boolean> update(@Valid @RequestBody ContractSaveReqVO reqVO) {
|
||||||
return success(true);
|
return success(contractService.update(reqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class ContractFormulaSaveReqVO {
|
|||||||
private String materialNumber;
|
private String materialNumber;
|
||||||
|
|
||||||
@Schema(description = "计算小数位")
|
@Schema(description = "计算小数位")
|
||||||
private Long decimalBit;
|
private Long decimalPoint;
|
||||||
|
|
||||||
@Schema(description = "金属元素编码")
|
@Schema(description = "金属元素编码")
|
||||||
private String elementNumber;
|
private String elementNumber;
|
||||||
@@ -44,6 +44,9 @@ public class ContractFormulaSaveReqVO {
|
|||||||
@Schema(description = "金属元素名称", example = "金属元素名称")
|
@Schema(description = "金属元素名称", example = "金属元素名称")
|
||||||
private String elementName;
|
private String elementName;
|
||||||
|
|
||||||
|
@Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "LST")
|
||||||
|
private String settlementType;
|
||||||
|
|
||||||
// 基础系数配置
|
// 基础系数配置
|
||||||
private List<ContractCoefficientSaveReqVO> coefficients;
|
private List<ContractCoefficientSaveReqVO> coefficients;
|
||||||
// 品位等级价配置
|
// 品位等级价配置
|
||||||
|
|||||||
@@ -49,5 +49,5 @@ public class ContractPriceSaveReqVO {
|
|||||||
private String averageType;
|
private String averageType;
|
||||||
|
|
||||||
@Schema(description = "网价小数位")
|
@Schema(description = "网价小数位")
|
||||||
private BigDecimal decimalBit;
|
private BigDecimal decimalPoint;
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class ContractSaveReqVO {
|
public class ContractSaveReqVO {
|
||||||
|
|
||||||
@Schema(description = "主键")
|
@Schema(description = "主键,新增时为空,修改时需要有值")
|
||||||
@ExcelProperty("主键")
|
@ExcelProperty("主键")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class ContractViewFormulaRespVO {
|
|||||||
private String materialNumber;
|
private String materialNumber;
|
||||||
|
|
||||||
@Schema(description = "计算小数位")
|
@Schema(description = "计算小数位")
|
||||||
private Long decimalBit;
|
private Long decimalPoint;
|
||||||
|
|
||||||
@Schema(description = "金属元素编码")
|
@Schema(description = "金属元素编码")
|
||||||
private String elementNumber;
|
private String elementNumber;
|
||||||
|
|||||||
@@ -49,5 +49,5 @@ public class ContractViewPriceRespVO {
|
|||||||
private String averageType;
|
private String averageType;
|
||||||
|
|
||||||
@Schema(description = "网价小数位")
|
@Schema(description = "网价小数位")
|
||||||
private BigDecimal decimalBit;
|
private BigDecimal decimalPoint;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ public class ContractFormulaDO extends BusinessBaseDO {
|
|||||||
/**
|
/**
|
||||||
* 计算小数位
|
* 计算小数位
|
||||||
*/
|
*/
|
||||||
@TableField("DEC")
|
@TableField("DEC_PNT")
|
||||||
private Long decimalBit;
|
private Long decimalPoint;
|
||||||
/**
|
/**
|
||||||
* 金属元素编码
|
* 金属元素编码
|
||||||
*/
|
*/
|
||||||
@@ -77,4 +77,9 @@ public class ContractFormulaDO extends BusinessBaseDO {
|
|||||||
*/
|
*/
|
||||||
@TableField("ELEM_NAME")
|
@TableField("ELEM_NAME")
|
||||||
private String elementName;
|
private String elementName;
|
||||||
|
/**
|
||||||
|
* 结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)
|
||||||
|
*/
|
||||||
|
@TableField("STLM_TP")
|
||||||
|
private String settlementType;
|
||||||
}
|
}
|
||||||
@@ -93,6 +93,6 @@ public class ContractPriceDO extends BusinessBaseDO {
|
|||||||
/**
|
/**
|
||||||
* 网价小数位
|
* 网价小数位
|
||||||
*/
|
*/
|
||||||
@TableField("DEC")
|
@TableField("DEC_PNT")
|
||||||
private BigDecimal decimalBit;
|
private BigDecimal decimalPoint;
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@ public interface ContractService {
|
|||||||
/**
|
/**
|
||||||
* 新增合同
|
* 新增合同
|
||||||
*
|
*
|
||||||
* @param reqVO 用户信息
|
* @param reqVO 合同信息
|
||||||
* @return 合同ID
|
* @return 合同ID
|
||||||
*/
|
*/
|
||||||
Long createContract(@Valid ContractSaveReqVO reqVO);
|
Long createContract(@Valid ContractSaveReqVO reqVO);
|
||||||
@@ -37,4 +37,12 @@ public interface ContractService {
|
|||||||
* @return 合同信息
|
* @return 合同信息
|
||||||
*/
|
*/
|
||||||
ContractViewRespVO get(Long id);
|
ContractViewRespVO get(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改合同
|
||||||
|
*
|
||||||
|
* @param reqVO 合同信息
|
||||||
|
* @return 修改结果
|
||||||
|
*/
|
||||||
|
Boolean update(@Valid ContractSaveReqVO reqVO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService;
|
|||||||
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
|
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
|
||||||
import com.zt.plat.module.contractorder.dal.dataobject.contract.*;
|
import com.zt.plat.module.contractorder.dal.dataobject.contract.*;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.contract.*;
|
import com.zt.plat.module.contractorder.dal.mysql.contract.*;
|
||||||
|
import com.zt.plat.module.contractorder.enums.TableFieldConstants;
|
||||||
import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum;
|
import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum;
|
||||||
import com.zt.plat.module.contractorder.enums.contract.DateConstants;
|
import com.zt.plat.module.contractorder.enums.DateConstants;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -74,14 +75,16 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
public Long createContract(ContractSaveReqVO reqVO) {
|
public Long createContract(ContractSaveReqVO reqVO) {
|
||||||
|
|
||||||
// 校验合同名称是否存在
|
// 校验合同名称是否存在
|
||||||
ContractMainDO contract = contractMainMapper.selectOne("CTRT_NAME", reqVO.getContractName());
|
ContractMainDO contract = contractMainMapper
|
||||||
|
.selectOne(TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME, reqVO.getContractName());
|
||||||
if (contract != null) {
|
if (contract != null) {
|
||||||
throw exception(CONTRACT_NAME_EXISTS);
|
throw exception(CONTRACT_NAME_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(reqVO.getContractPaperNumber())) {
|
if (StringUtils.isNotEmpty(reqVO.getContractPaperNumber())) {
|
||||||
// 校验合同编号是否存在
|
// 校验合同编号是否存在
|
||||||
contract = contractMainMapper.selectOne("CTRT_PPR_NUM", reqVO.getContractPaperNumber());
|
contract = contractMainMapper
|
||||||
|
.selectOne(TableFieldConstants.BSE_CTRT_MAIN_CTRT_PPR_NUM, reqVO.getContractPaperNumber());
|
||||||
if (contract != null) {
|
if (contract != null) {
|
||||||
throw exception(CONTRACT_PAPER_NUMBER_EXISTS);
|
throw exception(CONTRACT_PAPER_NUMBER_EXISTS);
|
||||||
}
|
}
|
||||||
@@ -228,20 +231,21 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|
|
||||||
// 查询并设置物料信息
|
// 查询并设置物料信息
|
||||||
List<ContractDetailDO> detailDOS = contractDetailMapper
|
List<ContractDetailDO> detailDOS = contractDetailMapper
|
||||||
.selectList("CTRT_MAIN_ID", contractMainDO.getId());
|
.selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId());
|
||||||
if (detailDOS != null && !detailDOS.isEmpty()) {
|
if (detailDOS != null && !detailDOS.isEmpty()) {
|
||||||
respVO.setDetail(BeanUtils.toBean(detailDOS, ContractViewDetailRespVO.class));
|
respVO.setDetail(BeanUtils.toBean(detailDOS, ContractViewDetailRespVO.class));
|
||||||
respVO.getDetail().forEach(detail -> {
|
respVO.getDetail().forEach(detail -> {
|
||||||
|
|
||||||
// 查询并设置交货计划
|
// 查询并设置交货计划
|
||||||
List<ContractPlanDO> planDOS = contractPlanMapper.selectList("CTRT_DTL_ID", detail.getId());
|
List<ContractPlanDO> planDOS = contractPlanMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId());
|
||||||
if (planDOS != null && !planDOS.isEmpty()) {
|
if (planDOS != null && !planDOS.isEmpty()) {
|
||||||
detail.setPlans(BeanUtils.toBean(planDOS, ContractViewPlanRespVO.class));
|
detail.setPlans(BeanUtils.toBean(planDOS, ContractViewPlanRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询并设置价款结算条款
|
// 查询并设置价款结算条款
|
||||||
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
|
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
|
||||||
.selectList("CTRT_DTL_ID", detail.getId());
|
.selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detail.getId());
|
||||||
if (formulaDOS != null && !formulaDOS.isEmpty()) {
|
if (formulaDOS != null && !formulaDOS.isEmpty()) {
|
||||||
detail.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class));
|
detail.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class));
|
||||||
|
|
||||||
@@ -249,27 +253,31 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|
|
||||||
// 查询并设置基础系数配置
|
// 查询并设置基础系数配置
|
||||||
List<ContractCoefficientDO> coefficientDOS = contractCoefficientMapper
|
List<ContractCoefficientDO> coefficientDOS = contractCoefficientMapper
|
||||||
.selectList("FMU_ID", formula.getId());
|
.selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId());
|
||||||
if (coefficientDOS != null && !coefficientDOS.isEmpty()) {
|
if (coefficientDOS != null && !coefficientDOS.isEmpty()) {
|
||||||
formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractViewCoefficientRespVO.class));
|
formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractViewCoefficientRespVO.class));
|
||||||
}
|
}
|
||||||
// 查询并设置品位等级价配置
|
// 查询并设置品位等级价配置
|
||||||
List<ContractGradeDO> gradeDOS = contractGradeMapper.selectList("FMU_ID", formula.getId());
|
List<ContractGradeDO> gradeDOS = contractGradeMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId());
|
||||||
if (gradeDOS != null && !gradeDOS.isEmpty()) {
|
if (gradeDOS != null && !gradeDOS.isEmpty()) {
|
||||||
formula.setGrades(BeanUtils.toBean(gradeDOS, ContractViewGradeRespVO.class));
|
formula.setGrades(BeanUtils.toBean(gradeDOS, ContractViewGradeRespVO.class));
|
||||||
}
|
}
|
||||||
// 查询并设置调整价配置
|
// 查询并设置调整价配置
|
||||||
List<ContractDeductDO> deductDOS = contractDeductMapper.selectList("FMU_ID", formula.getId());
|
List<ContractDeductDO> deductDOS = contractDeductMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId());
|
||||||
if (deductDOS != null && !deductDOS.isEmpty()) {
|
if (deductDOS != null && !deductDOS.isEmpty()) {
|
||||||
formula.setDeducts(BeanUtils.toBean(deductDOS, ContractViewDeductRespVO.class));
|
formula.setDeducts(BeanUtils.toBean(deductDOS, ContractViewDeductRespVO.class));
|
||||||
}
|
}
|
||||||
// 查询并设置市场价配置
|
// 查询并设置市场价配置
|
||||||
List<ContractPriceDO> priceDOS = contractPriceMapper.selectList("FMU_ID", formula.getId());
|
List<ContractPriceDO> priceDOS = contractPriceMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId());
|
||||||
if (priceDOS != null && !priceDOS.isEmpty()) {
|
if (priceDOS != null && !priceDOS.isEmpty()) {
|
||||||
formula.setPrices(BeanUtils.toBean(priceDOS, ContractViewPriceRespVO.class));
|
formula.setPrices(BeanUtils.toBean(priceDOS, ContractViewPriceRespVO.class));
|
||||||
}
|
}
|
||||||
// 查询并设置品位不计价配置
|
// 查询并设置品位不计价配置
|
||||||
List<ContractNotDO> notDOS = contractNotMapper.selectList("FMU_ID", formula.getId());
|
List<ContractNotDO> notDOS = contractNotMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formula.getId());
|
||||||
if (notDOS != null && !notDOS.isEmpty()) {
|
if (notDOS != null && !notDOS.isEmpty()) {
|
||||||
formula.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class));
|
formula.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class));
|
||||||
}
|
}
|
||||||
@@ -280,14 +288,14 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|
|
||||||
// 查询并设置合同动态表单
|
// 查询并设置合同动态表单
|
||||||
List<TemplateInstanceDataDO> templateInstanceDataDOS = templateInstanceDataMapper
|
List<TemplateInstanceDataDO> templateInstanceDataDOS = templateInstanceDataMapper
|
||||||
.selectList("INSC_ID", contractMainDO.getInstanceId());
|
.selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId());
|
||||||
if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) {
|
if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) {
|
||||||
respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class));
|
respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询并设置合同动态条款
|
// 查询并设置合同动态条款
|
||||||
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper
|
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper
|
||||||
.selectList("INSC_ID", contractMainDO.getInstanceId());
|
.selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId());
|
||||||
if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) {
|
if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) {
|
||||||
respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class));
|
respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class));
|
||||||
}
|
}
|
||||||
@@ -295,6 +303,215 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
return respVO;
|
return respVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public Boolean update(ContractSaveReqVO reqVO) {
|
||||||
|
|
||||||
|
// 校验合同主键是否存在
|
||||||
|
Long id = reqVO.getId();
|
||||||
|
if (id == null) {
|
||||||
|
throw exception(CONTRACT_ID_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询合同是否存在
|
||||||
|
ContractMainDO oldContractMainDO = contractMainMapper.selectById(id);
|
||||||
|
if (contractMainMapper.selectById(id) == null) {
|
||||||
|
throw exception(CONTRACT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验合同名称是否重复
|
||||||
|
ContractMainDO contract = contractMainMapper.selectOne(new QueryWrapper<ContractMainDO>()
|
||||||
|
.eq(TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME, reqVO.getContractName())
|
||||||
|
.ne(TableFieldConstants.ID, id));
|
||||||
|
if (contract != null) {
|
||||||
|
throw exception(CONTRACT_NAME_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isNotEmpty(reqVO.getContractPaperNumber())) {
|
||||||
|
// 校验合同编号是否存在
|
||||||
|
contract = contractMainMapper.selectOne(new QueryWrapper<ContractMainDO>()
|
||||||
|
.eq(TableFieldConstants.BSE_CTRT_MAIN_CTRT_PPR_NUM, reqVO.getContractPaperNumber())
|
||||||
|
.ne(TableFieldConstants.ID, id));
|
||||||
|
if (contract != null) {
|
||||||
|
throw exception(CONTRACT_PAPER_NUMBER_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合同状态校验
|
||||||
|
if (ContractStatusEnum.DELETED.getCode().equals(oldContractMainDO.getStatus())
|
||||||
|
|| ContractStatusEnum.ARCHIVED.getCode().equals(oldContractMainDO.getStatus())
|
||||||
|
|| ContractStatusEnum.TERMINATED.getCode().equals(oldContractMainDO.getStatus())
|
||||||
|
|| ContractStatusEnum.IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())
|
||||||
|
|| ContractStatusEnum.UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) {
|
||||||
|
|
||||||
|
throw exception(CONTRACT_STATUS_NOT_UPDATE,
|
||||||
|
ContractStatusEnum.valueOf(oldContractMainDO.getStatus()).getLabel());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 请求更新的合同信息
|
||||||
|
ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
|
||||||
|
|
||||||
|
// 删除关联信息
|
||||||
|
// 查询合同明细
|
||||||
|
List<ContractDetailDO> detailDOS = contractDetailMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id);
|
||||||
|
if (detailDOS != null && !detailDOS.isEmpty()) {
|
||||||
|
detailDOS.forEach(detailDO -> {
|
||||||
|
Long detailDOId = detailDO.getId();
|
||||||
|
|
||||||
|
// 删除交货计划
|
||||||
|
contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString());
|
||||||
|
|
||||||
|
// 查询价款结算条款
|
||||||
|
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
|
||||||
|
.selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detailDOId.toString());
|
||||||
|
if (formulaDOS != null && !formulaDOS.isEmpty()) {
|
||||||
|
formulaDOS.forEach(formulaDO -> {
|
||||||
|
|
||||||
|
// 价款结算条款ID
|
||||||
|
Long formulaDOId = formulaDO.getId();
|
||||||
|
|
||||||
|
// 删除基础系数配置
|
||||||
|
contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString());
|
||||||
|
// 删除品位等级价配置
|
||||||
|
contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString());
|
||||||
|
// 删除调整价配置
|
||||||
|
contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString());
|
||||||
|
// 删除市场价配置
|
||||||
|
contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString());
|
||||||
|
// 删除品位不计价配置
|
||||||
|
contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formulaDOId.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除价款结算条款
|
||||||
|
contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detailDOId.toString());
|
||||||
|
});
|
||||||
|
|
||||||
|
// 删除合同明细
|
||||||
|
contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重新插入关联信息
|
||||||
|
if (reqVO.getDetail() != null && !reqVO.getDetail().isEmpty()) {
|
||||||
|
reqVO.getDetail().forEach(detail -> {
|
||||||
|
// 合同明细DO
|
||||||
|
ContractDetailDO detailDO = BeanUtils.toBean(detail, ContractDetailDO.class);
|
||||||
|
// 设置合同主信息ID
|
||||||
|
detailDO.setContractMainId(id);
|
||||||
|
// 保存合同明细
|
||||||
|
contractDetailMapper.insert(detailDO);
|
||||||
|
|
||||||
|
// 合同明细ID
|
||||||
|
Long detailDOId = detailDO.getId();
|
||||||
|
// 交货计划
|
||||||
|
if (detail.getPlans() != null && !detail.getPlans().isEmpty()) {
|
||||||
|
detail.getPlans().forEach(plan -> {
|
||||||
|
// 交货计划DO
|
||||||
|
ContractPlanDO planDO = BeanUtils.toBean(plan, ContractPlanDO.class);
|
||||||
|
// 合同明细主键
|
||||||
|
planDO.setContractDetailId(detailDOId);
|
||||||
|
// 保存交货计划
|
||||||
|
contractPlanMapper.insert(planDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 价款结算条款
|
||||||
|
if (detail.getFormulas() != null && !detail.getFormulas().isEmpty()) {
|
||||||
|
detail.getFormulas().forEach(formula -> {
|
||||||
|
// 价款结算条款DO
|
||||||
|
ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class);
|
||||||
|
// 合同明细主键
|
||||||
|
formulaDO.setContractDetailId(detailDOId);
|
||||||
|
// 保存价款结算条款
|
||||||
|
contractFormulaMapper.insert(formulaDO);
|
||||||
|
|
||||||
|
// 价款结算条款ID
|
||||||
|
Long formulaDOId = formulaDO.getId();
|
||||||
|
// 基础系数配置
|
||||||
|
if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) {
|
||||||
|
formula.getCoefficients().forEach(coefficient -> {
|
||||||
|
// 基础系数配置DO
|
||||||
|
ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class);
|
||||||
|
// 条款主键
|
||||||
|
coefficientDO.setFormulaId(formulaDOId);
|
||||||
|
// 保存基础系数配置
|
||||||
|
contractCoefficientMapper.insert(coefficientDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 品位等级价配置
|
||||||
|
if (formula.getGrades() != null && !formula.getGrades().isEmpty()) {
|
||||||
|
formula.getGrades().forEach(grade -> {
|
||||||
|
// 品位等级价配置DO
|
||||||
|
ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class);
|
||||||
|
// 条款主键
|
||||||
|
gradeDO.setFormulaId(formulaDOId);
|
||||||
|
// 保存品位等级价配置
|
||||||
|
contractGradeMapper.insert(gradeDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 调整价配置
|
||||||
|
if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) {
|
||||||
|
formula.getDeducts().forEach(deduct -> {
|
||||||
|
// 调整价配置DO
|
||||||
|
ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class);
|
||||||
|
// 条款主键
|
||||||
|
deductDO.setFormulaId(formulaDOId);
|
||||||
|
// 保存品位等级价配置
|
||||||
|
contractDeductMapper.insert(deductDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 市场价配置
|
||||||
|
if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) {
|
||||||
|
formula.getPrices().forEach(price -> {
|
||||||
|
// 市场价配置DO
|
||||||
|
ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class);
|
||||||
|
// 条款主键
|
||||||
|
priceDO.setFormulaId(formulaDOId);
|
||||||
|
// 保存市场价配置
|
||||||
|
contractPriceMapper.insert(priceDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 品位不计价配置
|
||||||
|
if (formula.getNots() != null && !formula.getNots().isEmpty()) {
|
||||||
|
formula.getNots().forEach(not -> {
|
||||||
|
// 品位不计价配置DO
|
||||||
|
ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class);
|
||||||
|
// 条款主键
|
||||||
|
notDO.setFormulaId(formulaDOId);
|
||||||
|
// 保存品位不计价配置
|
||||||
|
contractNotMapper.insert(notDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合同动态表单
|
||||||
|
List<TemplateInstanceDataDO> templateInstanceDataDOS = new ArrayList<>();
|
||||||
|
if (reqVO.getDynamicsFields() != null && !reqVO.getDynamicsFields().isEmpty()) {
|
||||||
|
reqVO.getDynamicsFields().forEach(dynamicsField -> {
|
||||||
|
TemplateInstanceDataDO templateInstanceDataDO = new TemplateInstanceDataDO();
|
||||||
|
BeanUtils.copyProperties(dynamicsField, templateInstanceDataDO);
|
||||||
|
templateInstanceDataDO.setInscId(reqVO.getInstanceId().toString());
|
||||||
|
templateInstanceDataDOS.add(templateInstanceDataDO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 更新合同动态表单值
|
||||||
|
if (!templateInstanceDataDOS.isEmpty()) {
|
||||||
|
templateInstanceDataService.setTemplateInstanceData(templateInstanceDataDOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新合同主信息
|
||||||
|
int updateNum = contractMainMapper.updateById(newContractMainDO);
|
||||||
|
if (updateNum > 0) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成系统合同编号
|
* 生成系统合同编号
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user