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<BuildingInformatio * @return 所有数据 */ List<BuildingInformation> selectAll(@Param("req") ZwIdPageReq zwIdPageReq); + + /** + * 分组之后拿到每个项目id对应的一个每个值都是max的楼栋 + */ + BuildingInformation getOneXmIdToMax(@Param("id") Long id); + + /** + * 最大值 + */ + BuildingInformation getAllMax(); + + /** + * 查询所有的建筑信息,只保留是重要楼栋的max条 + */ + List<BuildingInformation> 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<Xmpjqd> { */ List<XmpjqdOneResponse> selectOnePj(@Param("id") Long id); - /** - * 查询所有的建筑信息,只保留是重要楼栋的第一条 - */ - List<BuildingInformation> getImportantBuildings(); - /** - * 通过主键查询单条项目画像 - * - * @param id 主键 - * @return 单条数据 + * 总投资额本项目 */ - List<XmhxDetail> oneXmhx(@Param("id") Serializable id); + XmhxDetail meZtze(@Param("id") Long id); /** * 总投资额中位数 */ - List<BigDecimal> zwsXmhx(); + List<BigDecimal> zwsZtze(); /** - * 最大值 + * 总投资额最大值 */ - List<XmhxDetail> 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<BuildingInformation * @return 所有数据 */ List<BuildingInformation> selectAll(ZwIdPageReq zwIdPageReq); + + + /** + * 分组之后拿到每个项目id对应的一个每个值都是max的楼栋 + */ + BuildingInformation getOneXmIdToMax(Long id); + + /** + * 所有数据的最大值 + */ + BuildingInformation getAllMax(); + + /** + * 查询所有的建筑信息,只保留是重要楼栋的max条 + */ + List<BuildingInformation> 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<BuildingInformat public List<BuildingInformation> 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<BuildingInformation> 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<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); } } 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 @@ </if> </where> </select> + <select id="getOneXmIdToMax" resultType="com.ruoyi.gysl.entity.BuildingInformation"> + select + MAX(floor) as floor, + MAX(scgd) as scgd, + MAX(two_and_four_cg) as twoAndFourCg, + MAX(two_and_three_lmhz) as twoAndThreeLmhz + from gysl_building_information + where sfwzyld = 1 and xm_id = #{id} + group by xm_id; + </select> + <select id="getAllMax" resultType="com.ruoyi.gysl.entity.BuildingInformation"> + SELECT + MAX( scgd ) AS scgd, + MAX( floor ) AS floor, + MAX( two_and_four_cg ) AS twoAndFourCg, + MAX( two_and_three_lmhz ) AS twoAndThreeLmhz + FROM + gysl_building_information + </select> + <select id="getImportantBuildings" resultType="com.ruoyi.gysl.entity.BuildingInformation"> + SELECT + xm_id, + Max(floor), + Max(scgd), + Max(scdmhz), + Max(two_and_four_cg), + Max(two_and_three_lmhz) + FROM + gysl_building_information + WHERE + sfwzyld = 1 + GROUP BY + xm_id, + floor, + scgd, + scdmhz, + two_and_four_cg, + two_and_three_lmhz + + </select> </mapper> 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> <select id="qyNotice" resultType="com.ruoyi.docking.entity.SmartDeclaration"> select * from gysl_smart_declaration - where tyshxydm = #{username} and is_read = 1 + where tyshxydm = #{username} </select> <select id="qyNoticeCount" resultType="java.lang.Integer"> select count(*) from gysl_smart_declaration diff --git a/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml b/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml index 7d1d11f..a5a549c 100644 --- a/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml @@ -96,67 +96,21 @@ WHERE c.id = #{id} </select> - <select id="getImportantBuildings" resultType="com.ruoyi.gysl.entity.BuildingInformation"> - /** - 随机取一条 - */ - SELECT - xm_id, - floor, - scgd, - scdmhz, - two_and_four_cg, - two_and_three_lmhz - FROM - gysl_building_information - WHERE - sfwzyld = 1 - GROUP BY - xm_id, - floor, - scgd, - scdmhz, - two_and_four_cg, - two_and_three_lmhz - - </select> - <select id="oneXmhx" resultType="com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail"> - select IFNULL(ztze,0) as pjpm, - '总投资额' as ysmc + <select id="zdzZtze" resultType="com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail"> + select IFNULL(MAX(ztze),0) as pjpm, + '总投资额' as ysmc from gysl_basic_information - where id = #{id} - </select> - <select id="maxXmhx" resultType="com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail"> - SELECT - MAX( ztze ) AS pjpm, - '总投资额' AS ysmc - FROM - gysl_basic_information UNION - SELECT - MAX( scgd ) AS pjpm, - '首层层高' AS ysmc - FROM - gysl_building_information UNION - SELECT - MAX( floor ) AS pjpm, - '层数' AS ysmc - FROM - gysl_building_information UNION - SELECT - MAX( two_and_four_cg ) AS pjpm, - '2层及以上层高' AS ysmc - FROM - gysl_building_information UNION - SELECT - MAX( two_and_three_lmhz ) AS pjpm, - '二层及以上楼面荷载' AS ysmc - FROM - gysl_building_information </select> - <select id="zwsXmhx" resultType="java.math.BigDecimal"> + <select id="zwsZtze" resultType="java.math.BigDecimal"> SELECT ztze FROM gysl_basic_information where ztze is not null order by ztze desc </select> + <select id="meZtze" resultType="com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail"> + SELECT + ztze as pjpm, + '总投资额' as ysmc + FROM gysl_basic_information where id = #{id} + </select> </mapper> 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 @@ </where> </select> <select id="ribbon" resultType="com.ruoyi.gysl.entity.stats.RibbonResponse"> - SELECT COUNT(*) AS count, -- 统计左表实际存在的记录数 + SELECT COUNT(a.ssgnq) AS count, b.dict_label AS ssgnq FROM - (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'ssgnq') b -- 先获取所有字典项 + (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'ssgnq') b LEFT JOIN gysl_basic_information a - ON a.ssgnq = b.dict_value AND a.ssgnq IS NOT NULL -- 左连接并过滤空值 - <where> + ON a.ssgnq = b.dict_value <if test="years != null and years != ''"> - LEFT(a.begain_time, 4) = #{years} + and LEFT(a.begain_time, 4) = #{years} </if> - </where> GROUP BY - b.dict_label, b.dict_value -- 按字典项的标签和值分组 + b.dict_label, b.dict_value ORDER BY - b.dict_value; -- 按字典排序(可选) + b.dict_value; </select> <select id="investors" resultType="com.ruoyi.gysl.entity.stats.RibbonResponse"> SELECT - COUNT( * ) AS count,-- 统计左表实际存在的记录数 + COUNT( a.nature ) AS count, b.dict_label AS ssgnq FROM - ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'xmfrdwxz' ) b -- 先获取所有字典项 + ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'xmfrdwxz' ) b LEFT JOIN gysl_basic_information a ON a.nature = b.dict_value - AND a.nature IS NOT NULL -- 左连接并过滤空值 - <where> <if test="years != null and years != ''"> - LEFT(a.begain_time, 4) = #{years} + and LEFT(a.begain_time, 4) = #{years} </if> - </where> GROUP BY b.dict_label, - b.dict_value -- 按字典项的标签和值分组 + b.dict_value ORDER BY - b.dict_value;-- 按字典排序(可选) + b.dict_value; </select> <select id="zwNotice" resultType="com.ruoyi.docking.entity.SmartDeclaration"> select * from gysl_smart_declaration - where zw_id = #{userId} and is_read = 1 + where zw_id = #{userId} </select> <select id="zwNoticeCount" resultType="java.lang.Integer"> select count(*) from gysl_smart_declaration where zw_id = #{userId} and is_read = 1 </select> <select id="xfcyfx" resultType="com.ruoyi.gysl.entity.stats.RibbonResponse"> - SELECT COUNT(a.cylb) AS count,-- 统计左表实际存在的记录数 + SELECT COUNT(a.cylb) AS count, b.dict_label AS ssgnq FROM - ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cylb' ) b -- 先获取所有字典项 + ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cylb' ) b LEFT JOIN gysl_xfcygl a ON a.cylb = b.dict_value - AND a.cylb IS NOT NULL -- 左连接并过滤空值 GROUP BY b.dict_label, - b.dict_value -- 按字典项的标签和值分组 - + b.dict_value ORDER BY - b.dict_value;-- 按字典排序(可选)` + b.dict_value; </select> <select id="mlfx" resultType="com.ruoyi.gysl.entity.stats.RibbonResponse"> - SELECT COUNT(a.slmllb) AS count,-- 统计左表实际存在的记录数 + SELECT COUNT(a.slmllb) AS count, b.dict_label AS ssgnq FROM - ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'shangloumulu' ) b -- 先获取所有字典项 + ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'shangloumulu' ) b LEFT JOIN gysl_ml a ON a.slmllb = b.dict_value - AND a.slmllb IS NOT NULL -- 左连接并过滤空值 GROUP BY b.dict_label, - b.dict_value -- 按字典项的标签和值分组 - + b.dict_value ORDER BY - b.dict_value;-- 按字典排序(可选)` + b.dict_value; </select> <select id="allXfcyfx" resultType="java.lang.Integer"> SELECT COUNT(a.cylb) FROM - ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cylb' ) b -- 先获取所有字典项 + ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cylb' ) b LEFT JOIN gysl_xfcygl a ON a.cylb = b.dict_value - AND a.cylb IS NOT NULL -- 左连接并过滤空值 </select> <select id="allMlfx" resultType="java.lang.Integer"> SELECT COUNT(a.slmllb) AS count FROM - ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'shangloumulu' ) b -- 先获取所有字典项 + ( SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'shangloumulu' ) b LEFT JOIN gysl_ml a ON a.slmllb = b.dict_value - AND a.slmllb IS NOT NULL -- 左连接并过滤空值 </select> </mapper> 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}}个。