| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package com.malk.controller;
- import com.malk.server.common.McR;
- import com.malk.server.workhours.ApprovalWriteBackResult;
- import com.malk.server.workhours.ReSubmitApprovalResult;
- import com.malk.server.workhours.TimeCardApprovalStartRequest;
- import com.malk.service.workhours.ApprovalWriteBackService;
- import com.malk.service.workhours.ReSubmitApprovalService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- /**
- * 审批结果回写工时汇总表 — 接口
- * <p>
- * 审批结束或撤销后调用,传流程实例ID + 审批结果(0=拒绝/撤销,1=同意)。
- * 异常由全局 {@link com.malk.filter.CatchException} 统一包装为 McR。
- */
- @Slf4j
- @RestController
- @RequestMapping("/approval")
- public class ApprovalController {
- @Autowired
- private ApprovalWriteBackService approvalWriteBackService;
- @Autowired
- private ReSubmitApprovalService reSubmitApprovalService;
- /**
- * 审批结果回写工时汇总表
- * GET /approval/writeback?instanceId=xxx&result=1
- *
- * @param instanceId 流程实例ID
- * @param result 审批结果:0=拒绝/撤销,1=同意
- */
- @PostMapping("/writeback")
- public McR<Boolean> writeback(@RequestParam String instanceId,
- @RequestParam int result) {
- log.info("writeback, {}, {}", instanceId, result);
- approvalWriteBackService.writeBackAsync(instanceId, result);
- return McR.success(true);
- }
- /**
- * 同步执行单张历史审批回写,供受控数据修复使用。
- *
- * @param instanceId 审批表单实例 ID
- * @param result 审批结果:0=拒绝/撤销,1=同意
- * @return 实际命中和更新统计
- */
- @PostMapping("/writeback/sync")
- public McR<ApprovalWriteBackResult> writebackSync(@RequestParam String instanceId,
- @RequestParam int result) {
- log.info("writebackSync, {}, {}", instanceId, result);
- return McR.success(approvalWriteBackService.writeBack(instanceId, result));
- }
- /**
- * 补发起工时审批(bug 1 手工触发)
- * POST /approval/resubmit?monthText=202606[&submitterUserId=xxx][&dryRun=true]
- * <p>
- * 用于:①第一次全量补齐历史数据 ②Scheduler 上线前手工回归验证
- * 逻辑参考前端 submitApprovalProcess:按 PM 分组 → queryProcess(RUNNING) → update / create
- *
- * @param monthText yyyyMM
- * @param submitterUserId 可空; 指定则仅处理该员工, 空则该月全员
- * @param dryRun true 时只返回候选统计,不创建或更新审批
- */
- @PostMapping("/resubmit")
- public McR<ReSubmitApprovalResult> resubmit(@RequestParam String monthText,
- @RequestParam(required = false) String submitterUserId,
- @RequestParam(defaultValue = "false") boolean dryRun) {
- log.info("resubmit, monthText={}, submitterUserId={}, dryRun={}",
- monthText, submitterUserId, dryRun);
- return McR.success(reSubmitApprovalService.resubmit(monthText, submitterUserId, dryRun));
- }
- /**
- * 使用配置的真人 System 账号发起 TimeCard 审批。
- *
- * @param request 审批表单、流程编码、部门和表单数据
- * @return 发起结果
- */
- @PostMapping("/start")
- public McR<Boolean> start(@RequestBody TimeCardApprovalStartRequest request) {
- return McR.success(reSubmitApprovalService.startApproval(request));
- }
- }
|