Achieving阿六 2023-09-02 14:42 采纳率: 0%
浏览 10

看看这种垃圾代码,想骂人了

这种垃圾代码,是谁写的,垃圾

@GetMapping(value = "/getWaitDataByHouseId")
    public BaseResponse<Object> getWaitDataByHouseId(@RequestParam(value = "houseId") Long houseId,
                                                     @RequestParam(value = "meterCode", required = false) String meterCode,
                                                     @RequestParam(value = "node", required = true) String node,
                                                     @RequestParam(value = "installLocation", required = false) String installLocation,
                                                     @RequestParam(value = "thisAccountPeriod", required = false) String thisAccountPeriod,
                                                     @RequestParam(value = "meterType", required = false) Long meterType,
                                                     @RequestParam(value = "entryMode", required = false) Long entryMode,
                                                     @RequestParam(value = "page") Integer page,
                                                     @RequestParam(value = "pageSize") Integer pageSize,
                                                     @RequestParam(value = "sort", required = true) Integer sort) {
        log.info("根据房间id或其他字段筛选查询出待抄录数据,请求参数,sort:{}" ,sort);
        logger.info("cont1");
        MeterInfo meterInfo = new MeterInfo();
        String source = UserUtil.getXAccessSource(this.getRequest());
        String token = UserUtil.getXAccessToken();
        if (houseId != null) {
            List<Long> gethouseIdByGroup = new ArrayList<Long>();
            //多个hosueId
            //nodeIds = groupH5Service.getHouseId(houseId, source, token);
            BaseResponse<List<HouseResDto>> nodeIds = null;
            nodeIds = houseWebService.getHouses(houseId, node, source, token);
            if (nodeIds != null && nodeIds.getData().size() > 0) {
                for (int i = 0; i < nodeIds.getData().size(); i++) {
                    Long long1 = new Long(nodeIds.getData().get(i).getHouseId());
                    gethouseIdByGroup.add(long1);
                    meterInfo.setHouseId(gethouseIdByGroup);
                }
            } else {
                gethouseIdByGroup.add(houseId);
                meterInfo.setHouseId(gethouseIdByGroup);
            }
        }
        logger.info("cont2---");
        List<MeterDataH5Dto> waitDataInfo = null;
//        List<String> meterCodes= new ArrayList<String>();
        List<Long> meterIds = new ArrayList<Long>();
        meterInfo.setMeterCode(meterCode);
        meterInfo.setInstallLocation(installLocation);
        meterInfo.setMeterType(meterType);
        meterInfo.setEntryMode(entryMode);

        // 根据排序规则进行排序
        Map<Integer, String> sortValueMap = MeterSortEnum.getSortValueStr();
        String sortValue = "";
        if (sortValueMap.containsKey(sort)) {
            sortValue = sortValueMap.get(sort);
        }
        meterInfo.setSortValue(sortValue);
        //根据houseid查询出仪表数据
        log.info("查询仪表表数据,请求参数:{}" , JSON.toJSONString(meterInfo));
        List<Meter> meter = meterService.getWaitDataByHouseId(meterInfo);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Iterator<Meter> it = meter.iterator();
        while (it.hasNext()) {
            Meter next = it.next();
            String format = sdf.format(next.getInstallDate());
            try {
                long install = sdf.parse(format).getTime();
                long thisTime = sdf.parse(thisAccountPeriod).getTime();
                if (install > thisTime) {
                    it.remove();
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        //获取仪表倍率下拉列表
        List<OptionWebResultDto> meterRates = meterDictionaryH5Service.getOptions(TypeCodeEnum.METER_RATE.getCode(), source, token);
        Map<Long, String> rateMap = meterRates.stream().collect(Collectors.toMap(OptionWebResultDto::getOptionId, OptionWebResultDto::getOptionName));
        //获取仪表转速下拉列表
        List<OptionWebResultDto> meterUtimate = meterDictionaryH5Service.getOptions(TypeCodeEnum.METER_UTIMATE_NUM.getCode(), source, token);
        Map<Long, String> utimateMap = meterUtimate.stream().collect(Collectors.toMap(OptionWebResultDto::getOptionId, OptionWebResultDto::getOptionName));

        if (meter != null && meter.size() > 0) {
            MeterInfo mif = new MeterInfo();
            mif.setThisAccountPeriod(thisAccountPeriod);
            mif.setMeterType(meterType);
            mif.setEntryMode(entryMode);
            mif.setSortValue(sortValue);
            for (Meter meter2 : meter) {
//                    meterCodes.add(meter2.getMeterCode());
                meterIds.add(meter2.getMeterId());
            }
//                mif.setMeterCodes(meterCodes);
            mif.setMeterIds(meterIds);
            //根据仪表code和模糊查询出已经抄的数据
            //waitDataInfo = meterService.getWaitDataByThisAccountPeriod(mif);
//                waitDataInfo = meterService.getWaitDataByAccountPeriod(mif);
            waitDataInfo = meterService.getWaitDataByAccountPeriodAndMeterId(mif);

//                List<String> collect=null;
            List<Long> meterIdstmp = null;
            if (waitDataInfo != null && waitDataInfo.size() > 0) {
//                    List<String> ids=new ArrayList<String>();
                List<Long> ids = new ArrayList<Long>();
                //进行晒选 把已经抄录的数据晒选出去
                Iterator<Meter> iterator = meter.iterator();
                while (iterator.hasNext()) {
                    Meter next = iterator.next();
                    if (next != null) {
                        for (MeterDataH5Dto mdd : waitDataInfo) {
                            if (mdd.getMeterCode().equals(next.getMeterCode())) {
                                iterator.remove();
                                break;
                            }
                        }

                    }
                }
                meterIdstmp = meter.stream().map(Meter::getMeterId).collect(Collectors.toList());
                if (meterIdstmp != null && meterIdstmp.size() > 0) {
                    MeterInfo mif1 = new MeterInfo();
                    for (Long id : meterIdstmp) {
                        ids.add(id);
                    }
//                        mif1.setMeterCodes(ids);
                    mif1.setMeterIds(ids);
                    mif1.setMeterType(meterType);
                    mif1.setEntryMode(entryMode);
                    mif1.setSortValue(sortValue);
                    //抄表记录以前超过的 取最大的数据
//                        List<MeterDataH5Dto> waitDataByThisAccountPeriod = meterService.getWaitData(mif1);
                    List<MeterDataH5Dto> waitDataByThisAccountPeriod = meterService.getWaitDataByMeterId(mif1);
                    //如果记录一条没有说明都是代超的,以前没超过
                    if (waitDataByThisAccountPeriod.size() <= 0) {
                        MeterInfo minf = new MeterInfo();
                        minf.setMeterType(meterType);
                        minf.setEntryMode(entryMode);
                        //抛去一抄录的 选择剩下代超的code
                        if (meterIdstmp != null && meterIdstmp.size() > 0) {
                            for (Long id : meterIdstmp) {
                                ids.add(id);
                            }
//                                    minf.setMeterCodes(ids);
                            minf.setMeterIds(ids);
                        }
                        minf.setSortValue(sortValue);
//                                waitDataInfo = meterService.getWaitDataByThisAccountPeriod(minf);
                        waitDataInfo = meterService.getWaitDataByThisAccountPeriodByMeterId(minf);
                        for (MeterDataH5Dto md : waitDataInfo) {
                            if (md.getLastTimeNum() != null) {
                                md.setMinCurrentNum(null);
                            }
                            if (md.getLastTimeConsumption() == null) {
                                md.setLastTimeConsumption(new BigDecimal("0"));
                            }
                        }

                        for (MeterDataH5Dto mdd : waitDataInfo) {
                            mdd.setMeterRate(rateMap.getOrDefault(Long.valueOf(mdd.getMeterRate()), "1"));
                            mdd.setUltimateNum(utimateMap.getOrDefault(mdd.getUltimateNumId(), "999"));
                        }

//                        Collections.sort(waitDataInfo, (a, b) -> a.getInstallLocation().compareTo(b.getInstallLocation()));
                        int subSize = pageSize; //每页条数
                        int subCount = waitDataInfo.size();//总条数
                        int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0);//总页数
                        // 根据页码取数据
                        // 分页计算
                        //page = page >= subPageTotal?subPageTotal:page;
                        if (page > subPageTotal) {
                            return BaseResponse.successWithData(null);

                        }
                        int fromIndex = page * subSize - pageSize;
                        int toIndex = ((page == subPageTotal) ? subCount : (page * subSize));

                        return BaseResponse.successWithData(waitDataInfo.subList(fromIndex, toIndex));

                    } else {
//                            List<String> list = new ArrayList<String>();
                        List<Long> list = new ArrayList<Long>();
                        MeterInfo meterInfo2 = new MeterInfo();
                        //进行晒选 把已经仪表记录中的数据晒选出去
//                            Iterator<String> iterators = collect.iterator();
                        Iterator<Long> iterators = meterIdstmp.iterator();
                        while (iterators.hasNext()) {
                            Long next = iterators.next();
                            for (MeterDataH5Dto mdd : waitDataByThisAccountPeriod) {
                                if (mdd.getMeterId().equals(next)) {
                                    iterators.remove();
                                    break;
                                }
                            }
                        }
//                            List<String> collect2 = meterIdstmp.stream().map(Long::toString).collect(Collectors.toList());
                        List<Long> collect2 = BeanUtils.mapList(meterIdstmp, Long.class, Long.class);
                        for (Long s : collect2) {
                            list.add(s);
                        }
                        if (list.size() > 0 && list != null) {
//                                meterInfo2.setMeterCodes(list);
                            meterInfo2.setMeterIds(list);
                        } else {
                            list.add(Long.valueOf("0"));
                        }
                        meterInfo2.setMeterIds(list);
                        meterInfo2.setPageSize(pageSize);
                        meterInfo2.setSortValue(sortValue);
//                            List<MeterDataH5Dto> waitDataByThisAccountPeriod2 = meterService.getWaitDataByThisAccountPeriod(meterInfo2);
                        List<MeterDataH5Dto> waitDataByThisAccountPeriod2 = meterService.getWaitDataByThisAccountPeriodByMeterId(meterInfo2);
                        waitDataByThisAccountPeriod2.addAll(waitDataByThisAccountPeriod);
                        for (MeterDataH5Dto md : waitDataByThisAccountPeriod2) {
                            if (md.getLastTimeNum() != null) {
                                md.setMinCurrentNum(null);
                            }
                            if (md.getLastTimeConsumption() == null) {
                                md.setLastTimeConsumption(new BigDecimal("0"));
                            }
                        }
                        //获取上次账期的本次用量 本次读数,放到这月账期的上次用量,上次读数中
                        MeterInfo lastNum = new MeterInfo();
                        List<String> mc = new ArrayList<String>();
                        for (MeterDataH5Dto meterDataH5Dto : waitDataByThisAccountPeriod2) {
                            mc.add(meterDataH5Dto.getMeterCode());
                        }
                        lastNum.setThisAccountPeriod(thisAccountPeriod);
                        lastNum.setMeterCodes(mc);
                        lastNum.setSortValue(sortValue);
                        //查询上个账期的本次读数和本次用量,放到这个账期中的本次读数本次用量
//                            List<MeterDataH5Dto> waitDataByLastNum = meterService.getLastNum(lastNum);
                        List<MeterDataH5Dto> waitDataByLastNum = meterService.getLastNumByMeterId(lastNum);
                        for (MeterDataH5Dto meterDataH5Dto : waitDataByThisAccountPeriod2) {
                            for (MeterDataH5Dto mdh : waitDataByLastNum) {
                                if (meterDataH5Dto.getMeterCode().equals(mdh.getMeterCode())) {
                                    meterDataH5Dto.setLastTimeConsumption(mdh.getThisConsumeNumber());
                                    meterDataH5Dto.setLastTimeNum(mdh.getThisNum());
                                }
                            }
                        }

                        for (MeterDataH5Dto mdd : waitDataByThisAccountPeriod2) {
                            mdd.setMeterRate(rateMap.getOrDefault(Long.valueOf(mdd.getMeterRate()), "1"));
                            mdd.setUltimateNum(utimateMap.getOrDefault(mdd.getUltimateNumId(), "999"));
                        }
//                        Collections.sort(waitDataByThisAccountPeriod2, (a, b) -> a.getInstallLocation().compareTo(b.getInstallLocation()));
                        int subSize = pageSize; //每页条数
                        int subCount = waitDataByThisAccountPeriod2.size();//总条数
                        int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0);//总页数
                        // 根据页码取数据
                        // 分页计算
                        //page = page >= subPageTotal?subPageTotal:page;
                        if (page > subPageTotal) {
                            return BaseResponse.successWithData(null);

                        }
                        int fromIndex = page * subSize - pageSize;
                        int toIndex = ((page == subPageTotal) ? subCount : (page * subSize));

                        return BaseResponse.successWithData(waitDataByThisAccountPeriod2.subList(fromIndex, toIndex));


                    }
                }
            } else {
//                    List<String> meters= new ArrayList<String>();
                List<Long> meters = new ArrayList<Long>();
                //在仪表数据种有的
//                    List<String> ms= new ArrayList<String>();
                List<Long> ms = new ArrayList<Long>();
                MeterInfo minf = new MeterInfo();
                minf.setMeterType(meterType);
                minf.setEntryMode(entryMode);
                for (Meter meter2 : meter) {
                    meters.add(meter2.getMeterId());
                }
//                    minf.setMeterCodes(meterCodes);
                minf.setMeterIds(meterIds);
                minf.setSortValue(sortValue);
                //去查询仪表记录中有没有以前抄录的,如果有就通过getWaitData查询方法取出最大的那条记录,如果没有取出meter表的记录
//                    List<MeterDataH5Dto> waitDataInfo1 =meterService.getWaitData(mif);
                List<MeterDataH5Dto> waitDataInfo1 = meterService.getWaitDataByMeterId(mif);
                for (MeterDataH5Dto wait : waitDataInfo1) {
                    //取出仪表记录中有的放到ms中
//                        ms.add(wait.getMeterCode());
                    ms.add(wait.getMeterId());
                }

                //进行晒选 把已经仪表记录中的数据晒选出去
                Iterator<Meter> iterator = meter.iterator();
                while (iterator.hasNext()) {
                    Meter next = iterator.next();
                    for (Long mdd : ms) {
                        if (mdd.equals(next.getMeterId())) {
                            iterator.remove();
                            break;
                        }
                    }
                }
//                    collect = meter.stream().map(Meter::getMeterId).collect(Collectors.toList());
                meterIdstmp = meter.stream().map(Meter::getMeterId).collect(Collectors.toList());
                List<MeterDataH5Dto> arayInfo = null;
                if (meterIdstmp != null && meterIdstmp.size() > 0) {
                    MeterInfo mif1 = new MeterInfo();
//                        List<String> mss= new ArrayList<String>();
                    List<Long> mss = new ArrayList<Long>();
                    for (Long id : meterIdstmp) {
                        mss.add(id);
                    }
//                        mif1.setMeterCodes(mss);
                    mif1.setMeterIds(mss);
                    mif1.setMeterType(meterType);
                    mif1.setEntryMode(entryMode);
                    mif1.setSortValue(sortValue);
                    arayInfo = meterService.getArayInfoByMeterId(mif1);
                }
                if (arayInfo != null && arayInfo.size() > 0) {
                    waitDataInfo1.addAll(arayInfo);
                }
                //获取上次账期的本次用量 本次读数,放到这月账期的上次用量,上次读数中
                MeterInfo lastNum = new MeterInfo();
//                    List<String> mc = new ArrayList<String>();
                List<Long> mc = new ArrayList<Long>();
                for (MeterDataH5Dto meterDataH5Dto : waitDataInfo1) {
                    mc.add(meterDataH5Dto.getMeterId());
                }
                lastNum.setThisAccountPeriod(thisAccountPeriod);
//                    lastNum.setMeterCodes(mc);
                lastNum.setMeterIds(mc);
                lastNum.setSortValue(sortValue);
                //查询上个账期的本次读数和本次用量,放到这个账期中的本次读数本次用量
//                    List<MeterDataH5Dto> waitDataByLastNum = meterService.getLastNum(lastNum);
                List<MeterDataH5Dto> waitDataByLastNum = meterService.getLastNumByMeterId(lastNum);
                for (MeterDataH5Dto meterDataH5Dto : waitDataInfo1) {
                    for (MeterDataH5Dto mdh : waitDataByLastNum) {
                        if (meterDataH5Dto.getMeterId().equals(mdh.getMeterId())) {
                            meterDataH5Dto.setLastTimeConsumption(mdh.getThisConsumeNumber());
                            meterDataH5Dto.setLastTimeNum(mdh.getThisNum());
                        }
                    }
                }
                for (MeterDataH5Dto md : waitDataInfo1) {
                    if (md.getLastTimeNum() != null) {
                        md.setMinCurrentNum(null);
                    }
                    if (md.getLastTimeNum() == null) {
                        md.setLastTimeNum(new BigDecimal("0"));
                    }
                }

                for (MeterDataH5Dto mdd : waitDataInfo1) {
                    mdd.setMeterRate(rateMap.getOrDefault(Long.valueOf(mdd.getMeterRate()), "1"));
                    mdd.setUltimateNum(utimateMap.getOrDefault(mdd.getUltimateNumId(), "999"));
                }

//                Collections.sort(waitDataInfo1, (a, b) -> a.getInstallLocation().compareTo(b.getInstallLocation()));
                //waitDataInfo = meterService.getWaitDataByThisAccountPeriod(minf);
                int subSize = pageSize; //每页条数
                int subCount = waitDataInfo1.size();//总条数
                int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0);//总页数
                // 根据页码取数据
                // 分页计算
                if (page > subPageTotal) {
                    return BaseResponse.successWithData(null);

                }
                int fromIndex = page * subSize - pageSize;
                int toIndex = ((page == subPageTotal) ? subCount : (page * subSize));
                return BaseResponse.successWithData(waitDataInfo1.subList(fromIndex, toIndex));
            }
        }
        logger.info("cont2---");
        return BaseResponse.successWithData(meter);
    }

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-09-02 14:52
    关注

    看上去这代码似乎是 gpt 自动生成的,然后又被修改过。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月2日

悬赏问题

  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 关于#c++#的问题:(2)运算二叉树·表达式一般由一个运算符和两个操作数组成:(相关搜索:二叉树遍历)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统