diff --git a/pqs-algorithm/algorithm-api/pom.xml b/pqs-algorithm/algorithm-api/pom.xml index ea461c39d..2a9f51a6a 100644 --- a/pqs-algorithm/algorithm-api/pom.xml +++ b/pqs-algorithm/algorithm-api/pom.xml @@ -38,6 +38,11 @@ org.projectlombok lombok + + com.njcn + common-microservice + ${project.version} + diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/EquipmentFeignClient.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/EquipmentFeignClient.java new file mode 100644 index 000000000..61f192864 --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/EquipmentFeignClient.java @@ -0,0 +1,21 @@ +package com.njcn.algorithm.api; + +import com.njcn.algorithm.api.fallback.EquipmentFeignClientFallbackFactory; +import com.njcn.algorithm.pojo.vo.CsEquipmentDeliveryVO; +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author xy + */ +@FeignClient(value = ServerInfo.ALGORITHM_BOOT, path = "/EquipmentDelivery", fallbackFactory = EquipmentFeignClientFallbackFactory.class,contextId = "EquipmentDelivery") +public interface EquipmentFeignClient { + + @PostMapping("/queryEquipmentByndid") + HttpResult queryEquipmentByndid(@RequestParam("ndid") String ndid); + +} diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/fallback/EquipmentFeignClientFallbackFactory.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/fallback/EquipmentFeignClientFallbackFactory.java new file mode 100644 index 000000000..d204e56fc --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/api/fallback/EquipmentFeignClientFallbackFactory.java @@ -0,0 +1,36 @@ +package com.njcn.algorithm.api.fallback; + +import com.njcn.algorithm.api.EquipmentFeignClient; +import com.njcn.algorithm.pojo.vo.CsEquipmentDeliveryVO; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author xy + */ +@Slf4j +@Component +public class EquipmentFeignClientFallbackFactory implements FallbackFactory { + @Override + public EquipmentFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (cause.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) cause.getCause(); +// exceptionEnum = UserEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new EquipmentFeignClient() { + + @Override + public HttpResult queryEquipmentByndid(String ndid) { + log.error("{}异常,降级处理,异常为:{}","通过ndid查询出厂设备异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAddParm.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAddParm.java new file mode 100644 index 000000000..597a6cbf1 --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAddParm.java @@ -0,0 +1,53 @@ +package com.njcn.algorithm.pojo.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 装置数据模板表 + */ +@Data +public class CsDevModelAddParm { + + /** + * 装置型号(字典数据) + */ + @ApiModelProperty(value = "装置型号") + private String devType; + + /** + * 版本号 + */ + @ApiModelProperty(value = "版本号") + private String versionNo; + + /** + * 版本日期 + */ + @ApiModelProperty(value = "版本日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date versionDate; + + /** + * 装置模板文件路径 + */ + @ApiModelProperty(value = "装置模板文件路径") + private String filePath; + + +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAuditParm.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAuditParm.java new file mode 100644 index 000000000..c233c874c --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelAuditParm.java @@ -0,0 +1,60 @@ +package com.njcn.algorithm.pojo.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 装置数据模板表 + */ +@Data +public class CsDevModelAuditParm { + @NotNull(message="版本id不能为空!") + private String id; + /** + * 装置型号(字典数据) + */ + @ApiModelProperty(value = "装置型号") + private String devType; + + /** + * 版本号 + */ + @ApiModelProperty(value = "版本号") + private String versionNo; + + /** + * 版本日期 + */ + @ApiModelProperty(value = "版本日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date versionDate; + + /** + * 装置模板文件路径 + */ + @ApiModelProperty(value = "装置模板文件路径") + private String filePath; + + + @ApiModelProperty(value = "状态") + private String status; + + + +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryListParm.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryListParm.java new file mode 100644 index 000000000..8fd79fad6 --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryListParm.java @@ -0,0 +1,48 @@ +package com.njcn.algorithm.pojo.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/7 11:29【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 程序版本表 + */ +@Data +public class CsDevModelQueryListParm { + + + /** + * 装置型号(字典数据) + */ + @ApiModelProperty(value = "装置型号") + private String devType; + @ApiModelProperty(value = "版本号") + private String versionNo; + /** + * 版本日期 + */ + @ApiModelProperty(value = "版本日期") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") + private String versionStartDate; + + @ApiModelProperty(value = "版本日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private String versionendDate; + + + + +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryParm.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryParm.java new file mode 100644 index 000000000..246d6ba70 --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/param/CsDevModelQueryParm.java @@ -0,0 +1,60 @@ +package com.njcn.algorithm.pojo.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/7 11:29【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 程序版本表 + */ +@Data +public class CsDevModelQueryParm { + + @NotNull(message="当前页不能为空!") + @Min(value = 1, message = "当前页不能为0") + @ApiModelProperty(value = "当前页",name = "currentPage",dataType ="Integer",required = true) + private Integer currentPage; + /**显示条数*/ + @NotNull(message="显示条数不能为空!") + @ApiModelProperty(value = "显示条数",name = "pageSize",dataType ="Integer",required = true) + private Integer pageSize; + /** + * 装置型号(字典数据) + */ + @ApiModelProperty(value = "装置型号") + private String devType; + @ApiModelProperty(value = "装置名称") + private String devName; + + + /** + * 版本日期 + */ + @ApiModelProperty(value = "版本日期") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") + private String versionStartDate; + + @ApiModelProperty(value = "版本日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private String versionendDate; + + + + +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/po/CsDevModelPO.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/po/CsDevModelPO.java new file mode 100644 index 000000000..7f68f925c --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/po/CsDevModelPO.java @@ -0,0 +1,63 @@ +package com.njcn.algorithm.pojo.po; + +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.njcn.db.bo.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +/** + * 装置数据模板表 + */ +@Data +@TableName(value = "cs_dev_model") +public class CsDevModelPO extends BaseEntity { + /** + * id + */ + @TableId(value = "id",type = IdType.ASSIGN_UUID) + private String id; + + /** + * 装置型号(字典数据) + */ + @TableField(value = "dev_type") + private String devType; + + /** + * 版本号 + */ + @TableField(value = "version_no") + private String versionNo; + + /** + * 版本日期 + */ + @TableField(value = "version_date") + private Date versionDate; + + /** + * 装置模板文件路径 + */ + @TableField(value = "file_path") + private String filePath; + + + /** + * 状态(0:删除 1:正常) + */ + @TableField(value = "status") + private String status; +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsDevModelPageVO.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsDevModelPageVO.java new file mode 100644 index 000000000..a71f0b27b --- /dev/null +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsDevModelPageVO.java @@ -0,0 +1,65 @@ +package com.njcn.algorithm.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.njcn.db.bo.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 装置数据模板表 + */ +@Data +public class CsDevModelPageVO extends BaseEntity { + /** + * id + */ + @ApiModelProperty(value = "id") + private String id; + + /** + * 设备型号(字典数据) + */ + @ApiModelProperty(value = "设备型号") + private String devType; + @ApiModelProperty(value = "设备名称") + private String devName; + + + /** + * 版本号 + */ + @ApiModelProperty(value = "版本号") + private String versionNo; + + + /** + * 版本日期 + */ + @ApiModelProperty(value = "版本日期") + private LocalDate versionDate; + + /** + * 装置模板文件路径 + */ + @TableField(value = "file_path") + private String filePath; + + + /** + * 状态(0:删除 1:正常) + */ + @TableField(value = "status") + private String status; +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsEdDataVO.java b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsEdDataVO.java index cda29dcbd..c53dfa1ff 100644 --- a/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsEdDataVO.java +++ b/pqs-algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/vo/CsEdDataVO.java @@ -22,6 +22,8 @@ import java.time.LocalDate; @Data public class CsEdDataVO extends BaseEntity { + @ApiModelProperty(value = "id") + private String id; /** * 装置型号(字典数据) diff --git a/pqs-algorithm/algorithm-boot/pom.xml b/pqs-algorithm/algorithm-boot/pom.xml index 7070ec2bc..2fe984f3b 100644 --- a/pqs-algorithm/algorithm-boot/pom.xml +++ b/pqs-algorithm/algorithm-boot/pom.xml @@ -101,44 +101,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + com.spotify + docker-maven-plugin + 1.0.0 + + + + build-image + ${docker.operate} + + build + + + + + + http://${docker.repostory} + + ${docker.repostory}/${docker.registry.name}/${project.artifactId} + + + latest + + + ${docker.url} + ${basedir}/ + + + + /ROOT + + ${project.build.directory} + + ${project.build.finalName}.jar + + + + diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/DevModelController.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/DevModelController.java new file mode 100644 index 000000000..ebac5a6fe --- /dev/null +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/DevModelController.java @@ -0,0 +1,95 @@ +package com.njcn.algorithm.controller.Equipment; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.njcn.algorithm.pojo.param.CsDevModelAddParm; +import com.njcn.algorithm.pojo.param.CsDevModelAuditParm; +import com.njcn.algorithm.pojo.param.CsDevModelQueryListParm; +import com.njcn.algorithm.pojo.param.CsDevModelQueryParm; +import com.njcn.algorithm.pojo.vo.CsDevModelPageVO; +import com.njcn.algorithm.service.CsDevModelService; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/3/27 15:31【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/devmodel") +@Api(tags = "设备模板") +@AllArgsConstructor +public class DevModelController extends BaseController { + + private final CsDevModelService csDevModelService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/addDevModel") + @ApiOperation("新增设备模板") + @ApiImplicitParam(name = "csDevModelAddParm", value = "新增设备模板参数", required = true) + public HttpResult addDevModel(@RequestBody @Validated CsDevModelAddParm csDevModelAddParm){ + String methodDescribe = getMethodDescribe("addDevModel"); + + Boolean flag = csDevModelService.addDevModel (csDevModelAddParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/AuditDevModel") + @ApiOperation("更新/删除出厂设备") + @ApiImplicitParam(name = "csDevModelAuditParm", value = "更新/删除设备模板参数", required = true) + public HttpResult AuditDevModel(@RequestBody @Validated CsDevModelAuditParm csDevModelAuditParm ){ + String methodDescribe = getMethodDescribe("AuditDevModel"); + + Boolean flag = csDevModelService.AuditDevModel(csDevModelAuditParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryDevModelPage") + @ApiOperation("设备模板分页查询") + @ApiImplicitParam(name = "csDevModelQueryParm", value = "设备模板查询参数", required = true) + public HttpResult> queryDevModelPage(@RequestBody @Validated CsDevModelQueryParm csDevModelQueryParm ){ + String methodDescribe = getMethodDescribe("queryDevModelPage"); + + IPage page = csDevModelService.queryPage (csDevModelQueryParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryEquipmentByProject") + @ApiOperation("通过项目查询出厂设备") + @ApiImplicitParam(name = "csDevModelQueryListParm", value = "项目信息", required = true) + public HttpResult> queryEquipmentByProject(@RequestBody CsDevModelQueryListParm csDevModelQueryListParm){ + String methodDescribe = getMethodDescribe("queryEquipmentByProject"); + + List list = csDevModelService.queryList(csDevModelQueryListParm); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + +} diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/EquipmentDeliveryController.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/EquipmentDeliveryController.java index 0ffc69d30..629dfcfd1 100644 --- a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/EquipmentDeliveryController.java +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/controller/Equipment/EquipmentDeliveryController.java @@ -59,19 +59,10 @@ public class EquipmentDeliveryController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); } -// @OperateInfo(info = LogEnum.BUSINESS_COMMON) -// @PostMapping("/queryEquipment") -// @ApiOperation("项目查询") -// @ApiImplicitParam(name = "appProjectQueryParm", value = "项目查询参数", required = true) -// public HttpResult> queryEquipment(@Validated @RequestBody AppProjectQueryParm appProjectQueryParm){ -// String methodDescribe = getMethodDescribe("queryEquipment"); -// -// List appProjectVOIPage = csEquipmentDeliveryService.queryEquipment (appProjectQueryParm); -// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, appProjectVOIPage, methodDescribe); -// } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/queryEquipmentByndid") + @PostMapping("/queryEquipmentByndid") @ApiOperation("通过ndid查询出厂设备") @ApiImplicitParam(name = "ndid", value = "网关识别码", required = true) public HttpResult queryEquipmentByndid(@RequestParam("ndid")String ndid){ diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/CsDevModelMapper.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/CsDevModelMapper.java new file mode 100644 index 000000000..72782f51e --- /dev/null +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/CsDevModelMapper.java @@ -0,0 +1,26 @@ +package com.njcn.algorithm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.algorithm.pojo.param.CsDevModelQueryListParm; +import com.njcn.algorithm.pojo.param.CsDevModelQueryParm; +import com.njcn.algorithm.pojo.po.CsDevModelPO; +import com.njcn.algorithm.pojo.vo.CsDevModelPageVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsDevModelMapper extends BaseMapper { + Page getPage(Page returnpage,@Param("csDevModelQueryParm") CsDevModelQueryParm csDevModelQueryParm); + + List queryList(@Param("csDevModelQueryListParm")CsDevModelQueryListParm csDevModelQueryListParm); +} \ No newline at end of file diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/mapping/CsDevModelMapper.xml b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/mapping/CsDevModelMapper.xml new file mode 100644 index 000000000..13be37d25 --- /dev/null +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/mapper/mapping/CsDevModelMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + id, dev_type, version_no, version_date, file_path, create_by, create_time, update_by, + update_time, `status` + + \ No newline at end of file diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/CsDevModelService.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/CsDevModelService.java new file mode 100644 index 000000000..28d180f54 --- /dev/null +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/CsDevModelService.java @@ -0,0 +1,55 @@ +package com.njcn.algorithm.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.njcn.algorithm.pojo.param.*; +import com.njcn.algorithm.pojo.po.CsDevModelPO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.algorithm.pojo.vo.CsDevModelPageVO; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsDevModelService extends IService{ + + /** + * @Description: addDevModel + * @Param: [csDevModelAddParm] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/4/10 + */ + Boolean addDevModel(CsDevModelAddParm csDevModelAddParm); + /** + * @Description: AuditDevModel + * @Param: [csDevModelAuditParm] + * @return: java.lang.Boolean + * @Author: clam + * @Date: 2023/4/10 + */ + Boolean AuditDevModel(CsDevModelAuditParm csDevModelAuditParm); + /** + * @Description: 设备模板 + * @Param: [csDevModelQueryParm] + * @return: com.baomidou.mybatisplus.core.metadata.IPage + * @Author: clam + * @Date: 2023/4/10 + */ + IPage queryPage(CsDevModelQueryParm csDevModelQueryParm); + /** + * @Description: queryList + * @Param: [projectEquipmentQueryParm] + * @return: java.util.List + * @Author: clam + * @Date: 2023/4/10 + * @param projectEquipmentQueryParm + */ + List queryList(CsDevModelQueryListParm projectEquipmentQueryParm); +} diff --git a/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/CsDevModelServiceImpl.java b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/CsDevModelServiceImpl.java new file mode 100644 index 000000000..ab044db6f --- /dev/null +++ b/pqs-algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/impl/CsDevModelServiceImpl.java @@ -0,0 +1,62 @@ +package com.njcn.algorithm.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.algorithm.mapper.CsDevModelMapper; +import com.njcn.algorithm.pojo.param.*; +import com.njcn.algorithm.pojo.po.CsDevModelPO; +import com.njcn.algorithm.pojo.vo.CsDevModelPageVO; +import com.njcn.algorithm.service.CsDevModelService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2023/4/10 11:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class CsDevModelServiceImpl extends ServiceImpl implements CsDevModelService{ + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean addDevModel(CsDevModelAddParm csDevModelAddParm) { + CsDevModelPO csDevModelPO = new CsDevModelPO (); + BeanUtils.copyProperties (csDevModelAddParm, csDevModelPO); + csDevModelPO.setStatus ("1"); + boolean save = this.save (csDevModelPO); + + return save; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean AuditDevModel(CsDevModelAuditParm csDevModelAuditParm) { + CsDevModelPO csDevModelPO = new CsDevModelPO (); + BeanUtils.copyProperties (csDevModelAuditParm, csDevModelPO); + boolean b = this.updateById (csDevModelPO); + return b; + } + + @Override + public IPage queryPage(CsDevModelQueryParm csDevModelQueryParm) { + Page returnpage = new Page<> (csDevModelQueryParm.getCurrentPage ( ), csDevModelQueryParm.getPageSize ( )); + + returnpage = this.getBaseMapper ().getPage(returnpage,csDevModelQueryParm); + return returnpage; + } + + @Override + public List queryList(CsDevModelQueryListParm csDevModelQueryListParm) { + List list = this.getBaseMapper ().queryList(csDevModelQueryListParm); + return list; + } +} diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java index 71a6315db..70b1641ea 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/ServerInfo.java @@ -25,6 +25,7 @@ public interface ServerInfo { String QUALITY = "quality-boot"; String PROCESS = "process-boot"; String PREPARE_BOOT = "prepare-boot"; + String ALGORITHM_BOOT = "algorithm-boot"; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/RunManageParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/RunManageParam.java index 0cbfbdec3..101d0c0c5 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/RunManageParam.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/RunManageParam.java @@ -72,4 +72,6 @@ public class RunManageParam extends BaseParam implements Serializable { @ApiModelProperty(name = "runFlag", value = "终端状态") private List runFlag; + @ApiModelProperty(name = "searchValue", value = "篩選數據") + private String searchValue; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/RunTimeVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/RunTimeVO.java index adf9ccd1d..99c583483 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/RunTimeVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/RunTimeVO.java @@ -42,7 +42,6 @@ public class RunTimeVO implements Serializable { @ApiModelProperty(name = "loginTime",value = "投运时间") private String loginTime; - @ApiModelProperty(name = "devType",value = "终端型号") private String devType; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/UserScaleVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/UserScaleVO.java new file mode 100644 index 000000000..418695604 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/UserScaleVO.java @@ -0,0 +1,36 @@ +package com.njcn.device.pq.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/10 + */ +@Data +public class UserScaleVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 月份 + */ + @ApiModelProperty("月份") + private String timeId; + + /** + * 累计增量 + */ + @ApiModelProperty("累计增量") + private Integer incrementNum; + + /** + * 当月增量 + */ + @ApiModelProperty("当月增量") + private Integer monthIncrementNum; + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java index 10bd0a7d3..fae5c7785 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeviceMapper.java @@ -3,6 +3,7 @@ package com.njcn.device.pq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.device.pq.pojo.po.Device; +import com.njcn.device.pq.pojo.vo.LineInfluxDbOnlineVO; import com.njcn.device.pq.pojo.vo.RunManageVO; import com.njcn.device.pq.pojo.vo.RunTimeVO; import org.apache.ibatis.annotations.Param; @@ -36,24 +37,30 @@ public interface DeviceMapper extends BaseMapper { * 获取监测点台账信息 * @param list 监测点集合 * @param comFlag 状态 - * @param runFlag 状态 + * @param searchValue * @return 结果 */ - List getRunManageList(@Param("list") List list, @Param("comFlag")List comFlag, @Param("runFlag")List runFlag); + List getRunManageList(@Param("list") List list, + @Param("comFlag") List comFlag, + @Param("searchValue") String searchValue); /** * 获取监测点台账信息 * @param list 终端集合 * @param comFlag 状态 * @param runFlag 状态 + * @param manufacturer + * @param searchValue * @return 结果 */ - List getRunManageDevList(@Param("list") List list, @Param("comFlag")List comFlag, @Param("runFlag")List runFlag); + List getRunManageDevList(@Param("list") List list, + @Param("comFlag") List comFlag, + @Param("runFlag") List runFlag, + @Param("manufacturers") List manufacturer, + @Param("searchValue") String searchValue); - /** - * 获取指定等级的装置 - * @author cdf - * @date 2023/2/10 - */ - List getDevByGrade(@Param("devId")List devIds,@Param("lineGrade") String lineGrade); + + List getOnlineEvaluate(@Param("list") List devIndexes, + @Param("begin") String searchBeginTime, + @Param("end") String searchEndTime); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml index b803a40fe..c2bfe7fcc 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml @@ -18,72 +18,71 @@ + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java index d85058e10..5bd425928 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RunManageServiceImpl.java @@ -68,8 +68,6 @@ public class RunManageServiceImpl implements RunManageService { private final LineDetailMapper lineDetailMapper; - private final InfluxDbUtils influxDbUtils; - @Override public List getLineLedger(RunManageParam runManageParam) { DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); @@ -77,8 +75,8 @@ public class RunManageServiceImpl implements RunManageService { List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList())); List lineIndexes = generalDeviceDTOList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(lineIndexes)) { - return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); - }else { + return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(),runManageParam.getSearchValue()); + } else { throw new BusinessException(CommonResponseEnum.FAIL); } } @@ -93,19 +91,22 @@ public class RunManageServiceImpl implements RunManageService { if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { List devIndexes = generalDeviceDTOList.stream().flatMap(list->list.getDeviceIndexes().stream()).collect(Collectors.toList()); DateFormat bf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - runManageParam.setSearchBeginTime(DateUtil.beginOfMonth(new Date()).toString(bf)); - runManageParam.setSearchEndTime(DateUtil.endOfMonth(new Date()).toString(bf)); + runManageParam.setSearchBeginTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchBeginTime())))); + runManageParam.setSearchEndTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchEndTime())))); + List manuList = runManageParam.getManufacturer().stream().map(SimpleDTO::getId).collect(Collectors.toList()); if(CollectionUtil.isNotEmpty(devIndexes)){ - runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); + runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag(),manuList,runManageParam.getSearchValue()); - StringBuilder devSql = InfluxDBCommUtils.assToInfluxParamDev(devIndexes); - String stringBuilder = "time >= '" + runManageParam.getSearchBeginTime() + "' and " + "time <= '" + runManageParam.getSearchEndTime()+"' and "+devSql+" group by dev_id"; - //sql语句 - String sql = "SELECT MEAN(online_rate) AS online_rate FROM " + PQS_ONLINERATE + " WHERE " + stringBuilder + TIME_ZONE; - QueryResult queryResult = influxDbUtils.query(sql); + List lineInfluxDbOnlineVOList = deviceMapper.getOnlineEvaluate(devIndexes,runManageParam.getSearchBeginTime(),runManageParam.getSearchEndTime()); - InfluxDBResultMapper inCn = new InfluxDBResultMapper(); - List lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class); +// StringBuilder devSql = InfluxDBCommUtils.assToInfluxParamDev(devIndexes); +// String stringBuilder = "time >= '" + runManageParam.getSearchBeginTime() + "' and " + "time <= '" + runManageParam.getSearchEndTime()+"' and "+devSql+" group by dev_id"; +// //sql语句 +// String sql = "SELECT MEAN(online_rate) AS online_rate FROM " + PQS_ONLINERATE + " WHERE " + stringBuilder + TIME_ZONE; +// QueryResult queryResult = influxDbUtils.query(sql); +// +// InfluxDBResultMapper inCn = new InfluxDBResultMapper(); +// List lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class); runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList()); } } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/LargeScreenController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/LargeScreenController.java new file mode 100644 index 000000000..86c1ab0bc --- /dev/null +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/LargeScreenController.java @@ -0,0 +1,52 @@ +package com.njcn.user.controller; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.HomeostasisAreaVO; +import com.njcn.device.pq.pojo.vo.UserScaleVO; +import com.njcn.user.service.LargeScreenService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/10 + */ +@Slf4j +@Api(tags = "大屏") +@RestController +@RequestMapping("/largeScreen") +@RequiredArgsConstructor +public class LargeScreenController extends BaseController { + + private final LargeScreenService largeScreenService; + + /** + * 灿能云用户规模 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getUserScale") + @ApiOperation("灿能云用户规模") + @ApiImplicitParam(name = "largeScreenParam", value = "灿能云用户规模", required = true) + public HttpResult> getUserScale(@RequestBody @Validated LargeScreenParam largeScreenParam) { + String methodDescribe = getMethodDescribe("getUserScale"); + List result = largeScreenService.getUserScale(largeScreenParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } +} diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/LargeScreenMapper.java b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/LargeScreenMapper.java new file mode 100644 index 000000000..4d3666d47 --- /dev/null +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/LargeScreenMapper.java @@ -0,0 +1,18 @@ +package com.njcn.user.mapper; + + +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.UserScaleVO; + +import java.util.List; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/10 + */ +public interface LargeScreenMapper { + + List getUserScale (LargeScreenParam largeScreenParam); + +} diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/LargeScreenMapper.xml b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/LargeScreenMapper.xml new file mode 100644 index 000000000..8ec0b0fca --- /dev/null +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/mapper/mapping/LargeScreenMapper.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/LargeScreenService.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/LargeScreenService.java new file mode 100644 index 000000000..c23a18e8c --- /dev/null +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/LargeScreenService.java @@ -0,0 +1,18 @@ +package com.njcn.user.service; + +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.UserScaleVO; + +import java.util.List; + + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/10 + */ +public interface LargeScreenService { + + List getUserScale(LargeScreenParam largeScreenParam); + +} diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/LargeScreenServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/LargeScreenServiceImpl.java new file mode 100644 index 000000000..d7df2ed2d --- /dev/null +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/LargeScreenServiceImpl.java @@ -0,0 +1,106 @@ +package com.njcn.user.service.impl; + +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.HomeostasisAreaVO; +import com.njcn.device.pq.pojo.vo.UserScaleVO; +import com.njcn.user.mapper.LargeScreenMapper; +import com.njcn.user.service.LargeScreenService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.Year; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/10 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class LargeScreenServiceImpl implements LargeScreenService { + + private final LargeScreenMapper largeScreenMapper; + + /** + * 灿能云用户规模 + */ + @Override + public List getUserScale(LargeScreenParam largeScreenParam) { + //创建返回VO + List result = new ArrayList<>(); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + //获取当前年第一天日期 + Year year = Year.now(); + String firstDay = year.atDay(1).format(formatter); + //获取当前天字符串日期 + LocalDate today = LocalDate.now(); + String endDay = today.format(formatter); + //替换属性 + largeScreenParam.setSearchBeginTime(firstDay); + largeScreenParam.setSearchEndTime(endDay); + List list = largeScreenMapper.getUserScale(largeScreenParam); + //获取传入起始月结束月中所有月份 + List monthList = selectDate(largeScreenParam.getSearchBeginTime(), + largeScreenParam.getSearchEndTime()); + + for (String s : monthList) { + UserScaleVO vo = new UserScaleVO(); + vo.setTimeId(s); + result.add(vo); + } + //集合不为空 + if (list.size()>0){ + for (UserScaleVO userScaleVO : result) { + for (UserScaleVO scaleVO : list) { + if (Objects.equals(scaleVO.getTimeId(),userScaleVO.getTimeId())){ + userScaleVO.setMonthIncrementNum(scaleVO.getMonthIncrementNum()); + } + } + } + for (UserScaleVO vo : result) { + if (vo.getMonthIncrementNum()==null){ + vo.setMonthIncrementNum(0); + } + } + int count = 0; + for (int i = 0; i < result.size(); i++) { + count = count + result.get(i).getMonthIncrementNum(); + result.get(i).setIncrementNum(count); + } + return result; + }else{ + return result; + } + } + + + /** + * 获取传入起始月结束月中所有月份 + * @param startDate + * @param endDate + * @return + */ + public List selectDate(String startDate, String endDate) { + LocalDate start = LocalDate.parse(startDate, DateTimeFormatter.ISO_LOCAL_DATE); + LocalDate end = LocalDate.parse(endDate, DateTimeFormatter.ISO_LOCAL_DATE); + + List allMonths = new ArrayList<>(); + YearMonth current = YearMonth.from(start); + + while (!current.isAfter(YearMonth.from(end))) { + allMonths.add(current.format(DateTimeFormatter.ofPattern("yyyy-MM"))); + current = current.plusMonths(1); + } + return allMonths; + } +}