diff --git a/backend/crm/src/main/java/cn/cordys/crm/opportunity/controller/OpportunityQuotationController.java b/backend/crm/src/main/java/cn/cordys/crm/opportunity/controller/OpportunityQuotationController.java index c28dcafc2..817e26f1b 100644 --- a/backend/crm/src/main/java/cn/cordys/crm/opportunity/controller/OpportunityQuotationController.java +++ b/backend/crm/src/main/java/cn/cordys/crm/opportunity/controller/OpportunityQuotationController.java @@ -7,11 +7,14 @@ import cn.cordys.context.OrganizationContext; import cn.cordys.crm.opportunity.domain.OpportunityQuotation; import cn.cordys.crm.opportunity.dto.request.OpportunityQuotationAddRequest; +import cn.cordys.crm.opportunity.dto.request.OpportunityQuotationBatchRequest; import cn.cordys.crm.opportunity.dto.request.OpportunityQuotationEditRequest; import cn.cordys.crm.opportunity.dto.request.OpportunityQuotationPageRequest; import cn.cordys.crm.opportunity.dto.response.OpportunityQuotationGetResponse; import cn.cordys.crm.opportunity.dto.response.OpportunityQuotationListResponse; import cn.cordys.crm.opportunity.service.OpportunityQuotationService; +import cn.cordys.crm.system.dto.response.BatchAffectReasonResponse; +import cn.cordys.crm.system.dto.response.BatchAffectResponse; import cn.cordys.crm.system.dto.response.ModuleFormConfigDTO; import cn.cordys.crm.system.service.ModuleFormCacheService; import cn.cordys.security.SessionUtils; @@ -75,6 +78,7 @@ public OpportunityQuotationGetResponse get(@PathVariable("id") String id) { //撤销审批 @GetMapping("/revoke/{id}") + @Operation(summary = "撤销报价单审批") public String revoke(@PathVariable("id") String id) { return opportunityQuotationService.revoke(id, SessionUtils.getUserId()); } @@ -87,6 +91,15 @@ public String voidQuotation(@PathVariable("id") String id) { return opportunityQuotationService.voidQuotation(id, SessionUtils.getUserId(), OrganizationContext.getOrganizationId()); } + //批量作废报价单 + @PostMapping("/batch/voided") + @RequiresPermissions(PermissionConstants.OPPORTUNITY_QUOTATION_UPDATE) + @Operation(summary = "批量作废报价单") + public BatchAffectReasonResponse batchVoidQuotation(@RequestBody OpportunityQuotationBatchRequest request) { + return opportunityQuotationService.batchVoidQuotation(request, SessionUtils.getUserId(), OrganizationContext.getOrganizationId()); + } + + //审批 @PostMapping("/approve") @RequiresPermissions(PermissionConstants.OPPORTUNITY_QUOTATION_APPROVAL) @@ -95,6 +108,14 @@ public String approve(@RequestBody OpportunityQuotationEditRequest request) { return opportunityQuotationService.approve(request, SessionUtils.getUserId(), OrganizationContext.getOrganizationId()); } + //批量审批 + @PostMapping("/batch/approve") + @RequiresPermissions(PermissionConstants.OPPORTUNITY_QUOTATION_APPROVAL) + @Operation(summary = "批量审批报价单") + public BatchAffectResponse batchApprove(@RequestBody OpportunityQuotationBatchRequest request) { + return opportunityQuotationService.batchApprove(request, SessionUtils.getUserId(), OrganizationContext.getOrganizationId()); + } + //删除报价单 @GetMapping("/delete/{id}") @RequiresPermissions(PermissionConstants.OPPORTUNITY_QUOTATION_DELETE) diff --git a/backend/crm/src/main/java/cn/cordys/crm/opportunity/dto/request/OpportunityQuotationBatchRequest.java b/backend/crm/src/main/java/cn/cordys/crm/opportunity/dto/request/OpportunityQuotationBatchRequest.java new file mode 100644 index 000000000..2857c2104 --- /dev/null +++ b/backend/crm/src/main/java/cn/cordys/crm/opportunity/dto/request/OpportunityQuotationBatchRequest.java @@ -0,0 +1,21 @@ +package cn.cordys.crm.opportunity.dto.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +public class OpportunityQuotationBatchRequest { + + @NotEmpty + @Schema(description = "ID集合") + private List ids; + + @NotBlank + @Schema(description = "审批状态") + private String approvalStatus; + +} diff --git a/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.java b/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.java index f04e1abb4..bc23a12ff 100644 --- a/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.java +++ b/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.java @@ -11,4 +11,6 @@ public interface ExtOpportunityQuotationMapper { List list(@Param("request") OpportunityQuotationPageRequest request, @Param("orgId") String orgId); + + void batchUpdateApprovalStatus(List approvingIds, String approvalStatus, String userId, long updateTime); } diff --git a/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.xml b/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.xml index d9eacc8aa..3bf3fdfcc 100644 --- a/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.xml +++ b/backend/crm/src/main/java/cn/cordys/crm/opportunity/mapper/ExtOpportunityQuotationMapper.xml @@ -3,6 +3,17 @@ + + update opportunity_quotation + set approval_status = #{approvalStatus}, + update_user = #{userId}, + update_time = #{updateTime} + where id in + + #{id} + + +