From 835b51f034ee413c1dfa6d5738913ec4325522dd Mon Sep 17 00:00:00 2001 From: fangjiakai <450850793@qq.com> Date: Fri, 14 Nov 2025 08:35:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(accident):=20=E6=96=B0=E5=A2=9E=E4=BA=8B?= =?UTF-8?q?=E6=95=85=E7=BB=9F=E8=AE=A1=E5=8F=8A=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AccidentController 中增加根据企业 ID 和事故类型的统计接口- 修改事故导出接口为 GET 请求,并调整参数传递方式 -优化事故分页查询逻辑,自动填充当前租户 ID - 调整 Excel 导出字段的时间格式注解位置以兼容解析 - 更新 AccidentGateway 和实现类,支持按类型筛选统计- 移除无用的测试接口和 RocketMQ 依赖配置- 设置服务端口为 8085 并启用消息绑定相关注解 - 调整查询 DTO 类型,使用 LocalDate 替代 LocalDateTime - 补充缺失的认证上下文工具类导入并移除冗余工具类引用 - 更新 Mapper XML 文件,增加对事故类型的条件判断 - 升级 pom.xml 中 jjb-saas-system-client 版本至 1.7.0-SNAPSHOT --- pom.xml | 9 +++++++++ .../java/com/zcloud/accident/Application.java | 4 ++++ start/src/main/resources/bootstrap.yml | 2 ++ start/src/main/resources/nacos.yml | 2 +- web-adapter/pom.xml | 4 ---- .../zcloud/accident/web/AccidentController.java | 16 ++++++---------- .../accident/command/query/AccidentQueryExe.java | 2 +- .../zcloud/accident/dto/AccidentCountQry.java | 8 +++++--- .../com/zcloud/accident/dto/AccidentPageQry.java | 14 ++++++++++---- .../dto/clientobject/AccidentExportCO.java | 5 +++-- .../accident/domain/gateway/AccidentGateway.java | 8 +++++--- .../gatewayimpl/AccidentGatewayImpl.java | 13 +++++++------ .../persistence/mapper/AccidentMapper.java | 6 ++++-- .../repository/AccidentRepository.java | 6 ++++-- .../repository/impl/AccidentRepositoryImpl.java | 8 ++++---- .../src/main/resources/mapper/AccidentMapper.xml | 3 +++ 16 files changed, 68 insertions(+), 42 deletions(-) diff --git a/pom.xml b/pom.xml index 5655ede..9b016a0 100644 --- a/pom.xml +++ b/pom.xml @@ -20,9 +20,18 @@ zcloud_gbscommon 1.0.0-SNAPSHOT + + com.alibaba.cloud + spring-cloud-starter-stream-rocketmq + + + com.jjb.saas + jjb-saas-system-client + 1.7.0-SNAPSHOT + com.zcloud.accident diff --git a/start/src/main/java/com/zcloud/accident/Application.java b/start/src/main/java/com/zcloud/accident/Application.java index 8f363c4..19eea32 100644 --- a/start/src/main/java/com/zcloud/accident/Application.java +++ b/start/src/main/java/com/zcloud/accident/Application.java @@ -1,7 +1,11 @@ package com.zcloud.accident; import com.jjb.saas.base.starter.bootstart.JJBSpringbootApplication; +import com.jjb.saas.framework.event.consumer.EnableConsumer; import org.springframework.boot.SpringApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.messaging.Sink; +import org.springframework.cloud.stream.messaging.Source; /** * Spring Boot Starter diff --git a/start/src/main/resources/bootstrap.yml b/start/src/main/resources/bootstrap.yml index d921869..ecc8aa4 100644 --- a/start/src/main/resources/bootstrap.yml +++ b/start/src/main/resources/bootstrap.yml @@ -4,3 +4,5 @@ spring: - classpath:nacos.yml - classpath:sdk.yml - classpath:swagger.yml +server: + port: 8085 diff --git a/start/src/main/resources/nacos.yml b/start/src/main/resources/nacos.yml index 4d4fd61..f11dca0 100644 --- a/start/src/main/resources/nacos.yml +++ b/start/src/main/resources/nacos.yml @@ -20,7 +20,7 @@ spring: file-extension: yml shared-configs: - config-common.yml - - config-port.yml +# - config-port.yml - config-mq.yml - config-log.yml - config-sdk-server.yml diff --git a/web-adapter/pom.xml b/web-adapter/pom.xml index 9cb0c83..0895e61 100644 --- a/web-adapter/pom.xml +++ b/web-adapter/pom.xml @@ -17,10 +17,6 @@ com.jjb.saas jjb-saas-framework-adapter - - com.alibaba.cloud - spring-cloud-starter-stream-rocketmq - com.zcloud.accident diff --git a/web-adapter/src/main/java/com/zcloud/accident/web/AccidentController.java b/web-adapter/src/main/java/com/zcloud/accident/web/AccidentController.java index e782324..8a8e957 100644 --- a/web-adapter/src/main/java/com/zcloud/accident/web/AccidentController.java +++ b/web-adapter/src/main/java/com/zcloud/accident/web/AccidentController.java @@ -1,6 +1,7 @@ package com.zcloud.accident.web; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.Response; @@ -50,13 +51,15 @@ public class AccidentController { @ApiOperation("新增") @PostMapping("/save") public SingleResponse add(@Validated @RequestBody AccidentAddCmd cmd) { - SSOUser ssoUser = AuthContext.getCurrentUser(); return accidentService.add(cmd); } @ApiOperation("分页") @PostMapping("/list") public PageResponse page(@RequestBody AccidentPageQry qry) { + if(ObjectUtil.isNull(qry.getEqCorpinfoId())){ + qry.setEqCorpinfoId(AuthContext.getTenantId()); + } return accidentService.listPage(qry); } @@ -94,8 +97,8 @@ public class AccidentController { } @ApiOperation("导出Excel") - @PostMapping("/export") - public void export(@RequestBody AccidentPageQry qry, HttpServletResponse response) throws IOException { + @GetMapping("/export") + public void export(AccidentPageQry qry, HttpServletResponse response) throws IOException { // 使用listAll方法获取所有符合条件的数据 List accidentCOList = accidentService.listAll(qry); // 转换为导出CO @@ -111,12 +114,5 @@ public class AccidentController { public MultiResponse countByCorpinfoIdAndIncidentType(@RequestBody AccidentCountQry accidentCountQry) { return accidentService.countByCorpinfoIdAndIncidentType(accidentCountQry); } - - @GetMapping("/test") - public void test() { - ZcUserEvent zcUserEvent = new ZcUserEvent(); - zcUserEvent.setName("hello world"); - remoteEventPublisher.sendMessage(zcUserEvent,"zcloud:user:ev2" ); - } } diff --git a/web-app/src/main/java/com/zcloud/accident/command/query/AccidentQueryExe.java b/web-app/src/main/java/com/zcloud/accident/command/query/AccidentQueryExe.java index c1b9d0a..2750428 100644 --- a/web-app/src/main/java/com/zcloud/accident/command/query/AccidentQueryExe.java +++ b/web-app/src/main/java/com/zcloud/accident/command/query/AccidentQueryExe.java @@ -71,7 +71,7 @@ public class AccidentQueryExe { * @return 统计结果列表 */ public MultiResponse countByCorpinfoIdAndIncidentType(AccidentCountQry accidentCountQry) { - List resultList = accidentGateway.countByCorpinfoIdAndIncidentType(accidentCountQry.getCorpinfoIds()); + List resultList = accidentGateway.countByCorpinfoIdAndIncidentType(accidentCountQry.getCorpinfoIds(),accidentCountQry.getEqAccidentType()); List coList = accidentCountStatConvertor.convertToCOList(resultList); return MultiResponse.of(coList); } diff --git a/web-client/src/main/java/com/zcloud/accident/dto/AccidentCountQry.java b/web-client/src/main/java/com/zcloud/accident/dto/AccidentCountQry.java index bde4466..78582e6 100644 --- a/web-client/src/main/java/com/zcloud/accident/dto/AccidentCountQry.java +++ b/web-client/src/main/java/com/zcloud/accident/dto/AccidentCountQry.java @@ -8,13 +8,15 @@ import java.util.List; /** * 事故统计查询命令 * 用于按照公司ID列表和事故类型统计事故数量 - * + * * @Author * @Date */ @Data public class AccidentCountQry extends Query { - + @ApiModelProperty(value = "公司ID列表") private List corpinfoIds; -} \ No newline at end of file + @ApiModelProperty(value = "类型") + private Integer eqAccidentType; +} diff --git a/web-client/src/main/java/com/zcloud/accident/dto/AccidentPageQry.java b/web-client/src/main/java/com/zcloud/accident/dto/AccidentPageQry.java index 12c7c4f..90ca7aa 100644 --- a/web-client/src/main/java/com/zcloud/accident/dto/AccidentPageQry.java +++ b/web-client/src/main/java/com/zcloud/accident/dto/AccidentPageQry.java @@ -4,8 +4,10 @@ import com.alibaba.cola.dto.PageQuery; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.sql.Date; +import java.time.LocalDate; import java.time.LocalDateTime; @@ -27,6 +29,8 @@ public class AccidentPageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ + @ApiModelProperty(value = "所属企业", name = "eqCorpinfoId") + private Long eqCorpinfoId; @ApiModelProperty(value = "事故名称", name = "likeIncidentName") private String likeIncidentName; @ApiModelProperty(value = "事故地点", name = "likeLocation") @@ -36,11 +40,13 @@ public class AccidentPageQry extends PageQuery { @ApiModelProperty(value = "事故级别", name = "likeIncidentLevel") private String eqIncidentLevel; @ApiModelProperty(value = "开始时间", name = "geIncidentDate") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime geIncidentDate; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate geIncidentDate; @ApiModelProperty(value = "结束时间", name = "leIncidentDate") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime leIncidentDate; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate leIncidentDate; @ApiModelProperty(value = "类型1事件2事故", name = "eqType") private Integer eqType; } diff --git a/web-client/src/main/java/com/zcloud/accident/dto/clientobject/AccidentExportCO.java b/web-client/src/main/java/com/zcloud/accident/dto/clientobject/AccidentExportCO.java index 6767a3c..56fe22f 100644 --- a/web-client/src/main/java/com/zcloud/accident/dto/clientobject/AccidentExportCO.java +++ b/web-client/src/main/java/com/zcloud/accident/dto/clientobject/AccidentExportCO.java @@ -45,7 +45,7 @@ public class AccidentExportCO { @ApiModelProperty(value = "事故发生时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") - @ExcelProperty(value = "事故发生时间", index = 7,format = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "事故发生时间", index = 7) private LocalDateTime incidentDate; @ApiModelProperty(value = "直接经济损失(万元)") @@ -85,7 +85,8 @@ public class AccidentExportCO { private String measures; @ApiModelProperty(value = "报出日期") - @ExcelProperty(value = "报出日期", index = 17,format = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "报出日期", index = 17) + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") private LocalDateTime reportDate; } diff --git a/web-domain/src/main/java/com/zcloud/accident/domain/gateway/AccidentGateway.java b/web-domain/src/main/java/com/zcloud/accident/domain/gateway/AccidentGateway.java index 64c27db..3c89ad6 100644 --- a/web-domain/src/main/java/com/zcloud/accident/domain/gateway/AccidentGateway.java +++ b/web-domain/src/main/java/com/zcloud/accident/domain/gateway/AccidentGateway.java @@ -27,12 +27,14 @@ public interface AccidentGateway { */ Boolean deletedAccidentById(Long id); Boolean deletedAccidentByIds(Long[] id); - + /** * 按照corpinfoId和incidentType统计个数 - * @param corpinfoIds 公司ID列表 + * + * @param corpinfoIds 公司ID列表 + * @param eqAccidentType * @return 统计结果列表,包含corpinfoId、incidentType和count字段 */ - List countByCorpinfoIdAndIncidentType(List corpinfoIds); + List countByCorpinfoIdAndIncidentType(List corpinfoIds, Integer eqAccidentType); } diff --git a/web-infrastructure/src/main/java/com/zcloud/accident/gatewayimpl/AccidentGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/accident/gatewayimpl/AccidentGatewayImpl.java index 152ac81..70bb8e1 100644 --- a/web-infrastructure/src/main/java/com/zcloud/accident/gatewayimpl/AccidentGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/accident/gatewayimpl/AccidentGatewayImpl.java @@ -1,18 +1,17 @@ package com.zcloud.accident.gatewayimpl; +import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.accident.domain.gateway.AccidentGateway; import com.zcloud.accident.domain.model.AccidentE; import com.zcloud.accident.domain.model.AccidentCountStat; import com.zcloud.accident.persistence.dataobject.AccidentDO; import com.zcloud.accident.persistence.repository.AccidentRepository; -import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; -import java.util.Map; /** * web-infrastructure @@ -26,8 +25,10 @@ public class AccidentGatewayImpl implements AccidentGateway { @Override public Boolean add(AccidentE accidentE) { - AccidentDO d = new AccidentDO(Tools.get32UUID()); - BeanUtils.copyProperties(accidentE, d, "accidentId"); + AccidentDO d = new AccidentDO(); + BeanUtils.copyProperties(accidentE, d); + d.setCorpinfoId(AuthContext.getTenantId()); + d.setCorpinfoName(AuthContext.getCurrentUser().getTenantName()); accidentRepository.save(d); return true; } @@ -51,8 +52,8 @@ public class AccidentGatewayImpl implements AccidentGateway { } @Override - public List countByCorpinfoIdAndIncidentType(List corpinfoIds) { - return accidentRepository.countByCorpinfoIdAndIncidentType(corpinfoIds); + public List countByCorpinfoIdAndIncidentType(List corpinfoIds, Integer eqAccidentType) { + return accidentRepository.countByCorpinfoIdAndIncidentType(corpinfoIds,eqAccidentType); } } diff --git a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/mapper/AccidentMapper.java b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/mapper/AccidentMapper.java index 47c1540..6347dcd 100644 --- a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/mapper/AccidentMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/mapper/AccidentMapper.java @@ -18,9 +18,11 @@ public interface AccidentMapper extends BaseMapper { /** * 按照corpinfoId和incidentType统计个数 - * @param corpinfoIds 公司ID列表 + * + * @param corpinfoIds 公司ID列表 + * @param eqAccidentType * @return 统计结果列表,包含corpinfoId、incidentType和count字段 */ - List countByCorpinfoIdAndIncidentType(@Param("corpinfoIds") List corpinfoIds); + List countByCorpinfoIdAndIncidentType(@Param("corpinfoIds") List corpinfoIds,@Param("eqAccidentType") Integer eqAccidentType); } diff --git a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/AccidentRepository.java b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/AccidentRepository.java index b4cebc7..2dc4d96 100644 --- a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/AccidentRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/AccidentRepository.java @@ -26,9 +26,11 @@ public interface AccidentRepository extends BaseRepository { /** * 按照corpinfoId和incidentType统计个数 - * @param corpinfoIds 公司ID列表 + * + * @param corpinfoIds 公司ID列表 + * @param eqAccidentType * @return 统计结果列表,包含corpinfoId、incidentType和count字段 */ - List countByCorpinfoIdAndIncidentType(@Param("corpinfoIds") List corpinfoIds); + List countByCorpinfoIdAndIncidentType(@Param("corpinfoIds") List corpinfoIds,@Param("eqAccidentType") Integer eqAccidentType); } diff --git a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/impl/AccidentRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/impl/AccidentRepositoryImpl.java index e1e214f..255e9d3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/impl/AccidentRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/accident/persistence/repository/impl/AccidentRepositoryImpl.java @@ -35,7 +35,7 @@ public class AccidentRepositoryImpl extends BaseRepositoryImpl result = accidentMapper.selectPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); } - + @Override public List listAll(Map params) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -43,10 +43,10 @@ public class AccidentRepositoryImpl extends BaseRepositoryImpl countByCorpinfoIdAndIncidentType(List corpinfoIds) { - return accidentMapper.countByCorpinfoIdAndIncidentType(corpinfoIds); + public List countByCorpinfoIdAndIncidentType(List corpinfoIds, Integer eqAccidentType) { + return accidentMapper.countByCorpinfoIdAndIncidentType(corpinfoIds,eqAccidentType); } } diff --git a/web-infrastructure/src/main/resources/mapper/AccidentMapper.xml b/web-infrastructure/src/main/resources/mapper/AccidentMapper.xml index 206501d..46b5d2e 100644 --- a/web-infrastructure/src/main/resources/mapper/AccidentMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/AccidentMapper.xml @@ -11,6 +11,9 @@ COUNT(*) as count from accident + + AND type = #{eqAccidentType} + AND corpinfo_id IN