Browse Source

fix: 箱码合一相关接口添加

fangxinjian 4 years ago
parent
commit
d67f87cd6c
15 changed files with 792 additions and 51 deletions
  1. 76 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrBoxCodeUnityController.java
  2. 22 21
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrBoxMapping.java
  3. 12 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/QrBoxMappingMapper.java
  4. 83 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrBoxMappingVO.java
  5. 25 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ActiveBoxCodeReq.java
  6. 41 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/GenerateBarCodeReq.java
  7. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ListQrBoxCodeMappingReq.java
  8. 20 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/QrBoxCodeUploadReq.java
  9. 111 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListQrBoxCodeMappingRes.java
  10. 23 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/QrBoxCodeUploadRes.java
  11. 30 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/UploadFileRes.java
  12. 49 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrBoxMappingService.java
  13. 233 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrBoxMappingServiceImpl.java
  14. 34 21
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrBoxMappingMapper.xml
  15. 11 9
      abi-cloud-qr-platform-server/src/test/java/com/abi/qms/platform/TableStorePlusTest.java

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

@@ -0,0 +1,76 @@
+package com.abi.qms.platform.controller.console;
+
+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.res.ListQrBoxCodeMappingRes;
+import com.abi.qms.platform.dto.res.QrBoxCodeUploadRes;
+import com.abi.qms.platform.service.QrBoxMappingService;
+import com.abi.task.common.api.base.BaseResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 11:15
+ * @description: 箱码合一
+ */
+@RestController
+@Api(tags = "箱码合一")
+@RequestMapping("/boxCodeUnity")
+public class QrBoxCodeUnityController {
+
+    @Autowired
+    private QrBoxMappingService qrBoxMappingService;
+
+    @ApiOperation("生成条形码")
+    @PostMapping("/generateBarCode")
+    public BaseResponse generateBarCode(@RequestBody GenerateBarCodeReq generateBarCodeReq) {
+
+        qrBoxMappingService.generateBarCode(generateBarCodeReq);
+        return BaseResponse.create();
+    }
+
+    @ApiOperation("箱码合一文件上传")
+    @PostMapping("/uploads")
+    public BaseResponse<QrBoxCodeUploadRes> uploadCodeFiles(HttpServletRequest request) {
+
+        //拿到文件
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> map = multipartRequest.getFileMap();
+
+        QrBoxCodeUploadRes res = qrBoxMappingService.uploadCodeFiles(map);
+
+        return BaseResponse.create(res);
+
+    }
+
+    @ApiOperation("分页查询箱码合一列表")
+    @GetMapping("/listQrBoxCodeMapping")
+    public BaseResponse<ListQrBoxCodeMappingRes> listQrBoxCodeMapping(ListQrBoxCodeMappingReq listQrBoxCodeMappingReq) {
+
+        ListQrBoxCodeMappingRes res = qrBoxMappingService.listQrBoxCodeMapping(listQrBoxCodeMappingReq);
+        return BaseResponse.create(res);
+    }
+
+    @ApiOperation("激活/作废码包")
+    @PostMapping("/active")
+    public BaseResponse activeBoxCode(@RequestBody ActiveBoxCodeReq activeBoxCodeReq) {
+
+        qrBoxMappingService.activeBoxCode(activeBoxCodeReq);
+        return BaseResponse.create();
+    }
+
+
+}

+ 22 - 21
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrBoxMapping.java

