DYL0109
2025-02-06 3bd60f203289a39d97ad2e109b1e83a714eca8e0
!43 !42 Merge remote-tracking branch 'origin/develop1.0' into develop_alioo
Merge pull request !43 from DYL0109/develop1.0
已修改15个文件
已添加23个文件
已删除75个文件
14388 ■■■■ 文件已修改
zhitan-admin/src/main/java/com/zhitan/web/controller/basicdata/SysEnerclassController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/basicdata/SysEnergyController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/saving/EnergySavingProgramController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/saving/PoliciesRegulationsManagementController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/META-INF/spring-devtools.properties 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/application-dev.yml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/application-prod.yml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/application.yml 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/banner.txt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/i18n/messages.properties 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/logback.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/target/classes/mybatis/mybatis-config.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java 1053 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/core/domain/BaseEntity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/utils/PageUtils.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/utils/id/IdGenUtil.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-common/src/main/java/com/zhitan/common/utils/id/IncrLongIdUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/generator.yml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/mapper/generator/GenTableColumnMapper.xml 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/mapper/generator/GenTableMapper.xml 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/controller.java.vm 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/domain.java.vm 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/mapper.java.vm 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/service.java.vm 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/serviceImpl.java.vm 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/java/sub-domain.java.vm 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/js/api.js.vm 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/sql/sql.vm 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/vue/index-tree.vue.vm 505 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/vue/index.vue.vm 602 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/vue/v3/index-tree.vue.vm 474 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/vue/v3/index.vue.vm 590 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-generator/target/classes/vm/xml/mapper.xml.vm 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-quartz/target/classes/mapper/quartz/SysJobMapper.xml 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/peakvalley/domain/dto/PeakValleyDTO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/EnergySavingProgramDTO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/PoliciesRegulationsDTO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/PoliciesRegulationsManagementPageDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/entity/EnergySavingProgram.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/entity/PoliciesRegulationsManagement.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/DropdownListVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/EnergySavingProgramVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/PoliciesRegulationsManagementDetailVO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/PoliciesRegulationsManagementPageVO.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/mapper/EnergySavingProgramMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/mapper/PoliciesRegulationsManagementMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/service/IEnergySavingProgramService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/service/IPoliciesRegulationsManagementService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/service/impl/EnergySavingProgramServiceImpl.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/saving/service/impl/PoliciesRegulationsManagementServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/java/com/zhitan/system/service/impl/SysConfigServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/resources/mapper/saving/EnergySavingProgramMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/src/main/resources/mapper/saving/PoliciesRegulationsManagementMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/alarm/AlarmItemMapper.xml 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/alarm/AlarmLimitTypeMapper.xml 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/alarm/HistoryAlarmMapper.xml 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/alarm/RealtimeAlarmMapper.xml 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/auxiliaryinput/ProductOutputMapper.xml 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/FacilityAnnexMapper.xml 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/FacilityArchivesMapper.xml 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/MeterAnnexMapper.xml 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/MeterImplementCountMapper.xml 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/MeterImplementMapper.xml 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/SysEnerclassMapper.xml 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/basicdata/SysEnergyMapper.xml 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/comprehensivestatistics/ComprehensiveStatisticsMapper.xml 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/comprehensivestatistics/DailyComprehensiveMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/dataitem/DataItemMapper.xml 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/energyIndicators/EnergyIndicatorsMapper.xml 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/gatewaysetting/GatewaySettingMapper.xml 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/keyequipment/DailyKeyEquipmentMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/keyequipment/YearKeyEquipmentMapper.xml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/meter/MeterImplementMapper.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/CalcFunctionMapper.xml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/DaqTemplateMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/EnergyIndexMapper.xml 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/IndexFormulaMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/IndexStorageMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/ModelInfoMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/model/ModelNodeMapper.xml 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/peakvalley/ElectricityDataItemMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/peakvalley/ElectricityPriceDateMapper.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/peakvalley/EletricityPriceMapper.xml 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/realtimedata/PeriodDataMapper.xml 501 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/realtimedata/SysEquipmentFileMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysConfigMapper.xml 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysDeptMapper.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysDictDataMapper.xml 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysDictTypeMapper.xml 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysLoginInfoMapper.xml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysMenuMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysNameConfigMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysNoticeMapper.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysOperLogMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysPostMapper.xml 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysRoleDeptMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysRoleMapper.xml 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysRoleMenuMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysUserMapper.xml 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysUserPostMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-system/target/classes/mapper/system/SysUserRoleMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/api/policy/policy.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/api/policy/project.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/components/FileUpload/index.vue 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/utils/dict.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/energyconservation/policyrule/components/EditModal.vue 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/energyconservation/policyrule/policyRule.vue 187 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/energyconservation/projectmanage/projectmanage/components/EditModal.vue 198 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/energyconservation/projectmanage/projectmanage/projectManage.vue 205 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/modelconfiguration/calculationformula/calculationFormula.vue 109 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-vue/src/views/monitor/cache/index.vue 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhitan-admin/src/main/java/com/zhitan/web/controller/basicdata/SysEnerclassController.java
@@ -42,7 +42,7 @@
    /**
     * æŸ¥è¯¢æ‰€æœ‰èƒ½æºå“ç§è®¾ç½®åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('enerInfoManage:enerclass:list')")
//    @PreAuthorize("@ss.hasPermi('enerInfoManage:enerclass:list')")
    @GetMapping("/list")
    public AjaxResult list(SysEnerclass sysEnerclass)
    {
zhitan-admin/src/main/java/com/zhitan/web/controller/basicdata/SysEnergyController.java
@@ -36,7 +36,7 @@
    /**
     * æŸ¥è¯¢enerclassname能源类型名称下拉框
     */
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:getenerclassname')")
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:list')")
    @GetMapping("/getenerclassname")
    public AjaxResult list()
    {
@@ -82,7 +82,7 @@
    /**
     * èŽ·å–energy详细信息
     */
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:query')")
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:list')")
    @GetMapping(value = "/{enerid}")
    public AjaxResult getInfo(@PathVariable("enerid") Integer enerid)
    {
@@ -147,7 +147,7 @@
    /**
     * ä¿å­˜èƒ½æºå•价设置
     */
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:updateEnergyPrice')")
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:edit')")
    @Log(title = "energy", businessType = BusinessType.UPDATE)
    @PutMapping("/updateEnergyPrice")
    public AjaxResult updateEnergyPrice(@RequestBody(required = false) SysEnergy sysEnergy) throws ParseException {
@@ -173,7 +173,7 @@
    /**
     * ä¿å­˜èƒ½æºæŠ˜æ ‡ç³»æ•°è®¾ç½®
     */
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:updateEnergyCoefficient')")
    @PreAuthorize("@ss.hasPermi('enerInfoManage:energy:edit')")
    @Log(title = "energy", businessType = BusinessType.UPDATE)
    @PutMapping("/updateEnergyCoefficient")
    public AjaxResult updateEnergyCoefficient(@RequestBody(required = false) SysEnergy sysEnergy) throws ParseException {
zhitan-admin/src/main/java/com/zhitan/web/controller/saving/EnergySavingProgramController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.zhitan.web.controller.saving;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.common.core.page.TableDataInfo;
import com.zhitan.saving.domain.dto.EnergySavingProgramDTO;
import com.zhitan.saving.domain.entity.EnergySavingProgram;
import com.zhitan.saving.domain.vo.EnergySavingProgramVO;
import com.zhitan.saving.service.IEnergySavingProgramService;
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;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
 * Controller
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
@RestController
@RequestMapping("/energySavingProject")
@Api(tags = "节能项目管理")
public class EnergySavingProgramController extends BaseController {
    @Resource
    private IEnergySavingProgramService energySavingProgramService;
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * åˆ—表
     */
    @GetMapping("/page")
    @PreAuthorize("@ss.hasPermi('energySavingProject:list')")
    @ApiOperation(value = "分页列表")
    public TableDataInfo list(EnergySavingProgram energySavingProgram) {
        Page<EnergySavingProgramVO> list = energySavingProgramService.selectEnergySavingProgramList(energySavingProgram);
        return getDataTable(list);
    }
    /**
     * èŽ·å–
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation(value = "查询详情")
    @PreAuthorize("@ss.hasPermi('energySavingProject')")
    @GetMapping(value = "getById")
    public AjaxResult getInfo(@RequestParam("id") Long id) {
        return success(energySavingProgramService.selectEnergySavingProgramById(id));
    }
    /**
     * æ–°å¢ž
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    @ApiOperation(value = "新增")
    @PostMapping("add")
    public AjaxResult add(  @RequestBody EnergySavingProgramDTO dto) {
        return energySavingProgramService.insertEnergySavingProgram(dto);
    }
    /**
     * ä¿®æ”¹
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    @ApiOperation(value = "更新")
    @PostMapping("edit")
    public AjaxResult edit(@RequestBody EnergySavingProgramDTO dto) {
        return energySavingProgramService.updateEnergySavingProgram(dto);
    }
    /**
     * åˆ é™¤
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    @DeleteMapping("del/{id}")
    @ApiOperation(value = "删除")
    public AjaxResult remove(@PathVariable  Long id) {
        return energySavingProgramService.deleteEnergySavingProgramById(id);
    }
}
zhitan-admin/src/main/java/com/zhitan/web/controller/saving/PoliciesRegulationsManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.zhitan.web.controller.saving;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.common.core.page.TableDataInfo;
import com.zhitan.saving.domain.dto.PoliciesRegulationsDTO;
import com.zhitan.saving.domain.dto.PoliciesRegulationsManagementPageDTO;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementDetailVO;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementPageVO;
import com.zhitan.saving.service.IPoliciesRegulationsManagementService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * æ”¿ç­–法规Controller
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
@RestController
@Api(tags = "政策法规管理")
@RequestMapping("/policiesRegulations")
public class PoliciesRegulationsManagementController extends BaseController {
    @Resource
    private IPoliciesRegulationsManagementService policiesRegulationsService;
    /**
     * æ”¿ç­–法规-列表查询
     */
    @GetMapping("/page")
    @ApiOperation(value = "分页列表")
    public TableDataInfo page(PoliciesRegulationsManagementPageDTO pageDTO) {
        Page<PoliciesRegulationsManagementPageVO> responsePage = policiesRegulationsService.getPageList(pageDTO);
        return getDataTable(responsePage);
    }
    /**
     * æ”¿ç­–法规-查询详情
     */
    @GetMapping("/detail")
    @ApiOperation(value = "查询详情")
    public AjaxResult page(@RequestParam("id") Long id) {
        PoliciesRegulationsManagementDetailVO responsePage = policiesRegulationsService.getDetail(id);
        return success(responsePage);
    }
    /**
     * æ”¿ç­–法规-新增
     */
    @PostMapping("/add")
    @ApiOperation(value = "新增")
    public AjaxResult add(@RequestBody @Validated PoliciesRegulationsDTO addDTO) {
        policiesRegulationsService.add(addDTO);
        return success();
    }
    /**
     * æ”¿ç­–法规-更新
     */
    @PostMapping("/edit")
    @ApiOperation(value = "更新")
    public AjaxResult edit(@RequestBody @Validated PoliciesRegulationsDTO editDTO) {
        policiesRegulationsService.edit(editDTO);
        return success();
    }
    /**
     * æ”¿ç­–法规-删除
     */
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除")
    public AjaxResult delete(@PathVariable("id") Long id) {
        policiesRegulationsService.delete(id);
        return success();
    }
}
zhitan-admin/target/classes/META-INF/spring-devtools.properties
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/application-dev.yml
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/application-prod.yml
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/application.yml
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/banner.txt
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/i18n/messages.properties
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/logback.xml
ÎļþÒÑɾ³ý
zhitan-admin/target/classes/mybatis/mybatis-config.xml
ÎļþÒÑɾ³ý
zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
@@ -1,5 +1,7 @@
package com.zhitan.common.constant;
import java.math.BigDecimal;
/**
 * @Description: å¸¸é‡å°è£…
 * @author: yxw
@@ -22,10 +24,7 @@
     * å­—符串数字 -1
     */
    public static final String STR_NUMBER_MINUS_ONE = "-1";
    /**
     * å­—符串数字 0
     */
    public static final String STR_NUMBER_0 = "0";
    /**
     * å­—符串数字 1
     */
@@ -107,6 +106,90 @@
     */
    public static final int DIGIT_4 = 4;
    /**
     * æ•°å­— 5
     */
    public static final int DIGIT_5 = 5;
    /**
     * æ•°å­— 6
     */
    public static final int DIGIT_6 = 6;
    /**
     * æ•°å­— 7
     */
    public static final int DIGIT_7 = 7;
    /**
     * æ•°å­— 8
     */
    public static final int DIGIT_8 = 8;
    /**
     * æ•°å­— 9
     */
    public static final int DIGIT_9 = 9;
    /**
     * æ•°å­— 10
     */
    public static final int DIGIT_10 = 10;
    /**
     * æ•°å­— 11
     */
    public static final int DIGIT_11 = 11;
    /**
     * æ•°å­— 12
     */
    public static final int DIGIT_12 = 12;
    /**
     * æ•°å­— 13
     */
    public static final int DIGIT_13 = 13;
    /**
     * æ•°å­— 14
     */
    public static final int DIGIT_14 = 14;
    /**
     * æ•°å­— 15
     */
    public static final int DIGIT_15 = 15;
    /**
     * æ•°å­— 16
     */
    public static final int DIGIT_16 = 16;
    /**
     * æ•°å­— 23
     */
    public static final int DIGIT_23 = 23;
    /**
     * æ•°å­— 24
     */
    public static final int DIGIT_24 = 24;
    /**
     * æ•°å­— 30
     */
    public static final int DIGIT_30 = 30;
    /**
     * æ•°å­— 31
     */
    public static final int DIGIT_31 = 31;
    /**
     * æ•°å­— 32
     */
    public static final int DIGIT_32 = 32;
    /**
     * æ•°å­— 3600
     */
    public static final int DIGIT_3600 = 3600;
    /**
     * æ•°å­— 50
     */
    public static final int DIGIT_50 = 50;
    /**
     * æ•°å­— 59
     */
    public static final int DIGIT_59 = 59;
    /**
     * æ•°å­— 150
     */
    public static final int DIGIT_150 = 150;
    /**
     * æ•°å­— 100
     */
    public static final int DIGIT_100 = 100;
@@ -122,6 +205,48 @@
     * æ•°å­— -3
     */
    public static final int DIGIT_MINUS_3 = -3;
    /**
     * æ•°å­— 500
     */
    public static final int DIGIT_500 = 500;
    /**
     * æ•°å­— 10000
     */
    public static final int DIGIT_10000 = 10000;
    /**
     * æ•°å­— 100000000
     */
    public static final int DIGIT_100000000 = 100000000;
    /**
     * æœ€å°å€¼åˆå§‹åŒ–
     */
    public static final double MIN_INIT_VALUE = -99;
    /**
     * DOUBLE æ•°å­—0.0
     */
    public static final Double DOUBLE_ZERO = 0.0;
    /**
     * æ•°å­— -5
     */
    public static final int DIGIT_MINUS_5 = -5;
    /**
     * æ•°å­— -6
     */
    public static final int DIGIT_MINUS_6 = -6;
    /**
     * æ•°å­— -11
     */
    public static final int DIGIT_MINUS_11 = -11;
    /**
     * æ•°å­— -12
     */
    public static final int DIGIT_MINUS_12 = -12;
    /**
     * è®¡ç®—点识别规则 ç´¯ç§¯é‡
     */
@@ -142,4 +267,924 @@
     * é‡ç®—接口地址
     */
    public static final String RE_CALC_INTERFACE_ADDRESS = "http://127.0.0.1:8999/computing/recalc";
////////////////////////////////
    /**
     * æ­£å¸¸çŠ¶æ€
     */
    public static final Integer STATUS_NORMAL = 0;
    /**
     * ç¦ç”¨çŠ¶æ€
     */
    public static final Integer STATUS_DISABLE = -1;
    /**
     * åˆ é™¤æ ‡å¿—
     */
    public static final Integer DEL_FLAG_1 = 1;
    /**
     * æœªåˆ é™¤
     */
    public static final Integer DEL_FLAG_0 = 0;
    /**
     * ç³»ç»Ÿæ—¥å¿—类型: ç™»å½•
     */
    public static final int LOG_TYPE_1 = 1;
    /**
     * ç³»ç»Ÿæ—¥å¿—类型: æ“ä½œ
     */
    public static final int LOG_TYPE_2 = 2;
    /**
     * æ“ä½œæ—¥å¿—类型: æŸ¥è¯¢
     */
    public static final int OPERATE_TYPE_1 = 1;
    /**
     * æ“ä½œæ—¥å¿—类型: æ·»åŠ 
     */
    public static final int OPERATE_TYPE_2 = 2;
    /**
     * æ“ä½œæ—¥å¿—类型: æ›´æ–°
     */
    public static final int OPERATE_TYPE_3 = 3;
    /**
     * æ“ä½œæ—¥å¿—类型: åˆ é™¤
     */
    public static final int OPERATE_TYPE_4 = 4;
    /**
     * æ“ä½œæ—¥å¿—类型: å€’å…¥
     */
    public static final int OPERATE_TYPE_5 = 5;
    /**
     * æ“ä½œæ—¥å¿—类型: å¯¼å‡º
     */
    public static final int OPERATE_TYPE_6 = 6;
    /**
     * ç™¾åˆ†ä¹‹0
     */
    public static final String PERCENTAGE_ZERO = "0.00%";
    /**
     * ç™¾åˆ†å·
     */
    public static final String PERCENTAGE_FLAG = "%";
    /**
     * ä¿ç•™ä¸¤ä½å°æ•°
     */
    public static final String KEEP_TWO_DECIMAL = "%.2f";
    /**
     * ç§Ÿæˆ·1
     */
    public static final int TENANT_1 = 1;
    /**
     * {@code 500 Server Error} (HTTP/1.0 - RFC 1945)
     */
    public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
    /**
     * {@code 200 OK} (HTTP/1.0 - RFC 1945)
     */
    public static final Integer SC_OK_200 = 200;
    /**
     * è®¿é—®æƒé™è®¤è¯æœªé€šè¿‡ 510
     */
    public static final Integer SC_JEECG_NO_AUTHZ = 510;
    /**
     * ç™»å½•用户Shiro权限缓存KEY前缀
     */
    public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
    /**
     * ç™»å½•用户Token令牌缓存KEY前缀
     */
    public static final String PREFIX_USER_TOKEN = "user:token:";
    /**
     * å”¯ä¸€ç™»å½•登录用户Token令牌缓存KEY前缀
     */
    public static final String PREFIX_ONLY_USER_TOKEN = "only:user:token:";
    /**
     * å”¯ä¸€ç™»å½•登录被离线后标识前缀
     */
    public static final String PREFIX_ONLY_USER_SINGLE_TOKEN = "prefix_only_user_single_token_";
    /**
     * ç™»å½•用户租户redis缓存信息名称
     */
    public static final String PREFIX_TENANT_INFO_NAME = "sys:tenant:name:";
    /**
     * Token缓存时间:3600秒即一小时
     */
    public static final int TOKEN_EXPIRE_TIME = 3600;
    /**
     * 0:一级菜单
     */
    public static final Integer MENU_TYPE_0 = 0;
    /**
     * 1:子菜单
     */
    public static final Integer MENU_TYPE_1 = 1;
    /**
     * 2:按钮权限
     */
    public static final Integer MENU_TYPE_2 = 2;
    /**
     * é€šå‘Šå¯¹è±¡ç±»åž‹ï¼ˆUSER:指定用户,ALL:全体用户)
     */
    public static final String MSG_TYPE_UESR = "USER";
    public static final String MSG_TYPE_ALL = "ALL";
    /**
     * å‘布状态(0未发布,1已发布,2已撤销)
     */
    public static final String NO_SEND = "0";
    public static final String HAS_SEND = "1";
    public static final String HAS_CANCLE = "2";
    /**
     * é˜…读状态(0未读,1已读)
     */
    public static final String HAS_READ_FLAG = "1";
    public static final String NO_READ_FLAG = "0";
    /**
     * ä¼˜å…ˆçº§ï¼ˆL低,M中,H高)
     */
    public static final String PRIORITY_L = "L";
    public static final String PRIORITY_M = "M";
    public static final String PRIORITY_H = "H";
    /**
     * çŸ­ä¿¡æ¨¡æ¿æ–¹å¼  0 .登录模板、1.注册模板、2.忘记密码模板
     */
    public static final String SMS_TPL_TYPE_0 = "0";
    public static final String SMS_TPL_TYPE_1 = "1";
    public static final String SMS_TPL_TYPE_2 = "2";
    /**
     * çŠ¶æ€(0无效1有效)
     */
    public static final String STATUS_0 = "0";
    public static final String STATUS_1 = "1";
    /**
     * åŒæ­¥å·¥ä½œæµå¼•擎1同步0不同步
     */
    public static final Integer ACT_SYNC_1 = 1;
    public static final Integer ACT_SYNC_0 = 0;
    /**
     * æ¶ˆæ¯ç±»åž‹1:通知公告2:系统消息
     */
    public static final String MSG_CATEGORY_1 = "1";
    public static final String MSG_CATEGORY_2 = "2";
    /**
     * æ˜¯å¦é…ç½®èœå•的数据权限 1是0否
     */
    public static final Integer RULE_FLAG_0 = 0;
    public static final Integer RULE_FLAG_1 = 1;
    /**
     * æ˜¯å¦ç”¨æˆ·å·²è¢«å†»ç»“ 1正常(解冻) 2冻结
     */
    public static final Integer USER_UNFREEZE = 1;
    public static final Integer USER_FREEZE = 2;
    /**
     * å­—典翻译文本后缀
     */
    public static final String DICT_TEXT_SUFFIX = "_dictText";
    /**
     * è¡¨å•设计器主表类型
     */
    public static final Integer DESIGN_FORM_TYPE_MAIN = 1;
    /**
     * è¡¨å•设计器子表表类型
     */
    public static final Integer DESIGN_FORM_TYPE_SUB = 2;
    /**
     * è¡¨å•设计器URL授权通过
     */
    public static final Integer DESIGN_FORM_URL_STATUS_PASSED = 1;
    /**
     * è¡¨å•设计器URL授权未通过
     */
    public static final Integer DESIGN_FORM_URL_STATUS_NOT_PASSED = 2;
    /**
     * è¡¨å•设计器新增 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_ADD = "add";
    /**
     * è¡¨å•设计器修改 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_EDIT = "edit";
    /**
     * è¡¨å•设计器详情 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_DETAIL = "detail";
    /**
     * è¡¨å•设计器复用数据 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_REUSE = "reuse";
    /**
     * è¡¨å•设计器编辑 Flag ï¼ˆå·²å¼ƒç”¨ï¼‰
     */
    public static final String DESIGN_FORM_URL_TYPE_VIEW = "view";
    /**
     * online参数值设置(是:Y, å¦ï¼šN)
     */
    public static final String ONLINE_PARAM_VAL_IS_TURE = "Y";
    public static final String ONLINE_PARAM_VAL_IS_FALSE = "N";
    /**
     * æ–‡ä»¶ä¸Šä¼ ç±»åž‹ï¼ˆæœ¬åœ°ï¼šlocal,Minio:minio,阿里云:alioss)
     */
    public static final String UPLOAD_TYPE_LOCAL = "local";
    public static final String UPLOAD_TYPE_MINIO = "minio";
    public static final String UPLOAD_TYPE_OSS = "alioss";
    /**
     * æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰æ¡¶åç§°
     */
    public static final String UPLOAD_CUSTOM_BUCKET = "eoafile";
    /**
     * æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String UPLOAD_CUSTOM_PATH = "eoafile";
    /**
     * æ–‡ä»¶å¤–链接有效天数
     */
    public static final Integer UPLOAD_EFFECTIVE_DAYS = 1;
    /**
     * å‘˜å·¥èº«ä»½ ï¼ˆ1:普通员工  2:上级)
     */
    public static final Integer USER_IDENTITY_1 = 1;
    public static final Integer USER_IDENTITY_2 = 2;
    /**
     * sys_user è¡¨ username å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
    /**
     * sys_user è¡¨ work_no å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
    /**
     * sys_user è¡¨ phone å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
    /**
     * sys_user è¡¨ email å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
    /**
     * sys_quartz_job è¡¨ job_class_name å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
    /**
     * sys_position è¡¨ code å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_CODE = "uniq_code";
    /**
     * sys_role è¡¨ code å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
    /**
     * sys_depart è¡¨ code å”¯ä¸€é”®ç´¢å¼•
     */
    public static final String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
    /**
     * åœ¨çº¿èŠå¤© æ˜¯å¦ä¸ºé»˜è®¤åˆ†ç»„
     */
    public static final String IM_DEFAULT_GROUP = "1";
    /**
     * åœ¨çº¿èŠå¤© å›¾ç‰‡æ–‡ä»¶ä¿å­˜è·¯å¾„
     */
    public static final String IM_UPLOAD_CUSTOM_PATH = "imfile";
    /**
     * åœ¨çº¿èŠå¤© ç”¨æˆ·çŠ¶æ€
     */
    public static final String IM_STATUS_ONLINE = "online";
    /**
     * åœ¨çº¿èŠå¤© SOCKET消息类型
     */
    public static final String IM_SOCKET_TYPE = "chatMessage";
    /**
     * åœ¨çº¿èŠå¤© æ˜¯å¦å¼€å¯é»˜è®¤æ·»åŠ å¥½å‹ 1是 0否
     */
    public static final String IM_DEFAULT_ADD_FRIEND = "1";
    /**
     * åœ¨çº¿èŠå¤© ç”¨æˆ·å¥½å‹ç¼“存前缀
     */
    public static final String IM_PREFIX_USER_FRIEND_CACHE = "sys:cache:im:im_prefix_user_friend_";
    /**
     * è€ƒå‹¤è¡¥å¡ä¸šåŠ¡çŠ¶æ€ ï¼ˆ1:同意  2:不同意)
     */
    public static final String SIGN_PATCH_BIZ_STATUS_1 = "1";
    public static final String SIGN_PATCH_BIZ_STATUS_2 = "2";
    /**
     * å…¬æ–‡æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String UPLOAD_CUSTOM_PATH_OFFICIAL = "officialdoc";
    /**
     * å…¬æ–‡æ–‡æ¡£ä¸‹è½½è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String DOWNLOAD_CUSTOM_PATH_OFFICIAL = "officaldown";
    /**
     * WPS存储值类别(1 code文号 2 text(WPS模板还是公文发文模板))
     */
    public static final String WPS_TYPE_1 = "1";
    public static final String WPS_TYPE_2 = "2";
    public final static String X_ACCESS_TOKEN = "X-Access-Token";
    public final static String X_SIGN = "X-Sign";
    public final static String X_TIMESTAMP = "X-TIMESTAMP";
    public final static String TOKEN_IS_INVALID_MSG = "Token失效,请重新登录!";
    public final static String TOKEN_IS_SINGLE_MSG = "您已经在其他地方登录!";
    /**
     * å¤šç§Ÿæˆ· è¯·æ±‚头
     */
    public final static String TENANT_ID = "tenant-id";
    /**
     * å¾®æœåŠ¡è¯»å–é…ç½®æ–‡ä»¶å±žæ€§ æœåŠ¡åœ°å€
     */
    public final static String CLOUD_SERVER_KEY = "spring.cloud.nacos.discovery.server-addr";
    /**
     * ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š0=未发布
     */
    public static final String ANNOUNCEMENT_SEND_STATUS_0 = "0";
    /**
     * ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š1=已发布
     */
    public static final String ANNOUNCEMENT_SEND_STATUS_1 = "1";
    /**
     * ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š2=已撤销
     */
    public static final String ANNOUNCEMENT_SEND_STATUS_2 = "2";
    /**
     * æ•…障报警设置点位模拟量
     */
    public static final String SEN_ALARM_CONF_VAL_TYPE_ANALOG = "analogQuantity";
    /**
     * æ•…障报警设置点位状态量
     */
    public static final String SEN_ALARM_CONF_VAL_TYPE_STATE = "stateQuantity";
    public static final String WHERE = "WHERE";
    public static final String ADMIN = "admin";
    public static final String ADMIN_NAME = "管理员";
    public static final String LOCAL_IP = "127.0.0.1";
    /**
     * å¸¸é‡å­—符串 ç©ºæ ¼
     */
    public static final String SPACE = " ";
    /**
     * å¸¸é‡å­—符串 é€—号
     */
    public static final String STR_COMMA = ",";
    /**
     * ä¸‹åˆ’线
     */
    public static final String STR_UNDERLINE = "_";
    /**
     * å¸¸é‡å­—符串 ä¸­æ–‡é€—号
     */
    public static final String CHINESE_STR_COMMA = ",";
    /**
     * å•减号 -
     */
    public static final String SINGLE_MINUS_SIGN = "-";
    /**
     * æ–œçº¿ /
     */
    public static final String STR_SLASH = "/";
    /**
     * åŠ å· +
     */
    public static final String STR_PLUS = "+";
    /**
     * å››èˆäº”å…¥
     */
    public static final String STR_ROUNDING = "%.2f";
    /**
     * å­—符串数字 0
     */
    public static final String STR_NUMBER_0 = "0";
    /**
     * å­—符串数字 0.00
     */
    public static final String STR_NUMBER_0_00 = "0.00";
    /**
     * å­—符串数字 0.0000
     */
    public static final String STR_NUMBER_0_0000 = "0.0000";
    /**
     * å­—符串数字 100%
     */
    public static final String STR_NUMBER_100 = "100%";
    /**
     * å­—符串数字 0%
     */
    public static final String STR_NUMBER_PERCENTAGE_0 = "0%";
    /**
     * å­—符串数字 100.00%
     */
    public static final String STR_NUMBER_PERCENTAGE_100 = "100.00%";
    /**
     * å¤§å†™å­—母 H
     */
    public static final String WORD_H = "H";
    /**
     * å­—母 LJL
     */
    public static final String WORD_LJL = "LJL";
    /**
     * å°æ•°0
     */
    public static final double DIGIT_DOUBLE_0 = 0D;
    /**
     * å°æ•°0
     */
    public static final double DIGIT_DOUBLE_00 = 0.00D;
    /**
     * å°æ•°1
     */
    public static final double DIGIT_DOUBLE_1 = 1.0D;
    /**
     * å°æ•°100
     */
    public static final double DIGIT_DOUBLE_100 = 100D;
    /**
     * æ—¶é—´é—´éš”15分钟
     */
    public static final int TIME_SPAN_MINUTES_15 = 1000 * 60 * 15;
    /**
     * æ—¶é—´é—´éš”60分钟
     */
    public static final int TIME_SPAN_MINUTES_60 = 1000 * 60 * 60;
    /**
     * æ¯å¹´çš„æœˆæ•°
     */
    public static final int MONTHS_OF_YEAR = 12;
    /**
     * æ¯æœˆçš„天数
     */
    public static final int DAYS_OF_MONTH = 31;
    /**
     * æ¯å¤©çš„小时数
     */
    public static final int HOURS_OF_DAY = 24;
    /**
     * æ¯å°æ—¶çš„分钟数
     */
    public static final int MINUTES_OF_HOUR = 60;
    /**
     * æ¯åˆ†é’Ÿçš„ç§’æ•°
     */
    public static final int SECOND_OF_MINUTES = 60;
    /**
     * ä¸€ä¸ªç‚¹ä½ä¸€å°æ—¶çš„æ•°æ®é‡
     */
    public static final int DATA_AMOUNT_ONE_POINT_ONE_HOUR = 4;
    /**
     * è®¡ç®—点识别规则 ç´¯ç§¯é‡,sql查询使用
     */
    public static final String COMMON_STR_CALC_POINT_RULE_LJL_SQL = "\\_LJL";
    /**
     * æ•°æ®åº“查询综合能耗后缀
     */
    public static final String COMMON_STR_CALC_POINT_RULE_ZHNH_SQL = "\\_ZHNH";
    /**
     * å°–峰平谷生效配置
     */
    public static final String COMMON_JFPG_NOW_CONFIGURE = "NOW";
    /**
     * å°–峰平谷待生效配置
     */
    public static final String COMMON_JFPG_NEXT_CONFIGURE = "NEXT";
    /***
     * äººæ°‘币单位
     */
    public static final String MONEY_UNIT_RMB = "元";
    /**
     * åˆè®¡è¡Œæ•°æ®å
     */
    public static final String TABLE_ROW_NAME_SUM = "合计";
    /**
     * æ˜¾ç¤ºå­—符串 - è´¹ç”¨
     */
    public static final String STRING_SHOW_COST = "费用";
    /**
     * æ˜¾ç¤ºå­—符串 - è´¹
     */
    public static final String STRING_SHOW_COST_CHARGE = "è´¹";
    /**
     * æ˜¾ç¤ºå­—符串 - ç”¨
     */
    public static final String STRING_SHOW_USE = "用";
    /**
     * æ˜¾ç¤ºå­—符串 - é‡
     */
    public static final String STRING_SHOW_CONSUMPTION = "量";
    /**
     * å›ºå®šåˆ—名 proportionTotal
     */
    public static final String ENERGY_CONSUME_PROP_NAME_PROPORTION_TOTAL = "proportionTotal";
    /**
     * å›ºå®šåˆ—名 consumeTotal
     */
    public static final String ENERGY_CONSUME_PROP_NAME_CONSUME_TOTAL = "consumeTotal";
    /**
     * èƒ½æºå•位
     */
    public static final String ENERGY_CONSUME_PROP_NAME_CONSUME_UNIT = "consumeUnit";
    /**
     * å›ºå®šåˆ—名 energyTotal
     */
    public static final String ENERGY_CONSUME_PROP_NAME_ENERGY_TOTAL = "energyTotal";
    /**
     * å›ºå®šåˆ—名 costTotal
     */
    public static final String ENERGY_CONSUME_PROP_NAME_COST_TOTAL = "costTotal";
    /**
     * æ¶ˆè€—量单位
     */
    public static final String ENERGY_CONSUME_PROP_NAME_ENERGY_UNIT = "energyUnit";
    /**
     * æ€»æœ‰åŠŸåŠŸçŽ‡ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_ZYGGL = "\\_ActivePower_Total";
    /**
     * æ€»æœ‰åŠŸåŠŸçŽ‡ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_ZYGGL_IN_CODE = "_ActivePower_Total";
    /**
     * æœ‰åŠŸåŠŸçŽ‡Code
     */
    public static final String TAG_CODE_ZYGGL_PART = "\\_ActivePower";
    /**
     * æ€»æ— åŠŸåŠŸçŽ‡ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_ZWGGL = "ReactivePower_Total";
    /**
     * æ— åŠŸåŠŸçŽ‡Code
     */
    public static final String TAG_CODE_ZWGGL_PART = "ReactivePower";
    /**
     * æ€»åŠŸçŽ‡å› æ•° ç‚¹ä½æ¨¡æ¿code
     */
    public static final String TAG_CODE_GLYS = "PowerFactor_Total";
    /**
     * ç”µæµ
     */
    public static final String TAG_CODE_CURRENT = "Current_";
    /**
     * ç”µåŽ‹
     */
    public static final String TAG_CODE_VOLTAGE = "Voltage_";
    /**
     * åŠŸçŽ‡å› æ•°
     */
    public static final String TAG_CODE_FACTOR = "PowerFactor_";
    /**
     * åŠŸçŽ‡å› æ•°
     */
    public static final String TAG_CODE_FACTOR_PART = "PowerFactor";
    /**
     * A相
     */
    public static final String A_PHASE = "A";
    /**
     * B相
     */
    public static final String B_PHASE = "B";
    /**
     * C相
     */
    public static final String C_PHASE = "C";
    /**
     * èƒ½æºè®¡ç®—类型(采集点)
     */
    public static final String ENERGY_INDEX_TYPE_COLLECT = "COLLECT";
    /**
     * èƒ½æºç±»åž‹(计算点)
     */
    public static final String ENERGY_INDEX_TYPE_CALCULATE = "CALCULATE";
    /**
     * æ€»
     */
    public static final String TOTAL = "Total";
    /**
     * name
     */
    public static final String STR_NAME = "name";
    /**
     * A相电流
     */
    public static final String TAG_CODE_CURRENT_A = "Current_A";
    /**
     * B相电流
     */
    public static final String TAG_CODE_CURRENT_B = "Current_B";
    /**
     * C相电流
     */
    public static final String TAG_CODE_CURRENT_C = "Current_C";
    /**
     * A相电压
     */
    public static final String TAG_CODE_VOLTAGE_A = "Voltage_A";
    /**
     * B相电压
     */
    public static final String TAG_CODE_VOLTAGE_B = "Voltage_B";
    /**
     * C相电压
     */
    public static final String TAG_CODE_VOLTAGE_C = "Voltage_C";
    /**
     * A相功率因数
     */
    public static final String TAG_CODE_FACTOR_A = "PowerFactor_A_Total";
    /**
     * B相功率因数
     */
    public static final String TAG_CODE_FACTOR_B = "PowerFactor_B_Total";
    /**
     * C相功率因数
     */
    public static final String TAG_CODE_FACTOR_C = "PowerFactor_C_Total";
    /**
     * æ€»åŠŸçŽ‡å› æ•°
     */
    public static final String TAG_CODE_FACTOR_TOTAL = "PowerFactor_Total";
    /**
     * ç”µåŠ›è´Ÿè·å•ä½
     */
    public static final String ELECTRIC_LOAD_UNIT = "(kW)";
    /**
     * ç”µåŠ›è´Ÿè·å•ä½
     */
    public static final String ELECTRIC_LOAD_UNIT_SHOW = "kW";
    /**
     * ç”µæµå•位 A
     */
    public static final String ELECTRICITY_CURRENT_UNIT_A = "A";
    /**
     * ç”µåŽ‹å•ä½ V
     */
    public static final String ELECTRICITY_VOLTAGE_UNIT_V = "V";
    /**
     * ç¬¦å· - ç™¾åˆ†å·
     */
    public static final String SYMBOL_PERCENT = "%";
    /**
     * ç”¨æ°´é‡ã€å¤©ç„¶æ°”量、蒸汽量单位
     */
    public static final String CUBIC_METER = "m³";
    /**
     * ç”¨ç”µé‡å•位
     */
    public static final String ELECTRICITY_CONSUMPTION = "kWh";
    /**
     * ç»¼åˆèƒ½è€—单位
     */
    public static final String ENERGY_CONSUME = "tce";
    /**
     * æ—¶é—´æ˜¾ç¤ºå­—符后缀
     */
    public static final String TIME_UNIT_SHOW_HOUR = "时";
    /**
     * å±žæ€§å­—段名称  value
     */
    public static final String PROP_NAME_VALUE = "value";
    /**
     * å±žæ€§å­—段名称   cost
     */
    public static final String PROP_NAME_COST = "cost";
    /**
     * å°–
     */
    public static final String TIP = "tip";
    /**
     * å³°
     */
    public static final String PEAK = "peak";
    /**
     * å¹³
     */
    public static final String FLAT = "flat";
    /**
     * è°·
     */
    public static final String TROUGH = "trough";
    /**
     * å æ¯”
     **/
    public static final String ENERGY_ENTRY_PROPORTION = "proportion";
    /**
     * æ€»æ•°
     **/
    public static final String ENERGY_ENTRY_TOTAL = "total";
    /**
     * è®¡ç®—消耗的公式
     **/
    public static final String FEL_ENERGY_ENTRY_CONSUMPTION_CALC = "total*proportion";
    /**
     * æ ‡å‡†æ—¶é—´
     **/
    public static final String STANDARD_TIME = "GMT+8";
    /**
     * å­—符串OK
     */
    public static final String STR_OK = "ok";
    /**
     * è¡¥å……位数0
     */
    public static final String COMPLEMENTARY_DIGIT_0 = "%02d";
    /**
     * ç”µåŽ‹ç­‰çº§
     */
    public static final String GENERAL_STR_DYDJ = "电压等级";
    /**
     * ç”µåŽ‹ç­‰çº§å•ä½
     */
    public static final String GENERAL_STR_DYDJ_UNIT = "kV";
    /**
     * å˜åŽ‹å™¨å°æ•°
     */
    public static final String GENERAL_STR_BYQTS = "变压器台数";
    /**
     * å˜åŽ‹å™¨å°æ•°å•ä½
     */
    public static final String GENERAL_STR_BYQTS_UNIT = "台";
    /**
     * è£…机容量
     */
    public static final String GENERAL_STR_ZJRL = "装机容量";
    /**
     * è£…机容量单位
     */
    public static final String GENERAL_STR_ZJRL_UNIT = "kVA";
    /**
     * è¿è¡Œå®¹é‡
     */
    public static final String GENERAL_STR_YXRL = "运行容量";
    /**
     * æœ‰åŠŸåŠŸçŽ‡
     */
    public static final String GENERAL_STR_YGGL = "有功功率";
    /**
     * æ— åŠŸåŠŸçŽ‡
     */
    public static final String GENERAL_STR_WGGL = "无功功率";
    /**
     * æ— åŠŸåŠŸçŽ‡å•ä½
     */
    public static final String GENERAL_STR_WGGL_UNIT = "kvar";
    /**
     * èƒ½æºå¯¹æ¯”-同比
     */
    public static final String ENERGY_COMPARISON_YOY = "YOY";
    /**
     * èƒ½æºå¯¹æ¯”-环比
     */
    public static final String ENERGY_COMPARISON_MOM = "MOM";
    /**
     * å¯åЍ
     */
    public static final String START = "启动";
    /**
     * åœæ­¢
     */
    public static final String STOP = "停止";
    /***
     *  å•位-亿千瓦时
     */
    public static final String UNIT_TWH = "亿 Kwh";
    /***
     *  å•位-万千瓦时
     */
    public static final String UNIT_MILLION_KWH = "万 Kwh";
    /***
     *  å•位-吨
     */
    public static final String UNIT_TONS = "吨";
    /***
     *  å•位-字母-吨
     */
    public static final String UNIT_LETTERS_TONS = "t";
    /***
     *  å•位转换-百-100
     */
    public static final BigDecimal UNIT_CONVERSION_100 = new BigDecimal(DIGIT_100);
    /***
     *  å•位转换-吨-1000
     */
    public static final BigDecimal UNIT_CONVERSION_1000 = new BigDecimal(DIGIT_1000);
    /***
     *  å•位转换-万-10000
     */
    public static final BigDecimal UNIT_CONVERSION_10000 = new BigDecimal(DIGIT_10000);
    /***
     *  å•位转换-亿-100000000
     */
    public static final BigDecimal UNIT_CONVERSION_100000000 = new BigDecimal(DIGIT_100000000);
    /**
     * å­—å…¸-碳排放系数
     */
    public static final String DICT_CARBON_COEFFICIENT = "carbon_emission_coefficient";
    /**
     * WEIGHTY
     */
    public static final String WEIGHTY = "WEIGHTY";
    /**
     * åŽ‚
     */
    public static final String ENERGY_UNIT_TYPE_FACTORY = "FACTORY";
    /**
     * è½¦é—´
     */
    public static final String ENERGY_UNIT_TYPE_WORKPLACE = "WORKPLACE";
    /**
     * å·¥åº
     */
    public static final String ENERGY_UNIT_TYPE_PROCESS = "PROCESS";
    /**
     * è®¾å¤‡
     */
    public static final String ENERGY_UNIT_TYPE_DEVICE = "DEVICE";
}
zhitan-common/src/main/java/com/zhitan/common/core/domain/BaseEntity.java
@@ -1,5 +1,6 @@
package com.zhitan.common.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -26,20 +27,25 @@
    private String searchValue;
    /** åˆ›å»ºè€… */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    /** åˆ›å»ºæ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /** æ›´æ–°è€… */
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;
    /** æ›´æ–°æ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;
    /** å¤‡æ³¨ */
    @TableField(exist = false)
    private String remark;
    /** æ•°æ®æƒé™ */
zhitan-common/src/main/java/com/zhitan/common/utils/PageUtils.java
@@ -41,4 +41,15 @@
        
        return new Page(pageNum,pageSize);
    }
    public static <T> Page<T> getPageInfo() {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        return new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
    }
    public static <R> Page<R> getPageInfo(Class<R> R) {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        return new Page<R>(pageDomain.getPageNum(), pageDomain.getPageSize());
    }
}
zhitan-common/src/main/java/com/zhitan/common/utils/id/IdGenUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.zhitan.common.utils.id;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import java.util.UUID;
/**
 * ç”ŸæˆID
 * @author Geoffrey
 * @date 2024/12/31
 */
public class IdGenUtil {
    public static long nextLongId() {
        return IncrLongIdUtil.nextLongId();
    }
    public static String randomId() {
        long id = IdWorker.getId();
        return String.valueOf(id);
    }
    public static Integer nextIntegerId() {
        return Math.abs(UUID.randomUUID().hashCode());
    }
}
zhitan-common/src/main/java/com/zhitan/common/utils/id/IncrLongIdUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.zhitan.common.utils.id;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * longid
 * @author Geoffrey
 * @date 2024/12/31
 */
public class IncrLongIdUtil {
    private static final int INCR_PART_LIMIT_VALUE = 10000;
    private static final AtomicInteger ID_INCR_PART_TEMP = new AtomicInteger(INCR_PART_LIMIT_VALUE);
    private static final StringBuffer ID_BUILDER = new StringBuffer();
    private static transient long baseTime = System.currentTimeMillis() / 1000;
    private static final String DATA_CENTER_ID = "0"; // 0-9
    public static synchronized long nextLongId() {
        ID_BUILDER.setLength(0);
        long currentTime = System.currentTimeMillis() / 1000;
        if (currentTime > baseTime) {
            ID_INCR_PART_TEMP.set(INCR_PART_LIMIT_VALUE);
            baseTime = currentTime;
        }
        int index = ID_INCR_PART_TEMP.incrementAndGet();
        if (index >= (INCR_PART_LIMIT_VALUE * 10 - 1)) {
            if (currentTime == baseTime) {
                try {
                    Thread.sleep(1000);
                    currentTime =  System.currentTimeMillis() / 1000;
                    baseTime = currentTime;
                } catch (InterruptedException e) {
                    // do nothing
                }
            }
            ID_INCR_PART_TEMP.set(INCR_PART_LIMIT_VALUE);
        }
        String longStr = ID_BUILDER.append(currentTime).append(DATA_CENTER_ID).append(index).toString();
        return Long.parseLong(longStr);
    }
}
zhitan-generator/target/classes/generator.yml
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/mapper/generator/GenTableColumnMapper.xml
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/mapper/generator/GenTableMapper.xml
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/controller.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/domain.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/mapper.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/service.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/serviceImpl.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/java/sub-domain.java.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/js/api.js.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/sql/sql.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/vue/index-tree.vue.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/vue/index.vue.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/vue/v3/index-tree.vue.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/vue/v3/index.vue.vm
ÎļþÒÑɾ³ý
zhitan-generator/target/classes/vm/xml/mapper.xml.vm
ÎļþÒÑɾ³ý
zhitan-quartz/target/classes/mapper/quartz/SysJobLogMapper.xml
ÎļþÒÑɾ³ý
zhitan-quartz/target/classes/mapper/quartz/SysJobMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/src/main/java/com/zhitan/peakvalley/domain/dto/PeakValleyDTO.java
@@ -1,6 +1,7 @@
package com.zhitan.peakvalley.domain.dto;
import com.zhitan.common.enums.TimeType;
import com.zhitan.common.utils.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -49,17 +50,19 @@
    public String getTimeType() {
        String result = TimeType.DAY.name();
        switch (TimeType.valueOf(this.timeType)) {
            case HOUR:
            case DAY:
                return TimeType.HOUR.name();
            case MONTH:
                return TimeType.DAY.name();
                result= TimeType.HOUR.name();
                break;
            case YEAR:
                return TimeType.MONTH.name();
                result= TimeType.MONTH.name();
                break;
            case MONTH:
            default:
                return TimeType.DAY.name();
                break;
        }
        return result;
    }
}
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/EnergySavingProgramDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.zhitan.saving.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Date;
/**
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
@ApiModel(value = "节能项目DTO")
public class EnergySavingProgramDTO {
    private Long id;
    /**
     * èŠ‚èƒ½è®¡åˆ’
     */
    private String plan;
    /**
     * å®Œæˆæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completionTime;
    /**
     * é¡¹ç›®ç»„é•¿
     */
    @Excel(name = "项目组长")
    private String liablePerson;
    /**
     * å®žæ–½è®¡åˆ’
     */
    private String implementationPlan;
    /**
     * å½“前工作
     */
    private String currentWork;
    /**
     * èŠ‚çº¦é‡
     */
    private String savingAmount;
    /**
     * å¤‡æ³¨
     */
    private String remark;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/PoliciesRegulationsDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.zhitan.saving.domain.dto;
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 lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
@ApiModel(value = "政策管理新增DTO")
public class PoliciesRegulationsDTO {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * æ”¿ç­–标题
     */
    @NotBlank(message = "请输入政策标题")
    private String title;
    /**
     * æ”¿ç­–类型
     */
    @NotNull(message = "请选择政策类型")
    private String type;
    /**
     * å°å‘部门
     */
    @NotBlank(message = "请输入印发部门")
    private String dept;
    /**
     * å°å‘æ—¶é—´
     */
    @NotNull(message = "请选择印发时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date issuingTime;
    /**
     * æ–‡ä»¶åœ°å€
     */
    @NotBlank(message = "请上传文件")
    private String url;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/dto/PoliciesRegulationsManagementPageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.zhitan.saving.domain.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
@ApiModel(value = "PoliciesRegulationsManagementPageDTO", description = "政策法规-列表查询Dto")
public class PoliciesRegulationsManagementPageDTO {
    /**
     * ç±»åž‹
     */
    private String type;
    /**
     * æ ‡é¢˜
     */
    private String title;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/entity/EnergySavingProgram.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.zhitan.saving.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.common.annotation.Excel;
import com.zhitan.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Date;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
 *
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
@ApiModel(value = "EnergySavingProgram", description = "节能项目管理实体")
public class EnergySavingProgram extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    private Long id;
    /**
     * æ€»ä½“计划
     */
    @Excel(name = "总体计划")
    private String plan;
    /**
     * å®Œæˆæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completionTime;
    /**
     * é¡¹ç›®ç»„é•¿
     */
    @Excel(name = "项目组长")
    private String liablePerson;
    /**
     * å®žæ–½è®¡åˆ’
     */
    private String implementationPlan;
    /**
     * å½“前工作
     */
    private String currentWork;
    /**
     * èŠ‚çº¦é‡
     */
    private String savingAmount;
    /**
     * å¤‡æ³¨
     */
    private String remark;
    /**
     * æ˜¯å¦åˆ é™¤
     */
    @Excel(name = "是否删除")
    private Long del;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/entity/PoliciesRegulationsManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.zhitan.saving.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.common.annotation.Excel;
import com.zhitan.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Date;
/**
 * æ”¿ç­–法规对象
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
@TableName(value = "policies_regulations_management")
@ApiModel(value = "PoliciesRegulationsManagement", description = "政策法规对象")
public class PoliciesRegulationsManagement extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    private Long id;
    /**
     * æ”¿ç­–标题
     */
    @Excel(name = "政策标题")
    private String title;
    /**
     * æ”¿ç­–类型
     */
    @Excel(name = "政策类型")
    private String type;
    /**
     * å°å‘部门
     */
    @Excel(name = "印发部门")
    private String dept;
    /**
     * å°å‘æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "印发时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issuingTime;
    /**
     * æ–‡ä»¶åœ°å€
     */
    @Excel(name = "文件地址")
    private String url;
    /**
     * åˆ é™¤æ ‡å¿—(0:正常;1:删除)
     */
    private Integer delFlag;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/DropdownListVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.zhitan.saving.domain.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
/**
 * ä¸‹æ‹‰åˆ—表vo
 * @Author DYL
 **/
@Data
public class DropdownListVO {
    /**
     * id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * åç§°
     */
    private String name;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/EnergySavingProgramVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.zhitan.saving.domain.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.zhitan.saving.domain.entity.EnergySavingProgram;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç† VO
 * @author Geoffrey
 * @date 2025/01/13
 */
public class EnergySavingProgramVO extends EnergySavingProgram {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/PoliciesRegulationsManagementDetailVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.zhitan.saving.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.zhitan.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
 * æ”¿ç­–法规对象vo
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
public class PoliciesRegulationsManagementDetailVO {
    /**
     * id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * æ”¿ç­–标题
     */
    @Excel(name = "政策标题")
    private String title;
    /**
     * æ”¿ç­–类型
     */
    @Excel(name = "政策类型")
    private String type;
    /**
     * å°å‘部门
     */
    @Excel(name = "印发部门")
    private String dept;
    /**
     * å°å‘æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "印发时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issuingTime;
    /**
     * æ–‡ä»¶åœ°å€
     */
    @Excel(name = "文件地址")
    private String address;
}
zhitan-system/src/main/java/com/zhitan/saving/domain/vo/PoliciesRegulationsManagementPageVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.zhitan.saving.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.zhitan.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
 * æ”¿ç­–法规page vo
 * @author Geoffrey
 * @date 2025/01/13
 */
@Data
public class PoliciesRegulationsManagementPageVO {
    /**
     * id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * æ”¿ç­–标题
     */
    @Excel(name = "政策标题")
    private String title;
    /**
     * æ”¿ç­–类型
     */
    @Excel(name = "政策类型")
    private String type;
    /**
     * æ”¿ç­–类型名称
     */
    private String typeName;
    /**
     * å°å‘部门
     */
    @Excel(name = "印发部门")
    private String dept;
    /**
     * å°å‘æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "印发时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issuingTime;
    /**
     * æ–‡ä»¶åœ°å€
     */
    @Excel(name = "文件地址")
    private String url;
}
zhitan-system/src/main/java/com/zhitan/saving/mapper/EnergySavingProgramMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.zhitan.saving.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhitan.saving.domain.entity.EnergySavingProgram;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
 * Mapper接口
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
public interface EnergySavingProgramMapper extends BaseMapper<EnergySavingProgram> {
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param id èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *           ä¸»é”®
     * @return èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    EnergySavingProgram selectEnergySavingProgramById(Long id);
}
zhitan-system/src/main/java/com/zhitan/saving/mapper/PoliciesRegulationsManagementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.zhitan.saving.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhitan.common.annotation.DataSource;
import com.zhitan.common.enums.DataSourceType;
import com.zhitan.saving.domain.dto.PoliciesRegulationsManagementPageDTO;
import com.zhitan.saving.domain.entity.PoliciesRegulationsManagement;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementPageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * æ”¿ç­–法规Mapper接口
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
@Mapper
public interface PoliciesRegulationsManagementMapper extends BaseMapper<PoliciesRegulationsManagement> {
    /**
     * æ”¿ç­–法规-列表分页查询
     */
    Page<PoliciesRegulationsManagementPageVO> getPageList(Page<PoliciesRegulationsManagementPageVO> pageInfo, @Param("dto") PoliciesRegulationsManagementPageDTO pageDTO);
}
zhitan-system/src/main/java/com/zhitan/saving/service/IEnergySavingProgramService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.zhitan.saving.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.saving.domain.entity.EnergySavingProgram;
import com.zhitan.saving.domain.dto.EnergySavingProgramDTO;
import com.zhitan.saving.domain.vo.EnergySavingProgramVO;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
 * Service接口
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
public interface IEnergySavingProgramService extends IService<EnergySavingProgram> {
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param id èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *           ä¸»é”®
     * @return èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    EnergySavingProgram selectEnergySavingProgramById(Long id);
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * åˆ—表
     *
     * @param energySavingProgram èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * @return èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * é›†åˆ
     */
    Page<EnergySavingProgramVO> selectEnergySavingProgramList(EnergySavingProgram energySavingProgram);
    /**
     * æ–°å¢ž
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param dto
     * @return ç»“æžœ
     */
    AjaxResult insertEnergySavingProgram(EnergySavingProgramDTO dto);
    /**
     * ä¿®æ”¹
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param dto
     * @return ç»“æžœ
     */
    AjaxResult updateEnergySavingProgram(EnergySavingProgramDTO dto);
    /**
     * åˆ é™¤
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * ä¿¡æ¯
     *
     * @param id èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *           ä¸»é”®
     * @return ç»“æžœ
     */
    AjaxResult deleteEnergySavingProgramById(Long id);
}
zhitan-system/src/main/java/com/zhitan/saving/service/IPoliciesRegulationsManagementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.zhitan.saving.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhitan.saving.domain.entity.PoliciesRegulationsManagement;
import com.zhitan.saving.domain.dto.PoliciesRegulationsDTO;
import com.zhitan.saving.domain.dto.PoliciesRegulationsManagementPageDTO;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementDetailVO;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementPageVO;
/**
 * æ”¿ç­–法规Service接口
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
public interface IPoliciesRegulationsManagementService extends IService<PoliciesRegulationsManagement> {
    /**
     * æ”¿ç­–法规-列表查询
     */
    Page<PoliciesRegulationsManagementPageVO> getPageList(PoliciesRegulationsManagementPageDTO pageDTO);
    /**
     * æ”¿ç­–法规-查询详情
     */
    PoliciesRegulationsManagementDetailVO getDetail(Long id);
    /**
     * æ”¿ç­–法规-新增
     */
    void add(PoliciesRegulationsDTO addDTO);
    /**
     * æ”¿ç­–法规-更新
     */
    void edit(PoliciesRegulationsDTO editDTO);
    /**
     * æ”¿ç­–法规-删除
     */
    void delete(Long id);
}
zhitan-system/src/main/java/com/zhitan/saving/service/impl/EnergySavingProgramServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.zhitan.saving.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhitan.common.constant.CommonConst;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.common.exception.ServiceException;
import com.zhitan.common.utils.DateUtils;
import com.zhitan.common.utils.PageUtils;
import com.zhitan.common.utils.bean.BeanUtils;
import com.zhitan.saving.domain.dto.EnergySavingProgramDTO;
import com.zhitan.saving.domain.entity.EnergySavingProgram;
import com.zhitan.saving.domain.vo.EnergySavingProgramVO;
import com.zhitan.saving.mapper.EnergySavingProgramMapper;
import com.zhitan.saving.service.IEnergySavingProgramService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
/**
 * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
 * Service业务层处理
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
@Service
public class EnergySavingProgramServiceImpl extends ServiceImpl<EnergySavingProgramMapper, EnergySavingProgram> implements IEnergySavingProgramService {
    @Resource
    private EnergySavingProgramMapper energySavingProgramMapper;
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param id èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *           ä¸»é”®
     * @return èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    @Override
    public   EnergySavingProgram selectEnergySavingProgramById(Long id) {
        return energySavingProgramMapper.selectEnergySavingProgramById(id);
    }
    /**
     * æŸ¥è¯¢
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * åˆ—表
     *
     * @param energySavingProgram èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * @return èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     */
    @Override
    public Page<EnergySavingProgramVO> selectEnergySavingProgramList(  EnergySavingProgram energySavingProgram) {
        Page<  EnergySavingProgram> pageInfo = PageUtils.getPageInfo(  EnergySavingProgram.class);
        Page<  EnergySavingProgram> energySavingProgramPage = this.baseMapper.selectPage(pageInfo,
                new LambdaQueryWrapper<  EnergySavingProgram>().eq(EnergySavingProgram::getDel, CommonConst.DEL_FLAG_0)
//                        .eq(ObjectUtils.isNotEmpty(energySavingProgram.getEndTime()), EnergySavingProgram::getEndTime, energySavingProgram.getEndTime())
                        .orderByDesc(EnergySavingProgram::getCreateTime)
        );
        List<  EnergySavingProgram> energySavingProgramList = energySavingProgramPage.getRecords();
        List<EnergySavingProgramVO> voList = new ArrayList<>();
        energySavingProgramList.stream().forEach(indexInfo -> {
            EnergySavingProgramVO infoVO = new EnergySavingProgramVO();
            BeanUtils.copyProperties(indexInfo, infoVO);
            voList.add(infoVO);
        });
        Page<EnergySavingProgramVO> responsePage = PageUtils.getPageInfo(EnergySavingProgramVO.class);
        responsePage.setTotal(energySavingProgramPage.getTotal());
        responsePage.setRecords(voList);
        return responsePage;
    }
    /**
     * æ–°å¢ž
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param dto
     * @return ç»“æžœ
     * @throws ParseException
     */
    @Override
    @Transactional
    public AjaxResult insertEnergySavingProgram(EnergySavingProgramDTO dto) {
              EnergySavingProgram energySavingProgram = new   EnergySavingProgram();
            BeanUtils.copyProperties(dto, energySavingProgram);
            energySavingProgram.setCreateTime(DateUtils.getNowDate());
            energySavingProgram.setDel(0L);
            return AjaxResult.success(energySavingProgramMapper.insert(energySavingProgram));
    }
    /**
     * ä¿®æ”¹
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *
     * @param dto
     * @return ç»“æžœ
     */
    @Override
    @Transactional
    public AjaxResult updateEnergySavingProgram(EnergySavingProgramDTO dto) {
          EnergySavingProgram vo = this.baseMapper.selectEnergySavingProgramById(dto.getId());
        if (vo == null) {
            throw new ServiceException("未找到对应实体");
        } else {
            BeanUtils.copyProperties(dto, vo);
            vo.setDel(CommonConst.DEL_FLAG_0.longValue());
            int i = energySavingProgramMapper.updateById(vo);
            return AjaxResult.success(i);
        }
    }
    /**
     * åˆ é™¤
     * èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     * ä¿¡æ¯
     *
     * @param id èŠ‚èƒ½é¡¹ç›®ç®¡ç†
     *           ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    @Transactional
    public AjaxResult deleteEnergySavingProgramById(Long id) {
          EnergySavingProgram vo = this.baseMapper.selectEnergySavingProgramById(id);
        if (vo == null) {
            throw new ServiceException("未找到对应实体");
        } else {
            vo.setUpdateTime(DateUtils.getNowDate());
            vo.setDel(CommonConst.DEL_FLAG_1.longValue());
            int i = energySavingProgramMapper.updateById(vo);
            return AjaxResult.success(i);
        }
    }
}
zhitan-system/src/main/java/com/zhitan/saving/service/impl/PoliciesRegulationsManagementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
package com.zhitan.saving.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhitan.common.constant.CommonConst;
import com.zhitan.common.exception.ServiceException;
import com.zhitan.common.utils.PageUtils;
import com.zhitan.common.utils.SecurityUtils;
import com.zhitan.common.utils.bean.BeanUtils;
import com.zhitan.common.utils.id.IdGenUtil;
import com.zhitan.saving.domain.dto.PoliciesRegulationsDTO;
import com.zhitan.saving.domain.dto.PoliciesRegulationsManagementPageDTO;
import com.zhitan.saving.domain.entity.PoliciesRegulationsManagement;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementDetailVO;
import com.zhitan.saving.domain.vo.PoliciesRegulationsManagementPageVO;
import com.zhitan.saving.mapper.PoliciesRegulationsManagementMapper;
import com.zhitan.saving.service.IPoliciesRegulationsManagementService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
/**
 * æ”¿ç­–法规Service业务层处理
 *
 * @author ZhiTan
 * @date 2024-12-26
 */
@Service
public class PoliciesRegulationsManagementServiceImpl extends ServiceImpl<PoliciesRegulationsManagementMapper, PoliciesRegulationsManagement> implements IPoliciesRegulationsManagementService {
    /**
     * æ”¿ç­–法规-列表查询
     */
    @Override
    public Page<PoliciesRegulationsManagementPageVO> getPageList(PoliciesRegulationsManagementPageDTO pageDTO) {
        Page<PoliciesRegulationsManagementPageVO> pageInfo = PageUtils.getPageInfo(PoliciesRegulationsManagementPageVO.class);
        return baseMapper.getPageList(pageInfo, pageDTO);
    }
    /**
     * æ”¿ç­–法规-查询详情
     */
    @Override
    public PoliciesRegulationsManagementDetailVO getDetail(Long id) {
        PoliciesRegulationsManagement policiesRegulationsManagement = baseMapper.selectById(id);
        if (ObjectUtils.isEmpty(policiesRegulationsManagement)) {
            return null;
        }
        PoliciesRegulationsManagementDetailVO detailVO = new PoliciesRegulationsManagementDetailVO();
        BeanUtils.copyProperties(policiesRegulationsManagement, detailVO);
        return detailVO;
    }
    /**
     * æ”¿ç­–法规-新增
     */
    @Override
    public void add(PoliciesRegulationsDTO addDTO) {
        long pid = IdGenUtil.nextLongId();
        String username = SecurityUtils.getUsername();
        PoliciesRegulationsManagement policiesRegulationsManagement = new PoliciesRegulationsManagement();
        policiesRegulationsManagement.setId(pid);
        policiesRegulationsManagement.setDelFlag(0);
        policiesRegulationsManagement.setCreateBy(username);
        BeanUtils.copyProperties(addDTO, policiesRegulationsManagement);
        // æ–°å¢žæ”¿ç­–法规
        baseMapper.insert(policiesRegulationsManagement);
    }
    /**
     * æ”¿ç­–法规-更新
     */
    @Override
    public void edit(PoliciesRegulationsDTO editDTO) {
        if (ObjectUtils.isEmpty(editDTO.getId())) {
            throw new ServiceException("政策ID不能为空");
        }
        // èŽ·å–æ”¿ç­–æ³•è§„
        PoliciesRegulationsManagement policiesRegulationsManagement = baseMapper.selectById(editDTO.getId());
        if (ObjectUtils.isEmpty(policiesRegulationsManagement)) {
            throw new ServiceException("未找到对应实体");
        }
        BeanUtils.copyProperties(editDTO, policiesRegulationsManagement);
        baseMapper.updateById(policiesRegulationsManagement);
    }
    /**
     * æ”¿ç­–法规-删除
     */
    @Override
    public void delete(Long id) {
        // èŽ·å–æ”¿ç­–æ³•è§„
        PoliciesRegulationsManagement policiesRegulationsManagement = baseMapper.selectById(id);
        if (ObjectUtils.isEmpty(policiesRegulationsManagement)) {
            throw new ServiceException("未找到对应实体");
        }
        policiesRegulationsManagement.setDelFlag(CommonConst.DEL_FLAG_1);
        baseMapper.updateById(policiesRegulationsManagement);
    }
}
zhitan-system/src/main/java/com/zhitan/system/service/impl/SysConfigServiceImpl.java
@@ -49,7 +49,6 @@
     * @return å‚数配置信息
     */
    @Override
    @DataSource(DataSourceType.MASTER)
    public SysConfig selectConfigById(Long configId)
    {
        SysConfig config = new SysConfig();
zhitan-system/src/main/resources/mapper/saving/EnergySavingProgramMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?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.zhitan.saving.mapper.EnergySavingProgramMapper">
    <resultMap type="EnergySavingProgram" id="EnergySavingProgramResult">
        <result property="id"    column="id"    />
        <result property="name"    column="name"    />
        <result property="plan"    column="plan"    />
        <result property="target"    column="target"    />
        <result property="startTime"    column="start_time"    />
        <result property="endTime"    column="end_time"    />
        <result property="liablePerson"    column="liable_person"    />
        <result property="formulateTime"    column="formulate_time"    />
        <result property="implementationPlan"    column="implementation_plan"    />
        <result property="currentWork"    column="current_work"    />
        <result property="savingAmount"    column="saving_amount"    />
        <result property="remark"    column="remark"    />
        <result property="createBy"    column="create_by"    />
        <result property="updateBy"    column="update_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateTime"    column="update_time"    />
        <result property="del"    column="del"    />
    </resultMap>
    <sql id="selectEnergySavingProgramVo">
        select id,plan,completion_time,liable_person,create_by,update_by,create_time,update_time,del,implementation_plan,current_work,saving_amount,remark from energy_saving_program
    </sql>
    <select id="selectEnergySavingProgramById" parameterType="Long" resultMap="EnergySavingProgramResult">
        <include refid="selectEnergySavingProgramVo"/>
        where id = #{id}
    </select>
</mapper>
zhitan-system/src/main/resources/mapper/saving/PoliciesRegulationsManagementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
<?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.zhitan.saving.mapper.PoliciesRegulationsManagementMapper">
    <select id="getPageList" resultType="com.zhitan.saving.domain.vo.PoliciesRegulationsManagementPageVO">
        select
        prm.id,
        prm.title,
        prm.type,
        prm.dept,
        prm.issuing_time,
        prm.url,
        sdd.dict_label as typeName
        from policies_regulations_management AS prm
        left join sys_dict_data AS sdd on prm.type = sdd.dict_value
        <where>
            prm.del_flag = 0
            <if test="dto.type != null">
                and prm.type = #{dto.type}
            </if>
            <if test="dto.title != null and dto.title != ''">
                and prm.title like concat('%',#{dto.title},'%')
            </if>
        </where>
        order by prm.issuing_time desc
    </select>
</mapper>
zhitan-system/target/classes/mapper/alarm/AlarmItemMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/alarm/AlarmLimitTypeMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/alarm/HistoryAlarmMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/alarm/RealtimeAlarmMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/auxiliaryinput/ProductOutputMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/FacilityAnnexMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/FacilityArchivesMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/MeterAnnexMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/MeterImplementCountMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/MeterImplementMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/SysEnerclassMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/basicdata/SysEnergyMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/comprehensivestatistics/ComprehensiveStatisticsMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/comprehensivestatistics/DailyComprehensiveMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/dataitem/DataItemMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/energyIndicators/EnergyIndicatorsMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/gatewaysetting/GatewaySettingMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/keyequipment/DailyKeyEquipmentMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/keyequipment/YearKeyEquipmentMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/meter/MeterImplementMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/CalcFunctionMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/DaqTemplateMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/EnergyIndexMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/IndexFormulaMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/IndexStorageMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/ModelInfoMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/model/ModelNodeMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/peakvalley/ElectricityDataItemMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/peakvalley/ElectricityPriceDateMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/peakvalley/EletricityPriceMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/realtimedata/PeriodDataMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/realtimedata/SysEquipmentFileMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysConfigMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysDeptMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysDictDataMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysDictTypeMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysLoginInfoMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysMenuMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysNameConfigMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysNoticeMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysOperLogMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysPostMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysRoleDeptMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysRoleMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysRoleMenuMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysUserMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysUserPostMapper.xml
ÎļþÒÑɾ³ý
zhitan-system/target/classes/mapper/system/SysUserRoleMapper.xml
ÎļþÒÑɾ³ý
zhitan-vue/src/api/policy/policy.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from "@/utils/request"
// èŽ·å–åˆ—è¡¨
export function policyPage(params) {
  return request({
    url: "/policiesRegulations/page",
    method: "get",
    params,
  })
}
// æ–°å¢ž
export function policyAdd(data) {
  return request({
    url: "/policiesRegulations/add",
    method: "post",
    data,
  })
}
// æŸ¥è¯¦æƒ…
export function policyInfo(params) {
  return request({
    url: "/policiesRegulations/detail?id=" + params,
    method: "get",
  })
}
// ç¼–辑
export function policyEdit(data) {
  return request({
    url: "/policiesRegulations/edit",
    method: "post",
    data,
  })
}
//删除
export function policyDel(id) {
  return request({
    url: "/policiesRegulations/delete/" + id,
    method: "delete",
  })
}
zhitan-vue/src/api/policy/project.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from "@/utils/request"
// èŽ·å–åˆ—è¡¨
export function projectPage(params) {
  return request({
    url: "/energySavingProject/page",
    method: "get",
    params,
  })
}
// æ–°å¢ž
export function projectAdd(data) {
  return request({
    url: "/energySavingProject/add",
    method: "post",
    data,
  })
}
// æŸ¥è¯¦æƒ…
export function projectInfo(params) {
  return request({
    url: "/energySavingProject/getById?id=" + params,
    method: "get",
  })
}
// ç¼–辑
export function projectEdit(data) {
  return request({
    url: "/energySavingProject/edit",
    method: "post",
    data,
  })
}
//删除
export function projectDel(id) {
  return request({
    url: "/energySavingProject/del/" + id,
    method: "delete",
  })
}
zhitan-vue/src/components/FileUpload/index.vue
@@ -20,8 +20,12 @@
    <!-- ä¸Šä¼ æç¤º -->
    <div class="el-upload__tip" v-if="showTip">
      è¯·ä¸Šä¼ 
      <template v-if="fileSize"> å¤§å°ä¸è¶…过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
      <template v-if="fileType"> æ ¼å¼ä¸º <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
      <template v-if="fileSize">
        å¤§å°ä¸è¶…过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
      </template>
      <template v-if="fileType">
        æ ¼å¼ä¸º <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
      </template>
      çš„æ–‡ä»¶
    </div>
    <!-- æ–‡ä»¶åˆ—表 -->
@@ -39,7 +43,7 @@
</template>
<script setup>
import { getToken } from "@/utils/auth";
import { getToken } from "@/utils/auth"
const props = defineProps({
  modelValue: [String, Object, Array],
  // æ•°é‡é™åˆ¶
@@ -55,110 +59,112 @@
  // æ–‡ä»¶ç±»åž‹, ä¾‹å¦‚['png', 'jpg', 'jpeg']
  fileType: {
    type: Array,
    default: () => ["doc", "xls", "ppt", "txt", "pdf","docx"],
    default: () => ["doc", "xls", "ppt", "txt", "pdf", "docx"],
  },
  // æ˜¯å¦æ˜¾ç¤ºæç¤º
  isShowTip: {
    type: Boolean,
    default: true
  }
});
    default: true,
  },
})
const { proxy } = getCurrentInstance();
const emit = defineEmits();
const number = ref(0);
const uploadList = ref([]);
const baseUrl = import.meta.env.VITE_APP_BASE_API;
const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // ä¸Šä¼ æ–‡ä»¶æœåŠ¡å™¨åœ°å€
const headers = ref({ Authorization: "Bearer " + getToken() });
const fileList = ref([]);
const showTip = computed(
  () => props.isShowTip && (props.fileType || props.fileSize)
);
const { proxy } = getCurrentInstance()
const emit = defineEmits()
const number = ref(0)
const uploadList = ref([])
const baseUrl = import.meta.env.VITE_APP_BASE_API
const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload") // ä¸Šä¼ æ–‡ä»¶æœåŠ¡å™¨åœ°å€
const headers = ref({ Authorization: "Bearer " + getToken() })
const fileList = ref([])
const showTip = computed(() => props.isShowTip && (props.fileType || props.fileSize))
watch(() => props.modelValue, val => {
  if (val) {
    let temp = 1;
    // é¦–先将值转为数组
    const list = Array.isArray(val) ? val : props.modelValue.split(',');
    // ç„¶åŽå°†æ•°ç»„转为对象数组
    fileList.value = list.map(item => {
      if (typeof item === "string") {
        item = { name: item, url: item };
      }
      item.uid = item.uid || new Date().getTime() + temp++;
      return item;
    });
  } else {
    fileList.value = [];
    return [];
  }
},{ deep: true, immediate: true });
watch(
  () => props.modelValue,
  (val) => {
    if (val) {
      let temp = 1
      // é¦–先将值转为数组
      const list = Array.isArray(val) ? val : props.modelValue.split(",")
      // ç„¶åŽå°†æ•°ç»„转为对象数组
      fileList.value = list.map((item) => {
        if (typeof item === "string") {
          item = { name: item, url: item }
        }
        item.uid = item.uid || new Date().getTime() + temp++
        return item
      })
    } else {
      fileList.value = []
      return []
    }
  },
  { deep: true, immediate: true }
)
// ä¸Šä¼ å‰æ ¡æ£€æ ¼å¼å’Œå¤§å°
function handleBeforeUpload(file) {
  // æ ¡æ£€æ–‡ä»¶ç±»åž‹
  if (props.fileType.length) {
    const fileName = file.name.split('.');
    const fileExt = fileName[fileName.length - 1];
    const isTypeOk = props.fileType.indexOf(fileExt) >= 0;
    const fileName = file.name.split(".")
    const fileExt = fileName[fileName.length - 1]
    const isTypeOk = props.fileType.indexOf(fileExt) >= 0
    if (!isTypeOk) {
      proxy.$modal.msgError(`文件格式不正确, è¯·ä¸Šä¼ ${props.fileType.join("/")}格式文件!`);
      return false;
      proxy.$modal.msgError(`文件格式不正确, è¯·ä¸Šä¼ ${props.fileType.join("/")}格式文件!`)
      return false
    }
  }
  // æ ¡æ£€æ–‡ä»¶å¤§å°
  if (props.fileSize) {
    const isLt = file.size / 1024 / 1024 < props.fileSize;
    const isLt = file.size / 1024 / 1024 < props.fileSize
    if (!isLt) {
      proxy.$modal.msgError(`上传文件大小不能超过 ${props.fileSize} MB!`);
      return false;
      proxy.$modal.msgError(`上传文件大小不能超过 ${props.fileSize} MB!`)
      return false
    }
  }
  proxy.$modal.loading("正在上传文件,请稍候...");
  number.value++;
  return true;
  proxy.$modal.loading("正在上传文件,请稍候...")
  number.value++
  return true
}
// æ–‡ä»¶ä¸ªæ•°è¶…出
function handleExceed() {
  proxy.$modal.msgError(`上传文件数量不能超过 ${props.limit} ä¸ª!`);
  proxy.$modal.msgError(`上传文件数量不能超过 ${props.limit} ä¸ª!`)
}
// ä¸Šä¼ å¤±è´¥
function handleUploadError(err) {
  proxy.$modal.msgError("上传文件失败");
  proxy.$modal.msgError("上传文件失败")
}
// ä¸Šä¼ æˆåŠŸå›žè°ƒ
function handleUploadSuccess(res, file) {
  if (res.code === 200) {
    uploadList.value.push({ name: res.fileName, url: res.fileName });
    uploadedSuccessfully();
    uploadList.value.push({ name: res.fileName, url: res.fileName, fullUrl: res.url })
    uploadedSuccessfully()
  } else {
    number.value--;
    proxy.$modal.closeLoading();
    proxy.$modal.msgError(res.msg);
    proxy.$refs.fileUpload.handleRemove(file);
    uploadedSuccessfully();
    number.value--
    proxy.$modal.closeLoading()
    proxy.$modal.msgError(res.msg)
    proxy.$refs.fileUpload.handleRemove(file)
    uploadedSuccessfully()
  }
}
// åˆ é™¤æ–‡ä»¶
function handleDelete(index) {
  fileList.value.splice(index, 1);
  emit("update:modelValue", fileList.value);
  fileList.value.splice(index, 1)
  emit("update:modelValue", fileList.value)
}
// ä¸Šä¼ ç»“束处理
function uploadedSuccessfully() {
  if (number.value > 0 && uploadList.value.length === number.value) {
    fileList.value = fileList.value.filter(f => f.url !== undefined).concat(uploadList.value);
    uploadList.value = [];
    number.value = 0;
    fileList.value = fileList.value.filter((f) => f.url !== undefined).concat(uploadList.value)
    uploadList.value = []
    number.value = 0
    console.log(fileList.value)
    emit("update:modelValue", fileList.value);
    proxy.$modal.closeLoading();
    emit("update:modelValue", fileList.value)
    proxy.$modal.closeLoading()
  }
}
@@ -166,22 +172,22 @@
function getFileName(name) {
  // å¦‚果是url那么取最后的名字 å¦‚果不是直接返回
  if (name.lastIndexOf("/") > -1) {
    return name.slice(name.lastIndexOf("/") + 1);
    return name.slice(name.lastIndexOf("/") + 1)
  } else {
    return name;
    return name
  }
}
// å¯¹è±¡è½¬æˆæŒ‡å®šå­—符串分隔
function listToString(list, separator) {
  let strs = "";
  separator = separator || ",";
  let strs = ""
  separator = separator || ","
  for (let i in list) {
    if (list[i].url) {
      strs += list[i].url + separator;
      strs += list[i].url + separator
    }
  }
  return strs != '' ? strs.substr(0, strs.length - 1) : '';
  return strs != "" ? strs.substr(0, strs.length - 1) : ""
}
</script>
zhitan-vue/src/utils/dict.js
@@ -1,24 +1,30 @@
import useDictStore from '@/store/modules/dict'
import { getDicts } from '@/api/system/dict/data'
import useDictStore from "@/store/modules/dict"
import { getDicts } from "@/api/system/dict/data"
/**
 * èŽ·å–å­—å…¸æ•°æ®
 */
export function useDict(...args) {
  const res = ref({});
  const res = ref({})
  return (() => {
    args.forEach((dictType, index) => {
      res.value[dictType] = [];
      const dicts = useDictStore().getDict(dictType);
      res.value[dictType] = []
      const dicts = useDictStore().getDict(dictType)
      if (dicts) {
        res.value[dictType] = dicts;
        res.value[dictType] = dicts
      } else {
        getDicts(dictType).then(resp => {
          res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
          useDictStore().setDict(dictType, res.value[dictType]);
        getDicts(dictType).then((resp) => {
          console.log(resp)
          res.value[dictType] = resp.data.map((p) => ({
            label: p.dictLabel,
            value: p.dictValue,
            elTagType: p.listClass,
            elTagClass: p.cssClass,
          }))
          useDictStore().setDict(dictType, res.value[dictType])
        })
      }
    })
    return toRefs(res.value);
    return toRefs(res.value)
  })()
}
}
zhitan-vue/src/views/energyconservation/policyrule/components/EditModal.vue
@@ -1,92 +1,116 @@
<template>
    <el-dialog v-model="visible" :title="title" width="600" @close="handleClose">
        <el-form :model="form" ref="queryRef" :rules="formRules" label-width="120px" v-loading="loading">
            <el-form-item label="文件标题" prop="limitName">
                <el-input v-model="form.value1" placeholder="请输入文件标题" />
            </el-form-item>
            <el-form-item label="文件类别">
                <el-select v-model="form.value2" placeholder="请选择">
                    <el-option v-for="item in 6" :key="item" :label="item" :value="item">
                    </el-option>
                </el-select>
            </el-form-item>
        </el-form>
        <div slot="footer" class="text-right">
            <el-button type="primary" @click="submitForm" :loading="loading">ç¡® å®š</el-button>
            <el-button @click="handleClose">取 æ¶ˆ</el-button>
        </div>
    </el-dialog>
  <el-dialog v-model="visible" :title="title" width="600" @close="handleClose">
    <el-form :model="form" ref="queryRef" :rules="formRules" label-width="120px" v-loading="loading">
      <el-form-item label="文件标题" prop="title">
        <el-input v-model="form.title" placeholder="请输入文件标题" />
      </el-form-item>
      <el-form-item label="文件类别" prop="type">
        <el-select v-model="form.type" placeholder="文件类别" style="width: 100%">
          <el-option v-for="dict in policy_sort" :key="dict.value" :label="dict.label" :value="dict.value" />
        </el-select>
      </el-form-item>
      <el-form-item label="印发部门" prop="dept">
        <el-input v-model="form.dept" placeholder="请输入印发部门" />
      </el-form-item>
      <el-form-item label="印发时间" prop="issuingTime">
        <el-date-picker
          v-model="form.issuingTime"
          type="date"
          placeholder="请选择印发时间"
          format="YYYY-MM-DD"
          date-format="YYYY/MM/DD"
        />
      </el-form-item>
      <el-form-item label="附件" prop="url">
        <FileUpload :limit="1" :modelValue="fileList" @update:modelValue="(val) => (fileList = val)"></FileUpload>
      </el-form-item>
    </el-form>
    <div slot="footer" class="text-right">
      <el-button type="primary" @click="submitForm" :loading="loading">ç¡® å®š</el-button>
      <el-button @click="handleClose">取 æ¶ˆ</el-button>
    </div>
  </el-dialog>
</template>
<script setup>
const { proxy } = getCurrentInstance();
import { policyAdd, policyEdit } from "@/api/policy/policy"
const { proxy } = getCurrentInstance()
const { policy_sort } = proxy.useDict("policy_sort")
let visible = ref(false)
let title = ref('')
let title = ref("")
let loading = ref(false)
let form = ref({
    value1: '',
    value2: '',
  title: "",
  type: "",
  url: "",
})
let emit = defineEmits(['get-list'])
const fileList = ref([])
let emit = defineEmits(["get-list"])
const formRules = {
    value1: [{ required: true, trigger: "blur", message: "请输入文件标题" }],
    value2: [{ required: true, trigger: "change", message: "请选择文件类型" }],
  title: [{ required: true, trigger: "blur", message: "请输入文件标题" }],
  type: [{ required: true, trigger: "change", message: "请选择文件类型" }],
}
function submitForm() {
    proxy.$refs.queryRef.validate(valid => {
        if (valid) {
            // loading.value = true;
            // let obj = form.value.id ? alarmEdit(form.value) : alarmAdd(form.value)
            // obj.then((res) => {
            //     if (res.code == 200) {
            //         proxy.$modal.msgSuccess(res.message);
            //         emit('get-list')
            //     } else {
            //         proxy.$modal.msgError(res.message);
            //     }
            // }).catch((err) => {
            // }).finally(() => {
            //     handleClose()
            // });
        }
    })
  proxy.$refs.queryRef.validate((valid) => {
    if (valid) {
      loading.value = true
      if (fileList.value.length > 0) {
        form.value.url = fileList.value[0].fullUrl
      } else {
        form.value.url = ""
      }
      let obj = form.value.id ? policyEdit(form.value) : policyAdd(form.value)
      obj
        .then((res) => {
          if (res.code == 200) {
            proxy.$modal.msgSuccess(res.msg)
            emit("get-list")
            handleClose()
          } else {
            proxy.$modal.msgError(res.msg)
          }
        })
        .catch((err) => {})
        .finally(() => {
          loading.value = false
        })
    }
  })
}
function handleOpen(row) {
    if (row && row.id) {
        title.value = "编辑政策法规"
        form.value = JSON.parse(JSON.stringify(row))
    } else {
        title.value = "添加政策法规"
  fileList.value = []
  if (row && row.id) {
    title.value = "编辑政策法规"
    form.value = JSON.parse(JSON.stringify(row))
    if (row.url) {
      fileList.value = [
        {
          url: row.url,
          name: row.url,
        },
      ]
    }
    visible.value = true
  } else {
    title.value = "添加政策法规"
    fileList.value = []
  }
  visible.value = true
}
function handleClose(value) {
    visible.value = false
    loading.value = false
    proxy.$refs.queryRef.resetFields()
    form.value = {
        value1: '',
        value2: '',
    }
  visible.value = false
  loading.value = false
  proxy.$refs.queryRef.resetFields()
  form.value = {
    value1: "",
    value2: "",
  }
}
defineExpose({ handleOpen })
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped></style>
zhitan-vue/src/views/energyconservation/policyrule/policyRule.vue
@@ -1,123 +1,128 @@
<template>
    <div class="page">
        <div class="form-card">
            <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="120px">
                <el-form-item label="文件类别">
                    <el-select v-model="queryParams.value1" placeholder="请选择">
                        <el-option v-for="item in 6" :key="item" :label="item" :value="item">
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="文件标题">
                    <el-input v-model="queryParams.value2" placeholder="请输入文件标题" />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                    <el-button icon="Refresh" @click="resetQuery">重置</el-button>
                </el-form-item>
            </el-form>
        </div>
        <div class="table-box">
            <div class="mt20 mb20">
                <el-button type="primary" icon="plus" @click="handleAdd">新增</el-button>
                <!-- <el-button type="primary" icon="Delete">删除</el-button> -->
            </div>
            <el-table :data="tableData" v-loading="loading">
                <el-table-column prop="value1" label="文件标题" show-overflow-tooltip align="center" />
                <el-table-column prop="value2" label="文件类别" show-overflow-tooltip align="center" />
                <el-table-column prop="value3" label="印发时间" show-overflow-tooltip align="center" />
                <el-table-column label="操作" width="300" align="center">
                    <template #default="scope">
                        <el-button link type="primary" icon="Edit" @click="handleAdd(scope.row)">
                            ä¿®æ”¹
                        </el-button>
                        <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)">
                            åˆ é™¤
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
                v-model:limit="queryParams.pageSize" @pagination="getList" />
        </div>
        <EditModal ref="editModalRef" @get-list="getList" />
  <div class="page">
    <div class="form-card">
      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="120px">
        <el-form-item label="文件标题">
          <el-input v-model="queryParams.title" placeholder="请输入文件标题" clearable />
        </el-form-item>
        <el-form-item label="文件类别">
          <el-select v-model="queryParams.type" placeholder="文件类别" style="width: 100%" clearable>
            <el-option v-for="dict in policy_sort" :key="dict.value" :label="dict.label" :value="dict.value" />
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="table-box">
      <div class="mt20 mb20">
        <el-button type="primary" icon="plus" @click="handleAdd">新增</el-button>
        <!-- <el-button type="primary" icon="Delete">删除</el-button> -->
      </div>
      <el-table :data="tableData" v-loading="loading">
        <el-table-column prop="title" label="文件标题" show-overflow-tooltip align="center" />
        <el-table-column prop="typeName" label="文件类别" show-overflow-tooltip align="center" />
        <el-table-column prop="dept" label="印发部门" show-overflow-tooltip align="center" />
        <el-table-column prop="issuingTime" label="印发时间" show-overflow-tooltip align="center" />
        <el-table-column label="操作" width="300" align="center">
          <template #default="scope">
            <el-button v-if="scope.row.url" link type="primary" icon="Files" @click="handleFile(scope.row.url)">
              é™„ä»¶
            </el-button>
            <el-button link type="primary" icon="Edit" @click="handleAdd(scope.row)"> ä¿®æ”¹ </el-button>
            <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        v-model:page="queryParams.pageNum"
        v-model:limit="queryParams.pageSize"
        @pagination="getList"
      />
    </div>
    <EditModal ref="editModalRef" @get-list="getList" />
  </div>
</template>
<script setup>
import EditModal from './components/EditModal'
import EditModal from "./components/EditModal"
import { policyPage, policyDel } from "@/api/policy/policy"
const { proxy } = getCurrentInstance()
const { policy_sort } = proxy.useDict("policy_sort")
let { proxy } = getCurrentInstance()
let loading = ref(false);
let total = ref(2);
let tableData = ref([
    { id: 1, value1: '1111', value2: 'value2', value3: '2024å¹´10月17日11:15:39' },
    { id: 2, value1: '222', value2: '222', value3: '2024å¹´10月17日11:16:39' }])
let loading = ref(false)
let total = ref(2)
let tableData = ref([])
let queryParams = ref({
    value1: '',
    value2: '',
    pageNum: 1,
    pageSize: 10,
  value1: "",
  value2: "",
  pageNum: 1,
  pageSize: 10,
})
function getList() {
    // loading.value = true
    // alarmList(queryParams.value).then(res => {
    //     console.log(res.rows)
    //     tableData.value = res.rows
    //     total.value = res.total
    //     loading.value = false
    // })
  loading.value = true
  policyPage(queryParams.value).then((res) => {
    console.log(res.rows)
    tableData.value = res.rows
    total.value = res.total
    loading.value = false
  })
}
getList()
let editModalRef = ref('')
let editModalRef = ref("")
function handleAdd(row) {
    if (editModalRef.value) {
        editModalRef.value.handleOpen(row)
    }
  if (editModalRef.value) {
    editModalRef.value.handleOpen(row)
  }
}
function handleDel(row) {
    // proxy.$modal.confirm('是否确认删除数据项?').then(function () {
    //     return alarmDel(row.id);
    // }).then(() => {
    //     getList();
    //     proxy.$modal.msgSuccess("删除成功");
    // }).catch(() => { });
  proxy.$modal
    .confirm("是否确认删除数据项?")
    .then(function () {
      return policyDel(row.id)
    })
    .then(() => {
      getList()
      proxy.$modal.msgSuccess("删除成功")
    })
    .catch(() => {})
}
function handleFile(url) {
  window.open(url)
}
function handleQuery() {
    queryParams.value.pageNum = 1
    getList()
  queryParams.value.pageNum = 1
  getList()
}
function resetQuery() {
    queryParams.value = {
        value1: '',
        value2: '',
        pageNum: 1,
        pageSize: 10,
    }
    getList()
  queryParams.value = {
    value1: "",
    value2: "",
    pageNum: 1,
    pageSize: 10,
  }
  getList()
}
</script>
<style lang="scss" scoped>
@import "@/assets/styles/page.scss";
.header-box {
    :deep .el-form-item__content {
        color: #fff;
        font-size: 16px;
    }
  :deep .el-form-item__content {
    color: #fff;
    font-size: 16px;
  }
}
</style>
</style>
zhitan-vue/src/views/energyconservation/projectmanage/projectmanage/components/EditModal.vue
@@ -1,124 +1,124 @@
<template>
    <el-dialog v-model="visible" :title="title" width="600" @close="handleClose">
        <el-form :model="form" ref="queryRef" :rules="formRules" label-width="120px" v-loading="loading">
            <el-form-item label="项目名称" prop="value1">
                <el-input v-model="form.value1" placeholder="请输入项目名称" />
            </el-form-item>
            <el-form-item label="节能计划" prop="value2">
                <el-input v-model="form.value2" placeholder="请输入节能计划" />
            </el-form-item>
            <el-form-item label="节能目标" prop="value3">
                <el-input v-model="form.value3" placeholder="请输入节能目标" />
            </el-form-item>
            <el-form-item label="开始时间" prop="value4">
                <el-date-picker v-model="form.value4" type="date" placeholder="请选择开始时间" format="YYYY-MM-DD"
                    date-format="YYYY/MM/DD" />
            </el-form-item>
            <el-form-item label="结束时间" prop="value5">
                <el-date-picker v-model="form.value5" type="date" placeholder="请选择结束时间" format="YYYY-MM-DD"
                    date-format="YYYY/MM/DD" />
            </el-form-item>
            <el-form-item label="负责人" prop="value6">
                <el-input v-model="form.value6" placeholder="请输入负责人" />
            </el-form-item>
            <el-form-item label="制定时检" prop="value7">
                <el-date-picker v-model="form.value7" type="date" placeholder="请选择制定时检" format="YYYY-MM-DD"
                    date-format="YYYY/MM/DD" />
            </el-form-item>
        </el-form>
        <div slot="footer" class="text-right">
            <el-button type="primary" @click="submitForm" :loading="loading">ç¡® å®š</el-button>
            <el-button @click="handleClose">取 æ¶ˆ</el-button>
        </div>
    </el-dialog>
  <el-dialog v-model="visible" :title="title" width="600" @close="handleClose">
    <el-form :model="form" ref="queryRef" :rules="formRules" label-width="120px" v-loading="loading">
      <el-form-item label="总体计划" prop="plan">
        <el-input v-model="form.plan" placeholder="请输入总体计划" />
      </el-form-item>
      <el-form-item label="实施计划" prop="implementationPlan">
        <el-input v-model="form.implementationPlan" placeholder="请输入实施计划" />
      </el-form-item>
      <el-form-item label="当前工作" prop="currentWork">
        <el-input v-model="form.currentWork" placeholder="请输入当前工作" />
      </el-form-item>
      <el-form-item label="节约量" prop="savingAmount">
        <el-input-number style="width: 100%" v-model="form.savingAmount" placeholder="请输入节约量" />
      </el-form-item>
      <!-- <el-form-item label="开始时间" prop="value4">
        <el-date-picker
          v-model="form.value4"
          type="date"
          placeholder="请选择开始时间"
          format="YYYY-MM-DD"
          date-format="YYYY/MM/DD"
        />
      </el-form-item>
      <el-form-item label="结束时间" prop="value5">
        <el-date-picker
          v-model="form.value5"
          type="date"
          placeholder="请选择结束时间"
          format="YYYY-MM-DD"
          date-format="YYYY/MM/DD"
        />
      </el-form-item> -->
      <el-form-item label="负责人" prop="liablePerson">
        <el-input v-model="form.liablePerson" placeholder="请输入负责人" />
      </el-form-item>
      <el-form-item label="完成时间" prop="completionTime">
        <el-date-picker
          v-model="form.completionTime"
          type="date"
          placeholder="请选择完成时间"
          format="YYYY-MM-DD"
          date-format="YYYY/MM/DD"
        />
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" />
      </el-form-item>
    </el-form>
    <div slot="footer" class="text-right">
      <el-button type="primary" @click="submitForm" :loading="loading">ç¡® å®š</el-button>
      <el-button @click="handleClose">取 æ¶ˆ</el-button>
    </div>
  </el-dialog>
</template>
<script setup>
import { alarmAdd, alarmEdit } from '@/api/businessConfiguration/businessConfiguration'
const { proxy } = getCurrentInstance();
let props = defineProps(['alarmTypeList', 'operatorList'])
import { projectEdit, projectAdd } from "@/api/policy/project"
const { proxy } = getCurrentInstance()
let props = defineProps(["alarmTypeList", "operatorList"])
let visible = ref(false)
let title = ref('')
let title = ref("")
let loading = ref(false)
let form = ref({
    value1: null,
    value2: null,
    value3: null,
    value4: null,
    value5: null,
    value6: null,
    value7: null,
  plan: null,
  implementationPlan: null,
  remark: null,
  liablePerson: null,
  currentWork: null,
  completionTime: null,
  savingAmount: null,
})
let emit = defineEmits(['getList'])
let emit = defineEmits(["getList"])
const formRules = {
    value1: [{ required: true, trigger: "blur", message: "请输入项目名称" }],
    value2: [{ required: true, trigger: "blur", message: "请输入节能计划" }],
    value3: [{ required: true, trigger: "blur", message: "请输入节能目标" }],
    value4: [{ required: true, trigger: "blur", message: "请选择开始时间" }],
    value5: [{ required: true, trigger: "blur", message: "请选择结束时间" }],
    value6: [{ required: true, trigger: "blur", message: "请输入负责人" }],
    value7: [{ required: true, trigger: "blur", message: "请选择制定时检" }],
  plan: [{ required: true, trigger: "blur", message: "请输入必填项" }],
  implementationPlan: [{ required: true, trigger: "blur", message: "请输入必填项" }],
  savingAmount: [{ required: true, trigger: "blur", message: "请输入必填项" }],
  liablePerson: [{ required: true, trigger: "blur", message: "请输入必填项" }],
  currentWork: [{ required: true, trigger: "blur", message: "请输入必填项" }],
}
function submitForm() {
    proxy.$refs.queryRef.validate(valid => {
        if (valid) {
            // loading.value = true;
            // let obj = form.value.id ? alarmEdit(form.value) : alarmAdd(form.value)
            // obj.then((res) => {
            //     if (res.code == 200) {
            //         proxy.$modal.msgSuccess(res.message);
            //         emit('getList')
            //     } else {
            //         proxy.$modal.msgError(res.message);
            //     }
            // }).catch((err) => {
            // }).finally(() => {
            //     handleClose()
            // });
        }
    })
  proxy.$refs.queryRef.validate((valid) => {
    if (valid) {
      loading.value = true
      let obj = form.value.id ? projectEdit(form.value) : projectAdd(form.value)
      obj
        .then((res) => {
          if (res.code == 200) {
            proxy.$modal.msgSuccess(res.msg)
            emit("getList")
            handleClose()
          } else {
            proxy.$modal.msgError(res.msg)
          }
        })
        .catch((err) => {})
        .finally(() => {})
    }
  })
}
function handleOpen(row) {
    if (row && row.id) {
        title.value = "编辑节能项目管理"
        form.value = JSON.parse(JSON.stringify(row))
    } else {
        title.value = "添加节能项目管理"
    }
    visible.value = true
  if (row && row.id) {
    title.value = "编辑节能项目管理"
    form.value = JSON.parse(JSON.stringify(row))
  } else {
    title.value = "添加节能项目管理"
  }
  visible.value = true
}
function handleClose(value) {
    visible.value = false
    loading.value = false
    proxy.$refs.queryRef.resetFields()
    form.value = {
        value1: null,
        value2: null,
        value3: null,
        value4: null,
        value5: null,
        value6: null,
        value7: null,
    }
  visible.value = false
  loading.value = false
  proxy.$refs.queryRef.resetFields()
  form.value = {}
}
defineExpose({ handleOpen })
</script>
<style lang="scss" scoped></style>
zhitan-vue/src/views/energyconservation/projectmanage/projectmanage/projectManage.vue
@@ -1,135 +1,136 @@
<template>
    <div class="page">
        <div class="form-card">
            <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="120px">
                <el-form-item label="项目名称">
                    <el-input v-model="queryParams.value1" placeholder="请输入项目名称" />
                </el-form-item>
                <el-form-item label="统计时间">
                    <el-date-picker v-model="queryParams.value2" type="daterange" start-placeholder="选择开始时间"
                        end-placeholder="选择结束时间" format="YYYY-MM-DD" date-format="YYYY/MM/DD" />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                    <el-button icon="Refresh" @click="resetQuery">重置</el-button>
                </el-form-item>
            </el-form>
        </div>
        <div class="table-box">
            <div class="mt20 mb20">
                <el-button type="primary" icon="plus" @click="handleAdd">新增</el-button>
                <el-button type="primary" icon="Download" @click="handleAdd"> å¯¼å‡º </el-button>
            </div>
            <el-table :data="tableData" v-loading="loading">
                <el-table-column prop="value1" label="项目名称" show-overflow-tooltip align="center" />
                <el-table-column prop="value2" label="节能计划" show-overflow-tooltip align="center" />
                <el-table-column prop="value3" label="节能目标" show-overflow-tooltip align="center" />
                <el-table-column prop="value4" label="开始时间" show-overflow-tooltip align="center" />
                <el-table-column prop="value5" label="结束时间" show-overflow-tooltip align="center" />
                <el-table-column prop="value6" label="负责人" show-overflow-tooltip align="center" />
                <el-table-column prop="value7" label="制定时检" show-overflow-tooltip align="center" />
                <el-table-column prop="value8" label="创建人" show-overflow-tooltip align="center" />
                <el-table-column label="操作" width="300" align="center">
                    <template #default="scope">
                        <el-button link type="primary" icon="Files" @click=" ">
                            é™„ä»¶
                        </el-button>
                        <el-button link type="primary" icon="Edit" @click="handleAdd(scope.row)">
                            ä¿®æ”¹
                        </el-button>
                        <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)">
                            åˆ é™¤
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
                v-model:limit="queryParams.pageSize" @pagination="getList" />
        </div>
        <edit-modal ref="EditModalRef" @getList="getList" />
  <div class="page">
    <div class="form-card">
      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="120px">
        <el-form-item label="总体计划">
          <el-input v-model="queryParams.plan" placeholder="请输入总体计划" />
        </el-form-item>
        <el-form-item label="负责人">
          <el-input v-model="queryParams.liablePerson" placeholder="请输入负责人" />
        </el-form-item>
        <!-- <el-form-item label="统计时间">
          <el-date-picker
            v-model="queryParams.value2"
            type="daterange"
            start-placeholder="选择开始时间"
            end-placeholder="选择结束时间"
            format="YYYY-MM-DD"
            date-format="YYYY/MM/DD"
          />
        </el-form-item> -->
        <el-form-item>
          <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="table-box">
      <div class="mt20 mb20">
        <el-button type="primary" icon="plus" @click="handleAdd">新增</el-button>
        <!-- <el-button type="primary" icon="Download" @click="handleAdd"> å¯¼å‡º </el-button> -->
      </div>
      <el-table :data="tableData" v-loading="loading">
        <el-table-column prop="plan" label="总体计划" show-overflow-tooltip align="center" />
        <el-table-column prop="implementationPlan" label="实施计划" show-overflow-tooltip align="center" />
        <el-table-column prop="savingAmount" label="节约量" show-overflow-tooltip align="center" />
        <!-- <el-table-column prop="value4" label="开始时间" show-overflow-tooltip align="center" />
        <el-table-column prop="value5" label="结束时间" show-overflow-tooltip align="center" /> -->
        <el-table-column prop="currentWork" label="当前工作" show-overflow-tooltip align="center" />
        <el-table-column prop="liablePerson" label="负责人" show-overflow-tooltip align="center" />
        <el-table-column prop="completionTime" label="完成时间" show-overflow-tooltip align="center" />
        <el-table-column prop="createTime" label="创建时间" show-overflow-tooltip align="center" />
        <el-table-column prop="remark" label="备注" show-overflow-tooltip align="center" />
        <el-table-column label="操作" width="300" align="center">
          <template #default="scope">
            <!-- <el-button link type="primary" icon="Files" @click=""> é™„ä»¶ </el-button> -->
            <el-button link type="primary" icon="Edit" @click="handleAdd(scope.row)"> ä¿®æ”¹ </el-button>
            <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        v-model:page="queryParams.pageNum"
        v-model:limit="queryParams.pageSize"
        @pagination="getList"
      />
    </div>
    <edit-modal ref="EditModalRef" @getList="getList" />
  </div>
</template>
<script setup>
import EditModal from './components/EditModal.vue'
import EditModal from "./components/EditModal.vue"
import { projectPage, projectDel } from "@/api/policy/project"
let { proxy } = getCurrentInstance()
let loading = ref(false);
let total = ref(0);
let tableData = ref([
    {id:1, value1: '1', value2: '2', value3: '3', value4: '4', value5: '5', value6: '6', value7: '7', value8: '8' },
    { id:2, value1: '1', value2: '2', value3: '3', value4: '4', value5: '5', value6: '6', value7: '7', value8: '8' },
    { id:3, value1: '1', value2: '2', value3: '3', value4: '4', value5: '5', value6: '6', value7: '7', value8: '8' },
    { id:4, value1: '1', value2: '2', value3: '3', value4: '4', value5: '5', value6: '6', value7: '7', value8: '8' },
])
let loading = ref(false)
let total = ref(0)
let tableData = ref([])
let queryParams = ref({
    value1: '',
    value2: [],
    pageNum: 1,
    pageSize: 10,
  value1: "",
  value2: [],
  pageNum: 1,
  pageSize: 10,
})
function getList() {
    // loading.value = true
    // alarmList(queryParams.value).then(res => {
    //     console.log(res.rows)
    //     tableData.value = res.rows
    //     total.value = res.total
    //     loading.value = false
    // })
  loading.value = true
  projectPage(queryParams.value).then((res) => {
    console.log(res.rows)
    tableData.value = res.rows
    total.value = res.total
    loading.value = false
  })
}
getList()
let EditModalRef = ref('')
let EditModalRef = ref("")
function handleAdd(row) {
    if (EditModalRef.value) {
        EditModalRef.value.handleOpen(row)
    }
  if (EditModalRef.value) {
    EditModalRef.value.handleOpen(row)
  }
}
function handleDel(row) {
    // proxy.$modal.confirm('是否确认删除数据项?').then(function () {
    //     return alarmDel(row.id);
    // }).then(() => {
    //     getList();
    //     proxy.$modal.msgSuccess("删除成功");
    // }).catch(() => { });
  proxy.$modal
    .confirm("是否确认删除数据项?")
    .then(function () {
      return projectDel(row.id)
    })
    .then(() => {
      getList()
      proxy.$modal.msgSuccess("删除成功")
    })
    .catch(() => {})
}
function handleQuery() {
    queryParams.value.pageNum = 1
    getList()
  queryParams.value.pageNum = 1
  getList()
}
function resetQuery() {
    queryParams.value = {
        value1: '',
        value2: [],
        pageNum: 1,
        pageSize: 10,
    }
    getList()
  queryParams.value = {
    value1: "",
    value2: [],
    pageNum: 1,
    pageSize: 10,
  }
  getList()
}
</script>
<style lang="scss" scoped>
@import "@/assets/styles/page.scss";
.header-box {
    :deep .el-form-item__content {
        color: #fff;
        font-size: 16px;
    }
  :deep .el-form-item__content {
    color: #fff;
    font-size: 16px;
  }
}
</style>
</style>
zhitan-vue/src/views/modelconfiguration/calculationformula/calculationFormula.vue
@@ -1,47 +1,48 @@
<template>
    <div class="page">
        <div class="form-card">
            <el-form ref="form" :inline="true" :model="queryParams" @submit.prevent label-width="80px">
                <el-form-item label="函数名">
                    <el-input v-model="queryParams.funcName" placeholder="请输入函数名" />
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                    <el-button icon="Refresh" @click="resetQuery">重置</el-button>
                </el-form-item>
            </el-form>
        </div>
        <div class="table-box">
            <el-table :data="tableData" style="width: 100%">
                <el-table-column prop="funcName" label="函数名" show-overflow-tooltip align="center">
                </el-table-column>
                <el-table-column prop="funcText" label="函数文本" show-overflow-tooltip align="center">
                </el-table-column>
                <el-table-column prop="info" label="介绍" show-overflow-tooltip align="center">
                </el-table-column>
                <el-table-column prop="prop" label="操作" width="150" align="center">
  <div class="page">
    <div class="form-card">
      <el-form ref="form" :inline="true" :model="queryParams" @submit.prevent label-width="80px">
        <el-form-item label="函数名">
          <el-input v-model="queryParams.funcName" placeholder="请输入函数名" />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="table-box">
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="funcName" label="函数名" show-overflow-tooltip align="center"> </el-table-column>
        <el-table-column prop="funcText" label="函数文本" show-overflow-tooltip align="center"> </el-table-column>
        <el-table-column prop="info" label="介绍" show-overflow-tooltip align="center"> </el-table-column>
        <!-- <el-table-column prop="prop" label="操作" width="150" align="center">
                    <template #default="scope">
                        <el-button link type="primary" icon="Delete" @click="handleDel(scope.row)">
                            åˆ é™¤
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
                v-model:limit="queryParams.pageSize" @pagination="getList" />
        </div>
                </el-table-column> -->
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        v-model:page="queryParams.pageNum"
        v-model:limit="queryParams.pageSize"
        @pagination="getList"
      />
    </div>
  </div>
</template>
<script setup>
import { delFunction, listFunction } from '@/api/modelConfiguration/indexWarehouse';
import { delFunction, listFunction } from "@/api/modelConfiguration/indexWarehouse"
let { proxy } = getCurrentInstance()
let queryParams = ref({
    funcName: '',
    pageNum: 1,
    pageSize: 10,
  funcName: "",
  pageNum: 1,
  pageSize: 10,
})
let tableData = ref([])
let total = ref(0)
@@ -49,40 +50,42 @@
/** æœç´¢æŒ‰é’®æ“ä½œ */
function handleQuery() {
    queryParams.value.pageNum = 1;
    getList();
  queryParams.value.pageNum = 1
  getList()
}
/** é‡ç½®æŒ‰é’®æ“ä½œ */
function resetQuery() {
    queryParams.value={}
    handleQuery();
  queryParams.value = {}
  handleQuery()
}
function getList() {
    loading.value = true;
    listFunction(queryParams.value).then(response => {
        tableData.value = response.rows;
        total.value = response.total;
        loading.value = false;
    });
  loading.value = true
  listFunction(queryParams.value).then((response) => {
    tableData.value = response.rows
    total.value = response.total
    loading.value = false
  })
}
getList()
/** åˆ é™¤æŒ‰é’®æ“ä½œ */
function handleDel(row) {
    proxy.$modal.confirm('是否确认删除计算函数为"' + row.funcName + '"的数据项?', "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
    }).then(function () {
        return delFunction(row.id);
    }).then(() => {
        getList();
        proxy.$modal.msgSuccess("删除成功");
    }).catch(function () {
    });
  proxy.$modal
    .confirm('是否确认删除计算函数为"' + row.funcName + '"的数据项?', "警告", {
      confirmButtonText: "确定",
      cancelButtonText: "取消",
      type: "warning",
    })
    .then(function () {
      return delFunction(row.id)
    })
    .then(() => {
      getList()
      proxy.$modal.msgSuccess("删除成功")
    })
    .catch(function () {})
}
</script>
<style lang="scss" scoped>
@import "@/assets/styles/page.scss";
zhitan-vue/src/views/monitor/cache/index.vue
@@ -3,39 +3,72 @@
    <el-row>
      <el-col :span="24" class="card-box">
        <el-card>
          <template #header><Monitor style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">基本信息</span></template>
          <template #header
            ><Monitor style="width: 1em; height: 1em; vertical-align: middle" />
            <span style="vertical-align: middle">基本信息</span></template
          >
          <div class="el-table el-table--enable-row-hover el-table--medium">
            <table cellspacing="0" style="width: 100%">
              <tbody>
                <tr>
                  <td class="el-table__cell is-leaf"><div class="cell">Redis版本</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">运行模式</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">
                      {{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}
                    </div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">端口</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">客户端数</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.connected_clients }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.connected_clients }}</div>
                  </td>
                </tr>
                <tr>
                  <td class="el-table__cell is-leaf"><div class="cell">运行时间(天)</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.uptime_in_days }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.uptime_in_days }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">使用内存</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.used_memory_human }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.used_memory_human }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">使用CPU</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">
                      {{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}
                    </div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">内存配置</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.maxmemory_human }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.maxmemory_human }}</div>
                  </td>
                </tr>
                <tr>
                  <td class="el-table__cell is-leaf"><div class="cell">AOF是否开启</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "否" : "是" }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "否" : "是" }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">RDB是否成功</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">Key数量</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.dbSize">{{ cache.dbSize }} </div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.dbSize">{{ cache.dbSize }}</div>
                  </td>
                  <td class="el-table__cell is-leaf"><div class="cell">网络入口/出口</div></td>
                  <td class="el-table__cell is-leaf"><div class="cell" v-if="cache.info">{{ cache.info.instantaneous_input_kbps }}kps/{{cache.info.instantaneous_output_kbps}}kps</div></td>
                  <td class="el-table__cell is-leaf">
                    <div class="cell" v-if="cache.info">
                      {{ cache.info.instantaneous_input_kbps }}kps/{{ cache.info.instantaneous_output_kbps }}kps
                    </div>
                  </td>
                </tr>
              </tbody>
            </table>
