Pārlūkot izejas kodu

微信流向查询接口

caiweigan 3 gadi atpakaļ
vecāks
revīzija
f9b20f317e

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

@@ -0,0 +1,56 @@
+package com.abi.qms.platform.controller.wx;
+
+import com.abi.platform.Base.BaseResponse;
+import com.abi.qms.platform.dto.req.WxGetBoxCodeReq;
+import com.abi.qms.platform.dto.req.WxGetInvisibleCodeReq;
+import com.abi.qms.platform.dto.req.WxGetStackCodeReq;
+import com.abi.qms.platform.dto.res.WxGetBoxCodeRes;
+import com.abi.qms.platform.dto.res.WxGetInvisibleCodeRes;
+import com.abi.qms.platform.dto.res.WxGetStackCodeRes;
+import com.abi.qms.platform.service.FlowQueryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 微信箱码垛码查询 Controller
+ *
+ * @author WeiganCai
+ * @date 2021-08-19
+ */
+@Slf4j
+@RestController
+@Api(tags = "微信箱码垛码查询")
+@RequestMapping("/wx/flowQuery")
+public class WxFlowQueryController {
+    @Autowired
+    private FlowQueryService flowQueryService;
+
+    @ApiOperation("箱码查询")
+    @GetMapping("/boxCode")
+    public BaseResponse<WxGetBoxCodeRes> wxBoxCode (@Validated WxGetBoxCodeReq req) {
+        WxGetBoxCodeRes res = flowQueryService.wxBoxCode(req);
+        return BaseResponse.create(res);
+    }
+
+    @ApiOperation("隐形码模糊查询")
+    @GetMapping("/invisibleCode/like")
+    public BaseResponse<WxGetInvisibleCodeRes> invisibleCode (@Validated WxGetInvisibleCodeReq req) {
+        WxGetInvisibleCodeRes res = flowQueryService.WxInvisibleCode(req);
+        return BaseResponse.create(res);
+    }
+
+    @ApiOperation("垛码查询")
+    @GetMapping("/stackCode")
+    public BaseResponse<WxGetStackCodeRes> stackCode(@Validated WxGetStackCodeReq req) {
+        WxGetStackCodeRes res = flowQueryService.wxStackCode(req);
+        return BaseResponse.create(res);
+    }
+
+
+}

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

@@ -0,0 +1,32 @@
+package com.abi.qms.platform.controller.wx;
+
+import com.abi.platform.Base.BaseResponse;
+import com.abi.qms.platform.dto.req.WxSaveInspectionCaseReq;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+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;
+
+/**
+ * 微信稽查案件 Controller
+ *
+ * @author WeiganCai
+ * @date 2021-08-20
+ */
+@Slf4j
+@Api(tags = "微信稽查案件")
+@RestController
+@RequestMapping("/wx/inspectionCase")
+public class WxInspectionCaseController {
+
+    @ApiOperation("新增稽查案件 ")
+    @PostMapping("/save")
+    public BaseResponse saveInspectionCase(@Validated @RequestBody WxSaveInspectionCaseReq req) {
+        return BaseResponse.create();
+    }
+
+}

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

@@ -5,6 +5,7 @@ import io.swagger.models.auth.In;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -18,6 +19,7 @@ import java.io.Serializable;
 @Data
 @Schema
 @AllArgsConstructor
