From 826a321e7122c4669b41f6a2add90c09749ec672 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期三, 11 十月 2023 11:11:50 +0800
Subject: [PATCH] #pgsql 运营监控
---
server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java | 66 +++++++---------
server/services/src/main/java/com/doumee/dao/business/SitesMapper.java | 23 +++--
server/platform/src/main/java/com/doumee/api/business/RefundController.java | 2
server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorBikeDTO.java | 31 +++++++
server/platform/src/main/java/com/doumee/api/business/SitesController.java | 17 ++++
server/services/src/main/java/com/doumee/service/business/SitesService.java | 23 +++++
server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java | 2
server/platform/src/main/java/com/doumee/api/business/MemberController.java | 2
server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorDTO.java | 7 +
server/services/src/main/resources/mappers/SitesMapper.xml | 62 +++++++++++++++
10 files changed, 182 insertions(+), 53 deletions(-)
diff --git a/server/platform/src/main/java/com/doumee/api/business/MemberController.java b/server/platform/src/main/java/com/doumee/api/business/MemberController.java
index f09c46e..c043492 100644
--- a/server/platform/src/main/java/com/doumee/api/business/MemberController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/MemberController.java
@@ -76,7 +76,7 @@
}
@ApiOperation("鏍规嵁ID淇敼鍗′俊鎭�")
- @PostMapping("/updateById")
+ @PostMapping("/update")
@RequiresPermissions("business:member:update")
public ApiResponse update(@RequestBody Member member){
memberService.update(member);
diff --git a/server/platform/src/main/java/com/doumee/api/business/RefundController.java b/server/platform/src/main/java/com/doumee/api/business/RefundController.java
index 66de621..7a27301 100644
--- a/server/platform/src/main/java/com/doumee/api/business/RefundController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/RefundController.java
@@ -77,7 +77,7 @@
return ApiResponse.success(refundService.findPage(pageWrap));
}
@ApiOperation("鍚庡彴缁撶畻璁板綍")
- @PostMapping("/page")
+ @PostMapping("/findPlatPage")
@RequiresPermissions("business:refund:query")
public ApiResponse<PageData<Refund>> findPlatPage (@RequestBody PageWrap<Refund> pageWrap) {
return ApiResponse.success(refundService.findPlatPage(pageWrap));
diff --git a/server/platform/src/main/java/com/doumee/api/business/SitesController.java b/server/platform/src/main/java/com/doumee/api/business/SitesController.java
index 54f7469..2b586aa 100644
--- a/server/platform/src/main/java/com/doumee/api/business/SitesController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/SitesController.java
@@ -7,6 +7,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Sites;
+import com.doumee.dao.business.web.request.SitesMonitorBikeDTO;
+import com.doumee.dao.business.web.request.SitesMonitorDTO;
import com.doumee.service.business.SitesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -87,4 +89,19 @@
public ApiResponse findById(@PathVariable String id) {
return ApiResponse.success(sitesService.findById(id));
}
+
+
+ @ApiOperation("绔欑偣鍌ㄨ溅鐩戞帶")
+ @PostMapping("/findSitesMonitorDTOPage")
+ @RequiresPermissions("business:sites:query")
+ public ApiResponse<PageData<SitesMonitorDTO>> findSitesMonitorDTOPage(@RequestBody PageWrap<SitesMonitorDTO> pageWrap){
+ return ApiResponse.success(sitesService.findSitesMonitorDTOPage(pageWrap));
+ }
+
+ @ApiOperation("瀹炴椂杞︿綅淇℃伅")
+ @PostMapping("/findSitesMonitorDTOPage")
+ @RequiresPermissions("business:sites:query")
+ public ApiResponse<PageData<SitesMonitorBikeDTO>> getSitesMonitorBikeDTO(@RequestBody PageWrap<SitesMonitorDTO> pageWrap){
+ return ApiResponse.success(sitesService.getSitesMonitorBikeDTO(pageWrap));
+ }
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/SitesMapper.java b/server/services/src/main/java/com/doumee/dao/business/SitesMapper.java
index 0fbb35b..0b5adf9 100644
--- a/server/services/src/main/java/com/doumee/dao/business/SitesMapper.java
+++ b/server/services/src/main/java/com/doumee/dao/business/SitesMapper.java
@@ -1,8 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.dao.business.model.Sites;
+import com.doumee.dao.business.web.request.SitesMonitorBikeDTO;
import com.doumee.dao.business.web.request.SitesMonitorDTO;
+import com.doumee.dao.system.dto.QuerySystemUserDTO;
+import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
@@ -15,16 +20,12 @@
/**
* @return
*/
- @Select("SELECT \n" +
- "sites.id,\n" +
- "sites.name as name,\n" +
- "sites.code as code,\n" +
- "count(l.id) as lid,\n" +
- "count(l.bike_code ) as lbikeCount\n" +
- "from \n" +
- "sites sites\n" +
- "LEFT JOIN locks l on sites.id = l.site_id\n" +
- "GROUP BY sites.id ")
- SitesMonitorDTO getSitesMonitorDTO();
+ Page<SitesMonitorDTO> getSitesMonitorDTO(IPage page, @Param("code") String code, @Param("name") String name);
+
+ Page<SitesMonitorBikeDTO> getSitesMonitorBikeDTO(IPage page,
+ @Param("code") String code,
+ @Param("name") String name,
+ @Param("lockCode") String lockCode,
+ @Param("hasBike") Boolean hasBike );
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorBikeDTO.java b/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorBikeDTO.java
new file mode 100644
index 0000000..ba82115
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorBikeDTO.java
@@ -0,0 +1,31 @@
+package com.doumee.dao.business.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author T14
+ */
+@Data
+@ApiModel("绔欑偣杞﹁締鐩戞帶")
+public class SitesMonitorBikeDTO {
+
+ @ApiModelProperty(value = "鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "缂栧彿")
+ private String code;
+
+ @ApiModelProperty(value = "閿佹鍣ㄦ暟")
+ private Integer localCode;
+
+ @ApiModelProperty(value = "鍦ㄦ灦杞﹁締鏁�")
+ private Integer bikeCode;
+
+ @ApiModelProperty(value = "杞﹁締绫诲瀷")
+ private String bikeType;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorDTO.java b/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorDTO.java
index e0b4ff6..cdbce62 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/SitesMonitorDTO.java
@@ -32,6 +32,13 @@
private BigDecimal rate;
+ @ApiModelProperty(value = "閿佸ご鏄惁鏈夎溅")
+ private Boolean hasBike ;
+
+ @ApiModelProperty(value = "婊℃灦鐜�")
+ private String lockCode;
+
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java
index 9452341..0829e99 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java
@@ -42,7 +42,7 @@
@ExcelColumn(name="璁¤垂鏃堕暱锛堝垎)",index = 7,width = 10,align = HorizontalAlignment.CENTER)
private Integer duration;
- @ApiModelProperty(value = "绉熻溅鏃堕棿"))
+ @ApiModelProperty(value = "绉熻溅鏃堕棿")
@ExcelColumn(name="绉熻溅鏃堕棿",index = 8,width = 10,align = HorizontalAlignment.CENTER)
private Date rentDate;
diff --git a/server/services/src/main/java/com/doumee/service/business/SitesService.java b/server/services/src/main/java/com/doumee/service/business/SitesService.java
index 52c1306..987001a 100644
--- a/server/services/src/main/java/com/doumee/service/business/SitesService.java
+++ b/server/services/src/main/java/com/doumee/service/business/SitesService.java
@@ -1,8 +1,14 @@
package com.doumee.service.business;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Sites;
+import com.doumee.dao.business.web.request.SitesMonitorBikeDTO;
+import com.doumee.dao.business.web.request.SitesMonitorDTO;
+import org.apache.ibatis.annotations.Param;
+
import java.util.List;
/**
@@ -14,7 +20,7 @@
/**
* 鍒涘缓
- *
+ *
* @param sites 瀹炰綋瀵硅薄
* @return String
*/
@@ -78,7 +84,7 @@
* @return List<Sites>
*/
List<Sites> findList(Sites sites);
-
+
/**
* 鍒嗛〉鏌ヨ
*
@@ -101,4 +107,17 @@
* @throws Exception
*/
void siteReservesNotice(String siteId) throws Exception;
+
+
+ /**
+ * 鍒嗛〉鏌ヨ绔欑偣鍌ㄨ溅鐩戞帶
+ *
+ * @param pageWrap 鍒嗛〉瀵硅薄
+ * @return PageData<Sites>
+ */
+ PageData<SitesMonitorDTO> findSitesMonitorDTOPage(PageWrap<SitesMonitorDTO> pageWrap);
+
+
+ PageData<SitesMonitorBikeDTO> getSitesMonitorBikeDTO(PageWrap<SitesMonitorDTO> pageWrap);
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
index 7e7b37e..ded5f6d 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
@@ -14,6 +14,8 @@
import com.doumee.dao.business.SitesMapper;
import com.doumee.dao.business.model.Locks;
import com.doumee.dao.business.model.Sites;
+import com.doumee.dao.business.web.request.SitesMonitorBikeDTO;
+import com.doumee.dao.business.web.request.SitesMonitorDTO;
import com.doumee.service.business.SitesService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -197,46 +199,36 @@
return sitesMapper.selectCount(wrapper);
}
- @Async
@Override
- public void siteReservesNotice(String siteId) throws Exception{
- //绔欑偣淇℃伅鏌ヨ
- Sites sites = sitesMapper.selectById(siteId);
- if(Objects.isNull(sites)){
- return;
+ public PageData<SitesMonitorDTO> findSitesMonitorDTOPage(PageWrap<SitesMonitorDTO> pageWrap) {
+
+ IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ Page<SitesMonitorDTO> sitesMonitorDTO = sitesMapper.getSitesMonitorDTO(page, pageWrap.getModel().getCode(), pageWrap.getModel().getName());
+
+ if (!CollectionUtils.isEmpty(sitesMonitorDTO.getRecords())){
+ sitesMonitorDTO.getRecords().forEach(s->{
+ s.setRate(new BigDecimal(s.getBikeCount()).divide(new BigDecimal(s.getLocalCount()).setScale(2)));
+ });
}
- //鏌ヨ绔欑偣涓嬮攣澶存暟閲�
- List<Locks> locksList = locksMapper.selectList(new QueryWrapper<Locks>().eq("status", Constants.ZERO).eq("site_id",siteId));
- if(Objects.isNull(locksList)||locksList.size()==Constants.ZERO){
- return;
- }
- //鑾峰彇绌洪攣澶存暟閲�
- Integer empLocks = locksList.stream().filter(l -> StringUtils.isEmpty(l.getBikeCode())).collect(Collectors.toList()).size();
- //閿佸ご姝e父瀛樿溅鏁伴噺
- Integer unEmpLocks = locksList.size() - empLocks;
- BigDecimal warnMax = new BigDecimal(String.valueOf(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.WARN_MAX)));
- BigDecimal warnMin = new BigDecimal(String.valueOf(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.WARN_MIN)));
- //瓒呭嚭棰勮鏈�澶у��
- if(empLocks>Constants.ZERO){
- if(BigDecimal.valueOf(empLocks).divide(BigDecimal.valueOf(locksList.size())).multiply(BigDecimal.valueOf(100)).compareTo(warnMax)>Constants.ZERO){
- DingDingNotice.reservesNotice(sites.getName(),
- systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_URL).getCode(),
- systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode(),
- Constants.ZERO,warnMax);
- return;
- };
- }
- //浣庝簬棰勮鏈�灏忓��
- if(unEmpLocks>Constants.ZERO){
- if(BigDecimal.valueOf(unEmpLocks).divide(BigDecimal.valueOf(locksList.size())).multiply(BigDecimal.valueOf(100)).compareTo(warnMin)<Constants.ZERO){
- DingDingNotice.reservesNotice(sites.getName(),
- systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_URL).getCode(),
- systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode(),
- Constants.ONE,warnMin);
- return;
- }
- }
+
+ return PageData.from(sitesMonitorDTO);
}
+ @Override
+ public void siteReservesNotice(String siteId) throws Exception {
+ }
+
+ @Override
+ public PageData<SitesMonitorBikeDTO> getSitesMonitorBikeDTO(PageWrap<SitesMonitorDTO> pageWrap) {
+ IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ Page<SitesMonitorBikeDTO> sitesMonitorDTO = sitesMapper.getSitesMonitorBikeDTO(page,
+ pageWrap.getModel().getCode(),
+ pageWrap.getModel().getName(),
+ pageWrap.getModel().getLockCode(),
+ pageWrap.getModel().getHasBike());
+
+
+ return PageData.from(sitesMonitorDTO);
+ }
}
diff --git a/server/services/src/main/resources/mappers/SitesMapper.xml b/server/services/src/main/resources/mappers/SitesMapper.xml
new file mode 100644
index 0000000..985c2f0
--- /dev/null
+++ b/server/services/src/main/resources/mappers/SitesMapper.xml
@@ -0,0 +1,62 @@
+<?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.doumee.dao.business.SitesMapper">
+
+ <select id="getSitesMonitorDTO" resultType="com.doumee.dao.business.web.request.SitesMonitorDTO">
+
+ SELECT
+ sites.id,
+ sites.name as name,
+ sites.code as code,
+ count(l.id) as lid,
+ count(l.bike_code ) as lbikeCount
+ from
+ sites sites
+ LEFT JOIN locks l on sites.id = l.site_id
+ <where>
+ sites.isdeleted = 0
+ <if test="code != null and code != ''">
+ and sites.code like LIKE '%'||#{code}||'%'
+ </if>
+ <if test="name != null and name != ''">
+ and sites.name like LIKE '%'||#{name}||'%'
+ </if>
+ </where>
+
+ GROUP BY sites.id
+
+ </select>
+
+ <select id="getSitesMonitorBikeDTO" resultType="com.doumee.dao.business.web.request.SitesMonitorBikeDTO">
+ SELECT
+ sites.id,
+ sites.name as name,
+ sites.code as code,
+ l.name as locksName,
+ l.bike_code as bike_code,
+ bp.name as bikeType
+ from
+ sites sites
+ LEFT JOIN locks l on sites.id = l.site_id
+ LEFT JOIN base_param bp on bp.id = l.param_id
+ <where>
+ sites.isdeleted = 0
+ <if test="code != null and code != ''">
+ and sites.code like LIKE '%'||#{code}||'%'
+ </if>
+ <if test="name != null and name != ''">
+ and sites.name like LIKE '%'||#{name}||'%'
+ </if>
+ <if test="lockCode != null and lockCode != ''">
+ and l.code like LIKE '%'||#{lockCode}||'%'
+ </if>
+ <if test="hasBike != null and hasBike != false">
+ l.bike_code isnull
+ </if>
+ <if test="hasBike != null and hasBike != true">
+ l.bike_code notnull
+ </if>
+ </where>
+ </select>
+
+</mapper>
--
Gitblit v1.9.3