From cff04fe9061f6754b8b6af670f85908aecc6d648 Mon Sep 17 00:00:00 2001 From: Gauthier LO Date: Tue, 12 Sep 2023 12:26:51 +0200 Subject: [PATCH] feature : (WIP) Expenses overview + transactions VIEW --- .../shippingInvoice/InvoiceController.java | 10 +- .../ShippingInvoiceController.java | 2 - .../client/TransactionController.java | 92 ++++++++++++++++ .../modules/business/entity/Transaction.java | 101 ++++++++++++++++++ .../business/mapper/PlatformOrderMapper.java | 2 +- .../mapper/ShippingInvoiceMapper.java | 2 +- .../business/mapper/TransactionMapper.java | 15 +++ .../mapper/xml/PlatformOrderMapper.xml | 12 ++- .../mapper/xml/ShippingInvoiceMapper.xml | 8 +- .../business/mapper/xml/TransactionMapper.xml | 13 +++ .../service/IPlatformOrderService.java | 2 +- .../service/IShippingInvoiceService.java | 2 +- .../business/service/ITransactionService.java | 18 ++++ .../impl/PlatformOrderServiceImpl.java | 4 +- .../impl/ShippingInvoiceServiceImpl.java | 4 +- .../service/impl/TransactionServiceImpl.java | 30 ++++++ .../resources/templates/invoiceDetailMail.ftl | 2 +- 17 files changed, 298 insertions(+), 21 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/client/TransactionController.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Transaction.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/TransactionMapper.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/TransactionMapper.xml create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ITransactionService.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/TransactionServiceImpl.java diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java index c6bf9cfe5..2049b0378 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java @@ -318,7 +318,7 @@ public class InvoiceController { ((LoginUser) SecurityUtils.getSubject().getPrincipal()).getUsername(), shopIds); List shopIdList = Arrays.asList(shopIds.split(",")); - List orders = platformOrderService.findUninvoicedOrdersByShopForClient(shopIdList); + List orders = platformOrderService.findUninvoicedOrdersByShopForClient(shopIdList, Collections.singletonList(1)); IPage page = new Page<>(); page.setRecords(orders); page.setTotal(orders.size()); @@ -559,12 +559,12 @@ public class InvoiceController { } @GetMapping(value = "/checkInvoiceValidity") - public Result checkInvoiceValidity(@RequestParam("invoiceID") String invoiceID, @RequestParam("email") String email, @RequestParam("orgCode") String orgCode) { - String invoiceNumber; + public Result checkInvoiceValidity(@RequestParam("invoiceNumber") String invoiceNumber, @RequestParam("email") String email, @RequestParam("orgCode") String orgCode) { + String invoiceID; String customerFullName; - invoiceNumber = iShippingInvoiceService.getShippingInvoiceNumber(invoiceID); + invoiceID = iShippingInvoiceService.getShippingInvoiceId(invoiceNumber); // if invoice exists - if (invoiceNumber == null) { + if (invoiceID == null) { return Result.error("Error 404 page not found."); } // if user is a customer, we check if he's the owner of the shops diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/ShippingInvoiceController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/ShippingInvoiceController.java index 64fe943c5..d6b410aad 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/ShippingInvoiceController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/ShippingInvoiceController.java @@ -450,7 +450,6 @@ public class ShippingInvoiceController { @GetMapping(value = "/sendDetailsByEmail") public Result sendDetailsByEmail(@RequestParam("invoiceNumber") String invoiceNumber, - @RequestParam("invoiceID") String invoiceID, @RequestParam("email") String email, @RequestParam("invoiceEntity") String invoiceEntity) throws Exception { String filePath = getInvoiceList(invoiceNumber, "detail"); @@ -460,7 +459,6 @@ public class ShippingInvoiceController { Map templateModel = new HashMap<>(); templateModel.put("fileType", fileType); templateModel.put("invoiceEntity", invoiceEntity); - templateModel.put("invoiceID", invoiceID); templateModel.put("invoiceNumber", invoiceNumber); Session session = Session.getInstance(prop, new Authenticator() { diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/client/TransactionController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/client/TransactionController.java new file mode 100644 index 000000000..7b09d970f --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/client/TransactionController.java @@ -0,0 +1,92 @@ +package org.jeecg.modules.business.controller.client; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.business.domain.shippingInvoice.ShippingInvoiceFactory; +import org.jeecg.modules.business.entity.PlatformOrder; +import org.jeecg.modules.business.mapper.*; +import org.jeecg.modules.business.service.*; +import org.jeecg.modules.business.vo.ShippingFeesEstimation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Api(tags = "Transaction") +@RestController +@RequestMapping("/transaction") +@Slf4j +public class TransactionController { + @Autowired + private TransactionMapper transactionMapper; + @Autowired + private IPlatformOrderService platformOrderService; + @Autowired + private IShopService shopService; + @Autowired + ShippingInvoiceMapper shippingInvoiceMapper; + @Autowired + PlatformOrderMapper platformOrderMapper; + @Autowired + ClientMapper clientMapper; + @Autowired + ShopMapper shopMapper; + @Autowired + LogisticChannelPriceMapper logisticChannelPriceMapper; + @Autowired + LogisticChannelMapper logisticChannelMapper; + @Autowired + IPlatformOrderContentService platformOrderContentService; + @Autowired + ISkuDeclaredValueService skuDeclaredValueService; + @Autowired + FactureDetailMapper factureDetailMapper; + @Autowired + CountryService countryService; + @Autowired + IPurchaseOrderService purchaseOrderService; + @Autowired + PurchaseOrderContentMapper purchaseOrderContentMapper; + @Autowired + SkuPromotionHistoryMapper skuPromotionHistoryMapper; + @Autowired + ExchangeRatesMapper exchangeRatesMapper; + @Autowired + ISavRefundWithDetailService savRefundWithDetailService; + @Autowired + ISavRefundService savRefundService; + @GetMapping(value="/list") + public Result list() { + return Result.ok(transactionMapper.list()); + } + @GetMapping(value="/listByClient") + public Result listByClientId(@RequestParam("clientId") String clientId) { + return Result.ok(transactionMapper.listByClientId(clientId)); + } + @GetMapping(value="/debit") + public Result debit(@RequestParam("clientId") String clientId) { + List errorMessages = new ArrayList<>(); + List shopIds = shopService.listIdByClient(clientId); + List orders = platformOrderService.findUninvoicedOrdersByShopForClient(shopIds, Arrays.asList(1,2,3)); + List orderIds = orders.stream().map(PlatformOrder::getId).collect(Collectors.toList()); + System.out.println("Orders size : " + orderIds.size()); + System.out.println("Orders : " + orderIds); + ShippingInvoiceFactory factory = new ShippingInvoiceFactory( + platformOrderService, clientMapper, shopMapper, logisticChannelMapper, logisticChannelPriceMapper, + platformOrderContentService, skuDeclaredValueService, countryService, exchangeRatesMapper, + purchaseOrderService, purchaseOrderContentMapper, skuPromotionHistoryMapper, savRefundService, savRefundWithDetailService); + List estimations = factory.getEstimations(clientId, orderIds, errorMessages); + System.out.println("Estimation size : " + estimations.size()); + for(ShippingFeesEstimation estimation: estimations) { + System.out.println("estimation : " + estimation.getDueForProcessedOrders()); + } + return Result.ok(estimations); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Transaction.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Transaction.java new file mode 100644 index 000000000..fd8f433fe --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Transaction.java @@ -0,0 +1,101 @@ +package org.jeecg.modules.business.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: transaction + * @Author: jeecg-boot + * @Date: 2023-09-08 + * @Version: V1.0 + */ +@Data +@TableName("transaction") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="transaction对象", description="transaction") +public class Transaction implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**type*/ + @Excel(name = "type", width = 15) + @ApiModelProperty(value = "type") + private java.lang.String type; + /**client code*/ + @Excel(name = "client code", width = 15) + @ApiModelProperty(value = "client ID") + private java.lang.String clientId; + /**proof*/ + @Excel(name = "proof", width = 15) + private transient java.lang.String paymentProofString; + + private byte[] paymentProof; + + public byte[] getPaymentProof(){ + if(paymentProofString==null){ + return null; + } + try { + return paymentProofString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getPaymentProofString(){ + if(paymentProof==null || paymentProof.length==0){ + return ""; + } + try { + return new String(paymentProof,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } + /**invoice number*/ + @Excel(name = "invoice number", width = 15) + @ApiModelProperty(value = "invoice number") + private java.lang.String invoiceNumber; + /**amount*/ + @Excel(name = "amount", width = 15) + @ApiModelProperty(value = "amount") + private java.math.BigDecimal amount; + /**currency*/ + @Excel(name = "currency", width = 15) + @ApiModelProperty(value = "currency") + private java.lang.String currency; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java index 8be0afb83..84b9fc495 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java @@ -187,5 +187,5 @@ public interface PlatformOrderMapper extends BaseMapper { void cancelInvoice(@Param("invoiceNumber") String invoiceNumber); void cancelBatchInvoice(@Param("invoiceNumbers") List invoiceNumbers); - List findUninvoicedOrdersByShopForClient(@Param("shopIds") List shopIds); + List findUninvoicedOrdersByShopForClient(@Param("shopIds") List shopIds, @Param("erpStatuses") List erpStatuses); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ShippingInvoiceMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ShippingInvoiceMapper.java index 9dc87cd52..5b050ddfc 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ShippingInvoiceMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ShippingInvoiceMapper.java @@ -18,7 +18,7 @@ import java.util.List; */ @Repository public interface ShippingInvoiceMapper extends BaseMapper { - String fetchShippingInvoiceNumber(@Param("invoiceID") String invoiceID); + String fetchShippingInvoiceId(@Param("invoiceNumber") String invoiceNumber); ShippingInvoice fetchShippingInvoice(@Param("invoiceNumber") String invoiceNumber); List fetchPlatformOrder(@Param("invoiceNumber") String invoiceNumber); List fetchPlatformOrderContent(@Param("platformOrderId") String platformOrderId); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/TransactionMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/TransactionMapper.java new file mode 100644 index 000000000..0b613c98d --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/TransactionMapper.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.business.entity.Transaction; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TransactionMapper extends BaseMapper { + List list(); + + List listByClientId(@Param("clientId") String clientId); +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml index 899267fe9..a167de2d6 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml @@ -543,7 +543,17 @@ - SELECT invoice_number - FROM shipping_invoice s - WHERE s.id = #{invoiceID} + + SELECT * FROM transaction; + + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java index 459b47275..dcd57d601 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java @@ -183,5 +183,5 @@ public interface IPlatformOrderService extends IService { * @param shopIds list of shop id * @return list of orders */ - List findUninvoicedOrdersByShopForClient(List shopIds); + List findUninvoicedOrdersByShopForClient(List shopIds, List erpStatuses); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IShippingInvoiceService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IShippingInvoiceService.java index 00937be52..9f0f21276 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IShippingInvoiceService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IShippingInvoiceService.java @@ -37,7 +37,7 @@ public interface IShippingInvoiceService extends IService { * 批量删除一对多 */ public void delBatchMain(Collection idList); - public String getShippingInvoiceNumber(String invoiceID); + public String getShippingInvoiceId(String invoiceNumber); public ShippingInvoice getShippingInvoice(String invoiceNumber); public List getPlatformOrder(String invoiceNumber); public List getPlatformOrderContent(String platformOrderId); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ITransactionService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ITransactionService.java new file mode 100644 index 000000000..91dab82b6 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ITransactionService.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.business.service; + +import org.jeecg.modules.business.entity.Transaction; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Description: transaction + * @Author: jeecg-boot + * @Date: 2023-09-08 + * @Version: V1.0 + */ +@Repository +public interface ITransactionService extends IService { + List list(); +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java index a6c2fe5eb..154eea8e9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java @@ -395,7 +395,7 @@ public class PlatformOrderServiceImpl extends ServiceImpl findUninvoicedOrdersByShopForClient(List shopIds) { - return platformOrderMap.findUninvoicedOrdersByShopForClient(shopIds); + public List findUninvoicedOrdersByShopForClient(List shopIds, List erpStatuses) { + return platformOrderMap.findUninvoicedOrdersByShopForClient(shopIds, erpStatuses); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/ShippingInvoiceServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/ShippingInvoiceServiceImpl.java index 3f9a7b48e..a057097f8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/ShippingInvoiceServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/ShippingInvoiceServiceImpl.java @@ -72,8 +72,8 @@ public class ShippingInvoiceServiceImpl extends ServiceImpl implements ITransactionService { + + @Autowired + private TransactionMapper transactionMapper; + @Override + public List list() { + return transactionMapper.list(); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl index bac1c2a52..f0588d233 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl +++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl @@ -30,7 +30,7 @@ Client : ${invoiceEntity} - Numéro de facture : ${invoiceNumber} + Numéro de facture : ${invoiceNumber} Merci d’utiliser nos services.