Jelajahi Sumber

Merge branch 'feature/1.0.0' of github.com:ab-inbev-apac/abi-cloud-qr-platform into feature/1.0.0

tanzhongran 3 tahun lalu
induk
melakukan
66adbc38d4
23 mengubah file dengan 605 tambahan dan 131 penghapusan
  1. 3 3
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrBoxCodeUnityController.java
  2. 34 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/wx/WxQrPackageController.java
  3. 19 5
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrBoxMappingMapper.java
  4. 10 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrPackageMapper.java
  5. 34 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ActivationRecordVO.java
  6. 3 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/PrintingDetailVO.java
  7. 4 4
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageWxVO.java
  8. 44 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/WxQrPackageDetailVO.java
  9. 20 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ActivationRecordReq.java
  10. 3 3
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/PrintingDetailReq.java
  11. 26 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ReplenishActivationReq.java
  12. 23 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/WxQrPackageDetailReq.java
  13. 55 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ActivationRecordRes.java
  14. 3 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/PrintingDetailRes.java
  15. 71 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/WxQrPackageDetailRes.java
  16. 1 3
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/runner/CheckTableStoreRunner.java
  17. 0 64
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/runner/CustomApplicationRunner.java
  18. 9 4
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrBoxMappingService.java
  19. 28 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrPackageService.java
  20. 18 7
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrBoxMappingServiceImpl.java
  21. 148 29
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageServiceImpl.java
  22. 21 4
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrBoxMappingMapper.xml
  23. 28 5
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrPackageMapper.xml

+ 3 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrBoxCodeUnityController.java

