فهرست منبع

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

zhangzhao 3 سال پیش
والد
کامیت
de196f70e4

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

@@ -60,7 +60,7 @@ public class FlowQueryRecord implements Serializable {
     /**
      * SKU SKU-CODE
      */
-    private Long skuCode;
+    private String skuCode;
 
     /**
      * 查询类型 1-箱码查询 2-托盘码查询

+ 14 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/FlowQueryRecordInfoVo.java

@@ -75,7 +75,20 @@ public class FlowQueryRecordInfoVo implements Serializable {
      * 品牌
      */
     @ApiModelProperty(value = "品牌")
-    private String brand;
+    private String brandCode;
+
+    /**
+     * 品牌
+     */
+    @ApiModelProperty(value = "品牌")
+    private String brandName;
+
+
+    /**
+     * SKU信息
+     */
+    @ApiModelProperty(value = "SKU信息")
+    private String skuCode;
 
     /**
      * SKU信息

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

@@ -112,12 +112,48 @@ public class AddFlowQueryRecordReq {
     private String abnormalOutNodeName;
 
 
+    /**
+     * 箱垛信息
+     */
+    @ApiModelProperty(value = "箱垛信息")
+    private BoxStackBean boxStackInfo;
+
     /**
      * 流向信息列表
      */
     @ApiModelProperty(value = "流向信息列表")
     private List<FlowBean> flowList;
 
+
+    /**
+     * 箱垛信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class BoxStackBean implements Serializable {
+        @Schema(name = "箱码")
+        private String boxCode;
+
+        @Schema(name = "隐形码")
+        private String invisibleCode;
+
+        @Schema(name = "原始托盘码")
+        private String originalStackCode;
+
+        @Schema(name = "原始堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime originalStackTime;
+
+        @Schema(name = "最新托盘码")
+        private String newestStackCode;
+
+        @Schema(name = "最新堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime newestStackTime;
+    }
+
+
+
     /**
      * 流向信息
      */

+ 104 - 17
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetFlowQueryRecordInfo.java

@@ -1,10 +1,15 @@
 package com.abi.qms.platform.dto.res;
 
+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 java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author: zhang zhao
@@ -28,17 +33,6 @@ public class GetFlowQueryRecordInfo implements Serializable {
     @ApiModelProperty(value = "流向状态")
     private String flowStatus;
 
-    /**
-     * 箱码
-     */
-    @ApiModelProperty(value = "箱码")
-    private String boxCode;
-
-    /**
-     * 托盘码
-     */
-    @ApiModelProperty(value = "托盘码")
-    private String trayCode;
 
     /**
      * 查询平台
@@ -64,19 +58,112 @@ public class GetFlowQueryRecordInfo implements Serializable {
     @ApiModelProperty(value = "查询时间")
     private String queryTime;
 
+
+    /**
+     * SKU
+     */
+    @ApiModelProperty(value = "SKU信息")
+    private SkuBean skuInfo;
+
+
+    /**
+     * 箱垛信息
+     */
+    @ApiModelProperty(value = "箱垛信息")
+    private BoxStackBean boxStack;
+
+
     /**
-     * 品牌
+     * 流向信息
      */
-    @ApiModelProperty(value = "品牌")
-    private String brand;
+    @ApiModelProperty(value = "流向信息列表")
+    private List<FlowBean> flowInfoList;
 
     /**
      * SKU信息
      */
-    @ApiModelProperty(value = "SKU信息")
-    private String skuName;
+    @Data
+    @Accessors(chain = true)
+    public static class SkuBean implements Serializable {
+        @Schema(name = "品牌编码")
+        private String brandCode;
+
+        @Schema(name = "品牌名称")
+        private String brandName;
+
+        @Schema(name = "SKUId")
+        private String skuId;
+
+        @Schema(name = "SKU名称")
+        private String skuName;
+
+        @Schema(name = "生产批次")
+        private String productionBatch;
+
+        @Schema(name = "生产日期")
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        private LocalDateTime productionTime;
+    }
+
+
+    /**
+     * 箱垛信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class BoxStackBean implements Serializable {
+        @Schema(name = "箱码")
+        private String boxCode;
+
+        @Schema(name = "隐形码")
+        private String invisibleCode;
+
+        @Schema(name = "原始托盘码")
+        private String originalStackCode;
+
+        @Schema(name = "原始堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime originalStackTime;
+
+        @Schema(name = "最新托盘码")
+        private String newestStackCode;
+
+        @Schema(name = "最新堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime newestStackTime;
+    }
+
+
+    /**
+     * 流向信息
+     */
+    @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;
+    }
 
-    //TODO  流向信息 箱垛信息暂无
 
 }

+ 29 - 8
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/PageListFlowQueryRecordRes.java

@@ -58,11 +58,18 @@ public class PageListFlowQueryRecordRes extends PageResp implements Serializable
         @ApiModelProperty(value = "托盘码")
         private String trayCode;
 
