Merge remote-tracking branch 'origin/feature/REQ-3581' into feature/REQ-3581
This commit is contained in:
commit
2b35622cb7
@ -45,6 +45,11 @@
|
|||||||
<artifactId>workflow-engine-common</artifactId>
|
<artifactId>workflow-engine-common</artifactId>
|
||||||
<version>${workflow-engine.version}</version>
|
<version>${workflow-engine.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.nanopart</groupId>
|
||||||
|
<artifactId>ess-api</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|||||||
@ -173,4 +173,5 @@ public interface ChangeRecordApi {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/api/visa/change/list")
|
@PostMapping("/api/visa/change/list")
|
||||||
ApiPageResult<VisaSearchResp> list(@RequestBody @Validated VisaSearchReq req);
|
ApiPageResult<VisaSearchResp> list(@RequestBody @Validated VisaSearchReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq;
|
|||||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.VisaRelationReq;
|
import cn.axzo.nanopart.visa.api.request.VisaRelationReq;
|
||||||
|
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||||
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
@ -39,4 +40,12 @@ public interface ChangeRecordRelationApi {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/api/visa/relation/attach/append")
|
@PostMapping("/api/visa/relation/attach/append")
|
||||||
ApiResult<Void> appendAttachment(@Validated @RequestBody ChangeRecordAppendAttachReq req);
|
ApiResult<Void> appendAttachment(@Validated @RequestBody ChangeRecordAppendAttachReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用印申请提交
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/api/visa/stamp/request")
|
||||||
|
ApiResult<Void> requestStamp(@Validated @RequestBody VisaRequestStampReq req);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ public enum VisaRelationFieldEnum {
|
|||||||
PROCESS_INSTANCE_OF_ESS("process_instance_of_ess", "用印审批实例"),
|
PROCESS_INSTANCE_OF_ESS("process_instance_of_ess", "用印审批实例"),
|
||||||
ORDER("order", "单据"),
|
ORDER("order", "单据"),
|
||||||
IM_GROUP_PARTICIPATE("im_group_participate", "im群聊参与人"),
|
IM_GROUP_PARTICIPATE("im_group_participate", "im群聊参与人"),
|
||||||
|
PRINT_PDF_FILE("print_pdf_file", "打印生成的PDF文件"),
|
||||||
;
|
;
|
||||||
private final String code;
|
private final String code;
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
|||||||
@ -36,4 +36,6 @@ public class ChangeRecordAppendAttachReq {
|
|||||||
|
|
||||||
private Long operatorOuId;
|
private Long operatorOuId;
|
||||||
|
|
||||||
|
private Long operatorWorkspaceId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,79 @@
|
|||||||
|
package cn.axzo.nanopart.visa.api.request;
|
||||||
|
|
||||||
|
import cn.axzo.nanopart.ess.api.enums.EssSealType;
|
||||||
|
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用印申请入参模型
|
||||||
|
*
|
||||||
|
* @author wangli
|
||||||
|
* @since 2025-02-20 22:10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class VisaRequestStampReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变洽签单据 ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "变洽签单据 ID 不能为空")
|
||||||
|
private Long visaId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变洽签打印 PDF 附件信息
|
||||||
|
*/
|
||||||
|
@NotNull(message = "PDF附件信息不能为空")
|
||||||
|
private UploadFieldDTO pdfFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 各单位申请印章信息
|
||||||
|
*/
|
||||||
|
@Valid
|
||||||
|
@NotEmpty(message = "申请用印单位不能为空")
|
||||||
|
private List<RequestStampModel> requestStamps;
|
||||||
|
|
||||||
|
@NotNull(message = "操作人 personId 不能为空")
|
||||||
|
private Long operatorPersonId;
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public static class RequestStampModel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位 ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "单位 ID 不能为空")
|
||||||
|
private Long ouId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 印章类型
|
||||||
|
* <p>
|
||||||
|
* OFFICIAL("公章"),
|
||||||
|
* CONTRACT("合同专用章"),
|
||||||
|
* FINANCE("财务专用章"),
|
||||||
|
* PERSONNEL("人事专用章"),
|
||||||
|
* INVOICE("发票专用章"),
|
||||||
|
* LEGAL_PERSON_SEAL("法定代表人章"),
|
||||||
|
* OTHER("其他");
|
||||||
|
*/
|
||||||
|
@NotNull(message = "印章类型不能为空")
|
||||||
|
private EssSealType sealType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批实例 ID,前端不关心
|
||||||
|
*/
|
||||||
|
private String processInstanceId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -57,6 +57,10 @@ public class VisaChangePageSearchResp {
|
|||||||
*/
|
*/
|
||||||
private Date happenTime;
|
private Date happenTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批实例 ID
|
||||||
|
*/
|
||||||
|
private String approvalId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终审批时间
|
* 最终审批时间
|
||||||
|
|||||||
@ -180,4 +180,5 @@ public class ChangeRecordController implements ChangeRecordApi {
|
|||||||
public ApiResult<Map<String, Boolean>> getBillIfRelated(GetBillIfRelatedReq req) {
|
public ApiResult<Map<String, Boolean>> getBillIfRelated(GetBillIfRelatedReq req) {
|
||||||
return ApiResult.ok(changeRecordBillService.getBillIfRelated(req));
|
return ApiResult.ok(changeRecordBillService.getBillIfRelated(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.axzo.nanopart.visa.api.request.ChangeRecordAppendAttachReq;
|
|||||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.VisaRelationReq;
|
import cn.axzo.nanopart.visa.api.request.VisaRelationReq;
|
||||||
|
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||||
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
import cn.axzo.nanopart.visa.api.response.VisaRelationResp;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||||
@ -70,4 +71,10 @@ public class ChangeRecordRelationController implements ChangeRecordRelationApi {
|
|||||||
changeRecordRelationService.appendAttachment(req);
|
changeRecordRelationService.appendAttachment(req);
|
||||||
return ApiResult.ok();
|
return ApiResult.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiResult<Void> requestStamp(VisaRequestStampReq req) {
|
||||||
|
changeRecordRelationService.requestStamp(req);
|
||||||
|
return ApiResult.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
|||||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||||
|
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||||
@ -67,4 +68,10 @@ public interface ChangeRecordRelationService extends IService<ChangeRecordRelati
|
|||||||
void appendAttachment(ChangeRecordAppendAttachReq req);
|
void appendAttachment(ChangeRecordAppendAttachReq req);
|
||||||
|
|
||||||
boolean deleteByIds(List<Long> ids);
|
boolean deleteByIds(List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用印申请
|
||||||
|
* @param req
|
||||||
|
*/
|
||||||
|
void requestStamp(VisaRequestStampReq req);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import cn.axzo.nanopart.visa.api.response.VisaChangePageSearchResp;
|
|||||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||||
import cn.axzo.nanopart.visa.api.response.VisaSearchResp;
|
import cn.axzo.nanopart.visa.api.response.VisaSearchResp;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||||
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -56,6 +57,16 @@ public interface ChangeRecordService extends IService<ChangeRecord> {
|
|||||||
*/
|
*/
|
||||||
VisaDetailByIdResponse detailById(Long visaId);
|
VisaDetailByIdResponse detailById(Long visaId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件对象转换
|
||||||
|
*/
|
||||||
|
List<VisaDetailByIdResponse.VisaUploadFile> buildAttachUploadFileByRelation(List<ChangeRecordRelation> attachList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建上传文件对象集合
|
||||||
|
*/
|
||||||
|
List<VisaDetailByIdResponse.VisaUploadFile> buildAttachUploadFile(Long visaId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建变更签证
|
* 创建变更签证
|
||||||
*
|
*
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package cn.axzo.nanopart.visa.server.service;
|
|||||||
|
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
|
||||||
|
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||||
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
|
||||||
@ -86,7 +87,22 @@ public class VisaHelper {
|
|||||||
// 由[决策中|执行中] -> [审批中] 执行变更签证属性变更
|
// 由[决策中|执行中] -> [审批中] 执行变更签证属性变更
|
||||||
if (Objects.nonNull(oldContext.getStatus()) && Objects.nonNull(newContext.getStatus())
|
if (Objects.nonNull(oldContext.getStatus()) && Objects.nonNull(newContext.getStatus())
|
||||||
&& VisaStatusEnum.isEditForm(oldContext.getStatus())
|
&& VisaStatusEnum.isEditForm(oldContext.getStatus())
|
||||||
&& newContext.getStatus().equals(VisaStatusEnum.APPROVING)) {
|
&& VisaStatusEnum.isEditForm(newContext.getStatus())) {
|
||||||
|
|
||||||
|
List<VisaDetailByIdResponse.VisaUploadFile> oldUploadFiles = this.changeRecordService.buildAttachUploadFileByRelation(oldContext.getRelationList());
|
||||||
|
List<VisaDetailByIdResponse.VisaUploadFile> newUploadFiles = this.changeRecordService.buildAttachUploadFile(newContext.getChangeRecord().getId());
|
||||||
|
|
||||||
|
|
||||||
|
changeRecordLogService.batchAddLog(newContext.getChangeRecord().getId(), VisaLogTypeEnum.EDIT_FORM, VisaLogParam.builder()
|
||||||
|
.personId(newContext.getPersonId())
|
||||||
|
.ouId(newContext.getOuId())
|
||||||
|
.workspaceId(newContext.getWorkspaceId())
|
||||||
|
.newAmountChange(newContext.getChangeRecord().getAmountChange())
|
||||||
|
.oldAmountChange(oldContext.getChangeRecord().getAmountChange())
|
||||||
|
.uploadAttach(VisaLogParam.uploadAttachWithObject(newUploadFiles, oldUploadFiles))
|
||||||
|
.deleteAttach(VisaLogParam.deleteAttachWithObject(oldUploadFiles, newUploadFiles))
|
||||||
|
.build());
|
||||||
|
|
||||||
logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE
|
logApiGateway.addLog(Constants.VISA_LOG_SNAPSHOT_SCENE
|
||||||
, Constants.VISA_LOG_SNAPSHOT_LEVEL
|
, Constants.VISA_LOG_SNAPSHOT_LEVEL
|
||||||
, Lists.newArrayList(Constants.VISA_LOG_SNAPSHOT_TAG_SNAPSHOT)
|
, Lists.newArrayList(Constants.VISA_LOG_SNAPSHOT_TAG_SNAPSHOT)
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import cn.axzo.nanopart.visa.server.utils.Constants;
|
|||||||
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
|
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
|
||||||
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
|
||||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -114,7 +115,9 @@ public class ChangeRecordLogServiceImpl extends ServiceImpl<ChangeRecordLogDao,
|
|||||||
logList.add(ChangeRecordLog.builder().visaId(visaId)
|
logList.add(ChangeRecordLog.builder().visaId(visaId)
|
||||||
.action(VisaLogTypeEnum.EDIT_AMOUNT.name())
|
.action(VisaLogTypeEnum.EDIT_AMOUNT.name())
|
||||||
.title(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getTitle(),userName ))
|
.title(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getTitle(),userName ))
|
||||||
.content(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getContent(), param.getOldAmountChange().toPlainString(), param.getNewAmountChange().toPlainString()))
|
.content(String.format(VisaLogTypeEnum.EDIT_AMOUNT.getContent()
|
||||||
|
, NumberUtil.roundDown(param.getOldAmountChange(), 2).toPlainString()
|
||||||
|
, NumberUtil.roundDown(param.getNewAmountChange(), 2).toPlainString()))
|
||||||
.orderBy(Constants.AMOUNT_CHANGE_ORDER_BY).build());
|
.orderBy(Constants.AMOUNT_CHANGE_ORDER_BY).build());
|
||||||
}
|
}
|
||||||
case UPLOAD_FILE:
|
case UPLOAD_FILE:
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
|||||||
import cn.axzo.im.center.api.vo.req.SendChatMessageRequest;
|
import cn.axzo.im.center.api.vo.req.SendChatMessageRequest;
|
||||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
||||||
|
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
|
||||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||||
@ -16,17 +17,23 @@ import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
|||||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||||
|
import cn.axzo.nanopart.visa.api.request.VisaRequestStampReq;
|
||||||
import cn.axzo.nanopart.visa.api.response.ImGroupButton;
|
import cn.axzo.nanopart.visa.api.response.ImGroupButton;
|
||||||
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
import cn.axzo.nanopart.visa.api.response.ImGroupTipsResp;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||||
|
import cn.axzo.nanopart.visa.server.dto.VisaLogParam;
|
||||||
import cn.axzo.nanopart.visa.server.dto.VisaRelationDto;
|
import cn.axzo.nanopart.visa.server.dto.VisaRelationDto;
|
||||||
import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao;
|
import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao;
|
||||||
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
|
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
|
||||||
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
|
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
|
||||||
import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway;
|
import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway;
|
||||||
|
import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService;
|
||||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
|
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
|
||||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||||
|
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
|
||||||
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||||
|
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||||
import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO;
|
import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@ -53,6 +60,8 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_
|
|||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS;
|
||||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS_OPERATED;
|
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS_OPERATED;
|
||||||
|
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PRINT_PDF_FILE;
|
||||||
|
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -68,6 +77,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
|||||||
private final VisaProfileGateway visaProfileGateway;
|
private final VisaProfileGateway visaProfileGateway;
|
||||||
private final MsgCenterGateway msgCenterGateway;
|
private final MsgCenterGateway msgCenterGateway;
|
||||||
private final WorkflowGateway workflowGateway;
|
private final WorkflowGateway workflowGateway;
|
||||||
|
private final ChangeRecordLogService changeRecordLogService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@ -219,6 +229,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
|||||||
AssertUtil.notNull(record, "未找到变洽签记录");
|
AssertUtil.notNull(record, "未找到变洽签记录");
|
||||||
|
|
||||||
ImGroupTipsResp resp = new ImGroupTipsResp();
|
ImGroupTipsResp resp = new ImGroupTipsResp();
|
||||||
|
if (Objects.equals(record.getStatus(), VisaStatusEnum.DECIDING_FROM_APPROVE)) {
|
||||||
|
record.setStatus(VisaStatusEnum.DECIDING);
|
||||||
|
} else if (Objects.equals(record.getStatus(), VisaStatusEnum.REPORT_FROM_APPROVE)) {
|
||||||
|
record.setStatus(VisaStatusEnum.TO_REPORT);
|
||||||
|
}
|
||||||
resp.setStatus(record.getStatus());
|
resp.setStatus(record.getStatus());
|
||||||
resp.setStatusText(record.getStatus().getDesc());
|
resp.setStatusText(record.getStatus().getDesc());
|
||||||
resp.setVisaType(record.getType());
|
resp.setVisaType(record.getType());
|
||||||
@ -348,6 +363,19 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
|||||||
formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, req.getAttach()));
|
formUpdateDto.setFormVariables(Maps.of(FORM_FIELD_ATTACH, req.getAttach()));
|
||||||
workflowGateway.updateInstanceFormData(formUpdateDto);
|
workflowGateway.updateInstanceFormData(formUpdateDto);
|
||||||
}
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(req.getAttach())) {
|
||||||
|
List<String> uploadAttachFileNameList = req.getAttach().stream().map(item -> item.getFileName()).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isNotEmpty(uploadAttachFileNameList)) {
|
||||||
|
changeRecordLogService.batchAddLog(req.getVisaId(), VisaLogTypeEnum.UPLOAD_FILE
|
||||||
|
, VisaLogParam.builder().personId(req.getOperatorPersonId())
|
||||||
|
.ouId(req.getOperatorOuId())
|
||||||
|
.workspaceId(req.getOperatorWorkspaceId())
|
||||||
|
.uploadAttach(uploadAttachFileNameList).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,4 +388,49 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
|||||||
.setSql("is_delete = id")
|
.setSql("is_delete = id")
|
||||||
.update();
|
.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void requestStamp(VisaRequestStampReq req) {
|
||||||
|
ChangeRecord visa = changeRecordService.getById(req.getVisaId());
|
||||||
|
AssertUtil.notNull(visa, "变洽签单据不存在");
|
||||||
|
|
||||||
|
List<ChangeRecordRelation> relations = req.getRequestStamps().stream().map(i -> {
|
||||||
|
ChangeRecordRelation stamp = new ChangeRecordRelation();
|
||||||
|
stamp.setVisaId(req.getVisaId());
|
||||||
|
stamp.setVarName(PROCESS_INSTANCE_OF_ESS.name());
|
||||||
|
stamp.setVarType(VisaRelationVarTypeEnum.JSON.getType());
|
||||||
|
// 发起用印的审批
|
||||||
|
i.setProcessInstanceId(createEssProcessInstance(i, visa));
|
||||||
|
stamp.setContent(JSON.toJSONString(i));
|
||||||
|
stamp.setCreateBy(req.getOperatorPersonId());
|
||||||
|
stamp.setUpdateBy(req.getOperatorPersonId());
|
||||||
|
return stamp;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
ChangeRecordRelation relation = new ChangeRecordRelation();
|
||||||
|
relation.setVisaId(req.getVisaId());
|
||||||
|
relation.setVarName(PRINT_PDF_FILE.name());
|
||||||
|
relation.setVarType(VisaRelationVarTypeEnum.JSON.getType());
|
||||||
|
relation.setContent(JSON.toJSONString(req.getPdfFile()));
|
||||||
|
relation.setCreateBy(req.getOperatorPersonId());
|
||||||
|
relation.setUpdateBy(req.getOperatorPersonId());
|
||||||
|
relations.add(relation);
|
||||||
|
saveBatch(relations);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createEssProcessInstance(VisaRequestStampReq.RequestStampModel model, ChangeRecord visa) {
|
||||||
|
BpmnProcessInstanceCreateDTO create = new BpmnProcessInstanceCreateDTO();
|
||||||
|
create.setBusinessKey(String.valueOf(model.getOuId()));
|
||||||
|
// TODO
|
||||||
|
create.setSpecifyAssignerMap(Maps.of("", Lists.newArrayList()));
|
||||||
|
create.setTenantId(String.valueOf(visa.getRelationWorkspaceId()));
|
||||||
|
create.setProcessDefinitionKey("");
|
||||||
|
create.setInitiator(BpmnTaskDelegateAssigner.builder()
|
||||||
|
// TODO
|
||||||
|
.build());
|
||||||
|
create.setCooperationOrg(new CooperationOrgDTO());
|
||||||
|
return workflowGateway.processInstanceCreate(create);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -486,11 +486,20 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
/**
|
/**
|
||||||
* 构建上传文件对象集合
|
* 构建上传文件对象集合
|
||||||
*/
|
*/
|
||||||
private List<VisaDetailByIdResponse.VisaUploadFile> buildAttachUploadFile(Long visaId) {
|
@Override
|
||||||
|
public List<VisaDetailByIdResponse.VisaUploadFile> buildAttachUploadFile(Long visaId) {
|
||||||
if (Objects.isNull(visaId)) {
|
if (Objects.isNull(visaId)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
List<ChangeRecordRelation> attachList = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.ATTACHMENT.name());
|
List<ChangeRecordRelation> attachList = changeRecordRelationService.findByVisaAndVarName(visaId, VisaRelationFieldEnum.ATTACHMENT.name());
|
||||||
|
return this.buildAttachUploadFileByRelation(attachList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件对象转换
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<VisaDetailByIdResponse.VisaUploadFile> buildAttachUploadFileByRelation(List<ChangeRecordRelation> attachList) {
|
||||||
if (CollectionUtils.isEmpty(attachList)) {
|
if (CollectionUtils.isEmpty(attachList)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
@ -736,9 +745,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更改状态-申请审批时
|
* 更改状态-申请审批时
|
||||||
* @param visaId 变更签证id
|
*
|
||||||
* @param req 请求,主要是获取最新的属性,比如变更金额/附件
|
* @param visaId 变更签证id
|
||||||
* @param changeRecord 变更签证对象,主要获取老的属性,比如变更金额
|
* @param req 请求,主要是获取最新的属性,比如变更金额/附件
|
||||||
|
* @param changeRecord 变更签证对象,主要获取老的属性,比如变更金额
|
||||||
* @param visaUploadFiles 上传附件,主要是老的属性
|
* @param visaUploadFiles 上传附件,主要是老的属性
|
||||||
*/
|
*/
|
||||||
public void changeStatusWhenApproveCreate(Long visaId, VisaChangeApproveCreateReq req, ChangeRecord changeRecord, List<VisaDetailByIdResponse.VisaUploadFile> visaUploadFiles) {
|
public void changeStatusWhenApproveCreate(Long visaId, VisaChangeApproveCreateReq req, ChangeRecord changeRecord, List<VisaDetailByIdResponse.VisaUploadFile> visaUploadFiles) {
|
||||||
@ -879,6 +889,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
.personIds(persons.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId).collect(Collectors.toList()))
|
.personIds(persons.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getPersonId).collect(Collectors.toList()))
|
||||||
.organizationalUnitId(unitId)
|
.organizationalUnitId(unitId)
|
||||||
.workspaceId(workspaceId)
|
.workspaceId(workspaceId)
|
||||||
|
.organizationalNodeIds(persons.stream().map(VisaChangeTempCreateReq.RelationUnitAndPerson::getNodeId).collect(Collectors.toList()))
|
||||||
.needs(ListNodeUserReq.Needs.builder().job(true).personProfile(true).build()).build());
|
.needs(ListNodeUserReq.Needs.builder().job(true).personProfile(true).build()).build());
|
||||||
if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) {
|
if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
@ -1434,7 +1445,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc()));
|
AssertUtil.isFalse(Objects.equals(r.getStatus(), VisaStatusEnum.TO_REPORT) || Objects.equals(r.getStatus(), VisaStatusEnum.FORBIDED), String.format("单据%s状态为%s,不允许被关联", r.getNo(), r.getStatus().getDesc()));
|
||||||
});
|
});
|
||||||
validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType());
|
validBillIfRelated(VisaBillTypeEnum.DESIGN_VISA, billIds, req.getType());
|
||||||
}else {
|
} else {
|
||||||
throw new ServiceException("不支持的关联单据类型");
|
throw new ServiceException("不支持的关联单据类型");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1910,5 +1921,4 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
|||||||
return visaIds;
|
return visaIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user