Browse Source

1、流向查询记录
2、记录和流向信息关联关系

zhangzhao 3 years ago
parent
commit
97be102811

+ 23 - 6
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/FlowQueryRecord.java

@@ -48,9 +48,14 @@ public class FlowQueryRecord implements Serializable {
     private String trayCode;
 
     /**
-     * 品牌
+     * 品牌code
      */
-    private String brand;
+    private String brandCode;
+
+    /**
+     * 品牌名称
+     */
+    private String brandName;
 
     /**
      * SKU SKU-CODE
@@ -73,14 +78,26 @@ public class FlowQueryRecord implements Serializable {
     private String queryAddress;
 
     /**
-     * 异常节点-流出
+     * 异常节点CODE-流出
+     */
+    private Long abnormalInNodeCode;
+
+    /**
+     * 异常节点名称-流出
      */
-    private String abnormalNodeIn;
+    private String abnormalInNodeName;
+
+
+    /**
+     * 异常节点CODE-流出
+     */
+    private Long abnormalOutNodeCode;
+
 
     /**
-     * 异常节点-流入
+     * 异常节点名称-流出
      */
-    private String abnormalNodeOut;
+    private String abnormalOutNodeName;
 
     /**
      * 创建时间

+ 3 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/FlowQueryRecordFlow.java

@@ -28,6 +28,9 @@ public class FlowQueryRecordFlow implements Serializable {
     @Schema(name = "流向查询记录id")
     private Long flowQueryRecordId;
 
+    @Schema(name = "节点标识")
+    private Long nodeId;
+
     @Schema(name = "节点名称")
     private String nodeName;
 

+ 12 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/FlowQueryRecordFlowMapper.java

@@ -1,7 +1,11 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.FlowQueryRecordFlow;
+import com.abi.qms.platform.dao.entity.InspectionCaseFlow;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 流向查询记录-流向关联 Mapper接口
@@ -11,4 +15,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface FlowQueryRecordFlowMapper extends BaseMapper<FlowQueryRecordFlow> {
 
+    /**
+     * 批量保存
+     * @param flowQueryRecordFlows 流向信息列表
+     */
+    void insertBatch(@Param("list") List<FlowQueryRecordFlow> flowQueryRecordFlows);
+
+
+
 }

+ 31 - 8
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ListFlowQueryRecordVO.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.ToString;
 
