瀏覽代碼

feature 高低压相关代码提交

xiahan 9 月之前
父節點
當前提交
108b5b631f

+ 15 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquGdyMeterDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.EquGdyMeterDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity com.rongwei.training.domain.EquGdyMeter
+ */
+public interface EquGdyMeterDao extends BaseMapper<EquGdyMeterDo> {
+
+}
+
+
+
+

+ 15 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquGdyRecordDao.java

@@ -0,0 +1,15 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.EquGdyRecordDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity com.rongwei.training.domain.EquGdyRecord
+ */
+public interface EquGdyRecordDao extends BaseMapper<EquGdyRecordDo> {
+
+}
+
+
+
+

+ 11 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquGdyMeterService.java

@@ -0,0 +1,11 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.EquGdyMeterDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ */
+public interface EquGdyMeterService extends IService<EquGdyMeterDo> {
+
+}

+ 16 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquGdyRecordService.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service;
+
+
+import com.rongwei.bsentity.domain.EquGdyRecordDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.rwcommon.base.R;
+
+/**
+ *
+ */
+public interface EquGdyRecordService extends IService<EquGdyRecordDo> {
+
+    R generateDailyRecords();
+
+    R saveData(EquGdyRecordDo equGdyRecordDo);
+}

+ 21 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquGdyMeterServiceImpl.java

@@ -0,0 +1,21 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.EquGdyMeterDao;
+import com.rongwei.bscommon.sys.service.EquGdyMeterService;
+import com.rongwei.bsentity.domain.EquGdyMeterDo;
+import org.springframework.stereotype.Service;
+
+
+/**
+ *
+ */
+@Service
+public class EquGdyMeterServiceImpl extends ServiceImpl<EquGdyMeterDao, EquGdyMeterDo> implements EquGdyMeterService {
+
+}
+
+
+
+

+ 127 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquGdyRecordServiceImpl.java

@@ -0,0 +1,127 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+
+import com.alibaba.excel.util.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.EquGdyRecordDao;
+import com.rongwei.bscommon.sys.service.EquGdyRecordService;
+import com.rongwei.bsentity.domain.EquGdyMeterDo;
+import com.rongwei.bsentity.domain.EquGdyRecordDo;
+import com.rongwei.rwcommon.base.BaseDo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ *
+ */
+@Service
+public class EquGdyRecordServiceImpl extends ServiceImpl<EquGdyRecordDao, EquGdyRecordDo>
+        implements EquGdyRecordService {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private EquGdyMeterServiceImpl equGdyMeterService;
+
+    @Override
+    public R generateDailyRecords() {
+        log.info("开始生产当天的高低压记录");
+        List<EquGdyMeterDo> gdyMeterDoList = equGdyMeterService.list(new LambdaQueryWrapper<EquGdyMeterDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(EquGdyMeterDo::getStatus, "enable"));
+        if (gdyMeterDoList.isEmpty()) {
+            log.error("无法获取到用表记录信息");
+            return R.error("无法获取到用表记录信息");
+        }
+        List<EquGdyRecordDo> equGdyRecordDos = new ArrayList<>();
+        Calendar instance = Calendar.getInstance();
+        Date now = instance.getTime();
+        EquGdyRecordDo equGdyRecordDo;
+        for (EquGdyMeterDo equGdyMeterDo : gdyMeterDoList) {
+            equGdyRecordDo = new EquGdyRecordDo();
+            equGdyRecordDo.setId(SecurityUtil.getUUID());
+            equGdyRecordDo.setEnergytype(equGdyMeterDo.getEnergytype());
+            equGdyRecordDo.setMeterid(equGdyMeterDo.getId());
+            equGdyRecordDo.setMetername(equGdyMeterDo.getMetername());
+            equGdyRecordDo.setMetercode(equGdyMeterDo.getMetercode());
+            equGdyRecordDo.setCbdate(now);
+            equGdyRecordDo.setUsedeptid(equGdyMeterDo.getUsedeptid());
+            equGdyRecordDo.setCreatedate(now);
+            equGdyRecordDo.setModifydate(now);
+            equGdyRecordDo.setTenantid(equGdyMeterDo.getTenantid());
+            equGdyRecordDo.setMeterlocation(equGdyMeterDo.getMeterlocation());
+            equGdyRecordDo.setYear(instance.get(Calendar.YEAR));
+            equGdyRecordDo.setMonth(instance.get(Calendar.MONTH) + 1);
+            equGdyRecordDo.setDay(instance.get(Calendar.DAY_OF_MONTH));
+            equGdyRecordDos.add(equGdyRecordDo);
+        }
+        this.saveBatch(equGdyRecordDos, 100);
+        return R.ok();
+    }
+
+    @Override
+    public R saveData(EquGdyRecordDo currentData) {
+        if (StringUtils.isBlank(currentData.getId())) {
+            return R.error("数据异常");
+        }
+        //计算 夜班用量= 当前的夜班抄表-前一天的中班抄表
+        if (currentData.getValuenight() != null) {
+            // 获取上一天的数据
+            EquGdyRecordDo previousData = dataFromTheDayBefore(currentData, -1);
+            if (previousData != null && previousData.getValuemiddle() != null) {
+                //当前数据-前一天的中班用量
+                currentData.setValuenightuse(currentData.getValuenight().subtract(previousData.getValuemiddle()));
+            }
+        }
+        // 计算 早班用量 =当前的早班抄表-当前的夜班抄表
+        if (currentData.getValuemorning() != null && currentData.getValuenight() != null) {
+            currentData.setValuemorninguse(currentData.getValuemorning().subtract(currentData.getValuenight()));
+        }
+        // 计算 中班用量 = 当前的中班抄表-当前的早班抄表
+        if (currentData.getValuemiddle() != null) {
+            // 中班用量 = 当前的中班抄表-当前的早班抄表
+            if (currentData.getValuemorning() != null) {
+                currentData.setValuemiddleuse(currentData.getValuemiddle().subtract(currentData.getValuemorning()));
+            }
+            // 更新下一天的夜班用量 = 下一天的夜班抄表-当前的中班抄表
+            EquGdyRecordDo nextData = dataFromTheDayBefore(currentData, 1);
+            if (nextData != null && nextData.getValuenight() != null) {
+                nextData.setValuenightuse(nextData.getValuenight().subtract(currentData.getValuemiddle()));
+                this.updateById(nextData);
+            }
+        }
+        this.updateById(currentData);
+        return R.ok(currentData);
+    }
+
+    public EquGdyRecordDo dataFromTheDayBefore(EquGdyRecordDo equGdyRecordDo, int changeDay) {
+        Date cbdate = equGdyRecordDo.getCbdate();
+        if (cbdate == null) {
+            log.error("当前抄表日期为空,无法计算夜班用量");
+            throw new CustomException("当前抄表日期为空,无法计算夜班用量");
+        }
+        Calendar instance = Calendar.getInstance();
+        instance.setTime(cbdate);
+        instance.add(Calendar.DATE, changeDay);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        return this.baseMapper.selectOne(new LambdaQueryWrapper<EquGdyRecordDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(EquGdyRecordDo::getCbdate, dateFormat.format(instance.getTime()))
+                .eq(EquGdyRecordDo::getMeterid, equGdyRecordDo.getMeterid()));
+    }
+}
+
+
+
+

+ 125 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquGdyMeterDo.java

