ソースを参照

feat: 单码、码包、箱码统一添加作废字段

fangxinjian 4 年 前
コミット
9bc126fae3
22 ファイル変更549 行追加259 行削除
  1. 9 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrBoxCodeUnityController.java
  2. 8 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrPackageController.java
  3. 12 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/QrSingleCheckController.java
  4. 24 22
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrBoxMapping.java
  5. 4 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrPackage.java
  6. 13 13
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/BoxMappingActiveStatusEnum.java
  7. 48 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/InvalidEnum.java
  8. 6 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/tablestore/entity/QrCode.java
  9. 3 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrBoxMappingVO.java
  10. 58 55
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageVO.java
  11. 0 2
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ActiveBoxCodeReq.java
  12. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/InvalidQrPackageReq.java
  13. 22 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/InvalidQrSingleReq.java
  14. 4 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListQrBoxCodeMappingRes.java
  15. 46 43
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListQrPackageRes.java
  16. 2 0
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/GenerateCodeConsumer.java
  17. 8 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrBoxMappingService.java
  18. 101 73
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/QrPackageService.java
  19. 18 1
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrBoxMappingServiceImpl.java
  20. 133 43
      abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageServiceImpl.java
  21. 5 2
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrBoxMappingMapper.xml
  22. 3 1
      abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrPackageMapper.xml

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

@@ -71,7 +71,7 @@ public class QrBoxCodeUnityController {
         return BaseResponse.create(res);
     }
 
-    @ApiOperation("激活/作废码包")
+    @ApiOperation("激活箱码")
     @PostMapping("/active")
     public BaseResponse activeBoxCode(@RequestBody ActiveBoxCodeReq activeBoxCodeReq) {
 
@@ -79,6 +79,14 @@ public class QrBoxCodeUnityController {
         return BaseResponse.create();
     }
 
+    @ApiOperation("作废箱码")
+    @PostMapping("/invalid")
+    public BaseResponse invalidBoxCode(@RequestBody ActiveBoxCodeReq activeBoxCodeReq) {
+
+        qrBoxMappingService.invalidBoxCode(activeBoxCodeReq);
+        return BaseResponse.create();
+    }
+
     @ApiOperation("打印")
     @GetMapping("/printingDetail")
     public BaseResponse<PrintingDetailRes> getPrintingDetail(PrintingDetailReq printingDetailReq) {

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

@@ -92,4 +92,12 @@ public class QrPackageController {
         return BaseResponse.create(qrPackageService.validSAPOrderNoAndMaterial(req));
     }
 
+    @ApiOperation("作废码包")
+    @PostMapping("/invalid")
+    public BaseResponse invalidQrPackage(@RequestBody InvalidQrPackageReq invalidQrPackageReq) {
+
+        qrPackageService.invalidQrPackage(invalidQrPackageReq);
+        return BaseResponse.create();
+    }
+
 }

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

@@ -1,5 +1,7 @@
 package com.abi.qms.platform.controller.console;
+
 import com.abi.qms.platform.dto.req.GetQrSingleCheckDetailCodeReq;
+import com.abi.qms.platform.dto.req.InvalidQrSingleReq;
 import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
 import com.abi.qms.platform.service.QrPackageService;
 import com.abi.task.common.api.base.BaseResponse;
@@ -9,6 +11,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;
 
@@ -34,4 +38,12 @@ public class QrSingleCheckController {
         GetQrSingleCheckDetailRes result = qrPackageService.getQrSingleCheckDetail(getQrSingleCheckDetailCodeReq);
         return BaseResponse.create(result);
     }
+
+    @ApiOperation("作废")
+    @PostMapping("/invalid")
+    public BaseResponse invalidQrSingle(@RequestBody InvalidQrSingleReq invalidQrSingleReq) {
+
+        qrPackageService.invalidQrSingle(invalidQrSingleReq);
+        return BaseResponse.create();
+    }
 }

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

@@ -18,73 +18,75 @@ import java.time.LocalDateTime;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Schema(name="箱码关联表对象", description="箱码关联表")
+@Schema(name = "箱码关联表对象", description = "箱码关联表")
 public class QrBoxMapping {
 
-	@ApiModelProperty(value = "id")
+    @ApiModelProperty(value = "id")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-	@ApiModelProperty(value = "条码序号")
+    @ApiModelProperty(value = "条码序号")
     private String boxCode;
 
-	@ApiModelProperty(value = "起始序号")
+    @ApiModelProperty(value = "起始序号")
     private Long indexBegin;
 
-	@ApiModelProperty(value = "结束序号")
+    @ApiModelProperty(value = "结束序号")
     private Long indexEnd;
 
-	@ApiModelProperty(value = "起始二维码")
+    @ApiModelProperty(value = "起始二维码")
     private String beginQrCode;
 
-	@ApiModelProperty(value = "结束二维码")
+    @ApiModelProperty(value = "结束二维码")
     private String endQrCode;
 
-	@ApiModelProperty(value = "条数")
+    @ApiModelProperty(value = "条数")
     private Long qrCodeCount;
 
-	@ApiModelProperty(value = "激活状态")
+    @ApiModelProperty(value = "激活状态 0-未激活 1-已激活")
     private Integer activeStatus;
 
-	@ApiModelProperty(value = "激活时间")
+    @ApiModelProperty(value = "激活时间")
     private LocalDateTime activeTime;
 
-	@ApiModelProperty(value = "激活人id")
+    @ApiModelProperty(value = "激活人id")
     private Long activeUserId;
 
-	@ApiModelProperty(value = "激活人姓名")
+    @ApiModelProperty(value = "激活人姓名")
     private String activeUserName;
 
-	@ApiModelProperty(value = "码包id")
+    @ApiModelProperty(value = "码包id")
     private Long packageId;
 
-	@ApiModelProperty(value = "项目号")
+    @ApiModelProperty(value = "项目号")
     private String projectNo;
 
-	@ApiModelProperty(value = "版号")
+    @ApiModelProperty(value = "版号")
     private String boardNo;
 
-	@ApiModelProperty(value = "备注")
+    @ApiModelProperty(value = "备注")
     private String remark;
 
-	@ApiModelProperty(value = "创建人姓名")
+    @ApiModelProperty(value = "创建人姓名")
     private String createUserName;
 
-	@ApiModelProperty(value = "创建时间")
+    @ApiModelProperty(value = "创建时间")
     private LocalDateTime createTime;
 
-	@ApiModelProperty(value = "创建人id")
+    @ApiModelProperty(value = "创建人id")
     private Long createBy;
 
-	@ApiModelProperty(value = "修改时间")
+    @ApiModelProperty(value = "修改时间")
     private LocalDateTime updateTime;
 
-	@ApiModelProperty(value = "修改人id")
+    @ApiModelProperty(value = "修改人id")
     private Long updateBy;
 
-	@ApiModelProperty(value = "是否删除")
+    @ApiModelProperty(value = "是否删除")
     private Integer isDelete;
 
+    @ApiModelProperty(value = "是否作废 0-未作废 1-已作废")
+    private Integer invalid;
 
 
 }

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