@@ -45,7 +78,10 @@
      <el-col :span="12" class="card-box">
        <el-card>
          <template #header><PieChart style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">命令统计</span></template>
          <template #header
            ><PieChart style="width: 1em; height: 1em; vertical-align: middle" />
            <span style="vertical-align: middle">命令统计</span></template
          >
          <div class="el-table el-table--enable-row-hover el-table--medium">
            <div ref="commandstats" style="height: 420px" />
          </div>
@@ -54,7 +90,10 @@
      <el-col :span="12" class="card-box">
        <el-card>
          <template #header><Odometer style="width: 1em; height: 1em; vertical-align: middle;" /> <span style="vertical-align: middle;">内存信息</span></template>
          <template #header
            ><Odometer style="width: 1em; height: 1em; vertical-align: middle" />
            <span style="vertical-align: middle">内存信息</span></template
          >
          <div class="el-table el-table--enable-row-hover el-table--medium">
            <div ref="usedmemory" style="height: 420px" />
          </div>
@@ -65,25 +104,25 @@
</template>
<script setup name="Cache">
import { getCache } from '@/api/monitor/cache';
import * as echarts from 'echarts';
import { getCache } from "@/api/monitor/cache"
import * as echarts from "echarts"
const cache = ref([]);
const commandstats = ref(null);
const usedmemory = ref(null);
const { proxy } = getCurrentInstance();
const cache = ref([])
const commandstats = ref(null)
const usedmemory = ref(null)
const { proxy } = getCurrentInstance()
function getList() {
  proxy.$modal.loading("正在加载缓存监控数据,请稍候!");
  getCache().then(response => {
    proxy.$modal.closeLoading();
    cache.value = response.data;
  proxy.$modal.loading("正在加载缓存监控数据,请稍候!")
  getCache().then((response) => {
    proxy.$modal.closeLoading()
    cache.value = response.data
    const commandstatsIntance = echarts.init(commandstats.value, "macarons");
    const commandstatsIntance = echarts.init(commandstats.value, "macarons")
    commandstatsIntance.setOption({
      tooltip: {
        trigger: "item",
        formatter: "{a} <br/>{b} : {c} ({d}%)"
        formatter: "{a} <br/>{b} : {c} ({d}%)",
      },
      series: [
        {
@@ -94,14 +133,14 @@
          center: ["50%", "38%"],
          data: response.data.commandStats,
          animationEasing: "cubicInOut",
          animationDuration: 1000
        }
      ]
    });
    const usedmemoryInstance = echarts.init(usedmemory.value, "macarons");
          animationDuration: 1000,
        },
      ],
    })
    const usedmemoryInstance = echarts.init(usedmemory.value, "macarons")
    usedmemoryInstance.setOption({
      tooltip: {
        formatter: "{b} <br/>{a} : " + cache.value.info.used_memory_human
        formatter: "{b} <br/>{a} : " + cache.value.info.used_memory_human,
      },
      series: [
        {
@@ -110,23 +149,33 @@
          min: 0,
          max: 1000,
          detail: {
            formatter: cache.value.info.used_memory_human
            formatter: cache.value.info.used_memory_human,
          },
          data: [
            {
              value: parseFloat(cache.value.info.used_memory_human),
              name: "内存消耗"
            }
          ]
        }
      ]
              name: "内存消耗",
            },
          ],
        },
      ],
    })
    window.addEventListener("resize", () => {
      commandstatsIntance.resize();
      usedmemoryInstance.resize();
    },{passive: true});
    window.addEventListener(
      "resize",
      () => {
        commandstatsIntance.resize()
        usedmemoryInstance.resize()
      },
      { passive: true }
    )
  })
}
getList();
getList()
</script>
<style lang="scss" scoped>
.el-table {
  color: #333;
}
</style>