@@ -0,0 +1,125 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 设备子系统——高低压表具信息
+ * @TableName equ_gdy_meter
+ */
+@TableName(value ="equ_gdy_meter")
+@Data
+public class EquGdyMeterDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+
+    /**
+     * 使用状态
+     */
+    private String status;
+
+    /**
+     * 流程ID
+     */
+    private String processinstid;
+
+    /**
+     * 表具编号
+     */
+    private String metercode;
+
+    /**
+     * 表具名称
+     */
+    private String metername;
+
+    /**
+     * 表具位置
+     */
+    private String meterlocation;
+
+    /**
+     * 分类
+     */
+    private String energytype;
+
+    /**
+     * 型号
+     */
+    private String meterxh;
+
+    /**
+     * 所属工厂
+     */
+    private String ownedfactory;
+
+    /**
+     * 使用部门ID
+     */
+    private String usedeptid;
+
+    /**
+     * 使用部门
+     */
+    private String usedept;
+
+    /**
+     * 表具厂家
+     */
+    private String makefactory;
+
+    /**
+     * 启用日期
+     */
+    private Date startdate;
+
+    /**
+     * 停用日期
+     */
+    private Date enddate;
+
+    /**
+     * 电表变比
+     */
+    private BigDecimal dbbb;
+
+    /**
+     * 序号
+     */
+    private String xssx;
+
+    /**
+     * 是否循环表
+     */
+    private String iscircularlist;
+
+    /**
+     * 高压/低压
+     */
+    private String gydy;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 164 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquGdyRecordDo.java

@@ -0,0 +1,164 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 设备子系统——高低压每日抄表记录
+ * @TableName equ_gdy_record
+ */
+@TableName(value ="equ_gdy_record")
+@Data
+public class EquGdyRecordDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 分类
+     */
+    private String energytype;
+
+    /**
+     * 表具ID
+     */
+    private String meterid;
+
+    /**
+     * 表具名称
+     */
+    private String metername;
+
+    /**
+     * 表具编号
+     */
+    private String metercode;
+
+    /**
+     * 抄表日期
+     */
+    private Date cbdate;
+
+    /**
+     * 夜班抄表
+     */
+    private BigDecimal valuenight;
+
+    /**
+     * 夜班用量
+     */
+    private BigDecimal valuenightuse;
+
+    /**
+     * 早班抄表
+     */
+    private BigDecimal valuemorning;
+
+    /**
+     * 早班用量
+     */
+    private BigDecimal valuemorninguse;
+
+    /**
+     * 中班抄表
+     */
+    private BigDecimal valuemiddle;
+
+    /**
+     * 中班用量
+     */
+    private BigDecimal valuemiddleuse;
+
+    /**
+     * 抄表总量
+     */
+    private BigDecimal valuez;
+
+    /**
+     * 使用状态
+     */
+    private String status;
+
+    /**
+     * 流程ID
+     */
+    private String processinstid;
+
+    /**
+     * 表具位置
+     */
+    private String meterlocation;
+
+    /**
+     * 点位
+     */
+    private String points;
+
+    /**
+     * 抄表用量
+     */
+    private BigDecimal valueu;
+
+    /**
+     * 点位值1
+     */
+    private BigDecimal value1;
+
+    /**
+     * 点位值2
+     */
+    private BigDecimal value2;
+
+    /**
+     * 点位值3
+     */
+    private String value3;
+
+    /**
+     * 点位值4
+     */
+    private String value4;
+
+    /**
+     * 所属工厂
+     */
+    private String ownedfactory;
+
+    /**
+     * 使用部门ID
+     */
+    private String usedeptid;
+
+    /**
+     * 使用部门
+     */
+    private String usedept;
+
+
+    private int year;
+    private int month;
+    private int day;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 40 - 0
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquGdyRecordController.java

@@ -0,0 +1,40 @@
+package com.rongwei.bsserver.sys.controller;
+
+import com.rongwei.bsentity.domain.EquGdyRecordDo;
+import com.rongwei.bsentity.dto.EquipmentDisposeDTO;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.bscommon.sys.service.impl.EquGdyRecordServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * EquGdyRecordController class
+ *
+ * @author XH
+ * @date 2024/11/05
+ */
+@RestController
+@RequestMapping("/equ-gdy-record")
+public class EquGdyRecordController {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private EquGdyRecordServiceImpl equGdyRecordService;
+
+
+    @Scheduled(cron = "1 1 0 * * ? ")
+    @PostMapping("/write")
+    public R generateDailyRecords(){
+        return equGdyRecordService.generateDailyRecords();
+    }
+
+    @PostMapping("/save")
+    public R saveData(@RequestBody EquGdyRecordDo equGdyRecordDo){
+        return equGdyRecordService.saveData(equGdyRecordDo);
+    }
+}