From 5e3da57c8fb6a388ea8634623ce4a2ab6b63cd8b Mon Sep 17 00:00:00 2001 From: mh Date: Wed, 26 Feb 2025 18:13:50 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B5=8B=E8=AF=95=E5=A4=87=E4=BB=B6?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=81=E7=BD=91=E5=85=B3=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=81=E8=AE=BE=E5=A4=87=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=E9=87=87=E9=9B=86=E5=8F=82=E6=95=B0=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E7=BB=B4=E4=BF=9D=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3=EF=BC=9B?= =?UTF-8?q?=202=E3=80=81=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=BB=9F=E8=AE=A1=E7=BB=B4=E4=BF=9D=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/CommunicationParamsController.java | 3 + .../device/DeviceInOutManageController.java | 2 + .../device/GatewayManageController.java | 3 + .../device/MaintainInfoController.java | 38 ++++- .../core/domain/entity/DeviceInOutManage.java | 12 +- .../core/domain/entity/MaintainInfo.java | 27 +++- .../core/domain/entity/MaintainSum.java | 142 +++++++++++++++++ .../mh/quartz/task/CreateMaintainTask.java | 34 +++++ .../mapper/device/MaintainInfoMapper.java | 24 ++- .../mapper/device/SparePartsManageMapper.java | 5 +- .../service/device/IMaintainInfoService.java | 5 + .../impl/DeviceInOutManageServiceImpl.java | 22 ++- .../device/impl/MaintainInfoServiceImpl.java | 11 ++ ...建冷水机组参数表存储过程.sql | 2 +- sql/创建维保统计存储过程.sql | 144 ++++++++++++++++++ sql/创建计量设备表存储过程.sql | 2 +- sql/维保信息统计表.sql | 34 +++++ 17 files changed, 482 insertions(+), 28 deletions(-) create mode 100644 mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainSum.java create mode 100644 mh-quartz/src/main/java/com/mh/quartz/task/CreateMaintainTask.java create mode 100644 sql/创建维保统计存储过程.sql create mode 100644 sql/维保信息统计表.sql diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java b/mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java index eb848f5..ad214c8 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java +++ b/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.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -59,6 +60,7 @@ public class CommunicationParamsController extends BaseController { public AjaxResult add(@Validated @RequestBody CommunicationParams communicationParams) { communicationParams.setCreateBy(getUsername()); + communicationParams.setCreateTime(new Date()); return toAjax(iCommunicationParamsService.insertCommunicationParams(communicationParams)); } @@ -71,6 +73,7 @@ public class CommunicationParamsController extends BaseController { public AjaxResult edit(@Validated @RequestBody CommunicationParams communicationParams) { communicationParams.setUpdateBy(getUsername()); + communicationParams.setUpdateTime(new Date()); return toAjax(iCommunicationParamsService.updateCommunicationParams(communicationParams)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceInOutManageController.java b/mh-admin/src/main/java/com/mh/web/controller/device/DeviceInOutManageController.java index b99ba08..c91ae11 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceInOutManageController.java +++ b/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.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -58,6 +59,7 @@ public class DeviceInOutManageController extends BaseController { public AjaxResult add(@Validated @RequestBody DeviceInOutManage deviceInOutManage) { deviceInOutManage.setCreateBy(getUsername()); + deviceInOutManage.setCreateTime(new Date()); return toAjax(deviceInOutManageService.insertDeviceInOutManage(deviceInOutManage)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java b/mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java index 12741ce..9ec4b1b 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java +++ b/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.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -61,6 +62,7 @@ public class GatewayManageController extends BaseController { public AjaxResult add(@Validated @RequestBody GatewayManage gatewayManage) { gatewayManage.setCreateBy(getUsername()); + gatewayManage.setCreateTime(new Date()); return toAjax(gatewayManageService.insertGatewayManage(gatewayManage)); } @@ -73,6 +75,7 @@ public class GatewayManageController extends BaseController { public AjaxResult edit(@Validated @RequestBody GatewayManage gatewayManage) { gatewayManage.setUpdateBy(getUsername()); + gatewayManage.setUpdateTime(new Date()); return toAjax(gatewayManageService.updateGateway(gatewayManage)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java b/mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java index 90aa538..c213a4f 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java +++ b/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.domain.AjaxResult; 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.enums.BusinessType; 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.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -56,10 +58,10 @@ public class MaintainInfoController extends BaseController { @PreAuthorize("@ss.hasPermi('system:maintain:add')") @Log(title = "维护设备管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody MaintainInfo gatewayManage) + public AjaxResult add(@Validated @RequestBody MaintainInfo maintainInfo) { - gatewayManage.setCreateBy(getUsername()); - return toAjax(maintainInfoService.insertMaintainInfo(gatewayManage)); + maintainInfo.setCreateBy(getUsername()); + return toAjax(maintainInfoService.insertMaintainInfo(maintainInfo)); } /** @@ -68,10 +70,11 @@ public class MaintainInfoController extends BaseController { @PreAuthorize("@ss.hasPermi('system:maintain:edit')") @Log(title = "维护设备管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody MaintainInfo gatewayManage) + public AjaxResult edit(@Validated @RequestBody MaintainInfo maintainInfo) { - gatewayManage.setUpdateBy(getUsername()); - return toAjax(maintainInfoService.updateMaintainInfo(gatewayManage)); + maintainInfo.setUpdateBy(getUsername()); + maintainInfo.setUpdateTime(new Date()); + return toAjax(maintainInfoService.updateMaintainInfo(maintainInfo)); } /** @@ -84,4 +87,27 @@ public class MaintainInfoController extends BaseController { { 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(); + } + } + } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceInOutManage.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceInOutManage.java index 1e39c62..5ba4a4d 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceInOutManage.java +++ b/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表示出库 @@ -106,12 +106,12 @@ public class DeviceInOutManage extends BaseEntity { this.sparePartsId = sparePartsId; } - public String getSparePartsName() { - return sparePartsName; + public String getSpareName() { + return spareName; } - public void setSparePartsName(String sparePartsName) { - this.sparePartsName = sparePartsName; + public void setSpareName(String spareName) { + this.spareName = spareName; } public Integer getOperaType() { @@ -143,7 +143,7 @@ public class DeviceInOutManage extends BaseEntity { return new ToStringBuilder(this) .append("id", id) .append("sparePartsId", sparePartsId) - .append("sparePartsName", sparePartsName) + .append("spareName", spareName) .append("operaType", operaType) .append("intOutNum", intOutNum) .append("inventoryLevels", inventoryLevels) diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java index 2ba418a..211f1d0 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java +++ b/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.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.mh.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -25,8 +26,10 @@ public class MaintainInfo extends BaseEntity { private BigDecimal cost; // 费用 private String contents; // 维保内容 private String evaluate; // 评价分数 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date execTime; // 执行时间 - private Integer spendTime; // 花费时间 + private Integer spendTimes; // 花费时间 + private String buildingId; // 楼栋id @TableField(exist = false) private String searchValue; @@ -142,12 +145,20 @@ public class MaintainInfo extends BaseEntity { this.execTime = execTime; } - public Integer getSpendTime() { - return spendTime; + public Integer getSpendTimes() { + return spendTimes; } - public void setSpendTime(Integer spendTime) { - this.spendTime = spendTime; + public void setSpendTimes(Integer spendTimes) { + this.spendTimes = spendTimes; + } + + public String getBuildingId() { + return buildingId; + } + + public void setBuildingId(String buildingId) { + this.buildingId = buildingId; } @Override @@ -162,7 +173,11 @@ public class MaintainInfo extends BaseEntity { .append("contents", contents) .append("evaluate", evaluate) .append("execTime", execTime) - .append("spendTime", spendTime) + .append("spendTimes", spendTimes) + .append("buildingId", buildingId) + .append("searchValue", searchValue) + .append("remark", remark) + .append("params", params) .toString(); } } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainSum.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainSum.java new file mode 100644 index 0000000..0af4cb4 --- /dev/null +++ b/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(); + } +} diff --git a/mh-quartz/src/main/java/com/mh/quartz/task/CreateMaintainTask.java b/mh-quartz/src/main/java/com/mh/quartz/task/CreateMaintainTask.java new file mode 100644 index 0000000..63a98f1 --- /dev/null +++ b/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); + } +} diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java index 1cc8543..f6b14a5 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java +++ b/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.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 @@ -13,4 +15,24 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MaintainInfoMapper extends BaseMapper { + + @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); } diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java index a3d51db..c538ef7 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/SparePartsManageMapper.java @@ -16,8 +16,9 @@ import org.apache.ibatis.annotations.Update; @Mapper public interface SparePartsManageMapper extends BaseMapper { - @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, - @Param("inventoryLevels") int inventoryLevels); + @Param("inventoryLevels") int inventoryLevels, + @Param("updateBy") String updateBy); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java b/mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java index 5155911..6709834 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java +++ b/mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java @@ -1,6 +1,7 @@ package com.mh.system.service.device; import com.mh.common.core.domain.entity.MaintainInfo; +import com.mh.common.core.domain.entity.MaintainSum; import java.util.List; @@ -21,4 +22,8 @@ public interface IMaintainInfoService { int updateMaintainInfo(MaintainInfo maintainInfo); int deleteMaintainInfoByIds(String[] maintainIds); + + MaintainSum queryMaintainSum(String buildingId, String curDate); + + void createMaintainTask(String curDate); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceInOutManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceInOutManageServiceImpl.java index dcb72a9..0dbaa5f 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceInOutManageServiceImpl.java +++ b/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.transaction.annotation.Transactional; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -38,15 +40,25 @@ public class DeviceInOutManageServiceImpl implements IDeviceInOutManageService { if (!StringUtils.isEmpty(deviceInOutManage.getSparePartsId())) { queryWrapper.eq("spare_parts_id", deviceInOutManage.getSparePartsId()); } - if (!StringUtils.isEmpty(deviceInOutManage.getSparePartsName())) { - queryWrapper.like("spare_parts_name", deviceInOutManage.getSparePartsName()); + if (!StringUtils.isEmpty(deviceInOutManage.getSpareName())) { + queryWrapper.like("spare_name", deviceInOutManage.getSpareName()); } if (deviceInOutManage.getOperaType() != null) { queryWrapper.eq("opera_type", deviceInOutManage.getOperaType()); } // 出入库时间范围 + // 添加时间范围 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"); return deviceInOutManageMapper.selectList(queryWrapper); @@ -71,10 +83,10 @@ public class DeviceInOutManageServiceImpl implements IDeviceInOutManageService { int intOutNum = deviceInOutManage.getIntOutNum(); if (deviceInOutManage.getOperaType() == 0) { inventoryLevels = inventoryLevels + intOutNum; - sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), inventoryLevels); + sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), inventoryLevels, deviceInOutManage.getCreateBy()); } else if (deviceInOutManage.getOperaType() == 1) { inventoryLevels = inventoryLevels - intOutNum; - sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), -intOutNum); + sparePartsManageMapper.updateInventoryLevels(deviceInOutManage.getSparePartsId(), -intOutNum, deviceInOutManage.getCreateBy()); } deviceInOutManage.setInventoryLevels(inventoryLevels); return deviceInOutManageMapper.insert(deviceInOutManage); diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java index 88b2864..5241b57 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java +++ b/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.mh.common.core.domain.entity.MaintainInfo; +import com.mh.common.core.domain.entity.MaintainSum; import com.mh.common.utils.StringUtils; import com.mh.system.mapper.device.MaintainInfoMapper; import com.mh.system.service.device.IMaintainInfoService; @@ -70,4 +71,14 @@ public class MaintainInfoServiceImpl implements IMaintainInfoService { } return 0; } + + @Override + public MaintainSum queryMaintainSum(String buildingId, String curDate) { + return maintainInfoMapper.queryMaintainSum(buildingId, curDate); + } + + @Override + public void createMaintainTask(String curDate) { + maintainInfoMapper.proMaintainSum(curDate); + } } diff --git a/sql/创建冷水机组参数表存储过程.sql b/sql/创建冷水机组参数表存储过程.sql index 01ff98d..05c362d 100644 --- a/sql/创建冷水机组参数表存储过程.sql +++ b/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 $$ DECLARE year VARCHAR(4); diff --git a/sql/创建维保统计存储过程.sql b/sql/创建维保统计存储过程.sql new file mode 100644 index 0000000..d5e3378 --- /dev/null +++ b/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; diff --git a/sql/创建计量设备表存储过程.sql b/sql/创建计量设备表存储过程.sql index 53c4c9b..0fd290c 100644 --- a/sql/创建计量设备表存储过程.sql +++ b/sql/创建计量设备表存储过程.sql @@ -1,4 +1,4 @@ -CREATE OR REPLACE FUNCTION pro_create_table() +CREATE OR REPLACE PROCEDURE pro_create_table() RETURNS VOID AS $$ DECLARE year VARCHAR(4); diff --git a/sql/维保信息统计表.sql b/sql/维保信息统计表.sql new file mode 100644 index 0000000..8b8b8a5 --- /dev/null +++ b/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);