fix (farm): 大屏,微信端

- 大屏模拟数据维护
- 微信端切换租户
This commit is contained in:
达富斌
2025-11-21 01:29:42 +08:00
parent e430062aa5
commit cb9781f6f1
8 changed files with 119 additions and 9 deletions

View File

@@ -1,12 +1,9 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata; package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.*;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataSaveReqVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@@ -89,6 +86,14 @@ public class ScreenDisasterDataController {
return success(BeanUtils.toBean(pageResult, ScreenDisasterDataRespVO.class)); return success(BeanUtils.toBean(pageResult, ScreenDisasterDataRespVO.class));
} }
@GetMapping("/statistics")
@Operation(summary = "获得大屏数据-灾害数据统计")
public CommonResult<List<DisasterDataStatisticsInfoV2RespVO>> getScreenDisasterDataStatisticsInfo() {
List<DisasterDataStatisticsInfoV2RespVO> res = screenDisasterDataService.getScreenDisasterDataStatisticsInfo();
return success(res);
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出大屏数据-灾害数据 Excel") @Operation(summary = "导出大屏数据-灾害数据 Excel")
// @PreAuthorize("@ss.hasPermission('farm:screen-disaster-data:export')") // @PreAuthorize("@ss.hasPermission('farm:screen-disaster-data:export')")

View File

@@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description: TODO
* @author: binda
* @date: 2025/11/21 00:37
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DisasterDataStatisticsInfoRespVO {
private String category; // 灾害类型
private String disasterTime; // 发生月份
private Integer totalCount; // 总发生次数
private Integer year; // 年份
}

View File

@@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @description: TODO
* @author: binda
* @date: 2025/11/21 01:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DisasterDataStatisticsInfoV2RespVO {
private String category;
private List<DisasterDataStatisticsInfoRespVO> data;
}

View File

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.DisasterDataStatisticsInfoRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.screendisasterdata.ScreenDisasterDataDO; import cn.iocoder.yudao.module.farm.dal.dataobject.screendisasterdata.ScreenDisasterDataDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -34,4 +35,6 @@ public interface ScreenDisasterDataMapper extends BaseMapperX<ScreenDisasterData
} }
List<DisasterAnalysisRespVO> countDisasterAnalysis(DisasterAnalysisReqVO req); List<DisasterAnalysisRespVO> countDisasterAnalysis(DisasterAnalysisReqVO req);
List<DisasterDataStatisticsInfoRespVO> getScreenDisasterDataStatisticsInfo();
} }

View File

@@ -5,6 +5,7 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.DisasterDataStatisticsInfoV2RespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataSaveReqVO;
import jakarta.validation.*; import jakarta.validation.*;
@@ -71,4 +72,6 @@ public interface ScreenDisasterDataService {
*/ */
CommonResult<List<DisasterAnalysisRespVO>> getDisasterStatisticsChart(DisasterAnalysisReqVO req); CommonResult<List<DisasterAnalysisRespVO>> getDisasterStatisticsChart(DisasterAnalysisReqVO req);
List<DisasterDataStatisticsInfoV2RespVO> getScreenDisasterDataStatisticsInfo();
} }

View File

@@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.DisasterAnalysisRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.DisasterDataStatisticsInfoRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.DisasterDataStatisticsInfoV2RespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.ScreenDisasterDataSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO;
@@ -105,4 +107,23 @@ public class ScreenDisasterDataServiceImpl implements ScreenDisasterDataService
return CommonResult.success(res); return CommonResult.success(res);
} }
@Override
public List<DisasterDataStatisticsInfoV2RespVO> getScreenDisasterDataStatisticsInfo() {
List<DisasterDataStatisticsInfoRespVO> sourceList = screenDisasterDataMapper.getScreenDisasterDataStatisticsInfo();
List<DisasterDataStatisticsInfoV2RespVO> result = sourceList.stream()
.collect(Collectors.groupingBy(
DisasterDataStatisticsInfoRespVO::getCategory,
Collectors.toList()
))
.entrySet()
.stream()
.map(entry -> new DisasterDataStatisticsInfoV2RespVO(
entry.getKey(),
entry.getValue()
))
.collect(Collectors.toList());
return result;
}
} }

View File

@@ -68,4 +68,43 @@
</select> </select>
<select id="getScreenDisasterDataStatisticsInfo"
resultType="cn.iocoder.yudao.module.farm.controller.admin.managementcenter.largescreen.screendisasterdata.vo.DisasterDataStatisticsInfoRespVO">
SELECT
CASE ct.category_type
WHEN '0' THEN '气象'
WHEN '1' THEN '虫害'
WHEN '2' THEN '病害'
WHEN '3' THEN '草害'
END as category,
ms.month_str as disasterTime,
YEAR(STR_TO_DATE(CONCAT(ms.month_str, '-01'), '%Y-%m-%d')) as year,
COALESCE(SUM(fsdd.disaster_count), 0) as totalCount
FROM (
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') as month_str
FROM (
SELECT 0 as n UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11
UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION SELECT 16 UNION SELECT 17
UNION SELECT 18 UNION SELECT 19 UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23
) months
) ms
CROSS JOIN (
SELECT '0' as category_type
UNION ALL
SELECT '1' as category_type
UNION ALL
SELECT '2' as category_type
UNION ALL
SELECT '3' as category_type
) ct
LEFT JOIN farm_screen_disaster_data fsdd ON
ct.category_type = fsdd.category
AND ms.month_str = fsdd.disaster_time
AND fsdd.deleted = 0
AND fsdd.use_status = 1
GROUP BY ct.category_type, ms.month_str
ORDER BY ms.month_str, ct.category_type
</select>
</mapper> </mapper>

View File

@@ -23,7 +23,6 @@ import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService; import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.social.SocialClientService; import cn.iocoder.yudao.module.system.service.social.SocialClientService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.system.util.TokenExtractorUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.Parameters;
@@ -43,7 +42,6 @@ import java.util.Set;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "管理后台 - 认证") @Tag(name = "管理后台 - 认证")
@@ -171,11 +169,10 @@ public class AuthController {
@Operation(summary = "登录 (切换租户之后调用)") @Operation(summary = "登录 (切换租户之后调用)")
public CommonResult<AuthLoginRespVO> getPhoneNumber4Login(@RequestBody @Valid TenantTokenReqVO reqVO) { public CommonResult<AuthLoginRespVO> getPhoneNumber4Login(@RequestBody @Valid TenantTokenReqVO reqVO) {
// 强行清楚 本地线程 中的租户ID , 请设置为当前将要登录的租户ID // 强行清楚 本地线程 中的租户ID , 请设置为当前将要登录的租户ID
TenantContextHolder.clear(); // TenantContextHolder.clear();
TenantContextHolder.setTenantId(Long.valueOf(reqVO.getTenantId())); // TenantContextHolder.setTenantId(Long.valueOf(reqVO.getTenantId()));
AuthLoginRespVO login = authService.getPhoneNumber4Login(reqVO); AuthLoginRespVO login = authService.getPhoneNumber4Login(reqVO);
if (login != null) { if (login != null) {
// log.info("tenantId ===> {}", getLoginUser().getTenantId());
return success(login); return success(login);
} else { } else {
return error(405, "该手机号不是平台用户"); return error(405, "该手机号不是平台用户");