diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java index 342c20b..127c046 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java @@ -68,7 +68,7 @@ public class XmpjqdController extends BaseController { */ @ApiOperation(value = "通过主键查询单条项目画像",response = XmhxResponse.class) @GetMapping("/oneXmhx/{id}") - public AjaxResult oneXmhx(@PathVariable Serializable id) { + public AjaxResult oneXmhx(@PathVariable Long id) { return success(xmpjqdService.oneXmhx(id)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java index 6ea103f..f88684c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java @@ -166,9 +166,42 @@ public class ZwStatsController extends BaseController { dt.put("{{currentBuilding1}}",allProjectResponse.getCurrentBuilding1()); dt.put("{{currentBuilding2}}",allProjectResponse.getCurrentBuilding2()); dt.put("{{currentBuilding3}}",allProjectResponse.getCurrentBuilding3()); - -// String fatherFile = fileAddress + "/out.docx"; -// FileUtil.newFile(fatherFile); + ribbon.forEach(x->{ + switch (x.getSsgnq()) { + case "高端制造与国际贸易区": + dt.put("{{gn1}}",x.getCount()); + break; + case "阳澄湖半岛旅游度假区": + dt.put("{{gn2}}",x.getCount()); + break; + case "金鸡湖商务区": + dt.put("{{gn3}}",x.getCount()); + break; + case "苏相合作区": + dt.put("{{gn4}}",x.getCount()); + break; + case "独墅湖科教创新区": + dt.put("{{gn5}}",x.getCount()); + break; + default: + break; + } + }); + investors.forEach(x->{ + switch (x.getSsgnq()) { + case "国企": + dt.put("{{tz1}}",x.getCount()); + break; + case "民营企业": + dt.put("{{tz2}}",x.getCount()); + break; + case "外资企业": + dt.put("{{tz3}}",x.getCount()); + break; + default: + break; + } + }); ClassPathResource classPathResource = new ClassPathResource("ztbgmb.docx"); try ( InputStream inputStream = classPathResource.getStream(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java index 78ba250..4f142cc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java @@ -30,110 +30,110 @@ public class BasicInformation extends BaseModel { private Long id; - @Excel(name = "统一社会信用代码*", sort = 2, required = true, type = Excel.Type.ALL,headerBackgroundColor= IndexedColors.RED1) + @Excel(name = "统一社会信用代码*", sort = 2, required = true, type = Excel.Type.ALL, headerBackgroundColor = IndexedColors.RED1) @ApiModelProperty("统一社会信用代码") private String tyshxydm; @NotBlank - @Excel(name = "项目名称*", sort = 2, required = true, type = Excel.Type.ALL,headerBackgroundColor= IndexedColors.RED1) + @Excel(name = "项目名称*", sort = 2, required = true, type = Excel.Type.ALL, headerBackgroundColor = IndexedColors.RED1) @ApiModelProperty("项目名称") private String name; @ApiModelProperty("总用地面积") - @Excel(name = "总用地面积", sort = 8,type= Excel.Type.ALL) + @Excel(name = "总用地面积", sort = 8, type = Excel.Type.ALL) @TableField(exist = false) private BigDecimal zydmj; @ApiModelProperty("总建筑面积") - @Excel(name = "总建筑面积",type = Excel.Type.EXPORT) + @Excel(name = "总建筑面积", type = Excel.Type.EXPORT) @TableField(exist = false) private BigDecimal zjzmj; @NotBlank - @Excel(name = "项目法人单位*", sort = 4, required = true,type= Excel.Type.ALL,headerBackgroundColor= IndexedColors.RED1) + @Excel(name = "项目法人单位*", sort = 4, required = true, type = Excel.Type.ALL, headerBackgroundColor = IndexedColors.RED1) @ApiModelProperty("项目法人单位") private String xmfrdwxz; @NotBlank @ApiModelProperty("项目法人单位性质") - @Excel(name = "项目法人单位性质",dictType = "xmfrdwxz",comboReadDict = true,type = Excel.Type.EXPORT) + @Excel(name = "项目法人单位性质", dictType = "xmfrdwxz", comboReadDict = true, type = Excel.Type.EXPORT) private Integer nature; @ApiModelProperty("施工单位") - @Excel(name = "施工单位",type = Excel.Type.EXPORT) + @Excel(name = "施工单位", type = Excel.Type.EXPORT) private String sgdw; @ApiModelProperty("设计单位") - @Excel(name = "设计单位",type = Excel.Type.EXPORT) + @Excel(name = "设计单位", type = Excel.Type.EXPORT) private String sjdw; @ApiModelProperty("总投资额") - @Excel(name = "总投资额", sort = 7,type= Excel.Type.ALL) + @Excel(name = "总投资额", sort = 7, type = Excel.Type.ALL) private BigDecimal ztze; @NotBlank @ApiModelProperty("所属功能区") - @Excel(name = "所属功能区",dictType = "ssgnq",comboReadDict = true,type = Excel.Type.EXPORT) + @Excel(name = "所属功能区", dictType = "ssgnq", comboReadDict = true, type = Excel.Type.EXPORT) private Integer ssgnq; @ApiModelProperty("建设开始时间 yyyy-MM") - @Excel(name = "建设开始时间", sort = 5,type= Excel.Type.ALL) + @Excel(name = "建设开始时间", sort = 5, width = 24, type = Excel.Type.EXPORT) private String begainTime; @ApiModelProperty("建设结束时间 yyyy-MM") - @Excel(name = "建设结束时间", sort = 6,type= Excel.Type.ALL) + @Excel(name = "建设结束时间", sort = 6, width = 24, type = Excel.Type.EXPORT) private String endTime; @NotBlank - @Excel(name = "现状分类", sort = 3, dictType = "xzfl", comboReadDict = true,type= Excel.Type.ALL) + @Excel(name = "现状分类", sort = 3, dictType = "xzfl", comboReadDict = true, type = Excel.Type.ALL) @ApiModelProperty("现状分类") private Integer xzfl; @NotBlank - @Excel(name = "建设地点",type = Excel.Type.EXPORT) + @Excel(name = "建设地点", type = Excel.Type.EXPORT) @ApiModelProperty("建设地点") private String jsdd; @NotBlank - @Excel(name = "重点发展产业",type = Excel.Type.EXPORT) + @Excel(name = "重点发展产业", type = Excel.Type.EXPORT) @ApiModelProperty("重点发展产业") private String prioritize; @NotBlank - @Excel(name = "建设模式",dictType = "jsms",comboReadDict = true,type = Excel.Type.EXPORT) + @Excel(name = "建设模式", dictType = "jsms", comboReadDict = true, type = Excel.Type.EXPORT) @ApiModelProperty("建设模式") private Integer jsms; @ApiModelProperty("项目标签") - @Excel(name = "项目标签",type = Excel.Type.EXPORT) + @Excel(name = "项目标签", type = Excel.Type.EXPORT) private String label; @NotBlank @ApiModelProperty("项目负责人") - @Excel(name = "项目负责人",type = Excel.Type.EXPORT) + @Excel(name = "项目负责人", type = Excel.Type.EXPORT) private String projectLeader; @NotBlank @ApiModelProperty("联系方式") - @Excel(name = "联系方式",type = Excel.Type.EXPORT) + @Excel(name = "联系方式", type = Excel.Type.EXPORT) private String phone; @ApiModelProperty("施工许可证发放时间") - @Excel(name = "施工许可证发放时间",type = Excel.Type.EXPORT) + @Excel(name = "施工许可证发放时间", type = Excel.Type.EXPORT) private String issuingTime; @ApiModelProperty("竣工验收时间") - @Excel(name = "竣工验收时间",type = Excel.Type.EXPORT) + @Excel(name = "竣工验收时间", type = Excel.Type.EXPORT) private String acceptanceTime; @ApiModelProperty("建设进度") - @Excel(name = "建设进度",type = Excel.Type.EXPORT) + @Excel(name = "建设进度", type = Excel.Type.EXPORT) private String jsjd; @NotBlank @@ -148,11 +148,11 @@ public class BasicInformation extends BaseModel { private String fj; @ApiModelProperty("经度") - @Excel(name = "经度",type = Excel.Type.EXPORT) + @Excel(name = "经度", type = Excel.Type.EXPORT) private String longitude; - @Excel(name = "纬度",type = Excel.Type.EXPORT ) + @Excel(name = "纬度", type = Excel.Type.EXPORT) @ApiModelProperty("纬度") private String latitude; @@ -163,7 +163,7 @@ public class BasicInformation extends BaseModel { private Integer isFmqd; @ApiModelProperty("计划投资额") - @Excel(name = "计划投资额",type = Excel.Type.EXPORT ) + @Excel(name = "计划投资额", type = Excel.Type.EXPORT) private BigDecimal jhtze; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicInformationPageReq.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicInformationPageReq.java index 5189c3f..9f82f19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicInformationPageReq.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicInformationPageReq.java @@ -25,13 +25,9 @@ public class BasicInformationPageReq { private String xmfrdwxz; @ApiModelProperty("建设起止时间-开始时间 yyyy-MM") -// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") -// @DateTimeFormat(pattern = "yyyy-MM") private String startTime; @ApiModelProperty("建设起止时间-结束时间 yyyy-MM") -// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") -// @DateTimeFormat(pattern = "yyyy-MM") private String endTime; @ApiModelProperty("现状分类") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/XmhxDetail/XmhxDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/XmhxDetail/XmhxDetail.java index 1739a57..44715f1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/XmhxDetail/XmhxDetail.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/XmhxDetail/XmhxDetail.java @@ -13,6 +13,11 @@ public class XmhxDetail { @ApiModelProperty("要素名称") private String ysmc; + public XmhxDetail(String ysmc, String pjpm) { + this.ysmc = ysmc; + this.pjpm = pjpm; + } + @ApiModelProperty("具体数值") private String pjpm; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BuildingInformationMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BuildingInformationMapper.java index b8193a7..20ba082 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BuildingInformationMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BuildingInformationMapper.java @@ -22,5 +22,20 @@ public interface BuildingInformationMapper extends BaseMapper selectAll(@Param("req") ZwIdPageReq zwIdPageReq); + + /** + * 分组之后拿到每个项目id对应的一个每个值都是max的楼栋 + */ + BuildingInformation getOneXmIdToMax(@Param("id") Long id); + + /** + * 最大值 + */ + BuildingInformation getAllMax(); + + /** + * 查询所有的建筑信息,只保留是重要楼栋的max条 + */ + List getImportantBuildings(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java index fc3c340..37c0c7c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java @@ -37,30 +37,22 @@ public interface XmpjqdMapper extends BaseMapper { */ List selectOnePj(@Param("id") Long id); - /** - * 查询所有的建筑信息,只保留是重要楼栋的第一条 - */ - List getImportantBuildings(); - /** - * 通过主键查询单条项目画像 - * - * @param id 主键 - * @return 单条数据 + * 总投资额本项目 */ - List oneXmhx(@Param("id") Serializable id); + XmhxDetail meZtze(@Param("id") Long id); /** * 总投资额中位数 */ - List zwsXmhx(); + List zwsZtze(); /** - * 最大值 + * 总投资额最大值 */ - List maxXmhx(); + XmhxDetail zdzZtze(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BuildingInformationService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BuildingInformationService.java index dffebc0..9f7f882 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BuildingInformationService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BuildingInformationService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.gysl.entity.BuildingInformation; import com.ruoyi.gysl.entity.request.ZwIdPageReq; +import javax.management.Query; import java.util.List; /** @@ -21,5 +22,22 @@ public interface BuildingInformationService extends IService selectAll(ZwIdPageReq zwIdPageReq); + + + /** + * 分组之后拿到每个项目id对应的一个每个值都是max的楼栋 + */ + BuildingInformation getOneXmIdToMax(Long id); + + /** + * 所有数据的最大值 + */ + BuildingInformation getAllMax(); + + /** + * 查询所有的建筑信息,只保留是重要楼栋的max条 + */ + List getImportantBuildings(); } + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BuildingInformationServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BuildingInformationServiceImpl.java index 4228f3f..cbdc95e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BuildingInformationServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BuildingInformationServiceImpl.java @@ -28,5 +28,29 @@ public class BuildingInformationServiceImpl extends ServiceImpl selectAll(ZwIdPageReq zwIdPageReq) { return baseMapper.selectAll(zwIdPageReq); } + + /** + * 分组之后拿到每个项目id对应的一个每个值都是max的楼栋 + */ + @Override + public BuildingInformation getOneXmIdToMax(Long id) { + return baseMapper.getOneXmIdToMax(id); + } + + /** + * 最大值 + */ + @Override + public BuildingInformation getAllMax() { + return baseMapper.getAllMax(); + } + + /** + * 查询所有的建筑信息,只保留是重要楼栋Max + */ + @Override + public List getImportantBuildings() { + return baseMapper.getImportantBuildings(); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java index 5be3c82..e96e9e2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java @@ -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 impleme public List selectOnePj(Long id) { List xmpjqdOneResponses = xmpjqdMapper.selectOnePj(id); //获取项目评价配置 - pjpzService.list().forEach(x->{ + pjpzService.list().forEach(x -> { XmpjqdOneResponse xr = new XmpjqdOneResponse(); xr.setYsmc(x.getPjys()); xmpjqdOneResponses.add(xr); }); - //查询所有的建筑信息,只保留是重要楼栋的随机一条 -// List 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 impleme */ @Override public List oneXmhx(Serializable id) { + //返回体 List obj = new ArrayList<>(); - XmhxResponse xr = new XmhxResponse(); - xr.setType(1); - xr.setList(xmpjqdMapper.maxXmhx()); - - XmhxResponse xr1 = new XmhxResponse(); - List 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 zws = new ArrayList<>(); - //总投资额 - List bigDecimals = xmpjqdMapper.zwsXmhx(); - XmhxDetail z1 = getXmhxDetails(bigDecimals, "总投资额"); - zws.add(z1); - //获取建筑信息表 - List ib = xmpjqdMapper.getImportantBuildings(); - //层数拿出来 - List 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 ib = buildingInformationService.getImportantBuildings(); + //获取项目评价配置数据 + List list = pjpzService.list(); + list.forEach(x -> { + XmhxResponse xr1 = new XmhxResponse(); + xr1.setType(1); + List l1 = new ArrayList<>(); + XmhxResponse xr2 = new XmhxResponse(); + xr2.setType(2); + List l2 = new ArrayList<>(); + XmhxResponse xr3 = new XmhxResponse(); + xr3.setType(3); + List 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 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 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 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 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 sccg = ib.stream() - .map(BuildingInformation::getScgd) - .filter(Objects::nonNull) - .sorted() - .collect(Collectors.toList()); - zws.add(getXmhxDetails(sccg, "首层层高")); - //二层及以上层高 - List ec = ib.stream() - .map(BuildingInformation::getTwoAndFourCg) - .filter(Objects::nonNull) - .sorted() - .collect(Collectors.toList()); - zws.add(getXmhxDetails(ec, "二层及以上层高")); - //二层及以上楼载荷 - List 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 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); } } diff --git a/ruoyi-admin/src/main/resources/mapper/BuildingInformationMapper.xml b/ruoyi-admin/src/main/resources/mapper/BuildingInformationMapper.xml index 92874f7..c88e63c 100644 --- a/ruoyi-admin/src/main/resources/mapper/BuildingInformationMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/BuildingInformationMapper.xml @@ -10,6 +10,46 @@ + + + diff --git a/ruoyi-admin/src/main/resources/mapper/QyStatsMapper.xml b/ruoyi-admin/src/main/resources/mapper/QyStatsMapper.xml index 37050da..d29ce3e 100644 --- a/ruoyi-admin/src/main/resources/mapper/QyStatsMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/QyStatsMapper.xml @@ -31,7 +31,7 @@ - - + select IFNULL(MAX(ztze),0) as pjpm, + '总投资额' as ysmc from gysl_basic_information - where id = #{id} - - - SELECT ztze FROM gysl_basic_information where ztze is not null order by ztze desc + diff --git a/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml b/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml index 7c7c5e9..4e5a365 100644 --- a/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml @@ -72,95 +72,84 @@ diff --git a/ruoyi-admin/src/main/resources/ztbgmb.docx b/ruoyi-admin/src/main/resources/ztbgmb.docx index c5beacf..3905b52 100644 --- a/ruoyi-admin/src/main/resources/ztbgmb.docx +++ b/ruoyi-admin/src/main/resources/ztbgmb.docx @@ -6,7 +6,7 @@ 二、当年项目情况 {{years}}年,苏州工业园区新开工上楼项目总数共计{{currentYearProject}}个,新开工项目总建筑面积达到{{currentYearGrossArea}}万平方米,已建项目{{currentBuilding1}}个,在建项目{{currentBuilding2}}个,拟建项目{{currentBuilding3}}个,力求为企业提供优质的生产和办公环境,同时在建设标准和质量上提出更高要求。 三、功能区情况分析 - 截至xxxx年,项目总数共xx个,其中高端制造与国际贸易区项目数量占xx个,独墅湖科教创新区项目数量占xx个,阳澄湖半岛旅游度假区项目数量占xx个,金鸡湖商务区项目数量占xx个,苏相合作区项目数量占xx个。 + 截至{{years}}年,项目总数共{{allProject}}个,其中高端制造与国际贸易区项目数量占{{gn1}}个,独墅湖科教创新区项目数量占{{gn5}}个,阳澄湖半岛旅游度假区项目数量占{{gn2}}个,金鸡湖商务区项目数量占{{gn3}}个,苏相合作区项目数量占{{gn4}}个。 四、投资主体情况分析 - 截至xxxx年,项目总数共xx个,国企投资占xx个,民企投资占xx个,外企投资占xx个。 + 截至{{years}}年,项目总数共{{allProject}}个,国企投资占{{tz1}}个,民企投资占{{tz2}}个,外企投资占{{tz3}}个。