REQ-3982: fix bugs

This commit is contained in:
yanglin 2025-04-21 16:16:01 +08:00
parent 0aeeff8da8
commit 7777809398
10 changed files with 180 additions and 113 deletions

View File

@ -239,7 +239,7 @@ public class IndexManager {
// resolve the name issue
if (!indexSupport.childrenNameDuplicatable(rootNode))
indexSupport.incrNameIfDuplicate(rootNode);
// get the coped root with full props
// get the copied root with full props
return indexNodeDao.findOrNull(rootNode.getCode());
}

View File

@ -47,6 +47,8 @@ public class UpdateVisaChangeReq {
@NotNull(message = "phase不能为空")
private VisaProcessPhase phase = VisaProcessPhase.PROJECT;
private String context;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum VisaStampAction {

View File

@ -218,6 +218,11 @@ public class VisaDetailByIdResponse {
*/
private String approvalId;
/**
* 最终审批ID
*/
private String approvalIdPay;
/**
* 立项审批状态
*/
@ -238,6 +243,11 @@ public class VisaDetailByIdResponse {
*/
private String contractId;
/**
* 合同 ID
*/
private String contractIdPay;
/**
* 用印状态
*/

View File

@ -43,6 +43,7 @@ import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway;
import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import cn.axzo.nanopart.visa.server.service.OperateLogService;
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
@ -72,6 +73,8 @@ public class EssAllEventHandler implements EventHandler, InitializingBean {
private ChangeRecordService changeRecordService;
@Resource
private ChangeRecordRelationService changeRecordRelationService;
@Resource
private OperateLogService operateLogService;
@Override
public void onEvent(Event event, EventConsumer.Context context) {
@ -83,6 +86,7 @@ public class EssAllEventHandler implements EventHandler, InitializingBean {
EssContractStateChangeMessage essContractStateChangeMessage = event.normalizedData(EssContractStateChangeMessage.class);
EssContractInfo contract = essContractStateChangeMessage.getContract();
AssertUtil.isTrue(Objects.nonNull(contract), "腾讯电子签事件对象异常");
operateLogService.save("essMQ", contract.getEssContractId(), "message", essContractStateChangeMessage);
// 取消用印会清空合同 id这里兼容该情况
Optional<ChangeRecord> optVisa = changeRecordService.lambdaQuery()
@ -192,6 +196,7 @@ public class EssAllEventHandler implements EventHandler, InitializingBean {
.operatorId(0L)
.operatorName("腾讯撤销合同")
.scene("取消用印")
.context("stamp:cancelOfEssCancelContract")
.build();
changeRecordService.update(updateVisaChangeReq);
}

View File

@ -116,6 +116,7 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
.operatorName(operatorName)
.visaStampAction(UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE)
.scene("用印审批完成,自动完成用印申请")
.context("stamp:autoComplete")
.build());
}
}

View File

@ -1,5 +1,34 @@
package cn.axzo.nanopart.visa.server.mq.listener.workflow.process;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_ABORT;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_PAY;
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PAY_CONFIRM;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.groovy.util.Maps;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import cn.axzo.framework.jackson.utility.JSON;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
@ -31,34 +60,7 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinition
import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO;
import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler;
import cn.azxo.framework.common.model.CommonResponse;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.groovy.util.Maps;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_ABORT;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_PAY;
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PAY_CONFIRM;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED;
/**
* 工作流广播的实例维度的所有事件类型

View File

@ -4,5 +4,11 @@ import cn.axzo.log.platform.client.model.req.LogAddReq;
public interface OperateLogService {
void saveRequest(String scene, Long tag, Object request);
void save(String scene, Long tag, Object... messages);
void save(String scene, String tag, Object... messages);
void save(LogAddReq param);
}

View File

@ -118,6 +118,7 @@ import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway;
import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import cn.axzo.nanopart.visa.server.service.OperateLogService;
import cn.axzo.nanopart.visa.server.service.VisaHelper;
import cn.axzo.nanopart.visa.server.utils.Constants;
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
@ -152,6 +153,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
private final VisaCooperateShipGateway visaCooperateShipGateway;
private final OrganizationalUnitGateway organizationalUnitGateway;
private final PrintModelService printModelService;
private final OperateLogService operateLogService;
@Resource
@Lazy
private VisaHelper visaHelper;
@ -499,6 +501,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
AssertUtil.isTrue(Objects.nonNull(req.getOperatorOuId()) && Objects.nonNull(req.getOperatorPersonId()), "操作人信息不能为空");
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
AssertUtil.notNull(visa, "变洽签单据不存在");
operateLogService.saveRequest("requestStamp", visa.getId(), req);
final boolean addLog = !StringUtils.hasText(visa.getContractId()) || !StringUtils.hasText(visa.getContractIdPay());
// 移除上一次申请
@ -656,13 +659,12 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
}
private void removeLastRequest(ChangeRecord visa, VisaProcessPhase phase) {
if (StringUtils.hasText(visa.getContractId())) {
return;
if (phase == VisaProcessPhase.PROJECT && !StringUtils.hasText(visa.getContractId())) {
deleteByVisaId(visa.getId(), Lists.newArrayList(PRINT_PDF_FILE, PROCESS_INSTANCE_OF_ESS, ESS_RECIPIENT_ID_MAP));
}
if (phase == VisaProcessPhase.PAYMENT && !StringUtils.hasText(visa.getContractIdPay())) {
deleteByVisaId(visa.getId(), Lists.newArrayList(PRINT_PDF_FILE_PAY, PROCESS_INSTANCE_OF_ESS_PAY, ESS_RECIPIENT_ID_MAP_PAY));
}
ArrayList<VisaRelationFieldEnum> types = phase == VisaProcessPhase.PROJECT
? Lists.newArrayList(PRINT_PDF_FILE, PROCESS_INSTANCE_OF_ESS, ESS_RECIPIENT_ID_MAP)
: Lists.newArrayList(PRINT_PDF_FILE_PAY, PROCESS_INSTANCE_OF_ESS_PAY, ESS_RECIPIENT_ID_MAP_PAY);
deleteByVisaId(visa.getId(), types);
}
private Map<Long, String> listCooperateShipTypes(VisaRequestStampReq req, ChangeRecord visa) {
@ -677,11 +679,13 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
}
private Map<String, String> createContract(VisaRequestStampReq req, ChangeRecord visa, Map<Long, List<EssSealPersonInfo>> stampUserMap) {
if (StringUtils.hasText(visa.getContractId())) {
VisaRelationFieldEnum filedType = req.getPhase() == VisaProcessPhase.PROJECT //
? ESS_RECIPIENT_ID_MAP //
: ESS_RECIPIENT_ID_MAP_PAY;
List<ChangeRecordRelation> recipientIds = findByVisaAndVarName(visa.getId(), filedType.name());
if (req.getPhase() == VisaProcessPhase.PROJECT && StringUtils.hasText(visa.getContractId())) {
List<ChangeRecordRelation> recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP.name());
AssertUtil.notEmpty(recipientIds, "未找到签章位置信息");
return JSON.parseObject(recipientIds.get(0).getContent(), Map.class);
}
if (req.getPhase() == VisaProcessPhase.PAYMENT && StringUtils.hasText(visa.getContractIdPay())) {
List<ChangeRecordRelation> recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP_PAY.name());
AssertUtil.notEmpty(recipientIds, "未找到签章位置信息");
return JSON.parseObject(recipientIds.get(0).getContent(), Map.class);
}
@ -715,10 +719,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
CreateContractByFileResponse contract = essGateway.createContract(createContractRequest);
AssertUtil.notNull(contract, "腾讯电子签合同创建失败");
visa.setContractId(contract.getEssContractId());
if (req.getPhase() == VisaProcessPhase.PROJECT) {
visa.setContractId(contract.getEssContractId());
visa.setStampStatus(VisaStampStatusEnum.WITH_PRINT);
} else {
visa.setContractIdPay(contract.getEssContractId());
visa.setStampStatusPay(VisaStampStatusEnum.WITH_PRINT);
}
changeRecordService.updateById(visa);
@ -795,7 +800,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
WORKFLOW_VAR_STAMP_TYPE, model.getSealType().name(),
WORKFLOW_PENDING_STAMP_TYPE_DESC, model.getSealType().getDescription(),
WORKFLOW_VAR_STAMP_RECIPIENT, MapUtils.emptyIfNull(essRecipientIdMap).getOrDefault(String.valueOf(model.getOuId()), ""),
WORKFLOW_VAR_STAMP_CONTRACT_ID, visa.getContractId(),
WORKFLOW_VAR_STAMP_CONTRACT_ID, req.getPhase() == VisaProcessPhase.PROJECT ? visa.getContractId() : visa.getContractIdPay(),
WORKFLOW_PENDING_PDF_FILE_URL, req.getPdfFile().getFileUrl(),
WORKFLOW_PENDING_INITIATOR_NAME, profile.getRealName(),
IM_GROUP_BIZ_INFO_VISA_TYPE, visa.getType(),

View File

@ -1,5 +1,63 @@
package cn.axzo.nanopart.visa.server.service.impl;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE_DESC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_INITIATOR_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.CANCEL;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.COMPLETE;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.TX_CANCEL;
import static cn.axzo.nanopart.visa.server.config.BizResultCode.CHANGE_RECORD_NOT_FOUND;
import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT;
import static cn.axzo.nanopart.visa.server.utils.Constants.FORM_FIELD_BILL_NAME;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.ABORTED;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.REJECTED;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.groovy.util.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import cn.axzo.apollo.api.req.QueryOrderToBasicReq;
import cn.axzo.apollo.api.res.ConstructionAreaInfo;
import cn.axzo.apollo.api.res.TaskOrderToBasicRes;
@ -28,7 +86,6 @@ import cn.axzo.im.center.api.vo.req.SendChatMessageRequest;
import cn.axzo.im.center.api.vo.resp.GroupCreateResponse;
import cn.axzo.im.center.common.enums.AppTypeEnum;
import cn.axzo.im.center.common.enums.GroupType;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.maokai.api.vo.request.CooperateShipQueryReq;
import cn.axzo.maokai.api.vo.request.OrgNodeUserBriefInfoListReq;
import cn.axzo.maokai.api.vo.response.CooperateShipResp;
@ -117,62 +174,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.groovy.util.Maps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE_DESC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_CODE;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_INITIATOR_NAME;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.CANCEL;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.COMPLETE;
import static cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq.VisaStampAction.TX_CANCEL;
import static cn.axzo.nanopart.visa.server.config.BizResultCode.CHANGE_RECORD_NOT_FOUND;
import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT;
import static cn.axzo.nanopart.visa.server.utils.Constants.FORM_FIELD_BILL_NAME;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.ABORTED;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.REJECTED;
/**
* @author xudawei
@ -458,10 +460,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.attach(this.buildAttachUploadFile(visaId)) // 附件
.imGroupId(visa.getImGroupId()) // 群组ID
.approvalId(visa.getApprovalId()) //立项审批ID
.approvalIdPay(visa.getApprovalIdPay()) //立项审批ID
.approvalStatus(visa.getApprovalStatus()) //立项审批状态
.approvalStatusPay(visa.getApprovalStatusPay()) // 价款审批状态
.topic(visa.getTopic()) // 主题
.contractId(visa.getContractId())
.contractIdPay(visa.getContractIdPay())
.stampStatus(visa.getStampStatus())
.build();
}
@ -1952,16 +1956,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
// 在某些用印操作时需要记录recordLog用于详情展示因为以前详情展示的操作日志是使用的recordLog
insertRecordLog(req);
operateLogService.save(LogAddReq.builder()
.scene("UPSERT_CHANGE_RECORD")
.level("INFO")
.tags(Lists.newArrayList(req.getVisaId().toString()))
.message(new JSONObject()
.fluentPut("param", req)
.fluentPut("oldValue", oldValue)
.fluentPut("newValue", this.getById(req.getVisaId()))
.toJSONString())
.build());
operateLogService.save(req.getContext(), req.getVisaId(), //
"request", req, //
"oldValue", oldValue, //
"newValue", this.getById(req.getVisaId()));
}
public ChangeRecord toUpdate(UpdateVisaChangeReq req, ChangeRecord oldValue) {

View File

@ -1,15 +1,22 @@
package cn.axzo.nanopart.visa.server.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.framework.jackson.utility.JSON;
import cn.axzo.log.platform.client.feign.LogApi;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.nanopart.visa.server.service.OperateLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.concurrent.ExecutorService;
@Slf4j
@Service
@ -23,8 +30,39 @@ public class OperateLogServiceImpl implements OperateLogService {
private ExecutorService asyncExecutor;
@Override
public void save(LogAddReq param) {
public void saveRequest(String scene, Long tag, Object request) {
save(scene, tag, "request", JSON.toJSONString(request));
}
@Override
public void save(String scene, Long tag, Object... arguments) {
save(scene, String.valueOf(tag), arguments);
}
@Override
public void save(String scene, String tag, Object... arguments) {
if (arguments.length % 2 != 0)
throw new ServiceException("messages length is not even");
JSONObject message = new JSONObject();
for (int i = 0; i < arguments.length; i += 2)
message.put(String.valueOf(arguments[i]), arguments[i + 1]);
save(LogAddReq.builder()
.scene(scene)
.level("INFO")
.tags(Lists.newArrayList(tag))
.message(message.toJSONString())
.build());
}
@Override
public void save(LogAddReq param) {
List<String> tags = param.getTags();
if (tags == null)
tags = new ArrayList<>();
else
tags = new ArrayList<>(tags);
tags.add("nanopart");
tags.add("visa");
try {
// 目前操作日志的记录不是核心流程这个方法不抛出异常以免影响正常业务流程
// 异步处理