+
         /**
          * 品牌
          */
-        @ApiModelProperty(value = "品牌")
-        private String brand;
+        @ApiModelProperty(value = "品牌Code")
+        private String brandCode;
+
+        /**
+         * 品牌
+         */
+        @ApiModelProperty(value = "品牌名称")
+        private String brandName;
 
         /**
          * SKU SKU-NAME
@@ -89,16 +96,30 @@ public class PageListFlowQueryRecordRes extends PageResp implements Serializable
         private String queryAddress;
 
         /**
-         * 异常节点-流出
+         * 异常节点CODE-流出
          */
-        @ApiModelProperty(value = "异常节点-流出")
-        private String abnormalNodeIn;
+        @ApiModelProperty(value = "异常节点CODE-流入 流向状态为异常时必传")
+        private Long abnormalInNodeCode;
+
+        /**
+         * 异常节点名称-流出
+         */
+        @ApiModelProperty(value = "异常节点名称-流入 流向状态为异常时必传")
+        private String abnormalInNodeName;
+
+
+        /**
+         * 异常节点CODE-流出
+         */
+        @ApiModelProperty(value = "异常节点CODE-流出 流向状态为异常时必传")
+        private Long abnormalOutNodeCode;
+
 
         /**
-         * 异常节点-流入
+         * 异常节点名称-流出
          */
