diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderController.java index db1f33c..a567fa6 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderController.java @@ -11,6 +11,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.apache.dubbo.config.annotation.DubboReference; +import org.asinkj.amz.domain.BizLogisticsOrder; import org.asinkj.amz.domain.bo.BizLogisticsCreateOrderBo; import org.asinkj.common.core.utils.StringUtils; import org.asinkj.common.core.utils.file.MimeTypeUtils; @@ -157,4 +158,10 @@ public class BizLogisticsOrderController extends BaseController { public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(bizLogisticsOrderService.deleteWithValidByIds(List.of(ids), true)); } + + @GetMapping("/query") + public R> query() { + return R.ok(bizLogisticsOrderService.selectOrdersByUserId()); + } + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java index b3785b2..75d1bb2 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java @@ -3,11 +3,13 @@ package org.asinkj.amz.controller; import java.util.List; import java.util.Map; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.asinkj.amz.domain.bo.BizLogisticsQuoteMostBo; +import org.asinkj.amz.domain.bo.BizLogisticsQuoteReportBo; import org.asinkj.amz.domain.vo.InquiryQuoteStatusDTO; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -57,22 +59,20 @@ public class BizLogisticsQuoteController extends BaseController { @SaCheckPermission("amz:shipmentPlan:edit") @GetMapping("/query/{destination}/{channelId}/{date}") public TableDataInfo queryWithDesAndChannel(@PathVariable("destination") @NotNull(message = "目的地不能为空") String destination, - @PathVariable("channelId") @NotNull(message = "渠道不能为空") String channelId, + @PathVariable("channelId") @NotNull(message = "渠道不能为空") String channelId, @PathVariable("date") @NotNull(message = "日期不能为空") String date) { - return bizLogisticsQuoteService.listWithDesAndChannel(destination, channelId,date); + return bizLogisticsQuoteService.listWithDesAndChannel(destination, channelId, date); } @SaCheckPermission("amz:shipmentPlan:edit") @GetMapping("/queryWithDes/{destination}/{date}") public TableDataInfo queryWithDes(@PathVariable("destination") @NotNull(message = "目的地不能为空") String destination, - @PathVariable("date") @NotNull(message = "日期不能为空") String date) { - return bizLogisticsQuoteService.listWithDes(destination,date); + @PathVariable("date") @NotNull(message = "日期不能为空") String date) { + return bizLogisticsQuoteService.listWithDes(destination, date); } - - /** * 导出物流报价列表 */ @@ -92,7 +92,7 @@ public class BizLogisticsQuoteController extends BaseController { @SaCheckPermission("amz:logisticsQuote:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + @PathVariable Long id) { return R.ok(bizLogisticsQuoteService.queryById(id)); } @@ -161,11 +161,15 @@ public class BizLogisticsQuoteController extends BaseController { return toAjax(bizLogisticsQuoteService.deleteWithValidByIds(List.of(ids), true)); } - + /** + * 查询报表 + * + * @return + */ @SaCheckPermission("amz:logisticsQuote:query") - @GetMapping("/report") - public R>> getInfo() { - List> maps = bizLogisticsQuoteService.generateReport(); + @PostMapping("/report") + public R>> getInfo(@Valid @RequestBody BizLogisticsQuoteReportBo bo) { + List> maps = bizLogisticsQuoteService.generateReport(bo); return R.ok(maps); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsQuoteReportBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsQuoteReportBo.java new file mode 100644 index 0000000..67924b6 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsQuoteReportBo.java @@ -0,0 +1,57 @@ +package org.asinkj.amz.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.asinkj.amz.domain.BizLogisticsQuote; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import org.asinkj.common.mybatis.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serial; +import java.util.Date; + +/** + * 物流报价业务对象 biz_logistics_quote + * + * @author shuo hu + * @date 2025-03-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BizLogisticsQuote.class, reverseConvertGenerate = false) +public class BizLogisticsQuoteReportBo extends BaseEntity { + + @Serial + private static final long serialVersionUID = -8065228533338642055L; + + + /** + * 目的地(建议使用ISO国家代码如CN/US/GB) + */ + @NotBlank(message = "目的地(建议使用ISO国家代码如CN/US/GB)不能为空") + private String destination; + + + + /** + * 报价开始生效日期 + */ + @NotNull(message = "报价开始生效日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") + private Date quoteStartDate; + + + /** + * 报价开始生效日期 + */ + @NotNull(message = "报价结束生效日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") + private Date quoteEndDate; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java index df7b358..7e8d179 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java @@ -1,11 +1,14 @@ package org.asinkj.amz.mapper; +import jakarta.validation.constraints.Size; import org.apache.ibatis.annotations.Param; import org.asinkj.amz.domain.BizLogisticsQuote; import org.asinkj.amz.domain.vo.BizLogisticsQuoteVo; import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; +import java.util.Date; import java.util.List; import java.util.Map; @@ -25,4 +28,13 @@ public interface BizLogisticsQuoteMapper extends BaseMapperPlus> selectDynamicReport(@Param("channels") List channels); + + List> getQuoteReport( @Param("columns") List channels, + @Param("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate, + @Param("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate, + @Param("destination") @Size(max = 10) String destination); + + + List> getQuoteAvgDayReport(@Param("columns") List channels); + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderService.java index 27cbfe3..ed3d7a5 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderService.java @@ -71,4 +71,7 @@ public interface IBizLogisticsOrderService { void createByBo(BizLogisticsCreateOrderBo bo); void updateByOrderId(BizLogisticsOrderBo bizLogisticsOrderBo); + + + List selectOrdersByUserId(); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java index d142b61..747514b 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Opt; import jakarta.validation.constraints.NotNull; import org.asinkj.amz.domain.BizLogisticsQuote; import org.asinkj.amz.domain.bo.BizLogisticsQuoteMostBo; +import org.asinkj.amz.domain.bo.BizLogisticsQuoteReportBo; import org.asinkj.amz.domain.vo.BizLogisticsQuoteVo; import org.asinkj.amz.domain.bo.BizLogisticsQuoteBo; import org.asinkj.amz.domain.vo.InquiryQuoteStatusDTO; @@ -32,7 +33,9 @@ public interface IBizLogisticsQuoteService { */ BizLogisticsQuoteVo queryById(Long id); - List> generateReport(); + List> generateReport(BizLogisticsQuoteReportBo bo); + + List> getQuoteAvgDayReport(); /** * 分页查询物流报价列表 diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java index 2539c1e..edafd96 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java @@ -20,8 +20,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.asinkj.common.satoken.utils.LoginHelper; import org.asinkj.system.api.RemoteUserService; -import org.asinkj.system.api.model.LoginUser; -import org.asinkj.system.api.model.RoleDTO; import org.asinkj.utils.SerialNoGenerator; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizLogisticsOrderBo; @@ -30,7 +28,6 @@ import org.asinkj.amz.mapper.BizLogisticsOrderMapper; import javax.annotation.Resource; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -306,4 +303,9 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { baseMapper.update(updateWrapper); } + @Override + public List selectOrdersByUserId() { + return baseMapper.selectOrdersByUserId(LoginHelper.getUserId()); + } + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java index f4e9ad6..fe59e0f 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java @@ -3,11 +3,11 @@ package org.asinkj.amz.service.impl; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Opt; import cn.hutool.core.util.NumberUtil; import lombok.extern.slf4j.Slf4j; import org.asinkj.amz.domain.BizInquiryRequest; import org.asinkj.amz.domain.bo.BizLogisticsQuoteMostBo; +import org.asinkj.amz.domain.bo.BizLogisticsQuoteReportBo; import org.asinkj.amz.domain.vo.InquiryQuoteStatusDTO; import org.asinkj.amz.mapper.BizInquiryRequestMapper; import org.asinkj.amz.mapper.BizLogisticsChannelMapper; @@ -79,12 +79,25 @@ public class BizLogisticsQuoteServiceImpl implements IBizLogisticsQuoteService { @Override - public List> generateReport() { + public List> generateReport(BizLogisticsQuoteReportBo bo) { // 1. 获取所有渠道名称 List channels = bizLogisticsChannelMapper.listAllChannels(); // 2. 调用动态报表查询 - return baseMapper.selectDynamicReport(channels); +// return baseMapper.selectDynamicReport(channels); + + return baseMapper.getQuoteReport(channels,bo.getQuoteStartDate(), bo.getQuoteEndDate(),bo.getDestination()); + } + + @Override + public List> getQuoteAvgDayReport() { + // 1. 获取所有渠道名称 + List channels = bizLogisticsChannelMapper.listAllChannels(); + + // 2. 调用动态报表查询 +// return baseMapper.selectDynamicReport(channels); + + return baseMapper.getQuoteAvgDayReport(channels); } /** diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml index 396155e..e0f211f 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml @@ -5,6 +5,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml index 21e78a7..e292b8b 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml @@ -36,4 +36,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE rn = 1 GROUP BY logistics_name + +