@@ -1,5 +1,6 @@
 package com.abi.qms.platform.dao.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -90,4 +91,7 @@ public class QrPackage implements Serializable {
 	@Schema(name = "是否删除")
 	private Integer isDelete;
 
+	@Schema(name = "是否作废 0-未作废 1-已作废")
+	private Integer invalid;
+
 }

+ 13 - 13
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/BoxMappingActiveStatusEnum.java

@@ -10,6 +10,7 @@ import java.util.Set;
 
 /**
  * 箱码合一激活状态
+ *
  * @Author AndyTan
  */
 @Getter
@@ -17,33 +18,32 @@ import java.util.Set;
 @JsonFormat(shape = JsonFormat.Shape.OBJECT)
 public enum BoxMappingActiveStatusEnum {
 
-	//箱码合一激活状态: 0-未激活 1-已激活 9-已作废
-	NOT_ACTIVE(0,"未激活"),
-	ACTIVATED(1,"已激活"),
-	INVALID(9,"已作废");
+    //箱码合一激活状态: 0-未激活 1-已激活 9-已作废
+    NOT_ACTIVE(0, "未激活"),
+    ACTIVATED(1, "已激活");
 
-	@EnumValue
-	private Integer code;
-	private String name;
+    @EnumValue
+    private Integer code;
+    private String name;
 
-	private static final Set<BoxMappingActiveStatusEnum> ALL = EnumSet.allOf(BoxMappingActiveStatusEnum.class);
+    private static final Set<BoxMappingActiveStatusEnum> ALL = EnumSet.allOf(BoxMappingActiveStatusEnum.class);
 
     public static String getName(Integer code) {
         return ALL.stream()
                 .filter(o -> o.code.equals(code))
-                .map(o -> o.getName())
+                .map(BoxMappingActiveStatusEnum::getName)
                 .findAny().orElse(null);
     }
 
     public static Integer getCode(String name) {
         return ALL.stream()
                 .filter(o -> o.name.equals(name))
-                .map(o -> o.getCode())
+                .map(BoxMappingActiveStatusEnum::getCode)
                 .findAny().orElse(null);
     }
 
-	public boolean is(Integer code){
-		return getCode().equals(code);
-	}
+    public boolean is(Integer code) {
+        return getCode().equals(code);
+    }
 
 }

+ 48 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/InvalidEnum.java

@@ -0,0 +1,48 @@
+package com.abi.qms.platform.dao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.EnumSet;
+import java.util.Set;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/31 11:02
+ * @description: 箱码合一作废状态
+ */
+@Getter
+@AllArgsConstructor
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum InvalidEnum {
+
+    //箱码合一作废状态: 0-未作废 1 已作废
+    NOT_INVALID(0, "未作废"),
+    INVALID(1, "已作废");
+
+    @EnumValue
+    private Integer code;
+    private String name;
+
+    private static final Set<InvalidEnum> ALL = EnumSet.allOf(InvalidEnum.class);
+
+    public static String getName(Integer code) {
+        return ALL.stream()
+                .filter(o -> o.code.equals(code))
+                .map(InvalidEnum::getName)
+                .findAny().orElse(null);
+    }
+
+    public static Integer getCode(String name) {
+        return ALL.stream()
+                .filter(o -> o.name.equals(name))
+                .map(InvalidEnum::getCode)
+                .findAny().orElse(null);
+    }
+
+    public boolean is(Integer code) {
+        return getCode().equals(code);
+    }
+}

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

@@ -15,7 +15,7 @@ import java.time.LocalDateTime;
  */
 @Data
 @NoArgsConstructor
-@TableStore(tableName = "qr_code",primaryKeyName = "code")
+@TableStore(tableName = "qr_code", primaryKeyName = "code")
 public class QrCode implements TableStoreEntity, Serializable {
 
     /**
@@ -49,4 +49,9 @@ public class QrCode implements TableStoreEntity, Serializable {
      * 码库列ID
      */
     private Long qrRepertoryColumnId;
+
+    /**
+     * 是否作废 0-未作废 1-已作废
+     */
+    private Integer invalid;
 }

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

@@ -80,4 +80,7 @@ public class QrBoxMappingVO implements Serializable {
     @ApiModelProperty(value = "是否删除")
     private Integer isDelete;
 
+    @ApiModelProperty(value = "是否作废 0-未作废 1-已作废")
+    private Integer invalid;
+
 }

+ 58 - 55
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageVO.java

