这种垃圾代码,是谁写的,垃圾
@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);
}