@@ -2,6 +2,7 @@ package com.abi.qms.platform.dao.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -20,68 +21,68 @@ import java.time.LocalDateTime;
 @Schema(name="箱码关联表对象", description="箱码关联表")
 public class QrBoxMapping {
 
-	@Schema(name = "id")
+	@ApiModelProperty(value = "id")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-	@Schema(name = "条码序号")
+	@ApiModelProperty(value = "条码序号")
     private String boxCode;
 
-	@Schema(name = "起始序号")
+	@ApiModelProperty(value = "起始序号")
     private Long indexBegin;
 
-	@Schema(name = "结束序号")
+	@ApiModelProperty(value = "结束序号")
     private Long indexEnd;
 
-	@Schema(name = "起始二维码")
+	@ApiModelProperty(value = "起始二维码")
     private String beginQrCode;
 
-	@Schema(name = "结束二维码")
+	@ApiModelProperty(value = "结束二维码")
     private String endQrCode;
 
-	@Schema(name = "条数")
+	@ApiModelProperty(value = "条数")
     private Long qrCodeCount;
 
-	@Schema(name = "激活状态")
+	@ApiModelProperty(value = "激活状态")
     private Integer activeStatus;
 
-	@Schema(name = "激活时间")
+	@ApiModelProperty(value = "激活时间")
     private LocalDateTime activeTime;
 
-	@Schema(name = "激活人id")
+	@ApiModelProperty(value = "激活人id")
     private Long activeUserId;
 
-	@Schema(name = "激活人姓名")
+	@ApiModelProperty(value = "激活人姓名")
     private String activeUserName;
 
-	@Schema(name = "码包id")
+	@ApiModelProperty(value = "码包id")
     private Long packageId;
 
-	@Schema(name = "项目号")
+	@ApiModelProperty(value = "项目号")
     private String projectNo;
 
-	@Schema(name = "版号")
+	@ApiModelProperty(value = "版号")
     private String boardNo;
 
-	@Schema(name = "备注")
+	@ApiModelProperty(value = "备注")
     private String remark;
 
-	@Schema(name = "创建人姓名")
+	@ApiModelProperty(value = "创建人姓名")
     private String createUserName;
 
-	@Schema(name = "创建时间")
+	@ApiModelProperty(value = "创建时间")
     private LocalDateTime createTime;
 
-	@Schema(name = "创建人id")
+	@ApiModelProperty(value = "创建人id")
     private Long createBy;
 
-	@Schema(name = "修改时间")
+	@ApiModelProperty(value = "修改时间")
     private LocalDateTime updateTime;
 
-	@Schema(name = "修改人id")
+	@ApiModelProperty(value = "修改人id")
     private Long updateBy;
 
-	@Schema(name = "是否删除")
+	@ApiModelProperty(value = "是否删除")
     private Integer isDelete;
 
 

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

@@ -1,7 +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.QrBoxMappingVO;
+import com.abi.qms.platform.dto.req.ListQrBoxCodeMappingReq;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -12,4 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface QrBoxMappingMapper extends BaseMapper<QrBoxMapping> {
 
+    /**
+     * 分页查询箱码合一
+     *
+     * @param page
+     * @param req
+     * @return
+     */
+    IPage<QrBoxMappingVO> listQrBoxCodeMapping(IPage page, @Param("req") ListQrBoxCodeMappingReq req);
 }

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

@@ -0,0 +1,83 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 14:00
+ * @description:
+ */
+@Data
+@ApiModel
+public class QrBoxMappingVO implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "条码序号")
+    private String boxCode;
+
+    @ApiModelProperty(value = "起始序号")
+    private Long indexBegin;
+
+    @ApiModelProperty(value = "结束序号")
+    private Long indexEnd;
+
+    @ApiModelProperty(value = "起始二维码")
+    private String beginQrCode;
+
+    @ApiModelProperty(value = "结束二维码")
+    private String endQrCode;
+
+    @ApiModelProperty(value = "条数")
+    private Long qrCodeCount;
+
+    @ApiModelProperty(value = "激活状态 0-未激活 1-已激活 9-已作废")
+    private Integer activeStatus;
+
+    @ApiModelProperty(value = "激活时间")
+    private LocalDateTime activeTime;
+
+    @ApiModelProperty(value = "激活人id")
+    private Long activeUserId;
+
+    @ApiModelProperty(value = "激活人姓名")
+    private String activeUserName;
+
+    @ApiModelProperty(value = "码包id")
+    private Long packageId;
+
+    @ApiModelProperty(value = "项目号")
+    private String projectNo;
+
+    @ApiModelProperty(value = "版号")
+    private String boardNo;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "创建人姓名")
+    private String createUserName;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "创建人id")
+    private Long createBy;
+
+    @ApiModelProperty(value = "修改时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "修改人id")
+    private Long updateBy;
+
+    @ApiModelProperty(value = "是否删除")
+    private Integer isDelete;
+
+}

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

