增加两个字段
This commit is contained in:
@@ -121,6 +121,12 @@ public class ContractLaunchDto implements Serializable {
|
||||
/** 计价方式(0:无金额, 1:固定总价, 2:预估总价, 3:无法预估总价, 4:固定单价) */
|
||||
private String valuationMode;
|
||||
|
||||
/** 是否需修订条款(1:是, 0:否) */
|
||||
private String needAmendments;
|
||||
|
||||
/** 预估金额(计价方式为预估总价时填写) */
|
||||
private Double estimatedAmount;
|
||||
|
||||
// ==================== 签署相关 ====================
|
||||
|
||||
/** 签订方式(GZ:公章, HTZYZ:合同专用章, 等) */
|
||||
|
||||
+35
-8
@@ -600,6 +600,8 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
target.setPrimaryContent(source.getPrimaryContent());
|
||||
target.setAmountExplain(source.getAmountExplain());
|
||||
target.setValuationMode(source.getValuationMode());
|
||||
target.setNeedAmendments(source.getNeedAmendments());
|
||||
target.setEstimatedAmount(source.getEstimatedAmount());
|
||||
target.setSealType(source.getSealType());
|
||||
target.setTextSource(source.getTextSource());
|
||||
target.setMandateType(source.getMandateType());
|
||||
@@ -881,6 +883,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
contract.setPaymentMethod(trim(contract.getPaymentMethod()));
|
||||
contract.setPrimaryContent(trim(contract.getPrimaryContent()));
|
||||
contract.setAmountExplain(trim(contract.getAmountExplain()));
|
||||
contract.setNeedAmendments(trim(contract.getNeedAmendments()));
|
||||
contract.setAssistDepartmentName(trim(contract.getAssistDepartmentName()));
|
||||
contract.setExecutorAccount(trim(contract.getExecutorAccount()));
|
||||
contract.setPeriodExplain(trim(contract.getPeriodExplain()));
|
||||
@@ -891,6 +894,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
contract.setDateType(trim(contract.getDateType()));
|
||||
contract.setPushUrl(trim(contract.getPushUrl()));
|
||||
contract.setEwAmountType(trim(contract.getEwAmountType()));
|
||||
contract.setBiddingNo(trim(contract.getBiddingNo()));
|
||||
if (contract.getDateType() == null || contract.getDateType().isBlank()) {
|
||||
contract.setDateType("0");
|
||||
}
|
||||
@@ -903,6 +907,9 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
if (contract.getPaymentDirection() == null || contract.getPaymentDirection().isBlank()) {
|
||||
contract.setPaymentDirection("0");
|
||||
}
|
||||
if (contract.getNeedAmendments() == null || contract.getNeedAmendments().isBlank()) {
|
||||
contract.setNeedAmendments("0");
|
||||
}
|
||||
if (contract.getPushUrl() == null || contract.getPushUrl().isBlank()) {
|
||||
contract.setPushUrl("/contract/launch/callback/law/approve");
|
||||
}
|
||||
@@ -951,6 +958,9 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
if (contract.getPartyList() == null || contract.getPartyList().isEmpty()) {
|
||||
throw new ServiceException("至少需要维护一个合同方");
|
||||
}
|
||||
if ("2".equals(contract.getValuationMode()) && contract.getEstimatedAmount() == null) {
|
||||
throw new ServiceException("预估总价合同必须填写预估金额");
|
||||
}
|
||||
boolean hasPartyA = contract.getPartyList().stream().anyMatch(item -> "A".equalsIgnoreCase(item.getRoleCode()));
|
||||
boolean hasCounterparty = contract.getPartyList().stream().anyMatch(item -> !"A".equalsIgnoreCase(item.getRoleCode()));
|
||||
if (!hasPartyA) {
|
||||
@@ -959,6 +969,17 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
if (!hasCounterparty) {
|
||||
throw new ServiceException("至少维护一个相对方");
|
||||
}
|
||||
if (Integer.valueOf(1).equals(contract.getIsOpenBidding())
|
||||
&& (contract.getBiddingNo() == null || contract.getBiddingNo().isBlank())) {
|
||||
throw new ServiceException("公开招标时必须填写关联招标号");
|
||||
}
|
||||
if (requiresAuthAttachment(contract.getSealType())
|
||||
&& (contract.getFileList() == null || contract.getFileList().stream().noneMatch(item ->
|
||||
ContractLaunchConstants.FILE_CATEGORY_AUTH.equals(item.getFileCategory())
|
||||
&& item.getFilePath() != null
|
||||
&& !item.getFilePath().isBlank()))) {
|
||||
throw new ServiceException("当前签订方式必须上传授权委托书附件");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canEdit(String status) {
|
||||
@@ -1109,11 +1130,15 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
payload.put("c_weNames", contract.getSigningSubjectCode() != null && !contract.getSigningSubjectCode().isBlank()
|
||||
? contract.getSigningSubjectCode()
|
||||
: contract.getOrgId());
|
||||
// TODO: c_oppositeNames 应传集团返回的相对方ID,多个用逗号分隔,当前暂时传摘要占位
|
||||
payload.put("c_oppositeNames", contract.getCounterpartySummary());
|
||||
payload.put("c_oppositeNames", contract.getPartyList().stream()
|
||||
.filter(item -> !"A".equalsIgnoreCase(item.getRoleCode()))
|
||||
.map(item -> item.getOppositeId() != null && !item.getOppositeId().isBlank()
|
||||
? item.getOppositeId()
|
||||
: item.getPartnerId() == null ? null : String.valueOf(item.getPartnerId()))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.joining(",")));
|
||||
payload.put("c_textSource", contract.getTextSource());
|
||||
// c_needAmendments(是否需修订条款):DTO 暂无此字段,默认传 0(否)
|
||||
payload.put("c_needAmendments", "0");
|
||||
payload.put("c_needAmendments", contract.getNeedAmendments());
|
||||
payload.put("c_mainContent", contract.getPrimaryContent());
|
||||
payload.put("c_direction", contract.getPaymentDirection());
|
||||
payload.put("c_method", contract.getValuationMode());
|
||||
@@ -1124,8 +1149,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
payload.put("c_subjectAMT", null);
|
||||
}
|
||||
payload.put("c_currency", contract.getCurrencyName());
|
||||
// TODO: c_estimatedAMT(预估金额)DTO 暂无此字段,计价方式=预估总价时需传
|
||||
payload.put("c_estimatedAMT", null);
|
||||
payload.put("c_estimatedAMT", "2".equals(contract.getValuationMode()) ? contract.getEstimatedAmount() : null);
|
||||
payload.put("c_amountExplain", contract.getAmountExplain());
|
||||
// 额外金额
|
||||
payload.put("c_additional", contract.getEwAmountType());
|
||||
@@ -1151,8 +1175,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
payload.put("c_currentBudget", contract.getIsYearBudget());
|
||||
payload.put("c_major", contract.getIsMajorContract());
|
||||
payload.put("c_signMethod", contract.getSealType());
|
||||
// TODO: c_authAttachs(授权委托书附件)当前暂无此数据,传空数组
|
||||
payload.put("c_authAttachs", Collections.emptyList());
|
||||
payload.put("c_authAttachs", buildCollectionFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_AUTH));
|
||||
payload.put("c_creator", contract.getInitiator());
|
||||
payload.put("c_creatorPhone", contract.getCreatorPhone());
|
||||
payload.put("c_createDept", contract.getInitiatorDept());
|
||||
@@ -1183,6 +1206,10 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
|
||||
return payload;
|
||||
}
|
||||
|
||||
private boolean requiresAuthAttachment(String sealType) {
|
||||
return "GZBSQRQZ".equals(sealType) || "HTZYZBSQRQZ".equals(sealType);
|
||||
}
|
||||
|
||||
/** 构建归档报文(pushArchive 接口的 payload) */
|
||||
private Map<String, Object> buildArchivePayload(ContractLaunchDto contract, ContractLaunchArchiveDto archiveDto) {
|
||||
Map<String, Object> payload = new LinkedHashMap<>();
|
||||
|
||||
@@ -29,6 +29,7 @@ public final class ContractLaunchConstants {
|
||||
public static final String FILE_CATEGORY_BODY = "body";
|
||||
public static final String FILE_CATEGORY_OTHER = "other";
|
||||
public static final String FILE_CATEGORY_GIST = "gist";
|
||||
public static final String FILE_CATEGORY_AUTH = "auth";
|
||||
public static final String FILE_CATEGORY_SIGNED = "signed";
|
||||
public static final String FILE_CATEGORY_ARCHIVE = "archive";
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
<result property="primaryContent" column="PRIMARY_CONTENT"/>
|
||||
<result property="amountExplain" column="AMOUNT_EXPLAIN"/>
|
||||
<result property="valuationMode" column="VALUATION_MODE"/>
|
||||
<result property="needAmendments" column="NEED_AMENDMENTS"/>
|
||||
<result property="estimatedAmount" column="ESTIMATED_AMOUNT"/>
|
||||
<result property="sealType" column="SEAL_TYPE"/>
|
||||
<result property="textSource" column="TEXT_SOURCE"/>
|
||||
<result property="mandateType" column="MANDATE_TYPE"/>
|
||||
@@ -248,7 +250,7 @@
|
||||
TEMPLATE_ID, TEMPLATE_CODE, TEMPLATE_NAME, STATUS, APPROVE_STATUS, APPROVE_MESSAGE,
|
||||
SEAL_CONTRACT_ID, SEAL_CONTRACT_STATUS, CONTRACT_AMOUNT, CURRENCY_NAME,
|
||||
CONTRACT_PERIOD_TYPE, PERIOD_EXPLAIN, EFFECTIVE_START, EFFECTIVE_END,
|
||||
PAYMENT_METHOD, PRIMARY_CONTENT, AMOUNT_EXPLAIN, VALUATION_MODE, SEAL_TYPE,
|
||||
PAYMENT_METHOD, PRIMARY_CONTENT, AMOUNT_EXPLAIN, VALUATION_MODE, NEED_AMENDMENTS, ESTIMATED_AMOUNT, SEAL_TYPE,
|
||||
TEXT_SOURCE, MANDATE_TYPE, CARGO_TYPE, ASSIST_DEPARTMENT_NAME, EXECUTOR_ACCOUNT,
|
||||
CREATOR_PHONE, SELF_CODE, MAIN_CONTRACT_CODE, SIGNING_SUBJECT_CODE, DATE_TYPE, IS_ADDIT, IS_ELECTRON,
|
||||
PAYMENT_DIRECTION, PUSH_URL, IS_MAJOR_CONTRACT, IS_OPEN_BIDDING, IS_YEAR_BUDGET, IS_SHARE,
|
||||
@@ -268,7 +270,7 @@
|
||||
#{templateId}, #{templateCode}, #{templateName}, #{status}, #{approveStatus}, #{approveMessage},
|
||||
#{sealContractId}, #{sealContractStatus}, #{contractAmount}, #{currencyName},
|
||||
#{contractPeriodType}, #{periodExplain}, #{effectiveStart}, #{effectiveEnd},
|
||||
#{paymentMethod}, #{primaryContent}, #{amountExplain}, #{valuationMode}, #{sealType},
|
||||
#{paymentMethod}, #{primaryContent}, #{amountExplain}, #{valuationMode}, #{needAmendments}, #{estimatedAmount}, #{sealType},
|
||||
#{textSource}, #{mandateType}, #{cargoType}, #{assistDepartmentName}, #{executorAccount},
|
||||
#{creatorPhone}, #{selfCode}, #{mainContractCode}, #{signingSubjectCode}, #{dateType}, #{isAddit}, #{isElectron},
|
||||
#{paymentDirection}, #{pushUrl}, #{isMajorContract}, #{isOpenBidding}, #{isYearBudget}, #{isShare},
|
||||
@@ -313,6 +315,8 @@
|
||||
PRIMARY_CONTENT = #{primaryContent},
|
||||
AMOUNT_EXPLAIN = #{amountExplain},
|
||||
VALUATION_MODE = #{valuationMode},
|
||||
NEED_AMENDMENTS = #{needAmendments},
|
||||
ESTIMATED_AMOUNT = #{estimatedAmount},
|
||||
SEAL_TYPE = #{sealType},
|
||||
TEXT_SOURCE = #{textSource},
|
||||
MANDATE_TYPE = #{mandateType},
|
||||
|
||||
Reference in New Issue
Block a user