diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index b77def4..37d59c6 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -26,6 +26,11 @@ jsoup 1.14.3 + + com.alibaba + easyexcel + 3.3.3 + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/SmartReminders.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/SmartReminders.java index 8a573ce..00e92ed 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/SmartReminders.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/SmartReminders.java @@ -67,9 +67,9 @@ public class SmartReminders extends BaseModel implements Serializable { private Integer alertType; /** - * 提前天数提醒 + * 提前月数提醒 */ - @ApiModelProperty("提前天数提醒") + @ApiModelProperty("提前月数提醒") private Integer daysAdvance; /** 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 5483701..726ae58 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 @@ -26,7 +26,7 @@ import javax.annotation.Resource; @Api(tags = "政务统计") @RestController @RequestMapping("/gysl/zwStats") -@PreAuthorize("@ss.hasAnyRoles('admin,common')") +//@PreAuthorize("@ss.hasAnyRoles('admin,common')") public class ZwStatsController extends BaseController { @Resource @@ -40,8 +40,8 @@ public class ZwStatsController extends BaseController { */ @ApiOperation("整体项目情况") @GetMapping("/allProject") - public AjaxResult allProject() { - return success(zwStatsService.allProject()); + public AjaxResult allProject(String years) { + return success(zwStatsService.allProject(years)); } /** @@ -49,8 +49,8 @@ public class ZwStatsController extends BaseController { */ @ApiOperation("功能区") @GetMapping("/ribbon") - public AjaxResult ribbon() { - return success(zwStatsService.ribbon()); + public AjaxResult ribbon(String years) { + return success(zwStatsService.ribbon(years)); } /** @@ -58,8 +58,8 @@ public class ZwStatsController extends BaseController { */ @ApiOperation("投资主体") @GetMapping("/investors") - public AjaxResult investors() { - return success(zwStatsService.investors()); + public AjaxResult investors(String years) { + return success(zwStatsService.investors(years)); } /** 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 2cd6ff4..78ba250 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 @@ -4,18 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.gysl.entity.baseModel.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.poi.ss.usermodel.IndexedColors; -import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.math.BigDecimal; -import java.time.LocalDate; /** * 基本信息(BasicInformation)表实体类 @@ -55,7 +52,7 @@ public class BasicInformation extends BaseModel { @NotBlank - @Excel(name = "项目法人单位", sort = 4, required = true,type= Excel.Type.ALL) + @Excel(name = "项目法人单位*", sort = 4, required = true,type= Excel.Type.ALL,headerBackgroundColor= IndexedColors.RED1) @ApiModelProperty("项目法人单位") private String xmfrdwxz; @@ -83,17 +80,13 @@ public class BasicInformation extends BaseModel { private Integer ssgnq; - @ApiModelProperty("建设开始时间") - @Excel(name = "建设开始时间", dateFormat = "yyyy-MM-dd", sort = 5,type= Excel.Type.ALL) - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - private LocalDate begainTime; + @ApiModelProperty("建设开始时间 yyyy-MM") + @Excel(name = "建设开始时间", sort = 5,type= Excel.Type.ALL) + private String begainTime; - @ApiModelProperty("建设结束时间") - @Excel(name = "建设结束时间", dateFormat = "yyyy-MM-dd", sort = 6,type= Excel.Type.ALL) - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - private LocalDate endTime; + @ApiModelProperty("建设结束时间 yyyy-MM") + @Excel(name = "建设结束时间", sort = 6,type= Excel.Type.ALL) + private String endTime; @NotBlank @Excel(name = "现状分类", sort = 3, dictType = "xzfl", comboReadDict = true,type= Excel.Type.ALL) @@ -169,5 +162,9 @@ public class BasicInformation extends BaseModel { @ApiModelProperty("0非负面清单 1是负面清单") private Integer isFmqd; + @ApiModelProperty("计划投资额") + @Excel(name = "计划投资额",type = Excel.Type.EXPORT ) + private BigDecimal jhtze; + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/PlanInformation.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/PlanInformation.java index c1351b4..3e12d5a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/PlanInformation.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/PlanInformation.java @@ -66,7 +66,7 @@ public class PlanInformation extends BaseModel implements Serializable { */ @Excel(name = "标准层建筑面积",headerBackgroundColor= IndexedColors.RED1,required = true) @ApiModelProperty(value = "标准层建筑面积") - private BigDecimal bzcjzmj; + private String bzcjzmj; /** * 计容积率建筑面积 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 7d0d702..5189c3f 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 @@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; /** @@ -23,15 +24,15 @@ public class BasicInformationPageReq { @ApiModelProperty("项目法人单位") private String xmfrdwxz; - @ApiModelProperty("建设起止时间-开始时间") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date startTime; + @ApiModelProperty("建设起止时间-开始时间 yyyy-MM") +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") +// @DateTimeFormat(pattern = "yyyy-MM") + private String startTime; - @ApiModelProperty("建设起止时间-结束时间") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date endTime; + @ApiModelProperty("建设起止时间-结束时间 yyyy-MM") +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") +// @DateTimeFormat(pattern = "yyyy-MM") + private String endTime; @ApiModelProperty("现状分类") private Integer xzfl; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicRequest.java deleted file mode 100644 index 3e4898b..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/BasicRequest.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.ruoyi.gysl.entity.request; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.annotation.Excel; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * @author dong - * @since 2025/2/26 9:20 - */ -@Data -@ApiModel("基本信息导出类") -public class BasicRequest implements Serializable { - - @Excel(name = "序号") - private Integer id; - - - //项目名称 - @Excel(name = "项目名称") - @ApiModelProperty("项目名称") - private String name; - - - //项目法人单位 - @Excel(name = "项目法人单位") - @ApiModelProperty("项目法人单位") - private String xmfrdwxz; - - - - //总投资额 - @Excel(name = "总投资额(万元)") - @ApiModelProperty("总投资额") - private BigDecimal ztze; - - - //所属功能区 - @Excel(name = "所属功能区") - @ApiModelProperty("所属功能区") - private Integer ssgnq; - - - //建设开始时间 - @Excel(name = "建设开始时间") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty("建设开始时间") - private LocalDateTime begainTime; - - - //建设结束时间 - @Excel(name = "建设结束时间") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty("建设结束时间") - private LocalDateTime endTime; - - //现状分类 - @Excel(name = "现状分类") - @ApiModelProperty("现状分类") - private Integer xzfl; - - - /** - * 总用地面积 - */ - @ApiModelProperty(value = "总用地面积(平方米)") - @Excel(name = "总用地面积") - private BigDecimal zydmj; - - - -} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/ProjectExcelInfo.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/ProjectExcelInfo.java index 061e453..d27f091 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/ProjectExcelInfo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/response/ProjectExcelInfo.java @@ -1,11 +1,14 @@ package com.ruoyi.gysl.entity.response; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotBlank; import java.math.BigDecimal; -import java.util.List; +import java.time.LocalDate; /** * 项目导出信息 @@ -14,41 +17,81 @@ import java.util.List; */ @Data public class ProjectExcelInfo { + @Excel(name = "项目法人单位",height=30) + @ApiModelProperty("项目法人单位") + private String xmfrdwxz; + - //--基本信息 - @Excel(name="id",group = "序号") - @ApiModelProperty("序号") - private String id; - @Excel(name = "项目名称",group = "项目基础信息") + @Excel(name = "项目法人单位性质",dictType = "xmfrdwxz",width = 20) + @ApiModelProperty("项目法人单位性质") + private Integer nature; + + @Excel(name = "项目名称") @ApiModelProperty("项目名称") private String name; - @Excel(name = "项目法人单位",group = "项目基础信息") - @ApiModelProperty("项目法人单位") - private String xmfrdwxz; + @Excel(name = "现状分类(已建/在建/拟建)",dictType = "xzfl", comboReadDict = true,width = 24) + @ApiModelProperty("现状分类") + private Integer xzfl; - @Excel(name = "项目法人单位性质",group = "项目基础信息",dictType = "xmfrdwxz") - @ApiModelProperty("项目法人单位性质") - private Integer nature; + @ApiModelProperty("项目建设开始时间 yyyy-MM") + @Excel(name = "项目建设开始时间") + private String begainTime; + + @ApiModelProperty("项目建设结束时间 yyyy-MM") + @Excel(name = "项目建设结束时间") + private String endTime; + + @ApiModelProperty("计划投资额") + @Excel(name = "计划投资额(亿元)",width = 20) + private BigDecimal jhtze; //--规划信息 - @Excel(name = "总用地面积",group = "项目规划信息") - @ApiModelProperty(value = "总用地面积") + @Excel(name = "总用地面积(平方米)",width = 20) + @ApiModelProperty(value = "总用地面积(平方米)") private BigDecimal zydmj; - @Excel(name = "容积率",group = "项目规划信息") + @Excel(name = "容积率") @ApiModelProperty(value = "容积率") private BigDecimal rjl; - @Excel(name = "总建筑面积",group = "项目规划信息") + @Excel(name = "总建筑面积(平方米)") @ApiModelProperty(value = "总建筑面积") private BigDecimal zjzmj; - @Excel(name = "标准层建筑面积",group = "项目规划信息") + @Excel(name = "标准层建筑面积(千平方米)",width = 20) @ApiModelProperty(value = "标准层建筑面积") - private BigDecimal bzcjzmj; + private String bzcjzmj; + + + //--------- + + @Excel(name = "重点发展产业(原则上不超过三个)",width = 20) + @ApiModelProperty("重点发展产业") + private String prioritize; + + @ApiModelProperty("项目负责人") + @Excel(name = "项目负责人") + private String projectLeader; + + @NotBlank + @ApiModelProperty("联系方式") + @Excel(name = "联系方式",type = Excel.Type.EXPORT) + private String phone; + + @ApiModelProperty("建设进度") + @Excel(name = "建设进度(或运营情况)") + private String jsjd; + + @Excel(name = "建设模式(新供地实施/利用存量用地改扩建)",width = 22,dictType = "jsms",comboReadDict = true) + @ApiModelProperty("建设模式") + private Integer jsms; + + + //=====已有项目导入需要的字段 + @ApiModelProperty("项目建设起止时间") + @Excel(name = "项目建设起止时间") + private String a1; - //--建筑信息 - private List xmjzxx; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/AllProjectResponse.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/AllProjectResponse.java index 24d67a4..dc725ff 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/AllProjectResponse.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/AllProjectResponse.java @@ -41,4 +41,7 @@ public class AllProjectResponse { @ApiModelProperty("当年_在建数量") private Integer currentBuilding2; + + @ApiModelProperty("当年_拟建数量") + private Integer currentBuilding3; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BasicInformationMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BasicInformationMapper.java index 24e9ddb..67a89fd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BasicInformationMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/BasicInformationMapper.java @@ -18,9 +18,9 @@ import java.util.List; public interface BasicInformationMapper extends BaseMapper { /** - * 根据基本信息的id列表来查找 + * 导出项目数据 */ - List selectList(@Param("idList") List idList); + List selectList(); /** * 分页查询所有数据 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java index 7f47d05..64d3e39 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java @@ -17,17 +17,17 @@ public interface ZwStatsMapper { /** * 项目情况 */ - AllProjectResponse allProject(); + AllProjectResponse allProject(@Param("years") String years); /** * 功能区 */ - List ribbon(); + List ribbon(@Param("years") String years); /** * 投资主体 */ - List investors(); + List investors(@Param("years") String years); /** * 消息通知 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java index 53184db..c7080d1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java @@ -5,11 +5,14 @@ import com.ruoyi.docking.entity.SmartReminders; import com.ruoyi.docking.service.*; import com.ruoyi.gysl.entity.BasicInformation; import com.ruoyi.gysl.service.BasicInformationService; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDate; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.time.format.ResolverStyle; import java.util.ArrayList; import java.util.List; @@ -84,22 +87,37 @@ public class NoticeTiming { //获取所有的项目 List list = basicInformationService.list(); List list1 = basicInformationService.list(); - //如果当前时间在该项目的结束时间前自定义的提前天数之前,就去掉 + //如果当前时间在该项目的结束时间前自定义的提前月数之前,就去掉 list.removeIf(x -> - !(LocalDate.now().equals(x.getEndTime().minusDays(qy.getDaysAdvance()))) + LocalDate.now().isBefore(convertToLocalDate(x.getEndTime()).minusMonths(qy.getDaysAdvance())) ); list.forEach(x -> { SmartDeclaration smartDeclaration = new SmartDeclaration(); smartDeclaration.setSmartRemindersId(1L); smartDeclaration.setTyshxydm(x.getTyshxydm()); - smartDeclaration.setAlertTime(x.getEndTime().atStartOfDay()); + smartDeclaration.setAlertTime(convertToLocalDate(x.getEndTime()).atTime(0,0,0)); smdList.add(smartDeclaration); }); list1.removeIf(x -> - !(LocalDate.now().equals(x.getEndTime().minusDays(zw.getDaysAdvance()))) + LocalDate.now().isBefore(convertToLocalDate(x.getEndTime()).minusMonths(zw.getDaysAdvance())) ); //获取到所有的符合条件的政务用户 - list1.forEach(x -> userService.getAllZwUser(null, null, 2L, String.valueOf(x.getEndTime().atStartOfDay()))); + list1.forEach(x -> userService.getAllZwUser(null, null, 2L, + String.valueOf(convertToLocalDate(x.getEndTime()).atTime(0,0,0)))); smartDeclarationService.saveBatch(smdList); } + + public static LocalDate convertToLocalDate(String dateStr) { + try { + // 定义格式化器,使用严格模式(拒绝无效月份,如 "2023-13") + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM") + .withResolverStyle(ResolverStyle.STRICT); + // 解析为 YearMonth 对象 + YearMonth yearMonth = YearMonth.parse(dateStr, formatter); + // 指定默认日为每月第一天 + return yearMonth.atDay(1); + } catch (DateTimeParseException e) { + throw new IllegalArgumentException("无效的日期格式: " + dateStr, e); + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BasicInformationService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BasicInformationService.java index 2430bd2..cac6413 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BasicInformationService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/BasicInformationService.java @@ -34,24 +34,24 @@ public interface BasicInformationService extends IService { /** - * 根据基本信息的id列表来查找 + * 导出项目数据 */ - List selectList(List idList); - - /** - * 填充数据 - */ - void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List info,List sc,List ec,int a) ; - - /** - * 填充数据-项目基础信息获取 - */ - String getExcelData(ProjectExcelInfo item,String str); - - /** - * 填充数据-项目建筑信息获取 - */ - String getBuildingData(ProjectBuildingExcel item,String str); + List selectList(); + +// /** +// * 填充数据 +// */ +// void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List info,List sc,List ec,int a) ; +// +// /** +// * 填充数据-项目基础信息获取 +// */ +// String getExcelData(ProjectExcelInfo item,String str); +// +// /** +// * 填充数据-项目建筑信息获取 +// */ +// String getBuildingData(ProjectBuildingExcel item,String str); /** * 有经纬度的项目列表 @@ -66,7 +66,7 @@ public interface BasicInformationService extends IService { /** * 企业端和政务端信息修改 */ - Long audit(AuditRequest req,int status); + Long audit(AuditRequest req,int status,int oldStatus); /** * 通过主键查询单条项目所有数据(政务端) * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java index 9bad654..4ac599c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java @@ -17,17 +17,17 @@ public interface ZwStatsService { /** * 项目情况 */ - AllProjectResponse allProject(); + AllProjectResponse allProject(String years); /** * 功能区 */ - List ribbon(); + List ribbon(String years); /** * 投资主体 */ - List investors(); + List investors(String years); /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BasicInformationServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BasicInformationServiceImpl.java index c082740..3b0b7ff 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BasicInformationServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/BasicInformationServiceImpl.java @@ -131,132 +131,132 @@ public class BasicInformationServiceImpl extends ServiceImpl selectList(List idList) { - return baseMapper.selectList(idList); + public List selectList() { + return baseMapper.selectList(); } - /** - * 填充数据 - */ - @Override - public void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List info, List sc, List ec, int num) { - Class classBuilding = ProjectBuildingExcel.class; - for (ProjectExcelInfo projectExcelInfo : info) { - XSSFRow tempRow = sheet.createRow(rowNum++); - tempRow.setHeight((short) 1400); - int i1; - for (i1 = 0; i1 < sc.size(); i1++) { - XSSFCell tempCell = tempRow.createCell(i1); - tempCell.setCellStyle(contentStyle); - if (!ec.get(i1).endsWith("厂房")) { - if (Objects.equals(sc.get(i1), "")) { - tempCell.setCellValue(projectExcelInfo.getId()); - } else { - tempCell.setCellValue(getExcelData(projectExcelInfo, sc.get(i1))); - } - } - } -// XSSFCell tempCell = tempRow.createCell(8); -// tempCell.setCellStyle(contentStyle); -// tempCell.setCellValue("12312321"); - - for (int i2 = 0; i2 < projectExcelInfo.getXmjzxx().size(); i2++) { - switch (projectExcelInfo.getXmjzxx().get(i2).getFloor()) { - case 1: - i1 = ec.indexOf("一层厂房"); - break; - case 2: - i1 = ec.indexOf("双层厂房"); - break; - case 3: - i1 = ec.indexOf("三层厂房"); - break; - case 4: - i1 = ec.indexOf("四层厂房"); - break; - case 5: - i1 = ec.indexOf("五层厂房"); - break; - default: - i1 = ec.indexOf("六层及以上厂房"); - } - for (Field field : classBuilding.getDeclaredFields()) { - XSSFCell tempCell = tempRow.createCell(i1); - tempCell.setCellStyle(contentStyle); - Excel excelColumn = field.getAnnotation(Excel.class); - if (excelColumn != null) { - tempCell.setCellValue(getBuildingData(projectExcelInfo.getXmjzxx().get(i2), sc.get(i1))); - i1++; - } - } - } - } - } - - /** - * 填充数据-项目基础信息获取 - */ - @Override - public String getExcelData(ProjectExcelInfo item, String str) { - String a = null; - switch (str) { - case "": - a = item.getId() == null ? "-" : item.getId(); - break; - case "项目名称": - a = item.getName() == null ? "-" : item.getName(); - break; - case "项目法人单位": - a = item.getXmfrdwxz() == null ? "-" : item.getXmfrdwxz(); - break; - case "项目法人单位性质": - a = String.valueOf(item.getNature() == null ? "-" : item.getNature()); - break; - case "总用地面积": - a = String.valueOf(item.getZydmj() == null ? "-" : item.getZydmj()); - break; - case "容积率": - a = String.valueOf(item.getRjl() == null ? "-" : item.getRjl()); - break; - case "总建筑面积": - a = String.valueOf(item.getZjzmj() == null ? "-" : item.getZjzmj()); - break; - case "标准层建筑面积": - a = String.valueOf(item.getBzcjzmj() == null ? "-" : item.getBzcjzmj()); - break; - } - return a; - } - - /** - * 填充数据-项目建筑信息获取 - */ - @Override - public String getBuildingData(ProjectBuildingExcel item, String str) { - String a = null; - switch (str) { - case "层数": - a = item.getFloor() == null ? "-" : String.valueOf(item.getFloor()); - break; - case "总建筑高度": - a = item.getTotalBuildingHeight() == null ? "-" : String.valueOf(item.getTotalBuildingHeight()); - break; - case "首层高度": - a = String.valueOf(item.getScgd() == null ? "-" : item.getScgd()); - break; - case "2至4层高": - a = String.valueOf(item.getTwoAndFourCg() == null ? "-" : item.getTwoAndFourCg()); - break; - case "4层以上层高": - a = String.valueOf(item.getFourYscg() == null ? "-" : item.getFourYscg()); - break; - } - return a; - } +// /** +// * 填充数据 +// */ +// @Override +// public void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List info, List sc, List ec, int num) { +// Class classBuilding = ProjectBuildingExcel.class; +// for (ProjectExcelInfo projectExcelInfo : info) { +// XSSFRow tempRow = sheet.createRow(rowNum++); +// tempRow.setHeight((short) 1400); +// int i1; +// for (i1 = 0; i1 < sc.size(); i1++) { +// XSSFCell tempCell = tempRow.createCell(i1); +// tempCell.setCellStyle(contentStyle); +// if (!ec.get(i1).endsWith("厂房")) { +// if (Objects.equals(sc.get(i1), "")) { +// tempCell.setCellValue(projectExcelInfo.getId()); +// } else { +// tempCell.setCellValue(getExcelData(projectExcelInfo, sc.get(i1))); +// } +// } +// } +//// XSSFCell tempCell = tempRow.createCell(8); +//// tempCell.setCellStyle(contentStyle); +//// tempCell.setCellValue("12312321"); +// +// for (int i2 = 0; i2 < projectExcelInfo.getXmjzxx().size(); i2++) { +// switch (projectExcelInfo.getXmjzxx().get(i2).getFloor()) { +// case 1: +// i1 = ec.indexOf("一层厂房"); +// break; +// case 2: +// i1 = ec.indexOf("双层厂房"); +// break; +// case 3: +// i1 = ec.indexOf("三层厂房"); +// break; +// case 4: +// i1 = ec.indexOf("四层厂房"); +// break; +// case 5: +// i1 = ec.indexOf("五层厂房"); +// break; +// default: +// i1 = ec.indexOf("六层及以上厂房"); +// } +// for (Field field : classBuilding.getDeclaredFields()) { +// XSSFCell tempCell = tempRow.createCell(i1); +// tempCell.setCellStyle(contentStyle); +// Excel excelColumn = field.getAnnotation(Excel.class); +// if (excelColumn != null) { +// tempCell.setCellValue(getBuildingData(projectExcelInfo.getXmjzxx().get(i2), sc.get(i1))); +// i1++; +// } +// } +// } +// } +// } +// +// /** +// * 填充数据-项目基础信息获取 +// */ +// @Override +// public String getExcelData(ProjectExcelInfo item, String str) { +// String a = null; +// switch (str) { +// case "": +// a = item.getId() == null ? "-" : item.getId(); +// break; +// case "项目名称": +// a = item.getName() == null ? "-" : item.getName(); +// break; +// case "项目法人单位": +// a = item.getXmfrdwxz() == null ? "-" : item.getXmfrdwxz(); +// break; +// case "项目法人单位性质": +// a = String.valueOf(item.getNature() == null ? "-" : item.getNature()); +// break; +// case "总用地面积": +// a = String.valueOf(item.getZydmj() == null ? "-" : item.getZydmj()); +// break; +// case "容积率": +// a = String.valueOf(item.getRjl() == null ? "-" : item.getRjl()); +// break; +// case "总建筑面积": +// a = String.valueOf(item.getZjzmj() == null ? "-" : item.getZjzmj()); +// break; +// case "标准层建筑面积": +// a = String.valueOf(item.getBzcjzmj() == null ? "-" : item.getBzcjzmj()); +// break; +// } +// return a; +// } +// +// /** +// * 填充数据-项目建筑信息获取 +// */ +// @Override +// public String getBuildingData(ProjectBuildingExcel item, String str) { +// String a = null; +// switch (str) { +// case "层数": +// a = item.getFloor() == null ? "-" : String.valueOf(item.getFloor()); +// break; +// case "总建筑高度": +// a = item.getTotalBuildingHeight() == null ? "-" : String.valueOf(item.getTotalBuildingHeight()); +// break; +// case "首层高度": +// a = String.valueOf(item.getScgd() == null ? "-" : item.getScgd()); +// break; +// case "2至4层高": +// a = String.valueOf(item.getTwoAndFourCg() == null ? "-" : item.getTwoAndFourCg()); +// break; +// case "4层以上层高": +// a = String.valueOf(item.getFourYscg() == null ? "-" : item.getFourYscg()); +// break; +// } +// return a; +// } /** * 有经纬度的项目列表 @@ -289,8 +289,7 @@ public class BasicInformationServiceImpl extends ServiceImpl collect1 = req.getWysmxInformations().stream().filter(x -> @@ -310,7 +309,7 @@ public class BasicInformationServiceImpl extends ServiceImpl impleme @Resource private BuildingInformationService buildingInformationService; + @Resource + private PjpzService pjpzService; + /** * 分页查询所有目录 * @@ -62,66 +65,73 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme @Override public List selectOnePj(Long id) { List xmpjqdOneResponses = xmpjqdMapper.selectOnePj(id); + //获取项目评价配置 + 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); +// List list = xmpjqdMapper.getImportantBuildings(); - //二层及以上楼面荷载 - 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); +// //层数 +// 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; } @@ -188,9 +198,13 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme if (floor.size() % 2 == 1) { xmhxDetail.setPjpm(String.valueOf(floor.get(floor.size() / 2))); } else { - Integer lower = floor.get(floor.size() / 2 - 1); - Integer upper = floor.get(floor.size() / 2); - xmhxDetail.setPjpm(String.valueOf((lower + upper) / 2)); + 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"); + } } zws.add(xmhxDetail); //首层层高 @@ -231,14 +245,18 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme if (length % 2 == 1) { xmhxDetail.setPjpm(String.valueOf(bigDecimals.get(middleIndex))); } else { - 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 表示保留两位小数 - ) - ); + 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 表示保留两位小数 + ) + ); + }else { + xmhxDetail.setPjpm("0"); + } } return xmhxDetail; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java index 2e61e83..cd87f2a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java @@ -33,24 +33,24 @@ public class ZwStatsServiceImpl implements ZwStatsService { * 项目情况 */ @Override - public AllProjectResponse allProject() { - return zwStatsMapper.allProject(); + public AllProjectResponse allProject(String years) { + return zwStatsMapper.allProject(years); } /** * 功能区 */ @Override - public List ribbon() { - return zwStatsMapper.ribbon(); + public List ribbon(String years) { + return zwStatsMapper.ribbon(years); } /** * 投资主体 */ @Override - public List investors() { - return zwStatsMapper.investors(); + public List investors(String years) { + return zwStatsMapper.investors(years); } /** diff --git a/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml b/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml index 8cdec35..087540d 100644 --- a/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml @@ -5,29 +5,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - + + + + + - - - - - - - - + + + + + + insert into copy_gysl_basic_information @@ -66,6 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tyshxydm, status, is_fmqd, + jhtze, #{id}, @@ -102,6 +100,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{tyshxydm}, #{status}, #{isFmqd}, + #{jhtze}, @@ -292,29 +291,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT COUNT(*) AS allProject, - ROUND(IFNULL(SUM(b.zjzmj), 0) / 10000, 2) AS allGrossArea, - IFNULL(SUM(CASE WHEN a.xzfl = 1 THEN 1 ELSE 0 END), 0) AS allBuilding1, - IFNULL(SUM(CASE WHEN a.xzfl = 2 THEN 1 ELSE 0 END), 0) AS allBuilding2, - IFNULL(SUM(CASE WHEN a.xzfl = 3 THEN 1 ELSE 0 END), 0) AS allBuilding3,-- 当前年度统计 - COUNT(CASE WHEN YEAR ( a.begain_time ) = YEAR ( CURRENT_DATE ()) THEN 1 END ) AS currentYearProject, - ROUND( - IFNULL(SUM(CASE WHEN YEAR ( a.begain_time ) = YEAR ( CURRENT_DATE ()) THEN b.zjzmj END ), 0) / - 10000, - 2 - ) AS currentYearGrossArea, - IFNULL( - SUM(CASE WHEN a.xzfl = 1 AND YEAR ( a.begain_time ) = YEAR ( CURRENT_DATE ()) THEN 1 ELSE 0 END ), - 0 - ) AS currentYearBuilding1, - IFNULL( - SUM(CASE WHEN a.xzfl = 2 AND YEAR ( a.begain_time ) = YEAR ( CURRENT_DATE ()) THEN 1 ELSE 0 END ), - 0 - ) AS currentYearBuilding2 + SELECT COUNT(*) AS allProject, + ROUND(IFNULL(SUM(b.zjzmj), 0) / 10000, 1) AS allGrossArea, + IFNULL(SUM(CASE WHEN a.xzfl = 1 THEN 1 ELSE 0 END), 0) AS allBuilding1, + IFNULL(SUM(CASE WHEN a.xzfl = 2 THEN 1 ELSE 0 END), 0) AS allBuilding2, + IFNULL(SUM(CASE WHEN a.xzfl = 3 THEN 1 ELSE 0 END), 0) AS allBuilding3, + + IFNULL(SUM( + + + CASE WHEN LEFT(a.begain_time, 4) = #{years} THEN 1 ELSE 0 END + + + CASE WHEN LEFT(a.begain_time, 4) = YEAR(NOW()) THEN 1 ELSE 0 END + + + ), 0) AS currentYearProject, + + ROUND(IFNULL(SUM( + + + CASE WHEN LEFT(a.begain_time, 4) = #{years} THEN b.zjzmj ELSE 0 END + + + CASE WHEN LEFT(a.begain_time, 4) = YEAR(NOW()) THEN b.zjzmj ELSE 0 END + + + ), 0)/10000,1) AS currentYearGrossArea, + + IFNULL(SUM( + + + CASE WHEN LEFT(a.begain_time, 4) = #{years} and a.xzfl = 1 THEN 1 ELSE 0 END + + + CASE WHEN LEFT(a.begain_time, 4) = YEAR(NOW()) and a.xzfl = 1 THEN 1 ELSE 0 END + + + ), 0) AS currentYearBuilding1, + + IFNULL(SUM( + + + CASE WHEN LEFT(a.begain_time, 4) = #{years} and a.xzfl = 2 THEN 1 ELSE 0 END + + + CASE WHEN LEFT(a.begain_time, 4) = YEAR(NOW()) and a.xzfl = 2 THEN 1 ELSE 0 END + + + ), 0) AS currentBuilding2, + + IFNULL(SUM( + + + CASE WHEN LEFT(a.begain_time, 4) = #{years} and a.xzfl = 3 THEN 1 ELSE 0 END + + + CASE WHEN LEFT(a.begain_time, 4) = YEAR(NOW()) and a.xzfl = 3 THEN 1 ELSE 0 END + + + ), 0) AS currentBuilding3 FROM gysl_basic_information a - LEFT JOIN gysl_plan_information b ON a.id = b.xm_id + LEFT JOIN gysl_plan_information b ON a.id = b.xm_id + + + LEFT(a.begain_time, 4) <= #{years} + +