From c2e2ce9e6e64d6d88de294afbaa09c3d6c2a2df5 Mon Sep 17 00:00:00 2001 From: 阿伏兔 <1738124622@qq.com> Date: 星期三, 28 八月 2024 23:02:26 +0800 Subject: [PATCH] 添加尖峰平谷功能 --- energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSettingItem.java | 51 energy_management_ui/src/assets/icons/checkbox.png | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/PeakAndValleyReportVO.java | 89 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityTypeSettingService.java | 43 energy_management_ui/src/assets/image/isbreadcrumbBg.png | 0 energy_management_server/src/main/resources/application.yml | 2 energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingMapper.xml | 108 ++ energy_management_ui/src/layout/index.vue | 176 +++ energy_management_ui/src/views/electricityPrice/statistics/electricityIndexNew.vue | 181 +++ energy_management_ui/src/assets/icons/checked.png | 0 energy_management_ui/src/assets/home/homeiconT.png | 0 energy_management_ui/src/views/index.vue | 260 ++-- energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityPeriodFeeDetailVO.java | 54 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityTypeSettingController.java | 91 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityDataItemServiceImpl.java | 114 ++ energy_management_ui/src/assets/image/bg.jpg | 0 energy_management_ui/src/views/energyPrice/index.vue | 558 ++++++++++ energy_management_ui/src/api/energyPrice/price.js | 40 energy_management_ui/src/assets/home/homeicontitle.png | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityDataItemService.java | 24 energy_management_ui/src/assets/home/homeiconJ.png | 0 energy_management_ui/src/assets/home/homeiconDQ.png | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingAddVO.java | 86 + energy_management_ui/src/views/energyPrice/index copy.vue | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSetting.java | 72 + energy_management_ui/src/assets/image/navbar/Group.png | 0 energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityDataItemMapper.xml | 31 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemAddVO.java | 42 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityTypeSettingServiceImpl.java | 186 +++ energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingUpdateVO.java | 93 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityDataItemMapper.java | 30 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemQueryVO.java | 151 ++ energy_management_ui/src/assets/image/breadcrumbBg.png | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingMapper.java | 52 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemUpdateVO.java | 38 energy_management_ui/src/assets/home/homeiconY.png | 0 energy_management_ui/src/views/login.vue | 50 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemVO.java | 59 + energy_management_ui/src/assets/image/treeBg.png | 0 energy_management_ui/src/views/index copy.vue | 1 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityDataItem.java | 106 + energy_management_ui/src/views/index_bak.vue | 88 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingItemMapper.java | 45 energy_management_ui/src/assets/home/homeiconW.png | 0 energy_management_ui/src/assets/home/homeiconD.png | 0 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingPageListVO.java | 66 + energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingItemMapper.xml | 88 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityDataItemListDTO.java | 68 + energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/enums/ElectricityTypeEnum.java | 24 energy_management_ui/vue.config.js | 6 energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityDataItemController.java | 40 51 files changed, 3,013 insertions(+), 200 deletions(-) diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityDataItemController.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityDataItemController.java new file mode 100644 index 0000000..ed75c48 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityDataItemController.java @@ -0,0 +1,40 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.controller; + + +import com.dingzhuo.energy.framework.web.controller.BaseController; +import com.dingzhuo.energy.framework.web.domain.AjaxResult; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityDataItemListDTO; +import com.dingzhuo.energy.project.electricityTypeSetting.service.IElectricityDataItemService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 灏栧嘲骞宠胺鏁版嵁Controller + * + * @author ruoyi + * @date 2024-06-19 + */ +@RestController +@RequestMapping("/electricityDataItem") +@Api(tags = "灏栧嘲骞宠胺鏁版嵁") +public class ElectricityDataItemController extends BaseController { + + @Resource + private IElectricityDataItemService rulesService; + + + /** + * 鑾峰彇灏栧嘲骞宠胺鏁版嵁缁熻 + */ + @GetMapping("/getDataStatistics") + @ApiOperation(value = "鑾峰彇灏栧嘲骞宠胺鏁版嵁缁熻") + public AjaxResult getDataStatistics(ElectricityDataItemListDTO dto) { + return AjaxResult.success(rulesService.getDataStatistics(dto)); + } + +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityTypeSettingController.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityTypeSettingController.java new file mode 100644 index 0000000..0fd2cfb --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/controller/ElectricityTypeSettingController.java @@ -0,0 +1,91 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.controller; + +import com.dingzhuo.energy.framework.aspectj.lang.annotation.Log; +import com.dingzhuo.energy.framework.aspectj.lang.enums.BusinessType; +import com.dingzhuo.energy.framework.web.controller.BaseController; +import com.dingzhuo.energy.framework.web.domain.AjaxResult; +import com.dingzhuo.energy.framework.web.page.TableDataInfo; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingAddVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingUpdateVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingItemQueryVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingPageListVO; +import com.dingzhuo.energy.project.electricityTypeSetting.service.IElectricityTypeSettingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 璁¤垂绛栫暐Controller + * + * @author ruoyi + * @date 2024-06-19 + */ +@RestController +@RequestMapping("/rule") +@Api(tags = "璁¤垂绛栫暐") +public class ElectricityTypeSettingController extends BaseController { + + @Resource + private IElectricityTypeSettingService rulesService; + + + /** + * 鏌ヨ璁¤垂瑙勫垯鍒楄〃 + */ + @GetMapping("/list") + @ApiOperation(value = "鍒嗛〉鏌ヨ璁¤垂瑙勫垯鍒楄〃") + public TableDataInfo list(@ApiParam("璁¤垂瑙勫垯鍚嶇О") @RequestParam(value = "name", required = false) String name) { + startPage(); + List<ElectricityTypeSettingPageListVO> responsePage = rulesService.selectPageList(name); + return getDataTable(responsePage); + } + + /** + * 鑾峰彇璁¤垂瑙勫垯璇︽儏 + */ + @GetMapping(value = "/getRuleDetail") + @ApiOperation(value = "鑾峰彇璁¤垂瑙勫垯璇︽儏") + public AjaxResult getRuleDetail(@ApiParam("璁¤垂瑙勫垯id") @NotNull(message = "id涓嶈兘涓虹┖!") @RequestParam("id") String id) { + ElectricityTypeSettingItemQueryVO response = rulesService.getRuleDetail(id); + return AjaxResult.success(response); + } + + /** + * 鏂板璁¤垂绛栫暐 + */ + @PostMapping("/addRule") + @ApiOperation(value = "鏂板璁¤垂绛栫暐") + @Log(title = "鏂板璁¤垂绛栫暐", businessType = BusinessType.INSERT) + public AjaxResult addRule(@RequestBody @Validated ElectricityTypeSettingAddVO request) { + rulesService.addRule(request); + return AjaxResult.success(); + } + + /** + * 淇敼璁¤垂绛栫暐 + */ + @PostMapping("/updateRule") + @ApiOperation(value = "淇敼璁¤垂绛栫暐") + @Log(title = "淇敼璁¤垂绛栫暐", businessType = BusinessType.UPDATE) + public AjaxResult updateRule(@RequestBody @Validated ElectricityTypeSettingUpdateVO request) { + rulesService.updateRule(request); + return AjaxResult.success(); + } + + /** + * 鍒犻櫎璁¤垂绛栫暐 + */ + @DeleteMapping("/delRule/{id}") + @ApiOperation(value = "鍒犻櫎璁¤垂绛栫暐") + @Log(title = "鍒犻櫎璁¤垂绛栫暐", businessType = BusinessType.DELETE) + public AjaxResult delRule(@ApiParam("璁¤垂瑙勫垯id") @NotNull(message = "id涓嶈兘涓虹┖!") @PathVariable("id") String id) { + rulesService.delRule(id); + return AjaxResult.success(); + } +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityDataItemListDTO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityDataItemListDTO.java new file mode 100644 index 0000000..721001a --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityDataItemListDTO.java @@ -0,0 +1,68 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.dto; + +import com.dingzhuo.energy.common.utils.time.TimeType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + + +/** + * 灏栧嘲骞宠胺鏁版嵁鍒楄〃瀹炰綋绫� electricityDataItem + * + * @author ruoyi + * @date 2024-06-19 + */ +@Data +@ApiModel(value = "灏栧嘲骞宠胺鏁版嵁鍒楄〃瀹炰綋绫�") +public class ElectricityDataItemListDTO { + + /** + * 妯″瀷缂栧彿 + */ + @ApiModelProperty(value = "妯″瀷缂栧彿") + @NotBlank(message = "妯″瀷缂栧彿涓嶈兘涓虹┖!") + private String modelCode; + + /** + * 鑺傜偣id + */ + @ApiModelProperty(value = "鑺傜偣id") + @NotBlank(message = "鑺傜偣id涓嶈兘涓虹┖!") + private String nodeId; + + /** + * 鏃堕棿绫诲瀷 + */ + @ApiModelProperty(value = "鏃堕棿绫诲瀷") + @NotBlank(message = "鏃堕棿绫诲瀷涓嶈兘涓虹┖!") + private String timeType; + + /** + * 鏌ヨ鏃堕棿 + */ + @ApiModelProperty(value = "鏌ヨ鏃堕棿") + @NotNull(message = "鏌ヨ鏃堕棿涓嶈兘涓虹┖!") + @DateTimeFormat(pattern = "yyyy-MM") + private Date queryTime; + + + public String getTimeType() { + + switch (TimeType.valueOf(this.timeType)) { + case HOUR: + case DAY: + return TimeType.HOUR.name(); + case MONTH: + return TimeType.DAY.name(); + case YEAR: + return TimeType.MONTH.name(); + default: + return TimeType.DAY.name(); + } + } +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingAddVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingAddVO.java new file mode 100644 index 0000000..353000f --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingAddVO.java @@ -0,0 +1,86 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 璁¤垂瑙勫垯瀵硅薄 rules + * + * @author ruoyi + * @date 2024-06-19 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯鏂板璇锋眰瀹炰綋绫�") +public class ElectricityTypeSettingAddVO { + + /** + * 瑙勫垯鍚嶇О + */ + @ApiModelProperty(value = "瑙勫垯鍚嶇О") + @NotBlank(message = "瑙勫垯鍚嶇О涓嶈兘涓虹┖!") + private String name; + + /** + * 鐢熸晥鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "鐢熸晥鏃堕棿") + @NotNull(message = "鐢熸晥鏃堕棿涓嶈兘涓虹┖!") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date effectiveDate; + + /** + * 灏栨椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "灏栨椂娈电數璐逛环鏍�") + @NotNull(message = "灏栨椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "灏栨椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal sharpFee; + + /** + * 宄版椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "宄版椂娈电數璐逛环鏍�") + @NotNull(message = "宄版椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "宄版椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal peakFee; + + /** + * 骞虫椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "骞虫椂娈电數璐逛环鏍�") + @NotNull(message = "骞虫椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "骞虫椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal flatFee; + + /** + * 璋锋椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "璋锋椂娈电數璐逛环鏍�") + @NotNull(message = "璋锋椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "璋锋椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal valleyFee; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** + * 璁¤垂绛栫暐璇︽儏鍒楄〃 + */ + @ApiModelProperty(value = "璁¤垂绛栫暐璇︽儏鍒楄〃") + @NotNull(message = "灏栧嘲骞宠胺鏃堕棿娈典笉鑳戒负绌�!") + private List<ElectricityTypeSettingItemAddVO> ruleDetailList; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemAddVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemAddVO.java new file mode 100644 index 0000000..3858b6b --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemAddVO.java @@ -0,0 +1,42 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * 浠锋牸瀵硅薄 rule_details + * + * @author ruoyi + * @date 2024-06-14 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯璐圭敤绫诲瀷鍙婃椂闂存鏂板璇锋眰绫�") +public class ElectricityTypeSettingItemAddVO { + + /** + * 璐圭敤绫诲瀷鏃堕棿娈� + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷鏃堕棿娈�") + @NotNull(message = "璐圭敤绫诲瀷鏃堕棿娈典笉鑳戒负绌�!") + @Min(value = 1, message = "璐圭敤绫诲瀷鏃堕棿娈垫渶灏忓�间负1") + @Max(value = 48, message = "璐圭敤绫诲瀷鏃堕棿娈垫渶澶у�间负48") + private Integer timePeriod; + + /** + * 鏃堕棿娈电被鍨� 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "鏃堕棿娈电被鍨�") + @NotNull(message = "鏃堕棿娈电被鍨嬩笉鑳戒负绌�!") + private String type; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemUpdateVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemUpdateVO.java new file mode 100644 index 0000000..3ffdb5a --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingItemUpdateVO.java @@ -0,0 +1,38 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 浠锋牸瀵硅薄 rule_details + * + * @author ruoyi + * @date 2024-06-14 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯璐圭敤绫诲瀷鍙婃椂闂存鏇存柊璇锋眰绫�") +public class ElectricityTypeSettingItemUpdateVO { + + /** + * 璁¤垂瑙勫垯瀛愯〃id + */ + @ApiModelProperty(value = "璁¤垂瑙勫垯瀛愯〃id") + @NotNull(message = "璁¤垂瑙勫垯瀛愯〃id涓嶈兘涓虹┖!") + private String id; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷") + @NotNull(message = "璐圭敤绫诲瀷涓嶈兘涓虹┖!") + private String type; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingUpdateVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingUpdateVO.java new file mode 100644 index 0000000..c134da4 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/dto/ElectricityTypeSettingUpdateVO.java @@ -0,0 +1,93 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 璁¤垂瑙勫垯瀵硅薄 rules + * + * @author ruoyi + * @date 2024-06-19 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯鏇存柊璇锋眰瀹炰綋绫�") +public class ElectricityTypeSettingUpdateVO { + + /** + * 涓婚敭 + */ + @NotNull(message = "id涓嶈兘涓虹┖!") + @ApiModelProperty(value = "璁¤垂瑙勫垯id") + private String id; + + /** + * 瑙勫垯鍚嶇О + */ + @NotBlank(message = "瑙勫垯鍚嶇О涓嶈兘涓虹┖!") + @ApiModelProperty(value = "瑙勫垯鍚嶇О") + private String name; + + /** + * 鐢熸晥鏃堕棿 + */ + @ApiModelProperty(value = "鐢熸晥鏃堕棿") + @NotBlank(message = "鐢熸晥鏃堕棿涓嶈兘涓虹┖!") + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date effectiveDate; + + /** + * 灏栨椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "灏栨椂娈电數璐逛环鏍�") + @NotNull(message = "灏栨椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "灏栨椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal sharpFee; + + /** + * 宄版椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "宄版椂娈电數璐逛环鏍�") + @NotNull(message = "宄版椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "宄版椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal peakFee; + + /** + * 骞虫椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "骞虫椂娈电數璐逛环鏍�") + @NotNull(message = "骞虫椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "骞虫椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal flatFee; + + /** + * 璋锋椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "璋锋椂娈电數璐逛环鏍�") + @NotNull(message = "璋锋椂娈电數璐逛环鏍间笉鑳戒负绌�!") + @DecimalMin(value = "0", message = "璋锋椂娈电數璐逛环鏍兼渶灏忎负0") + private BigDecimal valleyFee; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** + * 璁¤垂绛栫暐璇︽儏鍒楄〃 + */ + @ApiModelProperty(value = "璁¤垂绛栫暐璇︽儏鍒楄〃") + @NotNull(message = "灏栧嘲骞宠胺鏃堕棿娈典笉鑳戒负绌�!") + private List<ElectricityTypeSettingItemUpdateVO> ruleDetailList; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityDataItem.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityDataItem.java new file mode 100644 index 0000000..61a6bcb --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityDataItem.java @@ -0,0 +1,106 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.entity; + +import com.dingzhuo.energy.framework.aspectj.lang.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 灏栧嘲骞宠胺鏁版嵁琛� + * + * @author sys + * @date 2024-08-27 + */ +@Data +public class ElectricityDataItem { + private static final long serialVersionUID = 1L; + + /** + * 鐐逛綅id + */ + @Excel(name = "鐐逛綅id") + private String indexId; + + /** + * 鏃堕棿缂栧彿 + */ + @Excel(name = "鏃堕棿缂栧彿") + private String timeCode; + + /** + * 鏃堕棿绫诲瀷 + */ + @Excel(name = "鏃堕棿绫诲瀷") + private String timeType; + + /** + * 鐢ㄧ數绫诲瀷宄般�佸钩銆佽胺绛� + */ + @Excel(name = "鐢ㄧ數绫诲瀷宄般�佸钩銆佽胺绛�") + private String electricityType; + + /** + * 鎸囨爣缂栫爜锛屽啑浣欏瓧娈碉紝鍙互鐢� code 鏌ヨ + */ + @Excel(name = "鎸囨爣缂栫爜锛屽啑浣欏瓧娈碉紝鍙互鐢� code 鏌ヨ") + private String indexCode; + + /** + * 鏁版嵁鏃堕棿 + */ + @Excel(name = "鏁版嵁鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd") + private Date dataTime; + + /** + * 寮�濮嬫椂闂� + */ + @Excel(name = "寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd") + private Date beginTime; + + /** + * 缁撴潫鏃堕棿 + */ + @Excel(name = "缁撴潫鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd") + private Date endTime; + + /** + * 鐢ㄧ數閲� + */ + @Excel(name = "鐢ㄧ數閲�") + private BigDecimal electricity; + + /** + * 鐢佃垂 + */ + @Excel(name = "鐢佃垂") + private BigDecimal cost; + + /** + * 鍗曚环 + */ + @Excel(name = "鍗曚环") + private BigDecimal price; + + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 鏇存柊鏃堕棿 + */ + @ApiModelProperty(value = "鏇存柊鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSetting.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSetting.java new file mode 100644 index 0000000..760d29e --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSetting.java @@ -0,0 +1,72 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.entity; + +import com.dingzhuo.energy.framework.aspectj.lang.annotation.Excel; +import com.dingzhuo.energy.framework.web.domain.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 璁¤垂瑙勫垯瀵硅薄 rules + * + * @author ruoyi + * @date 2024-06-14 + */ +@Data +public class ElectricityTypeSetting extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * $column.columnComment + */ + private String id; + + /** + * 瑙勫垯鍚嶇О + */ + @Excel(name = "瑙勫垯鍚嶇О") + private String name; + + /** + * 鐢熸晥鏃堕棿 + */ + @Excel(name = "鐢熸晥鏃堕棿") + private Date effectiveDate; + + /** + * 灏栫數璐逛环鏍� + */ + @Excel(name = "灏栫數璐逛环鏍�") + private BigDecimal sharpFee; + + /** + * 宄扮數璐逛环鏍� + */ + @Excel(name = "宄扮數璐逛环鏍�") + private BigDecimal peakFee; + + /** + * 骞崇數璐逛环鏍� + */ + @Excel(name = "骞崇數璐逛环鏍�") + private BigDecimal flatFee; + + /** + * 璋风數璐逛环鏍� + */ + @Excel(name = "璋风數璐逛环鏍�") + private BigDecimal valleyFee; + + /** + * 缁勭粐鏋舵瀯id + */ + @Excel(name = "缁勭粐鏋舵瀯id") + private Long deptId; + + /** + * '0'鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� + */ + private String delFlag; + +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSettingItem.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSettingItem.java new file mode 100644 index 0000000..3a5da03 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/entity/ElectricityTypeSettingItem.java @@ -0,0 +1,51 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.entity; + +import com.dingzhuo.energy.framework.aspectj.lang.annotation.Excel; +import com.dingzhuo.energy.framework.web.domain.BaseEntity; +import lombok.Data; + +/** + * 浠锋牸瀵硅薄 rule_details + * + * @author ruoyi + * @date 2024-06-14 + */ +@Data +public class ElectricityTypeSettingItem extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * $column.columnComment + */ + private String id; + + /** + * 璁¤垂瑙勫垯id + */ + @Excel(name = "璁¤垂瑙勫垯id") + private String ruleId; + + /** + * 璐圭敤绫诲瀷鏃堕棿娈� + */ + @Excel(name = "璐圭敤绫诲瀷鏃堕棿娈�", readConverterExp = "1=0:00") + private Integer timePeriod; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @Excel(name = "鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺") + private String type; + + /** + * 缁勭粐鏋舵瀯id + */ + @Excel(name = "缁勭粐鏋舵瀯id") + private Long deptId; + + /** + * 鍒犻櫎鏍囪锛岄粯璁�0锛氭湭鍒犻櫎锛�2 鍒犻櫎 + */ + private String delFlag; + +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/enums/ElectricityTypeEnum.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/enums/ElectricityTypeEnum.java new file mode 100644 index 0000000..e1d90ca --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/enums/ElectricityTypeEnum.java @@ -0,0 +1,24 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum ElectricityTypeEnum { + SHARP("灏�"), + PEAK("宄�"), + FLAT("骞�"), + VALLEY("璋�"); + + private final String desc; + + public static String getNameByType(String type) { + for (ElectricityTypeEnum electricityType : ElectricityTypeEnum.values()) { + if (electricityType.name().equalsIgnoreCase(type)) { + return electricityType.name(); + } + } + throw new IllegalArgumentException("Invalid electricity type: " + type); + } +} \ No newline at end of file diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityPeriodFeeDetailVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityPeriodFeeDetailVO.java new file mode 100644 index 0000000..7695823 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityPeriodFeeDetailVO.java @@ -0,0 +1,54 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "璁¤垂瑙勫垯鍚勬椂娈电殑璐圭敤杩斿洖瀹炰綋") +public class ElectricityPeriodFeeDetailVO { + + /** + * 璐圭敤绫诲瀷鏃堕棿娈� + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷鏃堕棿娈�") + private Integer timePeriod; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺") + private Integer type; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷鎻忚堪") + private String typeDesc; + + /** + * 鐢佃垂浠锋牸 + */ + @ApiModelProperty(value = "鐢佃垂浠锋牸") + private BigDecimal electricityFee; + + /** + * 鏈嶅姟璐逛环鏍� + */ + @ApiModelProperty(value = "鏈嶅姟璐逛环鏍�") + private BigDecimal serviceFee; + + /** + * 鍋滆溅璐逛环鏍� + */ + @ApiModelProperty(value = "鍋滆溅璐逛环鏍�") + private BigDecimal parkingFee; + + /** + * 瓒呮椂鍗犵敤璐逛环鏍� + */ + @ApiModelProperty(value = "瓒呮椂鍗犵敤璐逛环鏍�") + private BigDecimal occupancyFee; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemQueryVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemQueryVO.java new file mode 100644 index 0000000..5d26193 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemQueryVO.java @@ -0,0 +1,151 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 璁¤垂瑙勫垯瀵硅薄 rules + * + * @author ruoyi + * @date 2024-06-19 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯璇︽儏鏌ヨ杩斿洖瀹炰綋绫�") +public class ElectricityTypeSettingItemQueryVO { + + /** + * 涓婚敭 + */ + @ApiModelProperty(value = "璁¤垂瑙勫垯id") + @JsonSerialize(using = ToStringSerializer.class) + private String id; + + /** + * 瑙勫垯鍚嶇О + */ + @ApiModelProperty(value = "瑙勫垯鍚嶇О") + private String name; + + /** + * 鐢熸晥鏃堕棿 + */ + @ApiModelProperty(value = "鐢熸晥鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date effectiveDate; + + /** + * 灏栨椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "灏栨椂娈电數璐逛环鏍�") + private BigDecimal sharpFee; + + /** + * 宄版椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "宄版椂娈电數璐逛环鏍�") + private BigDecimal peakFee; + + /** + * 骞虫椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "骞虫椂娈电數璐逛环鏍�") + private BigDecimal flatFee; + + /** + * 璋锋椂娈电數璐逛环鏍� + */ + @ApiModelProperty(value = "璋锋椂娈电數璐逛环鏍�") + private BigDecimal valleyFee; + + /** + * 灏栨椂娈垫湇鍔¤垂浠锋牸 + */ + @ApiModelProperty(value = "灏栨椂娈垫湇鍔¤垂浠锋牸") + private BigDecimal sharpServiceFee; + + /** + * 宄版椂娈垫湇鍔¤垂浠锋牸 + */ + @ApiModelProperty(value = "宄版椂娈垫湇鍔¤垂浠锋牸") + private BigDecimal peakServiceFee; + + /** + * 骞虫椂娈垫湇鍔¤垂浠锋牸 + */ + @ApiModelProperty(value = "骞虫椂娈垫湇鍔¤垂浠锋牸") + private BigDecimal flatServiceFee; + + /** + * 璋锋椂娈垫湇鍔¤垂浠锋牸 + */ + @ApiModelProperty(value = "璋锋椂娈垫湇鍔¤垂浠锋牸") + private BigDecimal valleyServiceFee; + + /** + * 灏栨椂娈靛仠杞﹁垂浠锋牸 + */ + @ApiModelProperty(value = "灏栨椂娈靛仠杞﹁垂浠锋牸") + private BigDecimal sharpParkingFee; + + /** + * 宄版椂娈靛仠杞﹁垂浠锋牸 + */ + @ApiModelProperty(value = "宄版椂娈靛仠杞﹁垂浠锋牸") + private BigDecimal peakParkingFee; + + /** + * 骞虫椂娈靛仠杞﹁垂浠锋牸 + */ + @ApiModelProperty(value = "骞虫椂娈靛仠杞﹁垂浠锋牸") + private BigDecimal flatParkingFee; + + /** + * 璋锋椂娈靛仠杞﹁垂浠锋牸 + */ + @ApiModelProperty(value = "璋锋椂娈靛仠杞﹁垂浠锋牸") + private BigDecimal valleyParkingFee; + + /** + * 灏栨椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸 + */ + @ApiModelProperty(value = "灏栨椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸") + private BigDecimal sharpOccupancyFee; + + /** + * 宄版椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸 + */ + @ApiModelProperty(value = "宄版椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸") + private BigDecimal peakOccupancyFee; + + /** + * 骞虫椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸 + */ + @ApiModelProperty(value = "骞虫椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸") + private BigDecimal flatOccupancyFee; + + /** + * 璋锋椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸 + */ + @ApiModelProperty(value = "璋锋椂娈佃秴鏃跺崰鐢ㄨ垂浠锋牸") + private BigDecimal valleyOccupancyFee; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** + * 璁¤垂绛栫暐璇︽儏鍒楄〃 + */ + @ApiModelProperty(value = "璁¤垂绛栫暐鏃堕棿娈佃鎯呭垪琛�") + private List<ElectricityTypeSettingItemVO> ruleDetailList; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemVO.java new file mode 100644 index 0000000..04df5a2 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingItemVO.java @@ -0,0 +1,59 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 浠锋牸瀵硅薄 rule_details + * + * @author ruoyi + * @date 2024-06-14 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯璇︽儏鏌ヨ杩斿洖鏃堕棿娈靛疄浣撶被") +public class ElectricityTypeSettingItemVO { + + /** + * 涓婚敭 + */ + @ApiModelProperty(value = "璁¤垂瑙勫垯瀛愯〃id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 璁¤垂瑙勫垯id + */ + @ApiModelProperty(value = "璁¤垂瑙勫垯id") + @JsonSerialize(using = ToStringSerializer.class) + private Long ruleId; + + /** + * 璐圭敤绫诲瀷鏃堕棿娈� + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷鏃堕棿娈�") + private Integer timePeriod; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺") + private String type; + + /** + * 鐢佃垂绫诲瀷 0:灏� 1:宄� 2:骞� 3:璋� 4:娣辫胺 + */ + @ApiModelProperty(value = "璐圭敤绫诲瀷鎻忚堪") + private String typeDesc; + + /** + * 缁勭粐鏋舵瀯id + */ + @ApiModelProperty(value = "缁勭粐鏋舵瀯id") + @JsonSerialize(using = ToStringSerializer.class) + private Long deptId; + +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingPageListVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingPageListVO.java new file mode 100644 index 0000000..066d585 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/ElectricityTypeSettingPageListVO.java @@ -0,0 +1,66 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 璁¤垂瑙勫垯瀵硅薄 rules + * + * @author ruoyi + * @date 2024-06-19 + */ +@Data +@ApiModel(value = "璁¤垂瑙勫垯鍒嗛〉鏌ヨ杩斿洖瀹炰綋绫�") +public class ElectricityTypeSettingPageListVO { + + /** + * 涓婚敭 + */ + @ApiModelProperty(value = "璁¤垂瑙勫垯id") + @JsonSerialize(using = ToStringSerializer.class) + private String id; + + /** + * 瑙勫垯鍚嶇О + */ + @ApiModelProperty(value = "瑙勫垯鍚嶇О") + private String name; + + /** + * 鏄惁鐢熸晥 + */ + @ApiModelProperty(value = "鏄惁鐢熸晥") + private boolean isEffective; + + /** + * 鐢熸晥鏃堕棿 + */ + @ApiModelProperty(value = "鐢熸晥鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date effectiveDate; + + /** + * 鍒涘缓鑰� + */ + @ApiModelProperty(value = "鍒涘缓鑰�") + private String createBy; + + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/PeakAndValleyReportVO.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/PeakAndValleyReportVO.java new file mode 100644 index 0000000..527d55f --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/domain/vo/PeakAndValleyReportVO.java @@ -0,0 +1,89 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 灏栧嘲骞宠胺鎶ヨ〃 vo + */ +@Data +@NoArgsConstructor +@ApiModel(value = "灏栧嘲骞宠胺鎶ヨ〃 vo", description = "灏栧嘲骞宠胺鎶ヨ〃 vo") +public class PeakAndValleyReportVO { + + /** + * 鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "鏃堕棿") + private Date time; + + /** + * 灏栬垂鐢� + */ + @ApiModelProperty(value = "灏栬垂鐢�") + private BigDecimal sharpFee; + + /** + * 灏栫數閲� + */ + @ApiModelProperty(value = "灏栫數閲�") + private BigDecimal sharpPower; + + /** + * 宄拌垂鐢� + */ + @ApiModelProperty(value = "宄拌垂鐢�") + private BigDecimal peakFee; + + /** + * 宄扮數閲� + */ + @ApiModelProperty(value = "宄扮數閲�") + private BigDecimal peakPower; + + /** + * 骞宠垂鐢� + */ + @ApiModelProperty(value = "骞宠垂鐢�") + private BigDecimal flatFee; + + /** + * 骞崇數閲� + */ + @ApiModelProperty(value = "骞崇數閲�") + private BigDecimal flatPower; + + /** + * 璋疯垂鐢� + */ + @ApiModelProperty(value = "璋疯垂鐢�") + private BigDecimal valleyFee; + + /** + * 璋风數閲� + */ + @ApiModelProperty(value = "璋风數閲�") + private BigDecimal valleyPower; + + + public PeakAndValleyReportVO(Date time, BigDecimal sharpFee, BigDecimal sharpPower, BigDecimal peakFee, + BigDecimal peakPower, BigDecimal flatFee, BigDecimal flatPower, BigDecimal valleyFee, + BigDecimal valleyPower) { + this.time = time; + this.sharpFee = sharpFee; + this.sharpPower = sharpPower; + this.peakFee = peakFee; + this.peakPower = peakPower; + this.flatFee = flatFee; + this.flatPower = flatPower; + this.valleyFee = valleyFee; + this.valleyPower = valleyPower; + } +} \ No newline at end of file diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityDataItemMapper.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityDataItemMapper.java new file mode 100644 index 0000000..2ad0763 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityDataItemMapper.java @@ -0,0 +1,30 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.mapper; + + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityDataItem; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Set; + +/** + * 灏栧嘲骞宠胺鏁版嵁瀵硅薄 Mapper鎺ュ彛 + * + * @author sys + * @date 2024-08-27 + */ +public interface ElectricityDataItemMapper { + + /** + * 鏌ヨ灏栧嘲骞宠胺缁熻鏁版嵁 + * + * @param indexIdSet 鐐逛綅id闆嗗悎 + * @param startTime 寮�濮嬫椂闂� + * @param endTime 鎴鏃堕棿 + * @param timeType 鏃堕棿绫诲瀷 + * @return 缁撴灉 + */ + List<ElectricityDataItem> getDataStatistics(@Param("indexIdSet") Set<String> indexIdSet, @Param("startTime") Date startTime, + @Param("endTime") Date endTime, @Param("timeType") String timeType); +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingItemMapper.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingItemMapper.java new file mode 100644 index 0000000..ec6f0bd --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingItemMapper.java @@ -0,0 +1,45 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.mapper; + + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSettingItem; + +import java.util.List; + +/** + * 浠锋牸Mapper鎺ュ彛 + * + * @author ruoyi + * @date 2024-06-14 + */ +public interface ElectricityTypeSettingItemMapper { + + /** + * 鏍规嵁瑙勫垯id鏌ヨ瑙勫垯璇︽儏 + * + * @param id 瑙勫垯id + * @return 缁撴灉 + */ + List<ElectricityTypeSettingItem> selectListByRuleId(String id); + + /** + * 淇敼 + * + * @param ruleDetails 瑙勫垯璇︽儏 + */ + int updateRuleDetails(ElectricityTypeSettingItem ruleDetails); + + /** + * 鏂板瑙勫垯鏄庣粏 + * + * @param ruleDetails 瑙勫垯鏄庣粏 + * @return 缁撴灉 + */ + int insertRuleDetails(ElectricityTypeSettingItem ruleDetails); + + /** + * 鏍规嵁瑙勫垯id鍒犻櫎瑙勫垯鏄庣粏 + * + * @param ruleId 瑙勫垯id + */ + int deleteRulesByRuleId(String ruleId); +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingMapper.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingMapper.java new file mode 100644 index 0000000..a0f4724 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/mapper/ElectricityTypeSettingMapper.java @@ -0,0 +1,52 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.mapper; + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSetting; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingPageListVO; + +import java.util.List; + +/** + * 璁¤垂瑙勫垯Mapper鎺ュ彛 + * + * @author ruoyi + * @date 2024-06-14 + */ +public interface ElectricityTypeSettingMapper { + + /** + * 鏌ヨ鍒楄〃 + */ + List<ElectricityTypeSettingPageListVO> selectList(String name); + + /** + * 鏍规嵁id鏌ヨ璇︽儏 + * + * @param id id + * @return 缁撴瀯 + */ + ElectricityTypeSetting selectById(String id); + + /** + * 鏇存柊 + * + * @param rules 瑙勫垯淇℃伅 + * @return 缁撴灉 + */ + int updateRules(ElectricityTypeSetting rules); + + /** + * 鏂板瑙勫垯 + * + * @param rules 瑙勫垯 + * @return 缁撴灉 + */ + int insertRules(ElectricityTypeSetting rules); + + /** + * 鍒犻櫎璁¤垂瑙勫垯 + * + * @param id id + * @return 缁撴灉 + */ + int deleteRulesById(String id); +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityDataItemService.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityDataItemService.java new file mode 100644 index 0000000..3b0744d --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityDataItemService.java @@ -0,0 +1,24 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.service; + + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityDataItemListDTO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.PeakAndValleyReportVO; + +import java.util.List; + +/** + * 灏栧嘲骞宠胺鏁版嵁Service鎺ュ彛 + * + * @author sys + * @date 2024-08-27 + */ +public interface IElectricityDataItemService { + + /** + * 鏌ヨ缁熻鏁版嵁 + * + * @param dto 璇锋眰鍙傛暟 + * @return 缁撴灉 + */ + List<PeakAndValleyReportVO> getDataStatistics(ElectricityDataItemListDTO dto); +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityTypeSettingService.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityTypeSettingService.java new file mode 100644 index 0000000..30a3158 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/IElectricityTypeSettingService.java @@ -0,0 +1,43 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.service; + + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingAddVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingUpdateVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingItemQueryVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingPageListVO; + +import java.util.List; + +/** + * 璁¤垂瑙勫垯Service鎺ュ彛 + * + * @author ruoyi + * @date 2024-06-14 + */ +public interface IElectricityTypeSettingService { + + /** + * 鏌ヨ璁¤垂瑙勫垯鍒楄〃 + */ + List<ElectricityTypeSettingPageListVO> selectPageList(String name); + + /** + * 鑾峰彇璁¤垂瑙勫垯璇︽儏 + */ + ElectricityTypeSettingItemQueryVO getRuleDetail(String id); + + /** + * 淇敼璁¤垂绛栫暐 + */ + void updateRule(ElectricityTypeSettingUpdateVO request); + + /** + * 鏂板璁¤垂绛栫暐 + */ + void addRule(ElectricityTypeSettingAddVO request); + + /** + * 鍒犻櫎璁¤垂绛栫暐 + */ + void delRule(String id); +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityDataItemServiceImpl.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityDataItemServiceImpl.java new file mode 100644 index 0000000..a6918dc --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityDataItemServiceImpl.java @@ -0,0 +1,114 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.service.impl; + + +import cn.hutool.core.date.DateUtil; +import com.dingzhuo.energy.common.utils.time.TimeType; +import com.dingzhuo.energy.data.model.domain.vo.ModelNodeIndexInfor; +import com.dingzhuo.energy.data.model.mapper.ModelNodeMapper; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityDataItemListDTO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityDataItem; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.enums.ElectricityTypeEnum; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.PeakAndValleyReportVO; +import com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityDataItemMapper; +import com.dingzhuo.energy.project.electricityTypeSetting.service.IElectricityDataItemService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 灏栧嘲骞宠胺鏁版嵁Service涓氬姟灞傚鐞� + * + * @author sys + * @date 2024-08-27 + */ +@Service +public class ElectricityDataItemServiceImpl implements IElectricityDataItemService { + @Resource + private ModelNodeMapper modelNodeMapper; + @Resource + private ElectricityDataItemMapper electricityDataItemMapper; + + + /** + * 鏌ヨ缁熻鏁版嵁 + * + * @param dto 璇锋眰鍙傛暟 + * @return 缁撴灉 + */ + @Override + public List<PeakAndValleyReportVO> getDataStatistics(ElectricityDataItemListDTO dto) { + List<PeakAndValleyReportVO> reportVOList = new ArrayList<>(); + // 鏌ヨ鏃堕棿鑼冨洿 + Date startTime = DateUtil.beginOfMonth(dto.getQueryTime()); + Date endTime = DateUtil.endOfMonth(startTime); + String timeType = dto.getTimeType(); + + Map<String, List<ElectricityDataItem>> electricityDataMap = new HashMap<>(); + // 鏌ヨ鐐逛綅淇℃伅 + List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); + if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); + List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, timeType); + + electricityDataMap = dataItemList.stream() + .collect(Collectors.groupingBy(li -> DateUtil.formatDateTime(li.getDataTime()))); + } + while (!startTime.after(endTime)) { + String mapKey = DateUtil.formatDateTime(startTime); + List<ElectricityDataItem> dataItemList = electricityDataMap.get(mapKey); + + BigDecimal sharpFee = BigDecimal.ZERO; + BigDecimal sharpPower = BigDecimal.ZERO; + BigDecimal peakFee = BigDecimal.ZERO; + BigDecimal peakPower = BigDecimal.ZERO; + BigDecimal flatFee = BigDecimal.ZERO; + BigDecimal flatPower = BigDecimal.ZERO; + BigDecimal valleyFee = BigDecimal.ZERO; + BigDecimal valleyPower = BigDecimal.ZERO; + + if (CollectionUtils.isNotEmpty(dataItemList)) { + for (ElectricityDataItem electricityDataItem : dataItemList) { + String electricityType = electricityDataItem.getElectricityType(); + + if (ElectricityTypeEnum.SHARP.name().equals(electricityType)) { + sharpFee = sharpFee.add(electricityDataItem.getCost()); + sharpPower = sharpPower.add(electricityDataItem.getElectricity()); + } else if (ElectricityTypeEnum.PEAK.name().equals(electricityType)) { + peakFee = peakFee.add(electricityDataItem.getCost()); + peakPower = peakPower.add(electricityDataItem.getElectricity()); + } else if (ElectricityTypeEnum.FLAT.name().equals(electricityType)) { + flatFee = flatFee.add(electricityDataItem.getCost()); + flatPower = flatPower.add(electricityDataItem.getElectricity()); + } else { + valleyFee = valleyFee.add(electricityDataItem.getCost()); + valleyPower = valleyPower.add(electricityDataItem.getElectricity()); + } + } + } + PeakAndValleyReportVO peakAndValleyReportVO = new PeakAndValleyReportVO(startTime, sharpFee, sharpPower, + peakFee, peakPower, flatFee, flatPower, valleyFee, valleyPower); + + reportVOList.add(peakAndValleyReportVO); + switch (TimeType.valueOf(timeType)) { + case HOUR: + startTime = DateUtil.offsetHour(startTime, 1); + break; + case DAY: + startTime = DateUtil.offsetDay(startTime, 1); + break; + case MONTH: + startTime = DateUtil.offsetMonth(startTime, 1); + break; + default: + startTime = DateUtil.offsetMonth(startTime, 12); + break; + } + } + + return reportVOList; + } +} diff --git a/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityTypeSettingServiceImpl.java b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityTypeSettingServiceImpl.java new file mode 100644 index 0000000..3558808 --- /dev/null +++ b/energy_management_server/src/main/java/com/dingzhuo/energy/project/electricityTypeSetting/service/impl/ElectricityTypeSettingServiceImpl.java @@ -0,0 +1,186 @@ +package com.dingzhuo.energy.project.electricityTypeSetting.service.impl; + +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingAddVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingItemAddVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingItemUpdateVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.dto.ElectricityTypeSettingUpdateVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSetting; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSettingItem; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.enums.ElectricityTypeEnum; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingItemQueryVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingItemVO; +import com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingPageListVO; +import com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityTypeSettingItemMapper; +import com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityTypeSettingMapper; +import com.dingzhuo.energy.project.electricityTypeSetting.service.IElectricityTypeSettingService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * 璁¤垂瑙勫垯Service涓氬姟灞傚鐞� + * + * @author ruoyi + * @date 2024-06-14 + */ +@Service +public class ElectricityTypeSettingServiceImpl implements IElectricityTypeSettingService { + + @Resource + private ElectricityTypeSettingMapper rulesMapper; + @Resource + private ElectricityTypeSettingItemMapper ruleDetailsMapper; + + + /** + * 鏌ヨ璁¤垂瑙勫垯鍒楄〃 + */ + @Override + public List<ElectricityTypeSettingPageListVO> selectPageList(String name) { + List<ElectricityTypeSettingPageListVO> rulesPageListVOList = rulesMapper.selectList(name); + if (CollectionUtils.isEmpty(rulesPageListVOList)) { + return rulesPageListVOList; + } + Date maxEffectiveDate = new Date(); + Date date = new Date(); + + for (ElectricityTypeSettingPageListVO vo : rulesPageListVOList) { + Date effectiveDate = vo.getEffectiveDate(); + // 鍒ゆ柇骞惰缃� effective 灞炴�� + if (effectiveDate.before(date) && effectiveDate.after(maxEffectiveDate)) { + maxEffectiveDate = effectiveDate; + vo.setEffective(true); + } + } + return rulesPageListVOList; + } + + /** + * 鑾峰彇璁¤垂瑙勫垯璇︽儏 + */ + @Override + public ElectricityTypeSettingItemQueryVO getRuleDetail(String id) { + ElectricityTypeSettingItemQueryVO rulesDetailQueryResponse = new ElectricityTypeSettingItemQueryVO(); + + ElectricityTypeSetting rules = rulesMapper.selectById(id); + if (ObjectUtils.isEmpty(rules)) { + return rulesDetailQueryResponse; + } + BeanUtils.copyProperties(rules, rulesDetailQueryResponse); + + List<ElectricityTypeSettingItem> detailsList = ruleDetailsMapper.selectListByRuleId(id); + if (ObjectUtils.isNotEmpty(detailsList)) { + List<ElectricityTypeSettingItemVO> ruleDetailList = new ArrayList<>(); + for (ElectricityTypeSettingItem ruleDetails : detailsList) { + ElectricityTypeSettingItemVO ruleDetailsResponse = new ElectricityTypeSettingItemVO(); + BeanUtils.copyProperties(ruleDetails, ruleDetailsResponse); + ruleDetailsResponse.setTypeDesc(ElectricityTypeEnum.getNameByType(ruleDetails.getType())); + ruleDetailList.add(ruleDetailsResponse); + } + rulesDetailQueryResponse.setRuleDetailList(ruleDetailList); + } + return rulesDetailQueryResponse; + } + + /** + * 淇敼璁¤垂绛栫暐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateRule(ElectricityTypeSettingUpdateVO request) { + ElectricityTypeSetting rules = rulesMapper.selectById(request.getId()); + if (ObjectUtils.isEmpty(rules)) { + throw new RuntimeException("璁¤垂瑙勫垯涓嶅瓨鍦�"); + } + + // 鍒ゆ柇褰撳墠鐢熸晥鏃堕棿涓嶈兘灏忎簬褰撳墠鏃ユ湡 + Date now = new Date(); + Date inputDate = request.getEffectiveDate(); + if (inputDate.before(now) || inputDate.equals(now)) { + throw new RuntimeException("浼犲叆鏃堕棿鏃╀簬鎴栫瓑浜庡綋鍓嶆椂闂�: " + inputDate); + } + + List<ElectricityTypeSettingItemUpdateVO> ruleDetailList = request.getRuleDetailList(); + + if (ruleDetailList.size() != 48) { + throw new RuntimeException("鏀惰垂鏃堕棿娈靛繀椤绘槸48鏉�"); + } + + BeanUtils.copyProperties(request, rules); + rulesMapper.updateRules(rules); + + for (ElectricityTypeSettingItemUpdateVO ruleDetailsRequest : ruleDetailList) { + ElectricityTypeSettingItem ruleDetails = new ElectricityTypeSettingItem(); + + ruleDetails.setId(ruleDetailsRequest.getId()); + ruleDetails.setType(ruleDetailsRequest.getType()); + if (ObjectUtils.isNotEmpty(ruleDetailsRequest.getRemark())) { + ruleDetails.setRemark(ruleDetailsRequest.getRemark()); + } + ruleDetailsMapper.updateRuleDetails(ruleDetails); + } + } + + /** + * 鏂板璁¤垂绛栫暐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void addRule(ElectricityTypeSettingAddVO request) { + Date effectiveDate = request.getEffectiveDate(); + Date now = new Date(); + if (effectiveDate.before(now) || effectiveDate.equals(now)) { + throw new RuntimeException("浼犲叆鏃堕棿鏃╀簬鎴栫瓑浜庡綋鍓嶆椂闂�"); + } + + List<ElectricityTypeSettingItemAddVO> ruleDetailList = request.getRuleDetailList(); + + if (ruleDetailList.size() != 48) { + throw new RuntimeException("鏀惰垂鏃堕棿娈靛繀椤绘槸48鏉�!"); + } + List<Integer> timePeriodList = ruleDetailList.stream().distinct().map(ElectricityTypeSettingItemAddVO::getTimePeriod).collect(Collectors.toList()); + if (timePeriodList.size() != ruleDetailList.size()) { + throw new RuntimeException("鏀惰垂鏃堕棿娈典笉鑳介噸澶�!"); + } + Date createTime = new Date(); + + ElectricityTypeSetting rules = new ElectricityTypeSetting(); + BeanUtils.copyProperties(request, rules); + rules.setId(UUID.randomUUID().toString()); + rules.setCreateTime(createTime); + rulesMapper.insertRules(rules); + + for (ElectricityTypeSettingItemAddVO ruleDetailsAddRequest : ruleDetailList) { + ElectricityTypeSettingItem ruleDetails = new ElectricityTypeSettingItem(); + ruleDetails.setRuleId(rules.getId()); + BeanUtils.copyProperties(ruleDetailsAddRequest, ruleDetails); + ruleDetails.setId(UUID.randomUUID().toString()); + ruleDetails.setCreateTime(createTime); + ruleDetailsMapper.insertRuleDetails(ruleDetails); + } + } + + /** + * 鍒犻櫎璁¤垂绛栫暐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delRule(String id) { + ElectricityTypeSetting rules = rulesMapper.selectById(id); + if (ObjectUtils.isEmpty(rules)) { + throw new RuntimeException("璁¤垂瑙勫垯涓嶅瓨鍦�"); + } + + rulesMapper.deleteRulesById(id); + ruleDetailsMapper.deleteRulesByRuleId(id); + } +} diff --git a/energy_management_server/src/main/resources/application.yml b/energy_management_server/src/main/resources/application.yml index 845816c..7906203 100644 --- a/energy_management_server/src/main/resources/application.yml +++ b/energy_management_server/src/main/resources/application.yml @@ -1,7 +1,7 @@ # 椤圭洰鐩稿叧閰嶇疆 ruoyi: # 鍚嶇О - name: 涓滀附鍖荤枟 + name: 鏅虹⒊鏈潵EMS # 鐗堟湰 version: 1.0.0 # 鐗堟潈骞翠唤 diff --git a/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityDataItemMapper.xml b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityDataItemMapper.xml new file mode 100644 index 0000000..0b5a2f3 --- /dev/null +++ b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityDataItemMapper.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityDataItemMapper"> + + + <select id="getDataStatistics" + resultType="com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityDataItem"> + SELECT + index_code indexCode, + time_code timeCode, + electricity_type electricityType, + data_time dataTime, + electricity, + "cost", + time_type timeType, + price, + remark + FROM + "electricity_data_item" + WHERE + index_id IN + <foreach collection="indexIdSet" item="indexId" open="(" separator="," close=")"> + #{indexId} + </foreach> + AND (data_time BETWEEN #{startTime} AND #{endTime}) + AND time_type = #{timeType} + </select> + +</mapper> \ No newline at end of file diff --git a/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingItemMapper.xml b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingItemMapper.xml new file mode 100644 index 0000000..1d17839 --- /dev/null +++ b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingItemMapper.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityTypeSettingItemMapper"> + + <sql id="selectRuleDetailsVo"> + select id, + rule_id, + start_time, + end_time, + type, + dept_id, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark + from electricity_type_setting_item + </sql> + + <select id="selectListByRuleId" + resultType="com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSettingItem"> + SELECT * + FROM electricity_type_setting_item + WHERE rule_id = #{id} + </select> + + <insert id="insertRuleDetails" parameterType="ElectricityTypeSettingItem"> + insert into electricity_type_setting_item + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null ">id,</if> + <if test="ruleId != null ">rule_id,</if> + <if test="type != null ">type,</if> + <if test="deptId != null ">dept_id,</if> + <if test="delFlag != null ">del_flag,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + <if test="createTime != null ">create_time,</if> + <if test="updateBy != null and updateBy != ''">update_by,</if> + <if test="updateTime != null ">update_time,</if> + <if test="remark != null and remark != ''">remark,</if> + <if test="timePeriod != null ">time_period,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null ">#{id},</if> + <if test="ruleId != null ">#{ruleId},</if> + <if test="type != null ">#{type},</if> + <if test="deptId != null ">#{deptId},</if> + <if test="delFlag != null ">#{delFlag},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + <if test="createTime != null ">#{createTime},</if> + <if test="updateBy != null and updateBy != ''">#{updateBy},</if> + <if test="updateTime != null ">#{updateTime},</if> + <if test="remark != null and remark != ''">#{remark},</if> + <if test="timePeriod != null ">#{timePeriod},</if> + </trim> + </insert> + + <update id="updateRuleDetails" parameterType="ElectricityTypeSettingItem"> + update electricity_type_setting_item + <trim prefix="SET" suffixOverrides=","> + <if test="ruleId != null ">rule_id = #{ruleId},</if> + <if test="type != null ">type = #{type},</if> + <if test="deptId != null ">dept_id = #{deptId},</if> + <if test="delFlag != null ">del_flag = #{delFlag},</if> + <if test="createBy != null and createBy != ''">create_by = #{createBy},</if> + <if test="createTime != null ">create_time = #{createTime},</if> + <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> + <if test="updateTime != null ">update_time = #{updateTime},</if> + <if test="remark != null and remark != ''">remark = #{remark},</if> + <if test="timePeriod != null ">time_period = #{timePeriod},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteRuleDetailsById"> + delete + from electricity_type_setting_item + where id = #{id} + </delete> + + <delete id="deleteRulesByRuleId"> + delete + from electricity_type_setting_item + where rule_id = #{ruleId} + </delete> +</mapper> \ No newline at end of file diff --git a/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingMapper.xml b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingMapper.xml new file mode 100644 index 0000000..2a59d5f --- /dev/null +++ b/energy_management_server/src/main/resources/mybatis/electricityTypeSetting/ElectricityTypeSettingMapper.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dingzhuo.energy.project.electricityTypeSetting.mapper.ElectricityTypeSettingMapper"> + + <select id="selectList" + resultType="com.dingzhuo.energy.project.electricityTypeSetting.domain.vo.ElectricityTypeSettingPageListVO"> + select + id, + name, + sharp_fee AS sharpFee, + peak_fee AS peakFee, + flat_fee AS flatFee, + valley_fee AS valleyFee, + create_by AS createBy, + create_time AS createTime, + effective_date AS effectiveDate, + remark + from electricity_type_setting + <where> + <if test="name != null and name != ''"> + and name like concat('%', #{name}, '%') + </if> + and del_flag = '0' + </where> + order by create_time desc + </select> + <select id="selectById" + resultType="com.dingzhuo.energy.project.electricityTypeSetting.domain.entity.ElectricityTypeSetting"> + select id, + name, + effective_date, + sharp_fee, + peak_fee, + flat_fee, + valley_fee, + effective_date, + create_by, + create_time, + update_by, + update_time, + remark + from electricity_type_setting + where id = #{id} + </select> + + <insert id="insertRules" parameterType="ElectricityTypeSetting"> + insert into electricity_type_setting + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null ">id,</if> + <if test="name != null and name != ''">name,</if> + <if test="sharpFee != null ">sharp_fee,</if> + <if test="peakFee != null ">peak_fee,</if> + <if test="flatFee != null ">flat_fee,</if> + <if test="valleyFee != null ">valley_fee,</if> + <if test="effectiveDate != null ">effective_date,</if> + <if test="deptId != null ">dept_id,</if> + <if test="delFlag != null ">del_flag,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + <if test="createTime != null ">create_time,</if> + <if test="updateBy != null and updateBy != ''">update_by,</if> + <if test="updateTime != null ">update_time,</if> + <if test="remark != null and remark != ''">remark,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null ">#{id},</if> + <if test="name != null and name != ''">#{name},</if> + <if test="sharpFee != null ">#{sharpFee},</if> + <if test="peakFee != null ">#{peakFee},</if> + <if test="flatFee != null ">#{flatFee},</if> + <if test="valleyFee != null ">#{valleyFee},</if> + <if test="effectiveDate != null ">#{effectiveDate},</if> + <if test="deptId != null ">#{deptId},</if> + <if test="delFlag != null ">#{delFlag},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + <if test="createTime != null ">#{createTime},</if> + <if test="updateBy != null and updateBy != ''">#{updateBy},</if> + <if test="updateTime != null ">#{updateTime},</if> + <if test="remark != null and remark != ''">#{remark},</if> + </trim> + </insert> + + <update id="updateRules" parameterType="ElectricityTypeSetting"> + update electricity_type_setting + <trim prefix="SET" suffixOverrides=","> + <if test="name != null and name != ''">name = #{name},</if> + <if test="sharpFee != null ">sharp_fee = #{sharpFee},</if> + <if test="peakFee != null ">peak_fee = #{peakFee},</if> + <if test="flatFee != null ">flat_fee = #{flatFee},</if> + <if test="valleyFee != null ">valley_fee = #{valleyFee},</if> + <if test="effectiveDate != null ">valley_fee = #{effectiveDate},</if> + <if test="createBy != null and createBy != ''">create_by = #{createBy},</if> + <if test="createTime != null ">create_time = #{createTime},</if> + <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> + <if test="updateTime != null ">update_time = #{updateTime},</if> + <if test="remark != null and remark != ''">remark = #{remark},</if> + </trim> + where id = #{id} + </update> + + <delete id="deleteRulesById"> + delete + from electricity_type_setting + where id = #{id} + </delete> + +</mapper> \ No newline at end of file diff --git a/energy_management_ui/src/api/energyPrice/price.js b/energy_management_ui/src/api/energyPrice/price.js new file mode 100644 index 0000000..25c1251 --- /dev/null +++ b/energy_management_ui/src/api/energyPrice/price.js @@ -0,0 +1,40 @@ +import request from "@/utils/request"; + +export default { + // 鏌ヨ鍙傛暟鍒楄〃 + pageRule(query) { + return request({ + url: "/rule/list", + method: "get", + params: query + }); + }, + addRule(query) { + return request({ + url: "/rule/addRule", + method: "post", + data: query + }); + }, + editRule(query) { + return request({ + url: "/rule/updateRule", + method: "post", + data: query + }); + }, + delRule(query) { + return request({ + url: "/rule/delRule/" + query.id, + method: "delete", + params: query + }); + }, + getRuleDetail(query) { + return request({ + url: "/rule/getRuleDetail", + method: "get", + params: query + }); + } +}; diff --git a/energy_management_ui/src/assets/home/homeiconD.png b/energy_management_ui/src/assets/home/homeiconD.png new file mode 100644 index 0000000..7cd6a20 --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconD.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeiconDQ.png b/energy_management_ui/src/assets/home/homeiconDQ.png new file mode 100644 index 0000000..b92ab7b --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconDQ.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeiconJ.png b/energy_management_ui/src/assets/home/homeiconJ.png new file mode 100644 index 0000000..76601fa --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconJ.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeiconT.png b/energy_management_ui/src/assets/home/homeiconT.png new file mode 100644 index 0000000..7f8ab87 --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconT.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeiconW.png b/energy_management_ui/src/assets/home/homeiconW.png new file mode 100644 index 0000000..96b723d --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconW.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeiconY.png b/energy_management_ui/src/assets/home/homeiconY.png new file mode 100644 index 0000000..ba6dc10 --- /dev/null +++ b/energy_management_ui/src/assets/home/homeiconY.png Binary files differ diff --git a/energy_management_ui/src/assets/home/homeicontitle.png b/energy_management_ui/src/assets/home/homeicontitle.png new file mode 100644 index 0000000..e882f61 --- /dev/null +++ b/energy_management_ui/src/assets/home/homeicontitle.png Binary files differ diff --git a/energy_management_ui/src/assets/icons/checkbox.png b/energy_management_ui/src/assets/icons/checkbox.png new file mode 100644 index 0000000..498f98e --- /dev/null +++ b/energy_management_ui/src/assets/icons/checkbox.png Binary files differ diff --git a/energy_management_ui/src/assets/icons/checked.png b/energy_management_ui/src/assets/icons/checked.png new file mode 100644 index 0000000..4624643 --- /dev/null +++ b/energy_management_ui/src/assets/icons/checked.png Binary files differ diff --git a/energy_management_ui/src/assets/image/bg.jpg b/energy_management_ui/src/assets/image/bg.jpg new file mode 100644 index 0000000..e95e661 --- /dev/null +++ b/energy_management_ui/src/assets/image/bg.jpg Binary files differ diff --git a/energy_management_ui/src/assets/image/breadcrumbBg.png b/energy_management_ui/src/assets/image/breadcrumbBg.png new file mode 100644 index 0000000..9438d9c --- /dev/null +++ b/energy_management_ui/src/assets/image/breadcrumbBg.png Binary files differ diff --git a/energy_management_ui/src/assets/image/isbreadcrumbBg.png b/energy_management_ui/src/assets/image/isbreadcrumbBg.png new file mode 100644 index 0000000..7d85284 --- /dev/null +++ b/energy_management_ui/src/assets/image/isbreadcrumbBg.png Binary files differ diff --git a/energy_management_ui/src/assets/image/navbar/Group.png b/energy_management_ui/src/assets/image/navbar/Group.png new file mode 100644 index 0000000..d307977 --- /dev/null +++ b/energy_management_ui/src/assets/image/navbar/Group.png Binary files differ diff --git a/energy_management_ui/src/assets/image/treeBg.png b/energy_management_ui/src/assets/image/treeBg.png new file mode 100644 index 0000000..ea4587e --- /dev/null +++ b/energy_management_ui/src/assets/image/treeBg.png Binary files differ diff --git a/energy_management_ui/src/layout/index.vue b/energy_management_ui/src/layout/index.vue index b9ad55e..9c16707 100644 --- a/energy_management_ui/src/layout/index.vue +++ b/energy_management_ui/src/layout/index.vue @@ -9,9 +9,25 @@ <div :class="{ hasTagsView: needTagsView }" class="main-container"> <div :class="{ 'fixed-header': fixedHeader }"> <navbar /> - <!-- <div style="height: 70px;background: #fff;"> - caidan-鑿滃崟 - </div> --> + <div class="tabs-container"> + <el-tabs + v-model="activePage" + type="card" + closable + @edit="handleTabsEdit" + > + <el-tab-pane + :id="page.fullPath" + :key="page.fullPath" + v-for="(page, index) in pageList" + :label="page.meta.title" + :name="page.fullPath" + :closable="!(page.meta.title == '棣栭〉')" + > + <!-- {{ page.content }} --> + </el-tab-pane> + </el-tabs> + </div> </div> <app-main /> </div> @@ -24,6 +40,7 @@ import ResizeMixin from "./mixin/ResizeHandler"; import { mapState } from "vuex"; +const indexKey = "/index"; export default { name: "Layout", components: { @@ -32,6 +49,14 @@ RightPanel, Sidebar }, + data() { + return { + pageList: [], + linkList: [], + activePage: "", + multipage: true + }; + }, mixins: [ResizeMixin], computed: { ...mapState({ @@ -39,7 +64,8 @@ device: state => state.app.device, showSettings: state => state.settings.showSettings, needTagsView: state => state.settings.tagsView, - fixedHeader: state => state.settings.fixedHeader + fixedHeader: state => state.settings.fixedHeader, + tagsView: state => state.tagsView }), classObj() { return { @@ -50,7 +76,117 @@ }; } }, + created() { + if (this.$route.path !== indexKey) { + this.addIndexToFirst(); + } + // 澶嶅埗涓�涓猺oute瀵硅薄鍑烘潵锛屼笉鑳藉奖鍝嶅師route + let currentRoute = Object.assign({}, this.$route); + currentRoute.meta = Object.assign({}, currentRoute.meta); + this.pageList.push(currentRoute); + this.linkList.push(currentRoute.fullPath); + this.activePage = currentRoute.fullPath; + console.log("pageList", this.pageList); + }, + watch: { + $route: function(newRoute) { + this.activePage = newRoute.fullPath; + if (!this.multipage) { + this.linkList = [newRoute.fullPath]; + this.pageList = [Object.assign({}, newRoute)]; + // update-begin-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� + } else if (indexKey == newRoute.fullPath) { + //棣栭〉鏃� 鍒ゆ柇鏄惁缂撳瓨 娌℃湁缂撳瓨 鍒锋柊涔� + if (newRoute.meta.keepAlive === false) { + this.routeReload(); + } + // update-end-author:taoyan date:20200211 for: TASK #3368 銆愯矾鐢辩紦瀛樸�戦椤电殑缂撳瓨璁剧疆鏈夐棶棰橈紝闇�瑕佹牴鎹悗鍙扮殑璺敱閰嶇疆鏉ュ疄鐜版槸鍚︾紦瀛� + } else if (this.linkList.indexOf(newRoute.fullPath) < 0) { + this.linkList.push(newRoute.fullPath); + this.pageList.push(Object.assign({}, newRoute)); + //// update-begin-author:sunjianlei date:20200103 for: 濡傛灉鏂板鐨勯〉闈㈤厤缃簡缂撳瓨璺敱锛岄偅涔堝氨寮哄埗鍒锋柊涓�閬� #842 + // if (newRoute.meta.keepAlive) { + // this.routeReload() + // } + //// update-end-author:sunjianlei date:20200103 for: 濡傛灉鏂板鐨勯〉闈㈤厤缃簡缂撳瓨璺敱锛岄偅涔堝氨寮哄埗鍒锋柊涓�閬� #842 + } else if (this.linkList.indexOf(newRoute.fullPath) >= 0) { + let oldIndex = this.linkList.indexOf(newRoute.fullPath); + let oldPositionRoute = this.pageList[oldIndex]; + this.pageList.splice( + oldIndex, + 1, + Object.assign({}, newRoute, { meta: oldPositionRoute.meta }) + ); + } + }, + activePage: function(key) { + let index = this.linkList.lastIndexOf(key); + let waitRouter = this.pageList[index]; + // 銆怲ESTA-523銆戜慨澶嶏細涓嶅厑璁搁噸澶嶈烦杞矾鐢卞紓甯� + if (waitRouter.fullPath !== this.$route.fullPath) { + this.$router.push(Object.assign({}, waitRouter)); + } + // this.changeTitle(waitRouter.meta.title); + } + }, methods: { + addIndexToFirst() { + this.pageList.splice(0, 0, { + name: "home", + path: indexKey, + fullPath: indexKey, + meta: { + icon: "dashboard", + title: "棣栭〉" + } + }); + this.linkList.splice(0, 0, indexKey); + }, + changePage(key) { + this.activePage = key; + }, + handleTabsEdit(key, action) { + console.log("handleTabsEdit", key, action); + this[action](key); + }, + remove(key) { + if (key == indexKey) { + this.$message({ + message: "棣栭〉涓嶈兘鍏抽棴!", + type: "warning" + }); + return; + } + if (this.pageList.length === 1) { + this.$message({ + message: "杩欐槸鏈�鍚庝竴椤碉紝涓嶈兘鍐嶅叧闂簡鍟�", + type: "warning" + }); + return; + } + let removeRoute = this.pageList.filter(item => item.fullPath == key); + this.pageList = this.pageList.filter(item => item.fullPath !== key); + let index = this.linkList.indexOf(key); + this.linkList = this.linkList.filter(item => item !== key); + index = index >= this.linkList.length ? this.linkList.length - 1 : index; + this.activePage = this.linkList[index]; + + //update-begin--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #842 + //鍏抽棴椤甸潰鍒欎粠缂撳瓨cache_included_routes涓垹闄よ矾鐢憋紝涓嬫鐐瑰嚮鑿滃崟浼氶噸鏂板姞杞介〉闈� + // let cacheRouterArray = Vue.ls.get(CACHE_INCLUDED_ROUTES) || []; + // if (removeRoute && removeRoute[0]) { + // let componentName = removeRoute[0].meta.componentName; + // if (cacheRouterArray.includes(componentName)) { + // cacheRouterArray.splice( + // cacheRouterArray.findIndex(item => item === componentName), + // 1 + // ); + // Vue.ls.set(CACHE_INCLUDED_ROUTES, cacheRouterArray); + // } + // this.emitPageClosed(removeRoute[0]); + // } + //update-end--Author:scott Date:20201015 for锛氳矾鐢辩紦瀛橀棶棰橈紝鍏抽棴浜唗ab椤垫椂鍐嶆墦寮�灏变笉鍒锋柊 #842 + }, handleClickOutside() { this.$store.dispatch("app/closeSideBar", { withoutAnimation: false }); } @@ -67,6 +203,7 @@ position: relative; height: 100%; width: 100%; + background: #001233; &.mobile.openSidebar { position: fixed; @@ -74,6 +211,37 @@ } } +.tabs-container { + // background: #fff; + background: #001233; + height: #{$tabBarHeight}; + ::v-deep { + .el-tabs__item { + height: #{$tabBarHeight}; + line-height: #{$tabBarHeight}; + background: url("../assets/image/breadcrumbBg.png") no-repeat; + background-size: 100% 100%; + border: none; + margin-right: 10px; + color: #95c1fd; + } + .is-active { + color: #fff; + background: url("../assets/image/isbreadcrumbBg.png") no-repeat; + background-size: 100% 100%; + } + .el-tabs__nav { + border: none !important; + } + .el-tabs__header { + margin: 0 !important; + } + .el-tabs--card > .el-tabs__header { + border-bottom: none; + } + } +} + .drawer-bg { background: #000; opacity: 0.3; diff --git a/energy_management_ui/src/views/electricityPrice/statistics/electricityIndexNew.vue b/energy_management_ui/src/views/electricityPrice/statistics/electricityIndexNew.vue new file mode 100644 index 0000000..075a6ea --- /dev/null +++ b/energy_management_ui/src/views/electricityPrice/statistics/electricityIndexNew.vue @@ -0,0 +1,181 @@ +<template> + <div class="app-container"> + <el-form + :model="queryParams" + ref="queryForm" + :inline="true" + label-width="68px" + > + <el-form-item label="缁熻鏃堕棿"> + <el-date-picker + clearable + size="small" + style="width: 100%" + v-model="queryParams.queryTime" + type="month" + :clearable="false" + value-format="yyyy-MM" + placeholder="閫夋嫨鏈堜唤" + > + </el-date-picker> + </el-form-item> + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > + <!--<el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport">瀵煎嚭</el-button>--> + </el-form-item> + </el-form> + <el-row :gutter="32"> + <el-col :xs="24" :sm="24" :lg="24"> + <el-table border style="width: 100%" :data="tabledata"> + <el-table-column + prop="time" + label="鏃ユ湡" + width="150" + ></el-table-column> + <el-table-column label="灏栨椂娈�"> + <el-table-column label="鐢甸噺" prop="sharpPower" /> + <el-table-column label="璐圭敤" prop="sharpFee" /> + </el-table-column> + <el-table-column label="宄版椂娈�"> + <el-table-column label="鐢甸噺" prop="peakPower" /> + <el-table-column label="璐圭敤" prop="peakFee" /> + </el-table-column> + <el-table-column label="骞虫椂娈�"> + <el-table-column label="鐢甸噺" prop="flatPower" /> + <el-table-column label="璐圭敤" prop="flatFee" /> + </el-table-column> + <el-table-column label="璋锋椂娈�"> + <el-table-column label="鐢甸噺" prop="valleyPower" /> + <el-table-column label="璐圭敤" prop="valleyFee" /> + </el-table-column> + </el-table> + </el-col> + </el-row> + <!-- <el-row :gutter="32"> + <el-col :xs="24" :sm="24" :lg="24" > + <div class="chart-wrapper" style="margin-top: 20px;"> + <pie-chart ref="pieChart" :chart-data="pieChartData"/> + </div> + </el-col> + </el-row> --> + </div> +</template> +<script> +import { getElectricityDataItemStatistics } from "@/api/electricityPrice/statistics"; +import pieChart from "./pieChart"; +export default { + components: { pieChart }, + data() { + return { + tablehead: [], + tabledata: [], + dateTypeOptions: [], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + timeType: "MONTH", + queryTime: "", + nodeId: undefined, + modelCode: undefined + }, + pieChartData: {}, + resultList: [], + skinName: "" + }; + }, + created() { + this.queryParams.queryTime = this.formatDate(new Date()); + }, + methods: { + modelNodeChange(node) { + this.queryParams.nodeId = node.id; + this.queryParams.nodeName = node.label; + this.getList(); + }, + getList() { + let params = { + ...this.queryParams, + timeType: "MONTH", + // modelCode: this.$route.query.modelCode + modelCode: "PEAK_VALLEY" + }; + getElectricityDataItemStatistics(params).then(response => { + this.tabledata = response.data; + }); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + numFilter(value) { + // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅 + let realVal = ""; + if (!isNaN(value) && value !== "") { + realVal = parseFloat(value).toFixed(this.skinName); + } else { + realVal = "0.00"; + } + return realVal; + }, + + getTime() { + var myDate = new Date(); + var monthFirst = new Date( + myDate.getFullYear(), + parseInt(myDate.getMonth()) + ); + this.queryParams.beginTime = this.formatDate(monthFirst); + //this.queryParams.endTime=this.formatDate(monthFirst); + this.queryParams.endTime = this.getCurrentMonthLast(monthFirst); + }, + //鑾峰彇鏈堜唤鏈�鍚庝竴澶� + getCurrentMonthLast(endTime) { + var date = new Date(endTime); + var year = date.getFullYear(); + var month = date.getMonth() + 1; + month = month < 10 ? "0" + month : month; + var day = new Date(year, month, 0); + let endTimes = ""; + endTimes = year + "-" + month + "-" + day.getDate(); + return endTimes; + }, + formatDate: function(value) { + let date = new Date(value); + let y = date.getFullYear(); + let MM = date.getMonth() + 1; + MM = MM < 10 ? "0" + MM : MM; + let d = date.getDate(); + d = d < 10 ? "0" + d : d; + let h = date.getHours(); + h = h < 10 ? "0" + h : h; + let m = date.getMinutes(); + m = m < 10 ? "0" + m : m; + let s = date.getSeconds(); + s = s < 10 ? "0" + s : s; + return y + "-" + MM; + } + } +}; +</script> +<style lang="scss"> +.el-table td, +.el-table th { + text-align: center !important; +} +</style> diff --git a/energy_management_ui/src/views/energyPrice/index copy.vue b/energy_management_ui/src/views/energyPrice/index copy.vue new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/energy_management_ui/src/views/energyPrice/index copy.vue diff --git a/energy_management_ui/src/views/energyPrice/index.vue b/energy_management_ui/src/views/energyPrice/index.vue new file mode 100644 index 0000000..150bbfa --- /dev/null +++ b/energy_management_ui/src/views/energyPrice/index.vue @@ -0,0 +1,558 @@ +<template> + <div> + <basic-container> + <el-form + :model="queryParams" + ref="queryForm" + label-width="72px" + class="special-form" + > + <el-row :gutter="24"> + <el-col :span="6"> + <el-form-item label="绛栫暐鍚嶇О" prop="name"> + <el-input + v-model="queryParams.name" + placeholder="璇疯緭鍏ョ瓥鐣ュ悕绉�" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + </el-col> + <el-col :span="18"> + <el-form-item class="operation"> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-col> + </el-row> + </el-form> + </basic-container> + <basic-container style="margin-top: 16px" :bodyStyle="bodyStyle"> + <el-row :gutter="10" class="mb8" style="margin-bottom: 19px"> + <el-col :span="1.5"> + <el-button + type="primary" + icon="el-icon-plus" + size="mini" + @click="handleAdd" + >鏂板 + </el-button> + </el-col> + </el-row> + <el-table + v-loading="loading" + :data="tableData" + :height="height" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column + label="璁¤垂绛栫暐鍚嶇О" + prop="name" + :show-overflow-tooltip="true" + /> + <!-- <el-table-column label="灏栬垂鐢�" prop="sharpFee" /> + <el-table-column label="宄拌垂鐢�" prop="peakFee" /> + <el-table-column label="骞宠垂鐢�" prop="flatFee" /> + <el-table-column label="璋疯垂鐢�" prop="valleyFee" /> --> + <el-table-column label="鏄惁鐢熸晥" prop="effective" align="center"> + <template slot-scope="scope"> + {{ scope.row.effective ? "鏄�" : "鍚�" }} + </template> + </el-table-column> + <el-table-column label="鐢熸晥鏃堕棿" prop="effectiveDate" align="center" /> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime"> + </el-table-column> + <el-table-column + label="鎿嶄綔" + align="center" + width="240" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + >淇敼 + </el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + >鍒犻櫎 + </el-button> + </template> + </el-table-column> + </el-table> + <pagination + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </basic-container> + <!-- 娣诲姞鎴栦慨鏀�--> + <el-dialog + :title="title" + :visible.sync="open" + width="1000px" + class="dialog-form-row" + > + <el-form ref="form" :model="form" :rules="rules" label-width="150px"> + <el-form-item class="nav-form-item" label="璁¤垂绛栫暐鍚嶇О" prop="name"> + <el-input + maxlength="20" + v-model="form.name" + style="width: 425px" + placeholder="璇疯緭鍏ヨ璐圭瓥鐣ュ悕绉�" + clearable + /> + </el-form-item> + <el-form-item + class="nav-form-item" + label="鐢熸晥鏃堕棿" + prop="effectiveDate" + > + <el-date-picker + clearabl + style="width: 425px" + v-model="form.effectiveDate" + type="date" + value-format="yyyy-MM-dd" + placeholder="閫夋嫨鐢熸晥鏃堕棿" + > + </el-date-picker> + </el-form-item> + <el-form-item class="nav-form-item" label="澶囨敞淇℃伅" prop="remark"> + <el-input + type="textarea" + maxlength="200" + v-model="form.remark" + style="width: 425px" + placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�" + /> + </el-form-item> + <el-form-item class="nav-form-item" label="鐢佃垂锛堝厓/搴︼級"> + <el-row + v-for="(item, index) in priceTypeList" + :key="index" + style="margin-bottom: 5px" + > + <el-tag + :style=" + 'margin-right: 20px;color: #fff;background-color: ' + + item.cor + + ';border-color:' + + item.cor + " + >{{ item.txt }}</el-tag + > + <el-input-number + v-model="item.price" + controls-position="right" + :min="0.0" + :max="10" + :step="0.1" + style="width: 200px; margin-right: 10px" + ></el-input-number> + </el-row> + <div class="tipmincc" style="color: #fff;font-size: 13px;"> + 锛堝嘲銆佸钩銆佽胺鏃舵浠锋牸鍧囦负蹇呭~椤广�傚洜鍚勫湴鐢典环涓嶅悓锛岃鏍规嵁褰撳湴瀹為檯鐢典环濉啓銆傦級 + </div> + </el-form-item> + <el-form-item class="nav-form-item" label="鏃舵璁剧疆"> + <el-row> + <el-button + v-for="(item, index) in priceTypeList" + :key="index" + :style=" + 'margin-right: 20px;color: #fff;margin-top: 5px;margin-bottom: 20px;background-color: ' + + item.cor + + ';border-color:' + + item.cor + " + @click="setTimeType(item.priceType)" + > + 璁剧疆涓簕{ item.txt }} + </el-button> + </el-row> + <el-row> + <div style="display: flex; flex-wrap: wrap"> + <div + class="time-item" + v-for="time in timePeriodList" + :key="time.value" + @click="time.selected = !time.selected" + > + <img + class="sel-img" + v-if="time.selected" + src="@/assets/icons/checked.png" + alt="" + /> + <img + class="sel-img" + v-else + src="@/assets/icons/checkbox.png" + alt="" + /> + <div + :style=" + 'color:#fff;background-color: ' + + colorArray[time.priceType] + + ';border-color:' + + colorArray[time.priceType] + " + class="time-type-div" + > + {{ txtArray[time.priceType] }} + </div> + <div style="color: #b1a2a2;">{{ time.time }}</div> + </div> + </div> + </el-row> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +const txtArray = ["", "灏�", "宄�", "骞�", "璋�"]; +const colorArray = ["", "#f56c6c", "#e6a23c", "#67c23a", "#909399"]; + +import ruleApi from "@/api/energyPrice/price"; +import { getTimePeriod } from "@/utils/index"; +import mixins from "@/layout/mixin/getHeight"; +export default { + name: "energyPrice", + mixins: [mixins], + data() { + return { + txtArray, + colorArray, + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 閫変腑鏁扮粍 + codes: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鎬绘潯鏁� + total: 0, + // 璁¢噺鍣ㄥ叿妗f缁存姢琛ㄦ牸鏁版嵁 + tableData: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + + priceTypeList: [ + { + id: "", + priceType: 1, + price: 1, + servicePrice: 0.8, + parkFee: 1, + occupancyFee: 1, + txt: "灏栨椂娈�", + cor: "#f56c6c" + }, + { + id: "", + priceType: 2, + price: 1, + servicePrice: 0.8, + parkFee: 1, + occupancyFee: 1, + txt: "宄版椂娈�", + cor: "#e6a23c" + }, + { + id: "", + priceType: 3, + price: 1, + servicePrice: 0.8, + parkFee: 1, + occupancyFee: 1, + txt: "骞虫椂娈�", + cor: "#67c23a" + }, + { + id: "", + priceType: 4, + price: 1, + servicePrice: 0.8, + parkFee: 1, + occupancyFee: 1, + txt: "璋锋椂娈�", + cor: "#909399" + } + ], + // 鐢ㄦ埛瀵煎叆鍙傛暟 + height: null, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + code: undefined, + meterName: undefined, + meterType: undefined, + measureRange: undefined, + manufacturer: undefined, + installactionLocation: undefined + }, + // 琛ㄥ崟鍙傛暟 + timePeriodList: [], + form: { + sum: 0, + remark: "", + ruleType: "", + name: "", + effectiveDate: "", + priceList: [] + }, + // 琛ㄥ崟鏍¢獙 + rules: { + name: [ + { required: true, message: "璁¤垂绛栫暐鍚嶇О涓嶈兘涓虹┖", trigger: "blur" } + ] + } + }; + }, + created() { + this.getList(); + }, + methods: { + setCharts() { + this.bodyStyle = { + height: window.innerHeight - 220 + "px", + overflow: "hidden" + }; + this.height = window.innerHeight - 340; + }, + /** 鏌ヨ璁¢噺鍣ㄥ叿妗f缁存姢鍒楄〃 */ + getList() { + this.loading = true; + ruleApi.pageRule(this.queryParams).then(response => { + this.tableData = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + name: undefined + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id); + this.codes = selection.map(item => item.code); + this.single = selection.length != 1; + this.multiple = !selection.length; + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞璁¤垂绛栫暐"; + this.form.name = ""; + this.timePeriodList = []; + for (let i = 1; i < 49; i++) { + this.timePeriodList.push({ + value: i, + time: getTimePeriod(i), + priceType: 1, + selected: false + }); + } + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const id = row.id; + ruleApi.getRuleDetail({ id }).then(response => { + let typeNameArr = ["sharp", "peak", "flat", "valley"]; + let typeArr = ["SHARP", "PEAK", "FLAT", "VALLEY"]; + this.form = response.data; + this.open = true; + this.title = "淇敼璁¤垂绛栫暐"; + let ruleDetailList = response.data.ruleDetailList; + this.timePeriodList = ruleDetailList.map(item => { + return { + ...item, + value: item.timePeriod, + time: getTimePeriod(item.timePeriod), + priceType: typeArr.indexOf(item.type) + 1, + selected: false, + id: item.id + }; + }); + this.priceTypeList.forEach((item, index) => { + item.price = response.data[typeNameArr[index] + "Fee"]; + item.occupancyFee = + response.data[typeNameArr[index] + "OccupancyFee"]; + item.parkFee = response.data[typeNameArr[index] + "ParkingFee"]; + item.servicePrice = response.data[typeNameArr[index] + "ServiceFee"]; + }); + }); + }, + setTimeType(type) { + let arr = this.timePeriodList.filter(f => { + return f.selected; + }); + if (arr.length === 0) { + this.msgWarning("璇疯嚦灏戦�夋嫨涓�涓椂娈�"); + return; + } + arr.forEach(element => { + element.priceType = type; + element.selected = false; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm: function() { + let typeArr = ["SHARP", "PEAK", "FLAT", "VALLEY"]; + // SHARP( "灏�"), + // PEAK("宄�"), + // FLAT("骞�"), + // VALLEY( "璋�"); + this.$refs["form"].validate(valid => { + if (valid) { + let params = { + name: this.form.name, + id: this.form.id, + remark: this.form.remark, + effectiveDate: this.form.effectiveDate, + sharpFee: this.priceTypeList[0].price, //灏栨椂娈� + peakFee: this.priceTypeList[1].price, //宄版椂娈� + flatFee: this.priceTypeList[2].price, //骞虫椂娈� + valleyFee: this.priceTypeList[3].price, //璋锋椂娈� + ruleDetailList: this.timePeriodList.map(item => { + return { + timePeriod: item.value, + type: typeArr[item.priceType - 1], + id: item.id || "" + }; + }) + }; + if (this.form.id != undefined) { + ruleApi.editRule(params).then(response => { + if (response.code === 200) { + this.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + } else { + this.msgError(response.msg); + } + }); + } else { + ruleApi.addRule(params).then(response => { + if (response.code === 200) { + this.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + } else { + this.msgError(response.msg); + } + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const id = row.id; + const name = row.name; + this.$confirm('鏄惁纭鍒犻櫎"' + name + '"鐨勬暟鎹」?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(function() { + return ruleApi.delRule({ id }); + }) + .then(() => { + this.getList(); + this.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(function() {}); + } + } +}; +</script> +<style scoped lang="scss"> +.special-form { + @import "~@/assets/styles/common-table-form.scss"; +} + +.dialog-form-row { + .el-row { + margin-bottom: 0; + } +} +::v-deep .el-dialog__body { + height: 75vh; + overflow: hidden; + overflow-y: auto; +} +.time-item { + margin-right: 12px; + border: 1px solid #eaeaea; + border-radius: 4px; + text-align: center; + margin-bottom: 12px; + width: 100px; + position: relative; + cursor: pointer; + .time-type-div { + border-radius: 4px 4px 0 0; + } + .sel-img { + position: absolute; + width: 15px; + height: 15px; + background: #fff; + border-radius: 2px; + left: 6px; + top: 6px; + } +} +</style> diff --git a/energy_management_ui/src/views/index copy.vue b/energy_management_ui/src/views/index copy.vue index 9d864a4..3d1dcb7 100644 --- a/energy_management_ui/src/views/index copy.vue +++ b/energy_management_ui/src/views/index copy.vue @@ -486,7 +486,6 @@ <style lang="scss" scoped> .home-show { - background: #f0f2f5; overflow: hidden; overflow-y: scroll; height: calc(100vh - 90px); diff --git a/energy_management_ui/src/views/index.vue b/energy_management_ui/src/views/index.vue index 7e5dbd9..d8d3914 100644 --- a/energy_management_ui/src/views/index.vue +++ b/energy_management_ui/src/views/index.vue @@ -23,93 +23,89 @@ </div> </div> </el-card> --> + <el-card + class="body-left-title" + :bordered="false" + style="margin-bottom: 12px;" + > + <div slot="header" class="clearfix"> + <span>褰撴棩鍙屾帶鏁版嵁鎸囨爣鎬昏</span> + </div> + <el-row class="double-data-show-content"> + <el-col :span="5" class="total"> + <img alt="" src="~@/assets/home/zonghe.svg" /> + <div class="left-title-style"> + <div> + <div>鍏ㄥ巶缁煎悎鑳借��</div> + <div class="unit">{{ summation }} tce</div> + </div> + </div> + </el-col> + <el-col + :span="5" + class="co2" + v-for="(item, index) in energyStatistic" + :key="index" + style="border-left: 1px solid #999;" + > + <img + v-if="item.item.includes('鐢�')" + src="~@/assets/home/haodian.svg" + alt="" + /> + <img + v-if="item.item.includes('姘�')" + src="~@/assets/home/haoshui.svg" + alt="" + /> + <img + v-if="item.item.includes('姘�')" + src="~@/assets/home/haoqi.svg" + alt="" + /> + <img + v-if="item.item.includes('钂告苯')" + src="~@/assets/home/haozhengqi.svg" + alt="" + /> + <div class="left-title-style"> + <div> + <div> + 鑰梴{ + item.item.indexOf("澶╃劧") !== -1 + ? item.item.replace("澶╃劧", "") + : item.item + }}閲� + {{ item.unit ? `锛�${item.unit}锛塦 : "" }} + </div> + <div class="unit"> + {{ item.count || 0 }} + </div> + </div> + </div> + </el-col> + <el-col :span="5" class="total" style="border-left: 1px solid #999;"> + <img alt="" src="~@/assets/home/wen.png" /> + <div class="left-title-style"> + <div> + <div>瀹ゅ娓╁害</div> + <div class="unit">{{ temperature }}</div> + </div> + </div> + </el-col> + <el-col :span="5" class="total" style="border-left: 1px solid #999;"> + <img alt="" src="~@/assets/home/shi.png" /> + <div class="left-title-style"> + <div> + <div>瀹ゅ婀垮害</div> + <div class="unit">{{ humidity }}</div> + </div> + </div> + </el-col> + </el-row> + </el-card> <el-row type="flex" class="data-indicator-overview"> <el-col class="home-body-left"> - <el-card class="body-left-title" :bordered="false"> - <div slot="header" class="clearfix"> - <span>褰撴棩鍙屾帶鏁版嵁鎸囨爣鎬昏</span> - </div> - <el-row class="double-data-show-content"> - <el-col :span="4" class="total"> - <img alt="" src="~@/assets/home/zonghe.svg" /> - <div class="left-title-style"> - <div> - <div>鍏ㄥ巶缁煎悎鑳借��</div> - <div class="unit">{{ summation }} tce</div> - </div> - </div> - </el-col> - <el-col - :span="5" - class="co2" - v-for="(item, index) in energyStatistic" - :key="index" - style="border-left: 1px solid #e9e9e9;" - > - <img - v-if="item.item.includes('鐢�')" - src="~@/assets/home/haodian.svg" - alt="" - /> - <img - v-if="item.item.includes('姘�')" - src="~@/assets/home/haoshui.svg" - alt="" - /> - <img - v-if="item.item.includes('姘�')" - src="~@/assets/home/haoqi.svg" - alt="" - /> - <img - v-if="item.item.includes('钂告苯')" - src="~@/assets/home/haozhengqi.svg" - alt="" - /> - <div class="left-title-style"> - <div> - <div> - 鑰梴{ - item.item.indexOf("澶╃劧") !== -1 - ? item.item.replace("澶╃劧", "") - : item.item - }}閲� - {{ item.unit ? `锛�${item.unit}锛塦 : "" }} - </div> - <div class="unit"> - {{ item.count || 0 }} - </div> - </div> - </div> - </el-col> - <el-col - :span="5" - class="total" - style="border-left: 1px solid #e9e9e9;" - > - <img alt="" src="~@/assets/home/wen.png" /> - <div class="left-title-style"> - <div> - <div>瀹ゅ娓╁害</div> - <div class="unit">{{ temperature }}</div> - </div> - </div> - </el-col> - <el-col - :span="5" - class="total" - style="border-left: 1px solid #e9e9e9;" - > - <img alt="" src="~@/assets/home/shi.png" /> - <div class="left-title-style"> - <div> - <div>瀹ゅ婀垮害</div> - <div class="unit">{{ humidity }}</div> - </div> - </div> - </el-col> - </el-row> - </el-card> <el-card :bordered="false" class="body-left-title"> <div slot="header" class="clearfix"> <span>鑳芥簮瀹炴椂鐩戞祴</span> @@ -120,7 +116,7 @@ }}</span> <BarChart class="line-content" :chartData="chartDataObj" /> </div> - <div class="chart-wrapper" style="border-top: 1px solid #e9e9e9"> + <div class="chart-wrapper" style="border-top: 1px solid #999"> <span class="chart-left-unit">{{ `姘�/鍗曚綅${monitoringWaterUnit}` }}</span> @@ -169,6 +165,7 @@ class="second-chat" :chartData="secondPieData" pieTitle="鑳借�楄澶囧崰姣�" + height="280px" /> </el-card> </el-col> @@ -187,7 +184,6 @@ getHomeOutdoorTemperature } from "@/api/home/home"; import mixins from "@/layout/mixin/getHeight"; -import moment from "moment"; import PieChart from "./dashboard/PieChart"; import LineChart from "./dashboard/LineChart"; import BarChart from "./dashboard/BarChart"; @@ -256,9 +252,9 @@ clearInterval(this.timer); clearInterval(this.timer30); this.getHomeOutdoorTemperatureData(); - this.timer = setInterval(() => { - this.getHomeOutdoorTemperatureData(); - }, 12000); + // this.timer = setInterval(() => { + // this.getHomeOutdoorTemperatureData(); + // }, 12000); this.timer30 = setInterval(() => { // this.getEnergyType(); this.getSummationData(); @@ -549,22 +545,53 @@ <style lang="scss" scoped> .home-show { - background: #f0f2f5; overflow: hidden; overflow-y: scroll; - height: calc(100vh - 90px); + // height: calc(100vh - 88px); .home-head { display: flex; align-items: center; .home-select-label { margin-right: 10px; - color: #000; + color: #fff; font-weight: 600; } .select-month { margin: 0 8px; + } + } + .double-data-show-content { + display: flex; + align-items: center; + // border-bottom: 1px solid #e9e9e9; + // padding: 23px 0 24px 40px; + .el-col { + padding: 23px 0 24px 10px; + } + + & > div { + display: flex; + align-items: center; + } + + img { + width: 20px; + height: 20px; + } + + .left-title-style { + display: flex; + align-items: center; + margin-left: 10px; + // border-right: 1px solid #e9e9e9; + + .unit { + font-size: 22px; + color: #fff; + margin-top: 4px; + } } } @@ -575,7 +602,7 @@ position: absolute; top: 16px; left: 24px; - color: #333; + color: #fff; font-size: 18px; } @@ -598,42 +625,9 @@ margin: 0 16px 0px 0; } - .double-data-show-content { - display: flex; - align-items: center; - // border-bottom: 1px solid #e9e9e9; - // padding: 23px 0 24px 40px; - .el-col { - padding: 23px 0 24px 10px; - } - - & > div { - display: flex; - align-items: center; - } - - img { - width: 20px; - height: 20px; - } - - .left-title-style { - display: flex; - align-items: center; - margin-left: 10px; - // border-right: 1px solid #e9e9e9; - - .unit { - font-size: 22px; - color: #000000; - margin-top: 4px; - } - } - } - .left-line-style { padding: 24px; - color: #000000; + color: #fff; .radio-list { width: 122px; @@ -656,7 +650,7 @@ position: absolute; top: 16px; left: 0; - color: #333; + color: #fff; } .line-content { @@ -700,7 +694,7 @@ .number { font-size: 24px; - color: #000000; + color: #fff; } } } @@ -718,7 +712,7 @@ .first-chat { margin: 10px 0 0 0; - height: 340px; + height: 300px; } } @@ -727,7 +721,7 @@ .second-chat { margin: 10px 0 0 0; - height: 340px; + height: 290px; } .bottom-description-list { @@ -744,7 +738,7 @@ .energy-cost-sum { font-size: 24px; - color: #000000; + color: #fff; } } diff --git a/energy_management_ui/src/views/index_bak.vue b/energy_management_ui/src/views/index_bak.vue index 7c96b41..9a292dd 100644 --- a/energy_management_ui/src/views/index_bak.vue +++ b/energy_management_ui/src/views/index_bak.vue @@ -1,9 +1,8 @@ <template> <div class="dashboard-editor-container"> - <panel-group @handleSetLineChartData="handleSetLineChartData" /> - <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <el-row style="padding:16px 16px 0;margin-bottom:32px;"> <line-chart :chart-data="lineChartData" /> </el-row> @@ -27,19 +26,18 @@ <!--<!–瀹炴椂–>--> <!--<div class="live">--> - <!--<div class="live_content">瀹炴椂鎶ヨ</div>--> - <!--<div class="live_number">35</div>--> + <!--<div class="live_content">瀹炴椂鎶ヨ</div>--> + <!--<div class="live_number">35</div>--> <!--</div>--> </div> - </template> <script> -import PanelGroup from './dashboard/PanelGroup' -import LineChart from './dashboard/LineChart' -import RaddarChart from './dashboard/RaddarChart' -import PieChart from './dashboard/PieChart' -import BarChart from './dashboard/BarChart' +import PanelGroup from "./dashboard/PanelGroup"; +import LineChart from "./dashboard/LineChart"; +import RaddarChart from "./dashboard/RaddarChart"; +import PieChart from "./dashboard/PieChart"; +import BarChart from "./dashboard/BarChart"; const lineChartData = { newVisitis: { @@ -58,10 +56,10 @@ expectedData: [130, 140, 141, 142, 145, 150, 160], actualData: [120, 82, 91, 154, 162, 140, 130] } -} +}; export default { - name: 'Index', + name: "Index", components: { PanelGroup, LineChart, @@ -72,79 +70,77 @@ data() { return { lineChartData: lineChartData.newVisitis - } + }; }, methods: { handleSetLineChartData(type) { - this.lineChartData = lineChartData[type] + this.lineChartData = lineChartData[type]; } } -} +}; </script> <style lang="scss" scoped> .dashboard-editor-container { padding: 32px; - background-color: rgb(240, 242, 245); position: relative; .chart-wrapper { - background: #fff; padding: 16px 16px 0; margin-bottom: 32px; } } -@media (max-width:1024px) { +@media (max-width: 1024px) { .chart-wrapper { padding: 8px; } } - .live{ - position: fixed; - right: 0px; - top:70px; - display: flex; - flex-direction:column; - justify-content:center; - align-items:center; - width: 100px; - height: 60px; - background-color: red; - animation: fade 600ms infinite; - -webkit-animation: fade 600ms infinite; - } - .live_content{ - font-size: 18px; - color: white; - font-weight: bold; - } - .live_number{ - font-size: 32px; - color: white; - font-weight: bolder; - } +.live { + position: fixed; + right: 0px; + top: 70px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100px; + height: 60px; + background-color: red; + animation: fade 600ms infinite; + -webkit-animation: fade 600ms infinite; +} +.live_content { + font-size: 18px; + color: white; + font-weight: bold; +} +.live_number { + font-size: 32px; + color: white; + font-weight: bolder; +} @keyframes fade { from { - opacity: 1.0; + opacity: 1; } 50% { opacity: 0.4; } to { - opacity: 1.0; + opacity: 1; } } @-webkit-keyframes fade { from { - opacity: 1.0; + opacity: 1; } 50% { opacity: 0.4; } to { - opacity: 1.0; + opacity: 1; } } </style> diff --git a/energy_management_ui/src/views/login.vue b/energy_management_ui/src/views/login.vue index ce36cab..7b32691 100644 --- a/energy_management_ui/src/views/login.vue +++ b/energy_management_ui/src/views/login.vue @@ -6,15 +6,23 @@ :src="'https://www.toray.cn/shared/images/toray_logo_ch.svg'" alt="" /> - <div>涓滀附鍖荤枟鑳芥簮绠$悊骞冲彴</div> + <div>缁煎悎鑳芥簮绠$悊绯荤粺</div> </div> <div class="login"> - <div class="demo-image"> + <!-- <div class="demo-image"> <el-image style="width: 75%;" :src="logo"></el-image> - </div> + </div> --> <div class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules"> - <div class="title">鐢ㄦ埛鐧诲綍</div> + <!-- <div class="title">鐢ㄦ埛鐧诲綍</div> --> + <div class="logo-view title"> + <img + style="width: 100px;margin-right: 30px " + :src="'https://www.toray.cn/shared/images/toray_logo_ch.svg'" + alt="" + /> + <div>缁煎悎鑳芥簮绠$悊绯荤粺</div> + </div> <el-form-item prop="username" style="margin-bottom: 21px"> <el-input v-model="loginForm.username" @@ -170,22 +178,28 @@ <style rel="stylesheet/scss" lang="scss" scoped> .logo-page { height: 100%; - background-image: url("../assets/image/login-background.png"); + background-image: url("../assets/image/bg.jpg"); + // background-image: url("../assets/image/login-background.png"); background-size: cover; overflow: hidden; + // background: ; + // background: linear-gradient(80deg, #073b70 0%, rgba(7, 59, 112, 0) 100%); + // background: linear-gradient(90deg, #101d32 0%, rgba(0, 0, 0, 0.5) 100%); .logo-png { font-size: 24px; display: flex; align-items: center; font-weight: bold; - color: #333; + color: #fff; padding: 3.4% 0 0 74px; + position: absolute; } .login { display: flex; - justify-content: space-between; + // justify-content: space-between; + justify-content: center; padding: 0 17.24%; height: calc(100% - 73px * 2); align-items: center; @@ -194,15 +208,29 @@ .title { font-size: 22px; color: #38bcbf; - margin-bottom: 22px; + margin-bottom: 32px; font-weight: 600; } .login-form { border-radius: 10px; - background: #ffffff; - width: 32%; - padding: 25px 25px 5px 25px; + // background: #ffffff; + width: 36%; + padding: 32px 64px; + // background: #061844; + border-radius: 4px; + // box-shadow: 0 7px 14px 6px #2f4b9a; + margin-top: 6px; + border: 1px solid #061844; + background: rgba($color: #ffffff, $alpha: 0.06); + + .logo-view { + display: flex; + align-items: center; + color: #fff; + font-size: 26px; + font-weight: 600; + } .el-input { height: 38px; diff --git a/energy_management_ui/vue.config.js b/energy_management_ui/vue.config.js index 5ee348f..5b7ded5 100644 --- a/energy_management_ui/vue.config.js +++ b/energy_management_ui/vue.config.js @@ -6,7 +6,7 @@ return path.join(__dirname, dir); } -const name = defaultSettings.title || "搴炲反杩兘婧愮鐞嗙郴缁�"; // 鏍囬 +const name = defaultSettings.title || "鏅虹⒊鏈潵鑳芥簮绠$悊绯荤粺"; // 鏍囬 const port = process.env.port || process.env.npm_config_port || 80; // 绔彛 @@ -33,9 +33,7 @@ proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - // target: 'http://47.110.84.144:8097', - target: "http://192.168.0.6:8097", - // target: "http://q7unm6.natappfree.cc", + target: "http://localhost:8097", changeOrigin: true, pathRewrite: { ["^" + process.env.VUE_APP_BASE_API]: "" -- Gitblit v1.9.3