fix: 优化自动过鱼数据接口
This commit is contained in:
parent
aa8013fdb4
commit
a167b41404
@ -117,4 +117,9 @@ public class SdFpssrlRAiRequest {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件ID(多个以逗号分隔),通过上传图片接口获取
|
||||||
|
*/
|
||||||
|
private String fid;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
import com.yfd.platform.qgc_base.domain.SdFpssrlR;
|
import com.yfd.platform.qgc_base.domain.SdFpssrlR;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 过鱼设施自动数据表 Mapper 接口
|
* 过鱼设施自动数据表 Mapper 接口
|
||||||
@ -11,4 +13,10 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface SdFpssrlRMapper extends BaseMapper<SdFpssrlR> {
|
public interface SdFpssrlRMapper extends BaseMapper<SdFpssrlR> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量合并过鱼自动数据(基于 STCD + TM + FTP 唯一)
|
||||||
|
* 存在则更新,不存在则新增
|
||||||
|
*/
|
||||||
|
int mergeFishRecords(List<SdFpssrlR> list);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,14 +131,40 @@ public class SdFpssrlRServiceImpl extends ServiceImpl<SdFpssrlRMapper, SdFpssrlR
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<SdFpssrlR> processAiReportBatch(List<SdFpssrlRAiRequest> requests) {
|
public List<SdFpssrlR> processAiReportBatch(List<SdFpssrlRAiRequest> requests) {
|
||||||
List<SdFpssrlR> results = new ArrayList<>();
|
List<SdFpssrlR> entities = new ArrayList<>();
|
||||||
|
Date now = new Date();
|
||||||
for (SdFpssrlRAiRequest req : requests) {
|
for (SdFpssrlRAiRequest req : requests) {
|
||||||
SdFpssrlR entity = processAiReport(req);
|
SdFpssrlR entity = new SdFpssrlR();
|
||||||
if (entity != null) {
|
entity.setStcd(req.getStcd());
|
||||||
results.add(entity);
|
entity.setTm(req.getTm());
|
||||||
}
|
entity.setFtp(req.getFtp());
|
||||||
|
entity.setFcnt(req.getFcnt() != null ? req.getFcnt() : 1);
|
||||||
|
entity.setFsz(req.getFsz());
|
||||||
|
entity.setLength(req.getLength());
|
||||||
|
entity.setWidth(req.getWidth());
|
||||||
|
entity.setFishspeed(req.getFishspeed());
|
||||||
|
entity.setDirection(req.getDirection());
|
||||||
|
entity.setFishposition(req.getFishposition());
|
||||||
|
entity.setFirstImgUrl(req.getFirstImgUrl());
|
||||||
|
entity.setSecondImgUrl(req.getSecondImgUrl());
|
||||||
|
entity.setVideoUrl(req.getVideoUrl());
|
||||||
|
entity.setTemperature(req.getTemperature());
|
||||||
|
entity.setWaterlevel(req.getWaterlevel());
|
||||||
|
entity.setSpeed(req.getSpeed());
|
||||||
|
entity.setQ(req.getQ());
|
||||||
|
entity.setDox(req.getDox());
|
||||||
|
entity.setTu(req.getTu());
|
||||||
|
entity.setChannelno(StrUtil.isNotBlank(req.getChannelno()) ? req.getChannelno() : "主通道");
|
||||||
|
entity.setFid(req.getFid());
|
||||||
|
entity.setRemark(req.getRemark());
|
||||||
|
entity.setRecordUser("AI_SYSTEM");
|
||||||
|
entity.setRecordTime(now);
|
||||||
|
entity.setModifyUser("AI_SYSTEM");
|
||||||
|
entity.setModifyTime(now);
|
||||||
|
entity.setIsDeleted(0);
|
||||||
|
entities.add(entity);
|
||||||
}
|
}
|
||||||
this.saveBatch(results);
|
baseMapper.mergeFishRecords(entities);
|
||||||
return results;
|
return entities;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,80 @@
|
|||||||
|
<?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.yfd.platform.qgc_base.mapper.SdFpssrlRMapper">
|
||||||
|
|
||||||
|
<!-- 批量合并过鱼自动数据(基于 STCD + TM + FTP 唯一) -->
|
||||||
|
<insert id="mergeFishRecords" parameterType="java.util.List">
|
||||||
|
MERGE INTO SD_FPSSRL_R T
|
||||||
|
USING (
|
||||||
|
<foreach collection="list" item="obj" index="index" separator="UNION ALL">
|
||||||
|
SELECT
|
||||||
|
#{obj.stcd, jdbcType=VARCHAR} AS STCD,
|
||||||
|
#{obj.tm, jdbcType=TIMESTAMP} AS TM,
|
||||||
|
#{obj.ftp, jdbcType=VARCHAR} AS FTP,
|
||||||
|
#{obj.fcnt, jdbcType=INTEGER} AS FCNT,
|
||||||
|
#{obj.fsz, jdbcType=VARCHAR} AS FSZ,
|
||||||
|
#{obj.length, jdbcType=DECIMAL} AS LENGTH,
|
||||||
|
#{obj.width, jdbcType=DECIMAL} AS WIDTH,
|
||||||
|
#{obj.fishspeed, jdbcType=VARCHAR} AS FISHSPEED,
|
||||||
|
#{obj.direction, jdbcType=INTEGER} AS DIRECTION,
|
||||||
|
#{obj.fishposition, jdbcType=DECIMAL} AS FISHPOSITION,
|
||||||
|
#{obj.firstImgUrl, jdbcType=VARCHAR} AS FIRSTIMGURL,
|
||||||
|
#{obj.secondImgUrl, jdbcType=VARCHAR} AS SECONDIMGURL,
|
||||||
|
#{obj.videoUrl, jdbcType=VARCHAR} AS VIDEOURL,
|
||||||
|
#{obj.temperature, jdbcType=DECIMAL} AS TEMPERATURE,
|
||||||
|
#{obj.waterlevel, jdbcType=DECIMAL} AS WATERLEVEL,
|
||||||
|
#{obj.speed, jdbcType=DECIMAL} AS SPEED,
|
||||||
|
#{obj.q, jdbcType=DECIMAL} AS Q,
|
||||||
|
#{obj.dox, jdbcType=DECIMAL} AS DOX,
|
||||||
|
#{obj.tu, jdbcType=INTEGER} AS TU,
|
||||||
|
#{obj.channelno, jdbcType=VARCHAR} AS CHANNELNO,
|
||||||
|
#{obj.fid, jdbcType=VARCHAR} AS FID,
|
||||||
|
#{obj.remark, jdbcType=VARCHAR} AS REMARK,
|
||||||
|
#{obj.recordUser, jdbcType=VARCHAR} AS RECORD_USER,
|
||||||
|
#{obj.modifyUser, jdbcType=VARCHAR} AS MODIFY_USER
|
||||||
|
FROM DUAL
|
||||||
|
</foreach>
|
||||||
|
) S
|
||||||
|
ON (T.STCD = S.STCD AND T.TM = S.TM AND T.FTP = S.FTP AND T.IS_DELETED = 0)
|
||||||
|
WHEN MATCHED THEN
|
||||||
|
UPDATE SET
|
||||||
|
T.FCNT = S.FCNT,
|
||||||
|
T.FSZ = S.FSZ,
|
||||||
|
T.LENGTH = S.LENGTH,
|
||||||
|
T.WIDTH = S.WIDTH,
|
||||||
|
T.FISHSPEED = S.FISHSPEED,
|
||||||
|
T.DIRECTION = S.DIRECTION,
|
||||||
|
T.FISHPOSITION = S.FISHPOSITION,
|
||||||
|
T.FIRSTIMGURL = S.FIRSTIMGURL,
|
||||||
|
T.SECONDIMGURL = S.SECONDIMGURL,
|
||||||
|
T.VIDEOURL = S.VIDEOURL,
|
||||||
|
T.TEMPERATURE = S.TEMPERATURE,
|
||||||
|
T.WATERLEVEL = S.WATERLEVEL,
|
||||||
|
T.SPEED = S.SPEED,
|
||||||
|
T.Q = S.Q,
|
||||||
|
T.DOX = S.DOX,
|
||||||
|
T.TU = S.TU,
|
||||||
|
T.CHANNELNO = S.CHANNELNO,
|
||||||
|
T.FID = S.FID,
|
||||||
|
T.REMARK = S.REMARK,
|
||||||
|
T.MODIFY_USER = S.MODIFY_USER,
|
||||||
|
T.MODIFY_TIME = SYSDATE
|
||||||
|
WHEN NOT MATCHED THEN
|
||||||
|
INSERT (
|
||||||
|
ID, STCD, TM, FTP, FCNT, FSZ, LENGTH, WIDTH, FISHSPEED,
|
||||||
|
DIRECTION, FISHPOSITION, FIRSTIMGURL, SECONDIMGURL, VIDEOURL,
|
||||||
|
TEMPERATURE, WATERLEVEL, SPEED, Q, DOX, TU, CHANNELNO,
|
||||||
|
FID, REMARK, RECORD_USER, RECORD_TIME, MODIFY_USER, MODIFY_TIME,
|
||||||
|
IS_DELETED
|
||||||
|
) VALUES (
|
||||||
|
SYS_GUID(),
|
||||||
|
S.STCD, S.TM, S.FTP, S.FCNT, S.FSZ, S.LENGTH, S.WIDTH, S.FISHSPEED,
|
||||||
|
S.DIRECTION, S.FISHPOSITION, S.FIRSTIMGURL, S.SECONDIMGURL, S.VIDEOURL,
|
||||||
|
S.TEMPERATURE, S.WATERLEVEL, S.SPEED, S.Q, S.DOX, S.TU, S.CHANNELNO,
|
||||||
|
S.FID, S.REMARK, S.RECORD_USER, SYSDATE, S.MODIFY_USER, SYSDATE,
|
||||||
|
0
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue
Block a user