吉安感知网项目-后端
linwei
4 days ago 62b9b28b6ce8e51f797d77c4351d432aabdab2c1
fix(workorder): 修复线索事件重复分发问题

- 添加 QueryWrapper 和 Wrappers 导入用于查询条件构建
- 实现事件是否存在检查逻辑,避免重复创建相同结果ID的事件
- 使用 saveOrUpdate 替代 save 方法支持数据更新
- 将事件状态设置为待确认枚举值替代硬编码数字
- 添加事件分发前的存在性验证防止重复分发
1 files modified
15 ■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java 15 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -17,7 +17,9 @@
package org.sxkj.gd.workorder.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
@@ -219,14 +221,21 @@
        if (taskResult.getDistributeStatus() != null && taskResult.getDistributeStatus() == 1) {
            throw new RuntimeException("成果已分发,无法再次分发");
        }
        GdClueEventEntity clueEvent = new GdClueEventEntity();
        // 查看事件直接是否分发过
        GdClueEventEntity clueEvent = getOne(Wrappers.<GdClueEventEntity>query().lambda()
            .eq(GdClueEventEntity::getResultId, distributeParam.getResultId())
            .eq(GdClueEventEntity::getIsDeleted, 0));
        // 如果是空的则创建对象
        if (clueEvent == null) {
            clueEvent = new GdClueEventEntity();
        }
        clueEvent.setResultId(distributeParam.getResultId());
        clueEvent.setWorkOrderId(distributeParam.getWorkOrderId());
        clueEvent.setDisposeUser(distributeParam.getDisposeUser());
        clueEvent.setDisposeDept(distributeParam.getDisposeDept());
        clueEvent.setLongitude(distributeParam.getLongitude());
        clueEvent.setLatitude(distributeParam.getLatitude());
        clueEvent.setEventStatus(1);
        clueEvent.setEventStatus(EventStatusEnum.PENDING_CONFIRM.getCode());
        String times = OrderNumUtils.initOrderNum(WordOrderConstant.EVENT_NUM_KEY);
        String eventNum = WordOrderConstant.EVENT_NUM_PREFIX + times;
        clueEvent.setEventNum(eventNum);
@@ -239,7 +248,7 @@
        clueEvent.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
        clueEvent.setCreateTime(new Date());
        clueEvent.setEventName(distributeParam.getEventName());
        if (!save(clueEvent)) {
        if (!saveOrUpdate(clueEvent)) {
            throw new RuntimeException("事件分发失败");
        }
        taskResult.setDistributeStatus(1);