@@ -0,0 +1,25 @@
+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/05/27 17:10
+ * @description: 激活码包入参
+ */
+@Data
+@ApiModel
+public class ActiveBoxCodeReq implements Serializable {
+
+    @NotNull(message = "id为空")
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "激活状态 0-未激活 1-已激活 9-已作废")
+    private Integer activeStatus;
+}

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

@@ -0,0 +1,41 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 11:23
+ * @description: 生成条形码入参
+ */
+@Data
+@ApiModel
+public class GenerateBarCodeReq implements Serializable {
+
+    @ApiModelProperty(value = "起始序号")
+    private Long indexBegin;
+
+    @ApiModelProperty(value = "结束序号")
+    private Long indexEnd;
+
+    @ApiModelProperty(value = "起始二维码")
+    private String beginQrCode;
+
+    @ApiModelProperty(value = "结束二维码")
+    private String endQrCode;
+
+    @ApiModelProperty(value = "项目号")
+    private String projectNo;
+
+    @ApiModelProperty(value = "版号")
+    private String boardNo;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+
+}

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

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.dto.req;
+
+import com.abi.task.common.api.base.PageReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 13:49
+ * @description: 箱码合一分页查询入参
+ */
+@Data
+@ApiModel
+public class ListQrBoxCodeMappingReq extends PageReq implements Serializable {
+
+    @ApiModelProperty(value = "激活状态 0-未激活 1-已激活 9-已作废")
+    private Integer activeStatus;
+
+}

+ 20 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/QrBoxCodeUploadReq.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/05/27 15:06
+ * @description: 箱码合一上传入参
+ */
+@Data
+@ApiModel
+public class QrBoxCodeUploadReq implements Serializable {
+
+    @ApiModelProperty(value = "packCode")
+    private String packCode;
+}

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

