v_KaixiangGuo пре 4 година
родитељ
комит
6bc98d997e
17 измењених фајлова са 512 додато и 0 уклоњено
  1. 37 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrSingleCheckController.java
  2. 16 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveMapper.java
  3. 8 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrBoxMappingMapper.java
  4. 9 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrPackageBatchMapper.java
  5. 17 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrSingleCheckMapper.java
  6. 27 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/PackageActiveVO.java
  7. 72 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrSingleCheckVO.java
  8. 18 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GetQrSingleCheckDetailCodeReq.java
  9. 24 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/QrOneBoxCodeMappingReq.java
  10. 24 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/QrOnePackageBatchReq.java
  11. 71 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetQrSingleCheckDetailRes.java
  12. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrSingleCheckService.java
  13. 107 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrSingleCheckServiceImpl.java
  14. 13 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveMapper.xml
  15. 10 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrBoxMappingMapper.xml
  16. 9 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrPackageBatchMapper.xml
  17. 28 0
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrSingleCheckMapper.xml

+ 37 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrSingleCheckController.java

@@ -0,0 +1,37 @@
+package com.abi.qms.platform.controller.console;
+import com.abi.qms.platform.dto.req.GetQrSingleCheckDetailCodeReq;
+import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
+import com.abi.qms.platform.service.QrSingleCheckService;
+import com.abi.task.common.api.base.BaseResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 单码查询 Controller
+ *
+ * @author KaixiangGuo
+ * @date 2021-05-27
+ */
+@Slf4j
+@RestController
+@Api(tags = "单码查询")
+@RequestMapping("/qrSingleCheck")
+public class QrSingleCheckController {
+
+    @Autowired
+    private QrSingleCheckService qrSingleCheckService;
+
+
+    @ApiOperation("单码查询详情")
+    @GetMapping("/getQrSingleCheckDetail")
+    public BaseResponse<GetQrSingleCheckDetailRes> getQrSelectDetail(@Validated GetQrSingleCheckDetailCodeReq getQrSingleCheckDetailCodeReq) {
+        GetQrSingleCheckDetailRes result = qrSingleCheckService.getQrSingleCheckDetail(getQrSingleCheckDetailCodeReq);
+        return BaseResponse.create(result);
+    }
+}

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

@@ -2,6 +2,7 @@ package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.BaseActive;
 import com.abi.qms.platform.dao.vo.result.ActivePackageVO;
+import com.abi.qms.platform.dao.vo.result.PackageActiveVO;
 import com.abi.qms.platform.dto.req.ListActiveReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -18,4 +19,19 @@ public interface BaseActiveMapper extends BaseMapper<BaseActive> {
 
     IPage<BaseActive> listActivePage(IPage page, @Param("param") ListActiveReq param);
 
+
+    /**
+     * 通过码活动id查询关联码包列表
+     * @param page
+     * @param activeId
+     * @return
+     */
+    IPage<ActivePackageVO> listPackageById(IPage page, @Param("id") Long activeId);
+
+    /**
+     * 通过码包ID查询对应一个活动
+     * @param packageId 码包ID
+     * @return
+     */
+    PackageActiveVO getPackageActive(@Param("packageId") Long packageId);
 }

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

@@ -4,6 +4,7 @@ import com.abi.qms.platform.dao.entity.QrBoxMapping;
 import com.abi.qms.platform.dao.vo.result.PrintingDetailVO;
 import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
 import com.abi.qms.platform.dto.req.ListQrBoxCodeMappingReq;
+import com.abi.qms.platform.dto.req.QrOneBoxCodeMappingReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -33,4 +34,11 @@ public interface QrBoxMappingMapper extends BaseMapper<QrBoxMapping> {
      * @return
      */
     PrintingDetailVO getPrintingDetail(@Param("packageId") Long packageId);
+
+    /**
+     * 根据码包ID和序列号查询关联激活信息单条数据
+     * @param req
+     * @return
+     */
+    QrBoxMappingVO getIndexQrBoxCodeMappingOne(@Param("req") QrOneBoxCodeMappingReq req);
 }

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

@@ -1,7 +1,10 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.QrPackageBatch;
+import com.abi.qms.platform.dao.vo.result.QrPackageBatchVO;
+import com.abi.qms.platform.dto.req.QrOnePackageBatchReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,4 +15,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface QrPackageBatchMapper extends BaseMapper<QrPackageBatch> {
 
+    /**
+     * 根据码包ID和批次号查询批次关联信息
+     * @param req
+     * @return
+     */
+    QrPackageBatchVO getQrPackageBatchOne(@Param("req") QrOnePackageBatchReq req);
 }

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