+import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
@@ -46,11 +47,18 @@ public class ListFlowQueryRecordVO implements Serializable {
     @ApiModelProperty(value = "托盘码")
     private String trayCode;
 
+
     /**
      * 品牌
      */
-    @ApiModelProperty(value = "品牌")
-    private String brand;
+    @ApiModelProperty(value = "品牌CODE", required = true)
+    private String brandCode;
+
+    /**
+     * 品牌
+     */
+    @ApiModelProperty(value = "品牌名称", required = true)
+    private String brandName;
 
     /**
      * SKU SKU-NAME
@@ -76,17 +84,32 @@ public class ListFlowQueryRecordVO implements Serializable {
     @ApiModelProperty(value = "查询地址")
     private String queryAddress;
 
+
+    /**
+     * 异常节点CODE-流出
+     */
+    @ApiModelProperty(value = "异常节点CODE-流入 流向状态为异常时必传")
+    private Long abnormalInNodeCode;
+
     /**
-     * 异常节点-流出
+     * 异常节点名称-流出
      */
-    @ApiModelProperty(value = "异常节点-流出")
-    private String abnormalNodeIn;
+    @ApiModelProperty(value = "异常节点名称-流入 流向状态为异常时必传")
+    private String abnormalInNodeName;
+
+
+    /**
+     * 异常节点CODE-流出
+     */
+    @ApiModelProperty(value = "异常节点CODE-流出 流向状态为异常时必传")
+    private Long abnormalOutNodeCode;
+
 
     /**
-     * 异常节点-流入
+     * 异常节点名称-流出
      */
-    @ApiModelProperty(value = "异常节点-流入")
-    private String abnormalNodeOut;
+    @ApiModelProperty(value = "异常节点名称-流出 流向状态为异常时必传")
+    private String abnormalOutNodeName;
 
     /**
      * 创建时间

+ 72 - 11
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/AddFlowQueryRecordReq.java

@@ -1,11 +1,17 @@
 package com.abi.qms.platform.dto.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.experimental.Accessors;
 import org.jetbrains.annotations.NotNull;
 
 import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author: zhang zhao
@@ -45,9 +51,16 @@ public class AddFlowQueryRecordReq {
     /**
      * 品牌
      */
-    @ApiModelProperty(value = "品牌", required = true)
+    @ApiModelProperty(value = "品牌CODE", required = true)
     @NotBlank
-    private String brand;
+    private String brandCode;
+
+    /**
+     * 品牌
+     */
+    @ApiModelProperty(value = "品牌名称", required = true)
+    @NotBlank
+    private String brandName;
 
     /**
      * SKU-CODE
@@ -70,23 +83,71 @@ public class AddFlowQueryRecordReq {
     @ApiModelProperty(value = "查询地址 查询平台为微信时必传")
     private String queryAddress;
 
+
+
+    /**
+     * 异常节点CODE-流出
+     */
+    @ApiModelProperty(value = "异常节点CODE-流入 流向状态为异常时必传")
+    private Long abnormalInNodeCode;
+
+    /**
+     * 异常节点名称-流出
+     */
+    @ApiModelProperty(value = "异常节点名称-流入 流向状态为异常时必传")
+    private String abnormalInNodeName;
+
+
     /**
-     * 查询请求IP
+     * 异常节点CODE-流出
      */
-    @ApiModelProperty(value = "查询请求IP 查询平台为后台时必传")
-    private String queryIp;
+    @ApiModelProperty(value = "异常节点CODE-流出 流向状态为异常时必传")
+    private Long abnormalOutNodeCode;
+
 
     /**
-     * 异常节点-流出
+     * 异常节点名称-流出
      */
-    @ApiModelProperty(value = "异常节点-流出 流向状态为异常时必传")
-    private String abnormalNodeIn;
+    @ApiModelProperty(value = "异常节点名称-流出 流向状态为异常时必传")
+    private String abnormalOutNodeName;
+
 
     /**
-     * 异常节点-流入
+     * 流向信息列表
      */
-    @ApiModelProperty(value = "异常节点-流入 流向状态为异常时必传")
-    private String abnormalNodeOut;
+    @ApiModelProperty(value = "流向信息列表")
+    private List<FlowBean> flowList;
+
+    /**
+     * 流向信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class FlowBean implements Serializable {
+        @Schema(name = "节点标识")
+        private Long nodeId;
+
+        @Schema(name = "节点名称")
+        private String nodeName;
+
+        @Schema(name = "节点状态")
+        private Integer nodeStatus;
+
+        @Schema(name = "是否拆垛")
+        private Integer isSplit;
+
+        @Schema(name = "拆垛托盘码")
+        private String splitStackCode;
+
+        @Schema(name = "入库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime inStorageTime;
+
+        @Schema(name = "出库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime outStorageTime;
+    }
+
 
 
 }

+ 8 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetBoxCodeReq.java

@@ -1,5 +1,7 @@
 package com.abi.qms.platform.dto.req;
 
+import com.abi.qms.platform.dao.enums.FlowQueryTypeEnum;
+import io.swagger.models.auth.In;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -18,7 +20,13 @@ import java.io.Serializable;
 @AllArgsConstructor
 public class GetBoxCodeReq implements Serializable {
 
+    @Schema(name = "查询类型")
+    @NotNull(message = "查询类型为空")
+    private Integer queryType;
+
     @Schema(name = "箱码")
     @NotNull(message = "箱码为空")
     private String boxCode;
+
+
 }

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetBoxCodeRes.java

@@ -40,7 +40,7 @@ public class GetBoxCodeRes implements Serializable {
     @Accessors(chain = true)
     public static class SkuBean implements Serializable {
         @Schema(name = "品牌编码")
-        private Long brandCode;
+        private String brandCode;
 
         @Schema(name = "品牌名称")
         private String brandName;

+ 9 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/FlowQueryService.java

@@ -11,7 +11,15 @@ import com.abi.qms.platform.dto.res.GetBoxCodeRes;
  */
 public interface FlowQueryService {
     /**
-     * 箱码查询
+     * 流向查询
      */
     GetBoxCodeRes boxCode(GetBoxCodeReq getBoxCodeReq);
+
+
+    /**
+     * 箱码查询
+     * @param boxCode 箱码
+     * @return
+     */
+    GetBoxCodeRes getFlowInfoByBoxCode(String boxCode);
 }

+ 30 - 39
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/FlowQueryRecordServiceImpl.java

@@ -4,9 +4,11 @@ package com.abi.qms.platform.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.abi.qms.platform.dao.entity.FlowQueryRecord;
+import com.abi.qms.platform.dao.entity.FlowQueryRecordFlow;
 import com.abi.qms.platform.dao.enums.FlowQueryTypeEnum;
 import com.abi.qms.platform.dao.enums.FlowStatusEnum;
 import com.abi.qms.platform.dao.enums.ReqChannelTypeEnum;
+import com.abi.qms.platform.dao.mapper.FlowQueryRecordFlowMapper;
 import com.abi.qms.platform.dao.mapper.FlowQueryRecordMapper;
 import com.abi.qms.platform.dao.vo.result.FlowQueryRecordInfoVo;
 import com.abi.qms.platform.dao.vo.result.ListFlowQueryRecordVO;
@@ -16,10 +18,12 @@ import com.abi.qms.platform.dto.res.GetFlowQueryRecordInfo;
 import com.abi.qms.platform.dto.res.PageListFlowQueryRecordRes;
 import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.infrastructure.util.PageUtil;
+import com.abi.qms.platform.service.FlowQueryRecordFlowService;
 import com.abi.qms.platform.service.IFlowQueryRecordService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -36,6 +40,9 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
     @Autowired
     private FlowQueryRecordMapper flowQueryRecordMapper;
 
+    @Autowired
+    private FlowQueryRecordFlowMapper queryRecordFlowMapper;
+
 
     /**
      * 分页查询列表
@@ -84,6 +91,7 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
      * @param addReq 新增请求
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void addFlowQueryRecord(AddFlowQueryRecordReq addReq) {
         //校验请求内容
         validatedFlowQueryRecordReq(addReq);
@@ -92,21 +100,28 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
         FlowQueryRecord flowQueryRecord = new FlowQueryRecord();
         BeanUtil.copyProperties(addReq, flowQueryRecord);
 
-        //PC查询地址信息处理
-        Integer queryPlatform = addReq.getQueryPlatform();
-        String queryAddress = addReq.getQueryAddress();
-        if (ReqChannelTypeEnum.BACKSTAGE.is(queryPlatform)) {
-            //根据ip查询地址
-            String ip = addReq.getQueryIp();
-            queryAddress = this.getAddressByIP(ip);
-        }
-        flowQueryRecord.setQueryAddress(queryAddress);
-
         //保存信息
         flowQueryRecordMapper.insert(flowQueryRecord);
 
+        //保存关联流向信息
+        Long flowQueryRecordId = flowQueryRecord.getId();
+        List<AddFlowQueryRecordReq.FlowBean> flowList = addReq.getFlowList();
+
+        //转换类型
+        List<FlowQueryRecordFlow> flowQueryRecordFlows = flowList.stream()
+                .parallel().map(s -> {
+                    FlowQueryRecordFlow flowQueryRecordFlow = new FlowQueryRecordFlow();
+                    BeanUtil.copyProperties(s, flowQueryRecordFlow);
+                    flowQueryRecordFlow.setFlowQueryRecordId(flowQueryRecordId);
+                    return flowQueryRecordFlow;
+                }).collect(Collectors.toList());
+
+        queryRecordFlowMapper.insertBatch(flowQueryRecordFlows);
+
     }
 
+
+
     /**
      * 根据ID获取记录详情
      *
@@ -131,16 +146,6 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
     }
 
 
-    /**
-     * 根据IP查询地址信息
-     *
-     * @param ip 请求IP
-     * @return ip对应地址信息
-     */
-    private String getAddressByIP(String ip) {
-        //TODO   根据IP查询地址
-        return "江苏南京";
-    }
 
 
     /**
@@ -155,7 +160,7 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
 
         //查询平台
         Integer queryPlatform = addReq.getQueryPlatform();
-        AssertUtil.isNull(flowStatus, "请指明 查询平台!");
+        AssertUtil.isNull(queryPlatform, "请指明 查询平台!");
 
         //查询类型
         Integer queryType = addReq.getQueryType();
@@ -177,27 +182,13 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
 
         //异常节点
         if (FlowStatusEnum.ABNORMAL.is(flowStatus)) {
-            String nodeIn = addReq.getAbnormalNodeIn();
-            AssertUtil.isMeets(nodeIn, StrUtil::isNotBlank, "流向状态为异常时  必须指明异常流入节点!");
+            Long nodeIn = addReq.getAbnormalInNodeCode();
+            AssertUtil.isNull(nodeIn, "流向状态为异常时  必须指明异常流入节点!");
 
-            String nodeOut = addReq.getAbnormalNodeOut();
-            AssertUtil.isMeets(nodeOut, StrUtil::isNotBlank, "流向状态为异常时  必须指明异常流出节点!");
+            Long nodeOut = addReq.getAbnormalOutNodeCode();
+            AssertUtil.isNull(nodeOut,  "流向状态为异常时  必须指明异常流出节点!");
         }
 
-        //查询地址
-        if (ReqChannelTypeEnum.WECHAT.is(queryPlatform)) {
-            String queryAddress = addReq.getQueryAddress();
-            AssertUtil.isMeets(queryAddress, StrUtil::isNotBlank, "微信查询 必须指明请求地址!");
-        }
-
-
-        //查询请求IP
-        if (ReqChannelTypeEnum.BACKSTAGE.is(queryPlatform)) {
-            String queryIp = addReq.getQueryIp();
-            AssertUtil.isMeets(queryIp, StrUtil::isNotBlank, "后台查询 必须指明请求IP!");
-        }
-
-
     }
 
 

+ 108 - 8
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/FlowQueryServiceImpl.java

@@ -1,15 +1,24 @@
 package com.abi.qms.platform.service.impl;
 
+import cn.hutool.core.map.MapUtil;
+import com.abi.qms.platform.dao.enums.FlowQueryTypeEnum;
+import com.abi.qms.platform.dao.enums.FlowStatusEnum;
+import com.abi.qms.platform.dao.enums.ReqChannelTypeEnum;
+import com.abi.qms.platform.dto.req.AddFlowQueryRecordReq;
 import com.abi.qms.platform.dto.req.GetBoxCodeReq;
 import com.abi.qms.platform.dto.res.GetBoxCodeRes;
+import com.abi.qms.platform.dto.res.ListQrFormatRes;
+import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.service.FlowQueryService;
+import com.abi.qms.platform.service.IFlowQueryRecordService;
+import com.abi.task.common.utils.PojoConverterUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 箱码垛码查询 Service业务层处理
@@ -20,16 +29,44 @@ import java.util.List;
 @Service
 @Slf4j
 public class FlowQueryServiceImpl implements FlowQueryService {
+
+
+    @Autowired
+    private IFlowQueryRecordService flowQueryRecordService;
+
+
     /**
      * 箱码查询
      * TODO 测试使用,待流向查询接口完成后,根据实际情况调整结构
      */
     @Override
-    public GetBoxCodeRes boxCode(GetBoxCodeReq getBoxCodeReq) {
+    public GetBoxCodeRes boxCode(GetBoxCodeReq req) {
+        Integer queryType = req.getQueryType();
+        GetBoxCodeRes res = null;
+        //箱码查询
+        if(FlowQueryTypeEnum.BOX_CODE.is(queryType)){
+            String boxCode = req.getBoxCode();
+            res= this.getFlowInfoByBoxCode(boxCode);
+        }
+
+        AssertUtil.isNull(res,"为查询到流向信息!");
+        //保存查询记录
+        this.saveQueryRecord(res, req);
+        return res;
+    }
+
+
+    /**
+     * 查询流向信息
+     * @param boxCode 箱码
+     * @return
+     */
+    @Override
+    public GetBoxCodeRes getFlowInfoByBoxCode(String boxCode){
         GetBoxCodeRes res = new GetBoxCodeRes();
 
         GetBoxCodeRes.SkuBean sku = new GetBoxCodeRes.SkuBean()
-                .setBrandCode(320258L)
+                .setBrandCode("01AAHF")
                 .setBrandName("百威")
                 .setSkuId("000000000000025000")
                 .setSkuName("百威9.7度500ML1X18纸箱听装-温州版")
@@ -90,7 +127,7 @@ public class FlowQueryServiceImpl implements FlowQueryService {
         Collections.reverse(flowList);
 
         GetBoxCodeRes.BoxStackBean boxStack = new GetBoxCodeRes.BoxStackBean()
-                .setBoxCode(getBoxCodeReq.getBoxCode())
+                .setBoxCode(boxCode)
                 .setInvisibleCode("adb25416313")
                 .setOriginalStackCode("200700048457ADB2")
                 .setOriginalStackTime(LocalDateTime.of(2020, 12, 26, 11, 12, 38))
@@ -98,13 +135,76 @@ public class FlowQueryServiceImpl implements FlowQueryService {
                 .setNewestStackTime(LocalDateTime.of(2021, 1, 1, 11, 12, 38));
 
 
-
         res.setSku(sku);
         res.setInspectionCase(inspectionCase);
         res.setFlowList(flowList);
         res.setBoxStack(boxStack);
+        return res;
+    }
 
 
-        return res;
+
+
+    /**
+     * 保存查询记录
+     *
+     * @param res 查询结果
+     * @param req 查询请求
+     */
+    private void saveQueryRecord(GetBoxCodeRes res, GetBoxCodeReq req) {
+
+        //判断流向状态
+        Map<Integer, GetBoxCodeRes.FlowBean> abnormalNodeMap = res.getFlowList()
+                .stream()
+                .filter(s -> !(s.getNodeStatus().equals(1)))
+                .collect(Collectors.toMap(GetBoxCodeRes.FlowBean::getAbnormalType, flowBean -> flowBean));
+
+
+        FlowStatusEnum flowStatus = MapUtil.isEmpty(abnormalNodeMap)  ? FlowStatusEnum.ABNORMAL : FlowStatusEnum.NORMAL;
+
+        //查询类型
+        Integer queryType = req.getQueryType();
+        AddFlowQueryRecordReq addReq = new AddFlowQueryRecordReq(flowStatus.getCode(), queryType);
+
+        //  箱码 查询类型为箱码时必传
+        addReq.setBoxCode(req.getBoxCode());
+        addReq.setTrayCode("");
+
+        //品牌
+        addReq.setBrandCode(res.getSku().getBrandCode());
+        addReq.setBrandName(res.getSku().getBrandName());
+
+        //sku
+        addReq.setSkuCode(res.getSku().getSkuId());
+
+        //后台查询
+        addReq.setQueryPlatform(ReqChannelTypeEnum.BACKSTAGE.getCode());
+
+        //后台查询没有地址
+        addReq.setQueryAddress("");
+
+        //abnormalNodeIn
+        GetBoxCodeRes.FlowBean abnormalNodeIn = abnormalNodeMap.get(1);
+        if(Objects.nonNull(abnormalNodeIn)){
+            addReq.setAbnormalInNodeCode(abnormalNodeIn.getNodeId());
+            addReq.setAbnormalInNodeName(abnormalNodeIn.getNodeName());
+        }
+
+
+        //abnormalNodeOut
+        GetBoxCodeRes.FlowBean abnormalNodeOut = abnormalNodeMap.get(2);
+        if(Objects.nonNull(abnormalNodeOut)) {
+            addReq.setAbnormalOutNodeCode(abnormalNodeOut.getNodeId());
+            addReq.setAbnormalOutNodeName(abnormalNodeOut.getNodeName());
+        }
+
+        //流向信息列表
+        List<GetBoxCodeRes.FlowBean> flowList = res.getFlowList();
+        List<AddFlowQueryRecordReq.FlowBean> flowBeans = PojoConverterUtils.copyList(flowList, AddFlowQueryRecordReq.FlowBean.class);
+        addReq.setFlowList(flowBeans);
+
+        flowQueryRecordService.addFlowQueryRecord(addReq);
     }
+
+
 }

+ 1 - 2
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/InspectionCaseServiceImpl.java

@@ -342,8 +342,7 @@ public class InspectionCaseServiceImpl implements IInspectionCaseService {
     private List<GetBoxCodeRes> getFlowInfoByBoxCodeList(List<String> boxCodeList) {
         List<GetBoxCodeRes> getBoxCodeResList = new ArrayList<>();
         boxCodeList.forEach(s -> {
-            GetBoxCodeReq boxCodeReq = new GetBoxCodeReq(s);
-            GetBoxCodeRes res = flowQueryService.boxCode(boxCodeReq);
+            GetBoxCodeRes res = flowQueryService.getFlowInfoByBoxCode(s);
             AssertUtil.isNull(res, "案件新增失败!箱码:" + s + ",失败原因:未查询到此箱码信息!");
             getBoxCodeResList.add(res);
         });

+ 39 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/FlowQueryRecordFlowMapper.xml

@@ -20,5 +20,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="isDelete" column="is_delete"/>
     </resultMap>
 
+    <sql id="TableName">
+        `flow_query_record_flow`
+    </sql>
+
+
+
+
+
+    <!--  批量保存  -->
+    <insert id="insertBatch" parameterType="java.util.List">
+        INSERT INTO
+        <include refid="TableName"/>
+        (
+        `flow_query_record_id`,
+        `node_id`,
+        `node_name`,
+        `node_status`,
+        `is_split`,
+        `split_stack_code`,
+        `in_storage_time`,
+        `out_storage_time`
+        )
+        VALUES
+        <foreach item="item" index="index" collection="list" separator=",">
+            (
+            #{item.inspectionCaseId},
+            #{item.nodeId},
+            #{item.nodeName},
+            #{item.nodeStatus},
+            #{item.abnormalType},
+            #{item.isSplit},
+            #{item.splitStackCode},
+            #{item.inStorageTime},
+            #{item.outStorageTime}
+            )
+        </foreach>
+    </insert>
+
+
 
 </mapper>

+ 18 - 9
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/FlowQueryRecordMapper.xml

@@ -9,13 +9,16 @@
         <result property="flowStatus" column="flow_status"/>
         <result property="boxCode" column="box_code"/>
         <result property="trayCode" column="tray_code"/>
-        <result property="brand" column="brand"/>
+        <result property="brandCode" column="brand_code"/>
+        <result property="brandName" column="brand_name"/>
         <result property="skuCode" column="sku_code"/>
         <result property="queryType" column="query_type"/>
         <result property="queryPlatform" column="query_platform"/>
         <result property="queryAddress" column="query_address"/>
-        <result property="abnormalNodeIn" column="abnormal_node_in"/>
-        <result property="abnormalNodeOut" column="abnormal_node_out"/>
+        <result property="abnormalInNodeCode" column="abnormal_in_node_code"/>
+        <result property="abnormalInNodeName" column="abnormal_in_node_name"/>
+        <result property="abnormalOutNodeCode" column="abnormal_out_node_code"/>
+        <result property="abnormalOutNodeName" column="abnormal_out_node_name"/>
         <result property="createTime" column="create_time"/>
         <result property="createBy" column="create_by"/>
         <result property="updateTime" column="update_time"/>
@@ -37,13 +40,16 @@
         <result property="flowStatus" column="flow_status"/>
         <result property="boxCode" column="box_code"/>
         <result property="trayCode" column="tray_code"/>
-        <result property="brand" column="brand"/>
+        <result property="brandCode" column="brand_code"/>
+        <result property="brandName" column="brand_name"/>
         <result property="skuName" column="sku_name"/>
         <result property="queryType" column="query_type"/>
         <result property="queryPlatform" column="query_platform"/>
         <result property="queryAddress" column="query_address"/>
-        <result property="abnormalNodeIn" column="abnormal_node_in"/>
-        <result property="abnormalNodeOut" column="abnormal_node_out"/>
+        <result property="abnormalInNodeCode" column="abnormal_in_node_code"/>
+        <result property="abnormalInNodeName" column="abnormal_in_node_name"/>
+        <result property="abnormalOutNodeCode" column="abnormal_out_node_code"/>
+        <result property="abnormalOutNodeName" column="abnormal_out_node_name"/>
         <result property="queryTime" column="create_time"/>
         <result property="queryUserID" column="create_by"/>
         <result property="queryUserName" column="user_name"/>
@@ -58,12 +64,15 @@
         `box_code`,
         `tray_code`,
         `sku_code`,
-        `brand`,
+        `brand_code`,
+        `brand_name`,
         `query_type`,
         `query_platform`,
         `query_address`,
-        `abnormal_node_in`,
-        `abnormal_node_out`,
+        `abnormal_in_node_code`,
+        `abnormal_in_node_name`,
+        `abnormal_out_node_code`,
+        `abnormal_out_node_name`,
         `create_time`,
         `create_by`
         FROM