@@ -43,10 +43,10 @@ public class QrBoxCodeUnityController {
 
     @ApiOperation("生成条形码")
     @PostMapping("/generateBarCode")
-    public BaseResponse generateBarCode(@RequestBody GenerateBarCodeReq generateBarCodeReq) {
+    public BaseResponse<String> generateBarCode(@RequestBody GenerateBarCodeReq generateBarCodeReq) {
 
-        qrBoxMappingService.generateBarCode(generateBarCodeReq);
-        return BaseResponse.create();
+        String boxCode = qrBoxMappingService.generateBarCode(generateBarCodeReq);
+        return BaseResponse.create(boxCode);
     }
 
     @ApiOperation("箱码合一文件上传")

+ 34 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/wx/WxQrPackageController.java

@@ -1,7 +1,12 @@
 package com.abi.qms.platform.controller.wx;
 
+import com.abi.qms.platform.dto.req.ActivationRecordReq;
 import com.abi.qms.platform.dto.req.ListQrPackageWxReq;
+import com.abi.qms.platform.dto.req.ReplenishActivationReq;
+import com.abi.qms.platform.dto.req.WxQrPackageDetailReq;
+import com.abi.qms.platform.dto.res.ActivationRecordRes;
 import com.abi.qms.platform.dto.res.ListQrPackageWxRes;
+import com.abi.qms.platform.dto.res.WxQrPackageDetailRes;
 import com.abi.qms.platform.service.QrPackageService;
 import com.abi.task.common.api.base.BaseResponse;
 import io.swagger.annotations.Api;
@@ -10,6 +15,8 @@ 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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -36,4 +43,31 @@ public class WxQrPackageController {
         return BaseResponse.create(result);
     }
 
+    @ApiOperation("码包详情")
+    @GetMapping("getWxQrPackageDetail")
+    public BaseResponse<WxQrPackageDetailRes> getWxQrPackageDetail(@Validated WxQrPackageDetailReq wxQrPackageDetailReq) {
+        //查询码包详情
+        WxQrPackageDetailRes res = qrPackageService.getWxQrPackageDetail(wxQrPackageDetailReq);
+        //包装出参
+        return BaseResponse.create(res);
+    }
+
+    @ApiOperation("补充激活")
+    @PostMapping("replenishActivation")
+    public BaseResponse replenishActivation(@RequestBody ReplenishActivationReq replenishActivationReq) {
+        //补充激活
+        qrPackageService.replenishActivation(replenishActivationReq);
+        //包装出参
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("激活记录")
+    @GetMapping("getActivationRecord")
+    public BaseResponse<ActivationRecordRes> getActivationRecord(@Validated ActivationRecordReq activationRecordReq) {
+        //补充激活
+        ActivationRecordRes res = qrPackageService.getActivationRecord(activationRecordReq);
+        //包装出参
+        return BaseResponse.create(res);
+    }
+
 }

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

@@ -1,9 +1,11 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.entity.QrBoxMapping;
+import com.abi.qms.platform.dao.vo.result.ActivationRecordVO;
 import com.abi.qms.platform.dao.vo.result.PrintingDetailVO;
 import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
 import com.abi.qms.platform.dao.vo.result.QueryWxQrBoxMappingDetailsVO;
+import com.abi.qms.platform.dto.req.ActivationRecordReq;
 import com.abi.qms.platform.dto.req.ListQrBoxCodeMappingReq;
 import com.abi.qms.platform.dto.req.QrOneBoxCodeMappingReq;
 import com.abi.qms.platform.dto.req.QueryWxQrBoxMappingDetailsWxReq;
@@ -11,6 +13,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 箱码关联表 Mapper 接口
@@ -30,15 +34,16 @@ public interface QrBoxMappingMapper extends BaseMapper<QrBoxMapping> {
     IPage<QrBoxMappingVO> listQrBoxCodeMapping(IPage page, @Param("req") ListQrBoxCodeMappingReq req);
 
     /**
-     * 根据码包ID查询箱码合一打印详情
+     * 根据条码序号查询箱码合一打印详情
      *
-     * @param packageId 码包ID
+     * @param boxCode 条码序号
      * @return
      */
-    PrintingDetailVO getPrintingDetail(@Param("packageId") Long packageId);
+    PrintingDetailVO getPrintingDetail(@Param("boxCode") String boxCode);
 
     /**
      * 根据码包ID和序列号查询关联激活信息单条数据
+     *
      * @param req
      * @return
      */
@@ -46,10 +51,19 @@ public interface QrBoxMappingMapper extends BaseMapper<QrBoxMapping> {
 
     /**
      * 微信 - 箱码/条码详情
-     * @author lu
-     * @date 2021/6/9 11:25
+     *
      * @param req
      * @return com.abi.qms.platform.dao.vo.result.QueryWxQrBoxMappingDetailsVO
+     * @author lu
+     * @date 2021/6/9 11:25
      */
     QueryWxQrBoxMappingDetailsVO queryWxQrBoxMappingDetails(@Param("req") QueryWxQrBoxMappingDetailsWxReq req);
+
+    /**
+     * 查询激活记录
+     *
+     * @param req
+     * @return
+     */
+    List<ActivationRecordVO> getActivationRecord(@Param("req") ActivationRecordReq req);
 }

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

@@ -4,8 +4,10 @@ import com.abi.qms.platform.dao.entity.QrPackage;
 import com.abi.qms.platform.dao.vo.result.QrPackageVO;
 import com.abi.qms.platform.dao.vo.result.QrPackageWxVO;
 import com.abi.qms.platform.dao.vo.result.QrSingleCheckVO;
+import com.abi.qms.platform.dao.vo.result.WxQrPackageDetailVO;
 import com.abi.qms.platform.dto.req.ListQrPackageReq;
 import com.abi.qms.platform.dto.req.ListQrPackageWxReq;
+import com.abi.qms.platform.dto.req.WxQrPackageDetailReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -44,6 +46,14 @@ public interface QrPackageMapper extends BaseMapper<QrPackage> {
      */
     List<QrPackageWxVO> listWxQrPackage(@Param("req") ListQrPackageWxReq req);
 
+    /**
+     * 小程序码包详情查询
+     *
+     * @param req
+     * @return
+     */
+    WxQrPackageDetailVO getWxQrPackageDetail(@Param("req") WxQrPackageDetailReq req);
+
 
     //    6.03已废弃
 //	/**

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

@@ -0,0 +1,34 @@
+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;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/06/09 17:17
+ * @description:
+ */
+@Data
+@ApiModel
+public class ActivationRecordVO implements Serializable {
+
+    @ApiModelProperty("条码序号")
+    private String boxCode;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "物料名称")
+    private String materialName;
+
+    @ApiModelProperty(value = "激活账号")
+    private String activeAccount;
+
+    @ApiModelProperty(value = "激活时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String activeTime;
+}

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

@@ -36,6 +36,9 @@ public class PrintingDetailVO {
     @ApiModelProperty(value = "啤酒厂id")
     private Long factoryBeerId;
 
+    @ApiModelProperty(value = "物料名称")
+    private String materialName;
+
     //603版 已作废
     /*@ApiModelProperty(value = "sku名称")
     private String skuName;*/

+ 4 - 4
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageWxVO.java

@@ -24,9 +24,9 @@ public class QrPackageWxVO implements Serializable {
     @ApiModelProperty(value = "物料名称")
     private String materialName;
 
-    @ApiModelProperty(value = "条码总数")
-    private Integer packageTotalNum;
+    @ApiModelProperty(value = "激活箱数")
+    private Integer activeBoxCount;
 
-    @ApiModelProperty(value = "已激活条码数")
-    private Integer activePackageNum;
+    @ApiModelProperty(value = "箱码总数")
+    private Integer totalBoxCount;
 }

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

@@ -0,0 +1,44 @@
+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: fangxinjian
+ * @date: 2021/06/09 14:01
+ * @description:
+ */
+@Data
+@ApiModel
+public class WxQrPackageDetailVO implements Serializable {
+
+    @ApiModelProperty(value = "码包ID")
+    private Long packageId;
+
+    @ApiModelProperty(value = "活动ID")
+    private Long activeId;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+    private Integer activeType;
+
+    @ApiModelProperty(value = "SAP采购订单号")
+    private String sapOrderNo;
+
+    @ApiModelProperty(value = "物料名称")
+    private String materialName;
+
+    @ApiModelProperty(value = "盖码数量")
+    private Integer capNum;
+
+    @ApiModelProperty(value = "条码总数")
+    private Integer packageTotalNum;
+
+    @ApiModelProperty(value = "已激活条码数")
+    private Integer activePackageNum;
+}

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

@@ -0,0 +1,20 @@
+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: fangxinjian
+ * @date: 2021/06/09 16:51
+ * @description: 激活记录入参
+ */
+@Data
+@ApiModel
+public class ActivationRecordReq implements Serializable {
+
+    @ApiModelProperty(value = "月份")
+    private String month;
+}

+ 3 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/PrintingDetailReq.java

@@ -16,9 +16,9 @@ import java.io.Serializable;
 @ApiModel
 public class PrintingDetailReq implements Serializable {
 
-    @ApiModelProperty(value = "码包id")
-    @NotNull(message = "码包ID不能为空")
-    private Long packageId;
+    @ApiModelProperty(value = "条码序号")
+    @NotNull(message = "条码序号不能为空")
+    private String boxCode;
 
 
 }

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

@@ -0,0 +1,26 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/06/09 16:23
+ * @description: 码包补充激活入参
+ */
+@Data
+@ApiModel
+public class ReplenishActivationReq implements Serializable {
+
+    @NotNull(message = "条码序号为空")
+    @ApiModelProperty(value = "条码序号")
+    private String boxCode;
+
+    @ApiModelProperty(value = "激活原因")
+    private String reason;
+
+}

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

@@ -0,0 +1,23 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/06/09 13:38
+ * @description:
+ */
+@Data
+@ApiModel
+public class WxQrPackageDetailReq implements Serializable {
+
+    @NotNull(message = "码包ID为空")
+    @ApiModelProperty(value = "码包ID")
+    private Long packageId;
+
+}

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

@@ -0,0 +1,55 @@
+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.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/06/09 16:44
+ * @description: 激活记录出参
+ */
+@Data
+@ApiModel
+public class ActivationRecordRes implements Serializable {
+
+    @ApiModelProperty("激活记录列表")
+    private List<ActivationRecordBean> activationRecordBeanList;
+
+    /**
+     * 激活记录
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ActivationRecordRes_ActivationRecordBean")
+    public static class ActivationRecordBean implements Serializable {
+
+        @ApiModelProperty("条码序号")
+        private String boxCode;
+
+        @ApiModelProperty(value = "活动名称")
+        private String activeName;
+
+        @ApiModelProperty(value = "物料名称")
+        private String materialName;
+
+        @ApiModelProperty(value = "激活账号")
+        private String activeAccount;
+
+        @ApiModelProperty(value = "激活时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private String activeTime;
+
+    }
+
+
+}

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

@@ -39,6 +39,9 @@ public class PrintingDetailRes implements Serializable {
     @ApiModelProperty(value = "啤酒厂名称")
     private String factoryBeerName;
 
+    @ApiModelProperty(value = "物料名称")
+    private String materialName;
+
     //603版 已作废
     /*@ApiModelProperty(value = "sku名称")
     private String skuName;*/

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

@@ -0,0 +1,71 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/06/09 13:48
+ * @description:
+ */
+@Data
+@ApiModel
+public class WxQrPackageDetailRes implements Serializable {
+
+    @ApiModelProperty(value = "码包ID")
+    private Long packageId;
+
+    @ApiModelProperty(value = "活动ID")
+    private Long activeId;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activeName;
+
+    @ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+    private Integer activeType;
+
+    @ApiModelProperty(value = "SAP采购订单号")
+    private String sapOrderNo;
+
+    @ApiModelProperty(value = "物料名称")
+    private String materialName;
+
+    @ApiModelProperty(value = "盖码数量")
+    private Integer capNum;
+
+    @ApiModelProperty(value = "条码总数")
+    private Integer packageTotalNum;
+
+    @ApiModelProperty(value = "已激活条码数")
+    private Integer activePackageNum;
+
+    @ApiModelProperty("箱码列表")
+    private List<QrBoxMappingBean> qrBoxMappingBeanList;
+
+    /**
+     * 箱码bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "WxQrPackageDetailRes_QrBoxMappingBean")
+    public static class QrBoxMappingBean {
+
+        @ApiModelProperty(value = "条码序号")
+        private String boxCode;
+
+        @ApiModelProperty(value = "激活状态 0-未激活 1-已激活")
+        private Integer activeStatus;
+
+    }
+
+
+}

+ 1 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/runner/CheckTableStoreRunner.java

@@ -9,7 +9,6 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
@@ -37,7 +36,6 @@ public class CheckTableStoreRunner implements ApplicationRunner {
 
     private static AtomicInteger retryTimes = new AtomicInteger(0);
     private static String RESOURCE_PATH = "classpath*:com/abi/qms/platform/dao/tablestore/entity/*.class";
-//    private static String RESOURCE_PATH = "classpath*:com/abi/task/common/tablestore/**/*.class";
 
 
     @Override
@@ -51,7 +49,7 @@ public class CheckTableStoreRunner implements ApplicationRunner {
                     long start = System.currentTimeMillis();
                     tableStoreUtils.createTable(tableInfo.tableName(),tableInfo.primaryKeyName());
                     log.info("表名{}创建成功,耗时{}ms",tableInfo.tableName(),(System.currentTimeMillis() -start));
-        });
+                });
     }
 
     private static Set<TableStore> getAllEntity(){

+ 0 - 64
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/runner/CustomApplicationRunner.java

@@ -1,27 +1,14 @@
 package com.abi.qms.platform.runner;
 
 import com.abi.qms.platform.infrastructure.util.RSAUtils;
-import com.abi.task.common.api.exception.BusinessException;
-import com.abi.task.common.tablestore.TableStoreUtils;
-import com.abi.task.common.tablestore.common.TableStore;
-import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
-import org.springframework.core.type.classreading.MetadataReader;
 import org.springframework.stereotype.Component;
 
 import java.security.interfaces.RSAKey;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import static com.abi.qms.platform.infrastructure.constant.RsaKey.RSA_PRIVATE_KEY;
 import static com.abi.qms.platform.infrastructure.constant.RsaKey.RSA_PUBLIC_KEY;
@@ -38,12 +25,6 @@ import static com.abi.qms.platform.infrastructure.constant.RsaKey.RSA_PUBLIC_KEY
 @Slf4j
 public class CustomApplicationRunner implements ApplicationRunner {
 
-    @Autowired
-    private TableStoreUtils tableStoreUtils;
-
-    private static AtomicInteger retryTimes = new AtomicInteger(0);
-    private static String RESOURCE_PATH = "classpath*:com/abi/qms/platform/dao/tablestore/entity/*.class";
-
     public static ConcurrentHashMap<String, RSAKey> globalRsaKeyMap = new ConcurrentHashMap<>();
     /**
      * 项目启动时  加载公钥私钥到本地缓存
@@ -55,51 +36,6 @@ public class CustomApplicationRunner implements ApplicationRunner {
         Map<String, RSAKey> keyMap = RSAUtils.getKey();
         globalRsaKeyMap.put(RSA_PUBLIC_KEY,keyMap.get(RSA_PUBLIC_KEY));
         globalRsaKeyMap.put(RSA_PRIVATE_KEY,keyMap.get(RSA_PRIVATE_KEY));
-
-        Set<TableStore> tableNames = getAllEntity();
-        Map<String,String> existTableNames = tableStoreUtils.listTables();
-        tableNames.stream()
-                .filter(o->!existTableNames.containsKey(o.tableName()))
-                .forEach(tableInfo->{
-                    log.info("检查到表名{}不存在,开始执行创建",tableInfo.tableName());
-                    long start = System.currentTimeMillis();
-                    tableStoreUtils.createTable(tableInfo.tableName(),tableInfo.primaryKeyName());
-                    log.info("表名{}创建成功,耗时{}ms",tableInfo.tableName(),(System.currentTimeMillis() -start));
-                });
-
-
     }
 
-    private static Set<TableStore> getAllEntity(){
-        Set<TableStore> ret = Sets.newHashSet();
-        PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
-        CachingMetadataReaderFactory cachingMetadataReaderFactory = new CachingMetadataReaderFactory();
-        try {
-            Resource[] resources = pathMatchingResourcePatternResolver.getResources(RESOURCE_PATH);
-            ClassLoader loader = ClassLoader.getSystemClassLoader();
-            for (Resource resource : resources) {
-                MetadataReader reader = cachingMetadataReaderFactory.getMetadataReader(resource);
-                String className = reader.getClassMetadata().getClassName();
-                Class aClass = loader.loadClass(className);
-                TableStore annotation = (TableStore) aClass.getAnnotation(TableStore.class);
-                if (ObjectUtils.isNotEmpty(annotation)){
-                    ret.add(annotation);
-                }
-            }
-        } catch (Exception e) {
-            if (retryTimes.getAndIncrement()>2){
-                log.error("TableStore 初始化检查失败",e);
-                throw new BusinessException(500,"TableStore 初始化检查失败");
-            }
-            try {
-                Thread.sleep(retryTimes.get() * 1000);
-            } catch (InterruptedException interruptedException) {
-                // Do Nothing
-            }
-            //进行当前重试
-            log.info("当前开始重试,第{}次",retryTimes.get());
-            return getAllEntity();
-        }
-        return ret;
-    }
 }

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

@@ -1,6 +1,10 @@
 package com.abi.qms.platform.service;
 
-import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.req.ActiveBoxCodeReq;
+import com.abi.qms.platform.dto.req.GenerateBarCodeReq;
+import com.abi.qms.platform.dto.req.ListQrBoxCodeMappingReq;
+import com.abi.qms.platform.dto.req.PrintingDetailReq;
+import com.abi.qms.platform.dto.req.QueryWxQrBoxMappingDetailsWxReq;
 import com.abi.qms.platform.dto.res.ListQrBoxCodeMappingRes;
 import com.abi.qms.platform.dto.res.PrintingDetailRes;
 import com.abi.qms.platform.dto.res.QrBoxCodeUploadRes;
@@ -21,7 +25,7 @@ public interface QrBoxMappingService {
      *
      * @param generateBarCodeReq
      */
-    void generateBarCode(GenerateBarCodeReq generateBarCodeReq);
+    String generateBarCode(GenerateBarCodeReq generateBarCodeReq);
 
     /**
      * 分页查询箱码合一
@@ -64,10 +68,11 @@ public interface QrBoxMappingService {
 
     /**
      * 微信 - 箱码/条码详情
-     * @author lu
-     * @date 2021/6/9 11:24
+     *
      * @param queryWxQrBoxMappingDetailsWxReq
      * @return com.abi.qms.platform.dto.res.QueryWxQrBoxMappingDetailsWxRes
+     * @author lu
+     * @date 2021/6/9 11:24
      */
     QueryWxQrBoxMappingDetailsWxRes queryWxQrBoxMappingDetails(QueryWxQrBoxMappingDetailsWxReq queryWxQrBoxMappingDetailsWxReq);
 

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

@@ -2,6 +2,7 @@ package com.abi.qms.platform.service;
 
 
 import com.abi.qms.platform.dao.entity.QrPackage;
+import com.abi.qms.platform.dto.req.ActivationRecordReq;
 import com.abi.qms.platform.dto.req.DeleteQrPackageReq;
 import com.abi.qms.platform.dto.req.DownloadQrPackageReq;
 import com.abi.qms.platform.dto.req.GetPackageCodeReq;
@@ -13,15 +14,19 @@ import com.abi.qms.platform.dto.req.ListQrPackageReq;
 import com.abi.qms.platform.dto.req.ListQrPackageWxReq;
 import com.abi.qms.platform.dto.req.PassQrPackageReq;
 import com.abi.qms.platform.dto.req.RefuseQrPackageReq;
+import com.abi.qms.platform.dto.req.ReplenishActivationReq;
 import com.abi.qms.platform.dto.req.SaveQrPackageReq;
 import com.abi.qms.platform.dto.req.SendMobileMsgReq;
 import com.abi.qms.platform.dto.req.ValidSAPOrderNoAndMaterialReq;
+import com.abi.qms.platform.dto.req.WxQrPackageDetailReq;
+import com.abi.qms.platform.dto.res.ActivationRecordRes;
 import com.abi.qms.platform.dto.res.GetPackageCodeRes;
 import com.abi.qms.platform.dto.res.GetQrPackageDetailRes;
 import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
 import com.abi.qms.platform.dto.res.ListQrPackageRes;
 import com.abi.qms.platform.dto.res.ListQrPackageWxRes;
 import com.abi.qms.platform.dto.res.ValidSAPOrderNoAndMaterialRes;
+import com.abi.qms.platform.dto.res.WxQrPackageDetailRes;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -134,4 +139,27 @@ public interface QrPackageService {
      * @return
      */
     ListQrPackageWxRes listWxQrPackage(ListQrPackageWxReq listQrPackageWxReq);
+
+    /**
+     * 微信小程序查询码包详情
+     *
+     * @param wxQrPackageDetailReq
+     * @return
+     */
+    WxQrPackageDetailRes getWxQrPackageDetail(WxQrPackageDetailReq wxQrPackageDetailReq);
+
+    /**
+     * 补充激活
+     *
+     * @param replenishActivationReq
+     */
+    void replenishActivation(ReplenishActivationReq replenishActivationReq);
+
+    /**
+     * 激活记录
+     *
+     * @param activationRecordReq
+     * @return
+     */
+    ActivationRecordRes getActivationRecord(ActivationRecordReq activationRecordReq);
 }

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

@@ -11,8 +11,16 @@ import com.abi.qms.platform.dao.tablestore.entity.QrCode;
 import com.abi.qms.platform.dao.vo.result.PrintingDetailVO;
 import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
 import com.abi.qms.platform.dao.vo.result.QueryWxQrBoxMappingDetailsVO;
-import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.*;
+import com.abi.qms.platform.dto.req.ActiveBoxCodeReq;
+import com.abi.qms.platform.dto.req.GenerateBarCodeReq;
+import com.abi.qms.platform.dto.req.ListQrBoxCodeMappingReq;
+import com.abi.qms.platform.dto.req.PrintingDetailReq;
+import com.abi.qms.platform.dto.req.QueryWxQrBoxMappingDetailsWxReq;
+import com.abi.qms.platform.dto.res.ListQrBoxCodeMappingRes;
+import com.abi.qms.platform.dto.res.PrintingDetailRes;
+import com.abi.qms.platform.dto.res.QrBoxCodeUploadRes;
+import com.abi.qms.platform.dto.res.QueryWxQrBoxMappingDetailsWxRes;
+import com.abi.qms.platform.dto.res.UploadFileRes;
 import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.infrastructure.util.PageUtil;
 import com.abi.qms.platform.infrastructure.util.UserUtil;
@@ -65,7 +73,7 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
     private static final String FAIL = "fail";
 
     @Override
-    public void generateBarCode(GenerateBarCodeReq req) {
+    public String generateBarCode(GenerateBarCodeReq req) {
 
         //获取登录用户信息
         UserInfo user = userUtil.getUser();
@@ -96,6 +104,8 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
         qbm.setInvalid(InvalidEnum.NOT_INVALID.getCode());
         qrBoxMappingMapper.insert(qbm);
 
+        return qbm.getBoxCode();
+
     }
 
     @Override
@@ -164,7 +174,7 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
     public PrintingDetailRes getPrintingDetail(PrintingDetailReq req) {
 
 
-        PrintingDetailVO printingDetail = qrBoxMappingMapper.getPrintingDetail(req.getPackageId());
+        PrintingDetailVO printingDetail = qrBoxMappingMapper.getPrintingDetail(req.getBoxCode());
         PrintingDetailRes res = PojoConverterUtils.copy(printingDetail, PrintingDetailRes.class);
         res.setFactoryCoverName(null == printingDetail.getFactoryCoverLevelTwoId() ? "" : getFactoryName(printingDetail.getFactoryCoverLevelTwoId()));
         res.setFactoryBeerName(null == printingDetail.getFactoryBeerId() ? "" : getFactoryName(printingDetail.getFactoryBeerId()));
@@ -189,15 +199,16 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
 
     /**
      * 微信 - 箱码/条码详情
-     * @author lu
-     * @date 2021/6/9 11:24
+     *
      * @param queryWxQrBoxMappingDetailsWxReq
      * @return com.abi.qms.platform.dto.res.QueryWxQrBoxMappingDetailsWxRes
+     * @author lu
+     * @date 2021/6/9 11:24
      */
     @Override
     public QueryWxQrBoxMappingDetailsWxRes queryWxQrBoxMappingDetails(QueryWxQrBoxMappingDetailsWxReq queryWxQrBoxMappingDetailsWxReq) {
         QueryWxQrBoxMappingDetailsVO query = qrBoxMappingMapper.queryWxQrBoxMappingDetails(queryWxQrBoxMappingDetailsWxReq);
-        AssertUtil.isNull(query,"条码序号查询为空");
+        AssertUtil.isNull(query, "条码序号查询为空");
         //封装出参
         return PojoConverterUtils.copy(query, QueryWxQrBoxMappingDetailsWxRes.class);
     }

+ 148 - 29
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageServiceImpl.java

@@ -2,16 +2,84 @@ package com.abi.qms.platform.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.abi.base.foundation.util.RedisClient;
-import com.abi.qms.platform.dao.entity.*;
-import com.abi.qms.platform.dao.enums.*;
-import com.abi.qms.platform.dao.mapper.*;
+import com.abi.qms.platform.dao.entity.BaseFactory;
+import com.abi.qms.platform.dao.entity.BaseMaterial;
+import com.abi.qms.platform.dao.entity.QrBoxCodeFormat;
+import com.abi.qms.platform.dao.entity.QrBoxMapping;
+import com.abi.qms.platform.dao.entity.QrPackage;
+import com.abi.qms.platform.dao.entity.QrPackageBatch;
+import com.abi.qms.platform.dao.entity.QrPackageDownloadRecord;
+import com.abi.qms.platform.dao.entity.QrPackageSapOrderItem;
+import com.abi.qms.platform.dao.entity.QrRepertoryColumn;
+import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.enums.BoxMappingActiveStatusEnum;
+import com.abi.qms.platform.dao.enums.CodePackageOrderTypeEnum;
+import com.abi.qms.platform.dao.enums.FactoryTypeEnum;
+import com.abi.qms.platform.dao.enums.FirstFactoryEnum;
+import com.abi.qms.platform.dao.enums.InvalidEnum;
+import com.abi.qms.platform.dao.enums.MaterialTypeEnum;
+import com.abi.qms.platform.dao.enums.QrPackageApplyStatusEnum;
+import com.abi.qms.platform.dao.enums.QrPackageGenerateStatusEnum;
+import com.abi.qms.platform.dao.enums.QrRepertoryTypeEnum;
+import com.abi.qms.platform.dao.enums.QrTypeEnum;
+import com.abi.qms.platform.dao.enums.TrueFalseEnum;
+import com.abi.qms.platform.dao.mapper.BaseActiveMapper;
+import com.abi.qms.platform.dao.mapper.BaseBrandMapper;
+import com.abi.qms.platform.dao.mapper.BaseFactoryMapper;
+import com.abi.qms.platform.dao.mapper.BaseMaterialMapper;
+import com.abi.qms.platform.dao.mapper.QrBoxCodeFormatMapper;
+import com.abi.qms.platform.dao.mapper.QrBoxMappingMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageBatchMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageDownloadRecordMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageSapOrderItemMapper;
+import com.abi.qms.platform.dao.mapper.QrRepertoryColumnMapper;
 import com.abi.qms.platform.dao.tablestore.entity.QrCode;
-import com.abi.qms.platform.dao.vo.result.*;
-import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.*;
+import com.abi.qms.platform.dao.vo.result.ActivationRecordVO;
+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.QrPackageVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageWxVO;
+import com.abi.qms.platform.dao.vo.result.QrSingleCheckVO;
+import com.abi.qms.platform.dao.vo.result.WxQrPackageDetailVO;
+import com.abi.qms.platform.dto.req.ActivationRecordReq;
+import com.abi.qms.platform.dto.req.DeleteQrPackageReq;
+import com.abi.qms.platform.dto.req.DownloadQrPackageReq;
+import com.abi.qms.platform.dto.req.GetPackageCodeReq;
+import com.abi.qms.platform.dto.req.GetQrPackageDetailReq;
+import com.abi.qms.platform.dto.req.GetQrSingleCheckDetailCodeReq;
+import com.abi.qms.platform.dto.req.InvalidQrPackageReq;
+import com.abi.qms.platform.dto.req.InvalidQrSingleReq;
+import com.abi.qms.platform.dto.req.ListQrPackageReq;
+import com.abi.qms.platform.dto.req.ListQrPackageWxReq;
+import com.abi.qms.platform.dto.req.PassQrPackageReq;
+import com.abi.qms.platform.dto.req.QrOneBoxCodeMappingReq;
+import com.abi.qms.platform.dto.req.QrOnePackageBatchReq;
+import com.abi.qms.platform.dto.req.RefuseQrPackageReq;
+import com.abi.qms.platform.dto.req.ReplenishActivationReq;
+import com.abi.qms.platform.dto.req.SaveQrPackageReq;
+import com.abi.qms.platform.dto.req.SendMobileMsgReq;
+import com.abi.qms.platform.dto.req.ValidSAPOrderNoAndMaterialReq;
+import com.abi.qms.platform.dto.req.WxQrPackageDetailReq;
+import com.abi.qms.platform.dto.res.ActivationRecordRes;
+import com.abi.qms.platform.dto.res.GetPackageCodeRes;
+import com.abi.qms.platform.dto.res.GetQrPackageDetailRes;
+import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
+import com.abi.qms.platform.dto.res.ListQrPackageRes;
+import com.abi.qms.platform.dto.res.ListQrPackageWxRes;
+import com.abi.qms.platform.dto.res.ValidSAPOrderNoAndMaterialRes;
+import com.abi.qms.platform.dto.res.WxQrPackageDetailRes;
 import com.abi.qms.platform.infrastructure.constant.RedisKey;
 import com.abi.qms.platform.infrastructure.mq.GenerateCodeConsumer;
-import com.abi.qms.platform.infrastructure.util.*;
+import com.abi.qms.platform.infrastructure.util.AssertUtil;
+import com.abi.qms.platform.infrastructure.util.FreeMarkerUtils;
+import com.abi.qms.platform.infrastructure.util.OssFileDownloadUtil;
+import com.abi.qms.platform.infrastructure.util.PageUtil;
+import com.abi.qms.platform.infrastructure.util.RandomCodeUtils;
+import com.abi.qms.platform.infrastructure.util.SendmailUtil;
+import com.abi.qms.platform.infrastructure.util.SmsUtil;
+import com.abi.qms.platform.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.FactoryService;
 import com.abi.qms.platform.service.MaterialService;
 import com.abi.qms.platform.service.QrPackageService;
@@ -36,7 +104,11 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
 import javax.servlet.http.HttpServletResponse;
 import java.text.MessageFormat;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -187,12 +259,12 @@ public class QrPackageServiceImpl implements QrPackageService {
 
         //3-如果是盖码,那么查询盖码得默认箱码幅面,并放入入参
         QueryWrapper<QrBoxCodeFormat> formatQw = new QueryWrapper<>();
-        formatQw.eq("is_sys",1);
+        formatQw.eq("is_sys", 1);
         //1-盖码默认幅面
-        formatQw.eq("sys_type",1);
-        formatQw.eq("is_delete",0);
+        formatQw.eq("sys_type", 1);
+        formatQw.eq("is_delete", 0);
         List<QrBoxCodeFormat> beerFormatList = qrBoxCodeFormatMapper.selectList(formatQw);
-        if(CollectionUtil.isEmpty(beerFormatList)){
+        if (CollectionUtil.isEmpty(beerFormatList)) {
             throw new BusinessException("盖码默认幅面与码格式不存在,请检查初始数据");
         }
         QrBoxCodeFormat beerFormat = beerFormatList.get(0);
@@ -309,21 +381,21 @@ public class QrPackageServiceImpl implements QrPackageService {
         }
 
         //根据类型判断订单号不能为空
-        if(CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType()) && StringUtils.isBlank(req.getSapOrderNo())){
+        if (CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType()) && StringUtils.isBlank(req.getSapOrderNo())) {
             throw new BusinessException("SAP订单号不能为空");
         }
-        if(CodePackageOrderTypeEnum.BOOKING_ORDER.is(req.getOrderType()) && StringUtils.isBlank(req.getBookingOrder())){
+        if (CodePackageOrderTypeEnum.BOOKING_ORDER.is(req.getOrderType()) && StringUtils.isBlank(req.getBookingOrder())) {
             throw new BusinessException("预订单号不能为空");
         }
 
         //如果SAP订单号和物料有重复数据,需提交额外申请原因
-        if(StringUtils.isNotBlank(req.getSapOrderNo()) && req.getReasonApply()==null){
+        if (StringUtils.isNotBlank(req.getSapOrderNo()) && req.getReasonApply() == null) {
             ValidSAPOrderNoAndMaterialReq reqValid = new ValidSAPOrderNoAndMaterialReq();
             reqValid.setMaterialId(req.getMaterialId());
             reqValid.setSapOrderNo(req.getSapOrderNo());
             reqValid.setApplyNumber(req.getQrNumber());
             ValidSAPOrderNoAndMaterialRes validSAPOrderNoAndMaterialRes = validSAPOrderNoAndMaterial(reqValid);
-            if(TrueFalseEnum.TRUE.is(validSAPOrderNoAndMaterialRes.getIsOverstepNum())){
+            if (TrueFalseEnum.TRUE.is(validSAPOrderNoAndMaterialRes.getIsOverstepNum())) {
                 throw new BusinessException("该SAP订单号和物料已超额申请码包,若仍需申请需要提交额外码包申请原因");
             }
 
@@ -341,8 +413,8 @@ public class QrPackageServiceImpl implements QrPackageService {
         //查询物料信息
         BaseMaterial material = baseMaterialMapper.selectById(req.getMaterialId());
         AssertUtil.isNull(material, "物料信息不存在");
-        if(QrTypeEnum.CARTON.is(getPackageCode(material.getMaterialType()))
-            && req.getBoxCodeFormatId()==null){
+        if (QrTypeEnum.CARTON.is(getPackageCode(material.getMaterialType()))
+                && req.getBoxCodeFormatId() == null) {
             throw new BusinessException("箱码幅面为空");
         }
 
@@ -447,11 +519,12 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * 活动详情封装出参,显示品牌名称
+     *
      * @param res
      * @param packageActive
      */
 
-    private void getBrandCodeName(GetQrPackageDetailRes res,PackageActiveVO packageActive){
+    private void getBrandCodeName(GetQrPackageDetailRes res, PackageActiveVO packageActive) {
 
 //        res.setActiveCode(packageActive.getActiveCode());
 //        res.setActiveName(packageActive.getActiveName());
@@ -592,7 +665,7 @@ public class QrPackageServiceImpl implements QrPackageService {
                 .setQrPackageId(qrPackage.getId());
         qrPackageDownloadRecordMapper.insert(downloadRecord);
         //更新码包表下载时间
-        QrPackage qrPackages=new QrPackage()
+        QrPackage qrPackages = new QrPackage()
                 .setDownloadTime(LocalDateTime.now());
         qrPackageMapper.updateById(qrPackages);
     }
@@ -830,22 +903,22 @@ public class QrPackageServiceImpl implements QrPackageService {
     }
 
     @Override
-    public GetPackageCodeRes getPackageCodeType(GetPackageCodeReq req){
+    public GetPackageCodeRes getPackageCodeType(GetPackageCodeReq req) {
         //1-查询sap订单明细
         QrPackageSapOrderItem orderItem = qrPackageSapOrderItemMapper.selectById(req.getOrderItemId());
-        AssertUtil.isNull(orderItem,"订单明细不存在");
+        AssertUtil.isNull(orderItem, "订单明细不存在");
 
         //2-查询对应物料
         BaseMaterial material = materialService.getMaterialByCode(orderItem.getSapMaterialId());
-        AssertUtil.isNull(material,String.format("SAP物料%s未创建对应的QMS系统内物料!",orderItem.getSapMaterialId()));
+        AssertUtil.isNull(material, String.format("SAP物料%s未创建对应的QMS系统内物料!", orderItem.getSapMaterialId()));
 
         //3-查询包材厂
         BaseFactory coverFactory = factoryService.getFactoryByCode(orderItem.getSapCoverFactoryId(), FactoryTypeEnum.COVER.getCode());
-        AssertUtil.isNull(coverFactory,String.format("SAP包材厂%s未创建对应的QMS系统内包材厂!",orderItem.getSapCoverFactoryId()));
+        AssertUtil.isNull(coverFactory, String.format("SAP包材厂%s未创建对应的QMS系统内包材厂!", orderItem.getSapCoverFactoryId()));
 
         //4-查询啤酒厂
         BaseFactory beerFactory = factoryService.getFactoryByCode(orderItem.getSapBeerFactoryId(), FactoryTypeEnum.BEER.getCode());
-        AssertUtil.isNull(beerFactory,String.format("SAP啤酒厂%s未创建对应的QMS系统内啤酒厂!",orderItem.getSapBeerFactoryId()));
+        AssertUtil.isNull(beerFactory, String.format("SAP啤酒厂%s未创建对应的QMS系统内啤酒厂!", orderItem.getSapBeerFactoryId()));
 
         GetPackageCodeRes res = new GetPackageCodeRes();
         res.setFactoryCoverId(coverFactory.getId());
@@ -873,19 +946,65 @@ public class QrPackageServiceImpl implements QrPackageService {
         return res;
     }
 
+    @Override
+    public WxQrPackageDetailRes getWxQrPackageDetail(WxQrPackageDetailReq req) {
+
+        //详情
+        WxQrPackageDetailVO detail = qrPackageMapper.getWxQrPackageDetail(req);
+        WxQrPackageDetailRes res = PojoConverterUtils.copy(detail, WxQrPackageDetailRes.class);
+
+        //箱码列表
+        QueryWrapper<QrBoxMapping> qw = new QueryWrapper<>();
+        qw.eq("package_id", req.getPackageId());
+        qw.eq("is_delete", 0);
+        List<QrBoxMapping> boxMappingList = qrBoxMappingMapper.selectList(qw);
+        List<WxQrPackageDetailRes.QrBoxMappingBean> beanList = PojoConverterUtils.copyList(boxMappingList, WxQrPackageDetailRes.QrBoxMappingBean.class);
+        res.setQrBoxMappingBeanList(beanList);
+
+        return res;
+    }
+
+    @Override
+    public void replenishActivation(ReplenishActivationReq req) {
+
+        QueryWrapper<QrBoxMapping> qw = new QueryWrapper<>();
+        qw.eq("box_code", req.getBoxCode());
+        qw.eq("is_delete", 0);
+        QrBoxMapping qrBoxMapping = qrBoxMappingMapper.selectOne(qw);
+        qrBoxMapping.setActiveTime(LocalDateTime.now());
+        qrBoxMapping.setActiveStatus(BoxMappingActiveStatusEnum.ACTIVATED.getCode());
+        qrBoxMapping.setActiveUserId(userUtil.getUser().getId());
+        qrBoxMapping.setActiveUserName(userUtil.getUser().getUserName());
+        qrBoxMapping.setRemark(req.getReason());
+
+        qrBoxMappingMapper.updateById(qrBoxMapping);
+
+    }
+
+    @Override
+    public ActivationRecordRes getActivationRecord(ActivationRecordReq req) {
+        ActivationRecordRes res = new ActivationRecordRes();
+
+        List<ActivationRecordVO> recordVOList = qrBoxMappingMapper.getActivationRecord(req);
+        List<ActivationRecordRes.ActivationRecordBean> beanList = PojoConverterUtils.copyList(recordVOList, ActivationRecordRes.ActivationRecordBean.class);
+        res.setActivationRecordBeanList(beanList);
+        return res;
+    }
+
     /**
      * 根据物料类型转换码类型
      * 物料类型: 3-罐子 4-瓶盖 5-纸板箱
      * 码类型:1-箱码 2-盖码
+     *
      * @param type
      * @return
      */
-    public Integer getPackageCode(Integer type){
+    public Integer getPackageCode(Integer type) {
         if (MaterialTypeEnum.CARTON.is(type)) {
-            return  QrTypeEnum.CARTON.getCode();
-        }else if(MaterialTypeEnum.BOTTLE_CAP.is(type) || MaterialTypeEnum.JAR.is(type)){
+            return QrTypeEnum.CARTON.getCode();
+        } else if (MaterialTypeEnum.BOTTLE_CAP.is(type) || MaterialTypeEnum.JAR.is(type)) {
             return QrTypeEnum.CAP.getCode();
-        }else{
+        } else {
             throw new BusinessException("物料类型和对应的箱码类型不匹配!");
         }
 

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

@@ -55,13 +55,13 @@
     <select id="getPrintingDetail" resultType="com.abi.qms.platform.dao.vo.result.PrintingDetailVO">
         select
         qbm.begin_qr_code,qbm.end_qr_code,qbm.create_time,qbm.box_code,qbm.qr_code_count,
-        qp.factory_cover_level_two_id,qp.factory_beer_id
+        qp.factory_cover_level_two_id,qp.factory_beer_id,bm.material_name
         from qr_box_mapping qbm
         inner join qr_package qp on qp.id=qbm.package_id
         inner join base_material bm on bm.id=qp.material_id
         <where>
-            <if test="packageId != null and packageId!='' ">
-                qbm.package_id = #{packageId}
+            <if test="boxCode != null and boxCode!='' ">
+                qbm.box_code = #{boxCode}
             </if>
         </where>
     </select>
@@ -84,7 +84,8 @@
     </select>
 
 
-    <select id="queryWxQrBoxMappingDetails" resultType="com.abi.qms.platform.dao.vo.result.QueryWxQrBoxMappingDetailsVO">
+    <select id="queryWxQrBoxMappingDetails"
+            resultType="com.abi.qms.platform.dao.vo.result.QueryWxQrBoxMappingDetailsVO">
         SELECT
             mapping.box_code ,
             material.material_name,
@@ -98,4 +99,20 @@
             WHERE mapping.box_code = #{req.boxCode} AND mapping.is_delete = 0
     </select>
 
+    <select id="getActivationRecord" resultType="com.abi.qms.platform.dao.vo.result.ActivationRecordVO">
+        select qbm.box_code,ba.active_name,bm.material_name,
+            qbm.active_time,ui.employee_no as activeAccount
+        from qr_box_mapping qbm
+        left join qr_package qp on qbm.package_id=qp.id
+        left join base_material bm on bm.id = qp.material_id
+        left join base_active ba on ba.id =bm.active_id
+        left join user_info ui on ui.id=qbm.create_by
+        <where>
+            qbm.active_status=1
+            <if test="req.month != null and req.month !=''">
+                AND DATE_FORMAT(qbm.active_time,'%Y-%m') = #{req.month}
+            </if>
+        </where>
+    </select>
+
 </mapper>

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

@@ -207,12 +207,15 @@
     </select>
 
     <select id="listWxQrPackage" resultType="com.abi.qms.platform.dao.vo.result.QrPackageWxVO">
-        select qp.id as packageId,qbm.index_begin,qbm.index_end,qbm.active_status,ba.active_name,bm.material_name
+        select qp.id as packageId,
+            sum(if(qbm.active_status=1,1,0)) as active_box_count,
+            count(1) as total_box_count,
+            ba.active_name,
+            bm.material_name
         from qr_package qp
-        inner join base_material bm on bm.id=qp.material_id
-        inner join qr_box_mapping qbm on qp.id=qbm.package_id
-        inner join base_active_qr_package_mapping baqpm on baqpm.qr_package_id=qp.id
-        inner join base_active ba on ba.id=baqpm.active_id
+        inner join qr_box_mapping qbm on qp.id = qbm.package_id
+        inner join base_material bm on bm.id = qp.material_id
+        left join base_active ba on ba.id = bm.active_id
         <where>
             <if test="req.queryParam != null and req.queryParam != ''">
                 AND (qp.id like binary concat('%',#{req.queryParam},'%')
@@ -220,9 +223,29 @@
                 or bm.material_name like binary concat('%',#{req.queryParam},'%'))
             </if>
         </where>
+        group by qp.id
         order by qp.create_time desc
     </select>
 
+
+    <select id="getWxQrPackageDetail" resultType="com.abi.qms.platform.dao.vo.result.WxQrPackageDetailVO">
+        select qp.id as packageId,ba.id as activeId,ba.active_name,
+            ba.active_type,bm.material_name,qp.sap_order_no,
+            sum(if(qbm.active_status=1,1,0)) as active_box_count,
+            count(1) as total_box_count,
+            case when qp.qr_type = 2 then qp.qr_number else 0 end as capNum
+        from qr_package qp
+        inner join qr_box_mapping qbm on qp.id=qbm.package_id
+        inner join base_material bm on bm.id = qp.material_id
+        left join base_active ba on ba.id =bm.active_id
+        <where>
+            <if test="req.packageId != null and req.packageId != ''">
+               qp.id = #{req.packageId}
+            </if>
+        </where>
+        group by qp.id
+    </select>
+
     <!--6.03已废弃-->
     <!--通过码活动id查询关联码包列表-->
     <!--    <select id="listPackageById" resultType="com.abi.qms.platform.dao.vo.result.ActivePackageVO">-->