@@ -0,0 +1,111 @@
+package com.abi.qms.platform.dto.res;
+
+import com.abi.task.common.api.base.PageResp;
+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.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 13:50
+ * @description: 箱码合一分页查询出参
+ */
+@Data
+@ApiModel
+public class ListQrBoxCodeMappingRes extends PageResp implements Serializable {
+
+
+    @ApiModelProperty("箱码合一列表")
+    private List<QrBoxMappingBean> qrBoxMappingBeanList;
+
+
+    /**
+     * 箱码合一Bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListQrBoxCodeMappingRes_QrBoxMappingBean")
+    public static class QrBoxMappingBean implements Serializable {
+
+        @Schema(name = "id")
+        private Long id;
+
+        @Schema(name = "条码序号")
+        private String boxCode;
+
+        @Schema(name = "起始序号")
+        private Long indexBegin;
+
+        @Schema(name = "结束序号")
+        private Long indexEnd;
+
+        @Schema(name = "起始二维码")
+        private String beginQrCode;
+
+        @Schema(name = "结束二维码")
+        private String endQrCode;
+
+        @Schema(name = "条数")
+        private Long qrCodeCount;
+
+        @Schema(name = "激活状态")
+        private Integer activeStatus;
+
+        @Schema(name = "激活时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime activeTime;
+
+        @Schema(name = "激活人id")
+        private Long activeUserId;
+
+        @Schema(name = "激活人姓名")
+        private String activeUserName;
+
+        @Schema(name = "码包id")
+        private Long packageId;
+
+        @Schema(name = "项目号")
+        private String projectNo;
+
+        @Schema(name = "版号")
+        private String boardNo;
+
+        @Schema(name = "备注")
+        private String remark;
+
+        @Schema(name = "创建人姓名")
+        private String createUserName;
+
+        @Schema(name = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @Schema(name = "创建人id")
+        private Long createBy;
+
+        @Schema(name = "修改时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+        @Schema(name = "修改人id")
+        private Long updateBy;
+
+        @Schema(name = "是否删除")
+        private Integer isDelete;
+
+
+    }
+
+
+}

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

@@ -0,0 +1,23 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 15:14
+ * @description:
+ */
+@Data
+@ApiModel
+public class QrBoxCodeUploadRes extends HashMap<String, Object> implements Serializable {
+
+    @Override
+    public QrBoxCodeUploadRes put(String key, Object value) {
+        super.put(key, value);
+        return this;
+    }
+}

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

@@ -0,0 +1,30 @@
+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;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 15:15
+ * @description:
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@ApiModel(value = "uploadFileRes")
+public class UploadFileRes implements Serializable {
+
+    private static final long serialVersionUID = -775733940896967820L;
+    @ApiModelProperty(value = "成功失败标志位")
+    private String flag;
+
+    @ApiModelProperty(value = "描述")
+    private String msg;
+}

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

@@ -0,0 +1,49 @@
+package com.abi.qms.platform.service;
+
+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.res.ListQrBoxCodeMappingRes;
+import com.abi.qms.platform.dto.res.QrBoxCodeUploadRes;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 11:18
+ * @description:
+ */
+public interface QrBoxMappingService {
+
+    /**
+     * 生成条形码
+     *
+     * @param generateBarCodeReq
+     */
+    void generateBarCode(GenerateBarCodeReq generateBarCodeReq);
+
+    /**
+     * 分页查询箱码合一
+     *
+     * @param listQrBoxCodeMappingReq
+     * @return
+     */
+    ListQrBoxCodeMappingRes listQrBoxCodeMapping(ListQrBoxCodeMappingReq listQrBoxCodeMappingReq);
+
+    /**
+     * 箱码合一文件上传
+     *
+     * @param map
+     * @return
+     */
+    QrBoxCodeUploadRes uploadCodeFiles(Map<String, MultipartFile> map);
+
+    /**
+     * 根据ID激活或作废码包
+     *
+     * @param activeBoxCodeReq
+     */
+    void activeBoxCode(ActiveBoxCodeReq activeBoxCodeReq);
+
+}

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

@@ -0,0 +1,233 @@
+package com.abi.qms.platform.service.impl;
+
+import com.abi.qms.platform.dao.entity.QrBoxMapping;
+import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.enums.BoxMappingActiveStatusEnum;
+import com.abi.qms.platform.dao.mapper.QrBoxMappingMapper;
+import com.abi.qms.platform.dao.tablestore.entity.QrCode;
+import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
+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.res.ListQrBoxCodeMappingRes;
+import com.abi.qms.platform.dto.res.QrBoxCodeUploadRes;
+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;
+import com.abi.qms.platform.service.QrBoxMappingService;
+import com.abi.task.common.api.exception.BusinessException;
+import com.abi.task.common.tablestore.TableStorePlusUtils;
+import com.abi.task.common.utils.PojoConverterUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/27 11:19
+ * @description:
+ */
+@Service
+@Slf4j
+public class QrBoxMappingServiceImpl implements QrBoxMappingService {
+
+    @Autowired
+    private QrBoxMappingMapper qrBoxMappingMapper;
+
+    @Autowired
+    private TableStorePlusUtils tableStorePlusUtils;
+
+    @Autowired
+    private UserUtil userUtil;
+
+    private static final String SUCCESS = "success";
+
+    private static final String FAIL = "fail";
+
+    @Override
+    public void generateBarCode(GenerateBarCodeReq req) {
+
+        //获取登录用户信息
+        UserInfo user = userUtil.getUser();
+
+        //获取起始序号和结束序号
+        Long indexBeagin = getCodeIndex(req.getBeginQrCode());
+        Long indexEnd = getCodeIndex(req.getEndQrCode());
+        //条数
+        Long qrCodeCount = indexEnd - indexBeagin;
+        if (qrCodeCount < 0) {
+            throw new BusinessException("起始序号大于结束序号,无法生成条形码");
+        }
+
+        QrBoxMapping qbm = new QrBoxMapping();
+        qbm.setBoxCode(String.valueOf(IdWorker.getId()));
+        qbm.setIndexBegin(indexBeagin);
+        qbm.setIndexEnd(indexEnd);
+        qbm.setBeginQrCode(req.getBeginQrCode());
+        qbm.setEndQrCode(req.getEndQrCode());
+        qbm.setQrCodeCount(qrCodeCount);
+        qbm.setActiveStatus(BoxMappingActiveStatusEnum.NOT_ACTIVE.getCode());
+        qbm.setProjectNo(req.getProjectNo());
+        qbm.setBoardNo(req.getBoardNo());
+        qbm.setRemark(req.getRemark());
+        qbm.setCreateUserName(user.getUserName());
+        qbm.setCreateBy(user.getId());
+        qrBoxMappingMapper.insert(qbm);
+
+    }
+
+    @Override
+    public ListQrBoxCodeMappingRes listQrBoxCodeMapping(ListQrBoxCodeMappingReq req) {
+
+        // 分页查询
+        IPage<QrBoxMappingVO> iPage = qrBoxMappingMapper.listQrBoxCodeMapping(PageUtil.createPage(req), req);
+        List<QrBoxMappingVO> qrboxMappingList = iPage.getRecords();
+
+        // 封装出参、放入分页信息
+        ListQrBoxCodeMappingRes res = new ListQrBoxCodeMappingRes();
+        PageUtil.copyPageInfo(res, iPage);
+        List<ListQrBoxCodeMappingRes.QrBoxMappingBean> beanList = PojoConverterUtils.copyList(qrboxMappingList, ListQrBoxCodeMappingRes.QrBoxMappingBean.class);
+        res.setQrBoxMappingBeanList(beanList);
+
+        return res;
+    }
+
+    @Override
+    public QrBoxCodeUploadRes uploadCodeFiles(Map<String, MultipartFile> map) {
+
+        QrBoxCodeUploadRes res = new QrBoxCodeUploadRes();
+        Map<String, UploadFileRes> resultMap = Maps.newHashMap();
+        map.entrySet().stream().forEach(o -> {
+            MultipartFile file = o.getValue();
+            //核心!!!上传文件
+            try {
+                //上传箱码文件
+                doUpload(file);
+                resultMap.put(o.getKey(), new UploadFileRes(SUCCESS, ""));
+            } catch (BusinessException e) {
+                log.info("文件上传失败");
+                resultMap.put(o.getKey(), new UploadFileRes(FAIL, e.getMessage()));
+            } catch (Exception e) {
+                log.info("文件上传异常", e);
+                resultMap.put(o.getKey(), new UploadFileRes(FAIL, ""));
+            }
+        });
+
+        res.put("data", resultMap);
+
+        return res;
+    }
+
+    @Override
+    public void activeBoxCode(ActiveBoxCodeReq req) {
+
+        //获取登录用户信息
+        UserInfo user = userUtil.getUser();
+
+        QrBoxMapping qrBoxMapping = qrBoxMappingMapper.selectById(req.getId());
+        AssertUtil.isNull(qrBoxMapping, "该箱码不存在!");
+
+        qrBoxMapping.setActiveStatus(req.getActiveStatus());
+        qrBoxMapping.setActiveTime(LocalDateTime.now());
+        qrBoxMapping.setActiveUserId(user.getId());
+        qrBoxMapping.setActiveUserName(user.getUserName());
+        qrBoxMapping.setUpdateBy(user.getId());
+        qrBoxMapping.setUpdateTime(LocalDateTime.now());
+
+        qrBoxMappingMapper.updateById(qrBoxMapping);
+
+    }
+
+
+    /**
+     * 根据主键查询已生成码包位置
+     *
+     * @param index 主键
+     * @return
+     */
+    private Long getCodeIndex(String index) {
+        QrCode qrCode = tableStorePlusUtils.getRow(QrCode.class, index);
+        return qrCode.getCodeIndex();
+    }
+
+    public void doUpload(MultipartFile file) {
+        if (file.isEmpty()) {
+            throw new BusinessException("文件为空,请重新选择文件");
+        }
+        InputStream inputStream = null;
+        BufferedReader reader = null;
+        String filename = file.getName();
+        String encryptCodeStr;
+
+        String first = null;
+        String last = null;
+
+        try {
+            inputStream = file.getInputStream();
+            //解决服务器上乱码
+            reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+
+            //1-逐行读取文件的码
+            while ((encryptCodeStr = reader.readLine()) != null) {
+                log.debug("{} line : {}", filename, encryptCodeStr);
+                if (StringUtils.isBlank(encryptCodeStr)) {
+                    continue;
+                }
+                //截取 去掉uri
+                encryptCodeStr = encryptCodeStr.substring(encryptCodeStr.lastIndexOf("/") + 1);
+
+                if (StringUtils.isBlank(first)) {
+                    first = encryptCodeStr;
+                }
+                last = encryptCodeStr;
+            }
+
+            //生成条形码
+            GenerateBarCodeReq req = new GenerateBarCodeReq();
+            req.setBeginQrCode(first);
+            req.setEndQrCode(last);
+            generateBarCode(req);
+
+        } catch (BusinessException e) {
+            throw e;
+        } catch (Exception e) {
+            log.warn("上传失败", e);
+            throw new BusinessException("上传失败");
+        } finally {
+            //关闭流
+            closeStream(inputStream, reader);
+        }
+    }
+
+    private void closeStream(InputStream inputStream, BufferedReader reader) {
+        try {
+            inputStream.close();
+        } catch (Exception e) {
+            log.warn("inputStream关闭失败");
+            e.printStackTrace();
+        }
+        if (reader != null) {
+            try {
+                reader.close();
+            } catch (Exception e) {
+                log.warn("reader关闭失败");
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+}

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

@@ -4,27 +4,27 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.abi.qms.platform.dao.entity.QrBoxMapping">
-        <id column="ID" property="id" />
-        <result column="BOX_CODE" property="boxCode" />
-        <result column="INDEX_BEGIN" property="indexBegin" />
-        <result column="INDEX_END" property="indexEnd" />
-        <result column="BEGIN_QR_CODE" property="beginQrCode" />
-        <result column="END_QR_CODE" property="endQrCode" />
-        <result column="QR_CODE_COUNT" property="qrCodeCount" />
-        <result column="ACTIVE_STATUS" property="activeStatus" />
-        <result column="ACTIVE_TIME" property="activeTime" />
-        <result column="ACTIVE_USER_ID" property="activeUserId" />
-        <result column="ACTIVE_USER_NAME" property="activeUserName" />
-        <result column="PACKAGE_ID" property="packageId" />
-        <result column="PROJECT_NO" property="projectNo" />
-        <result column="BOARD_NO" property="boardNo" />
-        <result column="REMARK" property="remark" />
-        <result column="CREATE_USER_NAME" property="createUserName" />
-        <result column="CREATE_TIME" property="createTime" />
-        <result column="CREATE_BY" property="createBy" />
-        <result column="UPDATE_TIME" property="updateTime" />
-        <result column="UPDATE_BY" property="updateBy" />
-        <result column="IS_DELETE" property="isDelete" />
+        <id column="ID" property="id"/>
+        <result column="BOX_CODE" property="boxCode"/>
+        <result column="INDEX_BEGIN" property="indexBegin"/>
+        <result column="INDEX_END" property="indexEnd"/>
+        <result column="BEGIN_QR_CODE" property="beginQrCode"/>
+        <result column="END_QR_CODE" property="endQrCode"/>
+        <result column="QR_CODE_COUNT" property="qrCodeCount"/>
+        <result column="ACTIVE_STATUS" property="activeStatus"/>
+        <result column="ACTIVE_TIME" property="activeTime"/>
+        <result column="ACTIVE_USER_ID" property="activeUserId"/>
+        <result column="ACTIVE_USER_NAME" property="activeUserName"/>
+        <result column="PACKAGE_ID" property="packageId"/>
+        <result column="PROJECT_NO" property="projectNo"/>
+        <result column="BOARD_NO" property="boardNo"/>
+        <result column="REMARK" property="remark"/>
+        <result column="CREATE_USER_NAME" property="createUserName"/>
+        <result column="CREATE_TIME" property="createTime"/>
+        <result column="CREATE_BY" property="createBy"/>
+        <result column="UPDATE_TIME" property="updateTime"/>
+        <result column="UPDATE_BY" property="updateBy"/>
+        <result column="IS_DELETE" property="isDelete"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -32,4 +32,17 @@
         id, box_code, index_begin, index_end, begin_qr_code, end_qr_code, qr_code_count, active_status, active_time, active_user_id, active_user_name, package_id, project_no, board_no, remark, create_user_name, create_time, create_by, update_time, update_by, is_delete
     </sql>
 
+    <select id="listQrBoxCodeMapping" resultType="com.abi.qms.platform.dao.vo.result.QrBoxMappingVO">
+        select
+        <include refid="Base_Column_List"/>
+        from qr_box_mapping
+        <where>
+            is_delete = 0
+            <if test="req.activeStatus != null ">
+                AND active_status = #{req.activeStatus}
+            </if>
+        </where>
+        order by create_time
+    </select>
+
 </mapper>

+ 11 - 9
abi-cloud-qr-platform-server/src/test/java/com/abi/qms/platform/TableStorePlusTest.java

@@ -1,15 +1,16 @@
 package com.abi.qms.platform;
-import java.time.LocalDateTime;
-import java.util.Arrays;
 
+import com.abi.qms.platform.dao.tablestore.entity.QrCode;
 import com.abi.task.common.tablestore.TableStorePlusUtils;
-import com.abi.task.common.tablestore.common.TableStoreEntity;
 import com.abi.task.common.tablestore.entity.DemoEntity;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.time.LocalDateTime;
+import java.util.Arrays;
+
 @SpringBootTest
 @Slf4j
 public class TableStorePlusTest {
@@ -18,7 +19,7 @@ public class TableStorePlusTest {
     private TableStorePlusUtils tableStorePlusUtils;
 
     @Test
-    public void testAddRow(){
+    public void testAddRow() {
         DemoEntity entity = new DemoEntity();
         entity.setQrCode("10293827182717");
         entity.setActName("活动1");
@@ -37,17 +38,18 @@ public class TableStorePlusTest {
         entity2.setActiveCount(33);
         entity2.setIsDog(false);
 
-        tableStorePlusUtils.putRow(Arrays.asList(entity,entity2));
+        tableStorePlusUtils.putRow(Arrays.asList(entity, entity2));
     }
 
     @Test
-    public void testGetRow(){
-        DemoEntity entity = tableStorePlusUtils.getRow(DemoEntity.class, "10293827182717");
-        log.info(entity.toString());
+    public void testGetRow() {
+        QrCode entity = tableStorePlusUtils.getRow(QrCode.class, "1397521498780426242");
+        Long codeIndex = entity.getCodeIndex();
+        log.info("======" + codeIndex);
     }
 
     @Test
-    public void testDeleteRow(){
+    public void testDeleteRow() {
         tableStorePlusUtils.deleteRow(DemoEntity.class, "10293827182717");
     }