合同动态字段及条款修改

This commit is contained in:
guojunyun
2025-11-11 17:26:31 +08:00
parent b0f4dbfb52
commit 1f949f7013
3 changed files with 66 additions and 60 deletions

View File

@@ -1,8 +1,8 @@
package com.zt.plat.module.contractorder.api.vo.contract; package com.zt.plat.module.contractorder.api.vo.contract;
import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscDatBsnRespVO;
import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscItmBsnRespVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -251,11 +251,11 @@ public class ContractRespVO {
// 物料信息 // 物料信息
private List<DetailRespVO> detail; private List<DetailRespVO> detail;
// 合同动态表单 // 合同动态字段
private List<TemplateInstanceDataRespVO> dynamicsFields; private List<TmplInscDatBsnRespVO> dynamicsFields;
// 合同动态条款 // 合同动态条款
private List<TemplateInstanceItemRespVO> dynamicsItems; private List<TmplInscItmBsnRespVO> dynamicsItems;
// 价款结算条款 // 价款结算条款
private List<FormulaRespVO> formulas; private List<FormulaRespVO> formulas;

View File

@@ -1,7 +1,8 @@
package com.zt.plat.module.contractorder.api.vo.contract; package com.zt.plat.module.contractorder.api.vo.contract;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscDatBsnSaveReqVO;
import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscItmBsnSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@@ -220,8 +221,11 @@ public class ContractSaveReqVO {
// 物料信息 // 物料信息
private List<DetailSaveReqVO> detail; private List<DetailSaveReqVO> detail;
// 合同动态表单 // 合同动态字段
private List<TemplateInstanceDataSaveReqVO> dynamicsFields; private List<TmplInscDatBsnSaveReqVO> dynamicsFields;
// 合同动态条款
private List<TmplInscItmBsnSaveReqVO> dynamicsItems;
// 价款结算条款 // 价款结算条款
private List<FormulaSaveReqVO> formulas; private List<FormulaSaveReqVO> formulas;

View File

@@ -12,15 +12,18 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.framework.tenant.core.context.CompanyContextHolder;
import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelRespVO;
import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelSaveReqVO;
import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscDatBsnSaveReqVO;
import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscItmBsnSaveReqVO;
import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO;
import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper;
import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper;
import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscBsnRelMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscBsnRelMapper;
import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService; import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService;
import com.zt.plat.module.base.service.tmpltp.TmplInscBsnRelService;
import com.zt.plat.module.base.service.tmpltp.TmplInscDatBsnService;
import com.zt.plat.module.base.service.tmpltp.TmplInscItmBsnService;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.api.task.dto.*;
@@ -120,6 +123,12 @@ public class ContractServiceImpl implements ContractService {
private FileApi fileApi; private FileApi fileApi;
@Resource @Resource
private TmplInscBsnRelMapper tmplInscBsnRelMapper; private TmplInscBsnRelMapper tmplInscBsnRelMapper;
@Resource
private TmplInscBsnRelService tmplInscBsnRelService;
@Resource
private TmplInscDatBsnService tmplInscDatBsnService;
@Resource
private TmplInscItmBsnService tmplInscItmBsnService;
@Override @Override
public PageResult<ContractMainDO> getContractPage(ContractPageReqVO pageReqVO) { public PageResult<ContractMainDO> getContractPage(ContractPageReqVO pageReqVO) {
@@ -276,22 +285,31 @@ public class ContractServiceImpl implements ContractService {
}); });
} }
// 合同动态表单 // 合同动态表单及条款
List<TemplateInstanceDataDO> templateInstanceDataDOS = new ArrayList<>(); // 更新关联主表
if (reqVO.getDynamicsFields() != null && !reqVO.getDynamicsFields().isEmpty()) { TmplInscBsnRelSaveReqVO tmplInscBsnRelSaveReqVO = new TmplInscBsnRelSaveReqVO();
reqVO.getDynamicsFields().forEach(dynamicsField -> { tmplInscBsnRelSaveReqVO.setId(reqVO.getBusinessId());
TemplateInstanceDataDO templateInstanceDataDO = new TemplateInstanceDataDO(); tmplInscBsnRelSaveReqVO.setBsnId(contractId);
BeanUtils.copyProperties(dynamicsField, templateInstanceDataDO); tmplInscBsnRelService.updateTmplInscBsnRel(tmplInscBsnRelSaveReqVO);
templateInstanceDataDO.setInscId(reqVO.getInstanceId().toString()); // 保存动态字段
templateInstanceDataDOS.add(templateInstanceDataDO); List<TmplInscDatBsnSaveReqVO> dynamicsFields = reqVO.getDynamicsFields();
if (dynamicsFields != null && !dynamicsFields.isEmpty()) {
dynamicsFields.forEach(dynamicsField -> {
dynamicsField.setBsnId(reqVO.getBusinessId().toString());
tmplInscDatBsnService.createTmplInscDatBsn(dynamicsField);
}); });
} }
// 更新合同动态表单值 // 保存动态条款
if (!templateInstanceDataDOS.isEmpty()) { List<TmplInscItmBsnSaveReqVO> dynamicsItems = reqVO.getDynamicsItems();
templateInstanceDataService.setTemplateInstanceData(templateInstanceDataDOS); if (dynamicsItems != null && !dynamicsItems.isEmpty()) {
dynamicsItems.forEach(dynamicsItem -> {
dynamicsItem.setBsnId(reqVO.getBusinessId().toString());
tmplInscItmBsnService.createTmplInscItmBsn(dynamicsItem);
});
} }
return contractMainDO.getId();
return contractId;
} }
@Override @Override
@@ -372,19 +390,12 @@ public class ContractServiceImpl implements ContractService {
respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class));
} }
// 查询并设置合同动态表单 // 查询合同动态字段及条款
List<TemplateInstanceDataDO> templateInstanceDataDOS = templateInstanceDataMapper TmplInscBsnRelRespVO tmplInscBsnRel = tmplInscBsnRelService.getTmplInscBsnRel(contractMainDO.getBusinessId());
.selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); // 设置合同动态字段
if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) { respVO.setDynamicsFields(tmplInscBsnRel.getTmplInscDatBsnRespVOS());
respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class)); // 设置合同动态条款
} respVO.setDynamicsItems(tmplInscBsnRel.getTmplInscItmBsnRespVOS());
// 查询并设置合同动态条款
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper
.selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId());
if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) {
respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class));
}
return respVO; return respVO;
} }
@@ -466,19 +477,12 @@ public class ContractServiceImpl implements ContractService {
respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class));
} }
// 查询并设置合同动态表单 // 查询合同动态字段及条款
List<TemplateInstanceDataDO> templateInstanceDataDOS = templateInstanceDataMapper TmplInscBsnRelRespVO tmplInscBsnRel = tmplInscBsnRelService.getTmplInscBsnRel(contractMainDO.getBusinessId());
.selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); // 设置合同动态字段
if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) { respVO.setDynamicsFields(tmplInscBsnRel.getTmplInscDatBsnRespVOS());
respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class)); // 设置合同动态条款
} respVO.setDynamicsItems(tmplInscBsnRel.getTmplInscItmBsnRespVOS());
// 查询并设置合同动态条款
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper
.selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId());
if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) {
respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class));
}
return respVO; return respVO;
} }
@@ -900,19 +904,17 @@ public class ContractServiceImpl implements ContractService {
}); });
} }
// 合同动态表单 // 更新合同动态字段
List<TemplateInstanceDataDO> templateInstanceDataDOS = new ArrayList<>();
if (reqVO.getDynamicsFields() != null && !reqVO.getDynamicsFields().isEmpty()) { if (reqVO.getDynamicsFields() != null && !reqVO.getDynamicsFields().isEmpty()) {
reqVO.getDynamicsFields().forEach(dynamicsField -> { reqVO.getDynamicsFields().forEach(field -> {
TemplateInstanceDataDO templateInstanceDataDO = new TemplateInstanceDataDO(); tmplInscDatBsnService.updateTmplInscDatBsn(field);
BeanUtils.copyProperties(dynamicsField, templateInstanceDataDO);
templateInstanceDataDO.setInscId(reqVO.getInstanceId().toString());
templateInstanceDataDOS.add(templateInstanceDataDO);
}); });
} }
// 更新合同动态表单 // 更新合同动态表单
if (!templateInstanceDataDOS.isEmpty()) { if (reqVO.getDynamicsItems() != null && !reqVO.getDynamicsItems().isEmpty()) {
templateInstanceDataService.setTemplateInstanceData(templateInstanceDataDOS); reqVO.getDynamicsItems().forEach(item -> {
tmplInscItmBsnService.updateTmplInscItmBsn(item);
});
} }
// 合同状态更新 // 合同状态更新