+@NoArgsConstructor
 public class GetBoxCodeReq implements Serializable {
 
     @Schema(name = "查询类型")

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

@@ -0,0 +1,32 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 箱码查询入参
+ *
+ * @author WeiganCai
+ * @date: 2021-08-02
+ */
+@Data
+@Schema
+@AllArgsConstructor
+@NoArgsConstructor
+public class WxGetBoxCodeReq implements Serializable {
+
+    @Schema(name = "查询类型")
+    @NotNull(message = "查询类型为空")
+    private Integer queryType;
+
+    @Schema(name = "箱码")
+    @NotNull(message = "箱码为空")
+    private String boxCode;
+
+
+}

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

@@ -0,0 +1,23 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 隐形码查询入参
+ *
+ * @author WeiganCai
+ * @date: 2021-08-16
+ */
+@Data
+@Schema
+public class WxGetInvisibleCodeReq implements Serializable {
+	@Schema(name = "隐形码")
+	@NotNull(message = "隐形码为空")
+	@Size(min = 20, max = 20, message = "隐形码长度不正确")
+	private String invisibleCode;
+}

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

@@ -0,0 +1,21 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 垛码查询入参
+ *
+ * @author WeiganCai
+ * @date: 2021-08-16
+ */
+@Data
+@Schema
+public class WxGetStackCodeReq implements Serializable {
+	@Schema(name = "垛码")
+	@NotNull(message = "垛码为空")
+	private String stackCode;
+}

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

@@ -0,0 +1,113 @@
+package com.abi.qms.platform.dto.req;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author: ZhangZhao
+ * @date: 2021/7/19 14:20
+ * @description: 新增稽查案件入参
+ */
+@Data
+@NoArgsConstructor
+@ApiModel
+public class WxSaveInspectionCaseReq implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 案件编号生成策略 1-自动生成 2-自定义
+     */
+    @NotNull(message = "案件编号生成策略不能为空")
+    @ApiModelProperty(value = "案件编号生成策略 1-自动生成 2-自定义", required = true)
+    private Integer caseNumberGenerateStrategy;
+
+    /**
+     * 省份id
+     */
+    @ApiModelProperty(value = "省份ID")
+    private Long provinceId;
+
+
+    /**
+     * 城市id
+     */
+    @ApiModelProperty(value = "城市ID")
+    private Long cityId;
+
+    /**
+     * 案件编号
+     */
+    @ApiModelProperty(value = "自定义-案件编号(自定义编号时必传)")
+    private String caseNumber;
+
+    /**
+     * 案件名称
+     */
+    @NotBlank(message = "案件名称不能为空")
+    @ApiModelProperty(value = "案件名称", required = true)
+    private String caseName;
+
+    /**
+     * sku_id
+     */
+    @NotBlank(message = "sku_code不能为空")
+    @ApiModelProperty(value = "sku_code", required = true)
+    private String skuCode;
+
+
+    /**
+     * 案件备注
+     */
+    @Size(max = 150)
+    @ApiModelProperty(value = "案件备注")
+    private String caseRemark;
+
+    /**
+     * 案件涉及箱码列表
+     */
+    @Size(min = 1, message = "案件涉及箱码不能为空")
+    @ApiModelProperty(value = "案件涉及箱码列表", required = true)
+    private List<BoxCode> involvedBoxCodes;
+
+
+    /**
+     * 涉案箱码信息 BEAN
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "AddInspectionCaseReq_BoxCode")
+    public static class BoxCode implements Serializable {
+
+        /**
+         * 箱码
+         */
+        @NotEmpty(message = "箱码不能为空")
+        @Size(max = 32)
+        @ApiModelProperty(value = "箱码", required = true)
+        private String boxCode;
+
+        /**
+         * 手写标记
+         */
+        @Size(max = 15)
+        @ApiModelProperty(value = "手写标记")
+        private String handMark;
+
+    }
+
+
+}

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

