Browse Source

电费配置相关

wukai 4 months ago
parent
commit
eebb7c52da

+ 100 - 0
jjt-biz/src/main/java/com/jjt/elec/controller/ElecPeriodController.java

@@ -0,0 +1,100 @@
+package com.jjt.elec.controller;
+
+import com.jjt.common.annotation.Log;
+import com.jjt.common.core.controller.BaseController;
+import com.jjt.common.core.domain.AjaxResult;
+import com.jjt.common.core.page.TableDataInfo;
+import com.jjt.common.enums.BusinessType;
+import com.jjt.common.utils.poi.ExcelUtil;
+import com.jjt.elec.domain.ElecPeriod;
+import com.jjt.elec.service.IElecPeriodService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 电费分时配置Controller
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@Api(tags = "电费分时配置")
+@RestController
+@RequestMapping("/elec/period")
+public class ElecPeriodController extends BaseController {
+    @Resource
+    private IElecPeriodService elecPeriodService;
+
+    /**
+     * 查询电费分时配置列表
+     */
+    @ApiOperation("查询电费分时配置列表")
+    @PreAuthorize("@ss.hasPermi('elec:period:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ElecPeriod elecPeriod) {
+        startPage();
+        List<ElecPeriod> list = elecPeriodService.selectElecPeriodList(elecPeriod);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出电费分时配置列表
+     */
+    @ApiOperation("导出电费分时配置列表")
+    @PreAuthorize("@ss.hasPermi('elec:period:export')")
+    @Log(title = "电费分时配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ElecPeriod elecPeriod) {
+        List<ElecPeriod> list = elecPeriodService.selectElecPeriodList(elecPeriod);
+        ExcelUtil<ElecPeriod> util = new ExcelUtil<ElecPeriod>(ElecPeriod.class);
+        util.exportExcel(response, list, "电费分时配置数据");
+    }
+
+    /**
+     * 获取电费分时配置详细信息
+     */
+    @ApiOperation("获取电费分时配置详细信息")
+    @PreAuthorize("@ss.hasPermi('elec:period:query')")
+    @GetMapping(value = "/{periodId}")
+    public AjaxResult getInfo(@PathVariable("periodId") Long periodId) {
+        return success(elecPeriodService.selectElecPeriodByPeriodId(periodId));
+    }
+
+    /**
+     * 新增电费分时配置
+     */
+    @ApiOperation("新增电费分时配置")
+    @PreAuthorize("@ss.hasPermi('elec:period:add')")
+    @Log(title = "电费分时配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ElecPeriod elecPeriod) {
+        return toAjax(elecPeriodService.insertElecPeriod(elecPeriod));
+    }
+
+    /**
+     * 修改电费分时配置
+     */
+    @ApiOperation("修改电费分时配置")
+    @PreAuthorize("@ss.hasPermi('elec:period:edit')")
+    @Log(title = "电费分时配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ElecPeriod elecPeriod) {
+        return toAjax(elecPeriodService.updateElecPeriod(elecPeriod));
+    }
+
+    /**
+     * 删除电费分时配置
+     */
+    @ApiOperation("删除电费分时配置")
+    @PreAuthorize("@ss.hasPermi('elec:period:remove')")
+    @Log(title = "电费分时配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{periodIds}")
+    public AjaxResult remove(@PathVariable Long[] periodIds) {
+        return toAjax(elecPeriodService.deleteElecPeriodByPeriodIds(periodIds));
+    }
+}

+ 113 - 0
jjt-biz/src/main/java/com/jjt/elec/controller/ElecPriceController.java

@@ -0,0 +1,113 @@
+package com.jjt.elec.controller;
+
+import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.jjt.common.annotation.Log;
+import com.jjt.common.core.controller.BaseController;
+import com.jjt.common.core.domain.AjaxResult;
+import com.jjt.common.enums.BusinessType;
+import com.jjt.elec.domain.ElecPrice;
+import com.jjt.elec.service.IElecPriceService;
+import com.jjt.common.utils.poi.ExcelUtil;
+import com.jjt.common.core.page.TableDataInfo;
+
+/**
+ * 电费价格配置Controller
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@Api(tags="电费价格配置")
+@RestController
+@RequestMapping("/elec/price")
+public class ElecPriceController extends BaseController{
+    @Resource
+    private IElecPriceService elecPriceService;
+
+    /**
+     * 查询电费价格配置列表
+     */
+    @ApiOperation("查询电费价格配置列表")
+    @PreAuthorize("@ss.hasPermi('elec:price:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ElecPrice elecPrice)
+    {
+        startPage();
+        List<ElecPrice> list = elecPriceService.selectElecPriceList(elecPrice);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出电费价格配置列表
+     */
+    @ApiOperation("导出电费价格配置列表")
+    @PreAuthorize("@ss.hasPermi('elec:price:export')")
+    @Log(title = "电费价格配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ElecPrice elecPrice)
+    {
+        List<ElecPrice> list = elecPriceService.selectElecPriceList(elecPrice);
+        ExcelUtil<ElecPrice> util = new ExcelUtil<ElecPrice>(ElecPrice.class);
+        util.exportExcel(response, list, "电费价格配置数据");
+    }
+
+    /**
+     * 获取电费价格配置详细信息
+     */
+    @ApiOperation("获取电费价格配置详细信息")
+    @PreAuthorize("@ss.hasPermi('elec:price:query')")
+    @GetMapping(value = "/{priceId}")
+    public AjaxResult getInfo(@PathVariable("priceId") Long priceId)
+    {
+        return success(elecPriceService.selectElecPriceByPriceId(priceId));
+    }
+
+    /**
+     * 新增电费价格配置
+     */
+    @ApiOperation("新增电费价格配置")
+    @PreAuthorize("@ss.hasPermi('elec:price:add')")
+    @Log(title = "电费价格配置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ElecPrice elecPrice)
+    {
+        return toAjax(elecPriceService.insertElecPrice(elecPrice));
+    }
+
+    /**
+     * 修改电费价格配置
+     */
+    @ApiOperation("修改电费价格配置")
+    @PreAuthorize("@ss.hasPermi('elec:price:edit')")
+    @Log(title = "电费价格配置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ElecPrice elecPrice)
+    {
+        return toAjax(elecPriceService.updateElecPrice(elecPrice));
+    }
+
+    /**
+     * 删除电费价格配置
+     */
+    @ApiOperation("删除电费价格配置")
+    @PreAuthorize("@ss.hasPermi('elec:price:remove')")
+    @Log(title = "电费价格配置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{priceIds}")
+    public AjaxResult remove(@PathVariable Long[] priceIds)
+    {
+        return toAjax(elecPriceService.deleteElecPriceByPriceIds(priceIds));
+    }
+}

+ 78 - 0
jjt-biz/src/main/java/com/jjt/elec/domain/ElecPeriod.java

@@ -0,0 +1,78 @@
+package com.jjt.elec.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.jjt.common.annotation.Excel;
+import com.jjt.common.core.domain.BaseEntity;
+
+/**
+ * 电费分时配置对象 ELEC_PERIOD
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@ApiModel(value = "ElecPeriod", description = "电费分时配置")
+@Data
+public class ElecPeriod extends BaseEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** 分段ID */
+    @ApiModelProperty("分段ID")
+    @TableId
+    private Long periodId;
+
+    /** 春秋月份 */
+    @ApiModelProperty("春秋月份")
+    @Excel(name = "春秋月份")
+    private String saMonths;
+
+    /** 夏冬月份 */
+    @ApiModelProperty("夏冬月份")
+    @Excel(name = "夏冬月份")
+    private String swMonths;
+
+    /** 春秋峰电时段 */
+    @ApiModelProperty("春秋峰电时段")
+    @Excel(name = "春秋峰电时段")
+    private String saPeak;
+
+    /** 春秋谷电时段 */
+    @ApiModelProperty("春秋谷电时段")
+    @Excel(name = "春秋谷电时段")
+    private String saValley;
+
+    /** 春秋平电时段 */
+    @ApiModelProperty("春秋平电时段")
+    @Excel(name = "春秋平电时段")
+    private String saFlat;
+
+    /** 春秋尖峰时段 */
+    @ApiModelProperty("春秋尖峰时段")
+    @Excel(name = "春秋尖峰时段")
+    private String saSuperPeak;
+
+    /** 夏冬峰电时段 */
+    @ApiModelProperty("夏冬峰电时段")
+    @Excel(name = "夏冬峰电时段")
+    private String swPeak;
+
+    /** 夏冬谷电时段 */
+    @ApiModelProperty("夏冬谷电时段")
+    @Excel(name = "夏冬谷电时段")
+    private String swValley;
+
+    /** 夏冬平电时段 */
+    @ApiModelProperty("夏冬平电时段")
+    @Excel(name = "夏冬平电时段")
+    private String swFlat;
+
+    /** 夏冬尖峰时段 */
+    @ApiModelProperty("夏冬尖峰时段")
+    @Excel(name = "夏冬尖峰时段")
+    private String swSuperPeak;
+
+}

+ 64 - 0
jjt-biz/src/main/java/com/jjt/elec/domain/ElecPrice.java

@@ -0,0 +1,64 @@
+package com.jjt.elec.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.jjt.common.annotation.Excel;
+import com.jjt.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 电费价格配置对象 ELEC_PRICE
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@ApiModel(value = "ElecPrice", description = "电费价格配置")
+@Data
+public class ElecPrice extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 价格ID
+     */
+    @ApiModelProperty("价格ID")
+    @TableId
+    private Long priceId;
+
+    /**
+     * 电费月份
+     */
+    @ApiModelProperty("电费月份")
+    private String priceMonth;
+
+    /**
+     * 峰电电价
+     */
+    @ApiModelProperty("峰电电价")
+    @Excel(name = "峰电电价")
+    private BigDecimal pricePeak;
+
+    /**
+     * 谷电电价
+     */
+    @ApiModelProperty("谷电电价")
+    @Excel(name = "谷电电价")
+    private BigDecimal priceValley;
+
+    /**
+     * 平电电价
+     */
+    @ApiModelProperty("平电电价")
+    @Excel(name = "平电电价")
+    private BigDecimal priceFlat;
+
+    /**
+     * 尖峰电价
+     */
+    @ApiModelProperty("尖峰电价")
+    @Excel(name = "尖峰电价")
+    private BigDecimal priceSuperPeak;
+
+}

+ 62 - 0
jjt-biz/src/main/java/com/jjt/elec/mapper/ElecPeriodMapper.java

@@ -0,0 +1,62 @@
+package com.jjt.elec.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jjt.elec.domain.ElecPeriod;
+
+/**
+ * 电费分时配置Mapper接口
+ * 
+ * @author wukai
+ * @date 2025-03-14
+ */
+public interface ElecPeriodMapper extends BaseMapper<ElecPeriod>
+{
+    /**
+     * 查询电费分时配置
+     * 
+     * @param periodId 电费分时配置主键
+     * @return 电费分时配置
+     */
+    public ElecPeriod selectElecPeriodByPeriodId(Long periodId);
+
+    /**
+     * 查询电费分时配置列表
+     * 
+     * @param elecPeriod 电费分时配置
+     * @return 电费分时配置集合
+     */
+    public List<ElecPeriod> selectElecPeriodList(ElecPeriod elecPeriod);
+
+    /**
+     * 新增电费分时配置
+     * 
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    public int insertElecPeriod(ElecPeriod elecPeriod);
+
+    /**
+     * 修改电费分时配置
+     * 
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    public int updateElecPeriod(ElecPeriod elecPeriod);
+
+    /**
+     * 删除电费分时配置
+     * 
+     * @param periodId 电费分时配置主键
+     * @return 结果
+     */
+    public int deleteElecPeriodByPeriodId(Long periodId);
+
+    /**
+     * 批量删除电费分时配置
+     * 
+     * @param periodIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteElecPeriodByPeriodIds(Long[] periodIds);
+}

+ 62 - 0
jjt-biz/src/main/java/com/jjt/elec/mapper/ElecPriceMapper.java

@@ -0,0 +1,62 @@
+package com.jjt.elec.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jjt.elec.domain.ElecPrice;
+
+/**
+ * 电费价格配置Mapper接口
+ * 
+ * @author wukai
+ * @date 2025-03-14
+ */
+public interface ElecPriceMapper extends BaseMapper<ElecPrice>
+{
+    /**
+     * 查询电费价格配置
+     * 
+     * @param priceId 电费价格配置主键
+     * @return 电费价格配置
+     */
+    public ElecPrice selectElecPriceByPriceId(Long priceId);
+
+    /**
+     * 查询电费价格配置列表
+     * 
+     * @param elecPrice 电费价格配置
+     * @return 电费价格配置集合
+     */
+    public List<ElecPrice> selectElecPriceList(ElecPrice elecPrice);
+
+    /**
+     * 新增电费价格配置
+     * 
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    public int insertElecPrice(ElecPrice elecPrice);
+
+    /**
+     * 修改电费价格配置
+     * 
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    public int updateElecPrice(ElecPrice elecPrice);
+
+    /**
+     * 删除电费价格配置
+     * 
+     * @param priceId 电费价格配置主键
+     * @return 结果
+     */
+    public int deleteElecPriceByPriceId(Long priceId);
+
+    /**
+     * 批量删除电费价格配置
+     * 
+     * @param priceIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteElecPriceByPriceIds(Long[] priceIds);
+}

+ 62 - 0
jjt-biz/src/main/java/com/jjt/elec/service/IElecPeriodService.java

@@ -0,0 +1,62 @@
+package com.jjt.elec.service;
+
+import com.jjt.elec.domain.ElecPeriod;
+
+import java.util.List;
+
+/**
+ * 电费分时配置Service接口
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+public interface IElecPeriodService {
+    /**
+     * 查询电费分时配置
+     *
+     * @param periodId 电费分时配置主键
+     * @return 电费分时配置
+     */
+    public ElecPeriod selectElecPeriodByPeriodId(Long periodId);
+
+    /**
+     * 查询电费分时配置列表
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 电费分时配置集合
+     */
+    public List<ElecPeriod> selectElecPeriodList(ElecPeriod elecPeriod);
+
+    /**
+     * 新增电费分时配置
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    public int insertElecPeriod(ElecPeriod elecPeriod);
+
+    /**
+     * 修改电费分时配置
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    public int updateElecPeriod(ElecPeriod elecPeriod);
+
+    /**
+     * 批量删除电费分时配置
+     *
+     * @param periodIds 需要删除的电费分时配置主键集合
+     * @return 结果
+     */
+    public int deleteElecPeriodByPeriodIds(Long[] periodIds);
+
+    /**
+     * 删除电费分时配置信息
+     *
+     * @param periodId 电费分时配置主键
+     * @return 结果
+     */
+    public int deleteElecPeriodByPeriodId(Long periodId);
+
+}

+ 72 - 0
jjt-biz/src/main/java/com/jjt/elec/service/IElecPriceService.java

@@ -0,0 +1,72 @@
+package com.jjt.elec.service;
+
+import com.jjt.elec.domain.ElecPrice;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 电费价格配置Service接口
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+public interface IElecPriceService {
+    /**
+     * 查询电费价格配置
+     *
+     * @param priceId 电费价格配置主键
+     * @return 电费价格配置
+     */
+    public ElecPrice selectElecPriceByPriceId(Long priceId);
+
+    /**
+     * 查询电费价格配置列表
+     *
+     * @param elecPrice 电费价格配置
+     * @return 电费价格配置集合
+     */
+    public List<ElecPrice> selectElecPriceList(ElecPrice elecPrice);
+
+    /**
+     * 新增电费价格配置
+     *
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    public int insertElecPrice(ElecPrice elecPrice);
+
+    /**
+     * 修改电费价格配置
+     *
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    public int updateElecPrice(ElecPrice elecPrice);
+
+    /**
+     * 批量删除电费价格配置
+     *
+     * @param priceIds 需要删除的电费价格配置主键集合
+     * @return 结果
+     */
+    public int deleteElecPriceByPriceIds(Long[] priceIds);
+
+    /**
+     * 删除电费价格配置信息
+     *
+     * @param priceId 电费价格配置主键
+     * @return 结果
+     */
+    public int deleteElecPriceByPriceId(Long priceId);
+
+    /**
+     * 根据月份和时段获取价格
+     *
+     * @param localDate 时间,只取月份
+     * @param hour      小时
+     * @return 电价
+     */
+    BigDecimal getPrice(LocalDate localDate, int hour);
+}

+ 86 - 0
jjt-biz/src/main/java/com/jjt/elec/service/impl/ElecPeriodServiceImpl.java

@@ -0,0 +1,86 @@
+package com.jjt.elec.service.impl;
+
+import java.util.List;
+import org.springframework.stereotype.Service;
+import com.jjt.elec.mapper.ElecPeriodMapper;
+import com.jjt.elec.domain.ElecPeriod;
+import com.jjt.elec.service.IElecPeriodService;
+import javax.annotation.Resource;
+
+/**
+ * 电费分时配置Service业务层处理
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@Service
+public class ElecPeriodServiceImpl implements IElecPeriodService {
+    @Resource
+    private ElecPeriodMapper elecPeriodMapper;
+
+    /**
+     * 查询电费分时配置
+     *
+     * @param periodId 电费分时配置主键
+     * @return 电费分时配置
+     */
+    @Override
+    public ElecPeriod selectElecPeriodByPeriodId(Long periodId) {
+        return elecPeriodMapper.selectElecPeriodByPeriodId(periodId);
+    }
+
+    /**
+     * 查询电费分时配置列表
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 电费分时配置
+     */
+    @Override
+    public List<ElecPeriod> selectElecPeriodList(ElecPeriod elecPeriod) {
+        return elecPeriodMapper.selectElecPeriodList(elecPeriod);
+    }
+
+    /**
+     * 新增电费分时配置
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    @Override
+    public int insertElecPeriod(ElecPeriod elecPeriod) {
+            return elecPeriodMapper.insertElecPeriod(elecPeriod);
+    }
+
+    /**
+     * 修改电费分时配置
+     *
+     * @param elecPeriod 电费分时配置
+     * @return 结果
+     */
+    @Override
+    public int updateElecPeriod(ElecPeriod elecPeriod) {
+        return elecPeriodMapper.updateElecPeriod(elecPeriod);
+    }
+
+    /**
+     * 批量删除电费分时配置
+     *
+     * @param periodIds 需要删除的电费分时配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteElecPeriodByPeriodIds(Long[] periodIds) {
+        return elecPeriodMapper.deleteElecPeriodByPeriodIds(periodIds);
+    }
+
+    /**
+     * 删除电费分时配置信息
+     *
+     * @param periodId 电费分时配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteElecPeriodByPeriodId(Long periodId) {
+        return elecPeriodMapper.deleteElecPeriodByPeriodId(periodId);
+    }
+}

+ 177 - 0
jjt-biz/src/main/java/com/jjt/elec/service/impl/ElecPriceServiceImpl.java

@@ -0,0 +1,177 @@
+package com.jjt.elec.service.impl;
+
+import com.jjt.elec.domain.ElecPeriod;
+import com.jjt.elec.domain.ElecPrice;
+import com.jjt.elec.mapper.ElecPriceMapper;
+import com.jjt.elec.service.IElecPeriodService;
+import com.jjt.elec.service.IElecPriceService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 电费价格配置Service业务层处理
+ *
+ * @author wukai
+ * @date 2025-03-14
+ */
+@Service
+public class ElecPriceServiceImpl implements IElecPriceService {
+    @Resource
+    private ElecPriceMapper elecPriceMapper;
+    @Resource
+    private IElecPeriodService periodService;
+
+    /**
+     * 查询电费价格配置
+     *
+     * @param priceId 电费价格配置主键
+     * @return 电费价格配置
+     */
+    @Override
+    public ElecPrice selectElecPriceByPriceId(Long priceId) {
+        return elecPriceMapper.selectElecPriceByPriceId(priceId);
+    }
+
+    /**
+     * 查询电费价格配置列表
+     *
+     * @param elecPrice 电费价格配置
+     * @return 电费价格配置
+     */
+    @Override
+    public List<ElecPrice> selectElecPriceList(ElecPrice elecPrice) {
+        return elecPriceMapper.selectElecPriceList(elecPrice);
+    }
+
+    /**
+     * 新增电费价格配置
+     *
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    @Override
+    public int insertElecPrice(ElecPrice elecPrice) {
+        return elecPriceMapper.insertElecPrice(elecPrice);
+    }
+
+    /**
+     * 修改电费价格配置
+     *
+     * @param elecPrice 电费价格配置
+     * @return 结果
+     */
+    @Override
+    public int updateElecPrice(ElecPrice elecPrice) {
+        return elecPriceMapper.updateElecPrice(elecPrice);
+    }
+
+    /**
+     * 批量删除电费价格配置
+     *
+     * @param priceIds 需要删除的电费价格配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteElecPriceByPriceIds(Long[] priceIds) {
+        return elecPriceMapper.deleteElecPriceByPriceIds(priceIds);
+    }
+
+    /**
+     * 删除电费价格配置信息
+     *
+     * @param priceId 电费价格配置主键
+     * @return 结果
+     */
+    @Override
+    public int deleteElecPriceByPriceId(Long priceId) {
+        return elecPriceMapper.deleteElecPriceByPriceId(priceId);
+    }
+
+    /**
+     * 根据月份和时段获取价格
+     *
+     * @param localDate 时间,只取月份
+     * @param hour      小时
+     * @return 电价
+     */
+    @Override
+    public BigDecimal getPrice(LocalDate localDate, int hour) {
+        ElecPeriod period = periodService.selectElecPeriodByPeriodId(1L);
+        int year = localDate.getYear();
+        int month = localDate.getMonthValue();
+        ElecPrice priceObj = selectElecPriceByMonth(year, month);
+
+        // 判断月份是春秋还是夏冬
+        boolean isSummerAutumn = getNumbers(period.getSaMonths(), true).contains(month);
+
+        // 根据月份和时段获取价格
+        if (isSummerAutumn) {
+            return getPriceByPeriod(period.getSaPeak(), period.getSaFlat(), period.getSaValley(), period.getSaSuperPeak(), hour, priceObj);
+        } else {
+            return getPriceByPeriod(period.getSwPeak(), period.getSwFlat(), period.getSwValley(), period.getSwSuperPeak(), hour, priceObj);
+        }
+    }
+
+    /**
+     * 根据时段获取价格
+     */
+    private BigDecimal getPriceByPeriod(String peakPeriod, String flatPeriod, String valleyPeriod, String superPeakPeriod, int hour, ElecPrice priceObj) {
+        if (getNumbers(peakPeriod, false).contains(hour)) {
+            return priceObj.getPricePeak();
+        } else if (getNumbers(flatPeriod, false).contains(hour)) {
+            return priceObj.getPriceFlat();
+        } else if (getNumbers(valleyPeriod, false).contains(hour)) {
+            return priceObj.getPriceValley();
+        } else if (getNumbers(superPeakPeriod, false).contains(hour)) {
+            return priceObj.getPriceSuperPeak();
+        }
+        return BigDecimal.ZERO;
+    }
+
+    /**
+     * 解析 1-8,9-11这种数据
+     * 如果是月份,则包含头尾,如果是小时,则不包含尾部
+     *
+     * @param d    字符串
+     * @param flag 是否月份
+     * @return
+     */
+    private Set<Long> getNumbers(String d, boolean flag) {
+        String[] temp = d.split(",");
+        Set<Long> list = new HashSet();
+        for (String s : temp) {
+            String[] ss = s.split("-");
+            if (ss.length > 1) {
+                long st = Long.parseLong(ss[0]);
+                long ed = Long.parseLong(ss[1]);
+
+                if (!flag) {
+                    ed = ed - 1;
+                }
+                for (long i = st; i <= ed; i++) {
+                    list.add(i);
+                }
+            } else {
+                list.add(Long.parseLong(s));
+            }
+        }
+        return list;
+    }
+
+    private ElecPrice selectElecPriceByMonth(int year, int month) {
+        String monthStr = year + "-" + (month < 10 ? "0" + month : month);
+        ElecPrice search = new ElecPrice();
+        search.setPriceMonth(monthStr);
+        List<ElecPrice> list = selectElecPriceList(search);
+        if (list.size() != 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+}

+ 101 - 0
jjt-biz/src/main/resources/mapper/elec/ElecPeriodMapper.xml

@@ -0,0 +1,101 @@
+<?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.jjt.elec.mapper.ElecPeriodMapper">
+    
+    <resultMap type="ElecPeriod" id="ElecPeriodResult">
+        <result property="periodId"    column="PERIOD_ID"    />
+        <result property="saMonths"    column="SA_MONTHS"    />
+        <result property="swMonths"    column="SW_MONTHS"    />
+        <result property="saPeak"    column="SA_PEAK"    />
+        <result property="saValley"    column="SA_VALLEY"    />
+        <result property="saFlat"    column="SA_FLAT"    />
+        <result property="saSuperPeak"    column="SA_SUPER_PEAK"    />
+        <result property="swPeak"    column="SW_PEAK"    />
+        <result property="swValley"    column="SW_VALLEY"    />
+        <result property="swFlat"    column="SW_FLAT"    />
+        <result property="swSuperPeak"    column="SW_SUPER_PEAK"    />
+    </resultMap>
+
+    <sql id="selectElecPeriodVo">
+        select PERIOD_ID, SA_MONTHS, SW_MONTHS, SA_PEAK, SA_VALLEY, SA_FLAT, SA_SUPER_PEAK, SW_PEAK, SW_VALLEY, SW_FLAT, SW_SUPER_PEAK from ELEC_PERIOD
+    </sql>
+
+    <select id="selectElecPeriodList" parameterType="ElecPeriod" resultMap="ElecPeriodResult">
+        <include refid="selectElecPeriodVo"/>
+        <where>  
+            <if test="saMonths != null  and saMonths != ''"> and SA_MONTHS = #{saMonths}</if>
+            <if test="swMonths != null  and swMonths != ''"> and SW_MONTHS = #{swMonths}</if>
+            <if test="saPeak != null  and saPeak != ''"> and SA_PEAK = #{saPeak}</if>
+            <if test="saValley != null  and saValley != ''"> and SA_VALLEY = #{saValley}</if>
+            <if test="saFlat != null  and saFlat != ''"> and SA_FLAT = #{saFlat}</if>
+            <if test="saSuperPeak != null  and saSuperPeak != ''"> and SA_SUPER_PEAK = #{saSuperPeak}</if>
+            <if test="swPeak != null  and swPeak != ''"> and SW_PEAK = #{swPeak}</if>
+            <if test="swValley != null  and swValley != ''"> and SW_VALLEY = #{swValley}</if>
+            <if test="swFlat != null  and swFlat != ''"> and SW_FLAT = #{swFlat}</if>
+            <if test="swSuperPeak != null  and swSuperPeak != ''"> and SW_SUPER_PEAK = #{swSuperPeak}</if>
+        </where>
+    </select>
+    
+    <select id="selectElecPeriodByPeriodId" parameterType="Long" resultMap="ElecPeriodResult">
+        <include refid="selectElecPeriodVo"/>
+        where PERIOD_ID = #{periodId}
+    </select>
+
+    <insert id="insertElecPeriod" parameterType="ElecPeriod" useGeneratedKeys="true" keyProperty="periodId">
+        insert into ELEC_PERIOD
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="saMonths != null">SA_MONTHS,</if>
+            <if test="swMonths != null">SW_MONTHS,</if>
+            <if test="saPeak != null">SA_PEAK,</if>
+            <if test="saValley != null">SA_VALLEY,</if>
+            <if test="saFlat != null">SA_FLAT,</if>
+            <if test="saSuperPeak != null">SA_SUPER_PEAK,</if>
+            <if test="swPeak != null">SW_PEAK,</if>
+            <if test="swValley != null">SW_VALLEY,</if>
+            <if test="swFlat != null">SW_FLAT,</if>
+            <if test="swSuperPeak != null">SW_SUPER_PEAK,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="saMonths != null">#{saMonths},</if>
+            <if test="swMonths != null">#{swMonths},</if>
+            <if test="saPeak != null">#{saPeak},</if>
+            <if test="saValley != null">#{saValley},</if>
+            <if test="saFlat != null">#{saFlat},</if>
+            <if test="saSuperPeak != null">#{saSuperPeak},</if>
+            <if test="swPeak != null">#{swPeak},</if>
+            <if test="swValley != null">#{swValley},</if>
+            <if test="swFlat != null">#{swFlat},</if>
+            <if test="swSuperPeak != null">#{swSuperPeak},</if>
+         </trim>
+    </insert>
+
+    <update id="updateElecPeriod" parameterType="ElecPeriod">
+        update ELEC_PERIOD
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="saMonths != null">SA_MONTHS = #{saMonths},</if>
+            <if test="swMonths != null">SW_MONTHS = #{swMonths},</if>
+            <if test="saPeak != null">SA_PEAK = #{saPeak},</if>
+            <if test="saValley != null">SA_VALLEY = #{saValley},</if>
+            <if test="saFlat != null">SA_FLAT = #{saFlat},</if>
+            <if test="saSuperPeak != null">SA_SUPER_PEAK = #{saSuperPeak},</if>
+            <if test="swPeak != null">SW_PEAK = #{swPeak},</if>
+            <if test="swValley != null">SW_VALLEY = #{swValley},</if>
+            <if test="swFlat != null">SW_FLAT = #{swFlat},</if>
+            <if test="swSuperPeak != null">SW_SUPER_PEAK = #{swSuperPeak},</if>
+        </trim>
+        where PERIOD_ID = #{periodId}
+    </update>
+
+    <delete id="deleteElecPeriodByPeriodId" parameterType="Long">
+        delete from ELEC_PERIOD where PERIOD_ID = #{periodId}
+    </delete>
+
+    <delete id="deleteElecPeriodByPeriodIds" parameterType="String">
+        delete from ELEC_PERIOD where PERIOD_ID in 
+        <foreach item="periodId" collection="array" open="(" separator="," close=")">
+            #{periodId}
+        </foreach>
+    </delete>
+</mapper>

+ 76 - 0
jjt-biz/src/main/resources/mapper/elec/ElecPriceMapper.xml

@@ -0,0 +1,76 @@
+<?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.jjt.elec.mapper.ElecPriceMapper">
+
+    <resultMap type="ElecPrice" id="ElecPriceResult">
+        <result property="priceId" column="PRICE_ID"/>
+        <result property="priceMonth" column="PRICE_MONTH"/>
+        <result property="pricePeak" column="PRICE_PEAK"/>
+        <result property="priceValley" column="PRICE_VALLEY"/>
+        <result property="priceFlat" column="PRICE_FLAT"/>
+        <result property="priceSuperPeak" column="PRICE_SUPER_PEAK"/>
+    </resultMap>
+
+    <sql id="selectElecPriceVo">
+        select PRICE_ID, PRICE_MONTH, PRICE_PEAK, PRICE_VALLEY, PRICE_FLAT, PRICE_SUPER_PEAK
+        from ELEC_PRICE
+    </sql>
+
+    <select id="selectElecPriceList" parameterType="ElecPrice" resultMap="ElecPriceResult">
+        <include refid="selectElecPriceVo"/>
+        <where>
+            <if test="priceMonth != null ">and PRICE_MONTH = #{priceMonth}</if>
+        </where>
+        order by PRICE_MONTH desc
+    </select>
+
+    <select id="selectElecPriceByPriceId" parameterType="Long" resultMap="ElecPriceResult">
+        <include refid="selectElecPriceVo"/>
+        where PRICE_ID = #{priceId}
+    </select>
+
+    <insert id="insertElecPrice" parameterType="ElecPrice" useGeneratedKeys="true" keyProperty="priceId">
+        insert into ELEC_PRICE
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="priceMonth != null">PRICE_MONTH,</if>
+            <if test="pricePeak != null">PRICE_PEAK,</if>
+            <if test="priceValley != null">PRICE_VALLEY,</if>
+            <if test="priceFlat != null">PRICE_FLAT,</if>
+            <if test="priceSuperPeak != null">PRICE_SUPER_PEAK,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="priceMonth != null">#{priceMonth},</if>
+            <if test="pricePeak != null">#{pricePeak},</if>
+            <if test="priceValley != null">#{priceValley},</if>
+            <if test="priceFlat != null">#{priceFlat},</if>
+            <if test="priceSuperPeak != null">#{priceSuperPeak},</if>
+        </trim>
+    </insert>
+
+    <update id="updateElecPrice" parameterType="ElecPrice">
+        update ELEC_PRICE
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="priceMonth != null">PRICE_MONTH = #{priceMonth},</if>
+            <if test="pricePeak != null">PRICE_PEAK = #{pricePeak},</if>
+            <if test="priceValley != null">PRICE_VALLEY = #{priceValley},</if>
+            <if test="priceFlat != null">PRICE_FLAT = #{priceFlat},</if>
+            <if test="priceSuperPeak != null">PRICE_SUPER_PEAK = #{priceSuperPeak},</if>
+        </trim>
+        where PRICE_ID = #{priceId}
+    </update>
+
+    <delete id="deleteElecPriceByPriceId" parameterType="Long">
+        delete
+        from ELEC_PRICE
+        where PRICE_ID = #{priceId}
+    </delete>
+
+    <delete id="deleteElecPriceByPriceIds" parameterType="String">
+        delete from ELEC_PRICE where PRICE_ID in
+        <foreach item="priceId" collection="array" open="(" separator="," close=")">
+            #{priceId}
+        </foreach>
+    </delete>
+</mapper>