文件问题

This commit is contained in:
2026-06-03 10:43:08 +08:00
parent 4723516177
commit d9b941d908
3 changed files with 81 additions and 6 deletions
@@ -2,6 +2,7 @@ package com.nbport.zgwl.contractlaunch.service;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nbport.zgwl.common.PageResult;
import com.nbport.zgwl.contractlaunch.dto.ContractLaunchApproveDto;
import com.nbport.zgwl.contractlaunch.dto.ContractLaunchArchiveDto;
@@ -16,6 +17,7 @@ import com.nbport.zgwl.contractlaunch.service.ContractLaunchLegalFileBridgeServi
import com.nbport.zgwl.contractlaunch.mapper.ContractLaunchMapper;
import com.nbport.zgwl.contractlaunch.utils.ContractLaunchCodeUtils;
import com.nbport.zgwl.contractlaunch.utils.ContractLaunchConstants;
import com.nbport.zgwl.contractlaunch.utils.JsonUtils;
import com.nbport.zgwl.contractpush.dto.PushPayloadDTO;
import com.nbport.zgwl.contractpush.service.DataCollectionPushService;
import com.nbport.zgwl.contractpush.service.SettlementPushService;
@@ -194,6 +196,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
@Override
@Transactional(rollbackFor = Exception.class)
public ContractLaunchDto submitToLaw(Long id) {
ContractLaunchDto contract = getDetail(id);
if (!canSubmit(contract.getStatus())) {
throw new ServiceException("当前状态不允许提交法务");
@@ -207,6 +210,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
contractLaunchMapper.updateContract(contract);
Map<String, Object> settlementPayload = buildSettlementPushPayload(contract);
log.info("结算参数 JSON{}", JsonUtils.toJson(settlementPayload));
insertLog(id, ContractLaunchConstants.ACTION_SUBMIT, "提交法务", ContractLaunchConstants.ACTION_STATUS_PENDING, "合同已提交法务接口,当前先保留 mock 流程", settlementPayload, currentUser);
// TODO: 法务接口当前不可用,真实联调时打开下面调用即可
@@ -428,7 +432,7 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
SysUserEntity currentUser = adminSecurityManage.getUser();
Map<String, Object> payload = buildDataCollectionContractPayload(contract);
insertLog(id, ContractLaunchConstants.ACTION_COLLECT, "模拟合同采集", ContractLaunchConstants.ACTION_STATUS_PENDING, "合同采集接口当前先注释,使用测试按钮流转", payload, currentUser);
log.info("测试采集提交参数:{}", JsonUtils.toJson(payload));
// TODO: 法务接口当前不可用,真实联调时打开下面调用即可
// PushPayloadDTO requestDTO = new PushPayloadDTO();
// requestDTO.setPayload(payload);
@@ -1090,9 +1094,9 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
map.put("planSubjectName", plan.getPlanSubjectName());
return map;
}).collect(Collectors.toList()));
payload.put("contractText", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_BODY));
payload.put("otherAttach", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_OTHER));
payload.put("contractGistFile", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_GIST));
// payload.put("contractText", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_BODY));
// payload.put("otherAttach", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_OTHER));
// payload.put("contractGistFile", buildSettlementFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_GIST));
return payload;
}
@@ -1101,39 +1105,72 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
Map<String, Object> payload = new LinkedHashMap<>();
payload.put("c_name", contract.getContractName());
payload.put("c_code", contract.getLawContractCode() == null || contract.getLawContractCode().isBlank() ? contract.getContractCode() : contract.getLawContractCode());
payload.put("c_weNames", contract.getCompanyName());
// TODO: c_weNames 传机构编码,当前用 signingSubjectCode(签约主体编码),若为空则用 orgId
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_textSource", contract.getTextSource());
// c_needAmendments(是否需修订条款):DTO 暂无此字段,默认传 0(否)
payload.put("c_needAmendments", "0");
payload.put("c_mainContent", contract.getPrimaryContent());
payload.put("c_direction", contract.getPaymentDirection());
payload.put("c_method", contract.getValuationMode());
payload.put("c_subjectAMT", contract.getContractAmount());
// 合同标的额:计价方式=固定总价时必填
if ("1".equals(contract.getValuationMode()) && contract.getContractAmount() != null) {
payload.put("c_subjectAMT", contract.getContractAmount());
} else {
payload.put("c_subjectAMT", null);
}
payload.put("c_currency", contract.getCurrencyName());
// TODO: c_estimatedAMT(预估金额)DTO 暂无此字段,计价方式=预估总价时需传
payload.put("c_estimatedAMT", null);
payload.put("c_amountExplain", contract.getAmountExplain());
// 额外金额
payload.put("c_additional", contract.getEwAmountType());
if (contract.getDjAmount() != null) payload.put("c_dAMT", contract.getDjAmount());
if (contract.getYjAmount() != null) payload.put("c_yAMT", contract.getYjAmount());
if (contract.getYfkAmount() != null) payload.put("c_yfkAMT", contract.getYfkAmount());
if (contract.getBzjAmount() != null) payload.put("c_bzjAMT", contract.getBzjAmount());
payload.put("c_type", contract.getContractTypeCode());
payload.put("c_termType", contract.getContractPeriodType());
payload.put("c_termExplain", contract.getPeriodExplain());
payload.put("c_termStart", contract.getEffectiveStart());
payload.put("c_termEnd", contract.getEffectiveEnd());
payload.put("c_qyztGAT", contract.getIsSgat());
payload.put("c_qyztSW", contract.getContractNature());
payload.put("c_executor", contract.getExecutorAccount());
payload.put("c_openBidding", contract.getIsOpenBidding());
// 关联招标号:公开招标选是时必填
if (Integer.valueOf(1).equals(contract.getIsOpenBidding()) && contract.getBiddingNo() != null) {
payload.put("c_biddingNo", contract.getBiddingNo());
} else {
payload.put("c_biddingNo", null);
}
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_creator", contract.getInitiator());
payload.put("c_creatorPhone", contract.getCreatorPhone());
payload.put("c_createDept", contract.getInitiatorDept());
payload.put("c_creationTime", contract.getCreateTime());
payload.put("c_signExplain", contract.getContractGistRemark());
payload.put("c_zw", buildCollectionFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_BODY));
payload.put("c_attachs", buildCollectionFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_OTHER));
payload.put("c_signAttachs", buildCollectionFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_GIST));
payload.put("c_lxPlan", contract.getPerformancePlans());
// 用印信息
Map<String, Object> seal = new LinkedHashMap<>();
seal.put("seal_isSeal", "1");
seal.put("seal_approveSame", "1");
seal.put("seal_type", contract.getSealType());
seal.put("seal_quantity", "1");
seal.put("seal_date", contract.getSignDate());
payload.put("c_seal", seal);
// 签订信息
Map<String, Object> sign = new LinkedHashMap<>();
sign.put("sign_isSign", "1");
sign.put("sign_date", contract.getSignDate());
@@ -1141,6 +1178,8 @@ public class ContractLaunchServiceImpl implements ContractLaunchService {
sign.put("sign_attachs", buildCollectionFilePayloadList(contract, ContractLaunchConstants.FILE_CATEGORY_SIGNED));
sign.put("sign_executor", contract.getExecutorAccount());
payload.put("c_sign", sign);
// 时间戳
payload.put("timeStamp", String.valueOf(System.currentTimeMillis()));
return payload;
}
@@ -0,0 +1,36 @@
package com.nbport.zgwl.contractlaunch.utils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class JsonUtils {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
static {
// 注册 Java8 时间模块,解决 LocalDateTime 序列化失败
JavaTimeModule javaTimeModule = new JavaTimeModule();
// 配置 LocalDateTime 格式化输出:yyyy-MM-dd HH:mm:ss
javaTimeModule.addSerializer(LocalDateTime.class,
new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
OBJECT_MAPPER.registerModule(javaTimeModule);
// 美化输出(可选,让日志更好看)
OBJECT_MAPPER.writerWithDefaultPrettyPrinter();
}
public static String toJson(Object obj) {
if (obj == null) {
return "null";
}
try {
return OBJECT_MAPPER.writeValueAsString(obj);
} catch (Exception e) {
// 序列化失败时返回 toString,保证不报错
return obj.toString();
}
}
}