优化
This commit is contained in:
+3
-3
@@ -70,7 +70,7 @@ public class PlatformContainerController {
|
||||
@GetMapping("/{id}/documents/{documentType}") @PreAuthorize("hasAuthority('platform:firstleg:container:list')")
|
||||
public ApiResponse<BusinessDocument> logisticsDocument(@AuthenticationPrincipal AuthenticatedUser user,@PathVariable @Positive long id,@PathVariable String documentType){FirstlegScopeGuard.platform(user);return ApiResponse.success(loadingLists.containerLogisticsDocument(id,documentType));}
|
||||
@PostMapping(value="/{id}/documents/{documentType}/upload",consumes=MediaType.MULTIPART_FORM_DATA_VALUE) @PreAuthorize("hasAuthority('platform:firstleg:container:edit')")
|
||||
public ApiResponse<BusinessDocument> uploadLogisticsDocument(@AuthenticationPrincipal AuthenticatedUser user,@PathVariable @Positive long id,@PathVariable String documentType,@RequestHeader("Idempotency-Key") String key,@RequestPart("file") MultipartFile file,@RequestPart("expectedVersion") @Min(0) int version,@RequestPart(value="operationReason",required=false) String reason){FirstlegScopeGuard.platform(user);return ApiResponse.success(loadingLists.uploadContainerLogisticsDocument(id,documentType,user.userId(),user.username(),key,version,reason,file));}
|
||||
public ApiResponse<BusinessDocument> uploadLogisticsDocument(@AuthenticationPrincipal AuthenticatedUser user,@PathVariable @Positive long id,@PathVariable String documentType,@RequestHeader("Idempotency-Key") String key,@RequestPart("file") MultipartFile file,@RequestParam("expectedVersion") @Min(0) int version,@RequestParam(value="operationReason",required=false) String reason){FirstlegScopeGuard.platform(user);return ApiResponse.success(loadingLists.uploadContainerLogisticsDocument(id,documentType,user.userId(),user.username(),key,version,reason,file));}
|
||||
@GetMapping("/{id}/documents/{documentType}/{fileId}/download") @PreAuthorize("hasAuthority('platform:firstleg:container:list')")
|
||||
public ResponseEntity<byte[]> downloadDocument(@AuthenticationPrincipal AuthenticatedUser user,@PathVariable @Positive long id,@PathVariable String documentType,@PathVariable @Positive long fileId){FirstlegScopeGuard.platform(user);var d=loadingLists.downloadContainerDocument(id,documentType,fileId);return ResponseEntity.ok().cacheControl(CacheControl.noStore()).header(HttpHeaders.CONTENT_DISPOSITION,org.springframework.http.ContentDisposition.attachment().filename(d.fileName(),StandardCharsets.UTF_8).build().toString()).contentType(d.contentType()).contentLength(d.content().length).body(d.content());}
|
||||
@PostMapping @PreAuthorize("hasAuthority('platform:firstleg:container:create')")
|
||||
@@ -127,8 +127,8 @@ public class PlatformContainerController {
|
||||
@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long id,
|
||||
@RequestHeader("Idempotency-Key") String key,
|
||||
@RequestPart("file") MultipartFile file,
|
||||
@RequestPart("expectedVersion") @Min(0) int expectedVersion,
|
||||
@RequestPart(value = "operationReason", required = false) @Size(max = 500) String operationReason) {
|
||||
@RequestParam("expectedVersion") @Min(0) int expectedVersion,
|
||||
@RequestParam(value = "operationReason", required = false) @Size(max = 500) String operationReason) {
|
||||
FirstlegScopeGuard.platform(user);
|
||||
return ApiResponse.success(loadingLists.uploadContainerClearance(
|
||||
id, user.userId(), user.username(), key, expectedVersion, operationReason, file));
|
||||
|
||||
+2
-2
@@ -129,8 +129,8 @@ public class PlatformLoadingListController {
|
||||
@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long planId,
|
||||
@RequestParam @Positive long warehouseId, @RequestHeader("Idempotency-Key") String key,
|
||||
@RequestPart("file") MultipartFile file,
|
||||
@RequestPart("expectedVersion") @Min(0) int expectedVersion,
|
||||
@RequestPart(value = "operationReason", required = false) @Size(max = 500) String operationReason) {
|
||||
@RequestParam("expectedVersion") @Min(0) int expectedVersion,
|
||||
@RequestParam(value = "operationReason", required = false) @Size(max = 500) String operationReason) {
|
||||
FirstlegScopeGuard.platform(user);
|
||||
return ApiResponse.success(service.uploadLoadingDeclaration(planId, warehouseId,
|
||||
user.userId(), user.username(), key, expectedVersion, operationReason, file));
|
||||
|
||||
@@ -22,7 +22,6 @@ import java.util.List;
|
||||
/** 入库单人工费用明细应用服务。 */
|
||||
@Service
|
||||
public class InboundFeeDetailService {
|
||||
private static final long PLATFORM_TENANT_ID = 0L;
|
||||
private static final String FREIGHT_FEE_CODE = "FBA_HEAD_FREIGHT";
|
||||
@Resource
|
||||
private FeeItemRepository repository;
|
||||
@@ -59,7 +58,7 @@ public class InboundFeeDetailService {
|
||||
throw conflict("只有已发送状态的计费快照才能生成客户运费明细");
|
||||
}
|
||||
LocalDateTime now = publishedAt == null ? LocalDateTime.now() : publishedAt;
|
||||
FeeItemEntity feeItem = requiredFreightItem(operatorId, operatorName);
|
||||
FeeItemEntity feeItem = requiredFreightItem();
|
||||
InboundFeeItemEntity baseItem = pricingRepository.findBaseItem(tenantId, feeId);
|
||||
repository.supersedePublishedFreight(tenantId, inboundId, feeId, operatorId, now);
|
||||
|
||||
@@ -240,42 +239,11 @@ public class InboundFeeDetailService {
|
||||
return value;
|
||||
}
|
||||
|
||||
private FeeItemEntity requiredFreightItem(long operatorId, String operatorName) {
|
||||
private FeeItemEntity requiredFreightItem() {
|
||||
FeeItemEntity item = repository.findItemByCode(FREIGHT_FEE_CODE);
|
||||
if (item != null) {
|
||||
if (!"ACTIVE".equals(item.getStatus())) throw conflict("系统费用项目FBA头程运费已停用");
|
||||
return item;
|
||||
}
|
||||
FeeItemEntity created = new FeeItemEntity();
|
||||
created.setTenantId(PLATFORM_TENANT_ID);
|
||||
created.setCategory("头程运费");
|
||||
created.setTradeScope("INTERNATIONAL");
|
||||
created.setFeeCode(FREIGHT_FEE_CODE);
|
||||
created.setFeeTypeName("FBA头程运费");
|
||||
created.setPickupPayable(false);
|
||||
created.setPickupReceivable(false);
|
||||
created.setWarehousePayable(false);
|
||||
created.setWarehouseReceivable(true);
|
||||
created.setAllocationFee(false);
|
||||
created.setDescription("系统计费发布时自动维护,不允许用于应付费用");
|
||||
created.setStatus("ACTIVE");
|
||||
created.setCreatedBy(operatorId);
|
||||
created.setUpdatedBy(operatorId);
|
||||
created.setCreatedByName(operatorName);
|
||||
created.setUpdatedByName(operatorName);
|
||||
try {
|
||||
repository.insertItem(created);
|
||||
return created;
|
||||
} catch (DuplicateKeyException exception) {
|
||||
FeeItemEntity concurrent = repository.findItemByCode(FREIGHT_FEE_CODE);
|
||||
if (concurrent != null) {
|
||||
if (!"ACTIVE".equals(concurrent.getStatus())) {
|
||||
throw conflict("系统费用项目FBA头程运费已停用");
|
||||
}
|
||||
return concurrent;
|
||||
}
|
||||
throw exception;
|
||||
}
|
||||
if (item == null) throw conflict("系统费用项目FBA头程运费未初始化");
|
||||
if (!"ACTIVE".equals(item.getStatus())) throw conflict("系统费用项目FBA头程运费已停用");
|
||||
return item;
|
||||
}
|
||||
|
||||
private static java.math.BigDecimal effectiveUnitPrice(InboundFeeEntity fee) {
|
||||
|
||||
Reference in New Issue
Block a user