Browse Source

1、测试备件出入库历史记录管理、网关参数管理、设备通信采集参数管理、维保管理接口;

2、添加定时任务统计维保信息记录;
dev
mh 2 months ago
parent
commit
5e3da57c8f
  1. 3
      mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java
  2. 2
      mh-admin/src/main/java/com/mh/web/controller/device/DeviceInOutManageController.java
  3. 3
      mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java
  4. 38
      mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java
  5. 12
      mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceInOutManage.java
  6. 27
      mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java
  7. 142
      mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainSum.java
  8. 34
      mh-quartz/src/main/java/com/mh/quartz/task/CreateMaintainTask.java
  9. 24
      mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java
  10. 5
      mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java
  11. 5
      mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java
  12. 22
      mh-system/src/main/java/com/mh/system/service/device/impl/DeviceInOutManageServiceImpl.java
  13. 11
      mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java
  14. 2
      sql/创建冷水机组参数表存储过程.sql
  15. 144
      sql/创建维保统计存储过程.sql
  16. 2
      sql/创建计量设备表存储过程.sql
  17. 34
      sql/维保信息统计表.sql

3
mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java

@ -12,6 +12,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -59,6 +60,7 @@ public class CommunicationParamsController extends BaseController {
public AjaxResult add(@Validated @RequestBody CommunicationParams communicationParams) public AjaxResult add(@Validated @RequestBody CommunicationParams communicationParams)
{ {
communicationParams.setCreateBy(getUsername()); communicationParams.setCreateBy(getUsername());
communicationParams.setCreateTime(new Date());
return toAjax(iCommunicationParamsService.insertCommunicationParams(communicationParams)); return toAjax(iCommunicationParamsService.insertCommunicationParams(communicationParams));
} }
@ -71,6 +73,7 @@ public class CommunicationParamsController extends BaseController {
public AjaxResult edit(@Validated @RequestBody CommunicationParams communicationParams) public AjaxResult edit(@Validated @RequestBody CommunicationParams communicationParams)
{ {
communicationParams.setUpdateBy(getUsername()); communicationParams.setUpdateBy(getUsername());
communicationParams.setUpdateTime(new Date());
return toAjax(iCommunicationParamsService.updateCommunicationParams(communicationParams)); return toAjax(iCommunicationParamsService.updateCommunicationParams(communicationParams));
} }

2
mh-admin/src/main/java/com/mh/web/controller/device/DeviceInOutManageController.java

@ -12,6 +12,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -58,6 +59,7 @@ public class DeviceInOutManageController extends BaseController {
public AjaxResult add(@Validated @RequestBody DeviceInOutManage deviceInOutManage) public AjaxResult add(@Validated @RequestBody DeviceInOutManage deviceInOutManage)
{ {
deviceInOutManage.setCreateBy(getUsername()); deviceInOutManage.setCreateBy(getUsername());
deviceInOutManage.setCreateTime(new Date());
return toAjax(deviceInOutManageService.insertDeviceInOutManage(deviceInOutManage)); return toAjax(deviceInOutManageService.insertDeviceInOutManage(deviceInOutManage));
} }

3
mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java

@ -14,6 +14,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -61,6 +62,7 @@ public class GatewayManageController extends BaseController {
public AjaxResult add(@Validated @RequestBody GatewayManage gatewayManage) public AjaxResult add(@Validated @RequestBody GatewayManage gatewayManage)
{ {
gatewayManage.setCreateBy(getUsername()); gatewayManage.setCreateBy(getUsername());
gatewayManage.setCreateTime(new Date());
return toAjax(gatewayManageService.insertGatewayManage(gatewayManage)); return toAjax(gatewayManageService.insertGatewayManage(gatewayManage));
} }
@ -73,6 +75,7 @@ public class GatewayManageController extends BaseController {
public AjaxResult edit(@Validated @RequestBody GatewayManage gatewayManage) public AjaxResult edit(@Validated @RequestBody GatewayManage gatewayManage)
{ {
gatewayManage.setUpdateBy(getUsername()); gatewayManage.setUpdateBy(getUsername());
gatewayManage.setUpdateTime(new Date());
return toAjax(gatewayManageService.updateGateway(gatewayManage)); return toAjax(gatewayManageService.updateGateway(gatewayManage));
} }

38
mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java

@ -4,6 +4,7 @@ import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController; import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult; import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.MaintainInfo; import com.mh.common.core.domain.entity.MaintainInfo;
import com.mh.common.core.domain.entity.MaintainSum;
import com.mh.common.core.page.TableDataInfo; import com.mh.common.core.page.TableDataInfo;
import com.mh.common.enums.BusinessType; import com.mh.common.enums.BusinessType;
import com.mh.system.service.device.IMaintainInfoService; import com.mh.system.service.device.IMaintainInfoService;
@ -12,6 +13,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -56,10 +58,10 @@ public class MaintainInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:maintain:add')") @PreAuthorize("@ss.hasPermi('system:maintain:add')")
@Log(title = "维护设备管理", businessType = BusinessType.INSERT) @Log(title = "维护设备管理", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@Validated @RequestBody MaintainInfo gatewayManage) public AjaxResult add(@Validated @RequestBody MaintainInfo maintainInfo)
{ {
gatewayManage.setCreateBy(getUsername()); maintainInfo.setCreateBy(getUsername());
return toAjax(maintainInfoService.insertMaintainInfo(gatewayManage)); return toAjax(maintainInfoService.insertMaintainInfo(maintainInfo));
} }
/** /**
@ -68,10 +70,11 @@ public class MaintainInfoController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:maintain:edit')") @PreAuthorize("@ss.hasPermi('system:maintain:edit')")
@Log(title = "维护设备管理", businessType = BusinessType.UPDATE) @Log(title = "维护设备管理", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@Validated @RequestBody MaintainInfo gatewayManage) public AjaxResult edit(@Validated @RequestBody MaintainInfo maintainInfo)
{ {
gatewayManage.setUpdateBy(getUsername()); maintainInfo.setUpdateBy(getUsername());
return toAjax(maintainInfoService.updateMaintainInfo(gatewayManage)); maintainInfo.setUpdateTime(new Date());
return toAjax(maintainInfoService.updateMaintainInfo(maintainInfo));
} }
/** /**
@ -84,4 +87,27 @@ public class MaintainInfoController extends BaseController {
{ {
return toAjax(maintainInfoService.deleteMaintainInfoByIds(maintainIds)); return toAjax(maintainInfoService.deleteMaintainInfoByIds(maintainIds));
} }
/**
* 删除维护设备管理
*/
@PreAuthorize("@ss.hasPermi('system:maintain:remove')")
@Log(title = "维护设备管理", businessType = BusinessType.DELETE)
@GetMapping("/maintainSum")
public AjaxResult sumMaintain(@RequestParam(value= "buildingId", required=false)String buildingId,
@RequestParam(value= "curDate", required=false)String curDate) {
try {
MaintainSum record;
if (buildingId == null || buildingId.equals("")) {
record = maintainInfoService.queryMaintainSum("所有", curDate);
} else {
record = maintainInfoService.queryMaintainSum(buildingId, curDate);
}
return AjaxResult.success(record);
} catch (Exception e) {
return AjaxResult.error();
}
}
} }

12
mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceInOutManage.java

@ -31,7 +31,7 @@ public class DeviceInOutManage extends BaseEntity {
/** /**
* 备件的名称便于快速识别 * 备件的名称便于快速识别
*/ */
private String sparePartsName; private String spareName;
/** /**
* 出入库操作类型0表示入库1表示出库 * 出入库操作类型0表示入库1表示出库
@ -106,12 +106,12 @@ public class DeviceInOutManage extends BaseEntity {
this.sparePartsId = sparePartsId; this.sparePartsId = sparePartsId;
} }
public String getSparePartsName() { public String getSpareName() {
return sparePartsName; return spareName;
} }
public void setSparePartsName(String sparePartsName) { public void setSpareName(String spareName) {
this.sparePartsName = sparePartsName; this.spareName = spareName;
} }
public Integer getOperaType() { public Integer getOperaType() {
@ -143,7 +143,7 @@ public class DeviceInOutManage extends BaseEntity {
return new ToStringBuilder(this) return new ToStringBuilder(this)
.append("id", id) .append("id", id)
.append("sparePartsId", sparePartsId) .append("sparePartsId", sparePartsId)
.append("sparePartsName", sparePartsName) .append("spareName", spareName)
.append("operaType", operaType) .append("operaType", operaType)
.append("intOutNum", intOutNum) .append("intOutNum", intOutNum)
.append("inventoryLevels", inventoryLevels) .append("inventoryLevels", inventoryLevels)

27
mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.mh.common.core.domain.BaseEntity; import com.mh.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
@ -25,8 +26,10 @@ public class MaintainInfo extends BaseEntity {
private BigDecimal cost; // 费用 private BigDecimal cost; // 费用
private String contents; // 维保内容 private String contents; // 维保内容
private String evaluate; // 评价分数 private String evaluate; // 评价分数
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date execTime; // 执行时间 private Date execTime; // 执行时间
private Integer spendTime; // 花费时间 private Integer spendTimes; // 花费时间
private String buildingId; // 楼栋id
@TableField(exist = false) @TableField(exist = false)
private String searchValue; private String searchValue;
@ -142,12 +145,20 @@ public class MaintainInfo extends BaseEntity {
this.execTime = execTime; this.execTime = execTime;
} }
public Integer getSpendTime() { public Integer getSpendTimes() {
return spendTime; return spendTimes;
} }
public void setSpendTime(Integer spendTime) { public void setSpendTimes(Integer spendTimes) {
this.spendTime = spendTime; this.spendTimes = spendTimes;
}
public String getBuildingId() {
return buildingId;
}
public void setBuildingId(String buildingId) {
this.buildingId = buildingId;
} }
@Override @Override
@ -162,7 +173,11 @@ public class MaintainInfo extends BaseEntity {
.append("contents", contents) .append("contents", contents)
.append("evaluate", evaluate) .append("evaluate", evaluate)
.append("execTime", execTime) .append("execTime", execTime)
.append("spendTime", spendTime) .append("spendTimes", spendTimes)
.append("buildingId", buildingId)
.append("searchValue", searchValue)
.append("remark", remark)
.append("params", params)
.toString(); .toString();
} }
} }

142
mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainSum.java

@ -0,0 +1,142 @@
package com.mh.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 维保统计
* @date 2025-02-26 16:47:18
*/
@TableName("maintain_sum")
public class MaintainSum {
private String id;
private String buildingId;
private String curDate;
private int dayNum;
private String dayP;
private int weekNum;
private String weekP;
private int monthNum;
private String monthP;
private int yearNum;
private String yearP;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBuildingId() {
return buildingId;
}
public void setBuildingId(String buildingId) {
this.buildingId = buildingId;
}
public String getCurDate() {
return curDate;
}
public void setCurDate(String curDate) {
this.curDate = curDate;
}
public int getDayNum() {
return dayNum;
}
public void setDayNum(int dayNum) {
this.dayNum = dayNum;
}
public String getDayP() {
return dayP;
}
public void setDayP(String dayP) {
this.dayP = dayP;
}
public int getWeekNum() {
return weekNum;
}
public void setWeekNum(int weekNum) {
this.weekNum = weekNum;
}
public String getWeekP() {
return weekP;
}
public void setWeekP(String weekP) {
this.weekP = weekP;
}
public int getMonthNum() {
return monthNum;
}
public void setMonthNum(int monthNum) {
this.monthNum = monthNum;
}
public String getMonthP() {
return monthP;
}
public void setMonthP(String monthP) {
this.monthP = monthP;
}
public int getYearNum() {
return yearNum;
}
public void setYearNum(int yearNum) {
this.yearNum = yearNum;
}
public String getYearP() {
return yearP;
}
public void setYearP(String yearP) {
this.yearP = yearP;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("buildingId", buildingId)
.append("curDate", curDate)
.append("dayNum", dayNum)
.append("dayP", dayP)
.append("weekNum", weekNum)
.append("weekP", weekP)
.append("monthNum", monthNum)
.append("monthP", monthP)
.append("yearNum", yearNum)
.append("yearP", yearP)
.toString();
}
}

34
mh-quartz/src/main/java/com/mh/quartz/task/CreateMaintainTask.java

@ -0,0 +1,34 @@
package com.mh.quartz.task;
import com.mh.system.service.device.IMaintainInfoService;
import com.mh.system.service.device.impl.MaintainInfoServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 定时处理维保统计
* @date 2025-02-26 18:09:32
*/
@Component("createMaintainTask")
public class CreateMaintainTask {
private final IMaintainInfoService maintainInfoService;
@Autowired
public CreateMaintainTask(IMaintainInfoService maintainInfoService) {
this.maintainInfoService = maintainInfoService;
}
public void createMaintainTask() {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String curDate = sdf1.format(date);
maintainInfoService.createMaintainTask(curDate);
}
}

24
mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java

@ -2,7 +2,9 @@ package com.mh.system.mapper.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.MaintainInfo; import com.mh.common.core.domain.entity.MaintainInfo;
import org.apache.ibatis.annotations.Mapper; import com.mh.common.core.domain.entity.MaintainSum;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.StatementType;
/** /**
* @author LJF * @author LJF
@ -13,4 +15,24 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface MaintainInfoMapper extends BaseMapper<MaintainInfo> { public interface MaintainInfoMapper extends BaseMapper<MaintainInfo> {
@Results(value = {
@Result(property="curDate",column="cur_date"),
@Result(property="buildingId",column="building_id"),
@Result(property="dayNum",column="day_num"),
@Result(property="dayP",column="day_p"),
@Result(property ="weekNum",column ="week_num"),
@Result(property ="weekP",column ="week_p"),
@Result(property ="monthNum",column ="month_num"),
@Result(property="monthP",column="month_p"),
@Result(property="yearNum",column="year_num"),
@Result(property="yearP",column="year_p")
})
@Select("select * from maintain_sum where building_id=#{buildingId} and cur_date=#{curDate}")
MaintainSum queryMaintainSum(@Param("buildingId") String buildingId, @Param("curDate") String curDate);
//汇总维保量
@Select("exec pro_maintain_sum #{curDate,jdbcType=VARCHAR,mode=IN} ")
@Options(statementType = StatementType.CALLABLE)
void proMaintainSum(@Param("curDate") String curDate);
} }

5
mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java

@ -16,8 +16,9 @@ import org.apache.ibatis.annotations.Update;
@Mapper @Mapper
public interface SparePartsManageMapper extends BaseMapper<SparePartsManage> { public interface SparePartsManageMapper extends BaseMapper<SparePartsManage> {
@Update("update spare_parts_manage set inventory_levels = #{inventoryLevels} where id = #{sparePartsId}") @Update("update spare_parts_manage set inventory_levels = #{inventoryLevels}, update_time = current_timestamp, update_by = #{updateBy} where id = #{sparePartsId}")
void updateInventoryLevels(@Param("sparePartsId") String sparePartsId, void updateInventoryLevels(@Param("sparePartsId") String sparePartsId,
@Param("inventoryLevels") int inventoryLevels); @Param("inventoryLevels") int inventoryLevels,
@Param("updateBy") String updateBy);
} }

5
mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java

@ -1,6 +1,7 @@
package com.mh.system.service.device; package com.mh.system.service.device;
import com.mh.common.core.domain.entity.MaintainInfo; import com.mh.common.core.domain.entity.MaintainInfo;
import com.mh.common.core.domain.entity.MaintainSum;
import java.util.List; import java.util.List;
@ -21,4 +22,8 @@ public interface IMaintainInfoService {
int updateMaintainInfo(MaintainInfo maintainInfo); int updateMaintainInfo(MaintainInfo maintainInfo);
int deleteMaintainInfoByIds(String[] maintainIds); int deleteMaintainInfoByIds(String[] maintainIds);
MaintainSum queryMaintainSum(String buildingId, String curDate);
void createMaintainTask(String curDate);
} }

22
mh-system/src/main/java/com/mh/system/service/device/impl/DeviceInOutManageServiceImpl.java

@ -11,6 +11,8 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
/** /**
@ -38,15 +40,25 @@ public class DeviceInOutManageServiceImpl implements IDeviceInOutManageService {
if (!StringUtils.isEmpty(deviceInOutManage.getSparePartsId())) { if (!StringUtils.isEmpty(deviceInOutManage.getSparePartsId())) {
queryWrapper.eq("spare_parts_id", deviceInOutManage.getSparePartsId()); queryWrapper.eq("spare_parts_id", deviceInOutManage.getSparePartsId());
} }
if (!StringUtils.isEmpty(deviceInOutManage.getSparePartsName())) { if (!StringUtils.isEmpty(deviceInOutManage.getSpareName())) {
queryWrapper.like("spare_parts_name", deviceInOutManage.getSparePartsName()); queryWrapper.like("spare_name", deviceInOutManage.getSpareName());
} }
if (deviceInOutManage.getOperaType() != null) { if (deviceInOutManage.getOperaType() != null) {
queryWrapper.eq("opera_type", deviceInOutManage.getOperaType()); queryWrapper.eq("opera_type", deviceInOutManage.getOperaType());
} }
// 出入库时间范围 // 出入库时间范围
// 添加时间范围
if (!deviceInOutManage.getParams().isEmpty()) { if (!deviceInOutManage.getParams().isEmpty()) {
queryWrapper.between("create_time", deviceInOutManage.getParams().get("beginTime"), deviceInOutManage.getParams().get("endTime")); String beginTimeStr = (String) deviceInOutManage.getParams().get("beginTime");
String endTimeStr = (String) deviceInOutManage.getParams().get("endTime");
if (StringUtils.isNotEmpty(beginTimeStr) && StringUtils.isNotEmpty(endTimeStr)) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate beginTime = LocalDate.parse(beginTimeStr, formatter);
LocalDate endTime = LocalDate.parse(endTimeStr, formatter);
queryWrapper.between("create_time", java.sql.Date.valueOf(beginTime), java.sql.Date.valueOf(endTime));
}
} }
queryWrapper.orderByDesc("create_time"); queryWrapper.orderByDesc("create_time");
return deviceInOutManageMapper.selectList(queryWrapper); return deviceInOutManageMapper.selectList(queryWrapper);
@ -71,10 +83,10 @@ public class DeviceInOutManageServiceImpl implements IDeviceInOutManageService {
int intOutNum = deviceInOutManage.getIntOutNum(); int intOutNum = deviceInOutManage.getIntOutNum();
if (deviceInOutManage.getOperaType() == 0) { if (deviceInOutManage.getOperaType() == 0) {
inventoryLevels = inventoryLevels + intOutNum; inventoryLevels = inventoryLevels + intOutNum;
sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), inventoryLevels); sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), inventoryLevels, deviceInOutManage.getCreateBy());
} else if (deviceInOutManage.getOperaType() == 1) { } else if (deviceInOutManage.getOperaType() == 1) {
inventoryLevels = inventoryLevels - intOutNum; inventoryLevels = inventoryLevels - intOutNum;
sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), -intOutNum); sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), -intOutNum, deviceInOutManage.getCreateBy());
} }
deviceInOutManage.setInventoryLevels(inventoryLevels); deviceInOutManage.setInventoryLevels(inventoryLevels);
return deviceInOutManageMapper.insert(deviceInOutManage); return deviceInOutManageMapper.insert(deviceInOutManage);

11
mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java

@ -2,6 +2,7 @@ package com.mh.system.service.device.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.entity.MaintainInfo; import com.mh.common.core.domain.entity.MaintainInfo;
import com.mh.common.core.domain.entity.MaintainSum;
import com.mh.common.utils.StringUtils; import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.device.MaintainInfoMapper; import com.mh.system.mapper.device.MaintainInfoMapper;
import com.mh.system.service.device.IMaintainInfoService; import com.mh.system.service.device.IMaintainInfoService;
@ -70,4 +71,14 @@ public class MaintainInfoServiceImpl implements IMaintainInfoService {
} }
return 0; return 0;
} }
@Override
public MaintainSum queryMaintainSum(String buildingId, String curDate) {
return maintainInfoMapper.queryMaintainSum(buildingId, curDate);
}
@Override
public void createMaintainTask(String curDate) {
maintainInfoMapper.proMaintainSum(curDate);
}
} }

2
sql/创建冷水机组参数表存储过程.sql

@ -1,4 +1,4 @@
CREATE OR REPLACE FUNCTION pro_create_chillers_table() CREATE OR REPLACE PROCEDURE pro_create_chillers_table()
RETURNS VOID AS $$ RETURNS VOID AS $$
DECLARE DECLARE
year VARCHAR(4); year VARCHAR(4);

144
sql/创建维保统计存储过程.sql

@ -0,0 +1,144 @@
CREATE OR REPLACE PROCEDURE pro_maintain_sum(p_cur_date varchar(50))
LANGUAGE plpgsql
AS $$
DECLARE
v_cur_date date := to_date(p_cur_date, 'YYYY-MM-DD');
v_last_date date := v_cur_date - interval '1 day';
v_last_week_start date := v_cur_date - interval '14 days';
v_last_week_end date := v_cur_date - interval '8 days';
v_last_month date := v_cur_date - interval '1 month';
v_last_year date := v_cur_date - interval '1 year';
day_num int;
week_num int;
month_num int;
year_num int;
last_day_num int;
last_week_num int;
last_month_num int;
last_year_num int;
day_p varchar(50);
week_p varchar(50);
month_p varchar(50);
year_p varchar(50);
all_day_num int;
all_week_num int;
all_month_num int;
all_year_num int;
all_last_day_num int;
all_last_week_num int;
all_last_month_num int;
all_last_year_num int;
v_building_id varchar(50); -- 楼栋编号(添加前缀避免冲突)
BEGIN
-- 处理各楼栋数据
FOR v_building_id IN SELECT DISTINCT id FROM building LOOP
-- 历史数据查询
SELECT COUNT(*) INTO last_day_num
FROM maintain_info
WHERE building_id = building_id
AND cur_date::date = v_last_date;
SELECT COUNT(*) INTO last_week_num
FROM maintain_info
WHERE building_id = building_id
AND cur_date::date BETWEEN v_last_week_start AND v_last_week_end;
SELECT COUNT(*) INTO last_month_num
FROM maintain_info
WHERE building_id = building_id
AND date_trunc('month', cur_date) = date_trunc('month', v_last_month);
SELECT COUNT(*) INTO last_year_num
FROM maintain_info
WHERE building_id = building_id
AND date_trunc('year', cur_date) = date_trunc('year', v_last_year);
-- 当前数据查询
SELECT COUNT(*) INTO day_num
FROM maintain_info
WHERE building_id = building_id
AND cur_date::date = v_cur_date;
SELECT COUNT(*) INTO week_num
FROM maintain_info
WHERE building_id = building_id
AND cur_date::date BETWEEN (v_cur_date - interval '6 days') AND v_cur_date;
SELECT COUNT(*) INTO month_num
FROM maintain_info
WHERE building_id = building_id
AND date_trunc('month', cur_date) = date_trunc('month', v_cur_date);
SELECT COUNT(*) INTO year_num
FROM maintain_info
WHERE building_id = building_id
AND date_trunc('year', cur_date) = date_trunc('year', v_cur_date);
-- 计算百分比
day_p := calc_percentage(day_num, last_day_num);
week_p := calc_percentage(week_num, last_week_num);
month_p := calc_percentage(month_num, last_month_num);
year_p := calc_percentage(year_num, last_year_num);
-- 插入或更新(使用UPSERT)
INSERT INTO maintain_sum AS ms
(cur_date, building_id, day_num, day_p, week_num, week_p, month_num, month_p, year_num, year_p)
VALUES (v_cur_date, building_id, day_num, day_p, week_num, week_p, month_num, month_p, year_num, year_p)
ON CONFLICT (cur_date, building_id) DO UPDATE SET
day_num = EXCLUDED.day_num,
day_p = EXCLUDED.day_p,
week_num = EXCLUDED.week_num,
week_p = EXCLUDED.week_p,
month_num = EXCLUDED.month_num,
month_p = EXCLUDED.month_p,
year_num = EXCLUDED.year_num,
year_p = EXCLUDED.year_p;
END LOOP;
-- 处理所有楼栋汇总数据
SELECT COUNT(*) INTO all_last_day_num FROM maintain_info WHERE cur_date::date = v_last_date;
SELECT COUNT(*) INTO all_last_week_num FROM maintain_info WHERE cur_date::date BETWEEN v_last_week_start AND v_last_week_end;
SELECT COUNT(*) INTO all_last_month_num FROM maintain_info WHERE date_trunc('month', cur_date) = date_trunc('month', v_last_month);
SELECT COUNT(*) INTO all_last_year_num FROM maintain_info WHERE date_trunc('year', cur_date) = date_trunc('year', v_last_year);
SELECT COUNT(*) INTO all_day_num FROM maintain_info WHERE cur_date::date = v_cur_date;
SELECT COUNT(*) INTO all_week_num FROM maintain_info WHERE cur_date::date BETWEEN (v_cur_date - interval '6 days') AND v_cur_date;
SELECT COUNT(*) INTO all_month_num FROM maintain_info WHERE date_trunc('month', cur_date) = date_trunc('month', v_cur_date);
SELECT COUNT(*) INTO all_year_num FROM maintain_info WHERE date_trunc('year', cur_date) = date_trunc('year', v_cur_date);
-- 计算百分比(可复用函数)
day_p := calc_percentage(all_day_num, all_last_day_num);
week_p := calc_percentage(all_week_num, all_last_week_num);
month_p := calc_percentage(all_month_num, all_last_month_num);
year_p := calc_percentage(all_year_num, all_last_year_num);
-- 使用UPSERT处理汇总数据
INSERT INTO maintain_sum AS ms
(cur_date, building_id, day_num, day_p, week_num, week_p, month_num, month_p, year_num, year_p)
VALUES (v_cur_date, '所有', all_day_num, day_p, all_week_num, week_p, all_month_num, month_p, all_year_num, year_p)
ON CONFLICT (cur_date, building_id) DO UPDATE SET
day_num = EXCLUDED.day_num,
day_p = EXCLUDED.day_p,
week_num = EXCLUDED.week_num,
week_p = EXCLUDED.week_p,
month_num = EXCLUDED.month_num,
month_p = EXCLUDED.month_p,
year_num = EXCLUDED.year_num,
year_p = EXCLUDED.year_p;
END;
$$;
-- 创建百分比计算函数
CREATE OR REPLACE FUNCTION calc_percentage(current_val int, last_val int)
RETURNS varchar(50) AS $$
BEGIN
RETURN CASE
WHEN last_val > 0 THEN
ROUND(((current_val - last_val)::numeric / last_val * 100)::numeric, 2) || '%'
ELSE '0%'
END;
END;
$$ LANGUAGE plpgsql;

2
sql/创建计量设备表存储过程.sql

@ -1,4 +1,4 @@
CREATE OR REPLACE FUNCTION pro_create_table() CREATE OR REPLACE PROCEDURE pro_create_table()
RETURNS VOID AS $$ RETURNS VOID AS $$
DECLARE DECLARE
year VARCHAR(4); year VARCHAR(4);

34
sql/维保信息统计表.sql

@ -0,0 +1,34 @@
-- 创建表
CREATE TABLE maintain_sum (
id varchar(36) not null PRIMARY KEY,
building_id varchar(50),
cur_date varchar(50),
day_num int,
day_p varchar(50),
week_num int,
week_p varchar(50),
month_num int,
month_p varchar(50),
year_num int,
year_p varchar(50)
);
-- 添加表注释(可选,原脚本未提供表注释)
COMMENT ON TABLE maintain_sum IS '维护汇总表';
-- 添加列注释
COMMENT ON COLUMN maintain_sum.id IS '序号';
COMMENT ON COLUMN maintain_sum.building_id IS '楼栋编号';
COMMENT ON COLUMN maintain_sum.cur_date IS '日期';
COMMENT ON COLUMN maintain_sum.day_num IS '当日维修量';
COMMENT ON COLUMN maintain_sum.day_p IS '当日维修与昨日比';
COMMENT ON COLUMN maintain_sum.week_num IS '最近七天维修量';
COMMENT ON COLUMN maintain_sum.week_p IS '与上周比';
COMMENT ON COLUMN maintain_sum.month_num IS '月维修量';
COMMENT ON COLUMN maintain_sum.month_p IS '与上月比';
COMMENT ON COLUMN maintain_sum.year_num IS '年维修量';
COMMENT ON COLUMN maintain_sum.year_p IS '与上年比';
-- 创建唯一约束
ALTER TABLE maintain_sum ADD CONSTRAINT uniq_maintain_sum
UNIQUE (cur_date, building_id);
Loading…
Cancel
Save