diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/SecurityController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/SecurityController.java new file mode 100644 index 000000000..00514b07e --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/SecurityController.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.business.controller; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "Security-安全管理") +@RestController +@RequestMapping("/security") +@Slf4j +public class SecurityController { + + @GetMapping(value = "/isEmployee") + public Result checkIsEmployee () { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + return Result.ok(!sysUser.getOrgCode().contains("A04")); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/AdminController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/AdminController.java new file mode 100644 index 000000000..746aa7035 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/AdminController.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.business.controller.admin; + +import cn.hutool.core.date.DateTime; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.business.service.DashboardService; +import org.jeecg.modules.system.service.impl.SysBaseApiImpl; +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.RestController; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.List; +import java.util.Map; + +@Api(tags = "Admin-管理员管理") +@RestController +@RequestMapping("/admin") +@Slf4j +public class AdminController { + + @Autowired private DashboardService dashboardService; + @Autowired private SysBaseApiImpl sysBaseApi; + @GetMapping(value = "/kpis") + public Result kpis() { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List roles = sysBaseApi.getRolesByUsername(sysUser.getUsername()); + LocalDateTime start = LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT"))).minusMonths(11).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0); + LocalDateTime end = LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT"))); + Map kpiMap = dashboardService.getKpis(start, end, roles, sysUser.getUsername()); + + return Result.ok(kpiMap); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/InvoiceViewController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/InvoiceViewController.java new file mode 100644 index 000000000..48c016722 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/InvoiceViewController.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.business.controller.admin; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.business.entity.Invoice; +import org.jeecg.modules.business.service.InvoiceService; +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 javax.servlet.http.HttpServletRequest; + +@Api(tags = "发票") +@RestController +@RequestMapping("/invoice") +@Slf4j +public class InvoiceViewController { + @Autowired + private InvoiceService invoiceService; + @GetMapping(value = "/list") + public Result list(Invoice invoice, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(invoice, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = invoiceService.page(page, queryWrapper); + return Result.ok(pageList); + } +} 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 5363a0ea6..1ca9e4a31 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 @@ -519,4 +519,25 @@ public class ShippingInvoiceController { log.info("End of invoice files deletion."); return Result.ok("Invoices cancellation finished."); } + + @PostMapping(value = "/setPaid") + public Result setPaid(@RequestBody List invoiceNumbers) { + log.info("Setting invoice numbers : {} to paid.", invoiceNumbers); + System.out.println("Setting invoice numbers list : " + invoiceNumbers + " to paid."); + List purchaseNumbers = invoiceNumbers.stream().filter(invoice -> invoice.charAt(8) == '1' || invoice.charAt(8) == '7').collect(Collectors.toList()); + List shippingNumbers = invoiceNumbers.stream().filter(invoice -> invoice.charAt(8) == '2' || invoice.charAt(8) == '7').collect(Collectors.toList()); + + System.out.println("Purchase numbers : " + purchaseNumbers); + System.out.println("Shipping numbers : " + shippingNumbers); + + if(purchaseNumbers.isEmpty() && shippingNumbers.isEmpty()) { + return Result.error("No invoice numbers found."); + } + + if(!purchaseNumbers.isEmpty()) + purchaseOrderService.setPaid(purchaseNumbers); + if(!shippingNumbers.isEmpty()) + shippingInvoiceService.setPaid(shippingNumbers); + return Result.ok("Invoice set to paid."); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Invoice.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Invoice.java new file mode 100644 index 000000000..02a4520a9 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/Invoice.java @@ -0,0 +1,96 @@ +package org.jeecg.modules.business.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 物流发票 + * @Author: jeecg-boot + * @Date: 2022-12-20 + * @Version: V1.0 + */ +@ApiModel(value = "invoice对象", description = "发票") +@Data +@TableName("all_invoices") +public class Invoice implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+2", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 客户 ID + */ + @Dict(dictTable = "client", dicText = "internal_code", dicCode = "id") + @Excel(name = "客户", width = 15) + @ApiModelProperty(value = "客户") + private String clientId; + /** + * currency ID + * */ + @Dict(dictTable = "currency", dicText = "code", dicCode = "id") + @Excel(name = "currencyID", width = 15) + @ApiModelProperty(value = "currency ID") + private String currencyId; + /** + * 发票号码 + */ + @Excel(name = "发票号码", width = 15) + @ApiModelProperty(value = "发票号码") + private String invoiceNumber; + /** + * 应付金额 + */ + @Excel(name = "应付金额", width = 15) + @ApiModelProperty(value = "应付金额") + private BigDecimal totalAmount; + /** + * 减免金额 + */ + @Excel(name = "减免金额", width = 15) + @ApiModelProperty(value = "减免金额") + private BigDecimal discountAmount; + /** + * 最终金额 + */ + @Excel(name = "最终金额", width = 15) + @ApiModelProperty(value = "最终金额") + private BigDecimal finalAmount; + /** + * 已付金额 + */ + @Excel(name = "已付金额", width = 15) + @ApiModelProperty(value = "已付金额") + private BigDecimal paidAmount; + + @Excel(name = "type", width = 15) + @ApiModelProperty(value = "type") + private String type; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/ShippingInvoice.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/ShippingInvoice.java index 159651f6b..9dba40b02 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/ShippingInvoice.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/ShippingInvoice.java @@ -30,7 +30,7 @@ public class ShippingInvoice implements Serializable { /** * 主键 */ - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.ASSIGN_UUID) @ApiModelProperty(value = "主键") private String id; /** diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/InvoiceMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/InvoiceMapper.java new file mode 100644 index 000000000..afbf0e708 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/InvoiceMapper.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.business.entity.Invoice; +import org.springframework.stereotype.Repository; + +@Repository +public interface InvoiceMapper extends BaseMapper { +} 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 6fd072949..df3599309 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 @@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; import org.jeecg.modules.business.domain.api.mabang.getorderlist.Order; import org.jeecg.modules.business.entity.PlatformOrder; import org.jeecg.modules.business.entity.PlatformOrderShopSync; +import org.jeecg.modules.business.vo.OrderKpi; import org.jeecg.modules.business.vo.ShippingFeeBillableOrders; import org.jeecg.modules.business.vo.clientPlatformOrder.ClientPlatformOrderPage; import org.jeecg.modules.business.vo.clientPlatformOrder.section.OrderQuantity; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Repository; import java.time.LocalDateTime; import java.util.Date; import java.util.List; +import java.util.Map; /** * @Description: 平台订单表 @@ -214,4 +216,5 @@ public interface PlatformOrderMapper extends BaseMapper { List getPlatformOrdersByInvoiceNumber(@Param("invoiceNumber") String invoiceNumber); + OrderKpi countPlatformOrders(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("showAllData") boolean showAllData, @Param("username") String username); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PurchaseOrderMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PurchaseOrderMapper.java index c3ea935f3..6592f0c1b 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PurchaseOrderMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PurchaseOrderMapper.java @@ -1,12 +1,15 @@ package org.jeecg.modules.business.mapper; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.business.entity.PlatformOrder; import org.jeecg.modules.business.entity.PurchaseOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.business.vo.InvoiceKpi; import org.jeecg.modules.business.vo.InvoiceMetaData; import org.jeecg.modules.business.vo.PurchaseOrderPage; import org.jeecg.modules.business.vo.SkuQuantity; @@ -118,4 +121,7 @@ public interface PurchaseOrderMapper extends BaseMapper { long countPurchaseOrders(); void updatePurchaseOrderStatus(@Param("invoiceNumber") String invoiceNumber, @Param("isOrdered") boolean isOrdered); + InvoiceKpi countPurchaseInvoices(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("showAllData") boolean showAllData, @Param("username") String username); + + void setPaid(@Param("invoiceNumbers") List invoiceNumbers); } 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 7a28be419..9d2fa52dd 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 @@ -3,9 +3,13 @@ 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.*; +import org.jeecg.modules.business.vo.InvoiceKpi; import org.springframework.stereotype.Repository; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; +import java.util.Map; /** * @Description: 物流发票 @@ -21,4 +25,7 @@ public interface ShippingInvoiceMapper extends BaseMapper { List fetchPlatformOrderContent(@Param("platformOrderId") String platformOrderId); Client fetchShopOwnerFromInvoiceNumber(@Param("invoiceNumber") String invoiceNumber); Currency fetchInvoiceCurrencyByCode(@Param("invoiceNumber") String invoiceCode); + InvoiceKpi countShippingInvoices(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("showAllData") boolean showAllData, @Param("username") String username); + + void setPaid(@Param("invoiceNumbers") List invoiceNumbers); } 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 5cb4065ec..e0f81fb67 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 @@ -839,4 +839,22 @@ FROM platform_order WHERE shipping_invoice_number = #{invoiceNumber}; + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PurchaseOrderMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PurchaseOrderMapper.xml index b6e074ce5..cf9b22b3c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PurchaseOrderMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PurchaseOrderMapper.xml @@ -139,4 +139,34 @@ SET ordered = #{isOrdered} WHERE invoice_number = #{invoiceNumber} + + + UPDATE purchase_order + SET paid_amount = final_amount + WHERE invoice_number IN + + #{invoiceNumber} + + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShippingInvoiceMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShippingInvoiceMapper.xml index 076075165..a9587b772 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShippingInvoiceMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShippingInvoiceMapper.xml @@ -35,4 +35,34 @@ JOIN currency c ON s.currency_id = c.id WHERE invoice_number = #{invoiceNumber} + + + UPDATE shipping_invoice + SET paid_amount = final_amount + WHERE invoice_number IN + + #{invoiceNumber} + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/DashboardService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/DashboardService.java new file mode 100644 index 000000000..765485b25 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/DashboardService.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.business.service; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +public interface DashboardService { + Map getKpis(LocalDateTime start, LocalDateTime end, List roles, String username); +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPurchaseOrderService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPurchaseOrderService.java index f805035af..cca99d4d1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPurchaseOrderService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPurchaseOrderService.java @@ -137,4 +137,6 @@ public interface IPurchaseOrderService extends IService { void setPageForList(Page page); void updatePurchaseOrderStatus(String invoiceNumber, boolean isOrdered); + + void setPaid(List invoiceNumbers); } 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 652a3dd6f..4d0622359 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 @@ -47,4 +47,6 @@ public interface IShippingInvoiceService extends IService { public List getPath(String dirPath, String invoiceNumber, String invoiceEntity); public String getInvoiceList(String invoiceNumber, String filetype); boolean deleteAttachmentFile(String filename); + + void setPaid(List invoiceNumbers); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/InvoiceService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/InvoiceService.java new file mode 100644 index 000000000..a617f9586 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/InvoiceService.java @@ -0,0 +1,8 @@ +package org.jeecg.modules.business.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.business.entity.Invoice; + +public interface InvoiceService extends IService { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/DashboardServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/DashboardServiceImpl.java new file mode 100644 index 000000000..7b839d90d --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/DashboardServiceImpl.java @@ -0,0 +1,67 @@ +package org.jeecg.modules.business.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.mapper.PlatformOrderMapper; +import org.jeecg.modules.business.mapper.PurchaseOrderMapper; +import org.jeecg.modules.business.mapper.ShippingInvoiceMapper; +import org.jeecg.modules.business.service.DashboardService; +import org.jeecg.modules.business.vo.InvoiceKpi; +import org.jeecg.modules.business.vo.Kpi; +import org.jeecg.modules.business.vo.OrderKpi; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Slf4j +@Service +public class DashboardServiceImpl implements DashboardService { + @Autowired + private ShippingInvoiceMapper shippingInvoiceMapper; + @Autowired + private PurchaseOrderMapper purchaseOrderMapper; + @Autowired + private PlatformOrderMapper platformOrderMapper; + @Override + public Map getKpis(LocalDateTime start, LocalDateTime end, List roles, String username) { + boolean showAllData = roles.contains("admin") || roles.contains("dev"); + LocalDateTime startLag = start.minusYears(1); + LocalDateTime endLag = end.minusYears(1); + + InvoiceKpi shippingInvoices = shippingInvoiceMapper.countShippingInvoices(start, end, showAllData, username); + InvoiceKpi purchaseInvoices = purchaseOrderMapper.countPurchaseInvoices(start, end, showAllData, username); + OrderKpi platformOrders = platformOrderMapper.countPlatformOrders(start, end, showAllData, username); + InvoiceKpi shippingInvoicesLag = shippingInvoiceMapper.countShippingInvoices(startLag, endLag, showAllData, username); + InvoiceKpi purchaseInvoicesLag = purchaseOrderMapper.countPurchaseInvoices(startLag, endLag, showAllData, username); + OrderKpi platformOrdersLag = platformOrderMapper.countPlatformOrders(startLag, endLag, showAllData, username); + + BigDecimal shipTotal = BigDecimal.valueOf(shippingInvoices.getTotal().doubleValue()); + BigDecimal shipTotalLag = BigDecimal.valueOf(shippingInvoicesLag.getTotal().doubleValue()); + BigDecimal purchaseTotal = BigDecimal.valueOf(purchaseInvoices.getTotal().doubleValue()); + BigDecimal purchaseTotalLag = BigDecimal.valueOf(purchaseInvoicesLag.getTotal().doubleValue()); + + BigDecimal growthShippingInvoicesTotal = shipTotal.subtract(shipTotalLag).divide(shipTotalLag, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + BigDecimal growthShippingInvoicesQty = BigDecimal.valueOf(shippingInvoices.getQty()).subtract(BigDecimal.valueOf(shippingInvoicesLag.getQty())).divide(BigDecimal.valueOf(shippingInvoicesLag.getQty()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + BigDecimal growthPurchaseInvoicesTotal = purchaseTotal.subtract(purchaseTotalLag).divide(purchaseTotalLag, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + BigDecimal growthPurchaseInvoicesQty = BigDecimal.valueOf(purchaseInvoices.getQty()).subtract(BigDecimal.valueOf(purchaseInvoicesLag.getQty())).divide(BigDecimal.valueOf(purchaseInvoicesLag.getQty()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + BigDecimal growthPlatformOrders = BigDecimal.valueOf(platformOrders.getProcessed()).subtract(BigDecimal.valueOf(platformOrdersLag.getProcessed())).divide(BigDecimal.valueOf(platformOrdersLag.getProcessed()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); + + shippingInvoices.setGrowthTotal(growthShippingInvoicesTotal); + shippingInvoices.setGrowthQty(growthShippingInvoicesQty); + purchaseInvoices.setGrowthTotal(growthPurchaseInvoicesTotal); + purchaseInvoices.setGrowthQty(growthPurchaseInvoicesQty); + platformOrders.setGrowth(growthPlatformOrders); + + Map kpis = new HashMap<>(); + kpis.put("shippingInvoices", shippingInvoices); + kpis.put("purchaseInvoices", purchaseInvoices); + kpis.put("platformOrders", platformOrders); + return kpis; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/InvoiceServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/InvoiceServiceImpl.java new file mode 100644 index 000000000..2e2175a64 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/InvoiceServiceImpl.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.business.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.entity.Invoice; +import org.jeecg.modules.business.mapper.InvoiceMapper; +import org.jeecg.modules.business.service.InvoiceService; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class InvoiceServiceImpl extends ServiceImpl implements InvoiceService { + +} 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 a6c5cedc5..8274e91fc 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 @@ -257,4 +257,9 @@ public class ShippingInvoiceServiceImpl extends ServiceImpl invoiceNumbers) { + shippingInvoiceMapper.setPaid(invoiceNumbers); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java index a87a933f1..9a63fd111 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java @@ -742,4 +742,9 @@ public class PurchaseOrderServiceImpl extends ServiceImpl invoiceNumber) { + purchaseOrderMapper.setPaid(invoiceNumber); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/InvoiceKpi.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/InvoiceKpi.java new file mode 100644 index 000000000..66ce9097f --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/InvoiceKpi.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.business.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class InvoiceKpi extends Kpi{ + private Long qty; + private Long total; + private BigDecimal growthQty; + private BigDecimal growthTotal; + + public InvoiceKpi(Long qty, Long total) { + this.qty = qty; + this.total = total; + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/Kpi.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/Kpi.java new file mode 100644 index 000000000..477d7e5dc --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/Kpi.java @@ -0,0 +1,4 @@ +package org.jeecg.modules.business.vo; + +public class Kpi { +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/OrderKpi.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/OrderKpi.java new file mode 100644 index 000000000..6f2eab404 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/OrderKpi.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.business.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OrderKpi extends Kpi { + private Long processed; + private Long processing; + private BigDecimal growth; + + public OrderKpi(Long processed, Long processing) { + this.processed = processed; + this.processing = processing; + } + +}