diff --git a/afis-recall-service/pom.xml b/afis-recall-service/pom.xml index 6bd1a71..2b743f3 100644 --- a/afis-recall-service/pom.xml +++ b/afis-recall-service/pom.xml @@ -6,7 +6,7 @@ com.wabestway.recall afis-recall - 0.0.1-SNAPSHOT + 1.0-SNAPSHOT jar afis-recall-service diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java index 33de171..7b8d154 100644 --- a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/RecallRecordDTO.java @@ -1,6 +1,8 @@ package com.wabestway.recall.trace.dto; import java.io.Serializable; +import java.util.List; + import lombok.Data; import com.wabestway.commons.http.PageDTO; import io.swagger.annotations.ApiModel; @@ -8,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty; /** - * + * * * @author wangH * @company 北京华焱坤泰科技有限公司 @@ -36,7 +38,7 @@ public class RecallRecordDTO extends PageDTO implements Serializable { private String content; /** 记录事件 */ @ApiModelProperty(value = "记录事件") - private Blob events; + private List events; /** 回溯记录跟踪ID */ @ApiModelProperty(value = "回溯记录跟踪ID") private String traceId; diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java new file mode 100644 index 0000000..bf7008a --- /dev/null +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/dto/TraceDTO.java @@ -0,0 +1,74 @@ +package com.wabestway.recall.trace.dto; + +import com.wabestway.commons.http.PageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** + * @author wangH + * @company 北京华焱坤泰科技有限公司 + * @Time 2023-05-06 17:37:03 + */ +@Data +@ApiModel +public class TraceDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private String id; + /** + * 产品编码 + */ + @ApiModelProperty(value = "产品编码") + private String productCode; + /** + * 产品名称 + */ + @ApiModelProperty(value = "产品名称") + private String productName; + /** + * 模块 + */ + @ApiModelProperty(value = "模块") + private String module; + /** + * 页面说明 + */ + @ApiModelProperty(value = "页面说明") + private String content; + /** + * 记录事件 + */ + @ApiModelProperty(value = "记录事件") + private List events; + /** + * 回溯记录跟踪ID + */ + @ApiModelProperty(value = "回溯记录跟踪ID") + private String traceId; + /** + * 回溯订单Id + */ + @ApiModelProperty(value = "回溯订单Id") + private String orderId; + /** + * 是否最后提交 + */ + @ApiModelProperty(value = "是否最后提交") + private boolean last; + /** + * 调用接口appKey + */ + @ApiModelProperty(value = "调用接口appKey") + private String appKey; + + +} diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java index 12e41f2..6ce26f0 100644 --- a/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/entity/RecallRecordEntity.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.util.List; + /** * * @@ -27,7 +29,7 @@ public class RecallRecordEntity { /** 页面说明 */ private String content; /** 记录事件 */ - private Blob events; + private List events; /** 回溯记录跟踪ID */ private String traceId; /** 创建人 */ diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java index 56f4cfa..4f117d2 100644 --- a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/RecallOrderService.java @@ -44,5 +44,19 @@ public interface RecallOrderService extends IService { * @return */ RecallOrderVO queryRecallOrderById(String id); + + /** + * 根据业务订单Id 查询回溯订单 + * @param orderId + * @return + */ + RecallOrderEntity queryRecallOrderByOrderId(String orderId); + + /** + * 根据回溯轨迹ID 查询回溯订单 + * @param traceId + * @return + */ + RecallOrderEntity queryRecallOrderByTraceId(String traceId); } diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java index 5cff9f6..610420a 100644 --- a/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderServiceImpl.java @@ -1,7 +1,9 @@ package com.wabestway.recall.trace.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -10,11 +12,10 @@ import com.wabestway.recall.trace.entity.RecallOrderEntity; import com.wabestway.recall.trace.dto.RecallOrderDTO; import com.wabestway.recall.trace.vo.RecallOrderVO; import com.wabestway.recall.trace.service.RecallOrderService; + import java.util.List; /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 @@ -24,7 +25,7 @@ public class RecallOrderServiceImpl extends ServiceImpl queryRecallOrderByCondition(long page, long size, RecallOrderDTO recallOrderDTO) { - Page paramReq = new Page<>(page,size); + Page paramReq = new Page<>(page, size); paramReq.addOrder(new OrderItem().setColumn("create_time").setAsc(false));//创建时间降序排序 IPage iPage = baseMapper.queryRecallOrderByCondition(paramReq, recallOrderDTO); return iPage; @@ -40,7 +41,23 @@ public class RecallOrderServiceImpl extends ServiceImpl orderQuery = Wrappers.lambdaQuery(); + orderQuery.eq(RecallOrderEntity::getOrderId, orderId); + orderQuery.last("limit 1"); + return baseMapper.selectOne(orderQuery); + } + + @Override + public RecallOrderEntity queryRecallOrderByTraceId(String traceId) { + LambdaQueryWrapper orderQuery = Wrappers.lambdaQuery(); + orderQuery.eq(RecallOrderEntity::getOrderId, traceId); + orderQuery.last("limit 1"); + return baseMapper.selectOne(orderQuery); + } } \ No newline at end of file diff --git a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java index f0748c8..01151ea 100644 --- a/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java +++ b/afis-recall-service/src/main/java/com/wabestway/recall/trace/vo/RecallRecordVO.java @@ -1,6 +1,8 @@ package com.wabestway.recall.trace.vo; import java.io.Serializable; +import java.util.List; + import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -34,7 +36,7 @@ public class RecallRecordVO implements Serializable { private String content; /** 记录事件 */ @ApiModelProperty(value = "记录事件") - private Blob events; + private List events; /** 回溯记录跟踪ID */ @ApiModelProperty(value = "回溯记录跟踪ID") private String traceId; diff --git a/afis-recall-web/pom.xml b/afis-recall-web/pom.xml index 76fa513..b4d6198 100644 --- a/afis-recall-web/pom.xml +++ b/afis-recall-web/pom.xml @@ -6,17 +6,41 @@ com.wabestway.recall afis-recall - 0.0.1-SNAPSHOT + 1.0-SNAPSHOT afis-recall-web jar - 1.8 Hoxton.SR9 - 2.2.3.RELEASE - + 2.2.1.RELEASE + + 1.8 + 1.8 + UTF-8 + UTF-8 + 3.3.2 + 1.1.22 + + + com.wabestway.recall + afis-recall-service + 1.0-SNAPSHOT + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatisplus.version} + + + com.baomidou + mybatis-plus-generator + + + + org.springframework.cloud spring-cloud-starter-openfeign @@ -26,6 +50,12 @@ afis-engine-api 2.5 + + com.wabestway.auth + afis-auth-api + 1.3 + + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/model/Order.java b/afis-recall-web/src/main/java/com/wabestway/recall/model/Order.java deleted file mode 100644 index c532873..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/model/Order.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.wabestway.recall.model; - -import lombok.Data; -import org.bson.codecs.pojo.annotations.BsonIgnore; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.index.Indexed; -import org.springframework.data.mongodb.core.mapping.Document; - -import java.util.List; - -@Data -@Document(collection = "orders") -public class Order { - @Id - private String id; - private String appKey; - private String tenantId; - private String productCode; - private String productName; - @BsonIgnore - private List events; - @Indexed(unique = true) - private String traceId; - @Indexed(unique = true) - private String orderId; - private String complete; - private String archived; - private String fileId; - private String fileUrl; - private long createAt; - @BsonIgnore - private int page; - @BsonIgnore - private int pageSize; - - private String startDate; - private String endDate; - private String policyNo; - private String holderName; - private String holderPhone; - private String supplierName; -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/model/OrderList.java b/afis-recall-web/src/main/java/com/wabestway/recall/model/OrderList.java deleted file mode 100644 index 5d9f624..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/model/OrderList.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.wabestway.recall.model; - -import lombok.Data; - -import java.util.List; - -@Data -public class OrderList { - private int page; - private int pageSize; - private long total; - private List list; -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/model/Record.java b/afis-recall-web/src/main/java/com/wabestway/recall/model/Record.java deleted file mode 100644 index 5b8d629..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/model/Record.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.wabestway.recall.model; - -import lombok.Data; -import org.bson.codecs.pojo.annotations.BsonIgnore; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.index.Indexed; -import org.springframework.data.mongodb.core.mapping.Document; - -import java.util.List; - -@Data -@Document(collection = "records") -public class Record { - @Id - private String id; - private List events; - private String traceId; - @BsonIgnore - private String orderId; - private boolean last; - private String productCode; - private String productName; - private long createAt; - @BsonIgnore - private String appKey; - private String module; - private String content; -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/model/ResObj.java b/afis-recall-web/src/main/java/com/wabestway/recall/model/ResObj.java deleted file mode 100644 index 662d9c3..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/model/ResObj.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.wabestway.recall.model; - -import lombok.Data; - -import java.util.Map; - -@Data -public class ResObj { - private static final String SUCCESS = "success"; - - private static final String FAILURE = "failure"; - - private static final Integer SUCCESS_CODE = 200; - - private static final Integer FAILURE_CODE = 400; - - private Integer code; - - private String message; - - private String _trackId; - - private T data; - - private Map extr; - - private long timestamp; - - private Integer _status; - - private ResObj(Integer code, T data) { - this.code = code; - this.data = data; - this.timestamp = System.currentTimeMillis(); - } - - private ResObj(Integer code, String message, T data) { - this.code = code; - this.data = data; - this.message = message; - this.timestamp = System.currentTimeMillis(); - } - - private ResObj(T data) { - this.data = data; - this.timestamp = System.currentTimeMillis(); - } - - private ResObj(Integer code) { - this.code = code; - this.timestamp = System.currentTimeMillis(); - } - - public boolean isOk() { - return SUCCESS_CODE.equals(this.code); - } - - public T data() { - return (T) this.data; - } - - public Object get(String key) { - if (this.data != null && key != null) { - return ((Map) this.data).get(key); - } - return null; - } - - public ResObj() { - this.timestamp = System.currentTimeMillis(); - } - - public static ResObj ok() { - ResObj o = new ResObj(SUCCESS_CODE); - return o; - } - - public static ResObj ok(Object data) { - ResObj o = new ResObj(SUCCESS_CODE, data); - return o; - } - - public static ResObj fail(String msg) { - ResObj o = new ResObj(FAILURE_CODE, msg, null); - return o; - } - - - public static ResObj fail() { - ResObj o = new ResObj(FAILURE_CODE); - return o; - } - - public static ResObj result(Integer code, Object data) { - ResObj o = new ResObj(code, data); - return o; - } - - public static ResObj result(Integer code, String message, Object data) { - ResObj o = new ResObj(code, message, data); - return o; - } - - public Integer getCode() { - return code; - } - - public void setCode(Integer code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public T getData() { - return data; - } - - public ResObj setData(T data) { - this.data = data; - return this; - } - - public Long getTimestamp() { - return timestamp; - } - - public ResObj setTimestamp(Long timestamp) { - this.timestamp = timestamp; - return this; - } - - public Map getExtr() { - return extr; - } - - - public Integer get_status() { - return _status; - } - - public void set_status(Integer _status) { - this._status = _status; - } - - public String get_trackId() { - return _trackId; - } - - public void set_trackId(String _trackId) { - this._trackId = _trackId; - } - - public ResObj trackId(String _trackId) { - this._trackId = _trackId; - return this; - } - - @Override - public String toString() { - if (message == null) { - return "ResObj(" + code + ")"; - } - return "ResObj(" + code + "){" + message + "}"; - } - - -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/repository/OrderRepository.java b/afis-recall-web/src/main/java/com/wabestway/recall/repository/OrderRepository.java deleted file mode 100644 index 4c71441..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/repository/OrderRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.wabestway.recall.repository; - -import com.wabestway.recall.model.Order; -import org.springframework.data.domain.*; -import org.springframework.data.mongodb.repository.ReactiveMongoRepository; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -public interface OrderRepository extends ReactiveMongoRepository { - Mono findByOrderId(String orderId); - - Mono findByTraceId(String traceId); -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/repository/RecordRepository.java b/afis-recall-web/src/main/java/com/wabestway/recall/repository/RecordRepository.java deleted file mode 100644 index 43b522c..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/repository/RecordRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.wabestway.recall.repository; - - -import com.wabestway.recall.model.Record; -import org.springframework.data.mongodb.repository.ReactiveMongoRepository; -import reactor.core.publisher.Flux; - - -public interface RecordRepository extends ReactiveMongoRepository { - Flux findAllByTraceIdOrderByCreateAtAsc(String traceId); -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java index f23c9f6..1187a48 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallOrderController.java @@ -1,5 +1,6 @@ package com.wabestway.recall.trace.controller; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; @@ -10,16 +11,13 @@ import com.wabestway.recall.trace.service.RecallOrderApiService; import com.wabestway.commons.http.Paging; import com.wabestway.commons.http.ResObj; - /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 */ @RestController -@RequestMapping("/trace/recallOrder") +@RequestMapping("/order") @Api(tags = {"-接口"}, description = "-接口") public class RecallOrderController { @Autowired @@ -44,26 +42,13 @@ public class RecallOrderController { } /** - * 保存 + * 生成回溯MP4文件 + * + * @return */ - @PostMapping("/save") - @ApiOperation(value = "保存", notes = "保存", httpMethod = "POST") - public ResObj saveRecallOrder(@RequestBody RecallOrderDTO paramRequest) { - return recallOrderApiService.saveRecallOrder(paramRequest); + @GetMapping("/ffmpeg") + public ResObj createMp4() { + return recallOrderApiService.traceVideo(); } - /** - * 修改 - */ - @PostMapping("/update") - @ApiOperation(value = "修改", notes = "修改", httpMethod = "POST") - public ResObj updateRecallOrder(@RequestBody RecallOrderDTO paramRequest) { - return recallOrderApiService.updateRecallOrder(paramRequest); - } - - @PostMapping("/changeStatus") - @ApiOperation(value = "启禁用更新", notes = "启禁用更新", httpMethod = "POST") - public ResObj changeStatus(@RequestBody RecallOrderDTO paramRequest) { - return recallOrderApiService.changeStatus(paramRequest.getId(), paramRequest.getStatus()); - } } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java index df72b34..c270f0f 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/controller/RecallRecordController.java @@ -1,69 +1,34 @@ package com.wabestway.recall.trace.controller; +import com.wabestway.recall.trace.dto.TraceDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import com.wabestway.recall.trace.dto.RecallRecordDTO; -import com.wabestway.recall.trace.vo.RecallRecordVO; import com.wabestway.recall.trace.service.RecallRecordApiService; -import com.wabestway.commons.http.Paging; import com.wabestway.commons.http.ResObj; /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 */ @RestController -@RequestMapping("/trace/recallRecord") +@RequestMapping("/track") @Api(tags = {"-接口"}, description = "-接口") public class RecallRecordController { @Autowired private RecallRecordApiService recallRecordApiService; - /** - * 列表 - */ - @PostMapping("/list") - @ApiOperation(value = "分页列表查询", notes = "条件分页查询列表", httpMethod = "POST") - public ResObj> list(@RequestBody RecallRecordDTO paramRequest) { - return recallRecordApiService.list(paramRequest); - } - - /** - * 信息 - */ - @GetMapping("/info/{id}") - @ApiOperation(value = "根据id查详情", notes = "根据id查详情", httpMethod = "GET") - public ResObj info(@PathVariable("id") String id) { - return recallRecordApiService.getRecallRecord(id); - } /** * 保存 */ @PostMapping("/save") @ApiOperation(value = "保存", notes = "保存", httpMethod = "POST") - public ResObj saveRecallRecord(@RequestBody RecallRecordDTO paramRequest) { - return recallRecordApiService.saveRecallRecord(paramRequest); + public ResObj saveRecallRecord(@RequestBody TraceDTO record) { + return recallRecordApiService.save(record); } - /** - * 修改 - */ - @PostMapping("/update") - @ApiOperation(value = "修改", notes = "修改", httpMethod = "POST") - public ResObj updateRecallRecord(@RequestBody RecallRecordDTO paramRequest) { - return recallRecordApiService.updateRecallRecord(paramRequest); - } - - @PostMapping("/changeStatus") - @ApiOperation(value = "启禁用更新", notes = "启禁用更新", httpMethod = "POST") - public ResObj changeStatus(@RequestBody RecallRecordDTO paramRequest) { - return recallRecordApiService.changeStatus(paramRequest.getId(), paramRequest.getStatus()); - } } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java index 9cd1d5d..85293b3 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallOrderApiService.java @@ -29,26 +29,10 @@ public interface RecallOrderApiService { * @return */ ResObj getRecallOrder(String id); - + ResObj getRecallOrderByOrderId(String orderId); /** - * 保存 - * @param paramReq + * 根据回溯文件生成MP4视频 * @return */ - ResObj saveRecallOrder(RecallOrderDTO paramReq); - - /** - * 修改 - * @param paramReq - * @return - */ - ResObj updateRecallOrder(RecallOrderDTO paramReq); - - /** - * 启禁用 - * @param id - * @param status - * @return - */ - ResObj changeStatus(String id, String status); + ResObj traceVideo(); } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java index 991c83a..72c1b65 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/RecallRecordApiService.java @@ -1,15 +1,15 @@ package com.wabestway.recall.trace.service; import java.util.List; + import com.wabestway.recall.trace.dto.RecallRecordDTO; +import com.wabestway.recall.trace.dto.TraceDTO; import com.wabestway.recall.trace.vo.RecallRecordVO; import com.wabestway.commons.http.Paging; import com.wabestway.commons.http.ResObj; /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 @@ -17,38 +17,11 @@ import com.wabestway.commons.http.ResObj; public interface RecallRecordApiService { /** - * 列表 - * @param paramReq + * 回溯数据记录 + * + * @param record * @return */ - ResObj> list(RecallRecordDTO paramReq); + ResObj save(TraceDTO record); - /** - * 查询详情 - * @param id - * @return - */ - ResObj getRecallRecord(String id); - - /** - * 保存 - * @param paramReq - * @return - */ - ResObj saveRecallRecord(RecallRecordDTO paramReq); - - /** - * 修改 - * @param paramReq - * @return - */ - ResObj updateRecallRecord(RecallRecordDTO paramReq); - - /** - * 启禁用 - * @param id - * @param status - * @return - */ - ResObj changeStatus(String id, String status); } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java index 5b573e9..566e75b 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallOrderApiServiceImpl.java @@ -1,31 +1,48 @@ package com.wabestway.recall.trace.service.impl; +import cn.hutool.core.io.FileUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.wabestway.commons.http.Paging; import com.wabestway.commons.http.ResObj; -import com.wabestway.commons.enums.DataValidEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.BeanUtils; -import com.wabestway.ins.utils.UUIDUtil; +import com.wabestway.engine.api.dfs.UploadFileDTO; +import com.wabestway.engine.api.dfs.UploadRespVO; +import com.wabestway.engine.api.feign.DfsStorageFeignClient; import com.wabestway.recall.trace.entity.RecallOrderEntity; +import com.wabestway.recall.trace.entity.RecallRecordEntity; +import com.wabestway.recall.trace.service.RecallOrderService; +import com.wabestway.recall.trace.service.RecallRecordService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import com.wabestway.recall.trace.dto.RecallOrderDTO; import com.wabestway.recall.trace.vo.RecallOrderVO; import com.wabestway.recall.trace.service.RecallOrderApiService; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.wabestway.recall.trace.util.HeaderDataUtil; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 */ +@Slf4j @Service public class RecallOrderApiServiceImpl implements RecallOrderApiService { @Autowired private RecallOrderService recallOrderService; + @Autowired + private DfsStorageFeignClient storageFeignClient; + @Autowired + private RecallRecordService recallRecordService; @Override public ResObj> list(RecallOrderDTO paramReq) { @@ -38,48 +55,119 @@ public class RecallOrderApiServiceImpl implements RecallOrderApiService { @Override public ResObj getRecallOrder(String id) { RecallOrderVO recallOrderVO = recallOrderService.queryRecallOrderById(id); - return ResObj.ok(recallOrderVO); } - @Transactional @Override - public ResObj saveRecallOrder(RecallOrderDTO paramReq) { - RecallOrderEntity recallOrder = new RecallOrderEntity(); - BeanUtils.copyProperties(paramReq, recallOrder); + public ResObj getRecallOrderByOrderId(String orderId) { + return null; + } - recallOrder.setId(UUIDUtil.generate());//赋值id - recallOrder.setStatus(DataValidEnum.VALID.getCode()); - recallOrder.setCreateBy(HeaderDataUtil.getUserId());//创建人 - recallOrder.setCreateTime(System.currentTimeMillis());//创建时间 - recallOrder.setUpdateBy(HeaderDataUtil.getUserId());//更新人 - recallOrder.setUpdateTime(System.currentTimeMillis());//更新时间 + @Override + public ResObj traceVideo() { + LambdaQueryWrapper orderQuery = Wrappers.lambdaQuery(); + orderQuery.eq(RecallOrderEntity::getComplete, "1"); + orderQuery.isNull(RecallOrderEntity::getFileId); + orderQuery.orderByDesc(RecallOrderEntity::getCompleteDate); + List orderList = recallOrderService.getBaseMapper().selectList(orderQuery); + orderList.forEach(order -> { + LambdaQueryWrapper recordQuery = Wrappers.lambdaQuery(); + recordQuery.eq(RecallRecordEntity::getTraceId, order.getTraceId()); + recordQuery.orderByAsc(RecallRecordEntity::getCreateTime); + List recordList = recallRecordService.getBaseMapper().selectList(recordQuery); - recallOrderService.save(recallOrder); + List events = recordList.stream() + .flatMap(entity -> entity.getEvents().stream()) + .collect(Collectors.toList()); + JSONArray array = JSONArray.parseArray(JSON.toJSONString(events)); + try { + createVideo(order, array.toJSONString()); + } catch (IOException ex) { + ex.printStackTrace(); + } + }); return ResObj.ok(); } - @Transactional - @Override - public ResObj updateRecallOrder(RecallOrderDTO paramReq) { - RecallOrderEntity recallOrder = new RecallOrderEntity(); - BeanUtils.copyProperties(paramReq, recallOrder); - recallOrder.setUpdateBy(HeaderDataUtil.getUserId());//更新人 - recallOrder.setUpdateTime(System.currentTimeMillis());//更新时间 - recallOrderService.updateById(recallOrder); - return ResObj.ok(); + void createVideo(RecallOrderEntity fo, String jsonData) throws IOException { + + // 创建临时目录 + Path tempDir = null; + try { + tempDir = Files.createTempDirectory("ts"); + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("Created temporary directory: " + tempDir); + + try { + File tempFile = new File(tempDir.toFile(), "traces.json"); + FileWriter fw = new FileWriter(tempFile); + BufferedWriter bw = new BufferedWriter(fw); + bw.write(jsonData); + bw.flush(); + bw.close(); + fw.close(); + String[] command = {"ts-node", "/opt/trace-transform/src/index.ts"}; + ProcessBuilder processBuilder = new ProcessBuilder(command); + processBuilder.directory(tempDir.toFile()); + // 在临时目录下执行命令 + Process process = processBuilder.start(); + + Thread processThread = new Thread(() -> { + try { + // 读取命令输出 + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + System.out.println(line); + } + reader.close(); + // 等待命令执行完成 + int exitCode = process.waitFor(); + + System.out.println("Command exited with code " + exitCode); + } catch (InterruptedException | IOException e) { + e.printStackTrace(); + } + }); + processThread.start(); + + // Continue with other tasks here... + + try { + processThread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + File file = new File(tempDir.toFile(), "video.mp4"); + if (file.exists()) { + log.info(String.valueOf(file.length())); + //byte[] fileBytes = Files.readAllBytes(file.toPath()); + byte[] fileBytes = FileUtil.readBytes(file); + String titles = fo.getOrderId() + ".mp4"; + UploadFileDTO uploadFileDTO = new UploadFileDTO(fileBytes, "RECALL", titles); + + ResObj uploadResObj = storageFeignClient.uploadBytes(uploadFileDTO); + log.info(JSON.toJSONString(uploadResObj)); + if (uploadResObj.isOk()) { + fo.setFileId(uploadResObj.getData().getFileId()); + fo.setFileUrl(uploadResObj.getData().getFileUrl()); + fo.setUpdateTime(System.currentTimeMillis()); + recallOrderService.updateRecallOrderById(fo); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + } finally { + // 删除临时目录 + Files.walk(tempDir) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } } - @Transactional - @Override - public ResObj changeStatus(String id, String status) { - RecallOrderEntity recallOrder = new RecallOrderEntity(); - recallOrder.setId(id); - recallOrder.setStatus(status); - recallOrder.setUpdateBy(HeaderDataUtil.getUserId()); - recallOrder.setUpdateTime(System.currentTimeMillis()); - recallOrderService.updateRecallOrderById(recallOrder); - - return ResObj.ok(); - } } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java index 56308e2..1a602e7 100644 --- a/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java +++ b/afis-recall-web/src/main/java/com/wabestway/recall/trace/service/impl/RecallRecordApiServiceImpl.java @@ -1,85 +1,85 @@ package com.wabestway.recall.trace.service.impl; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.wabestway.commons.http.Paging; + +import com.alibaba.fastjson.JSON; import com.wabestway.commons.http.ResObj; -import com.wabestway.commons.enums.DataValidEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.BeanUtils; -import com.wabestway.ins.utils.UUIDUtil; +import com.wabestway.recall.trace.dto.TraceDTO; +import com.wabestway.recall.trace.entity.RecallOrderEntity; import com.wabestway.recall.trace.entity.RecallRecordEntity; -import com.wabestway.recall.trace.dto.RecallRecordDTO; -import com.wabestway.recall.trace.vo.RecallRecordVO; +import com.wabestway.recall.trace.service.RecallOrderService; +import com.wabestway.recall.trace.service.RecallRecordService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import com.wabestway.recall.trace.service.RecallRecordApiService; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.wabestway.recall.trace.util.HeaderDataUtil; + +import java.util.Optional; +import java.util.UUID; + /** - * - * * @author wangH * @company 北京华焱坤泰科技有限公司 * @Time 2023-05-06 17:37:03 */ @Service +@Slf4j public class RecallRecordApiServiceImpl implements RecallRecordApiService { @Autowired private RecallRecordService recallRecordService; + @Autowired + private RecallOrderService recallOrderService; @Override - public ResObj> list(RecallRecordDTO paramReq) { - IPage resultPage = recallRecordService.queryRecallRecordByCondition(paramReq.getPage(), paramReq.getPageSize(), paramReq); + public ResObj save(TraceDTO record) { + String orderId = record.getOrderId(); + String traceId = Optional.ofNullable(orderId) + .map(recallOrderService::queryRecallOrderByOrderId) + .map(RecallOrderEntity::getTraceId) + .orElse(UUID.randomUUID().toString().replace("-", "")); - Paging paging = new Paging(resultPage.getRecords(), paramReq.getPage(), resultPage.getSize(), resultPage.getTotal()); - return ResObj.ok(paging); - } + boolean isLastEvent = record.isLast(); - @Override - public ResObj getRecallRecord(String id) { - RecallRecordVO recallRecordVO = recallRecordService.queryRecallRecordById(id); + RecallOrderEntity order = Optional.ofNullable(orderId) + .flatMap(id -> Optional.ofNullable(recallOrderService.queryRecallOrderByOrderId(id))) + .orElseGet(() -> { + RecallOrderEntity newOrder = new RecallOrderEntity(); + newOrder.setId(UUID.randomUUID().toString().replace("-", "")); + newOrder.setOrderId(orderId); + newOrder.setTraceId(traceId); + newOrder.setProductCode(record.getProductCode()); + newOrder.setProductName(record.getProductName()); + newOrder.setCreateTime(System.currentTimeMillis()); + newOrder.setUpdateTime(System.currentTimeMillis()); + newOrder.setAppKey(record.getAppKey()); + newOrder.setArchived("0"); + newOrder.setComplete(isLastEvent ? "1" : "0"); + if (isLastEvent) { + newOrder.setCompleteDate(System.currentTimeMillis()); + } + recallOrderService.save(newOrder); - return ResObj.ok(recallRecordVO); - } + record.setTraceId(traceId); + record.setOrderId(orderId); + return newOrder; + }); + + if (isLastEvent) { + order.setComplete("1"); + order.setCompleteDate(System.currentTimeMillis()); + order.setUpdateTime(System.currentTimeMillis()); + recallOrderService.updateRecallOrderById(order); + } - @Transactional - @Override - public ResObj saveRecallRecord(RecallRecordDTO paramReq) { RecallRecordEntity recallRecord = new RecallRecordEntity(); - BeanUtils.copyProperties(paramReq, recallRecord); - - recallRecord.setId(UUIDUtil.generate());//赋值id - recallRecord.setStatus(DataValidEnum.VALID.getCode()); - recallRecord.setCreateBy(HeaderDataUtil.getUserId());//创建人 - recallRecord.setCreateTime(System.currentTimeMillis());//创建时间 - recallRecord.setUpdateBy(HeaderDataUtil.getUserId());//更新人 - recallRecord.setUpdateTime(System.currentTimeMillis());//更新时间 - + BeanUtils.copyProperties(record, recallRecord); + recallRecord.setId(UUID.randomUUID().toString().replace("-", "")); + recallRecord.setCreateTime(System.currentTimeMillis()); recallRecordService.save(recallRecord); - return ResObj.ok(); - } - @Transactional - @Override - public ResObj updateRecallRecord(RecallRecordDTO paramReq) { - RecallRecordEntity recallRecord = new RecallRecordEntity(); - BeanUtils.copyProperties(paramReq, recallRecord); - recallRecord.setUpdateBy(HeaderDataUtil.getUserId());//更新人 - recallRecord.setUpdateTime(System.currentTimeMillis());//更新时间 - recallRecordService.updateById(recallRecord); - return ResObj.ok(); - } - - @Transactional - @Override - public ResObj changeStatus(String id, String status) { - RecallRecordEntity recallRecord = new RecallRecordEntity(); - recallRecord.setId(id); - recallRecord.setStatus(status); - recallRecord.setUpdateBy(HeaderDataUtil.getUserId()); - recallRecord.setUpdateTime(System.currentTimeMillis()); - recallRecordService.updateRecallRecordById(recallRecord); - - return ResObj.ok(); + record.setEvents(null); + log.info("保存数据:{}", JSON.toJSONString(record)); + return ResObj.ok(record); } } diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/web/OrderController.java b/afis-recall-web/src/main/java/com/wabestway/recall/web/OrderController.java deleted file mode 100644 index e703799..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/web/OrderController.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.wabestway.recall.web; - -import cn.hutool.core.io.FileUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.wabestway.commons.http.ResObj; -import com.wabestway.engine.api.dfs.UploadFileDTO; -import com.wabestway.engine.api.dfs.UploadRespVO; -import com.wabestway.engine.api.feign.DfsStorageFeignClient; -import com.wabestway.recall.model.Order; -import com.wabestway.recall.model.OrderList; -import com.wabestway.recall.model.Record; -import com.wabestway.recall.repository.OrderRepository; -import com.wabestway.recall.repository.RecordRepository; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.*; -import org.springframework.web.bind.annotation.*; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; - -@Slf4j -@RestController -@RequestMapping("/order") -public class OrderController { - private final RecordRepository recordRepository; - private final OrderRepository orderRepository; - - private final DfsStorageFeignClient storageFeignClient; - - public OrderController(RecordRepository recordRepository, OrderRepository orderRepository, DfsStorageFeignClient storageFeignClient) { - this.recordRepository = recordRepository; - this.orderRepository = orderRepository; - this.storageFeignClient = storageFeignClient; - } - - @GetMapping - public Flux getAllOrders() { - return orderRepository.findAll(); - } - - @PostMapping("/list") - public Mono list(@RequestBody Order order) { - OrderList resList = new OrderList(); - List list = new ArrayList<>(); - Sort s = Sort.by("createAt").descending(); - PageRequest pageRequest = PageRequest.of(order.getPage() - 1, order.getPageSize(), s); - ExampleMatcher matcher = ExampleMatcher.matching() - .withIgnoreNullValues().withIgnorePaths("createAt", "last", "page", "pageSize"); - Example ep = Example.of(order, matcher); - Flux flux = orderRepository.findAll(ep, s); - flux.skip(pageRequest.getOffset()).limitRequest(pageRequest.getPageSize()).subscribe(list::add); - resList.setList(list); - return flux.count().flatMap(count -> { - resList.setTotal(count); - return Mono.just(ResObj.ok(resList)); - }); - } - - @PostMapping("/recallUp") - public Mono recallUp(@RequestBody Order order) { - Mono queryOrder = orderRepository.findByOrderId(order.getOrderId()); - return queryOrder.flatMap(ss -> { - ss.setStartDate(order.getStartDate()); - ss.setEndDate(order.getEndDate()); - ss.setHolderName(order.getHolderName()); - ss.setHolderPhone(order.getHolderPhone()); - ss.setSupplierName(order.getSupplierName()); - orderRepository.save(ss).subscribe(); - return Mono.just(ResObj.ok()); - }).defaultIfEmpty(ResObj.fail("订单不存在")); - } - - @PostMapping("/info/{orderId}") - public Mono findByOrderId(@PathVariable String orderId) { - Mono forder = orderRepository.findByOrderId(orderId); - return forder.flatMap(fo -> { - Flux rs = recordRepository.findAllByTraceIdOrderByCreateAtAsc(fo.getTraceId()); - Mono>> es = rs.map(rr -> rr.getEvents()).collectList(); - Mono> events = es.flatMapIterable(lists -> lists).flatMapIterable(list -> list).collectList(); - return events.flatMap(e -> { - fo.setEvents(e); - return Mono.just(ResObj.ok(fo)); - }); - }).defaultIfEmpty(ResObj.fail("订单不存在")); - } - - @GetMapping("/ffmpeg") - public Mono createMp4() { - Order order = new Order(); - order.setComplete("1"); - ExampleMatcher matcher = ExampleMatcher.matching() - .withIgnoreNullValues().withIgnorePaths("createAt", "last", "page", "pageSize"); - Example ep = Example.of(order, matcher); - Sort s = Sort.by("createAt"); - Flux flux = orderRepository.findAll(ep, s); - flux.filter(fo -> fo.getFileId() == null).subscribe(fo -> { - Mono>> es = recordRepository.findAllByTraceIdOrderByCreateAtAsc(fo.getTraceId()).map(rr -> rr.getEvents()).collectList(); - Mono> events = es.flatMapIterable(lists -> lists).flatMapIterable(list -> list).collectList(); - events.subscribe(e -> { - JSONArray array = JSONArray.parseArray(JSON.toJSONString(e)); - try { - createVideo(fo, array.toJSONString()); - } catch (IOException ex) { - ex.printStackTrace(); - } - }); - }); - return Mono.just(ResObj.ok()); - } - - void createVideo(Order fo, String jsonData) throws IOException { - - // 创建临时目录 - Path tempDir = null; - try { - tempDir = Files.createTempDirectory("ts"); - } catch (IOException e) { - e.printStackTrace(); - } - System.out.println("Created temporary directory: " + tempDir); - - try { - File tempFile = new File(tempDir.toFile(), "traces.json"); - FileWriter fw = new FileWriter(tempFile); - BufferedWriter bw = new BufferedWriter(fw); - bw.write(jsonData); - bw.flush(); - bw.close(); - fw.close(); - String[] command = {"ts-node", "/opt/trace-transform/src/index.ts"}; - ProcessBuilder processBuilder = new ProcessBuilder(command); - processBuilder.directory(tempDir.toFile()); - // 在临时目录下执行命令 - Process process = processBuilder.start(); - - Thread processThread = new Thread(() -> { - try { - // 读取命令输出 - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - String line; - while ((line = reader.readLine()) != null) { - System.out.println(line); - } - reader.close(); - // 等待命令执行完成 - int exitCode = process.waitFor(); - - System.out.println("Command exited with code " + exitCode); - } catch (InterruptedException | IOException e) { - e.printStackTrace(); - } - }); - processThread.start(); - - // Continue with other tasks here... - - try { - processThread.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - File file = new File(tempDir.toFile(), "video.mp4"); - if (file.exists()) { - log.info(String.valueOf(file.length())); - //byte[] fileBytes = Files.readAllBytes(file.toPath()); - byte[] fileBytes = FileUtil.readBytes(file); - String titles = fo.getOrderId() + ".mp4"; - UploadFileDTO uploadFileDTO = new UploadFileDTO(fileBytes, "RECALL", titles); - - ResObj uploadResObj = storageFeignClient.uploadBytes(uploadFileDTO); - log.info(JSON.toJSONString(uploadResObj)); - if (uploadResObj.isOk()) { - fo.setFileId(uploadResObj.getData().getFileId()); - fo.setFileUrl(uploadResObj.getData().getFileUrl()); - orderRepository.save(fo).subscribe(); - } - } - } catch (Exception e) { - e.printStackTrace(); - log.error(e.getMessage()); - } finally { - // 删除临时目录 -// Files.walk(tempDir) -// .sorted(Comparator.reverseOrder()) -// .map(Path::toFile) -// .forEach(File::delete); - } - } -} diff --git a/afis-recall-web/src/main/java/com/wabestway/recall/web/RecallController.java b/afis-recall-web/src/main/java/com/wabestway/recall/web/RecallController.java deleted file mode 100644 index ac0c261..0000000 --- a/afis-recall-web/src/main/java/com/wabestway/recall/web/RecallController.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.wabestway.recall.web; - -import com.alibaba.fastjson.JSON; -import com.wabestway.recall.model.Order; -import com.wabestway.recall.model.Record; -import com.wabestway.recall.model.ResObj; -import com.wabestway.recall.repository.OrderRepository; -import com.wabestway.recall.repository.RecordRepository; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -import java.util.UUID; - -@Slf4j -@RestController -@RequestMapping("/track") -public class RecallController { - private final RecordRepository recordRepository; - private final OrderRepository orderRepository; - - public RecallController(RecordRepository recordRepository, OrderRepository orderRepository) { - this.recordRepository = recordRepository; - this.orderRepository = orderRepository; - } - - @GetMapping - public Flux getAllUsers() { - return recordRepository.findAll(); - } - - @PostMapping("/save") - public Mono save(@RequestBody Record record) { - if (record.getOrderId() != null && !record.getOrderId().isEmpty()) { - Mono order = orderRepository.findByOrderId(record.getOrderId()); - order.hasElement().subscribe(exit -> { - if (!exit) { - if (record.getTraceId() != null && !record.getTraceId().isEmpty()) { - Mono tcOrder = orderRepository.findByTraceId(record.getTraceId()); - tcOrder.filter(to -> to.getId() != null).flatMap(to -> { - to.setOrderId(record.getOrderId()); - if (record.isLast()) { - to.setComplete("1"); - } - return orderRepository.save(to); - }).subscribe(); - } else { - record.setTraceId(UUID.randomUUID().toString().replace("-", "")); - Order forder = new Order(); - forder.setOrderId(record.getOrderId()); - forder.setTraceId(record.getTraceId()); - forder.setProductCode(record.getProductCode()); - forder.setProductName(record.getProductName()); - forder.setCreateAt(System.currentTimeMillis()); - forder.setAppKey(record.getAppKey()); - forder.setArchived("0"); - forder.setComplete("0"); -// forder.setHolderName("王五"); -// forder.setHolderPhone("18515064530"); -// forder.setSupplierName("阳光保险"); -// forder.setStartDate("2023-01-01"); -// forder.setEndDate("2035-01-01"); - if (record.isLast()) { - forder.setComplete("1"); - } - orderRepository.save(forder).subscribe(); - } - } else { - order.subscribe(to -> { - if (record.isLast()) { - to.setComplete("1"); - orderRepository.save(to).subscribe(); - } - }); - } - }); - } else { - if (record.getTraceId() == null || record.getTraceId().isEmpty()) { - record.setTraceId(UUID.randomUUID().toString().replace("-", "")); - Order order = new Order(); - order.setTraceId(record.getTraceId()); - order.setProductCode(record.getProductCode()); - order.setProductName(record.getProductName()); - order.setCreateAt(System.currentTimeMillis()); - order.setAppKey(record.getAppKey()); - order.setArchived("0"); - order.setComplete("0"); -// order.setHolderName("王五"); -// order.setHolderPhone("18515064530"); -// order.setSupplierName("阳光保险"); -// order.setStartDate("2023-01-01"); -// order.setEndDate("2035-01-01"); - if (record.isLast()) { - order.setComplete("1"); - } - orderRepository.save(order).subscribe(); - } - } - record.setCreateAt(System.currentTimeMillis()); - log.info("保存数据:{}", JSON.toJSONString(record)); - return recordRepository.save(record).flatMap(ss -> { - ss.setEvents(null); - return Mono.just(ResObj.ok(ss)); - }); - } -}