@@ -0,0 +1,17 @@
+package com.abi.qms.platform.dao.mapper;
+
+import com.abi.qms.platform.dao.vo.result.QrSingleCheckVO;
+
+/**
+ * 单码查询 Mapper接口
+ *
+ * @author KaiXiangGuo
+ * @date 2021-05-27
+ */
+public interface QrSingleCheckMapper{
+
+	/**
+	 * 单码查询详细信息
+	 */
+	QrSingleCheckVO getQrSingleCheckDetailById(Long id);
+}

+ 27 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/PackageActiveVO.java

@@ -0,0 +1,27 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author KaixiangGuo
+ * @date 2021/5/27 16:00
+ * @Description: 码活动关联码包查询
+ */
+@Data
+@ApiModel
+public class PackageActiveVO implements Serializable {
+
+    @ApiModelProperty("码包id")
+    private Long packageId;
+
+    @ApiModelProperty("活动名称")
+    private String activeName;
+
+    @ApiModelProperty("活动域名")
+    private String activeUrl;
+
+}

+ 72 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrSingleCheckVO.java

@@ -0,0 +1,72 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 码单查对象 qr_package
+ *
+ * @author KaixiangGuo
+ * @date: 2021-05-27
+ */
+@Data
+@ApiModel
+public class QrSingleCheckVO implements Serializable {
+
+	@ApiModelProperty("码包id")
+	private Long id;
+
+	@ApiModelProperty("SAP单号")
+	private String sapOrderNo;
+
+	@ApiModelProperty("物料名称")
+	private String materialName;
+
+	@ApiModelProperty(value = "sku名称")
+	private String skuName;
+
+	@ApiModelProperty("包材厂名称")
+	private String factoryCoverName;
+
+	@ApiModelProperty("啤酒厂名称")
+	private String factoryBeerName;
+
+	@ApiModelProperty("码包生成时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime generateTime;
+
+	@ApiModelProperty("二维码类型 1-箱码 2-盖码")
+	private Integer qrType;
+
+	@ApiModelProperty("活动名称")
+	private String activeName;
+
+	@ApiModelProperty("活动域名")
+	private String activeUrl;
+
+	@ApiModelProperty(value = "激活状态")
+	private Integer activeStatus;
+
+	@ApiModelProperty("激活时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private LocalDateTime activeTime;
+
+	@ApiModelProperty("激活人")
+	private String activeUserName;
+
+	@ApiModelProperty("批次号")
+	private String batchNumber;
+
+	@ApiModelProperty("隐形码")
+	private String alias;
+
+	@ApiModelProperty("条码序号")
+	private String boxCode;
+
+
+}

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

@@ -0,0 +1,18 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 单码查询code入参
+ */
+@Data
+@Schema
+public class GetQrSingleCheckDetailCodeReq {
+
+    @NotNull(message = "code为空")
+    @Schema(name = "qrCode")
+    private String qrCode;
+}

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

@@ -0,0 +1,24 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author: KaixiangGuo
+ * @date: 2021/05/28 11:31
+ * @description: 单码查询激活信息入参
+ */
+@Data
+@ApiModel
+public class QrOneBoxCodeMappingReq implements Serializable {
+
+    @ApiModelProperty(value = "码包id")
+    private Long packageId;
+
+    @ApiModelProperty(value = "码序号")
+    private Long qrIndex;
+
+}

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

@@ -0,0 +1,24 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author: KaixiangGuo
+ * @date: 2021/05/28 11:31
+ * @description: 查询码包批次号入参
+ */
+@Data
+@ApiModel
+public class QrOnePackageBatchReq implements Serializable {
+
+    @ApiModelProperty(value = "码包id")
+    private Long packageId;
+
+    @ApiModelProperty(value = "批次号")
+    private Long batchNumber;
+
+}

+ 71 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetQrSingleCheckDetailRes.java

@@ -0,0 +1,71 @@
+package com.abi.qms.platform.dto.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 单码查询出参
+ *
+ * @author KaixiangGuo
+ * @date: 2021-05-27
+ */
+@Data
+@ApiModel
+public class GetQrSingleCheckDetailRes {
+
+    @ApiModelProperty("码包id")
+    private Long id;
+
+    @ApiModelProperty("SAP单号")
+    private String sapOrderNo;
+
+    @ApiModelProperty("物料名称")
+    private String materialName;
+
+    @ApiModelProperty(value = "sku名称")
+    private String skuName;
+
+    @ApiModelProperty("包材厂名称")
+    private String factoryCoverName;
+
+    @ApiModelProperty("啤酒厂名称")
+    private String factoryBeerName;
+
+    @ApiModelProperty("码包生成时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime generateTime;
+
+    @ApiModelProperty("二维码类型 1-箱码 2-盖码")
+    private Integer qrType;
+
+    @ApiModelProperty("活动名称")
+    private String activeName;
+
+    @ApiModelProperty("活动域名")
+    private String activeUrl;
+
+    @ApiModelProperty(value = "激活状态")
+    private Integer activeStatus;
+
+    @ApiModelProperty("激活时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime activeTime;
+
+    @ApiModelProperty("激活人")
+    private String activeUserName;
+
+    @ApiModelProperty("批次号")
+    private String batchNumber;
+
+    @ApiModelProperty("隐形码")
+    private String alias;
+
+    @ApiModelProperty("条码序号")
+    private String boxCode;
+
+
+}

+ 22 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrSingleCheckService.java

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.service;
+
+
+import com.abi.qms.platform.dto.req.GetQrSingleCheckDetailCodeReq;
+import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
+
+/**
+ *  单码查询 Service接口
+ *
+ * @author KaixiangGuo
+ * @date 2021-05-27
+ */
+public interface QrSingleCheckService {
+
+
+    /**
+     * 单码查询详情
+     */
+    GetQrSingleCheckDetailRes getQrSingleCheckDetail(GetQrSingleCheckDetailCodeReq getQrSingleCheckDetailCodeReq);
+
+
+}

+ 107 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrSingleCheckServiceImpl.java

@@ -0,0 +1,107 @@
+package com.abi.qms.platform.service.impl;
+
+import com.abi.qms.platform.dao.entity.*;
+import com.abi.qms.platform.dao.mapper.*;
+import com.abi.qms.platform.dao.tablestore.entity.QrCode;
+import com.abi.qms.platform.dao.vo.result.PackageActiveVO;
+import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageBatchVO;
+import com.abi.qms.platform.dao.vo.result.QrSingleCheckVO;
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
+import com.abi.qms.platform.infrastructure.util.*;
+import com.abi.qms.platform.service.QrSingleCheckService;
+import com.abi.task.common.tablestore.TableStorePlusUtils;
+import com.abi.task.common.utils.PojoConverterUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 单码查询 Service业务层处理
+ *
+ * @author KaixiangGuo
+ * @date 2021-05-27
+ */
+@Service
+@Slf4j
+public class QrSingleCheckServiceImpl implements QrSingleCheckService {
+
+    @Autowired
+    private QrSingleCheckMapper qrSingleCheckMapper;
+    
+    @Autowired
+    private TableStorePlusUtils tableStorePlusUtils;
+
+    @Autowired
+    private QrRepertoryColumnMapper repertoryColumnMapper;
+
+    @Autowired
+    private BaseActiveMapper baseActiveMapper;
+
+    @Autowired
+    private QrBoxMappingMapper qrBoxMappingMapper;
+
+    @Autowired
+    private QrPackageBatchMapper qrPackageBatchMapper;
+
+    @Override
+    public GetQrSingleCheckDetailRes getQrSingleCheckDetail(GetQrSingleCheckDetailCodeReq req) {
+
+        //调用tablestore查询码信息
+        QrCode qrCode = tableStorePlusUtils.selectOne(QrCode.class, req.getQrCode());
+        AssertUtil.isNull(qrCode.getPackageId(), "码数据不存在");
+
+        //1-查询码关联信息
+        QrSingleCheckVO qrSingleCheckVO = qrSingleCheckMapper.getQrSingleCheckDetailById(Long.valueOf(qrCode.getPackageId()));
+        AssertUtil.isNull(qrSingleCheckVO, "码数据不存在");
+
+        //查询是否存在隐形码
+        QrRepertoryColumn qrRepertoryColumn = repertoryColumnMapper.selectById(qrCode.getQrRepertoryColumnId());
+
+        //存在别名(隐形码)
+        if (ObjectUtils.isNotEmpty(qrRepertoryColumn)){
+            qrSingleCheckVO.setAlias(qrRepertoryColumn.getAlias());//隐形码
+        }
+
+        //查询码包对应活动单条数据
+        PackageActiveVO packageActive = baseActiveMapper.getPackageActive(qrCode.getPackageId());
+
+        //存在活动数据
+        if (ObjectUtils.isNotEmpty(packageActive)){
+            qrSingleCheckVO.setActiveName(packageActive.getActiveName());
+            qrSingleCheckVO.setActiveUrl(packageActive.getActiveUrl());
+        }
+
+        //查询批次号id
+        QrOnePackageBatchReq qrOnePackageBatchReq = new QrOnePackageBatchReq();
+        qrOnePackageBatchReq.setPackageId(qrCode.getPackageId());
+        qrOnePackageBatchReq.setBatchNumber(qrCode.getBatchNumberId());
+        QrPackageBatchVO qrPackageBatchOne = qrPackageBatchMapper.getQrPackageBatchOne(qrOnePackageBatchReq);
+
+        //存批次号
+        if (ObjectUtils.isNotEmpty(qrPackageBatchOne)){
+            qrSingleCheckVO.setBatchNumber(qrPackageBatchOne.getBatchNumber());
+        }
+
+        //1-查询码关联激活信息单条数据
+        QrOneBoxCodeMappingReq qrOneBoxCodeMappingReq = new QrOneBoxCodeMappingReq();
+        qrOneBoxCodeMappingReq.setPackageId(qrCode.getPackageId());
+        qrOneBoxCodeMappingReq.setQrIndex(qrCode.getCodeIndex());
+        QrBoxMappingVO qrBoxMappingVO = qrBoxMappingMapper.getIndexQrBoxCodeMappingOne(qrOneBoxCodeMappingReq);
+
+        //存在激活关联信息
+        if (ObjectUtils.isNotEmpty(qrBoxMappingVO)){
+            qrSingleCheckVO.setBoxCode(qrBoxMappingVO.getBoxCode());//条码序号
+            qrSingleCheckVO.setActiveTime(qrBoxMappingVO.getActiveTime());//激活时间
+            qrSingleCheckVO.setActiveUserName(qrBoxMappingVO.getActiveUserName());//激活时间
+            qrSingleCheckVO.setActiveStatus(qrBoxMappingVO.getActiveStatus());//激活状态
+        }
+
+        //转化出参
+        GetQrSingleCheckDetailRes res = PojoConverterUtils.copy(qrSingleCheckVO, GetQrSingleCheckDetailRes.class);
+        return res;
+    }
+}

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

@@ -50,4 +50,17 @@
         order by apply_time
     </select>
 
+    <select id="getPackageActive" resultType="com.abi.qms.platform.dao.vo.result.PackageActiveVO">
+        SELECT
+            ba.id,
+            ba.active_name,
+            ba.active_url
+        FROM
+            base_active ba
+            LEFT JOIN base_active_qr_package_mapping bam ON ba.id = bam.active_id
+        WHERE
+            bam.qr_package_id = #{packageId} limit 1
+    </select>
+
+
 </mapper>

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

@@ -60,4 +60,14 @@
         </where>
     </select>
 
+    <select id="getIndexQrBoxCodeMappingOne" resultType="com.abi.qms.platform.dao.vo.result.QrBoxMappingVO">
+        SELECT
+        <include refid = "Base_Column_List" />
+        FROM
+        qr_box_mapping
+        WHERE
+        package_id = #{req.packageId} and index_begin &lt;= #{req.qrIndex} and index_end >= #{req.qrIndex}
+        LIMIT 1
+    </select>
+
 </mapper>

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

@@ -20,4 +20,13 @@
         ID, PACKAGE_ID, BATCH_NUMBER, BATCH_QR_NUMBER, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE
     </sql>
 
+    <select id="getQrPackageBatchOne" resultType="com.abi.qms.platform.dao.vo.result.QrPackageBatchVO">
+        SELECT
+            qpb.batch_number
+        FROM
+            qr_package_batch qpb
+        WHERE
+            qpb.package_id = #{req.packageId} and qpb.batch_number = #{req.batchNumber}
+    </select>
+
 </mapper>

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

@@ -0,0 +1,28 @@
+<?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.abi.qms.platform.dao.mapper.QrSingleCheckMapper">
+
+    <select id="getQrSingleCheckDetailById" resultType="com.abi.qms.platform.dao.vo.result.QrSingleCheckVO">
+        SELECT
+            qp.id,
+            qp.sap_order_no,
+            qp.qr_type,
+            qp.generate_time,
+            bm.material_name,
+            bs.sku_name,
+            bfa.factory_name AS factory_cover_name,
+            bfb.factory_name AS factory_beer_name
+        FROM
+            `qr_package` qp
+            LEFT JOIN base_material bm ON qp.material_id = bm.id
+            LEFT JOIN base_sku bs ON bm.sku_id = bs.id
+            LEFT JOIN base_factory bfa ON qp.factory_cover_id = bfa.id
+            LEFT JOIN base_factory bfb ON qp.factory_beer_id = bfb.id
+        WHERE
+            qp.id = #{id}
+    </select>
+
+
+</mapper>