liukangdong
2024-09-26 dca4aae965647cf8411931ed44d7cdfff92e386f
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformServiceImpl.java
@@ -316,6 +316,9 @@
                .selectAs(PlatformGroup::getName,Platform::getGroupName)
                .select(" (select ifnull(TIMESTAMPDIFF(HOUR, '2023-01-01 '||pg.start_time||':00', '2023-01-01 '||pg.end_time||':00' ),0) from platform_group pg " +
                        " where t.group_id = pg.id ) as openTime ")
                .select(" ( select ROUND( ifnull(SUM(pl.PARAM3),0) / 3600 , 2 )   from platform_log pl  where pl.OBJ_ID = t.id and pl.remark = t.id  " +
                        " and pl.CREATE_DATE > '"+Utils.Date.getStart(platform.getQueryDateStart())+"'  " +
                        "and pl.CREATE_DATE <=  '"+Utils.Date.getEnd(platform.getQueryDateEnd())+"'  ) as workCountTime ")
                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId);
        queryWrapper
                .eq(platform.getGroupId() != null, Platform::getGroupId, platform.getGroupId())
@@ -328,8 +331,6 @@
            List<PlatformJob> platformJobList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
                    new MPJLambdaWrapper<PlatformJob>()
                    .selectAll(PlatformJob.class)
                    .select(" ( select ROUND( ifnull(SUM(pl.PARAM3),0) / 3600 , 2 )   from platform_log pl  where pl.OBJ_ID = t.id " +
                            " ) as workTimes ")
                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey(),
                            Constants.PlatformJobStatus.DONE.getKey(),
                            Constants.PlatformJobStatus.TRANSFERING.getKey(),
@@ -346,16 +347,13 @@
            for (Platform bean:platformList) {
                List<PlatformJob> beanJobList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),bean.getId())).collect(Collectors.toList());
                bean.setStopCount(beanJobList.size());
                bean.setWorkCountTime(
                        beanJobList.stream().map(i->i.getWorkTimes()).reduce(BigDecimal.ZERO,BigDecimal::add)
                );
                if(Objects.isNull(bean.getOpenTime())||bean.getOpenTime().compareTo(BigDecimal.ZERO)<=0){
                    bean.setUseRata(BigDecimal.ZERO);
                    continue;
                }
                BigDecimal sumTime = BigDecimal.valueOf(sumDays).multiply(bean.getOpenTime());
                bean.setUseRata(
                        bean.getWorkCountTime().divide(sumTime,BigDecimal.ROUND_HALF_DOWN,2)
                        bean.getWorkCountTime().multiply(new BigDecimal(100)).divide(sumTime,BigDecimal.ROUND_HALF_DOWN,2)
                );
            }
        }