@@ -0,0 +1,134 @@
+package com.abi.qms.platform.dto.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 箱码查询出参
+ * TODO 测试使用,待流向查询接口完成后,根据实际情况调整结构
+ *
+ * @author WeiganCai
+ * @date: 2021-08-02
+ */
+@Data
+@ApiModel
+public class WxGetBoxCodeRes implements Serializable {
+    @Schema(name = "SKU信息")
+    private SkuBean sku;
+
+    @Schema(name = "案件信息")
+    private InspectionCaseBean inspectionCase;
+
+    @Schema(name = "流向信息")
+    private List<FlowBean> flowList;
+
+    @Schema(name = "箱垛信息")
+    private BoxStackBean boxStack;
+
+
+    /**
+     * SKU信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class SkuBean implements Serializable {
+        @Schema(name = "品牌编码")
+        private String brandCode;
+
+        @Schema(name = "品牌名称")
+        private String brandName;
+
+        @Schema(name = "SKUId")
+        private String skuId;
+
+        @Schema(name = "SKU名称")
+        private String skuName;
+
+        @Schema(name = "生产批次")
+        private String productionBatch;
+
+        @Schema(name = "生产日期")
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        private LocalDateTime productionTime;
+    }
+
+    /**
+     * 案件信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class InspectionCaseBean implements Serializable {
+        @Schema(name = "案件编号")
+        private String caseNumber;
+
+        @Schema(name = "案件名称")
+        private String caseName;
+    }
+
+    /**
+     * 流向信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class FlowBean implements Serializable {
+        @Schema(name = "节点标识")
+        private Long nodeId;
+
+        @Schema(name = "节点名称")
+        private String nodeName;
+
+        @Schema(name = "节点状态")
+        private Integer nodeStatus;
+
+        @Schema(name = "异常类型 0-无异常 1-流入异常 2-流出异常")
+        private Integer abnormalType = 0;
+
+        @Schema(name = "是否拆垛")
+        private Integer isSplit;
+
+        @Schema(name = "拆垛托盘码")
+        private String splitStackCode;
+
+        @Schema(name = "入库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime inStorageTime;
+
+        @Schema(name = "出库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime outStorageTime;
+    }
+
+    /**
+     * 箱垛信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class BoxStackBean implements Serializable {
+        @Schema(name = "箱码")
+        private String boxCode;
+
+        @Schema(name = "隐形码")
+        private String invisibleCode;
+
+        @Schema(name = "原始托盘码")
+        private String originalStackCode;
+
+        @Schema(name = "原始堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime originalStackTime;
+
+        @Schema(name = "最新托盘码")
+        private String newestStackCode;
+
+        @Schema(name = "最新堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime newestStackTime;
+    }
+}

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

@@ -0,0 +1,39 @@
+package com.abi.qms.platform.dto.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 隐形码查询出参
+ * TODO 测试使用,待流向查询接口完成后,根据实际情况调整结构
+ *
+ * @author WeiganCai
+ * @date: 2021-08-16
+ */
+@Data
+@Accessors(chain = true)
+@Schema
+public class WxGetInvisibleCodeRes implements Serializable {
+	@Schema(name = "隐形码查询结果")
+	private List<InvisibleCodeBean> invisibleCodeList;
+
+	@Data
+	@Accessors(chain = true)
+	public static class InvisibleCodeBean {
+		@Schema(name = "隐形码")
+		private String invisibleCode;
+
+		@Schema(name = "箱码")
+		private String boxCode;
+
+		@Schema(name = "堆垛时间")
+		@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+		private LocalDateTime stackTime;
+	}
+}

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

@@ -0,0 +1,84 @@
+package com.abi.qms.platform.dto.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 垛码查询出参
+ * TODO 测试使用,待流向查询接口完成后,根据实际情况调整结构
+ *
+ * @author WeiganCai
+ * @date: 2021-08-16
+ */
+@Data
+@Schema
+public class WxGetStackCodeRes implements Serializable {
+    @Schema(name = "SKU信息")
+    private SkuBean sku;
+
+    @Schema(name = "流向信息")
+    private List<FlowBean> flowList;
+
+    @Schema(name = "垛信息")
+    private StackBean stack;
+
+    /**
+     * SKU信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class SkuBean implements Serializable {
+        @Schema(name = "品牌编码")
+        private String brandCode;
+
+        @Schema(name = "品牌名称")
+        private String brandName;
+
+        @Schema(name = "SKUId")
+        private String skuId;
+
+        @Schema(name = "SKU名称")
+        private String skuName;
+    }
+
+    /**
+     * 流向信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class FlowBean implements Serializable {
+        @Schema(name = "节点标识")
+        private Long nodeId;
+
+        @Schema(name = "节点名称")
+        private String nodeName;
+
+        @Schema(name = "入库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime inStorageTime;
+
+        @Schema(name = "出库时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime outStorageTime;
+    }
+
+    /**
+     * 垛信息
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class StackBean implements Serializable {
+        @Schema(name = "托盘码")
+        private String stackCode;
+
+        @Schema(name = "堆垛时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime StackTime;
+    }
+}

+ 16 - 7
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/FlowQueryService.java

@@ -1,11 +1,7 @@
 package com.abi.qms.platform.service;
 
-import com.abi.qms.platform.dto.req.GetBoxCodeReq;
-import com.abi.qms.platform.dto.req.GetInvisibleCodeReq;
-import com.abi.qms.platform.dto.req.GetStackCodeReq;
-import com.abi.qms.platform.dto.res.GetBoxCodeRes;
-import com.abi.qms.platform.dto.res.GetInvisibleCodeRes;
-import com.abi.qms.platform.dto.res.GetStackCodeRes;
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.*;
 
 /**
  * 箱码垛码查询 Service接口
@@ -28,7 +24,6 @@ public interface FlowQueryService {
     GetBoxCodeRes getFlowInfoByBoxCode(String boxCode);
 
 
-
     /**
      * 隐形码查询
      */
@@ -40,4 +35,18 @@ public interface FlowQueryService {
     GetStackCodeRes stackCode(GetStackCodeReq getStackCodeReq);
 
 
+    /**
+     * 微信箱码查询
+     */
+    WxGetBoxCodeRes wxBoxCode(WxGetBoxCodeReq req);
+
+    /**
+     * 微信隐形码查询
+     */
+    WxGetInvisibleCodeRes WxInvisibleCode(WxGetInvisibleCodeReq req);
+
+    /**
+     * 微信垛码查询
+     */
+    WxGetStackCodeRes wxStackCode(WxGetStackCodeReq req);
 }

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

@@ -7,13 +7,8 @@ import com.abi.qms.platform.dao.entity.UserInfo;
 import com.abi.qms.platform.dao.enums.FlowQueryTypeEnum;
 import com.abi.qms.platform.dao.enums.FlowStatusEnum;
 import com.abi.qms.platform.dao.enums.ReqChannelTypeEnum;
-import com.abi.qms.platform.dto.req.AddFlowQueryRecordReq;
-import com.abi.qms.platform.dto.req.GetBoxCodeReq;
-import com.abi.qms.platform.dto.req.GetInvisibleCodeReq;
-import com.abi.qms.platform.dto.req.GetStackCodeReq;
-import com.abi.qms.platform.dto.res.GetBoxCodeRes;
-import com.abi.qms.platform.dto.res.GetInvisibleCodeRes;
-import com.abi.qms.platform.dto.res.GetStackCodeRes;
+import com.abi.qms.platform.dto.req.*;
+import com.abi.qms.platform.dto.res.*;
 import com.abi.qms.platform.infrastructure.util.AssertUtil;
 import com.abi.qms.platform.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.FlowQueryService;
@@ -220,9 +215,39 @@ public class FlowQueryServiceImpl implements FlowQueryService {
         return res;
     }
 
+    /**
+     * 微信箱码查询
+     */
+    @Override
+    public WxGetBoxCodeRes wxBoxCode(WxGetBoxCodeReq req) {
+        // TODO 处理逻辑同console端,待流向查询接口完成后修改
+        GetBoxCodeReq boxCodeReq = PojoConverterUtils.copy(req, GetBoxCodeReq.class);
+        GetBoxCodeRes boxCodeRes = this.boxCode(boxCodeReq);
+        return PojoConverterUtils.copy(boxCodeRes, WxGetBoxCodeRes.class);
+    }
 
 
+    /**
+     * 微信隐形码查询
+     */
+    @Override
+    public WxGetInvisibleCodeRes WxInvisibleCode(WxGetInvisibleCodeReq req) {
+        // TODO 处理逻辑同console端,待流向查询接口完成后修改
+        GetInvisibleCodeReq invisibleCodeReq = PojoConverterUtils.copy(req, GetInvisibleCodeReq.class);
+        GetInvisibleCodeRes invisibleCodeRes = this.invisibleCode(invisibleCodeReq);
+        return PojoConverterUtils.copy(invisibleCodeRes, WxGetInvisibleCodeRes.class);
+    }
 
+    /**
+     * 微信垛码查询
+     */
+    @Override
+    public WxGetStackCodeRes wxStackCode(WxGetStackCodeReq req) {
+        // TODO 处理逻辑同console端,待流向查询接口完成后修改
+        GetStackCodeReq stackCodeReq = PojoConverterUtils.copy(req, GetStackCodeReq.class);
+        GetStackCodeRes stackCodeRes = this.stackCode(stackCodeReq);
+        return PojoConverterUtils.copy(stackCodeRes, WxGetStackCodeRes.class);
+    }
 
     /**
      * 保存查询记录
@@ -239,6 +264,7 @@ public class FlowQueryServiceImpl implements FlowQueryService {
                     .filter(s -> !(s.getNodeStatus().equals(1)))
                     .collect(Collectors.toMap(GetBoxCodeRes.FlowBean::getAbnormalType, flowBean -> flowBean));
 
+
             FlowStatusEnum flowStatus = MapUtil.isEmpty(abnormalNodeMap) ? FlowStatusEnum.ABNORMAL : FlowStatusEnum.NORMAL;
 
             //查询类型