yuan
6 小时以前 812f2de34b5713c4da08932d95e634de81e9b248
Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁
已修改3个文件
62 ■■■■ 文件已修改
src/main/java/com/ruoyi/home/controller/HomeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/system/SysUserMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -162,8 +162,8 @@
    @GetMapping("/processOutputAnalysis")
    @Operation(summary = "工序产出分析")
    public R processOutputAnalysis(@DefaultType Integer type){
        List<MapDto> list = homeService.processOutputAnalysis(type);
    public R processOutputAnalysis(@DefaultType Integer dateType){
        List<MapDto> list = homeService.processOutputAnalysis(dateType);
        return R.ok(list);
    }
src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
@@ -34,22 +34,50 @@
    public AjaxResult total() {
        List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(null);
        if(CollectionUtils.isEmpty(salesLedgers)) return AjaxResult.success(salesLedgers);
        if (CollectionUtils.isEmpty(salesLedgers)) {
            return AjaxResult.success(salesLedgers);
        }
        Map<String, Object> map = new HashMap<>();
        // 销售额
        map.put("contractAmountTotal", salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
        // 订单数量
        map.put("total", new BigDecimal(salesLedgers.size()));
        // 发货率
        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
        //  销售额
        BigDecimal contractAmountTotal = salesLedgers.stream()
                .map(SalesLedger::getContractAmount)
                .filter(Objects::nonNull)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        map.put("contractAmountTotal", contractAmountTotal);
        //  订单数量
        int totalOrders = salesLedgers.size();
        map.put("total", new BigDecimal(totalOrders));
        map.put("shipRate", "0.00%");
        //  发货率
        List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
                .eq(SalesLedgerProduct::getType, 1));
        map.put("shipRate", "0%");
        if(CollectionUtils.isEmpty(salesLedgerProducts)) return AjaxResult.success(map);
        // 发货数量
        long count = shippingInfoMapper.selectCount(new LambdaQueryWrapper<ShippingInfo>()
                .in(ShippingInfo::getSalesLedgerProductId, salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList()))
                .eq(ShippingInfo::getStatus,"审核通过"));
        map.put("shipRate", String.format("%.2f", count * 100.0 / salesLedgerProducts.size()) + "%");
        if (CollectionUtils.isEmpty(products)) {
            return AjaxResult.success(map);
        }
        Map<Long, Long> productIdToLedgerIdMap = products.stream()
                .filter(p -> p.getId() != null && p.getSalesLedgerId() != null)
                .collect(Collectors.toMap(SalesLedgerProduct::getId, SalesLedgerProduct::getSalesLedgerId, (k1, k2) -> k1));
        List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
                .eq(ShippingInfo::getStatus, "审核通过"));
        long shippedOrderCount = shippingInfos.stream()
                .filter(info -> productIdToLedgerIdMap.containsKey(info.getSalesLedgerProductId()))
                .map(info -> {
                    if (info.getSalesLedgerId() != null) {
                        return info.getSalesLedgerId();
                    }
                    return productIdToLedgerIdMap.get(info.getSalesLedgerProductId());
                })
                .filter(Objects::nonNull)
                .distinct()
                .count();
        map.put("shipRate", String.format("%.2f", shippedOrderCount * 100.0 / totalOrders) + "%");
        return AjaxResult.success(map);
    }
src/main/resources/mapper/system/SysUserMapper.xml
@@ -187,7 +187,7 @@
        where email = #{email}
          and del_flag = '0' limit 1
    </select>
    <select id="selectUserByIds" resultType="com.ruoyi.project.system.domain.SysUser">
    <select id="selectUserByIds" resultMap="SysUserResult">
        <include refid="selectUserVo"/>
        <where>
            <if test="userIds != null and userIds.size > 0">