|
|
|
@ -3,6 +3,7 @@ package com.ruoyi.gysl.service.impl;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import com.ruoyi.gysl.entity.BuildingInformation;
|
|
|
|
|
import com.ruoyi.gysl.entity.Pjpz;
|
|
|
|
|
import com.ruoyi.gysl.entity.Xmpjqd;
|
|
|
|
|
import com.ruoyi.gysl.entity.request.XmpjqdPageReq;
|
|
|
|
|
import com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail;
|
|
|
|
@ -66,72 +67,11 @@ public class XmpjqdServiceImpl extends ServiceImpl<XmpjqdMapper, Xmpjqd> impleme
|
|
|
|
|
public List<XmpjqdOneResponse> selectOnePj(Long id) {
|
|
|
|
|
List<XmpjqdOneResponse> xmpjqdOneResponses = xmpjqdMapper.selectOnePj(id);
|
|
|
|
|
//获取项目评价配置
|
|
|
|
|
pjpzService.list().forEach(x->{
|
|
|
|
|
pjpzService.list().forEach(x -> {
|
|
|
|
|
XmpjqdOneResponse xr = new XmpjqdOneResponse();
|
|
|
|
|
xr.setYsmc(x.getPjys());
|
|
|
|
|
xmpjqdOneResponses.add(xr);
|
|
|
|
|
});
|
|
|
|
|
//查询所有的建筑信息,只保留是重要楼栋的随机一条
|
|
|
|
|
// List<BuildingInformation> list = xmpjqdMapper.getImportantBuildings();
|
|
|
|
|
|
|
|
|
|
// //层数
|
|
|
|
|
// list.sort(Comparator.comparing(BuildingInformation::getFloor).reversed());
|
|
|
|
|
// XmpjqdOneResponse a1 = new XmpjqdOneResponse();
|
|
|
|
|
// a1.setYsmc("层数");
|
|
|
|
|
// for (int i = 0; i < list.size(); i++) {
|
|
|
|
|
// if (Objects.equals(list.get(i).getXmId(), id)) {
|
|
|
|
|
// a1.setPjpm(i + 1);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// a1.setCount(String.valueOf(list.size()));
|
|
|
|
|
// xmpjqdOneResponses.add(a1);
|
|
|
|
|
// //首层层高
|
|
|
|
|
// XmpjqdOneResponse a2 = new XmpjqdOneResponse();
|
|
|
|
|
// list.sort(Comparator.comparing(BuildingInformation::getScgd).reversed());
|
|
|
|
|
// a2.setYsmc("首层层高");
|
|
|
|
|
// for (int i = 0; i < list.size(); i++) {
|
|
|
|
|
// if (Objects.equals(list.get(i).getXmId(), id)) {
|
|
|
|
|
// a2.setPjpm(i + 1);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// a2.setCount(String.valueOf(list.size()));
|
|
|
|
|
// xmpjqdOneResponses.add(a2);
|
|
|
|
|
//
|
|
|
|
|
// //二层及以上层高
|
|
|
|
|
// XmpjqdOneResponse a3 = new XmpjqdOneResponse();
|
|
|
|
|
// list.sort(Comparator.comparing(BuildingInformation::getTwoAndFourCg).reversed());
|
|
|
|
|
// a3.setYsmc("二层及以上层高");
|
|
|
|
|
// for (int i = 0; i < list.size(); i++) {
|
|
|
|
|
// if (Objects.equals(list.get(i).getXmId(), id)) {
|
|
|
|
|
// a3.setPjpm(i + 1);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// a3.setCount(String.valueOf(list.size()));
|
|
|
|
|
// xmpjqdOneResponses.add(a3);
|
|
|
|
|
//
|
|
|
|
|
// //首层地面载荷
|
|
|
|
|
// XmpjqdOneResponse a4 = new XmpjqdOneResponse();
|
|
|
|
|
// list.sort(Comparator.comparing(BuildingInformation::getScdmhz).reversed());
|
|
|
|
|
// a4.setYsmc("首层地面载荷");
|
|
|
|
|
// for (int i = 0; i < list.size(); i++) {
|
|
|
|
|
// if (Objects.equals(list.get(i).getXmId(), id)) {
|
|
|
|
|
// a4.setPjpm(i + 1);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// a4.setCount(String.valueOf(list.size()));
|
|
|
|
|
// xmpjqdOneResponses.add(a4);
|
|
|
|
|
//
|
|
|
|
|
// //二层及以上楼面荷载
|
|
|
|
|
// XmpjqdOneResponse a5 = new XmpjqdOneResponse();
|
|
|
|
|
// list.sort(Comparator.comparing(BuildingInformation::getTwoAndThreeLmhz).reversed());
|
|
|
|
|
// a5.setYsmc("二层及以上楼面荷载");
|
|
|
|
|
// for (int i = 0; i < list.size(); i++) {
|
|
|
|
|
// if (Objects.equals(list.get(i).getXmId(), id)) {
|
|
|
|
|
// a5.setPjpm(i + 1);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// a5.setCount(String.valueOf(list.size()));
|
|
|
|
|
// xmpjqdOneResponses.add(a5);
|
|
|
|
|
return xmpjqdOneResponses;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -143,122 +83,120 @@ public class XmpjqdServiceImpl extends ServiceImpl<XmpjqdMapper, Xmpjqd> impleme
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<XmhxResponse> oneXmhx(Serializable id) {
|
|
|
|
|
//返回体
|
|
|
|
|
List<XmhxResponse> obj = new ArrayList<>();
|
|
|
|
|
XmhxResponse xr = new XmhxResponse();
|
|
|
|
|
xr.setType(1);
|
|
|
|
|
xr.setList(xmpjqdMapper.maxXmhx());
|
|
|
|
|
|
|
|
|
|
XmhxResponse xr1 = new XmhxResponse();
|
|
|
|
|
List<XmhxDetail> xmhxDetails = xmpjqdMapper.oneXmhx(id);
|
|
|
|
|
BuildingInformation one = buildingInformationService.lambdaQuery()
|
|
|
|
|
.eq(BuildingInformation::getXmId, id)
|
|
|
|
|
.eq(BuildingInformation::getSfwzyld, 1)
|
|
|
|
|
.groupBy(BuildingInformation::getXmId).one();
|
|
|
|
|
if (one != null) {
|
|
|
|
|
XmhxDetail a1 = new XmhxDetail();
|
|
|
|
|
a1.setYsmc("层数");
|
|
|
|
|
a1.setPjpm(one.getFloor() == null ? "" : String.valueOf(one.getFloor()));
|
|
|
|
|
XmhxDetail a2 = new XmhxDetail();
|
|
|
|
|
a2.setYsmc("首层层高");
|
|
|
|
|
a2.setPjpm(String.valueOf(one.getScgd() == null ? "" : one.getScgd()));
|
|
|
|
|
XmhxDetail a3 = new XmhxDetail();
|
|
|
|
|
a3.setYsmc("二层及以上层高");
|
|
|
|
|
a3.setPjpm(String.valueOf(one.getTwoAndFourCg() == null ? "" : one.getTwoAndFourCg()));
|
|
|
|
|
XmhxDetail a4 = new XmhxDetail();
|
|
|
|
|
a4.setYsmc("二层及以上楼面荷载");
|
|
|
|
|
a4.setPjpm(String.valueOf(one.getTwoAndThreeLmhz() == null ? "" : one.getTwoAndThreeLmhz()));
|
|
|
|
|
xr1.setType(2);
|
|
|
|
|
xmhxDetails.add(a1);
|
|
|
|
|
xmhxDetails.add(a2);
|
|
|
|
|
xmhxDetails.add(a3);
|
|
|
|
|
xmhxDetails.add(a4);
|
|
|
|
|
xr1.setList(xmhxDetails);
|
|
|
|
|
} else {
|
|
|
|
|
xr1.setType(2);
|
|
|
|
|
xr1.setList(new ArrayList<>());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XmhxResponse xr2 = new XmhxResponse();
|
|
|
|
|
xr2.setType(3);
|
|
|
|
|
List<XmhxDetail> zws = new ArrayList<>();
|
|
|
|
|
//总投资额
|
|
|
|
|
List<BigDecimal> bigDecimals = xmpjqdMapper.zwsXmhx();
|
|
|
|
|
XmhxDetail z1 = getXmhxDetails(bigDecimals, "总投资额");
|
|
|
|
|
zws.add(z1);
|
|
|
|
|
//获取建筑信息表
|
|
|
|
|
List<BuildingInformation> ib = xmpjqdMapper.getImportantBuildings();
|
|
|
|
|
//层数拿出来
|
|
|
|
|
List<Integer> floor = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getFloor)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
XmhxDetail xmhxDetail = new XmhxDetail();
|
|
|
|
|
xmhxDetail.setYsmc("层数");
|
|
|
|
|
if (floor.size() % 2 == 1) {
|
|
|
|
|
xmhxDetail.setPjpm(String.valueOf(floor.get(floor.size() / 2)));
|
|
|
|
|
} else {
|
|
|
|
|
if(!floor.isEmpty()){
|
|
|
|
|
Integer lower = floor.get(floor.size() / 2 - 1);
|
|
|
|
|
Integer upper = floor.get(floor.size() / 2);
|
|
|
|
|
xmhxDetail.setPjpm(String.valueOf((lower + upper) / 2));
|
|
|
|
|
}else {
|
|
|
|
|
xmhxDetail.setPjpm("0");
|
|
|
|
|
//最大值
|
|
|
|
|
BuildingInformation allMax = buildingInformationService.getAllMax();
|
|
|
|
|
//本项目
|
|
|
|
|
BuildingInformation th = buildingInformationService.getOneXmIdToMax((Long) id);
|
|
|
|
|
//查询所有的建筑信息,只保留是重要楼栋的max条
|
|
|
|
|
List<BuildingInformation> ib = buildingInformationService.getImportantBuildings();
|
|
|
|
|
//获取项目评价配置数据
|
|
|
|
|
List<Pjpz> list = pjpzService.list();
|
|
|
|
|
list.forEach(x -> {
|
|
|
|
|
XmhxResponse xr1 = new XmhxResponse();
|
|
|
|
|
xr1.setType(1);
|
|
|
|
|
List<XmhxDetail> l1 = new ArrayList<>();
|
|
|
|
|
XmhxResponse xr2 = new XmhxResponse();
|
|
|
|
|
xr2.setType(2);
|
|
|
|
|
List<XmhxDetail> l2 = new ArrayList<>();
|
|
|
|
|
XmhxResponse xr3 = new XmhxResponse();
|
|
|
|
|
xr3.setType(3);
|
|
|
|
|
List<XmhxDetail> l3 = new ArrayList<>();
|
|
|
|
|
if (allMax != null && th != null) {
|
|
|
|
|
switch (x.getPjys()) {
|
|
|
|
|
case "总投资额":
|
|
|
|
|
l1.add(xmpjqdMapper.zdzZtze());
|
|
|
|
|
l2.add(xmpjqdMapper.meZtze((Long) id));
|
|
|
|
|
l3.add(getXmhxDetails(xmpjqdMapper.zwsZtze(), "总投资额"));
|
|
|
|
|
break;
|
|
|
|
|
case "层数":
|
|
|
|
|
l1.add(new XmhxDetail("层数", String.valueOf(allMax.getFloor())));
|
|
|
|
|
l2.add(new XmhxDetail("层数", String.valueOf(th.getFloor())));
|
|
|
|
|
//层数拿出来
|
|
|
|
|
List<Integer> floor = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getFloor)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
String s;
|
|
|
|
|
if (floor.size() % 2 == 1) {
|
|
|
|
|
s = String.valueOf(floor.get(floor.size() / 2));
|
|
|
|
|
} else {
|
|
|
|
|
if (!floor.isEmpty()) {
|
|
|
|
|
Integer lower = floor.get(floor.size() / 2 - 1);
|
|
|
|
|
Integer upper = floor.get(floor.size() / 2);
|
|
|
|
|
s = String.valueOf((lower + upper) / 2);
|
|
|
|
|
} else {
|
|
|
|
|
s = "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
l3.add(new XmhxDetail("层数", s));
|
|
|
|
|
break;
|
|
|
|
|
case "首层层高":
|
|
|
|
|
l1.add(new XmhxDetail("首层层高", String.valueOf(allMax.getScgd())));
|
|
|
|
|
l2.add(new XmhxDetail("首层层高", String.valueOf(th.getScgd())));
|
|
|
|
|
List<BigDecimal> sccg = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getScgd)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
l3.add(getXmhxDetails(sccg, "首层层高"));
|
|
|
|
|
break;
|
|
|
|
|
case "二层及以上层高":
|
|
|
|
|
l1.add(new XmhxDetail("二层及以上层高", String.valueOf(allMax.getTwoAndFourCg())));
|
|
|
|
|
l2.add(new XmhxDetail("二层及以上层高", String.valueOf(th.getTwoAndFourCg())));
|
|
|
|
|
List<BigDecimal> ec = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getTwoAndFourCg)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
l3.add(getXmhxDetails(ec, "二层及以上层高"));
|
|
|
|
|
break;
|
|
|
|
|
case "二层及以上楼面荷载":
|
|
|
|
|
l1.add(new XmhxDetail("二层及以上楼面荷载", String.valueOf(allMax.getTwoAndThreeLmhz())));
|
|
|
|
|
l2.add(new XmhxDetail("二层及以上楼面荷载", String.valueOf(th.getTwoAndThreeLmhz())));
|
|
|
|
|
List<BigDecimal> zh = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getTwoAndThreeLmhz)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
l3.add(getXmhxDetails(zh, "二层及以上楼载荷"));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
l1.add(new XmhxDetail(x.getPjys(), null));
|
|
|
|
|
l2.add(new XmhxDetail(x.getPjys(), null));
|
|
|
|
|
l3.add(new XmhxDetail(x.getPjys(), null));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
zws.add(xmhxDetail);
|
|
|
|
|
//首层层高
|
|
|
|
|
List<BigDecimal> sccg = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getScgd)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
zws.add(getXmhxDetails(sccg, "首层层高"));
|
|
|
|
|
//二层及以上层高
|
|
|
|
|
List<BigDecimal> ec = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getTwoAndFourCg)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
zws.add(getXmhxDetails(ec, "二层及以上层高"));
|
|
|
|
|
//二层及以上楼载荷
|
|
|
|
|
List<BigDecimal> zh = ib.stream()
|
|
|
|
|
.map(BuildingInformation::getTwoAndThreeLmhz)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.sorted()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
zws.add(getXmhxDetails(zh, "二层及以上楼载荷"));
|
|
|
|
|
|
|
|
|
|
xr2.setList(zws);
|
|
|
|
|
obj.add(xr);
|
|
|
|
|
obj.add(xr1);
|
|
|
|
|
obj.add(xr2);
|
|
|
|
|
xr1.setList(l1);
|
|
|
|
|
xr2.setList(l2);
|
|
|
|
|
xr3.setList(l3);
|
|
|
|
|
});
|
|
|
|
|
return obj;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static XmhxDetail getXmhxDetails(List<BigDecimal> bigDecimals, String content) {
|
|
|
|
|
XmhxDetail xmhxDetail = new XmhxDetail();
|
|
|
|
|
xmhxDetail.setYsmc(content);
|
|
|
|
|
String s;
|
|
|
|
|
int length = bigDecimals.size();
|
|
|
|
|
int middleIndex = length / 2;
|
|
|
|
|
// 根据奇偶性计算中位数
|
|
|
|
|
if (length % 2 == 1) {
|
|
|
|
|
xmhxDetail.setPjpm(String.valueOf(bigDecimals.get(middleIndex)));
|
|
|
|
|
s = String.valueOf(bigDecimals.get(middleIndex));
|
|
|
|
|
} else {
|
|
|
|
|
if(!bigDecimals.isEmpty()){
|
|
|
|
|
if (!bigDecimals.isEmpty()) {
|
|
|
|
|
BigDecimal lower = bigDecimals.get(middleIndex - 1);
|
|
|
|
|
BigDecimal upper = bigDecimals.get(middleIndex);
|
|
|
|
|
xmhxDetail.setPjpm(
|
|
|
|
|
String.valueOf(
|
|
|
|
|
lower.add(upper)
|
|
|
|
|
.divide(BigDecimal.valueOf(2), 2, RoundingMode.HALF_UP) // 2 表示保留两位小数
|
|
|
|
|
)
|
|
|
|
|
s = String.valueOf(
|
|
|
|
|
lower.add(upper)
|
|
|
|
|
.divide(BigDecimal.valueOf(2), 2, RoundingMode.HALF_UP) // 2 表示保留两位小数
|
|
|
|
|
);
|
|
|
|
|
}else {
|
|
|
|
|
xmhxDetail.setPjpm("0");
|
|
|
|
|
} else {
|
|
|
|
|
s = "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return xmhxDetail;
|
|
|
|
|
return new XmhxDetail(content, s);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|