-        @ApiModelProperty(value = "异常节点-流入")
-        private String abnormalNodeOut;
+        @ApiModelProperty(value = "异常节点名称-流出 流向状态为异常时必传")
+        private String abnormalOutNodeName;
 
         /**
          * 创建时间

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

@@ -4,10 +4,12 @@ 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.FlowQueryRecordBoxStack;
 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.FlowQueryRecordBoxStackMapper;
 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;
@@ -18,8 +20,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.FlowQueryRecordBoxStackService;
 import com.abi.qms.platform.service.FlowQueryRecordFlowService;
 import com.abi.qms.platform.service.IFlowQueryRecordService;
+import com.abi.task.common.utils.PojoConverterUtils;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,6 +49,9 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
     @Autowired
     private FlowQueryRecordFlowMapper queryRecordFlowMapper;
 
+    @Autowired
+    private FlowQueryRecordBoxStackMapper queryRecordBoxStackMapper;
+
 
     /**
      * 分页查询列表
@@ -95,16 +104,23 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
     public void addFlowQueryRecord(AddFlowQueryRecordReq addReq) {
         //校验请求内容
         validatedFlowQueryRecordReq(addReq);
-
         //值拷贝
         FlowQueryRecord flowQueryRecord = new FlowQueryRecord();
         BeanUtil.copyProperties(addReq, flowQueryRecord);
-
         //保存信息
         flowQueryRecordMapper.insert(flowQueryRecord);
 
-        //保存关联流向信息
         Long flowQueryRecordId = flowQueryRecord.getId();
+
+        //保存箱垛信息
+        AddFlowQueryRecordReq.BoxStackBean boxStackInfo = addReq.getBoxStackInfo();
+        FlowQueryRecordBoxStack flowQueryRecordBoxStack = new FlowQueryRecordBoxStack();
+        BeanUtil.copyProperties(boxStackInfo,flowQueryRecordBoxStack);
+        flowQueryRecordBoxStack.setFlowQueryRecordId(flowQueryRecordId);
+        queryRecordBoxStackMapper.insert(flowQueryRecordBoxStack);
+
+        //保存关联流向信息
+
         List<AddFlowQueryRecordReq.FlowBean> flowList = addReq.getFlowList();
 
         //转换类型
@@ -118,8 +134,8 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
 
         queryRecordFlowMapper.insertBatch(flowQueryRecordFlows);
 
-    }
 
+    }
 
 
     /**
@@ -142,12 +158,33 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
         String flowStatusName = FlowStatusEnum.getName(flowStatus);
         getFlowQueryRecordInfo.setFlowStatus(flowStatusName);
 
+        //SKU
+        GetFlowQueryRecordInfo.SkuBean skuBean = new GetFlowQueryRecordInfo.SkuBean();
+        skuBean.setSkuId(flowQueryRecordInfoVo.getSkuCode());
+        skuBean.setSkuName(flowQueryRecordInfoVo.getSkuName());
+        skuBean.setBrandCode(flowQueryRecordInfoVo.getBrandCode());
+        skuBean.setBrandName(flowQueryRecordInfoVo.getBrandName());
+        getFlowQueryRecordInfo.setSkuInfo(skuBean);
+
+        //箱垛信息
+        QueryWrapper<FlowQueryRecordBoxStack> boxStackQW=new QueryWrapper<>();
+        boxStackQW.eq("flow_query_record_id",id);
+        FlowQueryRecordBoxStack flowQueryRecordBoxStack = queryRecordBoxStackMapper.selectOne(boxStackQW);
+        GetFlowQueryRecordInfo.BoxStackBean boxStackBean = new GetFlowQueryRecordInfo.BoxStackBean();
+        BeanUtil.copyProperties(flowQueryRecordBoxStack,boxStackBean);
+        getFlowQueryRecordInfo.setBoxStack(boxStackBean);
+
+        //流向信息
+        QueryWrapper<FlowQueryRecordFlow> flowQueryRecordFlowQW=new QueryWrapper<>();
+        flowQueryRecordFlowQW.eq("flow_query_record_id",id);
+        List<FlowQueryRecordFlow> flowQueryRecordFlows = queryRecordFlowMapper.selectList(flowQueryRecordFlowQW);
+        List<GetFlowQueryRecordInfo.FlowBean> flowBeans = PojoConverterUtils.copyList(flowQueryRecordFlows, GetFlowQueryRecordInfo.FlowBean.class);
+        getFlowQueryRecordInfo.setFlowInfoList(flowBeans);
+
         return getFlowQueryRecordInfo;
     }
 
 
-
-
     /**
      * 校验-新增流向查询记录请求内容
      *
@@ -186,7 +223,7 @@ public class FlowQueryRecordServiceImpl implements IFlowQueryRecordService {
             AssertUtil.isNull(nodeIn, "流向状态为异常时  必须指明异常流入节点!");
 
             Long nodeOut = addReq.getAbnormalOutNodeCode();
-            AssertUtil.isNull(nodeOut,  "流向状态为异常时  必须指明异常流出节点!");
+            AssertUtil.isNull(nodeOut, "流向状态为异常时  必须指明异常流出节点!");
         }
 
     }

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

@@ -1,14 +1,17 @@
 package com.abi.qms.platform.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.json.JSONUtil;
+import com.abi.qms.platform.dao.entity.UserInfo;
 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.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.FlowQueryService;
 import com.abi.qms.platform.service.IFlowQueryRecordService;
 import com.abi.task.common.utils.PojoConverterUtils;
@@ -34,7 +37,8 @@ public class FlowQueryServiceImpl implements FlowQueryService {
     @Autowired
     private IFlowQueryRecordService flowQueryRecordService;
 
-
+    @Autowired
+    private UserUtil userUtil;
     /**
      * 箱码查询
      * TODO 测试使用,待流向查询接口完成后,根据实际情况调整结构
@@ -152,58 +156,69 @@ public class FlowQueryServiceImpl implements FlowQueryService {
      * @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());
+        try {
+
+            //判断流向状态
+            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());
+            }
+            //箱垛信息
+            GetBoxCodeRes.BoxStackBean boxStack = res.getBoxStack();
+            AddFlowQueryRecordReq.BoxStackBean boxStackBean = new AddFlowQueryRecordReq.BoxStackBean();
+            BeanUtil.copyProperties(boxStack,boxStackBean);
+            addReq.setBoxStackInfo(boxStackBean);
+
+            //流向信息列表
+            List<GetBoxCodeRes.FlowBean> flowList = res.getFlowList();
+            List<AddFlowQueryRecordReq.FlowBean> flowBeans = PojoConverterUtils.copyList(flowList, AddFlowQueryRecordReq.FlowBean.class);
+            addReq.setFlowList(flowBeans);
+
+            flowQueryRecordService.addFlowQueryRecord(addReq);
+        }catch (Exception ex){
+            //获取当前登录的用户
+            UserInfo user = userUtil.getUser();
+            log.error("查询流向信息记录报错失败!,查询人:【{}】,查询结果:【{}】,异常:{}",user.getUserName(),JSONUtil.toJsonStr(res),ex.getMessage());
         }
-
-
-        //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/resources/dao/mapper/FlowQueryRecordFlowMapper.xml

@@ -45,11 +45,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         VALUES
         <foreach item="item" index="index" collection="list" separator=",">
             (
-            #{item.inspectionCaseId},
+            #{item.flowQueryRecordId},
             #{item.nodeId},
             #{item.nodeName},
             #{item.nodeStatus},
-            #{item.abnormalType},
             #{item.isSplit},
             #{item.splitStackCode},
             #{item.inStorageTime},

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

@@ -135,8 +135,10 @@
         <result property="trayCode" column="tray_code"/>
         <result property="queryPlatform" column="query_platform"/>
         <result property="queryAddress" column="query_address"/>
-        <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="skuCode" column="sku_code"/>
         <result property="queryUserName" column="user_name"/>
         <result property="queryTime" column="create_time"/>
     </resultMap>
@@ -152,7 +154,8 @@
         `box_code`,
         `tray_code`,
         `sku_code`,
-        `brand`,
+        `brand_code`,
+        `brand_name`,
         `query_platform`,
         `query_address`,
         `create_time`,