@@ -19,86 +19,89 @@ import java.util.List;
 @ApiModel
 public class QrPackageVO implements Serializable {
 
-	@ApiModelProperty("码包id")
-	private Long id;
+    @ApiModelProperty("码包id")
+    private Long id;
 
-	@ApiModelProperty(value = "物料id")
-	private Long materialId;
+    @ApiModelProperty(value = "物料id")
+    private Long materialId;
 
-	@ApiModelProperty("物料名称")
-	private String materialName;
+    @ApiModelProperty("物料名称")
+    private String materialName;
 
-	@ApiModelProperty(value = "包材厂id")
-	private Long factoryCoverId;
+    @ApiModelProperty(value = "包材厂id")
+    private Long factoryCoverId;
 
-	@ApiModelProperty("包材厂名称")
-	private String factoryCoverName;
+    @ApiModelProperty("包材厂名称")
+    private String factoryCoverName;
 
-	@ApiModelProperty(value = "啤酒厂id")
-	private Long factoryBeerId;
+    @ApiModelProperty(value = "啤酒厂id")
+    private Long factoryBeerId;
 
-	@ApiModelProperty("啤酒厂名称")
-	private String factoryBeerName;
+    @ApiModelProperty("啤酒厂名称")
+    private String factoryBeerName;
 
-	@ApiModelProperty(value = "备用码包")
-	private String standbyRatio;
+    @ApiModelProperty(value = "备用码包")
+    private String standbyRatio;
 
-	@ApiModelProperty("箱码幅面id")
-	private Long boxCodeFormatId;
+    @ApiModelProperty("箱码幅面id")
+    private Long boxCodeFormatId;
 
-	@ApiModelProperty("箱码幅面名称")
-	private String boxCodeFormatName;
+    @ApiModelProperty("箱码幅面名称")
+    private String boxCodeFormatName;
 
-	@ApiModelProperty("码库id")
-	private Long qrRepertoryId;
+    @ApiModelProperty("码库id")
+    private Long qrRepertoryId;
 
-	@ApiModelProperty("码库名称")
-	private String qrRepertoryName;
+    @ApiModelProperty("码库名称")
+    private String qrRepertoryName;
 
-	@ApiModelProperty("码库类型")
-	private Integer qrRepertoryType;
+    @ApiModelProperty("码库类型")
+    private Integer qrRepertoryType;
 
-	@ApiModelProperty("SAP单号")
-	private String sapOrderNo;
+    @ApiModelProperty("SAP单号")
+    private String sapOrderNo;
 
-	@ApiModelProperty("码数量")
-	private Long qrNumber;
+    @ApiModelProperty("码数量")
+    private Long qrNumber;
 
-	@ApiModelProperty("申请状态 0-待审核 1-审核通过 2-审核拒绝")
-	private Integer applyStatus;
+    @ApiModelProperty("申请状态 0-待审核 1-审核通过 2-审核拒绝")
+    private Integer applyStatus;
 
-	@ApiModelProperty("生成状态 0-未生成 1-生成中 2-已生成 3-失败")
-	private Integer generateStatus;
+    @ApiModelProperty("生成状态 0-未生成 1-生成中 2-已生成 3-失败")
+    private Integer generateStatus;
 
-	@ApiModelProperty(value = "申请原因")
-	private String reasonApply;
+    @ApiModelProperty(value = "申请原因")
+    private String reasonApply;
 
-	@ApiModelProperty("下载路径")
-	private String downloadPath;
+    @ApiModelProperty("下载路径")
+    private String downloadPath;
 
-	@ApiModelProperty("是否已下载")
-	private Integer isDownload;
+    @ApiModelProperty("是否已下载")
+    private Integer isDownload;
 
-	@ApiModelProperty(value = "码包下载记录")
-	private List<QrPackageDownloadRecordVO> qrPackageDownloadRecordList;
+    @ApiModelProperty(value = "码包下载记录")
+    private List<QrPackageDownloadRecordVO> qrPackageDownloadRecordList;
 
-	@ApiModelProperty(value = "创建时间")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private LocalDateTime createTime;
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
 
-	@ApiModelProperty(value = "创建人id")
-	private Long createBy;
+    @ApiModelProperty(value = "创建人id")
+    private Long createBy;
 
-	@ApiModelProperty(value = "创建人名称")
-	private String createByName;
+    @ApiModelProperty(value = "创建人名称")
+    private String createByName;
 
-	@ApiModelProperty(value = "修改时间")
-	private LocalDateTime updateTime;
+    @ApiModelProperty(value = "修改时间")
+    private LocalDateTime updateTime;
 
-	@ApiModelProperty(value = "修改人id")
-	private Long updateBy;
+    @ApiModelProperty(value = "修改人id")
+    private Long updateBy;
 
-	@ApiModelProperty(value = "码包批次列表")
-	private List<QrPackageBatchVO> qrPackageBatchVOList;
+    @ApiModelProperty(value = "码包批次列表")
+    private List<QrPackageBatchVO> qrPackageBatchVOList;
+
+    @ApiModelProperty(value = "是否作废 0-未作废 1-已作废")
+    private Integer invalid;
 
 }

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

@@ -20,6 +20,4 @@ public class ActiveBoxCodeReq implements Serializable {
     @ApiModelProperty(value = "id")
     private Long id;
 
-    @ApiModelProperty(value = "激活状态 0-未激活 1-已激活 9-已作废")
-    private Integer activeStatus;
 }

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

@@ -0,0 +1,22 @@
+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/31 11:48
+ * @description: 作废码包入参
+ */
+@Data
+@ApiModel
+public class InvalidQrPackageReq implements Serializable {
+
+    @NotNull(message = "id为空")
+    @ApiModelProperty(value = "id")
+    private Long id;
+}

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

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author: fangxinjian
+ * @date: 2021/05/31 14:11
+ * @description: 单码作废入参
+ */
+@Data
+@ApiModel
+public class InvalidQrSingleReq implements Serializable {
+
+    /**
+     * 主键码
+     */
+    private String code;
+
+}

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

