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); 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)); 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)); } } 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 ); } 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; } 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; } 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; 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; /** @@ -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); } 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 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))); }); } return PageData.from(sitesMonitorDTO); } @Override public void siteReservesNotice(String siteId) throws Exception{ //ç«ç¹ä¿¡æ¯æ¥è¯¢ Sites sites = sitesMapper.selectById(siteId); if(Objects.isNull(sites)){ return; } //æ¥è¯¢ç«ç¹ä¸é头æ°é 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(); //é头æ£å¸¸å车æ°é 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; } } } @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); } } 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>