From dfe45614db75898c539f8edbd2a084af16d7932c Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Thu, 11 Jan 2024 10:45:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=98=89=E7=A6=BE=E4=BA=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lims/entry/CarbonEmission.java | 43 ++ .../lims/entry/CarbonEmissionPlan.java | 66 +++ .../lims/entry/CarbonIntensity.java | 43 ++ .../lims/entry/InstrumentData.java | 20 + .../springblade/lims/entry/LargeScreenVO.java | 28 ++ .../org/springblade/lims/entry/TimeVO.java | 25 + .../controller/ProductClassController.java | 8 +- .../controller/WareHouseController.java | 4 +- .../capital/mapper/ProductClassMapper.java | 2 +- .../capital/mapper/ProductClassMapper.xml | 7 +- .../capital/service/IProductClassService.java | 2 +- .../service/impl/ProductClassServiceImpl.java | 11 +- .../controller/CarbonEmissionController.java | 80 ++++ .../CarbonEmissionPlanController.java | 70 +++ .../controller/CarbonIntensityController.java | 80 ++++ .../controller/LargeScreenController.java | 65 ++- .../controller/MaintainRecordController.java | 8 - .../lims/job/GetInstrumentRunStatusJob.java | 17 + .../lims/mapper/CarbonEmissionMapper.java | 14 + .../lims/mapper/CarbonEmissionMapper.xml | 5 + .../lims/mapper/CarbonEmissionPlanMapper.java | 15 + .../lims/mapper/CarbonEmissionPlanMapper.xml | 23 + .../lims/mapper/CarbonIntensityMapper.java | 16 + .../lims/mapper/CarbonIntensityMapper.xml | 6 + .../lims/mapper/LargeScreenMapper.java | 12 + .../lims/mapper/LargeScreenMapper.xml | 216 +++++++-- .../lims/mqtt/callback/MyMQTTCallback.java | 64 ++- .../service/ICarbonEmissionPlanService.java | 23 + .../lims/service/ICarbonEmissionService.java | 25 + .../lims/service/ICarbonIntensityService.java | 25 + .../lims/service/ILargeScreenService.java | 18 +- .../impl/CarbonEmissionPlanServiceImpl.java | 81 ++++ .../impl/CarbonEmissionServiceImpl.java | 98 ++++ .../impl/CarbonIntensityServiceImpl.java | 98 ++++ .../service/impl/LargeScreenServiceImpl.java | 438 ++++++++++++++++-- .../impl/MaintainRecordServiceImpl.java | 19 + 36 files changed, 1678 insertions(+), 97 deletions(-) create mode 100644 lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmission.java create mode 100644 lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmissionPlan.java create mode 100644 lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonIntensity.java create mode 100644 lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TimeVO.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionController.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionPlanController.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonIntensityController.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/job/GetInstrumentRunStatusJob.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.xml create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.xml create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.xml create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionPlanService.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionService.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonIntensityService.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionPlanServiceImpl.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionServiceImpl.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonIntensityServiceImpl.java diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmission.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmission.java new file mode 100644 index 0000000..0adbccd --- /dev/null +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmission.java @@ -0,0 +1,43 @@ +package org.springblade.lims.entry; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.data.annotation.Id; + +import java.io.Serializable; +import java.util.List; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@Data +@TableName("t_carbon_emission") +public class CarbonEmission extends BaseEntity implements Serializable { + + /** + * 业务主键 + */ + @Id + private Long id; + + /** + * 月份 + */ + private String currentMonth; + + + /** + * 排放量 + */ + private Double emissions; + + + /** + * 租户 + */ + private String tenantId; + +} diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmissionPlan.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmissionPlan.java new file mode 100644 index 0000000..0c5d909 --- /dev/null +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonEmissionPlan.java @@ -0,0 +1,66 @@ +package org.springblade.lims.entry; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.data.annotation.Id; + +import java.io.Serializable; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@Data +@TableName("t_carbon_emission_plan") +public class CarbonEmissionPlan extends BaseEntity implements Serializable { + + /** + * 业务主键 + */ + @Id + private Long id; + + /** + * 年份 + */ + private String currentYear; + + + /** + * 碳排放计划量 + */ + private Double totalCarbonPlan; + + /** + * 碳排放计划量 + */ + private Double carbonPlan; + + /** + * 碳减排总量 + */ + private Double totalCarbonReduction; + + /** + * 光伏发电碳减排量 + */ + private Double pvPower; + + /** + * 工艺优化碳减排量 + */ + private Double processOpt; + + /** + * 设备更换碳减排量 + */ + private Double equipReplace; + + + /** + * 租户 + */ + private String tenantId; + +} diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonIntensity.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonIntensity.java new file mode 100644 index 0000000..44ae1b2 --- /dev/null +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/CarbonIntensity.java @@ -0,0 +1,43 @@ +package org.springblade.lims.entry; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.data.annotation.Id; + +import java.io.Serializable; +import java.util.List; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@Data +@TableName("t_carbon_intensity") +public class CarbonIntensity extends BaseEntity implements Serializable { + + /** + * 业务主键 + */ + @Id + private Long id; + + /** + * 月份 + */ + private String currentMonth; + + + /** + * 排放强度 + */ + private Double intensity; + + + /** + * 租户 + */ + private String tenantId; + +} diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/InstrumentData.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/InstrumentData.java index 8329492..43c1777 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/InstrumentData.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/InstrumentData.java @@ -227,4 +227,24 @@ public class InstrumentData extends BaseEntity implements Serializable { */ private String loadLevel; + /** + * 年份 + */ + private String currentYear; + + /** + * 月份 + */ + private String currentMonth; + + /** + * 日期 + */ + private String currentDay; + + /** + * 时间段:尖峰平谷 + */ + private String period; + } diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/LargeScreenVO.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/LargeScreenVO.java index a9ba9d1..e46c804 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/LargeScreenVO.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/LargeScreenVO.java @@ -8,6 +8,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * @author sjx @@ -136,4 +137,31 @@ public class LargeScreenVO implements Serializable { */ private Integer count; + /** + * 碳排放总量 + */ + private Double totalCarbonEmissions; + + /** + * 月份集合 + */ + private List monthList; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + private List jianList; + + private List fengList; + + private List pingList; + + private List guList; } diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TimeVO.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TimeVO.java new file mode 100644 index 0000000..a191b35 --- /dev/null +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TimeVO.java @@ -0,0 +1,25 @@ +package org.springblade.lims.entry; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@Data +public class TimeVO implements Serializable { + + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + +} diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java index 155d3c7..ee50191 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java @@ -232,8 +232,12 @@ public class ProductClassController extends BladeController { @GetMapping("/tree") @ApiOperationSupport(order = 9) @ApiOperation(value = "树形结构(物品类型下拉接口)", notes = "树形结构") - public R> tree(Integer type) { - List tree = productClassService.tree(type); + public R> tree(ProductClass entry) { + List roles = Arrays.asList(AuthUtil.getUserRole().split(",")); + if(!roles.contains("admin") && !roles.contains("政府")){ + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + } + List tree = productClassService.tree(entry); return R.data(tree); } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/WareHouseController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/WareHouseController.java index a3bc40d..d72266d 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/WareHouseController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/WareHouseController.java @@ -152,8 +152,8 @@ public class WareHouseController extends BladeController { @GetMapping("/tree") @ApiOperationSupport(order = 9) @ApiOperation(value = "树形结构(物品类型下拉接口)", notes = "树形结构") - public R> tree(Integer type) { - List tree = productClassService.tree(type); + public R> tree(ProductClass entry) { + List tree = productClassService.tree(entry); return R.data(tree); } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.java index e9deadb..42b23d9 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.java @@ -37,7 +37,7 @@ public interface ProductClassMapper extends BaseMapper { * 获取产品类型树 * @return */ - List tree(Integer type); + List tree(ProductClass entry); /** * 懒加载产品类型树 diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.xml b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.xml index f062c06..3bd933c 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.xml +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/mapper/ProductClassMapper.xml @@ -58,8 +58,11 @@ diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/IProductClassService.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/IProductClassService.java index 9942510..83294e5 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/IProductClassService.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/IProductClassService.java @@ -37,7 +37,7 @@ public interface IProductClassService extends IService { * 树形结构 * @return */ - List tree(Integer type); + List tree(ProductClass entry); /** * 懒加载树形结构 diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/impl/ProductClassServiceImpl.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/impl/ProductClassServiceImpl.java index 81febca..a9eebeb 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/impl/ProductClassServiceImpl.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/service/impl/ProductClassServiceImpl.java @@ -1,17 +1,14 @@ package org.springblade.lims.capital.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.node.ForestNodeMerger; -import org.springblade.core.tool.utils.StringPool; import org.springblade.lims.capital.entity.ProductClass; -import org.springblade.lims.capital.vo.ProductClassVO; import org.springblade.lims.capital.mapper.ProductClassMapper; import org.springblade.lims.capital.service.IProductClassService; -import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.lims.capital.vo.ProductClassVO; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; import java.util.Map; @@ -36,8 +33,8 @@ public class ProductClassServiceImpl extends ServiceImpl tree(Integer type) { - return ForestNodeMerger.merge(baseMapper.tree(type)); + public List tree(ProductClass entry) { + return ForestNodeMerger.merge(baseMapper.tree(entry)); } @Override diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionController.java new file mode 100644 index 0000000..85462af --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionController.java @@ -0,0 +1,80 @@ + +package org.springblade.lims.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.lims.entry.CarbonEmission; +import org.springblade.lims.service.ICarbonEmissionService; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/carbonEmission") +@Api(value = "", tags = "") +public class CarbonEmissionController extends BladeController { + + private final ICarbonEmissionService service; + + @GetMapping("/page") + public R page(CarbonEmission entry, Query query) { + List roles = Arrays.asList(AuthUtil.getUserRole().split(",")); + if(!roles.contains("admin") && !roles.contains("政府")){ + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + } + return R.data(service.findPage(entry, query)); + } + + /** + * 保存碳排放量 + */ + @PostMapping("/saveCarbon") + @ApiOperation(value = "保存碳排放量", notes = "保存碳排放量") + public R saveRoute(@RequestBody CarbonEmission entry) { + return service.saveCarbon(entry); + } + + /** + * 根据id查询信息 + */ + @GetMapping("/getById") + @ApiOperation(value = "根据id查询信息", notes = "根据id查询信息") + public R getById(String id) { + return R.data(service.findById(id)); + } + + + /** + * 删除 + */ + @GetMapping("/deleteById") + @ApiOperation(value = "逻辑删除", notes = "传入id") + public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) { + return R.status(service.deleteLogic(Func.toLongList(id))); + } + + /** + * 查询近半年光伏发电折合碳排放趋势 + * @param currentMonth + * @return + */ + @GetMapping("/findTrendList") + public R findTrendList(String currentMonth) { + return R.data(service.findTrendList(currentMonth)); + } + +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionPlanController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionPlanController.java new file mode 100644 index 0000000..cf7c307 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonEmissionPlanController.java @@ -0,0 +1,70 @@ + +package org.springblade.lims.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.lims.entry.CarbonEmissionPlan; +import org.springblade.lims.service.ICarbonEmissionPlanService; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/carbonEmissionPlan") +@Api(value = "", tags = "") +public class CarbonEmissionPlanController extends BladeController { + + private final ICarbonEmissionPlanService service; + + @GetMapping("/page") + public R page(CarbonEmissionPlan entry, Query query) { + List roles = Arrays.asList(AuthUtil.getUserRole().split(",")); + if(!roles.contains("admin") && !roles.contains("政府")){ + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + } + return R.data(service.findPage(entry, query)); + } + + /** + * 保存碳排放计划 + */ + @PostMapping("/saveCarbon") + @ApiOperation(value = "保存碳排放量", notes = "保存碳排放量") + public R saveRoute(@RequestBody CarbonEmissionPlan entry) { + return service.saveCarbon(entry); + } + + /** + * 根据id查询信息 + */ + @GetMapping("/getById") + @ApiOperation(value = "根据id查询信息", notes = "根据id查询信息") + public R getById(String id) { + return R.data(service.findById(id)); + } + + + /** + * 删除 + */ + @GetMapping("/deleteById") + @ApiOperation(value = "逻辑删除", notes = "传入id") + public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) { + return R.status(service.deleteLogic(Func.toLongList(id))); + } + +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonIntensityController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonIntensityController.java new file mode 100644 index 0000000..ffb5c0f --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/CarbonIntensityController.java @@ -0,0 +1,80 @@ + +package org.springblade.lims.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.lims.entry.CarbonIntensity; +import org.springblade.lims.service.ICarbonIntensityService; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/carbonIntensity") +@Api(value = "", tags = "") +public class CarbonIntensityController extends BladeController { + + private final ICarbonIntensityService service; + + @GetMapping("/page") + public R page(CarbonIntensity entry, Query query) { + List roles = Arrays.asList(AuthUtil.getUserRole().split(",")); + if(!roles.contains("admin") && !roles.contains("政府")){ + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + } + return R.data(service.findPage(entry, query)); + } + + /** + * 保存碳排强度 + */ + @PostMapping("/saveCarbon") + @ApiOperation(value = "保存碳排放量", notes = "保存碳排放量") + public R saveRoute(@RequestBody CarbonIntensity entry) { + return service.saveCarbon(entry); + } + + /** + * 根据id查询信息 + */ + @GetMapping("/getById") + @ApiOperation(value = "根据id查询信息", notes = "根据id查询信息") + public R getById(String id) { + return R.data(service.findById(id)); + } + + + /** + * 删除 + */ + @GetMapping("/deleteById") + @ApiOperation(value = "逻辑删除", notes = "传入id") + public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) { + return R.status(service.deleteLogic(Func.toLongList(id))); + } + + /** + * 查询近半年月单位产值碳排放强度 + * @param entry + * @return + */ + @GetMapping("/findIntensityList") + public R findTrendList(String currentMonth) { + return R.data(service.findIntensityList(currentMonth)); + } + +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java index 16cbd6e..2258658 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java @@ -3,11 +3,10 @@ package org.springblade.lims.controller; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.lims.entry.LargeScreenVO; import org.springblade.lims.service.ILargeScreenService; -import org.springblade.lims.tools.RedisUtil; -import org.springblade.system.feign.ISysClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -27,10 +26,6 @@ public class LargeScreenController extends BladeController { private final ILargeScreenService largeScreenService; - private final ISysClient sysClient; - - private final RedisUtil redisUtil; - /** * 总量分析 */ @@ -83,9 +78,65 @@ public class LargeScreenController extends BladeController { * 设备日均负载分析 */ @GetMapping("/getInstrumentDaylyLoad") - public R>> getInstrumentDaylyLoad(LargeScreenVO entity) { + public R>> getInstrumentDaylyLoad(LargeScreenVO entity) { return R.data(largeScreenService.getInstrumentDaylyLoad(entity)); } + /** + * 设备运行状态 + */ + @GetMapping("/getInstrumentRunStatus") + public R>> getInstrumentRunStatus(LargeScreenVO entity) { + return R.data(largeScreenService.getInstrumentRunStatus(entity)); + } + + /** + * 碳排放总量 + */ + @GetMapping("/getTotalCarbonEmissions") + public R> getTotalCarbonEmissions() { + return R.data(largeScreenService.getTotalCarbonEmissions()); + } + + /** + * 企业能源消耗及碳排放统计 + */ + @GetMapping("/getEnterprisePower") + public R>> getEnterprisePower(LargeScreenVO entity) { + return R.data(largeScreenService.getEnterprisePower(entity)); + } + + /** + * 近6个月用电趋势 + */ + @GetMapping("/getSixMonthElectricity") + public R> getSixMonthElectricity() { + return R.data(largeScreenService.getSixMonthElectricity()); + } + + /** + * 碳排放月总量环比 + */ + @GetMapping("/getSixMonthCarbonQoq") + public R> getSixMonthCarbonQoq() { + return R.data(largeScreenService.getSixMonthCarbonQoq()); + } + + /** + * 碳排放月总量同比 + */ + @GetMapping("/getSixMonthCarbonYoy") + public R>> getSixMonthCarbonYoy() { + return R.data(largeScreenService.getSixMonthCarbonYoy()); + } + + /** + * 账单明细 + */ + @GetMapping("/getInstrumentRunDetail") + public R getInstrumentRunDetail(LargeScreenVO entity, Query query) { + return R.data(largeScreenService.getInstrumentRunDetail(entity,query)); + } + } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/MaintainRecordController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/MaintainRecordController.java index d56de83..416063a 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/MaintainRecordController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/MaintainRecordController.java @@ -5,7 +5,6 @@ import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.lims.entry.MaintainRecord; import org.springblade.lims.service.IMaintainRecordService; @@ -13,9 +12,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Arrays; -import java.util.List; - /** * @author sjx @@ -31,10 +27,6 @@ public class MaintainRecordController extends BladeController { @GetMapping("/page") public R page(MaintainRecord entry, Query query) { - List roles = Arrays.asList(AuthUtil.getUserRole().split(",")); - if(!roles.contains("admin") && !roles.contains("政府")){ - entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); - } return R.data(service.findPage(entry, query)); } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/job/GetInstrumentRunStatusJob.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/job/GetInstrumentRunStatusJob.java new file mode 100644 index 0000000..f5850a0 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/job/GetInstrumentRunStatusJob.java @@ -0,0 +1,17 @@ +package org.springblade.lims.job; + +import lombok.AllArgsConstructor; +import org.springblade.lims.service.ILargeScreenService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +@AllArgsConstructor +public class GetInstrumentRunStatusJob { + private final ILargeScreenService largeScreenService; + + @Scheduled(cron ="0 0/1 * * * ? ") + public void getInstrumentRunStatusJob(){ + largeScreenService.getInstrumentRunStatusJob(); + } +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.java new file mode 100644 index 0000000..27cad16 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.java @@ -0,0 +1,14 @@ + +package org.springblade.lims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.lims.entry.CarbonEmission; + +/** + * + * + * @author swj + * @since 2022年6月2日15:47:39 + */ +public interface CarbonEmissionMapper extends BaseMapper { +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.xml b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.xml new file mode 100644 index 0000000..9dd16f1 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.java new file mode 100644 index 0000000..f6d39b7 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.lims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.lims.entry.CarbonEmissionPlan; + +/** + * + * + * @author swj + * @since 2022年6月2日15:47:39 + */ +public interface CarbonEmissionPlanMapper extends BaseMapper { + CarbonEmissionPlan getCarbonEmissionPlan(String currentYear); +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.xml b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.xml new file mode 100644 index 0000000..3d23d3c --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonEmissionPlanMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.java new file mode 100644 index 0000000..7dd3f8e --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.java @@ -0,0 +1,16 @@ + +package org.springblade.lims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.lims.entry.CarbonIntensity; + +import java.util.List; + +/** + * + * + * @author swj + * @since 2022年6月2日15:47:39 + */ +public interface CarbonIntensityMapper extends BaseMapper { +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.xml b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.xml new file mode 100644 index 0000000..4f0f0d2 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/CarbonIntensityMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.java index c69779e..96f25c7 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.java @@ -22,8 +22,20 @@ public interface LargeScreenMapper extends BaseMapper { List getPeriodElectricity(LargeScreenVO entity); List getMaxElectricity(); + List getInstrumentActLoad(LargeScreenVO entity); + List getInstrumentDaylyLoad(LargeScreenVO entity); + + List getInstrumentDaylyCount(LargeScreenVO entity); + List getWeekElectricity(LargeScreenVO entity); + LargeScreenVO getTotalCarbonEmissions(String currentYear); + + List getEnterprisePower(LargeScreenVO entity); + List getSixMonthElectricity(LargeScreenVO entity); + List getMonthCarbon(LargeScreenVO entity); + List getInstrumentRunDetail(LargeScreenVO entity); + } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.xml b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.xml index cf0b8ba..e31fd51 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.xml +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/LargeScreenMapper.xml @@ -9,16 +9,16 @@ LEFT JOIN t_instrument b ON a.imei = b.CODE - and DATE_FORMAT(a.send_time, '%Y') = #{currentYear} + and a.current_year = #{currentYear} - and DATE_FORMAT(a.send_time, '%Y-%m') = #{currentMonth} + and a.current_month = #{currentMonth} - and DATE_FORMAT(a.send_time, '%Y-%m-%d') = #{today} + and a.current_day = #{today} - and DATE_FORMAT(a.send_time, '%Y-%m-%d') = #{yesterday} + and a.current_day = #{yesterday} and b.manufacturer_brand = #{manufacturerBrand} @@ -29,13 +29,13 @@ @@ -252,7 +300,7 @@ a.imei, b.load_rate FROM - ( SELECT max( a.send_time ) send_time, a.imei FROM t_instrument_data a where DATE_FORMAT(a.send_time,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') GROUP BY a.imei ) a + ( SELECT max( a.send_time ) send_time, a.imei FROM t_instrument_data a where a.current_day = DATE_FORMAT(now(),'%Y-%m-%d') GROUP BY a.imei ) a LEFT JOIN t_instrument_data b ON a.imei = b.imei AND a.send_time = b.send_time LEFT JOIN t_instrument c ON a.imei = c.CODE @@ -277,13 +325,129 @@ AND a.manufacturer_brand = #{manufacturerBrand} - AND DATE_FORMAT( b.send_time, '%Y-%m-%d' ) = #{today} + AND b.current_day = #{today} GROUP BY b.imei,b.load_level + + + + + + + + + + + + diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java index 8dcc488..7dbf06c 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallbackExtended; @@ -24,6 +25,8 @@ import org.springblade.lims.service.IInstrumentDataService; import org.springblade.lims.service.IInstrumentService; import org.springblade.lims.service.IInstrumentStatusService; import org.springblade.lims.service.ILargeScreenService; +import org.springblade.system.cache.DictCache; +import org.springblade.system.entity.Dict; import java.util.*; @@ -57,6 +60,12 @@ public class MyMQTTCallback implements MqttCallbackExtended { //设备额定功率集合 private Map powerMap = new HashMap<>(); + //负载率数据字典集合 + private Map loadRateMap = new HashMap<>(); + + //尖峰平谷集合 + private Map periodMap = new HashMap<>(); + /** * 丢失连接,可在这里做重连 @@ -99,12 +108,33 @@ public class MyMQTTCallback implements MqttCallbackExtended { log.info("接收消息主题 : {},接收消息内容 : {}", topic, new String(mqttMessage.getPayload())); //接收消息主题 if (topic.contains("/device/data")){ - count++; InstrumentData data = new InstrumentData(); Map map = (Map) JSON.parse(new String(mqttMessage.getPayload(), Charsets.UTF_8.name())); Map map1 = (Map) JSON.parse(map.get("vals").toString()); data.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")); + data.setCurrentYear(map.get("tsstr").toString().substring(0,4)); + data.setCurrentMonth(map.get("tsstr").toString().substring(0,7)); + data.setCurrentDay(map.get("tsstr").toString().substring(0,10)); data.setImei(map.get("imei").toString()); + //计算尖峰平谷 + String today = DateFormatUtils.format(new Date(),"yyyy-MM-dd"); + for(Map.Entry entry : periodMap.entrySet()){ + boolean flag = false; + List timeList = Arrays.asList(entry.getValue().split(",")); + for(String timePeriod : timeList){ + String[] times = timePeriod.split("-"); + Date startTime = DateUtils.parseDate(today + " " + times[0],"yyyy-MM-dd HH:mm:ss"); + Date endTime = DateUtils.parseDate(today + " " + times[1],"yyyy-MM-dd HH:mm:ss"); + if(data.getSendTime().compareTo(startTime) >0 && data.getSendTime().compareTo(endTime) <=0){ + flag = true; + break; + } + } + if(flag){ + data.setPeriod(entry.getKey()); + break; + } + } if(map1.containsKey("总用电")){ data.setTotalElectricity(Double.parseDouble(map1.get("总用电").toString())); //计算电表从上一次到这一次的用电量 @@ -121,15 +151,15 @@ public class MyMQTTCallback implements MqttCallbackExtended { if(powerMap.get(map.get("imei").toString()) != null){ int loadRate = Math.abs((int)Math.round(data.getTotalActivePower()/powerMap.get(map.get("imei").toString())*100)); String loadLevel = ""; - if(loadRate == 0){ + if(loadRate == loadRateMap.get("空载")){ loadLevel = "空载"; - }else if(loadRate > 0 && loadRate <= 20){ + }else if(loadRate > loadRateMap.get("空载") && loadRate <= loadRateMap.get("轻载")){ loadLevel = "轻载"; - }else if (loadRate > 20 && loadRate <= 50){ + }else if (loadRate > loadRateMap.get("轻载") && loadRate <= loadRateMap.get("正常")){ loadLevel = "正常"; - }else if(loadRate >50 && loadRate <= 80){ + }else if(loadRate >loadRateMap.get("正常") && loadRate <= loadRateMap.get("过载")){ loadLevel = "过载"; - }else if(loadRate > 80){ + }else if(loadRate > loadRateMap.get("过载")){ loadLevel = "重载"; } data.setLoadRate(loadRate); @@ -293,6 +323,28 @@ public class MyMQTTCallback implements MqttCallbackExtended { powerMap.put(instrument.getCode(),instrument.getRatedPower()); }); } + List dictlist = DictCache.getList("load_rate"); + dictlist.forEach(dict -> { + loadRateMap.put(dict.getDictValue(),Integer.parseInt(dict.getDictKey())); + }); + List periodlist = DictCache.getList("electricity_period"); + Map> map = new HashMap<>(); + periodlist.forEach(dict -> { + periodMap.put(dict.getDictValue(),dict.getDictKey()); + }); + /*for(Dict dict : periodlist){ + List timeList1 = Arrays.asList(dict.getDictKey().split(",")); + timeList1.forEach(s -> { + String[] times = s.split("-"); + Map map1 = new HashMap<>(); + try { + map1.put("startTime",DateUtils.parseDate(today+" "+times[0])); + map1.put("endTime",DateUtils.parseDate(today+" "+times[1])); + } catch (ParseException e) { + throw new RuntimeException(e); + } + }); + }*/ } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionPlanService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionPlanService.java new file mode 100644 index 0000000..f69458b --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionPlanService.java @@ -0,0 +1,23 @@ + +package org.springblade.lims.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonEmissionPlan; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +public interface ICarbonEmissionPlanService extends BaseService { + IPage findPage(CarbonEmissionPlan entry, Query query); + + R saveCarbon(CarbonEmissionPlan entry); + + CarbonEmissionPlan findById(String id); + + CarbonEmissionPlan getCarbonEmissionPlan(String currentYear); +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionService.java new file mode 100644 index 0000000..af4f3ec --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonEmissionService.java @@ -0,0 +1,25 @@ + +package org.springblade.lims.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonEmission; + +import java.util.List; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +public interface ICarbonEmissionService extends BaseService { + IPage findPage(CarbonEmission entry, Query query); + + R saveCarbon(CarbonEmission entry); + + CarbonEmission findById(String id); + + List findTrendList(String currentMonth); +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonIntensityService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonIntensityService.java new file mode 100644 index 0000000..a70bd8e --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ICarbonIntensityService.java @@ -0,0 +1,25 @@ + +package org.springblade.lims.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonIntensity; + +import java.util.List; + +/** + * @author sjx + * @date 2023年11月27日15:34:17 + */ +public interface ICarbonIntensityService extends BaseService { + IPage findPage(CarbonIntensity entry, Query query); + + R saveCarbon(CarbonIntensity entry); + + CarbonIntensity findById(String id); + + List findIntensityList(String currentMonth); +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java index 1c80d35..148ad1a 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/ILargeScreenService.java @@ -2,6 +2,8 @@ package org.springblade.lims.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.support.Query; import org.springblade.lims.entry.LargeScreenVO; import java.util.List; @@ -22,6 +24,20 @@ public interface ILargeScreenService{ List getMaxElectricity(); List getInstrumentActLoad(LargeScreenVO entity); - Map> getInstrumentDaylyLoad(LargeScreenVO entity); + List> getInstrumentDaylyLoad(LargeScreenVO entity); Map> getWeekElectricity(LargeScreenVO entity); + + List> getInstrumentRunStatus(LargeScreenVO entity); + + Map getTotalCarbonEmissions(); + List> getEnterprisePower(LargeScreenVO entity); + + Map getSixMonthElectricity(); + Map getSixMonthCarbonQoq(); + List> getSixMonthCarbonYoy(); + + void getInstrumentRunStatusJob(); + + IPage getInstrumentRunDetail(LargeScreenVO entry, Query query); + } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionPlanServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionPlanServiceImpl.java new file mode 100644 index 0000000..0a63162 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionPlanServiceImpl.java @@ -0,0 +1,81 @@ + +package org.springblade.lims.service.impl; + + +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonEmissionPlan; +import org.springblade.lims.mapper.CarbonEmissionPlanMapper; +import org.springblade.lims.service.ICarbonEmissionPlanService; +import org.springframework.stereotype.Service; + +import java.util.Date; + + +/** + * @author swj + * @since 2022年6月2日15:53:01 + */ +@Service +@AllArgsConstructor +public class CarbonEmissionPlanServiceImpl extends BaseServiceImpl implements ICarbonEmissionPlanService { + + @Override + public IPage findPage(CarbonEmissionPlan entry, Query query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(entry.getCurrentYear())) { + wrapper.eq(CarbonEmissionPlan::getCurrentYear, entry.getCurrentYear()); + } + if(entry.getCreateDept() != null){ + wrapper.eq(BaseEntity::getCreateDept,entry.getCreateDept()); + } + wrapper.eq(BaseEntity::getIsDeleted, 0); + wrapper.orderByDesc(CarbonEmissionPlan::getCreateTime); + IPage page = this.page(Condition.getPage(query), wrapper); + return page; + } + + @Override + public R saveCarbon(CarbonEmissionPlan entry) { + Double pvPower = entry.getPvPower() == null ? 0.0 : entry.getPvPower(); + Double processOpt = entry.getProcessOpt() == null ? 0.0 : entry.getProcessOpt(); + Double equipReplace = entry.getEquipReplace() == null ? 0.0 : entry.getEquipReplace(); + entry.setTotalCarbonReduction(pvPower+processOpt+equipReplace); + if (entry.getId() == null) { + //根据月份和部门检验是否重复 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CarbonEmissionPlan::getCurrentYear,entry.getCurrentYear()); + CarbonEmissionPlan carbonEmissionPlan = this.getOne(wrapper); + if(carbonEmissionPlan != null){ + return R.fail("当前年份数据已录入!"); + } + entry.setCreateUser(AuthUtil.getUserId()); + entry.setCreateTime(new Date()); + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + baseMapper.insert(entry); + } else { + entry.setUpdateUser(AuthUtil.getUserId()); + entry.setUpdateTime(new Date()); + baseMapper.updateById(entry); + } + return R.success("保存成功!"); + } + + @Override + public CarbonEmissionPlan findById(String id) { + return this.getById(id); + } + + @Override + public CarbonEmissionPlan getCarbonEmissionPlan(String currentYear) { + return baseMapper.getCarbonEmissionPlan(currentYear); + } +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionServiceImpl.java new file mode 100644 index 0000000..96ddf19 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonEmissionServiceImpl.java @@ -0,0 +1,98 @@ + +package org.springblade.lims.service.impl; + + +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonEmission; +import org.springblade.lims.mapper.CarbonEmissionMapper; +import org.springblade.lims.service.ICarbonEmissionService; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +/** + * @author swj + * @since 2022年6月2日15:53:01 + */ +@Service +@AllArgsConstructor +public class CarbonEmissionServiceImpl extends BaseServiceImpl implements ICarbonEmissionService { + + + @Override + public IPage findPage(CarbonEmission entry, Query query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(entry.getCurrentMonth())) { + wrapper.eq(CarbonEmission::getCurrentMonth, entry.getCurrentMonth()); + } + if(entry.getCreateDept() != null){ + wrapper.eq(BaseEntity::getCreateDept,entry.getCreateDept()); + } + wrapper.eq(BaseEntity::getIsDeleted, 0); + wrapper.orderByDesc(CarbonEmission::getCreateTime); + IPage page = this.page(Condition.getPage(query), wrapper); + return page; + } + + @Override + public R saveCarbon(CarbonEmission entry) { + if (entry.getId() == null) { + //根据月份和部门检验是否重复 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CarbonEmission::getCurrentMonth,entry.getCurrentMonth()); + CarbonEmission carbonEmission = this.getOne(wrapper); + if(carbonEmission != null){ + return R.fail("当前月份数据已录入!"); + } + entry.setCreateUser(AuthUtil.getUserId()); + entry.setCreateTime(new Date()); + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + baseMapper.insert(entry); + } else { + entry.setUpdateUser(AuthUtil.getUserId()); + entry.setUpdateTime(new Date()); + baseMapper.updateById(entry); + } + return R.success("保存成功!"); + } + + @Override + public CarbonEmission findById(String id) { + return this.getById(id); + } + + @Override + public List findTrendList(String currentMonth) { + List list = new ArrayList<>(); + try { + List monthList = new ArrayList<>(); + monthList.add(currentMonth); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-1),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-2),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-3),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-4),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-5),"yyyy-MM")); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(CarbonEmission::getCurrentMonth,monthList); + list = this.list(wrapper); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return list; + } +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonIntensityServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonIntensityServiceImpl.java new file mode 100644 index 0000000..02fc9b3 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CarbonIntensityServiceImpl.java @@ -0,0 +1,98 @@ + +package org.springblade.lims.service.impl; + + +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.CarbonIntensity; +import org.springblade.lims.mapper.CarbonIntensityMapper; +import org.springblade.lims.service.ICarbonIntensityService; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +/** + * @author swj + * @since 2022年6月2日15:53:01 + */ +@Service +@AllArgsConstructor +public class CarbonIntensityServiceImpl extends BaseServiceImpl implements ICarbonIntensityService { + + + @Override + public IPage findPage(CarbonIntensity entry, Query query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(entry.getCurrentMonth())) { + wrapper.eq(CarbonIntensity::getCurrentMonth, entry.getCurrentMonth()); + } + if(entry.getCreateDept() != null){ + wrapper.eq(BaseEntity::getCreateDept,entry.getCreateDept()); + } + wrapper.eq(BaseEntity::getIsDeleted, 0); + wrapper.orderByDesc(CarbonIntensity::getCreateTime); + IPage page = this.page(Condition.getPage(query), wrapper); + return page; + } + + @Override + public R saveCarbon(CarbonIntensity entry) { + if (entry.getId() == null) { + //根据月份和部门检验是否重复 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CarbonIntensity::getCurrentMonth,entry.getCurrentMonth()); + CarbonIntensity carbonIntensity = this.getOne(wrapper); + if(carbonIntensity != null){ + return R.fail("当前月份数据已录入!"); + } + entry.setCreateUser(AuthUtil.getUserId()); + entry.setCreateTime(new Date()); + entry.setCreateDept(Long.parseLong(AuthUtil.getDeptId())); + baseMapper.insert(entry); + } else { + entry.setUpdateUser(AuthUtil.getUserId()); + entry.setUpdateTime(new Date()); + baseMapper.updateById(entry); + } + return R.success("保存成功!"); + } + + @Override + public CarbonIntensity findById(String id) { + return this.getById(id); + } + + @Override + public List findIntensityList(String currentMonth) { + List list = new ArrayList<>(); + try { + List monthList = new ArrayList<>(); + monthList.add(currentMonth); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-1),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-2),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-3),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-4),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-5),"yyyy-MM")); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(CarbonIntensity::getCurrentMonth,monthList); + list = this.list(wrapper); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return list; + } +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java index 3aa236d..d8e4177 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/LargeScreenServiceImpl.java @@ -2,19 +2,28 @@ package org.springblade.lims.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; +import org.springblade.core.mp.support.Query; +import org.springblade.lims.entry.CarbonEmissionPlan; +import org.springblade.lims.entry.Instrument; import org.springblade.lims.entry.LargeScreenVO; import org.springblade.lims.mapper.LargeScreenMapper; +import org.springblade.lims.service.ICarbonEmissionPlanService; +import org.springblade.lims.service.IInstrumentService; import org.springblade.lims.service.ILargeScreenService; +import org.springblade.lims.tools.RedisUtil; import org.springframework.stereotype.Service; import java.text.ParseException; import java.time.YearMonth; import java.util.*; -import java.util.stream.Collectors; /** @@ -25,6 +34,9 @@ import java.util.stream.Collectors; @AllArgsConstructor public class LargeScreenServiceImpl implements ILargeScreenService { private final LargeScreenMapper largeScreenMapper; + private final IInstrumentService instrumentService; + private final RedisUtil redisUtil; + private final ICarbonEmissionPlanService carbonEmissionPlanService; @Override public Map getTotalElectricity(String manufacturerBrand) { @@ -69,14 +81,17 @@ public class LargeScreenServiceImpl implements ILargeScreenService { Map> map = new HashMap<>(); try { String lastMonth = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(entity.getCurrentMonth(), "yyyy-MM"), -1), "yyyy-MM"); + //初始化每月电量数据 Map currentMap = initMonthData(entity.getCurrentMonth()); Map lastMap = initMonthData(lastMonth); + //查询本月电量 List currentList = largeScreenMapper.getDayElectricity(entity); if (CollectionUtils.isNotEmpty(currentList)) { currentList.forEach(largeScreenVO -> { currentMap.put(largeScreenVO.getDate(), largeScreenVO.getTotalElectricity()); }); } + //查询上月电量 entity.setCurrentMonth(lastMonth); List lastList = largeScreenMapper.getDayElectricity(entity); if (CollectionUtils.isNotEmpty(lastList)) { @@ -104,6 +119,38 @@ public class LargeScreenServiceImpl implements ILargeScreenService { @Override public List getPeriodElectricity(LargeScreenVO entity) { + /*List jianList = new ArrayList<>(); + List fengList = new ArrayList<>(); + List pingList = new ArrayList<>(); + List guList = new ArrayList<>(); + List dictlist = DictCache.getList("electricity_period"); + for(Dict dict : dictlist){ + + List timeList1 = Arrays.asList(dict.getDictKey().split(",")); + timeList1.forEach(s -> { + String[] times = s.split("-"); + TimeVO timeVO = new TimeVO(); + timeVO.setStartTime(entity.getToday()+" "+times[0]); + timeVO.setEndTime(entity.getToday()+" "+times[1]); + if(dict.getDictValue().equals("尖")){ + jianList.add(timeVO); + } + if(dict.getDictValue().equals("峰")){ + fengList.add(timeVO); + } + if(dict.getDictValue().equals("平")){ + pingList.add(timeVO); + } + if(dict.getDictValue().equals("谷")){ + guList.add(timeVO); + } + + }); + } + entity.setJianList(jianList); + entity.setFengList(fengList); + entity.setPingList(pingList); + entity.setGuList(guList);*/ return largeScreenMapper.getPeriodElectricity(entity); } @@ -118,53 +165,82 @@ public class LargeScreenServiceImpl implements ILargeScreenService { } @Override - public Map> getInstrumentDaylyLoad(LargeScreenVO entity) { - List list = largeScreenMapper.getInstrumentDaylyLoad(entity); - Map> map = new HashMap<>(); - if(CollectionUtils.isNotEmpty(list)){ - List nameList = list.stream().map(LargeScreenVO::getName).distinct().collect(Collectors.toList()); - nameList.forEach(s -> { - Map map1 = new HashMap<>(); - map1.put("空载",0); - map1.put("轻载",0); - map1.put("正常",0); - map1.put("过载",0); - map1.put("重载",0); - map.put(s,map1); - }); - for(LargeScreenVO largeScreenVO : list){ - Map map1 = map.get(largeScreenVO.getName()); - if(map1.containsKey(largeScreenVO.getLoadLevel())){ - map1.put(largeScreenVO.getLoadLevel(),largeScreenVO.getCount()); - } - } - - for (Map.Entry> entry : map.entrySet()) { - Map map1 = entry.getValue(); - int sum = 0; - for (Map.Entry entry1 : map1.entrySet()) { - sum+=entry1.getValue(); - } - for (Map.Entry entry1 : map1.entrySet()) { - double load = (double)entry1.getValue()/sum*100; - map1.put(entry1.getKey(),(int)Math.round(load)); + public List> getInstrumentDaylyLoad(LargeScreenVO entity) { + List> list = new ArrayList<>(); + List list1 = largeScreenMapper.getInstrumentDaylyCount(entity); + List list2 = largeScreenMapper.getInstrumentDaylyLoad(entity); + if(CollectionUtils.isNotEmpty(list1)){ + for(LargeScreenVO vo1 : list1){ + Map map = new HashMap<>(); + map.put("name",vo1.getName()); + map.put("kongzai",0); + map.put("qingzai",0); + map.put("zhengchang",0); + map.put("guozai",0); + map.put("zhongzai",0); + for(LargeScreenVO vo2 : list2){ + if(vo1.getName().equals(vo2.getName())){ + int load = (int)Math.round((double) vo2.getCount()/ vo1.getCount() *100); + if("空载".equals(vo2.getLoadLevel())){ + map.put("kongzai",load); + }else if("轻载".equals(vo2.getLoadLevel())){ + map.put("qingzai",load); + }else if("正常".equals(vo2.getLoadLevel())){ + map.put("zhengchang",load); + }else if("过载".equals(vo2.getLoadLevel())){ + map.put("guozai",load); + }else if("重载".equals(vo2.getLoadLevel())){ + map.put("zhongzai",load); + } + } } - map.put(entry.getKey(),map1); + list.add(map); } - } - return map; + return list; } @Override public Map> getWeekElectricity(LargeScreenVO entity) { String day = entity.getToday(); Map> map = new HashMap<>(); + /* List jianList = new ArrayList<>(); + List fengList = new ArrayList<>(); + List pingList = new ArrayList<>(); + List guList = new ArrayList<>(); + List dictlist = DictCache.getList("electricity_period");*/ for (int i = 0; i < 7; i++) { try { String today = DateFormatUtils.format(DateUtils.addDays(DateUtils.parseDate(day, "yyyy-MM-dd"), -i), "yyyy-MM-dd"); entity.setToday(today); + /*for(Dict dict : dictlist){ + + List timeList1 = Arrays.asList(dict.getDictKey().split(",")); + timeList1.forEach(s -> { + String[] times = s.split("-"); + TimeVO timeVO = new TimeVO(); + timeVO.setStartTime(entity.getToday()+" "+times[0]); + timeVO.setEndTime(entity.getToday()+" "+times[1]); + if(dict.getDictValue().equals("尖")){ + jianList.add(timeVO); + } + if(dict.getDictValue().equals("峰")){ + fengList.add(timeVO); + } + if(dict.getDictValue().equals("平")){ + pingList.add(timeVO); + } + if(dict.getDictValue().equals("谷")){ + guList.add(timeVO); + } + + }); + } + entity.setJianList(jianList); + entity.setFengList(fengList); + entity.setPingList(pingList); + entity.setGuList(guList);*/ List list1 = largeScreenMapper.getWeekElectricity(entity); Map map1 = new HashMap<>(); list1.forEach(largeScreenVO -> { @@ -178,6 +254,300 @@ public class LargeScreenServiceImpl implements ILargeScreenService { return map; } + @Override + public List> getInstrumentRunStatus(LargeScreenVO entity) { + List> list = new ArrayList<>(); + Date date = new Date(); + if(Integer.parseInt(DateFormatUtils.format(date,"HH")) >= 8 && Integer.parseInt(DateFormatUtils.format(date,"HH")) <= 20){ + //查询设备运行状态 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if(StringUtils.isNotEmpty(entity.getManufacturerBrand())){ + wrapper.eq(Instrument::getManufacturerBrand,entity.getManufacturerBrand()); + } + List instrumentList = instrumentService.list(wrapper); + if(CollectionUtils.isNotEmpty(instrumentList)){ + for(Instrument instrument : instrumentList){ + Map map = new HashMap<>(); + List> list1 = (List)redisUtil.get(instrument.getName() + "-runStatus"); + map.put("name",instrument.getName()); + map.put("list",list1); + list.add(map); + } + + } + return list; + } + return null; + } + + @Override + public Map getTotalCarbonEmissions() { + String currentYear = DateFormatUtils.format(new Date(),"yyyy"); + LargeScreenVO largeScreenVO = largeScreenMapper.getTotalCarbonEmissions(currentYear); + CarbonEmissionPlan carbonEmissionPlan = carbonEmissionPlanService.getCarbonEmissionPlan(currentYear); + String lastYear = DateFormatUtils.format(DateUtils.addYears(new Date(),-1),"yyyy"); + LargeScreenVO largeScreenVO1 = largeScreenMapper.getTotalCarbonEmissions(lastYear); + CarbonEmissionPlan carbonEmissionPlan1 = carbonEmissionPlanService.getCarbonEmissionPlan(lastYear); + + Map map = new HashMap<>(); + map.put("jnzl",largeScreenVO.getTotalCarbonEmissions()); + if(largeScreenVO1 != null){ + map.put("qnzl",largeScreenVO1.getTotalCarbonEmissions()); + }else{ + map.put("qnzl",0.0); + } + if(carbonEmissionPlan1 != null){ + map.put("qnjhl",carbonEmissionPlan1.getCarbonPlan()); + map.put("qnjpzl",carbonEmissionPlan1.getTotalCarbonReduction()); + }else{ + map.put("qnjhl",0.0); + map.put("qnjpzl",0.0); + } + map.put("jnjhzl",carbonEmissionPlan.getTotalCarbonPlan()); + map.put("jnjhl",carbonEmissionPlan.getCarbonPlan()); + map.put("jnjpzl",carbonEmissionPlan.getTotalCarbonReduction()); + map.put("gffd",carbonEmissionPlan.getPvPower()); + map.put("gyyh",carbonEmissionPlan.getProcessOpt()); + map.put("sbgh",carbonEmissionPlan.getEquipReplace()); + map.put("gffdzb",Double.parseDouble(String.format("%.2f",carbonEmissionPlan.getPvPower()/carbonEmissionPlan.getTotalCarbonReduction()*100))); + map.put("gyyhzb",Double.parseDouble(String.format("%.2f",carbonEmissionPlan.getProcessOpt()/carbonEmissionPlan.getTotalCarbonReduction()*100))); + map.put("sbghzb",Double.parseDouble(String.format("%.2f",carbonEmissionPlan.getEquipReplace()/carbonEmissionPlan.getTotalCarbonReduction()*100))); + map.put("ypfzb",Double.parseDouble(String.format("%.2f",carbonEmissionPlan.getTotalCarbonPlan()/largeScreenVO.getTotalCarbonEmissions()*100))); + return map; + } + + @Override + public List> getEnterprisePower(LargeScreenVO entity) { + List> list = new ArrayList<>(); + List dataList = largeScreenMapper.getEnterprisePower(entity); + if(CollectionUtils.isNotEmpty(dataList)){ + for(LargeScreenVO largeScreenVO : dataList){ + Map map = new TreeMap<>(); + map.put("name",largeScreenVO.getManufacturerBrand()); + map.put("electricity",largeScreenVO.getSum()); + map.put("carbon",largeScreenVO.getTotalCarbonEmissions()); + list.add(map); + } + } + return list; + } + + @Override + public Map getSixMonthElectricity() { + Map map = new HashMap<>(); + try { + List monthList = new ArrayList<>(); + String currentMonth = DateFormatUtils.format(new Date(),"yyyy-MM"); + monthList.add(currentMonth); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-1),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-2),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-3),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-4),"yyyy-MM")); + monthList.add(DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-5),"yyyy-MM")); + monthList.forEach(s -> { + map.put(s,0.0); + }); + LargeScreenVO largeScreenVO = new LargeScreenVO(); + largeScreenVO.setMonthList(monthList); + List dataList = largeScreenMapper.getSixMonthElectricity(largeScreenVO); + if(CollectionUtils.isNotEmpty(dataList)){ + dataList.forEach(largeScreenVO1 -> { + map.put(largeScreenVO1.getCurrentMonth(),largeScreenVO1.getSum()); + }); + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + return map; + } + + @Override + public Map getSixMonthCarbonQoq() { + Map map = new HashMap<>(); + Map map1 = new HashMap<>(); + try { + List monthList = new ArrayList<>(); + String currentMonth = DateFormatUtils.format(new Date(),"yyyy-MM"); + String month1 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-1),"yyyy-MM"); + String month2 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-2),"yyyy-MM"); + String month3 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-3),"yyyy-MM"); + String month4 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-4),"yyyy-MM"); + String month5 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-5),"yyyy-MM"); + String month6 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(currentMonth,"yyyy-MM"),-6),"yyyy-MM"); + monthList.add(currentMonth); + monthList.add(month1); + monthList.add(month2); + monthList.add(month3); + monthList.add(month4); + monthList.add(month5); + monthList.forEach(s -> { + map.put(s,"0"); + }); + monthList.add(month6); + monthList.forEach(s -> { + map1.put(s,0.0); + }); + LargeScreenVO largeScreenVO = new LargeScreenVO(); + largeScreenVO.setMonthList(monthList); + List dataList = largeScreenMapper.getMonthCarbon(largeScreenVO); + if(CollectionUtils.isNotEmpty(dataList)){ + dataList.forEach(largeScreenVO1 -> { + map1.put(largeScreenVO1.getCurrentMonth(),largeScreenVO1.getTotalCarbonEmissions()); + }); + if(map1.get(month6) != 0){ + map.put(month5,String.format("%.2f",(map1.get(month5)-map1.get(month6))/map1.get(month6)*100)); + } + if(map1.get(month5) != 0){ + map.put(month4,String.format("%.2f",(map1.get(month4)-map1.get(month5))/map1.get(month5)*100)); + } + if(map1.get(month4) != 0){ + map.put(month3,String.format("%.2f",(map1.get(month3)-map1.get(month4))/map1.get(month4)*100)); + } + if(map1.get(month3) != 0){ + map.put(month2,String.format("%.2f",(map1.get(month2)-map1.get(month3))/map1.get(month3)*100)); + } + if(map1.get(month2) != 0){ + map.put(month1,String.format("%.2f",(map1.get(month1)-map1.get(month2))/map1.get(month2)*100)); + } + if(map1.get(month1) != 0){ + map.put(currentMonth,String.format("%.2f",(map1.get(currentMonth)-map1.get(month1))/map1.get(month1)*100)); + } + + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + return map; + } + + @Override + public List> getSixMonthCarbonYoy() { + List> list = new ArrayList<>(); + try { + List monthList = new ArrayList<>(); + String month = DateFormatUtils.format(new Date(),"yyyy-MM");; + String month1 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(month,"yyyy-MM"),-1),"yyyy-MM"); + String month2 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(month,"yyyy-MM"),-2),"yyyy-MM"); + String month3 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(month,"yyyy-MM"),-3),"yyyy-MM"); + String month4 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(month,"yyyy-MM"),-4),"yyyy-MM"); + String month5 = DateFormatUtils.format(DateUtils.addMonths(DateUtils.parseDate(month,"yyyy-MM"),-5),"yyyy-MM"); + monthList.add(month); + monthList.add(month1); + monthList.add(month2); + monthList.add(month3); + monthList.add(month4); + monthList.add(month5); + monthList.forEach(s -> { + Map map = new HashMap<>(); + + try { + map.put("jn",s); + map.put("qn",DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(s,"yyyy-MM"),-1),"yyyy-MM")); + map.put("jnpf",0.0); + map.put("qnpf",0.0); + map.put("tongbi",0.0); + } catch (ParseException e) { + throw new RuntimeException(e); + } + + list.add(map); + }); + + LargeScreenVO largeScreenVO = new LargeScreenVO(); + largeScreenVO.setMonthList(monthList); + List dataList1 = largeScreenMapper.getMonthCarbon(largeScreenVO); + if(CollectionUtils.isNotEmpty(dataList1)){ + for(LargeScreenVO largeScreenVO1 : dataList1){ + for(Map map : list){ + if(map.get("jn").toString().equals(largeScreenVO1.getCurrentMonth())){ + map.put("jnpf",largeScreenVO1.getTotalCarbonEmissions()); + } + } + } + } + + String lmonth = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month,"yyyy-MM"),-1),"yyyy-MM"); + String lmonth1 = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month1,"yyyy-MM"),-1),"yyyy-MM"); + String lmonth2 = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month2,"yyyy-MM"),-1),"yyyy-MM"); + String lmonth3 = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month3,"yyyy-MM"),-1),"yyyy-MM"); + String lmonth4 = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month4,"yyyy-MM"),-1),"yyyy-MM"); + String lmonth5 = DateFormatUtils.format(DateUtils.addYears(DateUtils.parseDate(month5,"yyyy-MM"),-1),"yyyy-MM"); + monthList.clear(); + monthList.add(lmonth); + monthList.add(lmonth1); + monthList.add(lmonth2); + monthList.add(lmonth3); + monthList.add(lmonth4); + monthList.add(lmonth5); + largeScreenVO.setMonthList(monthList); + List dataList2 = largeScreenMapper.getMonthCarbon(largeScreenVO); + if(CollectionUtils.isNotEmpty(dataList2)){ + for(LargeScreenVO largeScreenVO1 : dataList2){ + for(Map map : list){ + if(map.get("qn").toString().equals(largeScreenVO1.getCurrentMonth())){ + map.put("qnpf",largeScreenVO1.getTotalCarbonEmissions()); + } + } + } + } + for(Map map : list){ + if((double)map.get("qnpf") != 0.0){ + map.put("tongbi",Double.parseDouble(String.format("%.2f",((double)map.get("jnpf")-(double)map.get("qnpf"))/(double)map.get("qnpf")*100))); + } + } + + } catch (ParseException e) { + throw new RuntimeException(e); + } + return list; + } + + @Override + public void getInstrumentRunStatusJob() { + Date date = new Date(); + if(Integer.parseInt(DateFormatUtils.format(date,"HH")) >= 8 && Integer.parseInt(DateFormatUtils.format(date,"HH")) <= 20){ + List instrumentList = instrumentService.list(new LambdaQueryWrapper<>()); + if(CollectionUtils.isNotEmpty(instrumentList)){ + for(Instrument instrument : instrumentList){ + List> list = new ArrayList<>(); + if(redisUtil.get(instrument.getName() + "-runStatus") == null){ + list = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("time",DateFormatUtils.format(date,"HH:mm")); + map.put("runStatus",instrument.getRunStatus()==null?"2":instrument.getRunStatus().toString()); + list.add(map); + //早8点到晚8点,redis过期时间设置为4小时 + redisUtil.set(instrument.getName() + "-runStatus",list,60*60*4); + }else{ + list = (List)redisUtil.get(instrument.getName() + "-runStatus"); + Map map = new HashMap<>(); + map.put("time",DateFormatUtils.format(date,"HH:mm")); + map.put("runStatus",instrument.getRunStatus()==null?"2":instrument.getRunStatus().toString()); + list.add(map); + redisUtil.set(instrument.getName() + "-runStatus",list,60*60*4); + } + } + } + } + } + + @Override + public IPage getInstrumentRunDetail(LargeScreenVO entity, Query query) { + List list = largeScreenMapper.getInstrumentRunDetail(entity); + IPage page = new Page<>(query.getCurrent(),query.getSize()); + int startIndex = (int)((query.getCurrent() - 1)*query.getSize()); + if(null == list || list.isEmpty() || startIndex > list.size()){ + page.setTotal(0); + page.setRecords(null); + } + else { + page.setTotal(list.size()); + int toIndex = (int)(query.getCurrent()*query.getSize()); + page.setRecords(list.subList(startIndex,toIndex > list.size() ? list.size() : toIndex)); + } + return page; + } + public TreeMap initMonthData(String currentMonth) { int year = Integer.parseInt(currentMonth.split("-")[0]); int month = Integer.parseInt(currentMonth.split("-")[1]); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainRecordServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainRecordServiceImpl.java index c1c7486..085f6ac 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainRecordServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainRecordServiceImpl.java @@ -5,17 +5,26 @@ package org.springblade.lims.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.lims.entry.Instrument; import org.springblade.lims.entry.MaintainRecord; import org.springblade.lims.mapper.MaintainRecordMapper; import org.springblade.lims.service.IInstrumentService; import org.springblade.lims.service.IMaintainRecordService; +import org.springblade.system.cache.SysCache; +import org.springblade.system.entity.Dept; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * @@ -33,6 +42,16 @@ public class MaintainRecordServiceImpl extends BaseServiceImpl roles = Arrays.asList(AuthUtil.getUserRole().split(",")); + if(!roles.contains("admin") && !roles.contains("政府")){ + List deptIds = new ArrayList<>(); + List depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId())); + if(CollectionUtils.isNotEmpty(depts)){ + deptIds = depts.stream().map(Dept::getId).collect(Collectors.toList()); + } + deptIds.add(Long.parseLong(AuthUtil.getDeptId())); + wrapper.in(BaseEntity::getCreateDept,deptIds); + } wrapper.eq(BaseEntity::getIsDeleted,0); wrapper.orderByDesc(MaintainRecord::getCreateTime); IPage page = this.page(Condition.getPage(query), wrapper);