@@ -78,12 +78,15 @@ public class ListQrBoxCodeMappingRes extends PageResp implements Serializable {
         @ApiModelProperty(value = "激活人姓名")
         private String activeUserName;
 
-        @ApiModelProperty(value = "激活状态")
+        @ApiModelProperty(value = "激活状态 0-未激活 1-已激活")
         private Integer activeStatus;
 
         @ApiModelProperty(value = "码包id")
         private Long packageId;
 
+        @ApiModelProperty(value = "是否作废 0-未作废 1-已作废")
+        private Integer invalid;
+
     }
 
 

+ 46 - 43
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListQrPackageRes.java

@@ -23,63 +23,66 @@ import java.util.List;
 @ApiModel
 public class ListQrPackageRes extends PageResp implements Serializable {
 
-	@ApiModelProperty("码库列表")
-	private List<QrPackageBean> qrRepertoryBeanList;
+    @ApiModelProperty("码库列表")
+    private List<QrPackageBean> qrRepertoryBeanList;
 
-	/**
-	 * 码库Bean
-	 */
-	@Data
-	@NoArgsConstructor
-	@AllArgsConstructor
-	@ToString
-	@ApiModel(value = "ListQrPackageRes_QrPackageBean")
-	public static class QrPackageBean {
+    /**
+     * 码库Bean
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListQrPackageRes_QrPackageBean")
+    public static class QrPackageBean {
 
-		@ApiModelProperty("码包id")
-		private Long id;
+        @ApiModelProperty("码包id")
+        private Long id;
 
-		@ApiModelProperty(value = "物料id")
-		private Long materialId;
+        @ApiModelProperty(value = "物料id")
+        private Long materialId;
 
-		@ApiModelProperty("物料名称")
-		private String materialName;
+        @ApiModelProperty("物料名称")
+        private String materialName;
 
-		@ApiModelProperty("SAP单号")
-		private String sapOrderNo;
+        @ApiModelProperty("SAP单号")
+        private String sapOrderNo;
 
-		@ApiModelProperty(value = "包材厂id")
-		private Long factoryId;
+        @ApiModelProperty(value = "包材厂id")
+        private Long factoryId;
 
-		@ApiModelProperty("包材厂名称")
-		private String factoryName;
+        @ApiModelProperty("包材厂名称")
+        private String factoryName;
 
-		@ApiModelProperty("箱码幅面id")
-		private Long boxCodeFormatId;
+        @ApiModelProperty("箱码幅面id")
+        private Long boxCodeFormatId;
 
-		@ApiModelProperty("箱码幅面名称")
-		private String boxCodeFormatName;
+        @ApiModelProperty("箱码幅面名称")
+        private String boxCodeFormatName;
 
-		@ApiModelProperty("码数量")
-		private Long qrNumber;
+        @ApiModelProperty("码数量")
+        private Long qrNumber;
 
-		@ApiModelProperty("已使用码数量")
-		private Long qrNumberUse = 0L;
+        @ApiModelProperty("已使用码数量")
+        private Long qrNumberUse = 0L;
 
-		@ApiModelProperty("申请状态 0-待审核 1-审核通过 2-审核拒绝")
-		private Integer applyStatus;
+        @ApiModelProperty("申请状态 0-待审核 1-审核通过 2-审核拒绝")
+        private Integer applyStatus;
 
-		@ApiModelProperty("是否已下载")
-		private Integer isDownload;
+        @ApiModelProperty("是否已下载")
+        private Integer isDownload;
 
-		@ApiModelProperty(value = "创建时间")
-		@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-		private LocalDateTime createTime;
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
 
-		@ApiModelProperty(value = "创建人id")
-		private Long createBy;
+        @ApiModelProperty(value = "创建人id")
+        private Long createBy;
 
-		@ApiModelProperty(value = "创建人名称")
-		private String createByName;
-	}
+        @ApiModelProperty(value = "创建人名称")
+        private String createByName;
+
+        @ApiModelProperty(value = "是否作废 0-未作废 1-已作废")
+        private Integer invalid;
+    }
 }

+ 2 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/GenerateCodeConsumer.java

@@ -5,6 +5,7 @@ import cn.hutool.core.io.file.FileWriter;
 import com.abi.base.foundation.util.JsonUtil;
 import com.abi.base.foundation.util.RedisClient;
 import com.abi.qms.platform.dao.entity.*;
+import com.abi.qms.platform.dao.enums.InvalidEnum;
 import com.abi.qms.platform.dao.enums.QrFormatUrlEnum;
 import com.abi.qms.platform.dao.enums.QrPackageGenerateStatusEnum;
 import com.abi.qms.platform.dao.enums.QrRepertoryTypeEnum;
@@ -341,6 +342,7 @@ public class GenerateCodeConsumer {
 				stable.setBatchNumberId(qrPackageBatch.getId());
 				stable.setPackageId(qrPackageBatch.getPackageId());
 				stable.setCreateTime(LocalDateTime.now());
+				stable.setInvalid(InvalidEnum.NOT_INVALID.getCode());
 			});
 			qrCodes.addAll(qrCodeCope);
 		});

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

@@ -42,7 +42,7 @@ public interface QrBoxMappingService {
     QrBoxCodeUploadRes uploadCodeFiles(Map<String, MultipartFile> map, Long packageId);
 
     /**
-     * 根据ID激活或作废码包
+     * 根据ID激活码包
      *
      * @param activeBoxCodeReq
      */
@@ -55,4 +55,11 @@ public interface QrBoxMappingService {
      * @return
      */
     PrintingDetailRes getPrintingDetail(PrintingDetailReq printingDetailReq);
+
+    /**
+     * 根据ID作废码包
+     *
+     * @param activeBoxCodeReq
+     */
+    void invalidBoxCode(ActiveBoxCodeReq activeBoxCodeReq);
 }

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

@@ -2,12 +2,24 @@ package com.abi.qms.platform.service;
 
 
 import com.abi.qms.platform.dao.entity.QrPackage;
-import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.*;
+import com.abi.qms.platform.dto.req.DeleteQrPackageReq;
+import com.abi.qms.platform.dto.req.DownloadQrPackageReq;
+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.PassQrPackageReq;
+import com.abi.qms.platform.dto.req.RefuseQrPackageReq;
+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.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.ValidSAPOrderNoAndMaterialRes;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.IOException;
 
 /**
  * 码包 Service接口
@@ -17,73 +29,89 @@ import java.io.IOException;
  */
 public interface QrPackageService {
 
-	/**
-	 * 保存码包
-	 */
-	void saveQrPackage(SaveQrPackageReq saveQrPackageReq);
-
-	/**
-	 * 码包分页查询
-	 */
-	ListQrPackageRes listQrPackage(ListQrPackageReq listQrPackageReq);
-
-	/**
-	 * 码包查询详情
-	 */
-	GetQrPackageDetailRes getQrPackageDetail(GetQrPackageDetailReq getQrPackageDetailReq);
-
-	/**
-	 * 删除码包
-	 */
-	void deleteQrPackage(DeleteQrPackageReq deleteQrPackageReq);
-
-	/**
-	 * 审核通过码包
-	 */
-	void passQrPackage(PassQrPackageReq passQrPackageReq);
-
-	/**
-	 * 审核拒绝码包
-	 */
-	void refuseQrPackage(RefuseQrPackageReq refuseQrPackageReq);
-
-	/**
-	 * 下载码包
-	 */
-	void downloadQrPackage(DownloadQrPackageReq downloadQrPackageReq, HttpServletResponse response);
-
-	/**
-	 * 码生成失败回滚
-	 */
-	void failedRollback(QrPackage qrPackage);
-
-	/**
-	 * 码包生成完成后发送邮件给码包厂负责人邮箱
-	 * @param targetEmail
-	 * @param sapOrderNo
-	 * @param filename
-	 * @param password
-	 */
-	void sendEmailForQrPackageCreated(String targetEmail,String sapOrderNo,String filename,String password);
-
-	/**
-	 * 校验是否存在SAP订单号和物料重复数据
-	 * @param req
-	 * @return
-	 */
-	ValidSAPOrderNoAndMaterialRes validSAPOrderNoAndMaterial(ValidSAPOrderNoAndMaterialReq req);
-
-	/**
-	 * 发送短信验证码
-	 * @param req
-	 */
-	void sendMobileMsg(SendMobileMsgReq req);
-
-	/**
-	 * 单码查询详情
-	 */
-	GetQrSingleCheckDetailRes getQrSingleCheckDetail(GetQrSingleCheckDetailCodeReq getQrSingleCheckDetailCodeReq);
-
-
-
+    /**
+     * 保存码包
+     */
+    void saveQrPackage(SaveQrPackageReq saveQrPackageReq);
+
+    /**
+     * 码包分页查询
+     */
+    ListQrPackageRes listQrPackage(ListQrPackageReq listQrPackageReq);
+
+    /**
+     * 码包查询详情
+     */
+    GetQrPackageDetailRes getQrPackageDetail(GetQrPackageDetailReq getQrPackageDetailReq);
+
+    /**
+     * 删除码包
+     */
+    void deleteQrPackage(DeleteQrPackageReq deleteQrPackageReq);
+
+    /**
+     * 审核通过码包
+     */
+    void passQrPackage(PassQrPackageReq passQrPackageReq);
+
+    /**
+     * 审核拒绝码包
+     */
+    void refuseQrPackage(RefuseQrPackageReq refuseQrPackageReq);
+
+    /**
+     * 下载码包
+     */
+    void downloadQrPackage(DownloadQrPackageReq downloadQrPackageReq, HttpServletResponse response);
+
+    /**
+     * 码生成失败回滚
+     */
+    void failedRollback(QrPackage qrPackage);
+
+    /**
+     * 码包生成完成后发送邮件给码包厂负责人邮箱
+     *
+     * @param targetEmail
+     * @param sapOrderNo
+     * @param filename
+     * @param password
+     */
+    void sendEmailForQrPackageCreated(String targetEmail, String sapOrderNo, String filename, String password);
+
+    /**
+     * 校验是否存在SAP订单号和物料重复数据
+     *
+     * @param req
+     * @return
+     */
+    ValidSAPOrderNoAndMaterialRes validSAPOrderNoAndMaterial(ValidSAPOrderNoAndMaterialReq req);
+
+    /**
+     * 发送短信验证码
+     *
+     * @param req
+     */
+    void sendMobileMsg(SendMobileMsgReq req);
+
+    /**
+     * 单码查询详情
+     */
+    GetQrSingleCheckDetailRes getQrSingleCheckDetail(GetQrSingleCheckDetailCodeReq getQrSingleCheckDetailCodeReq);
+
+
+    /**
+     * 作废码包
+     *
+     * @param invalidQrPackageReq
+     */
+    void invalidQrPackage(InvalidQrPackageReq invalidQrPackageReq);
+
+
+    /**
+     * 根据主键code修改作废状态
+     *
+     * @param invalidQrSingleReq
+     */
+    void invalidQrSingle(InvalidQrSingleReq invalidQrSingleReq);
 }

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

@@ -4,6 +4,7 @@ import com.abi.qms.platform.dao.entity.BaseFactory;
 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.enums.InvalidEnum;
 import com.abi.qms.platform.dao.mapper.BaseFactoryMapper;
 import com.abi.qms.platform.dao.mapper.QrBoxMappingMapper;
 import com.abi.qms.platform.dao.tablestore.entity.QrCode;
@@ -97,6 +98,7 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
         qbm.setCreateUserName(user.getUserName());
         qbm.setCreateBy(user.getId());
         qbm.setPackageId(req.getPackageId());
+        qbm.setInvalid(InvalidEnum.NOT_INVALID.getCode());
         qrBoxMappingMapper.insert(qbm);
 
     }
@@ -152,7 +154,7 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
         QrBoxMapping qrBoxMapping = qrBoxMappingMapper.selectById(req.getId());
         AssertUtil.isNull(qrBoxMapping, "该箱码不存在!");
 
-        qrBoxMapping.setActiveStatus(req.getActiveStatus());
+        qrBoxMapping.setActiveStatus(BoxMappingActiveStatusEnum.ACTIVATED.getCode());
         qrBoxMapping.setActiveTime(LocalDateTime.now());
         qrBoxMapping.setActiveUserId(user.getId());
         qrBoxMapping.setActiveUserName(user.getUserName());
@@ -177,6 +179,21 @@ public class QrBoxMappingServiceImpl implements QrBoxMappingService {
         return res;
     }
 
+    @Override
+    public void invalidBoxCode(ActiveBoxCodeReq req) {
+        //获取登录用户信息
+        UserInfo user = userUtil.getUser();
+
+        QrBoxMapping qrBoxMapping = qrBoxMappingMapper.selectById(req.getId());
+        AssertUtil.isNull(qrBoxMapping, "该箱码不存在!");
+
+        qrBoxMapping.setInvalid(InvalidEnum.INVALID.getCode());
+        qrBoxMapping.setUpdateBy(user.getId());
+        qrBoxMapping.setUpdateTime(LocalDateTime.now());
+
+        qrBoxMappingMapper.updateById(qrBoxMapping);
+    }
+
 
     /**
      * 根据主键查询已生成码包位置

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

@@ -1,22 +1,65 @@
 package com.abi.qms.platform.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
-import com.abi.base.foundation.util.JsonUtil;
 import com.abi.base.foundation.util.RedisClient;
 import com.abi.qms.platform.constant.RedisKeysConstant;
-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.QrPackage;
+import com.abi.qms.platform.dao.entity.QrPackageBatch;
+import com.abi.qms.platform.dao.entity.QrPackageDownloadRecord;
+import com.abi.qms.platform.dao.entity.QrRepertoryColumn;
+import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.enums.FactoryLevelEnum;
+import com.abi.qms.platform.dao.enums.FactoryTypeEnum;
+import com.abi.qms.platform.dao.enums.InvalidEnum;
+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.mapper.BaseActiveMapper;
+import com.abi.qms.platform.dao.mapper.BaseFactoryMapper;
+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.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.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.QrSingleCheckVO;
+import com.abi.qms.platform.dto.req.DeleteQrPackageReq;
+import com.abi.qms.platform.dto.req.DownloadQrPackageReq;
+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.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.SaveQrPackageReq;
+import com.abi.qms.platform.dto.req.SendMobileMsgReq;
+import com.abi.qms.platform.dto.req.ValidSAPOrderNoAndMaterialReq;
+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.ValidSAPOrderNoAndMaterialRes;
 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.QrPackageService;
 import com.abi.task.common.api.exception.BusinessException;
 import com.abi.task.common.api.exception.ErrorCodeEnum;
 import com.abi.task.common.tablestore.TableStorePlusUtils;
+import com.abi.task.common.tablestore.TableStoreUtils;
 import com.abi.task.common.utils.PojoConverterUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -33,7 +76,12 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.text.MessageFormat;
-import java.util.*;
+import java.time.LocalDateTime;
+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;
 
@@ -86,6 +134,9 @@ public class QrPackageServiceImpl implements QrPackageService {
     @Autowired
     private QrBoxMappingMapper qrBoxMappingMapper;
 
+    @Autowired
+    private TableStoreUtils tableStoreUtils;
+
     /**
      * 保存码包
      */
@@ -101,31 +152,31 @@ public class QrPackageServiceImpl implements QrPackageService {
         fullParam(req);
 
         //2-构造码包主表对象
-        qrPackage = buildQrPackage(req,qrPackage);
+        qrPackage = buildQrPackage(req, qrPackage);
 
         //3-新增or修改 码包主表
         if (!isAdd) {
             qrPackageMapper.updateById(qrPackage);
-        }else{
+        } else {
             qrPackageMapper.insert(qrPackage);
         }
 
         //4-保存码包批次子表信息
-        saveQrPackageBatch(qrPackage,isAdd,req);
+        saveQrPackageBatch(qrPackage, isAdd, req);
 
     }
 
     /**
      * 自动补全or处理入参数据
      */
-    private void fullParam(SaveQrPackageReq req){
+    private void fullParam(SaveQrPackageReq req) {
         //1-如果没有传入二级供应商,则表示选的是无等级(即自己做自己)的包材厂,那么就把自己放入二级供应商内
-        if(req.getFactoryCoverLevelTwoId()==null){
+        if (req.getFactoryCoverLevelTwoId() == null) {
             req.setFactoryCoverLevelTwoId(req.getFactoryCoverId());
         }
 
         //2-如果批次信息为空(盖码 or 真实业务没有批次的箱码包材厂),则补充批次信息
-        if(CollectionUtil.isEmpty(req.getPackageBatchBeanList())){
+        if (CollectionUtil.isEmpty(req.getPackageBatchBeanList())) {
             //列表
             List<SaveQrPackageReq.PackageBatchBean> batchBeanList = new ArrayList<>();
 
@@ -136,22 +187,22 @@ public class QrPackageServiceImpl implements QrPackageService {
             BaseFactory factory = baseFactoryMapper.selectById(req.getFactoryCoverLevelTwoId());
             Long maxFileCount = factory.getMaxFileCount();
             //如果二级包材厂的最大数为空,则认为和总数一致
-            if(maxFileCount==null || maxFileCount<=0){
+            if (maxFileCount == null || maxFileCount <= 0) {
                 maxFileCount = qrNumber;
             }
 
             //计算需要生成多少批次,不是整除则+1
-            int batchCount = qrNumber.intValue()/maxFileCount.intValue();
-            if(batchCount*maxFileCount<qrNumber){
-                batchCount = batchCount+1;
+            int batchCount = qrNumber.intValue() / maxFileCount.intValue();
+            if (batchCount * maxFileCount < qrNumber) {
+                batchCount = batchCount + 1;
             }
 
             //循环添加批次
-            for(int i=0;i<batchCount;i++){
+            for (int i = 0; i < batchCount; i++) {
                 //每个批次多少条
                 Long batchQrNumber = maxFileCount;
-                if(i==batchCount-1){
-                    batchQrNumber = qrNumber-(batchCount-1)*maxFileCount;
+                if (i == batchCount - 1) {
+                    batchQrNumber = qrNumber - (batchCount - 1) * maxFileCount;
                 }
                 SaveQrPackageReq.PackageBatchBean batchBean = new SaveQrPackageReq.PackageBatchBean();
                 batchBean.setBatchNumber("000001");
@@ -169,13 +220,14 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * 保存码包批次子表信息
+     *
      * @param qrPackage
      * @param isAdd
      * @param req
      */
-    private void saveQrPackageBatch(QrPackage qrPackage,boolean isAdd,SaveQrPackageReq req){
+    private void saveQrPackageBatch(QrPackage qrPackage, boolean isAdd, SaveQrPackageReq req) {
         //删除批次号(仅更新码包可能删除)
-        if(!isAdd){
+        if (!isAdd) {
             //查询原有批次号
             QueryWrapper<QrPackageBatch> qrPackageBatchQuery = new QueryWrapper<>();
             qrPackageBatchQuery.eq("package_id", qrPackage.getId());
@@ -221,12 +273,13 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * build数据库的码包对象
+     *
      * @param req
      * @param qrPackage
      * @return
      */
-    private QrPackage buildQrPackage(SaveQrPackageReq req,QrPackage qrPackage){
-        if(qrPackage==null){
+    private QrPackage buildQrPackage(SaveQrPackageReq req, QrPackage qrPackage) {
+        if (qrPackage == null) {
             qrPackage = new QrPackage();
         }
 
@@ -239,16 +292,18 @@ public class QrPackageServiceImpl implements QrPackageService {
         qrPackage.setQrNumber(req.getQrNumber());
         qrPackage.setStandbyRatio(req.getStandbyRatio());
         qrPackage.setReasonApply(req.getReasonApply());
+        qrPackage.setInvalid(InvalidEnum.NOT_INVALID.getCode());
 
         return qrPackage;
     }
 
     /**
      * 校验保存码包的入参
+     *
      * @param req
      * @return QrPackage 如果是修改码包就把码包查出来
      */
-    private QrPackage checkRequestWhenSaveQrPackage(SaveQrPackageReq req){
+    private QrPackage checkRequestWhenSaveQrPackage(SaveQrPackageReq req) {
         QrPackage qrPackage = null;
         Long qrPackageId = req.getId();
         boolean isAdd = (req.getId() == null);
@@ -293,31 +348,31 @@ public class QrPackageServiceImpl implements QrPackageService {
         UserInfo wholeUser = userUtil.getWholeUser();
         BaseFactory factoryCover = baseFactoryMapper.selectById(req.getFactoryCoverId());
         //如果选择的是一级包材厂(而不是无等级包材厂),那么二级包材厂必填
-        if(FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())
-                &&req.getFactoryCoverLevelTwoId()==null){
+        if (FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())
+                && req.getFactoryCoverLevelTwoId() == null) {
             throw new BusinessException("选择了一级包材厂,则二级包材厂必填");
         }
-        if(wholeUser.getFactoryId() != null&& FactoryTypeEnum.COVER.is(wholeUser.getFactoryType())){
+        if (wholeUser.getFactoryId() != null && FactoryTypeEnum.COVER.is(wholeUser.getFactoryType())) {
             //1.他不是二级包材厂,包材厂必须为该用户所在的包材厂,不可修改
-            if(!FactoryLevelEnum.TWO.is(factoryCover.getFactoryLevel())
-                    &&!req.getFactoryCoverId().equals(wholeUser.getFactoryId())){
+            if (!FactoryLevelEnum.TWO.is(factoryCover.getFactoryLevel())
+                    && !req.getFactoryCoverId().equals(wholeUser.getFactoryId())) {
                 throw new BusinessException("包材厂只能选择登录用户的包材厂");
             }
             //2.他是二级包材厂,二级包菜场必须为用户所在的包材厂,不可修改
-            if(FactoryLevelEnum.TWO.is(factoryCover.getFactoryLevel())
-                    &&!req.getFactoryCoverLevelTwoId().equals(wholeUser.getFactoryId())){
+            if (FactoryLevelEnum.TWO.is(factoryCover.getFactoryLevel())
+                    && !req.getFactoryCoverLevelTwoId().equals(wholeUser.getFactoryId())) {
                 throw new BusinessException("二级包材厂只能选择登录用户的包材厂");
             }
         }
 
-        if(!isAdd && wholeUser.getFactoryId()!=null){
+        if (!isAdd && wholeUser.getFactoryId() != null) {
             //一级包材厂不允许修改码包
-            if(FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())){
+            if (FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())) {
                 throw new BusinessException("一级包材厂不允许修改码包");
             }
             //二级包材厂or无级包材厂,只能改自己得码包
-            if(!FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())
-                    && !wholeUser.getFactoryId().equals(qrPackage.getFactoryCoverLevelTwoId())){
+            if (!FactoryLevelEnum.ONE.is(factoryCover.getFactoryLevel())
+                    && !wholeUser.getFactoryId().equals(qrPackage.getFactoryCoverLevelTwoId())) {
                 throw new BusinessException("包材厂只允许修改自己的码包");
             }
         }
@@ -349,7 +404,7 @@ public class QrPackageServiceImpl implements QrPackageService {
     @Override
     public ListQrPackageRes listQrPackage(ListQrPackageReq req) {
         //数据权限隔离,如果登录账号是包材厂,只能看账号包材厂的数据。否则看全部
-        if (userUtil.getWholeUser().getFactoryId() != null && userUtil.getWholeUser().getFactoryType() != null && FactoryTypeEnum.COVER.is(userUtil.getWholeUser().getFactoryType()) ) {
+        if (userUtil.getWholeUser().getFactoryId() != null && userUtil.getWholeUser().getFactoryType() != null && FactoryTypeEnum.COVER.is(userUtil.getWholeUser().getFactoryType())) {
             req.setFactoryCoverId(userUtil.getWholeUser().getFactoryId());
         }
 
@@ -494,6 +549,7 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * 校验是否存在SAP订单号和物料重复数据
+     *
      * @param req
      * @return
      */
@@ -617,7 +673,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         QrRepertoryColumn qrRepertoryColumn = repertoryColumnMapper.selectById(qrCode.getQrRepertoryColumnId());
 
         //存在别名(隐形码)
-        if (ObjectUtils.isNotEmpty(qrRepertoryColumn)){
+        if (ObjectUtils.isNotEmpty(qrRepertoryColumn)) {
             qrSingleCheckVO.setAlias(qrRepertoryColumn.getAlias());//隐形码
         }
 
@@ -625,7 +681,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         PackageActiveVO packageActive = baseActiveMapper.getPackageActive(qrCode.getPackageId());
 
         //存在活动数据
-        if (ObjectUtils.isNotEmpty(packageActive)){
+        if (ObjectUtils.isNotEmpty(packageActive)) {
             qrSingleCheckVO.setActiveName(packageActive.getActiveName());
             qrSingleCheckVO.setActiveUrl(packageActive.getActiveUrl());
         }
@@ -637,7 +693,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         QrPackageBatchVO qrPackageBatchOne = qrPackageBatchMapper.getQrPackageBatchOne(qrOnePackageBatchReq);
 
         //存批次号
-        if (ObjectUtils.isNotEmpty(qrPackageBatchOne)){
+        if (ObjectUtils.isNotEmpty(qrPackageBatchOne)) {
             qrSingleCheckVO.setBatchNumber(qrPackageBatchOne.getBatchNumber());
         }
 
@@ -648,7 +704,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         QrBoxMappingVO qrBoxMappingVO = qrBoxMappingMapper.getIndexQrBoxCodeMappingOne(qrOneBoxCodeMappingReq);
 
         //存在激活关联信息
-        if (ObjectUtils.isNotEmpty(qrBoxMappingVO)){
+        if (ObjectUtils.isNotEmpty(qrBoxMappingVO)) {
             qrSingleCheckVO.setBoxCode(qrBoxMappingVO.getBoxCode());//条码序号
             qrSingleCheckVO.setActiveTime(qrBoxMappingVO.getActiveTime());//激活时间
             qrSingleCheckVO.setActiveUserName(qrBoxMappingVO.getActiveUserName());//激活时间
@@ -660,5 +716,39 @@ public class QrPackageServiceImpl implements QrPackageService {
         return res;
     }
 
+    @Override
+    public void invalidQrPackage(InvalidQrPackageReq req) {
+
+        //获取登录用户信息
+        UserInfo user = userUtil.getUser();
+
+        QrPackage qrPackage = qrPackageMapper.selectById(req.getId());
+        AssertUtil.isNull(qrPackage, "该码包不存在!");
+
+        qrPackage.setInvalid(InvalidEnum.INVALID.getCode());
+        qrPackage.setUpdateBy(user.getId());
+        qrPackage.setUpdateTime(LocalDateTime.now());
+
+        qrPackageMapper.updateById(qrPackage);
+
+    }
+
+    @Override
+    public void invalidQrSingle(InvalidQrSingleReq req) {
+
+
+        try {
+            //设置主键code 表名 列名称
+            String code = "code", tableName = "qr_code", columnName = "invalid";
+
+            //根据主键code更新列字段
+            tableStoreUtils.updateRow(code, req.getCode(), tableName, columnName, InvalidEnum.INVALID.getCode().toString());
+
+        } catch (Exception e) {
+            log.info("更新tableStore异常", e);
+            throw new BusinessException("更新tableStore异常");
+        }
+    }
+
 
 }

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

@@ -25,11 +25,14 @@
         <result column="UPDATE_TIME" property="updateTime"/>
         <result column="UPDATE_BY" property="updateBy"/>
         <result column="IS_DELETE" property="isDelete"/>
+        <result column="invalid" property="invalid"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        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
+        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,invalid
     </sql>
 
     <select id="listQrBoxCodeMapping" resultType="com.abi.qms.platform.dao.vo.result.QrBoxMappingVO">
@@ -62,7 +65,7 @@
 
     <select id="getIndexQrBoxCodeMappingOne" resultType="com.abi.qms.platform.dao.vo.result.QrBoxMappingVO">
         SELECT
-        <include refid = "Base_Column_List" />
+        <include refid="Base_Column_List"/>
         FROM
         qr_box_mapping
         <where>

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

@@ -28,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result column="ZIP_PASSWORD" property="zipPassword" />
         <result column="QR_TYPE" property="qrType" />
         <result column="FACTORY_COVER_LEVEL_TWO_ID" property="factoryCoverLevelTwoId" />
+        <result column="INVALID" property="invalid" />
     </resultMap>
 
     <resultMap type="com.abi.qms.platform.dao.vo.result.QrPackageVO" id="QrPackageResult">
@@ -87,7 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             bm.material_name,
             bf.factory_name,
             bcf.name AS box_code_format_name,
-            ui.user_name AS create_by_name
+            ui.user_name AS create_by_name,
+            qp.invalid
         FROM
             qr_package qp
         LEFT JOIN qr_box_code_format bcf ON qp.box_code_format_id = bcf.id