zss
11 小时以前 6ed4b397bb9dbb9c2d7bb0676339721fa97996bf
Merge remote-tracking branch 'origin/dev_New' into dev_New
已修改8个文件
58 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/pojo/ProductOrder.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductOrderMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -30,6 +30,11 @@
    /**
     * 销售台账产品id(sales_ledger_product)
     */
    private Long saleLedgerProductId;
    /**
     * 销售台账产品id(sales_ledger_product)
     */
    @ApiModelProperty(value = "销售台账产品id")
    private Long productModelId;
src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
@@ -101,4 +101,6 @@
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    private Long ProductMainId;
}
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -227,7 +227,7 @@
                    .salesLedgerWorkId(productionProductMain.getId())
                    .salesLedgerSchedulingId(0L)
                    .salesLedgerId(productOrder.getSalesLedgerId())
                    .salesLedgerProductId(productOrder.getProductModelId())
                    .salesLedgerProductId(productOrder.getSaleLedgerProductId())
                    .schedulingUserId(user.getUserId())
                    .schedulingUserName(user.getNickName())
                    .finishedNum(productQty)
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -270,7 +270,8 @@
    public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
        ProductOrder productOrder = new ProductOrder();
        productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
        productOrder.setProductModelId(salesLedgerProduct.getId());
        productOrder.setProductModelId(salesLedgerProduct.getProductModelId());
        productOrder.setSaleLedgerProductId(salesLedgerProduct.getId());
        productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
        productOrder.setQuantity(salesLedgerProduct.getQuantity());//需求数量
        productOrder.setCompleteQuantity(BigDecimal.ZERO);//完成数量
@@ -346,7 +347,7 @@
        //批量查询productOrder
        List<ProductOrder> productOrders = productOrderMapper.selectList(
                new LambdaQueryWrapper<ProductOrder>()
                        .in(ProductOrder::getProductModelId, productIds)
                        .in(ProductOrder::getSaleLedgerProductId, productIds)
        );
        if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
            List<Long> orderIds = productOrders.stream()
@@ -426,7 +427,7 @@
            // 批量删除productOrder
            productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
                    .in(ProductOrder::getProductModelId, productIds));
                    .in(ProductOrder::getSaleLedgerProductId, productIds));
        }
    }
src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
@@ -94,19 +94,22 @@
            Integer leaveCount = staffLeaveMapper.countLeaveByMonth(monthStart, monthEnd);
            vo.setLeaveCount(leaveCount != null ? leaveCount : 0);
            // 计算流失率:流失率 = 月度离职员工数 / 月初员工数 * 100%
            // 计算当期平均在职人数 = (月初员工数 + 月末员工数) / 2
            Double averageStaffCount = (vo.getBeginMonthStaffCount() + vo.getEndMonthStaffCount()) / 2.0;
            // 计算流失率:流失率 = 月度离职员工数 / 当期平均在职人数 * 100%
            Double turnoverRate = 0.0;
            if (vo.getBeginMonthStaffCount() > 0) {
                turnoverRate = (double) vo.getLeaveCount() / vo.getBeginMonthStaffCount() * 100;
            if (averageStaffCount > 0) {
                turnoverRate = (double) vo.getLeaveCount() / averageStaffCount * 100;
                // 保留两位小数
                turnoverRate = Math.round(turnoverRate * 100.0) / 100.0;
            }
            vo.setTurnoverRate(turnoverRate);
            // 计算流动率:流动率 = (月度入职员工数 + 月度离职员工数) / 月初员工数 * 100%
            // 计算流动率:流动率 = (月度入职员工数 + 月度离职员工数) / 当期平均在职人数 * 100%
            Double flowRate = 0.0;
            if (vo.getBeginMonthStaffCount() > 0) {
                flowRate = (double) (vo.getNewHireCount() + vo.getLeaveCount()) / vo.getBeginMonthStaffCount() * 100;
            if (averageStaffCount > 0) {
                flowRate = (double) (vo.getNewHireCount() + vo.getLeaveCount()) / averageStaffCount * 100;
                // 保留两位小数
                flowRate = Math.round(flowRate * 100.0) / 100.0;
            }
@@ -133,26 +136,36 @@
        // 获取月初员工数(即上月末员工数)
        Integer beginMonthStaffCount = staffOnJobMapper.countOnJobStaffByDate(monthStartDate.minusDays(1));
        beginMonthStaffCount = beginMonthStaffCount != null ? beginMonthStaffCount : 0;
        // 获取月末员工数
        Integer endMonthStaffCount = staffOnJobMapper.countOnJobStaffByDate(monthEndDate);
        endMonthStaffCount = endMonthStaffCount != null ? endMonthStaffCount : 0;
        // 获取本月新入职员工数
        Integer newHireCount = staffOnJobMapper.countNewHireByMonth(monthStartDate, monthEndDate);
        newHireCount = newHireCount != null ? newHireCount : 0;
        // 获取本月离职员工数
        Integer leaveCount = staffLeaveMapper.countLeaveByMonth(monthStartDate, monthEndDate);
        leaveCount = leaveCount != null ? leaveCount : 0;
        // 计算总流动率 = (入职人数 + 离职人数) / 月初员工数 * 100%
        // 计算当期平均在职人数 = (月初员工数 + 月末员工数) / 2
        Double averageStaffCount = (beginMonthStaffCount + endMonthStaffCount) / 2.0;
        // 计算总流动率 = (入职人数 + 离职人数) / 当期平均在职人数 * 100%
        Double totalFlowRate = 0.0;
        if (beginMonthStaffCount > 0) {
            totalFlowRate = (double) (newHireCount + leaveCount) / beginMonthStaffCount * 100;
        if (averageStaffCount > 0) {
            totalFlowRate = (double) (newHireCount + leaveCount) / averageStaffCount * 100;
            // 保留两位小数
            totalFlowRate = Math.round(totalFlowRate * 100.0) / 100.0;
        }
        result.setTotalFlowRate(totalFlowRate);
        // 计算总流失率 = 离职人数 / 月初员工数 * 100%
        // 计算总流失率 = 离职人数 / 当期平均在职人数 * 100%
        Double totalTurnoverRate = 0.0;
        if (beginMonthStaffCount > 0) {
            totalTurnoverRate = (double) leaveCount / beginMonthStaffCount * 100;
        if (averageStaffCount > 0) {
            totalTurnoverRate = (double) leaveCount / averageStaffCount * 100;
            // 保留两位小数
            totalTurnoverRate = Math.round(totalTurnoverRate * 100.0) / 100.0;
        }
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -69,6 +69,7 @@
        }
        // 创建入职数据
        staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
        staffOnJobPrams.setStaffState(1);
        staffOnJobMapper.insert(staffOnJobPrams);
        // 创建合同记录
src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -25,7 +25,7 @@
        DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff
        from product_order po
        left join sales_ledger sl on po.sales_ledger_id = sl.id
        left join sales_ledger_product slp on po.product_model_id = slp.id
        left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
        left join product_process_route ppr on po.id = ppr.product_order_id
        left join product_bom pb on pb.id = ppr.bom_id
        <where>
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -31,7 +31,7 @@
                 left join production_product_main ppm on qi.product_main_id = ppm.id
                 left join product_work_order pwo on ppm.work_order_id = pwo.id
                 left join product_order po on pwo.product_order_id = po.id
                 left join sales_ledger_product slp on po.product_model_id = slp.id
                 left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
        where qi.product_main_id = #{productMainId}