From b53057264a2d54406e380606118e008fc41c750d Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Fri, 31 Mar 2023 16:26:19 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E7=83=9F=E8=8D=89=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E7=83=9F=E8=8D=89=E9=94=80=E5=94=AE=E3=80=81?= =?UTF-8?q?=E7=83=9F=E8=8D=89=E5=BA=93=E5=AD=98=E6=9D=A1=E4=BB=B6=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E3=80=81=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/gdinstorageyc/GdInstorageYc.java | 71 +++++++++++++++ .../gdinstorageyc/GdInstorageYcDetailsVo.java | 67 ++++++++++++++ .../api/gdinstorageyc/GdInstorageYcDto.java | 67 ++++++++++++++ .../gdinstorageyc/GdInstorageYcExcelVo.java | 37 ++++++++ .../api/gdinstorageyc/GdInstorageYcFeign.java | 27 ++++++ .../GdInstorageYcFeignFallback.java | 11 +++ .../api/gdinstorageyc/GdInstorageYcQuery.java | 71 +++++++++++++++ .../api/gdinstorageyc/GdInstorageYcVo.java | 67 ++++++++++++++ .../api/gdinventoryyc/GdInventoryYc.java | 49 ++++++++++ .../gdinventoryyc/GdInventoryYcDetailsVo.java | 47 ++++++++++ .../api/gdinventoryyc/GdInventoryYcDto.java | 47 ++++++++++ .../gdinventoryyc/GdInventoryYcExcelVo.java | 41 +++++++++ .../api/gdinventoryyc/GdInventoryYcFeign.java | 18 ++++ .../GdInventoryYcFeignFallback.java | 12 +++ .../api/gdinventoryyc/GdInventoryYcQuery.java | 52 +++++++++++ .../api/gdinventoryyc/GdInventoryYcVo.java | 47 ++++++++++ .../customer/api/gdsales/GdSalesVo.java | 86 +++++++++--------- .../customer/api/gdsalesyc/GdSalesYc.java | 57 ++++++++++++ .../api/gdsalesyc/GdSalesYcDetailsVo.java | 59 ++++++++++++ .../customer/api/gdsalesyc/GdSalesYcDto.java | 59 ++++++++++++ .../api/gdsalesyc/GdSalesYcExcelVo.java | 72 +++++++++++++++ .../api/gdsalesyc/GdSalesYcFeign.java | 18 ++++ .../api/gdsalesyc/GdSalesYcFeignFallback.java | 11 +++ .../api/gdsalesyc/GdSalesYcQuery.java | 62 +++++++++++++ .../customer/api/gdsalesyc/GdSalesYcVo.java | 72 +++++++++++++++ .../gdinstorageyc/GdInstorageYcMapper.java | 24 +++++ .../biz/gdinstorageyc/GdInstorageYcMapper.xml | 42 +++++++++ .../biz/gdinstorageyc/GdInstorageYcRest.java | 59 ++++++++++++ .../gdinstorageyc/GdInstorageYcService.java | 85 ++++++++++++++++++ .../gdinventoryyc/GdInventoryYcMapper.java | 26 ++++++ .../biz/gdinventoryyc/GdInventoryYcMapper.xml | 42 +++++++++ .../biz/gdinventoryyc/GdInventoryYcRest.java | 59 ++++++++++++ .../gdinventoryyc/GdInventoryYcService.java | 89 ++++++++++++++++++ .../biz/gdsalesyc/GdSalesYcMapper.java | 27 ++++++ .../biz/gdsalesyc/GdSalesYcMapper.xml | 47 ++++++++++ .../customer/biz/gdsalesyc/GdSalesYcRest.java | 61 +++++++++++++ .../biz/gdsalesyc/GdSalesYcService.java | 90 +++++++++++++++++++ 37 files changed, 1835 insertions(+), 43 deletions(-) create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYc.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDetailsVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDto.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcExcelVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeign.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeignFallback.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcQuery.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYc.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDetailsVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDto.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcExcelVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeign.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeignFallback.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcQuery.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYc.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDetailsVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDto.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcExcelVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeign.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeignFallback.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcQuery.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.xml create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcService.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.xml create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcService.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.xml create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcService.java diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYc.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYc.java new file mode 100644 index 00000000..da479ca7 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYc.java @@ -0,0 +1,71 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.EntityWithId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:00 + */ +@Data +@ApiModel(value = "入库数据(烟草)", description = "入库数据(烟草)") +@TableName("gd_instorage_yc") +public class GdInstorageYc extends EntityWithId { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("企业组织机构代码证") + private String cola0; // 企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String colb1; // 仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("供应商编号") + private String colex; // 供应商编号 + @ApiModelProperty("供应商名称") + private String cole4; // 供应商名称 + @ApiModelProperty("单据号") + private String colf5; // 单据号 + @ApiModelProperty("单据类型") + private String colg6; // 单据类型 + @ApiModelProperty("货号") + private String colh7; // 货号 + @ApiModelProperty("商品名称") + private String coli8; // 商品名称 + @ApiModelProperty("商品生产日期") + private String colj9; // 商品生产日期 + @ApiModelProperty("商品保质期") + private String colk10; // 商品保质期 + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ApiModelProperty("一级类别名称") + private String colo14; // 一级类别名称 + @ApiModelProperty("二级类别名称") + private String colp15; // 二级类别名称 + @ApiModelProperty("入库金额") + private String colq16; // 入库金额 + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 + @ApiModelProperty("成本金额") + private String cols18; // 成本金额 + @ApiModelProperty("成本税额") + private String colt19; // 成本税额 + @ApiModelProperty("不含税成本") + private String colu20; // 不含税成本 + @ApiModelProperty("进项税率") + private String colv21; // 进项税率 + @ApiModelProperty("单据日期") + private String orderDate; // 单据日期 + @ApiModelProperty("供货商编码统一") + private String supplierCodeUnified; // 供货商编码统一 + @ApiModelProperty("入库定单号") + private String inOrderNo; // 入库定单号 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDetailsVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDetailsVo.java new file mode 100644 index 00000000..5adf9549 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDetailsVo.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:01 + */ +@Data +@ApiModel(value = "入库数据(烟草) 视图数据详情", description = "入库数据(烟草) 视图数据详情") +public class GdInstorageYcDetailsVo implements Vo { + @ApiModelProperty("企业组织机构代码证") + private String cola0; // 企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String colb1; // 仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("供应商编号") + private String colex; // 供应商编号 + @ApiModelProperty("供应商名称") + private String cole4; // 供应商名称 + @ApiModelProperty("单据号") + private String colf5; // 单据号 + @ApiModelProperty("单据类型") + private String colg6; // 单据类型 + @ApiModelProperty("货号") + private String colh7; // 货号 + @ApiModelProperty("商品名称") + private String coli8; // 商品名称 + @ApiModelProperty("商品生产日期") + private String colj9; // 商品生产日期 + @ApiModelProperty("商品保质期") + private String colk10; // 商品保质期 + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ApiModelProperty("一级类别名称") + private String colo14; // 一级类别名称 + @ApiModelProperty("二级类别名称") + private String colp15; // 二级类别名称 + @ApiModelProperty("入库金额") + private String colq16; // 入库金额 + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 + @ApiModelProperty("成本金额") + private String cols18; // 成本金额 + @ApiModelProperty("成本税额") + private String colt19; // 成本税额 + @ApiModelProperty("不含税成本") + private String colu20; // 不含税成本 + @ApiModelProperty("进项税率") + private String colv21; // 进项税率 + @ApiModelProperty("单据日期") + private String orderDate; // 单据日期 + @ApiModelProperty("供货商编码统一") + private String supplierCodeUnified; // 供货商编码统一 + @ApiModelProperty("入库定单号") + private String inOrderNo; // 入库定单号 +} \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDto.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDto.java new file mode 100644 index 00000000..9d853ca8 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcDto.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:01 + */ +@Data +@ApiModel(value = "入库数据(烟草) 数据传输对象", description = "入库数据(烟草) 数据传输对象") +public class GdInstorageYcDto implements Dto { + @ApiModelProperty("企业组织机构代码证") + private String cola0; // 企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String colb1; // 仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("供应商编号") + private String colex; // 供应商编号 + @ApiModelProperty("供应商名称") + private String cole4; // 供应商名称 + @ApiModelProperty("单据号") + private String colf5; // 单据号 + @ApiModelProperty("单据类型") + private String colg6; // 单据类型 + @ApiModelProperty("货号") + private String colh7; // 货号 + @ApiModelProperty("商品名称") + private String coli8; // 商品名称 + @ApiModelProperty("商品生产日期") + private String colj9; // 商品生产日期 + @ApiModelProperty("商品保质期") + private String colk10; // 商品保质期 + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ApiModelProperty("一级类别名称") + private String colo14; // 一级类别名称 + @ApiModelProperty("二级类别名称") + private String colp15; // 二级类别名称 + @ApiModelProperty("入库金额") + private String colq16; // 入库金额 + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 + @ApiModelProperty("成本金额") + private String cols18; // 成本金额 + @ApiModelProperty("成本税额") + private String colt19; // 成本税额 + @ApiModelProperty("不含税成本") + private String colu20; // 不含税成本 + @ApiModelProperty("进项税率") + private String colv21; // 进项税率 + @ApiModelProperty("单据日期") + private String orderDate; // 单据日期 + @ApiModelProperty("供货商编码统一") + private String supplierCodeUnified; // 供货商编码统一 + @ApiModelProperty("入库定单号") + private String inOrderNo; // 入库定单号 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcExcelVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcExcelVo.java new file mode 100644 index 00000000..9fc6e273 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcExcelVo.java @@ -0,0 +1,37 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:01 + */ +@Data +@ApiModel(value = "入库数据(烟草) Excel视图数据对象", description = "入库数据(烟草) Excel视图数据对象") +public class GdInstorageYcExcelVo implements Vo { + @ExcelProperty(value = "仓库/门店名称") + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + @ExcelProperty(value = "入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("商品名称") + @ExcelProperty(value = "商品名称") + private String coli8; // 商品名称 + @ExcelProperty(value = "商品规格") + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ExcelProperty(value = "类别编号") + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ExcelProperty(value = "类别名称") + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ExcelProperty(value = "入库数量") + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeign.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeign.java new file mode 100644 index 00000000..89b53122 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeign.java @@ -0,0 +1,27 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdinstoragegd.GdInstorageGd; +import com.yxt.supervise.customer.api.gdinstoragegd.GdInstorageGdFeignFallback; +import com.yxt.supervise.customer.api.gdinstoragegd.GdInstorageGdQuery; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @author wangpengfei + * @date 2023/3/31 10:01 + */ +@Api(tags = "入库数据(烟草)") +@FeignClient( + contextId = "yxt-supervise-GdInstorageYc", + name = "yxt-supervise", + path = "v1/gdinstorageyc", + fallback = GdInstorageYcFeignFallback.class) +public interface GdInstorageYcFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeignFallback.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeignFallback.java new file mode 100644 index 00000000..92ed1b81 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcFeignFallback.java @@ -0,0 +1,11 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2023/3/31 10:01 + */ +@Component +public class GdInstorageYcFeignFallback implements GdInstorageYcFeign{ +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcQuery.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcQuery.java new file mode 100644 index 00000000..300147a5 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcQuery.java @@ -0,0 +1,71 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:02 + */ +@Data +@ApiModel(value = "入库数据(烟草) 查询条件", description = "入库数据(烟草) 查询条件") +public class GdInstorageYcQuery implements Query { + @ApiModelProperty("企业组织机构代码证") + private String cola0; // 企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String colb1; // 仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("供应商编号") + private String colex; // 供应商编号 + @ApiModelProperty("供应商名称") + private String cole4; // 供应商名称 + @ApiModelProperty("单据号") + private String colf5; // 单据号 + @ApiModelProperty("单据类型") + private String colg6; // 单据类型 + @ApiModelProperty("货号") + private String colh7; // 货号 + @ApiModelProperty("商品名称") + private String coli8; // 商品名称 + @ApiModelProperty("商品生产日期") + private String colj9; // 商品生产日期 + @ApiModelProperty("商品保质期") + private String colk10; // 商品保质期 + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ApiModelProperty("一级类别名称") + private String colo14; // 一级类别名称 + @ApiModelProperty("二级类别名称") + private String colp15; // 二级类别名称 + @ApiModelProperty("入库金额") + private String colq16; // 入库金额 + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 + @ApiModelProperty("成本金额") + private String cols18; // 成本金额 + @ApiModelProperty("成本税额") + private String colt19; // 成本税额 + @ApiModelProperty("不含税成本") + private String colu20; // 不含税成本 + @ApiModelProperty("进项税率") + private String colv21; // 进项税率 + @ApiModelProperty("单据日期") + private String orderDate; // 单据日期 + @ApiModelProperty("供货商编码统一") + private String supplierCodeUnified; // 供货商编码统一 + @ApiModelProperty("入库定单号") + private String inOrderNo; // 入库定单号 + @ApiModelProperty("开始时间") + private String startTime; + @ApiModelProperty("结束时间") + private String endTime; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcVo.java new file mode 100644 index 00000000..38b068ff --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinstorageyc/GdInstorageYcVo.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.api.gdinstorageyc; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 10:02 + */ +@Data +@ApiModel(value = "入库数据(烟草) 视图数据对象", description = "入库数据(烟草) 视图数据对象") +public class GdInstorageYcVo implements Vo { + @ApiModelProperty("企业组织机构代码证") + private String cola0; // 企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String colb1; // 仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String colc2; // 仓库/门店名称 + @ApiModelProperty("入库时间") + private String cold3; // 入库时间 + @ApiModelProperty("供应商编号") + private String colex; // 供应商编号 + @ApiModelProperty("供应商名称") + private String cole4; // 供应商名称 + @ApiModelProperty("单据号") + private String colf5; // 单据号 + @ApiModelProperty("单据类型") + private String colg6; // 单据类型 + @ApiModelProperty("货号") + private String colh7; // 货号 + @ApiModelProperty("商品名称") + private String coli8; // 商品名称 + @ApiModelProperty("商品生产日期") + private String colj9; // 商品生产日期 + @ApiModelProperty("商品保质期") + private String colk10; // 商品保质期 + @ApiModelProperty("商品规格") + private String coll11; // 商品规格 + @ApiModelProperty("类别编号") + private String colm12; // 类别编号 + @ApiModelProperty("类别名称") + private String coln13; // 类别名称 + @ApiModelProperty("一级类别名称") + private String colo14; // 一级类别名称 + @ApiModelProperty("二级类别名称") + private String colp15; // 二级类别名称 + @ApiModelProperty("入库金额") + private String colq16; // 入库金额 + @ApiModelProperty("入库数量") + private String colr17; // 入库数量 + @ApiModelProperty("成本金额") + private String cols18; // 成本金额 + @ApiModelProperty("成本税额") + private String colt19; // 成本税额 + @ApiModelProperty("不含税成本") + private String colu20; // 不含税成本 + @ApiModelProperty("进项税率") + private String colv21; // 进项税率 + @ApiModelProperty("单据日期") + private String orderDate; // 单据日期 + @ApiModelProperty("供货商编码统一") + private String supplierCodeUnified; // 供货商编码统一 + @ApiModelProperty("入库定单号") + private String inOrderNo; // 入库定单号 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYc.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYc.java new file mode 100644 index 00000000..711df5b6 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYc.java @@ -0,0 +1,49 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.EntityWithId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:31 + */ + +@Data +@ApiModel(value = "国大库存数据(烟草)", description = "国大库存数据") +@TableName("gd_inventory_yc") +public class GdInventoryYc extends EntityWithId { + @ApiModelProperty("企业组织机构代码证") + private String orgCode;//企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode;//商品条码 + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ApiModelProperty("仓库类型") + private String warehouseType;//仓库类型 + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + @ApiModelProperty("类别编号") + private String typeCode;//类别编号 + @ApiModelProperty("类别名称") + private String typeName;//类别名称 + @ApiModelProperty("一级类别名称") + private String typeOne;//一级类别名称 + @ApiModelProperty("二级类别名称") + private String typeTwo;//二级类别名称 + +} \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDetailsVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDetailsVo.java new file mode 100644 index 00000000..47a65eb4 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDetailsVo.java @@ -0,0 +1,47 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:31 + */ +@Data +@ApiModel(value = "国大库存数据(烟草) 视图数据详情", description = "国大库存数据(烟草) 视图数据详情") +public class GdInventoryYcDetailsVo implements Vo { + @ApiModelProperty("ID,唯一编号") + private String id; + @ApiModelProperty("企业组织机构代码证") + private String orgCode;//企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode;//商品条码 + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ApiModelProperty("仓库类型") + private String warehouseType;//仓库类型 + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + @ApiModelProperty("类别编号") + private String typeCode;//类别编号 + @ApiModelProperty("类别名称") + private String typeName;//类别名称 + @ApiModelProperty("一级类别名称") + private String typeOne;//一级类别名称 + @ApiModelProperty("二级类别名称") + private String typeTwo;//二级类别名称 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDto.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDto.java new file mode 100644 index 00000000..9ed57a77 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcDto.java @@ -0,0 +1,47 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:31 + */ +@Data +@ApiModel(value = "国大库存数据(烟草) 数据传输对象", description = "国大库存数据(烟草) 数据传输对象") +public class GdInventoryYcDto implements Dto { + @ApiModelProperty("ID,唯一编号") + private String id; + @ApiModelProperty("企业组织机构代码证") + private String orgCode;//企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode;//商品条码 + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ApiModelProperty("仓库类型") + private String warehouseType;//仓库类型 + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + @ApiModelProperty("类别编号") + private String typeCode;//类别编号 + @ApiModelProperty("类别名称") + private String typeName;//类别名称 + @ApiModelProperty("一级类别名称") + private String typeOne;//一级类别名称 + @ApiModelProperty("二级类别名称") + private String typeTwo;//二级类别名称 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcExcelVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcExcelVo.java new file mode 100644 index 00000000..bffc9345 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcExcelVo.java @@ -0,0 +1,41 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:32 + */ +@Data +@ApiModel(value = "国大库存数据(烟草) Excel视图数据对象", description = "国大库存数据(烟草) Excel视图数据对象") +public class GdInventoryYcExcelVo implements Vo { + @ExcelProperty(value = "仓库/门店编号") + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ExcelProperty(value = "仓库/门店名称") + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ExcelProperty(value = "商品编码") + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ExcelProperty(value = "商品名称") + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ExcelProperty(value = "商品数量") + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ExcelProperty(value = "商品货值") + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ExcelProperty(value = "供应商") + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ExcelProperty(value = "数据日期") + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + +} \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeign.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeign.java new file mode 100644 index 00000000..ae47beb2 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeign.java @@ -0,0 +1,18 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.supervise.customer.api.gdinstoragegd.GdInstorageGdFeignFallback; +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author wangpengfei + * @date 2023/3/31 9:32 + */ +@Api(tags = "国大库存数据(烟草)") +@FeignClient( + contextId = "yxt-supervise-GdInventoryYc", + name = "yxt-supervise", + path = "v1/gdinventoryyc", + fallback = GdInventoryYcFeignFallback.class) +public interface GdInventoryYcFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeignFallback.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeignFallback.java new file mode 100644 index 00000000..0d85a658 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.supervise.customer.api.gdinventoryok.GdInventoryOkFeign; +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2023/3/31 9:32 + */ +@Component +public class GdInventoryYcFeignFallback implements GdInventoryYcFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcQuery.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcQuery.java new file mode 100644 index 00000000..0e5a20e9 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcQuery.java @@ -0,0 +1,52 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:32 + */ +@Data +@ApiModel(value = "国大库存数据(烟草) 查询条件", description = "国大库存数据(烟草) 查询条件") +public class GdInventoryYcQuery implements Query { + @ApiModelProperty("ID,唯一编号") + private String id; + @ApiModelProperty("企业组织机构代码证") + private String orgCode;//企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode;//商品条码 + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ApiModelProperty("仓库类型") + private String warehouseType;//仓库类型 + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + @ApiModelProperty("类别编号") + private String typeCode;//类别编号 + @ApiModelProperty("类别名称") + private String typeName;//类别名称 + @ApiModelProperty("一级类别名称") + private String typeOne;//一级类别名称 + @ApiModelProperty("二级类别名称") + private String typeTwo;//二级类别名称 + + @ApiModelProperty("开始时间") + private String startDate; + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcVo.java new file mode 100644 index 00000000..df6d1e0f --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdinventoryyc/GdInventoryYcVo.java @@ -0,0 +1,47 @@ +package com.yxt.supervise.customer.api.gdinventoryyc; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 9:32 + */ +@Data +@ApiModel(value = "国大库存数据(烟草) 视图数据对象", description = "国大库存数据(烟草) 视图数据对象") +public class GdInventoryYcVo implements Vo { + @ApiModelProperty("ID,唯一编号") + private String id; + @ApiModelProperty("企业组织机构代码证") + private String orgCode;//企业组织机构代码证 + @ApiModelProperty("仓库/门店编号") + private String warehouseCode;//仓库/门店编号 + @ApiModelProperty("仓库/门店名称") + private String warehouseName;//仓库/门店名称 + @ApiModelProperty("商品编码") + private String prodCode;//商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode;//商品条码 + @ApiModelProperty("商品名称") + private String prodName;//商品名称 + @ApiModelProperty("仓库类型") + private String warehouseType;//仓库类型 + @ApiModelProperty("商品数量") + private String prodNum;//商品数量 + @ApiModelProperty("商品货值") + private String prodValue;//商品货值 + @ApiModelProperty("供应商") + private String suppliderName;//供应商 + @ApiModelProperty("数据日期") + private String dataDate;//数据日期 + @ApiModelProperty("类别编号") + private String typeCode;//类别编号 + @ApiModelProperty("类别名称") + private String typeName;//类别名称 + @ApiModelProperty("一级类别名称") + private String typeOne;//一级类别名称 + @ApiModelProperty("二级类别名称") + private String typeTwo;//二级类别名称 +} \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsales/GdSalesVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsales/GdSalesVo.java index 501d5715..e8551a7c 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsales/GdSalesVo.java +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsales/GdSalesVo.java @@ -13,70 +13,70 @@ import lombok.Data; @Data @ApiModel(value = "销售数据 视图数据对象", description = "销售数据 视图数据对象") public class GdSalesVo implements Vo { -// private String sid; // sid -// -// @ApiModelProperty("创建者") -// private String createSid; // 创建者 -// @ApiModelProperty("更新者") -// private String modifySid; // 更新者 - @ExcelProperty(value = "销售订单号") + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("销售订单号") private String code; // 销售订单号 - @ExcelProperty(value = "商品编码") + @ApiModelProperty("商品编码") private String prodCode; // 商品编码 -// @ApiModelProperty("商品条码") -// private String prodBarCode; // 商品条码 - @ExcelProperty(value = "商品名称") + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + @ApiModelProperty("商品名称") private String prodName; // 商品名称 - @ExcelProperty(value = "销售数量") + @ApiModelProperty("销售数量") private String saleNum; // 销售数量 -// @ApiModelProperty("销售渠道") -// private String storeCode; // 销售渠道 - @ExcelProperty(value = "销售渠道") + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + @ApiModelProperty("销售渠道名称") private String storeName; // 销售渠道名称 -// @ApiModelProperty("销售价格") -// private String salePrice; // 销售价格 -// @ApiModelProperty("销售成本") -// private String saleCost; // 销售成本 -// @ApiModelProperty("利润") -// private String profit; // 利润 - @ExcelProperty(value = "数据日期") + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + @ApiModelProperty("数据日期") private String dataDate; // 数据日期 - @ExcelProperty(value = "数据日期") + @ApiModelProperty("类型") private String orderType; // 类型 -// @ApiModelProperty("客户代码") -// private String customerCode; // 客户代码 -// @ApiModelProperty("客户名称") -// private String customerName; // 客户名称 - @ExcelProperty(value = "品牌编码") + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("品牌代码") private String brandCode; // 品牌代码 - @ExcelProperty(value = "品牌名称") + @ApiModelProperty("品牌名称") private String brandName; // 品牌名称 -// @ApiModelProperty("大类") -// private String categoryb; // 大类 -// @ApiModelProperty("种类") -// private String categorym; // 种类 -// @ApiModelProperty("小类") -// private String categorys; // 小类 - @ExcelProperty(value = "总价") + @ApiModelProperty("大类") + private String categoryb; // 大类 + @ApiModelProperty("种类") + private String categorym; // 种类 + @ApiModelProperty("小类") + private String categorys; // 小类 + @ApiModelProperty("总价") private String total; - public void setSaleNum(String saleNum){ - int i=saleNum.indexOf("."); - if(i!=-1){ - String num=saleNum.substring(0,i); - this.saleNum=num; - }else{ - this.saleNum=saleNum; + public void setSaleNum(String saleNum) { + int i = saleNum.indexOf("."); + if (i != -1) { + String num = saleNum.substring(0, i); + this.saleNum = num; + } else { + this.saleNum = saleNum; } } } diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYc.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYc.java new file mode 100644 index 00000000..ae6bc6bc --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYc.java @@ -0,0 +1,57 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.EntityWithId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:48 + */ +@Data +@ApiModel(value = "销售数据(烟草)", description = "销售数据(烟草)") +@TableName("gd_sales_yc") +public class GdSalesYc extends EntityWithId { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("企业组织机构代码证") + private String orgCode; // 企业组织机构代码证 + @ApiModelProperty("订单类型") + private String orderType; // 订单类型 + @ApiModelProperty("销售订单号") + private String orderNo; // 销售订单号 + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + @ApiModelProperty("商品大类") + private String categoryb; // 商品大类 + @ApiModelProperty("商品中类") + private String categorym; // 商品中类 + @ApiModelProperty("商品小类") + private String categorys; // 商品小类 + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDetailsVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDetailsVo.java new file mode 100644 index 00000000..140ab7ec --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDetailsVo.java @@ -0,0 +1,59 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:48 + */ +@Data +@ApiModel(value = "销售数据(烟草) 视图数据详情", description = "销售数据(烟草) 视图数据详情") +public class GdSalesYcDetailsVo implements Vo { + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("销售订单号") + private String code; // 销售订单号 + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + @ApiModelProperty("销售渠道名称") + private String storeName; // 销售渠道名称 + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 + @ApiModelProperty("类型") + private String orderType; // 类型 + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + @ApiModelProperty("大类") + private String categoryb; // 大类 + @ApiModelProperty("种类") + private String categorym; // 种类 + @ApiModelProperty("小类") + private String categorys; // 小类 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDto.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDto.java new file mode 100644 index 00000000..ce2e7408 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcDto.java @@ -0,0 +1,59 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:49 + */ +@Data +@ApiModel(value = "销售数据 数据传输对象", description = "销售数据 数据传输对象") +public class GdSalesYcDto implements Dto { + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("销售订单号") + private String code; // 销售订单号 + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + @ApiModelProperty("销售渠道名称") + private String storeName; // 销售渠道名称 + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 + @ApiModelProperty("类型") + private String orderType; // 类型 + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + @ApiModelProperty("大类") + private String categoryb; // 大类 + @ApiModelProperty("种类") + private String categorym; // 种类 + @ApiModelProperty("小类") + private String categorys; // 小类 +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcExcelVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcExcelVo.java new file mode 100644 index 00000000..5cb8d72b --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcExcelVo.java @@ -0,0 +1,72 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:49 + */ +@Data +@ApiModel(value = "销售数据 导出excel视图数据对象", description = "销售数据 导出excel视图数据对象") +public class GdSalesYcExcelVo implements Vo { + // private String sid; // sid +// +// @ApiModelProperty("创建者") +// private String createSid; // 创建者 +// @ApiModelProperty("更新者") +// private String modifySid; // 更新者 + @ExcelProperty(value = "销售订单号") + @ApiModelProperty("销售订单号") + private String code; // 销售订单号 + @ExcelProperty(value = "商品编码") + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + // @ApiModelProperty("商品条码") +// private String prodBarCode; // 商品条码 + @ExcelProperty(value = "商品名称") + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + @ExcelProperty(value = "销售数量") + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + // @ApiModelProperty("销售渠道") +// private String storeCode; // 销售渠道 + @ExcelProperty(value = "销售渠道") + @ApiModelProperty("销售渠道名称") + private String storeName; // 销售渠道名称 + // @ApiModelProperty("销售价格") +// private String salePrice; // 销售价格 +// @ApiModelProperty("销售成本") +// private String saleCost; // 销售成本 +// @ApiModelProperty("利润") +// private String profit; // 利润 + @ExcelProperty(value = "数据日期") + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 + @ExcelProperty(value = "类型") + @ApiModelProperty("类型") + private String orderType; // 类型 + // @ApiModelProperty("客户代码") +// private String customerCode; // 客户代码 +// @ApiModelProperty("客户名称") +// private String customerName; // 客户名称 + @ExcelProperty(value = "品牌编码") + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + @ExcelProperty(value = "品牌名称") + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + // @ApiModelProperty("大类") +// private String categoryb; // 大类 +// @ApiModelProperty("种类") +// private String categorym; // 种类 +// @ApiModelProperty("小类") +// private String categorys; // 小类 + @ExcelProperty(value = "总价") + @ApiModelProperty("总价") + private String total; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeign.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeign.java new file mode 100644 index 00000000..91c48921 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeign.java @@ -0,0 +1,18 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.yxt.supervise.customer.api.gdsales.GdSalesFeignFallback; +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author wangpengfei + * @date 2023/3/31 8:49 + */ +@Api(tags = "销售数据(烟草)") +@FeignClient( + contextId = "yxt-supervise-SalesYcData", + name = "yxt-supervise", + path = "v1/gdsalesyc", + fallback = GdSalesYcFeignFallback.class) +public interface GdSalesYcFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeignFallback.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeignFallback.java new file mode 100644 index 00000000..99a29421 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcFeignFallback.java @@ -0,0 +1,11 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2023/3/31 8:49 + */ +@Component +public class GdSalesYcFeignFallback implements GdSalesYcFeign{ +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcQuery.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcQuery.java new file mode 100644 index 00000000..48aaefd7 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcQuery.java @@ -0,0 +1,62 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:50 + */ +@Data +@ApiModel(value = "销售数据(烟草) 查询条件", description = "销售数据(烟草) 查询条件") +public class GdSalesYcQuery implements Query { + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("销售订单号") + private String code; // 销售订单号 + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售渠道名称") + private String storeName; // 销售渠道名称 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 + @ApiModelProperty("类型") + private String orderType; // 类型 + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + @ApiModelProperty("大类") + private String categoryb; // 大类 + @ApiModelProperty("种类") + private String categorym; // 种类 + @ApiModelProperty("小类") + private String categorys; // 小类 + //开始时间 + private String startTime; + //结束时间 + private String endTime; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcVo.java new file mode 100644 index 00000000..1d406337 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/gdsalesyc/GdSalesYcVo.java @@ -0,0 +1,72 @@ +package com.yxt.supervise.customer.api.gdsalesyc; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/3/31 8:50 + */ +@Data +@ApiModel(value = "销售数据(烟草)", description = "销售数据(烟草)") +public class GdSalesYcVo implements Vo { + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + + @ApiModelProperty("销售订单号") + private String code; // 销售订单号 + + @ApiModelProperty("商品编码") + private String prodCode; // 商品编码 + @ApiModelProperty("商品条码") + private String prodBarCode; // 商品条码 + + @ApiModelProperty("商品名称") + private String prodName; // 商品名称 + + @ApiModelProperty("销售数量") + private String saleNum; // 销售数量 + @ApiModelProperty("销售渠道") + private String storeCode; // 销售渠道 + + @ApiModelProperty("销售渠道名称") + private String storeName; // 销售渠道名称 + @ApiModelProperty("销售价格") + private String salePrice; // 销售价格 + @ApiModelProperty("销售成本") + private String saleCost; // 销售成本 + @ApiModelProperty("利润") + private String profit; // 利润 + + @ApiModelProperty("数据日期") + private String dataDate; // 数据日期 + + @ApiModelProperty("类型") + private String orderType; // 类型 + @ApiModelProperty("客户代码") + private String customerCode; // 客户代码 + @ApiModelProperty("客户名称") + private String customerName; // 客户名称 + + @ApiModelProperty("品牌代码") + private String brandCode; // 品牌代码 + + @ApiModelProperty("品牌名称") + private String brandName; // 品牌名称 + @ApiModelProperty("大类") + private String categoryb; // 大类 + @ApiModelProperty("种类") + private String categorym; // 种类 + @ApiModelProperty("小类") + private String categorys; // 小类 + + @ApiModelProperty("总价") + private String total; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.java new file mode 100644 index 00000000..856988ed --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.java @@ -0,0 +1,24 @@ +package com.yxt.supervise.customer.biz.gdinstorageyc; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYc; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcExcelVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYc; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 10:09 + */ +@Mapper +public interface GdInstorageYcMapper extends BaseMapper { + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + List exportExcel(@Param(Constants.WRAPPER) Wrapper qw); +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.xml new file mode 100644 index 00000000..f839942c --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcRest.java new file mode 100644 index 00000000..bf0744d5 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcRest.java @@ -0,0 +1,59 @@ +package com.yxt.supervise.customer.biz.gdinstorageyc; + +import com.alibaba.excel.EasyExcel; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYc; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcExcelVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcQuery; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcFeign; +import com.yxt.supervise.customer.biz.gdinstoragegd.GdInstorageGdService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +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 javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 10:10 + */ +@Api(tags = "入库数据(烟草)") +@RestController +@RequestMapping("v1/gdinstorageyc") +public class GdInstorageYcRest implements GdInstorageYcFeign { + @Autowired + private GdInstorageYcService gdInstorageYcService; + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = gdInstorageYcService.listPageVo(pq); + return rb.success().setData(pv); + } + @PostMapping("/exportExcel") + @ApiOperation(value = "入库数据(烟草)导出") + public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { + //得到所有要导出的数据 + List excelVos = gdInstorageYcService.exportExcel(pq); + String fileName = "入库数据(烟草)" + System.currentTimeMillis() + ".xlsx"; + response.setContentType( "application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-disposition","attachment;filename="+ fileName ); + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + ServletOutputStream outputStream = response.getOutputStream(); + EasyExcel.write(outputStream, GdInstorageYcExcelVo.class).sheet("入库数据(烟草)").doWrite(excelVos); + outputStream.flush(); + outputStream.close(); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcService.java new file mode 100644 index 00000000..f6f124dc --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinstorageyc/GdInstorageYcService.java @@ -0,0 +1,85 @@ +package com.yxt.supervise.customer.biz.gdinstorageyc; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYc; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcExcelVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcQuery; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYcVo; +import com.yxt.supervise.customer.api.gdinstorageyc.GdInstorageYc; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 10:10 + */ +@Service +public class GdInstorageYcService extends MybatisBaseService { + public PagerVo listPageVo(PagerQuery pq) { + GdInstorageYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //门店/仓库 + if (StringUtils.isNotBlank(query.getColc2())) { + qw.like("colc2", query.getColc2()); + } + if (StringUtils.isNotBlank(query.getColf5())) { + qw.like("colf5", query.getColf5()); + } + if (StringUtils.isNotBlank(query.getColi8())) { + qw.like("coli8", query.getColi8()); + } + if (StringUtils.isNotBlank(query.getColm12())) { + qw.like("colm12", query.getColm12()); + } +// if (StringUtils.isNotBlank(query.getBrandCode())) { +// qw.eq("s.brandCode", query.getBrandCode()); +// } + //时间 + if (StringUtils.isNotBlank(query.getStartTime())) { + qw.ge("STR_TO_DATE(cold3,'%Y-%m-%d')", query.getStartTime()); + } + if (StringUtils.isNotBlank(query.getEndTime())) { + qw.le("STR_TO_DATE(cold3,'%Y-%m-%d')", query.getEndTime()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List exportExcel(PagerQuery pq) { + GdInstorageYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //门店/仓库 + if (StringUtils.isNotBlank(query.getColc2())) { + qw.like("colc2", query.getColc2()); + } + if (StringUtils.isNotBlank(query.getColf5())) { + qw.like("colf5", query.getColf5()); + } + if (StringUtils.isNotBlank(query.getColi8())) { + qw.like("coli8", query.getColi8()); + } + if (StringUtils.isNotBlank(query.getColm12())) { + qw.like("colm12", query.getColm12()); + } +// if (StringUtils.isNotBlank(query.getBrandCode())) { +// qw.eq("s.brandCode", query.getBrandCode()); +// } + //时间 + if (StringUtils.isNotBlank(query.getStartTime())) { + qw.ge("STR_TO_DATE(cold3,'%Y-%m-%d')", query.getStartTime()); + } + if (StringUtils.isNotBlank(query.getEndTime())) { + qw.le("STR_TO_DATE(cold3,'%Y-%m-%d')", query.getEndTime()); + } + List pagging = baseMapper.exportExcel(qw); + return pagging; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.java new file mode 100644 index 00000000..9604d61a --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.java @@ -0,0 +1,26 @@ +package com.yxt.supervise.customer.biz.gdinventoryyc; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYc; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcExcelVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYc; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:39 + */ +@Mapper +public interface GdInventoryYcMapper extends BaseMapper { + //分页查询销售数据 + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + //查询导出的数据 + List exportExcel(@Param(Constants.WRAPPER) Wrapper qw); +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.xml new file mode 100644 index 00000000..ee8f5146 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcRest.java new file mode 100644 index 00000000..16928302 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcRest.java @@ -0,0 +1,59 @@ +package com.yxt.supervise.customer.biz.gdinventoryyc; + +import com.alibaba.excel.EasyExcel; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYc; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcExcelVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcQuery; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcVo; +import com.yxt.supervise.customer.biz.gdinventoryyc.GdInventoryYcService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +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 javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:40 + */ +@Api(tags = "国大库存数据(烟草)") +@RestController +@RequestMapping("v1/gdinventoryyc") +public class GdInventoryYcRest { + @Autowired + GdInventoryYcService gdInventoryYcService; + //@Override + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = gdInventoryYcService.listPageVo(pq); + return rb.success().setData(pv); + } + @PostMapping("/exportExcel") + @ApiOperation(value = "国大库存数据(烟草)导出") + public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { + //得到所有要导出的数据 + List excelVos = gdInventoryYcService.exportExcel(pq); + String fileName = "国大库存数据(烟草)" + System.currentTimeMillis() + ".xlsx"; + response.setContentType( "application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-disposition","attachment;filename="+ fileName ); + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + ServletOutputStream outputStream = response.getOutputStream(); + EasyExcel.write(outputStream, GdInventoryYcExcelVo.class).sheet("国大库存数据(烟草)").doWrite(excelVos); + outputStream.flush(); + outputStream.close(); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcService.java new file mode 100644 index 00000000..a76a2a27 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdinventoryyc/GdInventoryYcService.java @@ -0,0 +1,89 @@ +package com.yxt.supervise.customer.biz.gdinventoryyc; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYc; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcExcelVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcQuery; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYcVo; +import com.yxt.supervise.customer.api.gdinventoryyc.GdInventoryYc; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:40 + */ +@Service +public class GdInventoryYcService extends MybatisBaseService { + public PagerVo listPageVo(PagerQuery pq) { + GdInventoryYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(query!=null) { + if (StringUtils.isNotBlank(query.getWarehouseCode())) { + qw.eq("warehouseCode", query.getWarehouseCode()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getProdCode())) { + qw.like("prodCode", query.getProdCode()); + } + if (StringUtils.isNotBlank(query.getProdName())) { + qw.like("prodName", query.getProdName()); + } + + if (StringUtils.isNotBlank(query.getSuppliderName())) { + qw.like("suppliderName", query.getSuppliderName()); + } + //时间 + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(dataDate,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(dataDate,'%Y-%m-%d')", query.getEndDate()); + } + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List exportExcel(PagerQuery pq) { + GdInventoryYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(query!=null) { + if (StringUtils.isNotBlank(query.getWarehouseCode())) { + qw.eq("warehouseCode", query.getWarehouseCode()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getProdCode())) { + qw.like("prodCode", query.getProdCode()); + } + if (StringUtils.isNotBlank(query.getProdName())) { + qw.like("prodName", query.getProdName()); + } + + if (StringUtils.isNotBlank(query.getSuppliderName())) { + qw.like("suppliderName", query.getSuppliderName()); + } + //时间 + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(dataDate,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(dataDate,'%Y-%m-%d')", query.getEndDate()); + } + } + List pagging = baseMapper.exportExcel(qw); + return pagging; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.java new file mode 100644 index 00000000..464c86bb --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.java @@ -0,0 +1,27 @@ +package com.yxt.supervise.customer.biz.gdsalesyc; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYc; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcExcelVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYc; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:06 + */ +@Mapper +public interface GdSalesYcMapper extends BaseMapper { + //分页查询销售数据 + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + //查询导出的数据 + List exportExcel(@Param(Constants.WRAPPER) Wrapper qw); +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.xml new file mode 100644 index 00000000..ab759ba1 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcMapper.xml @@ -0,0 +1,47 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcRest.java new file mode 100644 index 00000000..eaed1498 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcRest.java @@ -0,0 +1,61 @@ +package com.yxt.supervise.customer.biz.gdsalesyc; + +import com.alibaba.excel.EasyExcel; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYc; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcExcelVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcQuery; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcFeign; +import com.yxt.supervise.customer.biz.gdsales.GdSalesService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +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 javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:06 + */ +@Api(tags = "销售数据(烟草)") +@RestController +@RequestMapping("v1/gdsalesyc") +public class GdSalesYcRest implements GdSalesYcFeign { + @Autowired + private GdSalesYcService gdSalesYcService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = gdSalesYcService.listPageVo(pq); + return rb.success().setData(pv); + } + + @PostMapping("/exportExcel") + @ApiOperation(value = "销售数据(烟草)导出") + public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { + //得到所有要导出的数据 + List excelVos = gdSalesYcService.exportExcel(pq); + String fileName = "销售数据(烟草)" + System.currentTimeMillis() + ".xlsx"; + response.setContentType( "application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-disposition","attachment;filename="+ fileName ); + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + ServletOutputStream outputStream = response.getOutputStream(); + EasyExcel.write(outputStream, GdSalesYcExcelVo.class).sheet("销售数据(烟草)").doWrite(excelVos); + outputStream.flush(); + outputStream.close(); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcService.java new file mode 100644 index 00000000..fb91c72b --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/gdsalesyc/GdSalesYcService.java @@ -0,0 +1,90 @@ +package com.yxt.supervise.customer.biz.gdsalesyc; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYc; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcExcelVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcQuery; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYcVo; +import com.yxt.supervise.customer.api.gdsalesyc.GdSalesYc; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/3/31 9:07 + */ +@Service +public class GdSalesYcService extends MybatisBaseService { + public PagerVo listPageVo(PagerQuery pq) { + GdSalesYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(query!=null) { + //渠道 + if (StringUtils.isNotBlank(query.getStoreCode())) { + qw.eq("s.storeCode", query.getStoreCode()); + } + if (StringUtils.isNotBlank(query.getProdCode())) { + qw.like("s.prodCode", query.getProdCode()); + } + if (StringUtils.isNotBlank(query.getProdName())) { + qw.like("s.prodName", query.getProdName()); + } + if (StringUtils.isNotBlank(query.getBrandName())) { + qw.like("s.brandName", query.getBrandName()); + } + if (StringUtils.isNotBlank(query.getBrandCode())) { + qw.eq("s.brandCode", query.getBrandCode()); + } + //时间 + if (StringUtils.isNotBlank(query.getStartTime())) { + qw.ge("STR_TO_DATE(s.dataDate,'%Y-%m-%d')", query.getStartTime()); + } + if (StringUtils.isNotBlank(query.getEndTime())) { + qw.le("STR_TO_DATE(s.dataDate,'%Y-%m-%d')", query.getEndTime()); + } + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + + public List exportExcel(PagerQuery pq) { + GdSalesYcQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(query!=null) { + if (StringUtils.isNotBlank(query.getStoreCode())) { + qw.eq("s.storeCode", query.getStoreCode()); + } + if (StringUtils.isNotBlank(query.getProdCode())) { + qw.like("s.prodCode", query.getProdCode()); + } + if (StringUtils.isNotBlank(query.getProdName())) { + qw.like("s.prodName", query.getProdName()); + } + if (StringUtils.isNotBlank(query.getBrandName())) { + qw.like("s.brandName", query.getBrandName()); + } + if (StringUtils.isNotBlank(query.getBrandCode())) { + qw.eq("s.brandCode", query.getBrandCode()); + } + //时间 + if (StringUtils.isNotBlank(query.getStartTime())) { + qw.ge("STR_TO_DATE(s.dataDate,'%Y-%m-%d')", query.getStartTime()); + } + if (StringUtils.isNotBlank(query.getEndTime())) { + qw.le("STR_TO_DATE(s.dataDate,'%Y-%m-%d')", query.getEndTime()); + } + } + List pagging = baseMapper.exportExcel(qw); + return pagging; + } +} From ba17866a389cca739c56bef16c341e9ea59eda0c Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Fri, 31 Mar 2023 16:49:57 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97?= =?UTF-8?q?=E5=8F=B7=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervise-customer-biz/pom.xml | 6 + .../supervise/customer/biz/util/CharUtil.java | 80 ++++ .../customer/biz/util/JedisLock.java | 171 +++++++ .../customer/biz/util/JsonUtils.java | 418 ++++++++++++++++++ .../biz/util/JsonValueProcessorImpl.java | 49 ++ .../supervise/customer/biz/util/MapUtils.java | 302 +++++++++++++ .../supervise/customer/biz/util/MyModule.java | 10 + .../customer/biz/util/MyX509TrustManager.java | 22 + .../biz/util/PropertyFilterMixIn.java | 8 + .../customer/biz/util/ValidatorUtils.java | 201 +++++++++ .../customer/biz/util/WeixinCheckoutUtil.java | 89 ++++ .../supervise/customer/biz/util/XmlUtil.java | 201 +++++++++ .../customer/biz/util/applet/MD5.java | 29 ++ .../biz/util/applet/TemplateData.java | 47 ++ .../biz/util/applet/WX_HttpsUtil.java | 80 ++++ .../biz/util/applet/WX_TemplateMsgUtil.java | 112 +++++ .../biz/util/applet/WechatConfig.java | 39 ++ .../util/applet/WechatRefundApiResult.java | 214 +++++++++ .../customer/biz/util/applet/WechatUtil.java | 296 +++++++++++++ .../customer/biz/wechat/WechatApiService.java | 271 ++++++++++++ .../customer/biz/wechat/WechatRest.java | 48 ++ .../customer/biz/wechat/WechatService.java | 67 +++ 22 files changed, 2760 insertions(+) create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/CharUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JedisLock.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonUtils.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonValueProcessorImpl.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MapUtils.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyModule.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyX509TrustManager.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/PropertyFilterMixIn.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/ValidatorUtils.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/WeixinCheckoutUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/XmlUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/MD5.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/TemplateData.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_HttpsUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_TemplateMsgUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatConfig.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatRefundApiResult.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatUtil.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/pom.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/pom.xml index 15f895be..9e6d517c 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/pom.xml +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/pom.xml @@ -117,6 +117,12 @@ easyexcel 3.2.1 + + net.sf.json-lib + json-lib + jdk15 + 2.4 + diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/CharUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/CharUtil.java new file mode 100644 index 00000000..dbd0da33 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/CharUtil.java @@ -0,0 +1,80 @@ +package com.yxt.supervise.customer.biz.util; + +import java.util.Random; + +public class CharUtil { + + /** + * 获取随机字符串 + * + * @param num + * @return + */ + public static String getRandomString(Integer num) { + String base = "abcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < num; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + + /** + * 获取随机字符串 + * + * @param num + * @return + */ + public static String getRandomNum(Integer num) { + String base = "0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < num; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + + /** + * 右补位,左对齐 + * + * @param oriStr 原字符串 + * @param len 目标字符串长度 + * @param fillChar 补位字符 + * @return 目标字符串 + */ + public static String padRight(String oriStr, int len, char fillChar) { + String str = ""; + int strlen = oriStr.length(); + if (strlen < len) { + for (int i = 0; i < len - strlen; i++) { + str = str + fillChar; + } + } + str = str + oriStr; + return str; + } + + /** + * 左补位,右对齐 + * + * @param oriStr 原字符串 + * @param len 目标字符串长度 + * @param fillChar 补位字符 + * @return 目标字符串 + */ + public static String padLeft(String oriStr, int len, char fillChar) { + int strlen = oriStr.length(); + String str = ""; + if (strlen < len) { + for (int i = 0; i < len - strlen; i++) { + str = str + fillChar; + } + } + str = oriStr + str; + return str; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JedisLock.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JedisLock.java new file mode 100644 index 00000000..ac1200a1 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JedisLock.java @@ -0,0 +1,171 @@ +package com.yxt.supervise.customer.biz.util; + +import redis.clients.jedis.Jedis; + +import java.util.Arrays; +import java.util.UUID; + +/** + * Redis distributed lock implementation. + * + * @author Alois Belaska + */ +public class JedisLock { + + /** + * Lua script which allows for an atomic delete on the lock only + * if it is owned by the lock. This prevents locks stealing from others. + */ + private final static String DELETE_IF_OWNED = + "if redis.call('get', KEYS[1]) == ARGV[1] then " + + "return redis.call('del', KEYS[1]) " + + "else " + + "return 0 " + + "end"; + + private Jedis jedis; + + /** + * Lock key path. + */ + private String lockKey; + private String token; + + /** + * Lock expiration in milliseconds. + */ + private int expireMsecs = 60 * 1000; + + /** + * Acquire timeout in milliseconds. + */ + private int timeoutMsecs = 10 * 1000; + + private boolean locked = false; + + /** + * Detailed constructor with default acquire timeout 10000 msecs and lock expiration of 60000 msecs. + * + * @param jedis + * @param lockKey lock key (ex. account:1, ...) + */ + public JedisLock(Jedis jedis, String lockKey) { + this.jedis = jedis; + this.lockKey = lockKey; + this.token = UUID.randomUUID().toString(); + } + + /** + * Detailed constructor with default lock expiration of 60000 msecs. + * + * @param jedis + * @param lockKey lock key (ex. account:1, ...) + * @param timeoutMsecs acquire timeout in milliseconds (default: 10000 msecs) + */ + public JedisLock(Jedis jedis, String lockKey, int timeoutMsecs) { + this(jedis, lockKey); + this.timeoutMsecs = timeoutMsecs; + } + + /** + * Detailed constructor. + * + * @param jedis + * @param lockKey lock key (ex. account:1, ...) + * @param timeoutMsecs acquire timeout in milliseconds (default: 10000 msecs) + * @param expireMsecs lock expiration in milliseconds (default: 60000 msecs) + */ + public JedisLock(Jedis jedis, String lockKey, int timeoutMsecs, int expireMsecs) { + this(jedis, lockKey, timeoutMsecs); + this.expireMsecs = expireMsecs; + } + + /** + * Detailed constructor with default acquire timeout 10000 msecs and lock expiration of 60000 msecs. + * + * @param lockKey lock key (ex. account:1, ...) + */ + public JedisLock(String lockKey) { + this(null, lockKey); + } + + /** + * Detailed constructor with default lock expiration of 60000 msecs. + * + * @param lockKey lock key (ex. account:1, ...) + * @param timeoutMsecs acquire timeout in miliseconds (default: 10000 msecs) + */ + public JedisLock(String lockKey, int timeoutMsecs) { + this(null, lockKey, timeoutMsecs); + } + + /** + * Detailed constructor. + * + * @param lockKey lock key (ex. account:1, ...) + * @param timeoutMsecs acquire timeout in miliseconds (default: 10000 msecs) + * @param expireMsecs lock expiration in miliseconds (default: 60000 msecs) + */ + public JedisLock(String lockKey, int timeoutMsecs, int expireMsecs) { + this(null, lockKey, timeoutMsecs, expireMsecs); + } + + /** + * @return lock key + */ + public String getLockKey() { + return lockKey; + } + + /** + * Acquire lock. + * + * @return true if lock is acquired, false acquire timeouted + * @throws InterruptedException in case of thread interruption + */ + public synchronized boolean acquire() throws InterruptedException { + return acquire(jedis); + } + + /** + * Acquire lock. + * + * @param jedis + * @return true if lock is acquired, false acquire timed out + * @throws InterruptedException in case of thread interruption + */ + public synchronized boolean acquire(Jedis jedis) throws InterruptedException { + int timeout = timeoutMsecs; + while (timeout >= 0) { + + if ("OK".equals(jedis.set(lockKey, token))) { + // lock acquired + locked = true; + return true; + } + + timeout -= 100; + Thread.sleep(100); + } + + return false; + } + + /** + * Acquired lock release. + */ + public synchronized void release() { + release(jedis); + } + + /** + * Acquired lock release. + */ + public synchronized void release(Jedis jedis) { + if (locked) { + // prevent threads from releasing locks which they don't own + jedis.eval(DELETE_IF_OWNED, Arrays.asList(lockKey), Arrays.asList(token)); + locked = false; + } + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonUtils.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonUtils.java new file mode 100644 index 00000000..e5949ed0 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonUtils.java @@ -0,0 +1,418 @@ +package com.yxt.supervise.customer.biz.util; + +import com.fasterxml.jackson.annotation.JsonFilter; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.ser.FilterProvider; +import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; +import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JsonConfig; +import net.sf.json.util.PropertyFilter; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.util.StringUtils; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * json对象映射工具类之jackson封装 + */ +@Slf4j +public class JsonUtils { + + private static ObjectMapper objectMapper = null; + + static { + objectMapper = new ObjectMapper(); + // 设置默认日期格式 + objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); + // 提供其它默认设置 + objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + objectMapper.setFilters(new SimpleFilterProvider() + .setFailOnUnknownId(false)); + objectMapper.registerModule(new MyModule()); + } + + /** + * 将对象转换成json字符串格式(默认将转换所有的属性) + * + * @param value + * @return + */ + public static String toJsonStr(Object value) { + try { + return objectMapper.writeValueAsString(value); + } catch (JsonProcessingException e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + } + + /** + * 将对象转换成json字符串格式 + * + * @param value 需要转换的对象 + * @param properties 需要转换的属性 + */ + public static String toJsonStr(Object value, String[] properties) { + try { + SimpleBeanPropertyFilter sbp = SimpleBeanPropertyFilter + .filterOutAllExcept(properties); + FilterProvider filterProvider = new SimpleFilterProvider() + .addFilter("propertyFilterMixIn", sbp); + return objectMapper.writer(filterProvider) + .writeValueAsString(value); + } catch (Exception e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + + } + + /** + * 将对象转换成json字符串格式 + * + * @param value 需要转换的对象 + * @param properties2Exclude 需要排除的属性 + */ + public static String toJsonStrWithExcludeProperties(Object value, + String[] properties2Exclude) { + try { + SimpleBeanPropertyFilter sbp = SimpleBeanPropertyFilter + .serializeAllExcept(properties2Exclude); + FilterProvider filterProvider = new SimpleFilterProvider() + .addFilter("propertyFilterMixIn", sbp); + return objectMapper.writer(filterProvider) + .writeValueAsString(value); + } catch (Exception e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + + } + + /** + * 将对象json格式直接写出到流对象中(默认将转换所有的属性) + * + * @param out + * @return + */ + public static void writeJsonStr(OutputStream out, Object value) { + try { + objectMapper.writeValue(out, value); + } catch (Exception e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + } + + /** + * 将对象json格式直接写出到流对象中 + * + * @param value 需要转换的对象(注意,需要在要转换的对象中定义JsonFilter注解) + * @param properties 需要转换的属性 + */ + public static void writeJsonStr(OutputStream out, Object value, + String[] properties) { + + try { + objectMapper.writer( + new SimpleFilterProvider().addFilter( + AnnotationUtils + .getValue( + AnnotationUtils.findAnnotation( + value.getClass(), + JsonFilter.class)) + .toString(), SimpleBeanPropertyFilter + .filterOutAllExcept(properties))) + .writeValue(out, value); + } catch (Exception e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + + } + + /** + * 将对象转换成json字符串格式 + * + * @param value 需要转换的对象 + * @param properties2Exclude 需要排除的属性(注意,需要在要转换的对象中定义JsonFilter注解) + */ + public static void writeJsonStrWithExcludeProperties(OutputStream out, + Object value, String[] properties2Exclude) { + try { + objectMapper.writer( + new SimpleFilterProvider().addFilter( + AnnotationUtils + .getValue( + AnnotationUtils.findAnnotation( + value.getClass(), + JsonFilter.class)) + .toString(), SimpleBeanPropertyFilter + .serializeAllExcept(properties2Exclude))) + .writeValue(out, value); + } catch (Exception e) { + log.error("Json转换失败", e); + throw new RuntimeException(e); + } + + } + + /** + * 反序列化POJO或简单Collection如List. + *

+ * 如果JSON字符串为Null或"null"字符串, 返回Null. 如果JSON字符串为"[]", 返回空集合. + *

+ * 如需反序列化复杂Collection如List, 请使用fromJson(String, JavaType) + */ + public static T fromJson(String jsonString, Class clazz) { + if (StringUtils.isEmpty(jsonString)) { + return null; + } + + try { + return objectMapper.readValue(jsonString, clazz); + } catch (IOException e) { + log.warn("parse json string error:" + jsonString, e); + return null; + } + } + + @SuppressWarnings({"unchecked", "unused"}) + public static List readJsonList(String jsondata, Object object) { + try { + List> list = objectMapper.readValue( + jsondata, List.class); + + List objects = Lists.newArrayList(); + System.out.println(list.size()); + for (int i = 0; i < list.size(); i++) { + Map map = list.get(i); + Set set = map.keySet(); + for (Iterator it = set.iterator(); it.hasNext(); ) { + String key = it.next(); + System.out.println(key + ":" + map.get(key)); + } + } + } catch (JsonParseException e) { + e.printStackTrace(); + } catch (JsonMappingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + + /** + * 单独解析某一个json的key值 + * + * @param @param jsonText + * @param @param key + * @param @return 设定文件 + * @return JsonNode 返回类型 + * @throws + * @Title: getjsonvalue + * @Description: TODO(这里用一句话描述这个方法的作用) + */ + public static JsonNode getjsonvalue(String jsonText, String key) { + + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode rootNode = mapper.readTree(jsonText); // 读取Json + + return rootNode.path(key); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + public static JavaType getCollectionType(Class collectionClass, Class... elementClasses) { + ObjectMapper mapper = new ObjectMapper(); + return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses); + } + + public static List json2list(String jsonArrayStr, Class clazz) throws Exception { + List> list = (List) objectMapper.readValue(jsonArrayStr, new TypeReference>() { + }); + List result = new ArrayList(); + Iterator var4 = list.iterator(); + + while (var4.hasNext()) { + Map map = (Map) var4.next(); + result.add(map2pojo(map, clazz)); + } + + return result; + } + + public static T map2pojo(Map map, Class clazz) { + return objectMapper.convertValue(map, clazz); + } + + /** + * 解析json属性,放到实体里面去 + * + * @param @param jsondata + * @param @param collectionClass + * @param @return 设定文件 + * @return List 返回类型 + * @throws + * @Title: readJsonList + * @Description: TODO(这里用一句话描述这个方法的作用) + */ + @SuppressWarnings("unchecked") + public static List readJsonList(String jsondata, Class collectionClass) { + try { + ObjectMapper mapper = new ObjectMapper(); + JavaType javaType = getCollectionType(ArrayList.class, collectionClass); + List lst = (List) mapper.readValue(jsondata, javaType); + + return lst; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * json 转map + * + * @param @param jsondata + * @param @return 设定文件 + * @return Map> 返回类型 + * @throws + * @Title: readJsonMap + * @Description: TODO(这里用一句话描述这个方法的作用) + */ + @SuppressWarnings("unchecked") + public static Map readJsonToMap(String jsondata) { + try { + Map maps = objectMapper.readValue(jsondata, Map.class); + //System.out.println(maps); + return maps; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @SuppressWarnings("unchecked") + public static Map readJsonToMap1(String jsondata) { + try { + Map maps = objectMapper.readValue(jsondata, Map.class); + //System.out.println(maps); + return maps; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * 设置过滤值为空的属性,使得生成的 json 字符串只包含非空的值 + * + * @return + */ + public static JsonConfig getJsonConfig() { + JsonConfig jsonConfig = new JsonConfig(); + jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonValueProcessorImpl()); + jsonConfig.setJsonPropertyFilter(new PropertyFilter() { + @Override + public boolean apply(Object source, String name, Object value) { + return value == null; + } + }); + + jsonConfig.setIgnoreDefaultExcludes(false); // 设置默认忽略 + jsonConfig.setExcludes(new String[]{"dbName", "isDel"}); // 此处是亮点,只要将所需忽略字段加到数组中即可,在实际测试中,我发现在所返回数组中,存在大量无用属性, + + return jsonConfig; + } + + /** + * 将对象转换成json字符串。 + */ + public static String objectToJson(Object data) { + try { + String string = objectMapper.writeValueAsString(data); + return string; + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将json结果集转化为对象 + * + * @param jsonData json数据 + * @param beanType 对象中的object类型 + */ + public static T jsonToPojo(String jsonData, Class beanType) { + try { + if (ValidatorUtils.notEmpty(jsonData)) { + T t = objectMapper.readValue(jsonData, beanType); + return t; + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将json数据转换成pojo对象list + */ + public static List jsonToList(String jsonData, Class beanType) { + JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, beanType); + try { + List list = objectMapper.readValue(jsonData, javaType); + return list; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + public static void main(String[] args) { + Map userData = Maps.newHashMap(); + Map nameStruct = Maps.newHashMap(); + nameStruct.put("firstName", "张三"); + nameStruct.put("lastName", "你大爷"); + + System.out.println(JsonUtils.toJsonStr(nameStruct)); + userData.put("name", nameStruct); + userData.put("age", 20); + List stringList = Lists.newArrayList("A", "B", "C"); + System.out.println(JsonUtils.toJsonStr(userData)); + System.out.println(JsonUtils.toJsonStr(stringList)); +// String[] arr = {"37","38","41","42","43","44","45","1693","1694","1695","1696"}; +// System.out.println(toJsonStr(arr)); + + String ss = "{\"address\": \"address2\",\"name\":\"haha2\"}"; + + Map map = readJsonToMap(ss); + + if (map != null) { + System.out.println(map.get("address")); + } + } + + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonValueProcessorImpl.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonValueProcessorImpl.java new file mode 100644 index 00000000..154b8341 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/JsonValueProcessorImpl.java @@ -0,0 +1,49 @@ +/** + * + */ +package com.yxt.supervise.customer.biz.util; + + +import net.sf.json.JsonConfig; +import net.sf.json.processors.JsonValueProcessor; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + *

Title: JsonValueProcessorImpl.java

+ *

Description: net.js.json 特殊值处理

+ *

Copyright: Copyright (c) 2014-2018

+ *

Company: leimingtech.com

+ * + * @author linjm + * @version 1.0 + * @date 2015年7月17日 + */ +public class JsonValueProcessorImpl implements JsonValueProcessor { + + private String format = "yyyy-MM-dd HH:mm:ss"; + + @Override + public Object processArrayValue(Object value, JsonConfig jsonConfig) { + String[] obj = {}; + if (value instanceof Date[]) { + SimpleDateFormat sdf = new SimpleDateFormat(format); + Date[] date = (Date[]) value; + for (int i = 0; i < date.length; i++) { + obj[i] = sdf.format(date[i]); + } + } + return obj; + } + + @Override + public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { + if (value instanceof Date) { + String str = new SimpleDateFormat(format).format(value); + return str; + } + return value.toString(); + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MapUtils.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MapUtils.java new file mode 100644 index 00000000..2b1c8886 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MapUtils.java @@ -0,0 +1,302 @@ +package com.yxt.supervise.customer.biz.util;//package com.supervise.rms.biz.util; +// +// +//import com.mysql.cj.util.StringUtils; +//import org.apache.commons.beanutils.PropertyUtilsBean; +//import org.apache.commons.lang.ArrayUtils; +//import org.springframework.util.Assert; +// +//import java.beans.PropertyDescriptor; +//import java.math.BigDecimal; +//import java.sql.Date; +//import java.sql.Timestamp; +//import java.util.HashMap; +//import java.util.Iterator; +//import java.util.Map; +//import java.util.Set; +// +///** +// * 获取map中值的工具类,自动进行类型转换 +// * +// * @author DT_panda +// */ +//public class MapUtils { +// +// public static String getString(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// return value.toString(); +// } +// +// public static Integer getInteger(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// if (value instanceof Integer) +// return (Integer) value; +// if (value instanceof String) +// return Integer.valueOf((String) value); +// //Date 不支持变成为date类型 +// if (value instanceof Date) +// throw new ClassCastException(); +// if (value instanceof Number) +// return ((Number) value).intValue(); +// throw new ClassCastException(); +// } +// +// public static Long getLong(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// if (value instanceof Long) +// return (Long) value; +// if (value instanceof Number) +// return ((Number) value).longValue(); +// if (value instanceof String) +// return Long.valueOf((String) value); +// if (value instanceof Date) { +// return (((Date) value).getTime()); +// } +// if (value instanceof java.sql.Time) { +// return ((java.sql.Time) value).getTime(); +// } +// if (value instanceof Timestamp) { +// return ((Timestamp) value).getTime(); +// } +// +// throw new ClassCastException(); +// } +// +// public static Double getDouble(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// if (value instanceof Double) +// return (Double) value; +// if (value instanceof Number) +// return ((Number) value).doubleValue(); +// if (value instanceof String) +// return Double.valueOf((String) value); +// throw new ClassCastException(); +// } +// +// public static BigDecimal getBigDecimal(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// if (value instanceof BigDecimal) +// return (BigDecimal) value; +// if (value instanceof Integer) +// return new BigDecimal((Integer) value); +// if (value instanceof Short) +// return new BigDecimal((Short) value); +// if (value instanceof Byte) +// return new BigDecimal((Byte) value); +// if (value instanceof Long) +// return new BigDecimal((Long) value); +// if (value instanceof Float) +// return new BigDecimal((Float) value); +// if (value instanceof Double) +// return new BigDecimal((Double) value); +// if (value instanceof Date) { +// return new BigDecimal(((Date) value).getTime()); +// } +// if (value instanceof java.sql.Time) { +// return new BigDecimal(((java.sql.Time) value).getTime()); +// } +// if (value instanceof Timestamp) { +// return new BigDecimal(((Timestamp) value).getTime()); +// } +// if (value instanceof String) { +// if (!StringUtils.isNullOrEmpty((String) value)) +// return new BigDecimal((String) value); +// else +// return null; +// } +// throw new ClassCastException(); +// } +// +// /** +// * 将bean转化为map +// * +// * @param bean +// * @return +// */ +// public static Map getMap(Object bean) { +// return beanToMap(bean); +// } +// +// /** +// * 将map中key为likeKey的value前后加上字符'%',用于like查询 +// * +// * @param map +// * @param likeKey +// */ +// public static void toLikeValue(Map map, String... likeKey) { +// if (ArrayUtils.isEmpty(likeKey)) +// return; +// for (String key : likeKey) { +// if (map.containsKey(key)) +// map.put(key, "%" + map.get(key) + "%"); +// } +// } +// +// /** +// * 获取日期 +// * +// * @param key +// * @param map +// * @return +// */ +// public static Date getDate(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// else { +// if (value instanceof Date) { +// return (Date) value; +// } else if (value instanceof Timestamp) { +// return new Date(((Timestamp) value).getTime()); +// } +// } +// return null; +// } +// +// /** +// * 获取日期 +// * +// * @param key +// * @param map +// * @return +// */ +// public static java.util.Date getTimestamp(String key, Map map) { +// if (map == null || key == null) +// throw new IllegalArgumentException(); +// if (!map.containsKey(key)) +// return null; +// Object value = map.get(key); +// if (value == null) +// return null; +// else { +// if (value instanceof Date) { +// return (Date) value; +// } else if (value instanceof Timestamp) { +// Timestamp ts = (Timestamp) value; +// return ts; +// } +// } +// return null; +// } +// +// /** +// * 如果value不为空 ,则放到map中 +// * +// * @param map +// * @param key +// * @param value +// */ +// public static void putIfValueNotNull(Map map, String key, Object value) { +// Assert.notNull(map); +// Assert.hasText(key); +// if (value != null) +// map.put(key, value); +// } +// +// /** +// * 如果value不为空 ,则放到map中 +// * +// * @param map +// * @param key +// * @param value +// */ +// public static void putIfValueNotEmpty(Map map, String key, String value) { +// Assert.notNull(map); +// Assert.hasText(key); +// if (!StringUtils.isNullOrEmpty(value)) +// map.put(key, value); +// } +// +// /** +// * 将map中指定的key的value值进行处理 +// * +// * @param key +// * @param map +// * @param helper +// */ +// public static void convertMapValuePattern(String key, Map map, DealMapValueHelper helper) { +// Assert.hasText(key); +// Assert.notNull(map); +// Assert.notNull(helper); +// helper.dealValue(key, map); +// } +// +// /** +// * 将javabean实体类转为map类型,然后返回一个map类型的值 +// * +// * @return +// */ +// public static Map beanToMap(Object beanObj) { +// Map params = new HashMap(0); +// try { +// PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); +// PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(beanObj); +// for (int i = 0; i < descriptors.length; i++) { +// String name = descriptors[i].getName(); +// if (!"class".equals(name)) { +// params.put(name, propertyUtilsBean.getNestedProperty(beanObj, name)); +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return params; +// } +// +// public static String convertMap2Xml(Map paraMap) { +// StringBuffer xmlStr = new StringBuffer(); +// if (paraMap != null) { +// xmlStr.append(""); +// Set keySet = paraMap.keySet(); +// Iterator keyIte = keySet.iterator(); +// while (keyIte.hasNext()) { +// String key = (String) keyIte.next(); +// String val = String.valueOf(paraMap.get(key)); +// xmlStr.append("<"); +// xmlStr.append(key); +// xmlStr.append(">"); +// xmlStr.append(val); +// xmlStr.append(""); +// } +// xmlStr.append(""); +// } +// return xmlStr.toString(); +// } +//} +// diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyModule.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyModule.java new file mode 100644 index 00000000..12f8b845 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyModule.java @@ -0,0 +1,10 @@ +package com.yxt.supervise.customer.biz.util; + +import com.fasterxml.jackson.databind.module.SimpleModule; + +public class MyModule extends SimpleModule { + @Override + public void setupModule(SetupContext context) { + context.setMixInAnnotations(Object.class, PropertyFilterMixIn.class); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyX509TrustManager.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyX509TrustManager.java new file mode 100644 index 00000000..43142c34 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/MyX509TrustManager.java @@ -0,0 +1,22 @@ +package com.yxt.supervise.customer.biz.util; + +import javax.net.ssl.X509TrustManager; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +public class MyX509TrustManager implements X509TrustManager { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/PropertyFilterMixIn.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/PropertyFilterMixIn.java new file mode 100644 index 00000000..657eae00 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/PropertyFilterMixIn.java @@ -0,0 +1,8 @@ +package com.yxt.supervise.customer.biz.util; + +import com.fasterxml.jackson.annotation.JsonFilter; + +@JsonFilter("propertyFilterMixIn") +public class PropertyFilterMixIn { + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/ValidatorUtils.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/ValidatorUtils.java new file mode 100644 index 00000000..3fee0364 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/ValidatorUtils.java @@ -0,0 +1,201 @@ +package com.yxt.supervise.customer.biz.util; + +//import com.zscat.mallplus.vo.timeline.TimeSecound; + +import java.math.BigDecimal; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ValidatorUtils { + + /** + * 判断内容不为空 + * + * @param str + * @return + */ + public static boolean notEmpty(Object str) { + if (str != null && str.toString().trim().length() > 0) { + return true; + } else { + return false; + } + } + + /** + * 判断内容不为空(包含数组) + * + * @param str + * @return + */ + @SuppressWarnings("unchecked") + public static boolean notEmptyIncludeArray(Object str) { + if (str != null && String.valueOf(str).trim().length() > 0) { + if (str instanceof Object[]) {// 增加了数组长度判断 + Object[] array = (Object[]) str; + if (array.length > 0) + return true; + + return false; + } else if (str instanceof List) {// 增加了数组长度判断 + List list = (List) str; + if (list.size() > 0) + return true; + + return false; + } + + return true; + } else { + return false; + } + } + + /** + * 判断内容是空 + * + * @param str + * @return + */ + public static boolean isEmpty(Object str) { + if (str == null || str.toString().trim().length() == 0) { + return true; + } else { + return false; + } + } + + /** + * 检查对象是否为空 + * + * @param obj 要检查的数据(数据类型: String、Number、Boolean、Collection、Map、Object[]) + * @return true: 为空; false: 不为空
  • String:值为 null、""、"0" 时返回 true
  • + * Number:值为 null、0 时返回 true
  • Boolean:值为 null、false 时返回 true
  • + * Collection:值为 null、size=0 时返回 true
  • Map:值为 null、size=0 时返回 + * true
  • Object[]:值为 null、length=0 时返回 true + */ + @SuppressWarnings("unchecked") + public static boolean empty(Object obj) { + if (obj == null) { + return true; + } else if (obj instanceof String && (obj.equals(""))) { + return true; + } else if (obj instanceof Number && ((Number) obj).doubleValue() == 0) { + return true; + } else if (obj instanceof Boolean && !((Boolean) obj)) { + return true; + } else if (obj instanceof Collection && ((Collection) obj).isEmpty()) { + return true; + } else if (obj instanceof Map && ((Map) obj).isEmpty()) { + return true; + } else if (obj instanceof Object[] && ((Object[]) obj).length == 0) { + return true; + } + return false; + } + + /** + * 判断是否是合法邮箱地址 + * + * @param email + * @return + */ + public static boolean isEmail(String email) { + Pattern p = Pattern + .compile("^\\w+([\\-+.]\\w+)*@\\w+([-.]\\w+)*\\.[a-z]{2,3}"); + Matcher m = p.matcher(email); + return m.matches(); + } + + /** + * 只包含英文字母和数字、下划线 + * + * @param str + * @return + */ + public static boolean onlyNumAndChar(String str) { + String regex = "^[a-zA-Z0-9_]+$"; + Pattern pattern = Pattern.compile(regex); + return pattern.matcher(str).matches(); + } + + /** + * 必须包含字母 + * + * @param str + * @return + */ + public static boolean hasLetterAndNum(String str) { + Pattern pattern = Pattern.compile("^(?=.*[a-zA-Z].*).{6,}$"); + return pattern.matcher(str).matches(); + } + + /** + * 是否长度符合 + * + * @param str + * @param min 最小 + * @param max 最大 + * @return + */ + public static boolean lengthBetween(String str, int min, int max) { + return str.length() >= min && str.length() <= max; + } + + /** + * 判断字符串是否是数字 + * + * @param str + * @return + */ + public static boolean isNumeric(String str) { + Pattern pattern = Pattern.compile("[0-9]*"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + } + + public static Double rountTwo(Double num) { + if (num != null) { + BigDecimal b = new BigDecimal(num); + Double d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + return d; + } else { + return null; + } + } + + public static String doubleTrans(double d) { + if (Math.round(d) - d == 0) { + return String.valueOf((long) d); + } + return String.valueOf(d); + } + + /** + * 获取结束时间与当前的时间差 + * + * @param endTime + * @return + */ +// public static TimeSecound getTimeSecound(Date endTime) { +// +// long diff = endTime.getTime() - System.currentTimeMillis();// 这样得到的差值是微秒级别 +// +// long days = diff / (1000 * 60 * 60 * 24);//天 +// +// long hours = (diff - days * (1000 * 60 * 60 * 24)) +// / (1000 * 60 * 60); //小时 +// long mins = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60); //小时 +// long sc = (diff - days * (1000 * 60 * 60 * 24) - hours +// * (1000 * 60 * 60) - mins * (1000 * 60)) / (1000); // 秒 +// +// return new TimeSecound(days, hours, mins, sc); +// } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/WeixinCheckoutUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/WeixinCheckoutUtil.java new file mode 100644 index 00000000..4fdb1dea --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/WeixinCheckoutUtil.java @@ -0,0 +1,89 @@ +package com.yxt.supervise.customer.biz.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * @author wangpengfei + * @date 2023/3/31 15:52 + */ +public class WeixinCheckoutUtil { + + + // 与接口配置信息中的Token要一致 + private static String token = "yxthryy"; + + /** + * 验证签名 + * + * @param signature + * @param timestamp + * @param nonce + * @return + */ + public static boolean checkSignature(String signature, String timestamp, String nonce) { + String[] arr = new String[] { token, timestamp, nonce }; + // 将token、timestamp、nonce三个参数进行字典序排序 + // Arrays.sort(arr); + sort(arr); + StringBuilder content = new StringBuilder(); + for (int i = 0; i < arr.length; i++) { + content.append(arr[i]); + } + MessageDigest md = null; + String tmpStr = null; + + try { + md = MessageDigest.getInstance("SHA-1"); + // 将三个参数字符串拼接成一个字符串进行sha1加密 + byte[] digest = md.digest(content.toString().getBytes()); + tmpStr = byteToStr(digest); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + content = null; + // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 + + return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; + } + + /** + * 将字节数组转换为十六进制字符串 + * + * @param byteArray + * @return + */ + private static String byteToStr(byte[] byteArray) { + String strDigest = ""; + for (int i = 0; i < byteArray.length; i++) { + strDigest += byteToHexStr(byteArray[i]); + } + return strDigest; + } + + /** + * 将字节转换为十六进制字符串 + * + * @param mByte + * @return + */ + private static String byteToHexStr(byte mByte) { + char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + char[] tempArr = new char[2]; + tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; + tempArr[1] = Digit[mByte & 0X0F]; + String s = new String(tempArr); + return s; + } + public static void sort(String a[]) { + for (int i = 0; i < a.length - 1; i++) { + for (int j = i + 1; j < a.length; j++) { + if (a[j].compareTo(a[i]) < 0) { + String temp = a[i]; + a[i] = a[j]; + a[j] = temp; + } + } + } + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/XmlUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/XmlUtil.java new file mode 100644 index 00000000..90effbb7 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/XmlUtil.java @@ -0,0 +1,201 @@ +package com.yxt.supervise.customer.biz.util;//package com.supervise.rms.biz.util; +// +// +//import com.mysql.cj.util.StringUtils; +//import org.dom4j.Document; +//import org.dom4j.DocumentHelper; +//import org.dom4j.Element; +// +//import java.lang.reflect.Field; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * xml相关的工具类 +// * +// * @author yang.y +// */ +//@SuppressWarnings("unchecked") +//public class XmlUtil { +// +// /** +// * xml字符串转换成bean对象 +// * +// * @param xmlStr xml字符串 +// * @param clazz 待转换的class +// * @return 转换后的对象 +// */ +// public static Object xmlStrToBean(String xmlStr, Class clazz) { +// Object obj = null; +// try { +// // 将xml格式的数据转换成Map对象 +// Map map = xmlStrToMap(xmlStr); +// // 将map对象的数据转换成Bean对象 +// obj = mapToBean(map, clazz); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return obj; +// } +// +// /** +// * 将xml格式的字符串转换成Map对象 +// * +// * @param xmlStr xml格式的字符串 +// * @return Map对象 +// * @throws Exception 异常 +// */ +// public static Map xmlStrToMap(String xmlStr) throws Exception { +// if (StringUtils.isNullOrEmpty(xmlStr)) { +// return null; +// } +// Map map = new HashMap(); +// // 将xml格式的字符串转换成Document对象 +// Document doc = DocumentHelper.parseText(xmlStr); +// // 获取根节点 +// Element root = doc.getRootElement(); +// // 获取根节点下的所有元素 +// List children = root.elements(); +// // 循环所有子元素 +// if (children != null && children.size() > 0) { +// for (int i = 0; i < children.size(); i++) { +// Element child = (Element) children.get(i); +// map.put(child.getName(), child.getTextTrim()); +// } +// } +// return map; +// } +// +// /** +// * 将xml格式字符串转换成Bean对象 +// * 多级子节点递归遍历 +// * +// * @param xmlStr +// * @param clazz +// * @return +// * @throws Exception +// */ +// public static Object xmlStrToJavaBean(String xmlStr, Class clazz) { +// if (StringUtils.isNullOrEmpty(xmlStr)) { +// return null; +// } +// Object obj = null; +// Map map = new HashMap(); +// // 将xml格式的字符串转换成Document对象 +// Document doc; +// try { +// doc = DocumentHelper.parseText(xmlStr); +// +// // 获取根节点 +// Element root = doc.getRootElement(); +// map = elementToMap(root, map); +// // 将map对象的数据转换成Bean对象 +// obj = mapToBean(map, clazz); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return obj; +// } +// +// /** +// * 递归遍历xml子节点,转换Map +// * +// * @param element +// * @param map +// * @return +// */ +// public static Map elementToMap(Element element, Map map) { +// if (element == null || map == null) +// return null; +// List children = element.elements(); +// if (children != null && children.size() > 0) { +// for (int i = 0; i < children.size(); i++) { +// Element child = (Element) children.get(i); +// if (child.elements() != null && child.elements().size() > 0) +// elementToMap(child, map); +// else +// map.put(child.getName(), child.getTextTrim()); +// } +// } +// return map; +// } +// +// /** +// * 将Map对象通过反射机制转换成Bean对象 +// * +// * @param map 存放数据的map对象 +// * @param clazz 待转换的class +// * @return 转换后的Bean对象 +// * @throws Exception 异常 +// */ +// public static Object mapToBean(Map map, Class clazz) throws Exception { +// Object obj = clazz.newInstance(); +// if (map != null && map.size() > 0) { +// for (Map.Entry entry : map.entrySet()) { +// String propertyName = entry.getKey(); +// Object value = entry.getValue(); +// String setMethodName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1); +// Field field = getClassField(clazz, propertyName); +// if (field != null) { +// Class fieldTypeClass = field.getType(); +// value = convertValType(value, fieldTypeClass); +// clazz.getMethod(setMethodName, field.getType()).invoke(obj, value); +// } +// } +// } +// return obj; +// } +// +// /** +// * 将Object类型的值,转换成bean对象属性里对应的类型值 +// * +// * @param value Object对象值 +// * @param fieldTypeClass 属性的类型 +// * @return 转换后的值 +// */ +// private static Object convertValType(Object value, Class fieldTypeClass) { +// Object retVal = null; +// if (Long.class.getName().equals(fieldTypeClass.getName()) +// || long.class.getName().equals(fieldTypeClass.getName())) { +// retVal = Long.parseLong(value.toString()); +// } else if (Integer.class.getName().equals(fieldTypeClass.getName()) +// || int.class.getName().equals(fieldTypeClass.getName())) { +// retVal = Integer.parseInt(value.toString()); +// } else if (Float.class.getName().equals(fieldTypeClass.getName()) +// || float.class.getName().equals(fieldTypeClass.getName())) { +// retVal = Float.parseFloat(value.toString()); +// } else if (Double.class.getName().equals(fieldTypeClass.getName()) +// || double.class.getName().equals(fieldTypeClass.getName())) { +// retVal = Double.parseDouble(value.toString()); +// } else { +// retVal = value; +// } +// return retVal; +// } +// +// /** +// * 获取指定字段名称查找在class中的对应的Field对象(包括查找父类) +// * +// * @param clazz 指定的class +// * @param fieldName 字段名称 +// * @return Field对象 +// */ +// private static Field getClassField(Class clazz, String fieldName) { +// if (Object.class.getName().equals(clazz.getName())) { +// return null; +// } +// Field[] declaredFields = clazz.getDeclaredFields(); +// for (Field field : declaredFields) { +// if (field.getName().equals(fieldName)) { +// return field; +// } +// } +// +// Class superClass = clazz.getSuperclass(); +// if (superClass != null) {// 简单的递归一下 +// return getClassField(superClass, fieldName); +// } +// return null; +// } +//} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/MD5.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/MD5.java new file mode 100644 index 00000000..4ccb91a8 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/MD5.java @@ -0,0 +1,29 @@ +package com.yxt.supervise.customer.biz.util.applet; + +import java.security.MessageDigest; + +public class MD5 { + private MD5() { + } + + /* * 生成 MD5 + * + * @param data 待处理数据 + * @return MD5结果 + */ + public static String getMessageDigest(String data) { + StringBuilder sb = new StringBuilder(); + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] array = md.digest(data.getBytes("UTF-8")); + + for (byte item : array) { + sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3)); + } + } catch (Exception e) { + return null; + } + return sb.toString().toUpperCase(); + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/TemplateData.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/TemplateData.java new file mode 100644 index 00000000..a1e3449a --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/TemplateData.java @@ -0,0 +1,47 @@ +package com.yxt.supervise.customer.biz.util.applet; + +/** + * 模板详细信息 + * 根据需求自己更改 + */ +public class TemplateData { + private String value; + private String color; + + public TemplateData() { + } + + public TemplateData(String value, String color) { + this.value = value; + this.color = color; + } + + /** + * @return the value + */ + public String getValue() { + return value; + } + + /** + * @param value the value to set + */ + public void setValue(String value) { + this.value = value; + } + + /** + * @return the color + */ + public String getColor() { + return color; + } + + /** + * @param color the color to set + */ + public void setColor(String color) { + this.color = color; + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_HttpsUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_HttpsUtil.java new file mode 100644 index 00000000..822cf999 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_HttpsUtil.java @@ -0,0 +1,80 @@ +package com.yxt.supervise.customer.biz.util.applet; + + +import com.yxt.supervise.customer.biz.util.MyX509TrustManager; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.ConnectException; +import java.net.URL; + +public class WX_HttpsUtil { + + private static Logger log = LoggerFactory.getLogger(WX_HttpsUtil.class); + + /** + * 发送https请求 + * + * @param requestUrl 请求地址 + * @param requestMethod 请求方式(GET、POST) + * @param outputStr 提交的数据 + * @return JSONObject(通过JSONObject.get ( key)的方式获取json对象的属性值) + */ + public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) { + JSONObject jsonObject = null; + try { + // 创建SSLContext对象,并使用我们指定的信任管理器初始化 + TrustManager[] tm = {new MyX509TrustManager()}; + SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); + sslContext.init(null, tm, new java.security.SecureRandom()); + // 从上述SSLContext对象中得到SSLSocketFactory对象 + SSLSocketFactory ssf = sslContext.getSocketFactory(); + URL url = new URL(requestUrl); + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); + conn.setSSLSocketFactory(ssf); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setUseCaches(false); + // 设置请求方式(GET/POST) + conn.setRequestMethod(requestMethod); + // 当outputStr不为null时向输出流写数据 + if (null != outputStr) { + OutputStream outputStream = conn.getOutputStream(); + // 注意编码格式 + outputStream.write(outputStr.getBytes("UTF-8")); + outputStream.close(); + } + // 从输入流读取返回内容 + InputStream inputStream = conn.getInputStream(); + InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + String str = null; + StringBuffer buffer = new StringBuffer(); + while ((str = bufferedReader.readLine()) != null) { + buffer.append(str); + } + // 释放资源 + bufferedReader.close(); + inputStreamReader.close(); + inputStream.close(); + inputStream = null; + conn.disconnect(); + jsonObject = JSONObject.fromObject(buffer.toString()); + } catch (ConnectException ce) { + log.error("连接超时:{}", ce); + } catch (Exception e) { + log.error("https请求异常:{}", e); + } + return jsonObject; + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_TemplateMsgUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_TemplateMsgUtil.java new file mode 100644 index 00000000..3985a66c --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WX_TemplateMsgUtil.java @@ -0,0 +1,112 @@ +package com.yxt.supervise.customer.biz.util.applet; + + +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; + +public class WX_TemplateMsgUtil { + + private static Logger log = LoggerFactory.getLogger(WX_TemplateMsgUtil.class); + + /** + * 封装模板详细信息 + * + * @return + */ + public static JSONObject packJsonmsg(Map param) { + JSONObject json = new JSONObject(); + for (Map.Entry entry : param.entrySet()) { + JSONObject keyJson = new JSONObject(); + TemplateData dta = entry.getValue(); + keyJson.put("value", dta.getValue()); + keyJson.put("color", dta.getColor()); + json.put(entry.getKey(), keyJson); + } + return json; + } + + /** + * 根据模板的编号 新增并获取模板ID + * + * @param templateSerialNumber 模板库中模板的 "编号" + * @return 模板ID + */ + public static String getWXTemplateMsgId(String templateSerialNumber, String token) { + String tmpurl = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=" + token; + JSONObject json = new JSONObject(); + json.put("template_id_short", templateSerialNumber); + JSONObject resultJson = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString()); + // JSONObject resultJson = JSONObject.fromObject(result); + String errmsg = (String) resultJson.get("errmsg"); + log.info("获取模板编号返回信息:" + errmsg); + if (!"ok".equals(errmsg)) { + return "error"; + } + String templateId = (String) resultJson.get("template_id"); + return templateId; + } + + /** + * 根据模板ID 删除模板消息 + * + * @param templateId 模板ID + * @return + */ + public static String deleteWXTemplateMsgById(String templateId, String token) { + String tmpurl = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=" + token; + JSONObject json = new JSONObject(); + json.put("template_id", templateId); + try { + JSONObject resultJson = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString()); + // JSONObject resultJson = new JSONObject(result); + log.info("删除" + templateId + "模板消息,返回CODE:" + resultJson.get("errcode")); + String errmsg = (String) resultJson.get("errmsg"); + if (!"ok".equals(errmsg)) { + return "error"; + } + } catch (Exception e) { + e.printStackTrace(); + } + return "success"; + } + + + /** + * 发送微信消息(模板消息) + * + * @param touser 用户 OpenID + * @param templatId 模板消息ID + * @param page URL置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。 + * @param formId + * @param data 详细内容 + * @return + */ + public static String sendWechatMsgToUser(String touser, String templatId, String page, String formId, JSONObject data, String token) { + String tmpurl = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=" + token; + + JSONObject json = new JSONObject(); + json.put("touser", touser); + json.put("form_id", formId); + json.put("page", page); + json.put("template_id", templatId); + json.put("data", data); + try { + JSONObject resultJson = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString()); + // JSONObject resultJson = new JSONObject(result); + log.info("发送微信消息返回信息:" + resultJson.get("errcode")); + String errmsg = (String) resultJson.get("errmsg"); + if (!"ok".equals(errmsg)) { //如果为errmsg为ok,则代表发送成功,公众号推送信息给用户了。 + return "error"; + } + } catch (Exception e) { + e.printStackTrace(); + return "error"; + } + + return "success"; + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatConfig.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatConfig.java new file mode 100644 index 00000000..50c47682 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatConfig.java @@ -0,0 +1,39 @@ +package com.yxt.supervise.customer.biz.util.applet; + +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContexts; + +import javax.net.ssl.SSLContext; +import java.io.InputStream; +import java.security.KeyStore; + +@SuppressWarnings("deprecation") +public class WechatConfig { + + private static SSLConnectionSocketFactory sslcsf; + + public static SSLConnectionSocketFactory getSslcsf() { + if (null == sslcsf) { + setSsslcsf(); + } + return sslcsf; + } + + private static void setSsslcsf() { + try { + KeyStore keyStore = KeyStore.getInstance("PKCS12"); + Thread.currentThread().getContextClassLoader(); + InputStream instream = new WechatRefundApiResult().getClass().getResourceAsStream("certName"); + try { + keyStore.load(instream, "mchId".toCharArray()); + } finally { + instream.close(); + } + SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "mchId".toCharArray()).build(); + sslcsf = new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1"}, null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatRefundApiResult.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatRefundApiResult.java new file mode 100644 index 00000000..76990b8c --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatRefundApiResult.java @@ -0,0 +1,214 @@ +package com.yxt.supervise.customer.biz.util.applet; + +public class WechatRefundApiResult { + private String return_code; + private String return_msg; + + private String result_code; + private String err_code; + private String err_code_des; + private String appid; + private String mch_id; + private String device_info; + private String nonce_str; + private String sign; + private String transaction_id; + private String out_trade_no; + private String out_refund_no; + private String refund_id; + private String refund_channel; + private String refund_fee; + private String settlement_refund_fee; + private String total_fee; + private String settlement_total_fee; + private String fee_type; + private String cash_fee; + private String cash_refund_fee; + private String refund_status; + + public String getRefund_status() { + return refund_status; + } + + public void setRefund_status(String refund_status) { + this.refund_status = refund_status; + } + + public String getReturn_code() { + return return_code; + } + + public void setReturn_code(String return_code) { + this.return_code = return_code; + } + + public String getReturn_msg() { + return return_msg; + } + + public void setReturn_msg(String return_msg) { + this.return_msg = return_msg; + } + + public String getResult_code() { + return result_code; + } + + public void setResult_code(String result_code) { + this.result_code = result_code; + } + + public String getErr_code() { + return err_code; + } + + public void setErr_code(String err_code) { + this.err_code = err_code; + } + + public String getErr_code_des() { + return err_code_des; + } + + public void setErr_code_des(String err_code_des) { + this.err_code_des = err_code_des; + } + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + + public String getMch_id() { + return mch_id; + } + + public void setMch_id(String mch_id) { + this.mch_id = mch_id; + } + + public String getDevice_info() { + return device_info; + } + + public void setDevice_info(String device_info) { + this.device_info = device_info; + } + + public String getNonce_str() { + return nonce_str; + } + + public void setNonce_str(String nonce_str) { + this.nonce_str = nonce_str; + } + + public String getSign() { + return sign; + } + + public void setSign(String sign) { + this.sign = sign; + } + + public String getTransaction_id() { + return transaction_id; + } + + public void setTransaction_id(String transaction_id) { + this.transaction_id = transaction_id; + } + + public String getOut_trade_no() { + return out_trade_no; + } + + public void setOut_trade_no(String out_trade_no) { + this.out_trade_no = out_trade_no; + } + + public String getOut_refund_no() { + return out_refund_no; + } + + public void setOut_refund_no(String out_refund_no) { + this.out_refund_no = out_refund_no; + } + + public String getRefund_id() { + return refund_id; + } + + public void setRefund_id(String refund_id) { + this.refund_id = refund_id; + } + + public String getRefund_channel() { + return refund_channel; + } + + public void setRefund_channel(String refund_channel) { + this.refund_channel = refund_channel; + } + + public String getRefund_fee() { + return refund_fee; + } + + public void setRefund_fee(String refund_fee) { + this.refund_fee = refund_fee; + } + + public String getSettlement_refund_fee() { + return settlement_refund_fee; + } + + public void setSettlement_refund_fee(String settlement_refund_fee) { + this.settlement_refund_fee = settlement_refund_fee; + } + + public String getTotal_fee() { + return total_fee; + } + + public void setTotal_fee(String total_fee) { + this.total_fee = total_fee; + } + + public String getSettlement_total_fee() { + return settlement_total_fee; + } + + public void setSettlement_total_fee(String settlement_total_fee) { + this.settlement_total_fee = settlement_total_fee; + } + + public String getFee_type() { + return fee_type; + } + + public void setFee_type(String fee_type) { + this.fee_type = fee_type; + } + + public String getCash_fee() { + return cash_fee; + } + + public void setCash_fee(String cash_fee) { + this.cash_fee = cash_fee; + } + + public String getCash_refund_fee() { + return cash_refund_fee; + } + + public void setCash_refund_fee(String cash_refund_fee) { + this.cash_refund_fee = cash_refund_fee; + } + + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatUtil.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatUtil.java new file mode 100644 index 00000000..587fba2b --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/util/applet/WechatUtil.java @@ -0,0 +1,296 @@ +package com.yxt.supervise.customer.biz.util.applet; + +//import com.supervise.rms.biz.util.CharUtil; +//import com.supervise.rms.biz.util.MapUtils; +//import com.supervise.rms.biz.util.XmlUtil; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.config.RegistryBuilder; +import org.apache.http.conn.socket.ConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.BasicHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + *

    Title: 微信退款工具类

    + *

    Description: 微信退款工具类,通过充值客户端的不同初始化不同的工具类,得到相应微信退款相关的appid和muchid

    + * + * @author xubo + * @date 2017年6月6日 下午5:05:03 + */ +public class WechatUtil { + /** + * 充值客户端类型--微信公众号 + */ + public static Integer CLIENTTYPE_WX = 2; + /** + * 充值客户端类型--app + */ + public static Integer CLIENTTYPE_APP = 1; + private static Logger logger = LoggerFactory.getLogger(WechatUtil.class); + + /** + * 方法描述:微信退款逻辑 + * 创建时间:2017年4月12日 上午11:04:25 + * 作者: xubo + * + * @param + * @return + */ + /* public static WechatRefundApiResult wxRefund(String out_trade_no, Double orderMoney, Double refundMoney) { + //初始化请求微信服务器的配置信息包括appid密钥等 + //转换金钱格式 + BigDecimal bdOrderMoney = new BigDecimal(orderMoney, MathContext.DECIMAL32); + BigDecimal bdRefundMoney = new BigDecimal(refundMoney, MathContext.DECIMAL32); + //构建请求参数 + Map params = buildRequsetMapParam(out_trade_no, bdOrderMoney, bdRefundMoney); + String mapToXml = MapUtils.convertMap2Xml(params); + //请求微信 + String reponseXml = sendSSLPostToWx(mapToXml, WechatConfig.getSslcsf()); + WechatRefundApiResult result = (WechatRefundApiResult) XmlUtil.xmlStrToBean(reponseXml, WechatRefundApiResult.class); + return result; + }*/ + + /** + * 方法描述:得到请求微信退款请求的参数 + * 创建时间:2017年6月8日 上午11:27:02 + * 作者: xubo + * + * @param + * @return + */ + /* private static Map buildRequsetMapParam(String out_trade_no, BigDecimal bdOrderMoney, BigDecimal bdRefundMoney) { + Map params = new HashMap(); + //微信分配的公众账号ID(企业号corpid即为此appId) + params.put("appid", ResourceUtil.getConfigByName("wx.appId")); + //微信支付分配的商户号 + params.put("mch_id", ResourceUtil.getConfigByName("wx.mchId")); + //随机字符串,不长于32位。推荐随机数生成算法 + params.put("nonce_str", CharUtil.getRandomString(16)); + //商户侧传给微信的订单号 + params.put("out_trade_no", out_trade_no); + //商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔 + params.put("out_refund_no", getBundleId()); + //订单总金额,单位为分,只能为整数 + params.put("total_fee", bdOrderMoney.multiply(new BigDecimal(100)).intValue()); + //退款总金额,订单总金额,单位为分,只能为整数 + params.put("refund_fee", bdRefundMoney.multiply(new BigDecimal(100)).intValue()); + //操作员帐号, 默认为商户号 + params.put("op_user_id", ResourceUtil.getConfigByName("wx.mchId")); + //签名前必须要参数全部写在前面 + params.put("sign", arraySign(params, ResourceUtil.getConfigByName("wx.paySignKey"))); + return params; + }*/ + + /** + * ResourceUtil.getConfigByName("wx.refundUrl") + * 请求微信https + **/ + public static String sendSSLPostToWx(String mapToXml, SSLConnectionSocketFactory sslcsf, String refundUrl) { + logger.info("*******退款(WX Request:" + mapToXml); + HttpPost httPost = new HttpPost(refundUrl); + httPost.addHeader("Connection", "keep-alive"); + httPost.addHeader("Accept", "*/*"); + httPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + httPost.addHeader("Host", "api.mch.weixin.qq.com"); + httPost.addHeader("X-Requested-With", "XMLHttpRequest"); + httPost.addHeader("Cache-Control", "max-age=0"); + httPost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); + httPost.setEntity(new StringEntity(mapToXml, "UTF-8")); + CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslcsf).build(); + CloseableHttpResponse response = null; + try { + response = httpClient.execute(httPost); + HttpEntity entity = response.getEntity(); + String xmlStr = EntityUtils.toString(entity, "UTF-8"); + logger.info("*******退款(WX Response:" + xmlStr); + return xmlStr; + } catch (Exception e) { + logger.error(e.getMessage(), e); + return null; + } finally { + try { + if (response != null) { + response.close(); + } + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + + /** + * 支付交易ID + */ + public static String getBundleId() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String tradeno = dateFormat.format(new Date()); + String str = "000000" + (int) (Math.random() * 1000000); + tradeno = tradeno + str.substring(str.length() - 6); + return tradeno; + } + + /** + * 方法描述:根据签名加密请求参数 + * 创建时间:2017年6月8日 上午11:28:52 + * 作者: xubo + * + * @param + * @return + */ + public static String arraySign(Map params, String paySignKey) { + boolean encode = false; + Set keysSet = params.keySet(); + Object[] keys = keysSet.toArray(); + Arrays.sort(keys); + StringBuffer temp = new StringBuffer(); + boolean first = true; + for (Object key : keys) { + if (first) { + first = false; + } else { + temp.append("&"); + } + temp.append(key).append("="); + Object value = params.get(key); + String valueString = ""; + if (null != value) { + valueString = value.toString(); + } + if (encode) { + try { + temp.append(URLEncoder.encode(valueString, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } else { + temp.append(valueString); + } + } + temp.append("&key="); + temp.append(paySignKey); + System.out.println(temp.toString()); + String packageSign = MD5.getMessageDigest(temp.toString()); + return packageSign; + } + + /** + * 请求,只请求一次,不做重试 + * + * @param url + * @param data + * @return + * @throws Exception + */ + public static String requestOnce(final String url, String data) throws Exception { + BasicHttpClientConnectionManager connManager; + connManager = new BasicHttpClientConnectionManager( + RegistryBuilder.create() + .register("http", PlainConnectionSocketFactory.getSocketFactory()) + .register("https", SSLConnectionSocketFactory.getSocketFactory()) + .build(), + null, + null, + null + ); + + HttpClient httpClient = HttpClientBuilder.create() + .setConnectionManager(connManager) + .build(); + + HttpPost httpPost = new HttpPost(url); + + RequestConfig requestConfig = RequestConfig.custom() + .setSocketTimeout(5000) + .setConnectTimeout(5000) + .setConnectionRequestTimeout(10000).build(); + + httpPost.setConfig(requestConfig); + + StringEntity postEntity = new StringEntity(data, "UTF-8"); + httpPost.addHeader("Content-Type", "text/xml"); + httpPost.addHeader("User-Agent", "wxpay sdk java v1.0 " + "mchId"); + httpPost.setEntity(postEntity); + + HttpResponse httpResponse = httpClient.execute(httpPost); + HttpEntity httpEntity = httpResponse.getEntity(); + String reusltObj = EntityUtils.toString(httpEntity, "UTF-8"); + logger.info("请求结果:" + reusltObj); + return reusltObj; + + } + + /** + * 方法描述:微信查询退款逻辑 + * 创建时间:2017年4月12日 上午11:04:25 + * 作者: xubo + * + * @param + * @return + */ + + +// public Map wxRefundquery(String out_trade_no, String out_refund_no) { +// Map params = new HashMap(); +// //微信分配的公众账号ID(企业号corpid即为此appId) +// params.put("appid", "xx"); +// //微信支付分配的商户号 +// params.put("mch_id", "xx"); +// //随机字符串,不长于32位。推荐随机数生成算法 +// params.put("nonce_str", CharUtil.getRandomString(16)); +// //商户侧传给微信的订单号 +// params.put("out_trade_no", out_trade_no); +// //签名前必须要参数全部写在前面 +// //签名 +// params.put("sign", arraySign(params, "wx.paySignKey")); +// String mapToXml = MapUtils.convertMap2Xml(params); +// HttpPost httPost = new HttpPost("refundqueryUrl"); +// httPost.addHeader("Connection", "keep-alive"); +// httPost.addHeader("Accept", "*/*"); +// httPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); +// httPost.addHeader("Host", "api.mch.weixin.qq.com"); +// httPost.addHeader("X-Requested-With", "XMLHttpRequest"); +// httPost.addHeader("Cache-Control", "max-age=0"); +// httPost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); +// httPost.setEntity(new StringEntity(mapToXml, "UTF-8")); +// CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(WechatConfig.getSslcsf()).build(); +// CloseableHttpResponse response = null; +// try { +// response = httpClient.execute(httPost); +// HttpEntity entity = response.getEntity(); +// String xmlStr = EntityUtils.toString(entity, "UTF-8"); +// System.out.println(xmlStr); +// Map result = XmlUtil.xmlStrToMap(xmlStr);//.xmlStrToBean(xmlStr, WechatRefundApiResult.class); +// return result; +// //将信息保存到数据库 +// } catch (Exception e) { +// logger.error(e.getMessage(), e); +// return null; +// } finally { +// try { +// if (response != null) { +// response.close(); +// } +// } catch (IOException e) { +// logger.error(e.getMessage(), e); +// } +// } +// } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java new file mode 100644 index 00000000..821e7931 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java @@ -0,0 +1,271 @@ +package com.yxt.supervise.customer.biz.wechat; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.yxt.supervise.customer.biz.util.JedisLock; +import com.yxt.supervise.customer.biz.util.JsonUtils; +import com.yxt.supervise.customer.biz.util.MyX509TrustManager; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.junit.Test; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +import javax.annotation.Resource; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.SecureRandom; +import java.util.HashMap; +import java.util.Map; + +/** + * 对接微信接口服务 + * Created by fei on 2017/4/24. + */ +@Service +public class WechatApiService { + public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; + // 存放:1.token,2:获取token的时间,3.过期时间 + public final static Map accessTokenMap = new HashMap(); + private static final String WECHAT_API = "https://api.weixin.qq.com/cgi-bin"; + private static final String WECHAT_API_TOKEN = WECHAT_API + "/token"; + private static final String WECHAT_API_TICKET = WECHAT_API + "/ticket/getticket?type=jsapi&access_token="; + //private final HttpClient httpclient; + +// @Resource +// private SysAppletSetMapper appletSetMapper; +// private Jedis jedis; +// @Resource +// private JedisPool jedisPool; + public String getAccessToken() throws Exception { +// SysAppletSet appletSet = appletSetMapper.selectOne(new QueryWrapper<>()); +// if (null == appletSet) { +// throw new ApiMallPlusException("没有设置支付配置"); +// } + String appId="wx1d44e0fcd110351a"; + String appsecret="4764e32722a7d98656dea6afd9405701"; + String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appsecret; + RestTemplate restTemplate=new RestTemplate(); + String re= restTemplate.getForObject(url,String.class); + com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re); + String at=jsonObject.getString("access_token"); + System.out.println(at); + return at; + } + +// public WechatApiService() { +// RequestConfig config = RequestConfig.custom() +// .setConnectTimeout(5000) +// .setSocketTimeout(20000) +// .setConnectionRequestTimeout(3000) +// .build(); +// httpclient = HttpClients.custom().setDefaultRequestConfig(config).build(); +// } +// +// /** +// * 发起https请求并获取结果 +// * +// * @param requestUrl 请求地址 +// * @param requestMethod 请求方式(GET、POST) +// * @param outputStr 提交的数据 +// * @return JSONObject(通过JSONObject.get ( key)的方式获取json对象的属性值) +// */ +// public static JSONObject handleRequest(String requestUrl, String requestMethod, String outputStr) { +// JSONObject jsonObject = null; +// +// try { +// URL url = new URL(requestUrl); +// HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); +// SSLContext ctx = SSLContext.getInstance("SSL", "SunJSSE"); +// TrustManager[] tm = {new MyX509TrustManager()}; +// ctx.init(null, tm, new SecureRandom()); +// SSLSocketFactory sf = ctx.getSocketFactory(); +// conn.setSSLSocketFactory(sf); +// conn.setDoInput(true); +// conn.setDoOutput(true); +// conn.setRequestMethod(requestMethod); +// conn.setUseCaches(false); +// +// if ("GET".equalsIgnoreCase(requestMethod)) { +// conn.connect(); +// } +// +// if (StringUtils.isNotEmpty(outputStr)) { +// OutputStream out = conn.getOutputStream(); +// out.write(outputStr.getBytes("utf-8")); +// out.close(); +// } +// +// InputStream in = conn.getInputStream(); +// BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8")); +// StringBuffer buffer = new StringBuffer(); +// String line = null; +// +// while ((line = br.readLine()) != null) { +// buffer.append(line); +// } +// +// in.close(); +// conn.disconnect(); +// +// jsonObject = JSONObject.fromObject(buffer.toString()); +// } catch (MalformedURLException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } catch (NoSuchAlgorithmException e) { +// e.printStackTrace(); +// } catch (NoSuchProviderException e) { +// e.printStackTrace(); +// } catch (KeyManagementException e) { +// e.printStackTrace(); +// } +// return jsonObject; +// } +// +// /** +// * 获取默认公众号的 access_token +// * +// * @return access_token +// * @throws Exception +// */ +// +// +// +// +// /** +// * 获取 access_token +// * https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140183 +// * +// * @return access_token +// * @throws Exception +// */ +// public String getAccessToken(String appid, String appSecret) throws Exception { +// +// String key = "access_token:" + appid; +// jedis = jedisPool.getResource(); +// if (jedis.ttl(key) > 30) { +// try { +// return jedis.get(key); +// } finally { +// jedis.close(); +// } +// +// } +// +// //https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET +// String lockKey = "lock_" + key; +// JedisLock lock = new JedisLock(jedis, lockKey); +// boolean acquired = lock.acquire(); +// if (!acquired) { +// jedis.close(); +// throw new Exception("acquired lock: " + lockKey + " timeout"); +// } +// try { +// if (jedis.ttl(key) > 30) { +// try { +// return jedis.get(key); +// } finally { +// jedis.close(); +// } +// } +// +// HttpGet get = new HttpGet(WECHAT_API_TOKEN + "?grant_type=client_credential&appid=" + appid + "&secret=" + appSecret); +// HttpResponse response = httpclient.execute(get); +// String text = EntityUtils.toString(response.getEntity()); +// Map resultMap = JsonUtils.readJsonToMap(text); +// String accessToken = (String) resultMap.get("access_token"); +// int expiresIn = (int) resultMap.get("expires_in"); +// +// jedis.set(key, accessToken); +// jedis.expire(key, expiresIn); +// return accessToken; +// } finally { +// lock.release(); +// jedis.close(); +// } +// } +// +// /** +// * 获取默认公众号 jsapi_ticket +// * +// * @return jsapi_ticket +// * @throws Exception +// */ +// +// public String getJsTicket() throws Exception { +//// SysAppletSet appletSet = appletSetMapper.selectOne(new QueryWrapper<>()); +//// if (null == appletSet) { +//// throw new ApiMallPlusException("没有设置支付配置"); +//// } +//// return getJsTicket(appletSet.getAppid(), appletSet.getAppsecret()); +// return null; +// } +// +// +// /** +// * 获取 jsapi_ticket +// * https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115 +// * +// * @param appid +// * @param appSecret +// * @return ticket +// * @throws Exception +// */ +// public String getJsTicket(String appid, String appSecret) throws Exception { +// jedis = jedisPool.getResource(); +// String key = "jsapi_ticket:" + appid; +// +// if (jedis.ttl(key) > 30) { +// try { +// return jedis.get(key); +// } finally { +// jedis.close(); +// } +// } +// +// String lockKey = "lock_" + key; +// JedisLock lock = new JedisLock(jedis, lockKey); +// boolean acquired = lock.acquire(); +// if (!acquired) { +// jedis.close(); +// throw new Exception("acquired lock: " + lockKey + " timeout"); +// } +// +// try { +// if (jedis.ttl(key) > 30) { +// return jedis.get(key); +// } +// +// HttpGet get = new HttpGet(WECHAT_API_TICKET + getAccessToken(appid, appSecret)); +// HttpResponse response = httpclient.execute(get); +// String text = EntityUtils.toString(response.getEntity()); +// Map resultMap = JsonUtils.readJsonToMap(text); +// String ticket = (String) resultMap.get("ticket"); +// int expiresIn = (int) resultMap.get("expires_in"); +// +// jedis.set(key, ticket); +// jedis.expire(key, expiresIn); +// return ticket; +// } finally { +// lock.release(); +// jedis.close(); +// } +// } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java new file mode 100644 index 00000000..4ca3c9b6 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java @@ -0,0 +1,48 @@ +package com.yxt.supervise.customer.biz.wechat; + +import com.yxt.supervise.customer.biz.util.WeixinCheckoutUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author wangpengfei + * @date 2023/3/31 15:44 + */ +@Api(tags = "测试") +@RestController +@RequestMapping("v1/wechat") +public class WechatRest { + String token="yxthryy"; + @Autowired + WechatService wechatService; + @ApiOperation("token") + @GetMapping(value = "token") + public String wechate(String signature,String timestamp,String nonce,String echostr){ + String token=""; + if (signature != null && WeixinCheckoutUtil.checkSignature(signature, timestamp, nonce)) { + token=wechatService.push(); + } + + return token; + } + + @GetMapping(value = "authGet",produces = "text/plain;charset=utf-8") + public String authGet(@RequestParam(name = "signature", required = false) String signature, + @RequestParam(name = "timestamp", required = false) String timestamp, + @RequestParam(name = "nonce", required = false) String nonce, + @RequestParam(name = "echostr", required = false) String echostr) { + + if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) { + throw new IllegalArgumentException("请求参数非法,请核实!"); + } + if (WeixinCheckoutUtil.checkSignature( signature, timestamp, nonce)) { + return echostr; + } + return "非法请求"; + } + + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java new file mode 100644 index 00000000..12c9bd33 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.biz.wechat; + + +import lombok.extern.log4j.Log4j; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * @author wangpengfei + * @date 2023/3/31 14:00 + */ +@Service +@Slf4j +public class WechatService { + @Autowired + private WechatApiService wechatApiService; + public String push() { + boolean flag = true; +// SysAppletSet appletSet = memberService.getSysAppletSet(0); +// if (null == appletSet) { +// log.error("没有设置支付配置:userId=" + umsMember.getId() + ",orderId=" + order.getId() + ",formId=" + formId); +// flag = false; +// } +// log.info("发送模版消息:userId=" + umsMember.getId() + ",orderId=" + order.getId() + ",formId=" + formId); +// if (StringUtils.isEmpty(formId)) { +// flag = false; +// log.error("发送模版消息:userId=" + umsMember.getId() + ",orderId=" + order.getId() + ",formId=" + formId); +// } + String accessToken = null; + if (flag) { + + try { + accessToken = wechatApiService.getAccessToken(); + +// String templateId = appletSet.getTemplateid1(); +// Map param = new HashMap(); +// param.put("keyword1", new TemplateData(DateUtils.format(order.getCreateTime(), "yyyy-MM-dd"), "#EE0000")); +// +// param.put("keyword2", new TemplateData(name, "#EE0000")); +// param.put("keyword3", new TemplateData(order.getOrderSn(), "#EE0000")); +// param.put("keyword3", new TemplateData(order.getPayAmount() + "", "#EE0000")); +// +// JSONObject jsonObject = JSONObject.fromObject(param); + JSONObject jsonObject = new JSONObject(); + //调用发送微信消息给用户的接口 ********这里写自己在微信公众平台拿到的模板ID + String weiXinOpenId=""; + String templateId="fVgBuwpLC43YkeGWfl1Vw0mW0Qu5WP2giD77TfKAEc4"; + String orderId=""; +// WX_TemplateMsgUtil.sendWechatMsgToUser(weiXinOpenId, templateId, page + "?id=" + orderId, +// formId, jsonObject, accessToken); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + return accessToken; + } +} From 65fff87f3c7a1ceecc22b7433aad6d3cdd0d4375 Mon Sep 17 00:00:00 2001 From: liupopo Date: Fri, 31 Mar 2023 18:04:20 +0800 Subject: [PATCH 03/23] upload --- supervise-customer-ui/.env.development | 2 +- .../src/router/modules/codemenu.js | 16 + .../purchaserequisition/uploadxlsx/index.vue | 8 +- yxt-portal-ui/.env.development | 2 +- yxt-portal-ui/src/views/Home/Home.vue | 2 +- .../src/main/resources/application.yml | 1 + .../PurchaseRequisitionRest.java | 21 +- .../PurchaseRequisitionService.java | 516 +++++------------- .../yxt/supervise/customer/tools/StrTool.java | 54 ++ .../src/main/resources/application.yml | 4 +- 10 files changed, 220 insertions(+), 406 deletions(-) create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/tools/StrTool.java diff --git a/supervise-customer-ui/.env.development b/supervise-customer-ui/.env.development index 75976752..96a7c40f 100644 --- a/supervise-customer-ui/.env.development +++ b/supervise-customer-ui/.env.development @@ -6,4 +6,4 @@ VUE_APP_BASE_API = '/api/service' ## 配置测试和本地开发时的 接口地址 ##VUE_APP_URL = "http://8.130.39.13:8112" -VUE_APP_URL = "http://192.168.3.173:8112" +VUE_APP_URL = "http://127.0.0.1:8112" diff --git a/supervise-customer-ui/src/router/modules/codemenu.js b/supervise-customer-ui/src/router/modules/codemenu.js index fd8a2b1f..c715b7ae 100644 --- a/supervise-customer-ui/src/router/modules/codemenu.js +++ b/supervise-customer-ui/src/router/modules/codemenu.js @@ -302,5 +302,21 @@ const codemenu = [{ noCache: true } }, ] +}, { + path: '/purchaserequisition', + component: Layout, + redirect: '/purchaserequisition/uploadxlsx', + meta: { + title: '采购订单管理' + }, + children: [{ + path: '/purchaserequisition/uploadxlsx', + component: () => import('@/views/purchaserequisition/uploadxlsx/index.vue'), + name: 'purchaserequisitionUploadxlsx', + meta: { + title: '上传采购订单', + noCache: true + } + }] }] export default codemenu diff --git a/supervise-customer-ui/src/views/purchaserequisition/uploadxlsx/index.vue b/supervise-customer-ui/src/views/purchaserequisition/uploadxlsx/index.vue index 6808567d..274727fb 100644 --- a/supervise-customer-ui/src/views/purchaserequisition/uploadxlsx/index.vue +++ b/supervise-customer-ui/src/views/purchaserequisition/uploadxlsx/index.vue @@ -351,10 +351,10 @@ }, handleBeforeUpload(file) { console.log('handleBeforeUpload', file) - req.checkCodeByFileName(file.name).then(res => { - console.log('eeee', res) - return false - }) + // req.checkCodeByFileName(file.name).then(res => { + // console.log('eeee', res) + // return false + // }) }, submitUpload() { this.$refs.upload.submit() diff --git a/yxt-portal-ui/.env.development b/yxt-portal-ui/.env.development index 8e04a50e..bee6aa64 100644 --- a/yxt-portal-ui/.env.development +++ b/yxt-portal-ui/.env.development @@ -5,5 +5,5 @@ ENV = 'development' VUE_APP_BASE_API = '/api' ## 配置测试和本地开发时的 接口地址 -VUE_APP_URL = "http://192.168.3.20:8112" +VUE_APP_URL = "http://127.0.0.1:8112" ##VUE_APP_URL = "http://8.130.39.13:8112" diff --git a/yxt-portal-ui/src/views/Home/Home.vue b/yxt-portal-ui/src/views/Home/Home.vue index 01e4fe42..4ac75d4d 100644 --- a/yxt-portal-ui/src/views/Home/Home.vue +++ b/yxt-portal-ui/src/views/Home/Home.vue @@ -428,7 +428,7 @@ if (index === 9) { window.open('/#/index', '_blank') } else if (index === 0) { - window.open('http://192.168.3.8:9531/#/' + '?token=' + getStorage(), '_blank') + window.open('http://127.0.0.1:9531/#/' + '?token=' + getStorage(), '_blank') } else if (index === 1) { window.open('http://192.168.3.8:9531#/' + '?token=' + getStorage(), '_blank') } else if (index === 2) { diff --git a/yxt_supervise/gateway/src/main/resources/application.yml b/yxt_supervise/gateway/src/main/resources/application.yml index 9444ea91..b0a49ca2 100644 --- a/yxt_supervise/gateway/src/main/resources/application.yml +++ b/yxt_supervise/gateway/src/main/resources/application.yml @@ -53,6 +53,7 @@ spring: - StripPrefix=1 ignore: whites: + - /customer/v1/wechat/authGet #app端登录 - /portal/v1/regions/treeList - /portal/v1/sysuser/login #pc端登录 - /portal/v1/sysuser/loginByNoVeriCode #登录无验证码 diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionRest.java index 157b28fa..4185d05a 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionRest.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionRest.java @@ -6,15 +6,13 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.supervise.customer.api.gdwholesalegd.GdWholesaleGdExcelVo; import com.yxt.supervise.customer.api.gdwholesalegd.GdWholesaleGdQuery; -import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionExcelVo; -import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionFeign; -import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionQuery; -import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionVo; +import com.yxt.supervise.customer.api.purchaserequisition.*; import com.yxt.supervise.customer.api.restrictedbrand.RestrictedBrandQuery; import com.yxt.supervise.customer.api.restrictedbrand.RestrictedBrandVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -36,6 +34,7 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign { @Autowired PurchaseRequisitionService purchaseRequisitionService; + @ApiOperation("根据条件分页查询数据的列表") @PostMapping("/listPage") public ResultBean> listPage(@RequestBody PagerQuery pq) { @@ -43,15 +42,16 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign { PagerVo pv = purchaseRequisitionService.listPageVo(pq); return rb.success().setData(pv); } + @PostMapping("/exportExcel") @ApiOperation(value = "采购订单数据导出") public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { //得到所有要导出的数据 List excelVos = purchaseRequisitionService.exportExcel(pq); String fileName = "采购订单" + System.currentTimeMillis() + ".xlsx"; - response.setContentType( "application/vnd.ms-excel"); + response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf8"); - response.setHeader("Content-disposition","attachment;filename="+ fileName ); + response.setHeader("Content-disposition", "attachment;filename=" + fileName); // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 如果这里想使用03 则 传入excelType参数即可 ServletOutputStream outputStream = response.getOutputStream(); @@ -62,9 +62,14 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign { @ApiOperation("上传采购订单的EXCEL文件") @PostMapping(value = "/uploadXlsxFile") - public ResultBean importBrandSort(@RequestParam("file") MultipartFile file) { + public ResultBean uploadXlsxFile(@RequestParam("file") MultipartFile file) { ResultBean rb = ResultBean.fireFail(); - log.debug("---{},{}", file.getOriginalFilename(), file.getName()); + String filename = file.getOriginalFilename(); + if (StringUtils.isBlank(filename)) + return rb.setMsg("文件名不可为空"); + if (filename.length() < 15) + return rb.setMsg("文件名格式错误"); + rb = purchaseRequisitionService.uploadXlsxFile(file); return rb; } diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionService.java index 89409eef..dfbaa25b 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionService.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisition/PurchaseRequisitionService.java @@ -1,6 +1,10 @@ package com.yxt.supervise.customer.biz.purchaserequisition; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.read.listener.ReadListener; +import com.alibaba.excel.read.metadata.holder.ReadRowHolder; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.service.MybatisBaseService; @@ -8,28 +12,26 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; -import com.yxt.supervise.customer.api.gdwholesalegd.GdWholesaleGd; -import com.yxt.supervise.customer.api.gdwholesalegd.GdWholesaleGdExcelVo; -import com.yxt.supervise.customer.api.gdwholesalegd.GdWholesaleGdQuery; import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisition; import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionExcelVo; import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionQuery; import com.yxt.supervise.customer.api.purchaserequisition.PurchaseRequisitionVo; -import com.yxt.supervise.customer.api.restrictedbrand.RestrictedBrand; -import com.yxt.supervise.customer.api.restrictedbrand.RestrictedBrandQuery; -import com.yxt.supervise.customer.api.restrictedbrand.RestrictedBrandVo; +import com.yxt.supervise.customer.api.purchaserequisitionpro.PurchaseRequisitionPro; +import com.yxt.supervise.customer.biz.purchaserequisitionpro.PurchaseRequisitionProService; +import com.yxt.supervise.customer.tools.StrTool; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.ss.usermodel.CellType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; -import java.math.BigDecimal; +import java.io.IOException; import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -40,6 +42,8 @@ import java.util.Map; @Service public class PurchaseRequisitionService extends MybatisBaseService { + @Autowired + private PurchaseRequisitionProService purchaseRequisitionProService; public PagerVo listPageVo(PagerQuery pq) { PurchaseRequisitionQuery query = pq.getParams(); @@ -66,6 +70,7 @@ public class PurchaseRequisitionService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + public List exportExcel(PagerQuery pq) { PurchaseRequisitionQuery query = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); @@ -90,167 +95,105 @@ public class PurchaseRequisitionService extends MybatisBaseService checkCodeByFileName(String filename) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(filename)) + return rb.setMsg("文件名不可为空"); + if (filename.length() < 15) + return rb.setMsg("文件名格式错误"); + String code = filename.substring(0, 14); + PurchaseRequisition purchaseRequisition = fetchByCode(code); + if (purchaseRequisition == null) + return rb.success().setData("nothas"); + return rb.success().setData("hased"); } - /** - * 在途商品管理汇总表 - * - * @throws ParseException - */ - public void ztspglhzb() throws ParseException { -// Date date = new Date(); -// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); -// baseMapper.deleteAll(); -// List> list = baseMapper.ztspglhzb();//--在途商品管理汇总表 -// for (Map m : list) { -// String billTotalPrice = m.get("billTotalPrice") != null ? m.get("billTotalPrice").toString() : "0";//订单总额 -// String prodValue = m.get("prodValue") != null ? m.get("prodValue").toString() : "0";//实际到货价值 -// String arrivalDate = m.get("arrivalDate") != null ? m.get("arrivalDate").toString() : "0";//全部到货日期 -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); -// m.put("date", sdf.format(date)); -// m.put("no", sdf1.format(date).toString() + "01");//编号 -// BigDecimal bigDecimal = new BigDecimal(billTotalPrice); //总金额 -// BigDecimal bigDecimal1 = new BigDecimal(prodValue);//到货金额 -// BigDecimal subtract = bigDecimal.subtract(bigDecimal1);//有未到货的货值 -// Date parse = sdf.parse(arrivalDate); -// long nowMillisecond = date.getTime(); -// long arrivalMillisecond = parse.getTime();//到货日期 -// if (nowMillisecond > arrivalMillisecond && subtract.compareTo(new BigDecimal("0")) == 1) {//是否延期 大于到货日期 并且在途货值大于0 为延期 -// m.put("sfyq", "是"); -// } else { -// m.put("sfyq", "否"); -// } -// if (subtract.compareTo(new BigDecimal("0")) == 1) { -// m.put("wdhjz", subtract.toString()); -// m.put("cchjz", "0"); -// } else { -// m.put("wdhjz", "0"); -// BigDecimal subtract2 = bigDecimal1.subtract(bigDecimal); -// m.put("cchjz", subtract2.toString()); -// } -// } -// log.info("ztspglhzb:{}", JSONObject.toJSONString(list)); -// baseMapper.insertZtspglhzb(list); + public PurchaseRequisition fetchByCode(String code) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("code", code); + List list = baseMapper.selectList(qw); + if (list == null || list.isEmpty()) + return null; + return list.get(0); } - /** - * 供应商订单明细表 - */ - public void gysddmxb() { -// Date date = new Date(); -// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); -// List> list2 = baseMapper.gysddmxb();//--供应商订单明细表 -// for (Map m : list2) { -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); -// String format = sdf.format(date); -// m.put("date", format.toString()); -// String no = sdf1.format(date).toString() + "01";//编号 -// m.put("no", no); -// } -// log.info("gysddmxb:{}", JSONObject.toJSONString(list2)); -// baseMapper.deleteGysddmxb(); -// baseMapper.insertGysddmxb(list2); + public ResultBean uploadXlsxFile(MultipartFile file) { + ResultBean rb = ResultBean.fireFail(); + PurchaseRequisition pr = new PurchaseRequisition(); + pr.setPurchasingOrgCode("1"); + pr.setPurchasingOrgName("36524集团"); + pr.setPurchasingDeptCode("9001"); + pr.setPurchasingDeptName("365生活通"); + + List proList = new ArrayList<>(); + try { + ExcelReaderBuilder read = EasyExcel.read(file.getInputStream(), createReadListener(pr, proList)); + read.sheet().doRead(); + } catch (IOException e) { + e.printStackTrace(); + return rb.setMsg("读取Excel文件异常:" + e.getMessage()); + } + baseMapper.insert(pr); + purchaseRequisitionProService.saveBatch(proList); + return rb.success().setData(pr); } - // -// public ResultBean readBrandPeriodSorXls1(InputStream is) { -// /* int ii=uddatePrice(); -// if(ii==1){ -// return; -// }*/ -// HSSFWorkbook hssfWorkbook = null; -// try { -// hssfWorkbook = new HSSFWorkbook(is); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// -// List lisss=new ArrayList<>(); -// List lisss2=new ArrayList<>(); -// HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0); -// PurchaseRequisition pr=new PurchaseRequisition(); -// List prps=new ArrayList<>(); -// pr.setPurchasingOrgCode("1"); -// pr.setPurchasingOrgName("36524集团"); -// pr.setPurchasingDeptCode("9001"); -// pr.setPurchasingDeptName("365生活通"); -// // 循环行Row -// for (int rowNum = 0; rowNum <=hssfSheet.getLastRowNum(); rowNum++) { -// HSSFRow hssfRow = hssfSheet.getRow(rowNum); -// int i = 0; -// try{ -// //设置单号 填单人 填单时间 -// /*if(rowNum==0){ -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// setRow0(pr, hssfRow, i); -// } -// }*/ -// //设置单号 填单人 填单时间 -// if(rowNum==1){ -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// setRow1(pr, hssfRow, i); -// } -// } -// //设置供货单位 仓位 到货日期 -// if(rowNum==2){ -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// setRow2(pr, hssfRow, i); -// } -// } -// //设置采购员 入库单位 单据到效期 -// if(rowNum==3){ -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// setRow3(pr, hssfRow, i); -// } -// } -// //设置采购员 入库单位 单据到效期 -// if(rowNum==4){ -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// setRow4(pr, hssfRow, i); -// } -// } -// if(rowNum>6){ -// ProductInformation p=new ProductInformation(); -// PurchaseRequisitionPro prp = new PurchaseRequisitionPro(); -// prp.setMainSid(pr.getSid()); -// String hsje="";//含税金额 -// for ( ; i < hssfRow.getLastCellNum(); i++) { -// HSSFCell brandIdHSSFCell = hssfRow.getCell(i); -// if(brandIdHSSFCell!=null){ -// if (i == 1) {//商品代码 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String code = brandIdHSSFCell.getStringCellValue(); -// ProductInformationVo productInformation=productInformationService.selectByCode(code); -// if(productInformation==null){ -// p.setCode(code); -// }else{ -// prp.setCategory(productInformation.getCategory()); -// prp.setCategoryKey(productInformation.getCategoryKey()); -// prp.setBrand(productInformation.getBrand()); -// prp.setBrandCode(productInformation.getBrandSid()); -// } -// prp.setProCode(code); -// prp.setContent("code");//规格型号 -// } -// if (i == 2) {//名称 + private ReadListener> createReadListener(PurchaseRequisition pr, List proList) { + return new ReadListener>() { + private void full1(Map map) { + String code = map.get(1); + pr.setCode(code); + pr.setPurchaseDate(map.get(5)); + } + + private void full2(Map map) { + String str1 = map.get(1); + String[] arr1 = StrTool.splitBySquareBrackets(str1); + pr.setSupplierName(arr1[0]); + pr.setSupplierCode(arr1[1]); + pr.setWarehousePosition("供应链仓"); + pr.setWarehousePositionCode("112"); + pr.setArrivalDate(map.get(5)); + } + + private void full3(Map map) { + String str1 = map.get(1); + String[] arr1 = StrTool.splitBySquareBrackets(str1); + pr.setBuyerName(arr1[0]); + pr.setBuyerCode(arr1[1]); + pr.setExpiryDate(map.get(5)); + } + + private void full4(Map map) { + pr.setCompletionStatus(map.get(5)); + pr.setCompletionStatusKey("0");//0未完成 + } + + private void addPro(Map map) { + PurchaseRequisitionPro prp = new PurchaseRequisitionPro(); + prp.setMainSid(pr.getSid()); + String hsje = "";//含税金额 + prp.setProCode(map.get(1)); + // prp.setCategory(productInformation.getCategory()); + // prp.setCategoryKey(productInformation.getCategoryKey()); + // prp.setBrand(productInformation.getBrand()); + // prp.setBrandCode(productInformation.getBrandSid()); + prp.setContent("code");//规格型号 + prp.setProName(map.get(2)); +prp.setNumber(map.get(3)); +prp.setPackageSpec(map.get(4)); + prp.setPackageNumber(map.get(5)); + +// if (i == 7) {//含税单价(元) // brandIdHSSFCell.setCellType(CellType.STRING); -// if (StringUtils.isNotBlank(brandIdHSSFCell.getStringCellValue())) { -// String name = brandIdHSSFCell.getStringCellValue(); -// prp.setProName(name); -// p.setName(name); +// if(StringUtils.isBlank(prp.getProCode())){ +// continue; // } -// } -// if (i == 3) {//数量 -// brandIdHSSFCell.setCellType(CellType.STRING); -// if (StringUtils.isNotBlank(brandIdHSSFCell.getStringCellValue())) { -// String value = brandIdHSSFCell.getStringCellValue(); -// prp.setNumber(value); +// if (StringUtils.isNotBlank(brandIdHSSFCell.getStringCellValue())) { +// hsje= brandIdHSSFCell.getStringCellValue(); // } // } + // if (i == 10) {//第二代码 // brandIdHSSFCell.setCellType(CellType.STRING); // if (StringUtils.isNotBlank(brandIdHSSFCell.getStringCellValue())) { @@ -258,13 +201,6 @@ public class PurchaseRequisitionService extends MybatisBaseService objectResultBean=ResultBean.fireFail(); -// SupplierInfoVo supplierInfoVo = supplierInfoService.selectByCodeForIndex(pr.getSupplierCode()); -// if(supplierInfoVo==null){ -// return objectResultBean.setMsg("供应商不存在!"); -// } -// // List> suplierZtyz=baseMapper.suplierZtyz(pr.getSupplierCode()); 临时注释掉 2023-01-16 -// List> suplierZtyz=baseMapper.suplierZtyz2(pr.getSupplierCode()); -// if(suplierZtyz.size()>0){ -// return objectResultBean.setMsg("供应商有在途商品!"); -// } -// purchaseRequisitionService.insert(pr); -// for (PurchaseRequisitionPro p: prps){ -// purchaseRequisitionProService.insert(p); -// /* String proCode = p.getProCode();*/ -// /*int row=purchaseRequisitionProService.selectProdCodeTable(proCode); -// if(row==0){ -// purchaseRequisitionProService.insertProdCodeTable(proCode); -// }*/ -// } -// GdRescategoryProdService.resetCache(); -// log.info("x:{}",JSON.toJSONString(lisss)); -// String x1 = JSON.toJSONString(lisss2); -// log.info("x1:{}",JSON.toJSONString(lisss2)); -// return objectResultBean.success().setData(pr.getCode()); -// //return message; -// } -// -// private void setRow0(PurchaseRequisition pr, HSSFRow hssfRow, int i) { -// HSSFCell brandIdHSSFCell = hssfRow.getCell(i); -// if(brandIdHSSFCell!=null){ -// if (i == 1) {//单号 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String code = brandIdHSSFCell.getStringCellValue(); -// if(com.yxt.common.base.utils.StringUtils.isNotBlank(code)){ -// PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectByCode(code); -// if(purchaseRequisition!=null){ -// String newCode = purchaseRequisition.getNewCode(); -// String[] split = newCode.split(","); -// split[split.length]=code; -// String str=""; -// for(String s:split){ -// str=str+","+s; -// } -// String substring = str.substring(1, str.length()); -// purchaseRequisition.setNewCode(substring); -// purchaseRequisitionService.updateById(purchaseRequisition); -// } -// pr.setOldCode(code); -// } -// } -// } -// } -// private void setRow1(PurchaseRequisition pr, HSSFRow hssfRow, int i) { -// HSSFCell brandIdHSSFCell = hssfRow.getCell(i); -// if(brandIdHSSFCell!=null){ -// if (i == 1) {//单号 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String code = brandIdHSSFCell.getStringCellValue(); -// PurchaseRequisition purchaseRequisition = baseMapper.selectByCode(code); -// Map map=new HashMap<>(); -// map.put("code",code); -// baseMapper.deleteByMap(map); -// purchaseRequisition=new PurchaseRequisition(); -// Map map1=new HashMap<>(); -// if(purchaseRequisition!=null){ -// map1.put("mainSid",purchaseRequisition.getSid()); -// purchaseRequisitionProService.deleteByMap(map1); -// } -// -// //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); -// pr.setCode(code); -// -// } -// if (i == 3) {//填单人 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String value = brandIdHSSFCell.getStringCellValue(); -// //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); -// String[] split = value.split("\\["); -// String v = split[0];//类别value -// String key=split[1].replace("]","");//key -// pr.setBuyerName(v); -// pr.setBuyerCode(key); -// } -// if (i == 5) {//填单时间 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String value = brandIdHSSFCell.getStringCellValue(); -// //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); -// pr.setPurchaseDate(value); -// } -// } -// } -// private void setRow2(PurchaseRequisition pr, HSSFRow hssfRow, int i) { -// HSSFCell brandIdHSSFCell = hssfRow.getCell(i); -// if(brandIdHSSFCell!=null){ -// if (i == 1) {//供货单位 供应商 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String value = brandIdHSSFCell.getStringCellValue(); -// String[] split = value.split("\\["); -// String v = split[0];//类别value -// String key=split[1].replace("]","");//key -// SupplierInfoVo supplierInfoVo = supplierInfoService.selectByCodeForIndex(key); -// pr.setSupplierCode(supplierInfoVo.getCodeUnified()); -// pr.setSupplierName(v); -// -// } -// if (i == 3) {//仓位 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String value = brandIdHSSFCell.getStringCellValue(); -// String[] split = value.split("\\["); -// String v ="供应链仓";// split[0];//类别value -// String key="112";//split[1].replace("]","");//key -// WarehousePositionVo warehousePositionVo = warehousePositionService.selectByCode(key); -// if(warehousePositionVo==null){ -// WarehousePosition warehousePosition=new WarehousePosition(); -// warehousePosition.setName(v); -// warehousePosition.setCode(key); -// warehousePositionService.insert(warehousePosition); -// } -// pr.setWarehousePosition(v); -// pr.setWarehousePositionCode(key); -// } -// if (i == 5) {//到货日期 -// brandIdHSSFCell.setCellType(CellType.STRING); -// String value = brandIdHSSFCell.getStringCellValue(); -// //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); -// pr.setArrivalDate(value); -// } -// } -// } - private void setRow3(PurchaseRequisition pr, HSSFRow hssfRow, int i) { - HSSFCell brandIdHSSFCell = hssfRow.getCell(i); - if (brandIdHSSFCell != null) { - if (i == 1) {//采购员 - brandIdHSSFCell.setCellType(CellType.STRING); - String value = brandIdHSSFCell.getStringCellValue(); - //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); - String[] split = value.split("\\["); - String v = split[0];//类别value - String key = split[1].replace("]", "");//key - pr.setBuyerName(v); - pr.setBuyerCode(key); - pr.setLogisticsCompanyCode(key); - pr.setLogisticsCompanyName(v); + proList.add(prp); } - if (i == 5) {//单据到效期 - brandIdHSSFCell.setCellType(CellType.STRING); - String value = brandIdHSSFCell.getStringCellValue(); - //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); - pr.setExpiryDate(value); - } - } - } - - private void setRow4(PurchaseRequisition pr, HSSFRow hssfRow, int i) { - HSSFCell brandIdHSSFCell = hssfRow.getCell(i); - if (brandIdHSSFCell != null) { - if (i == 5) {//完成状态 - brandIdHSSFCell.setCellType(CellType.STRING); - String value = brandIdHSSFCell.getStringCellValue(); - //ProductInformationVo productInformationVo = baseMapper.selectByCode(code); - pr.setCompletionStatus(value); - pr.setCompletionStatusKey("0");//0未完成 + @Override + public void invoke(Map map, AnalysisContext analysisContext) { + ReadRowHolder readRowHolder = analysisContext.readRowHolder(); + int rowIndex = readRowHolder.getRowIndex(); + if (1 == rowIndex) { + full1(map); + } + if (2 == rowIndex) { + full2(map); + } + if (3 == rowIndex) { + full3(map); + } + if (4 == rowIndex) { + full4(map); + } + if (rowIndex > 6) + addPro(map); } - } - } - - - private void createRow3(HSSFSheet sheet, int rownum, String[] col1, HSSFCellStyle style) { - //声明列对象 - HSSFCell cell = null; - //创建标题 - HSSFRow row2 = sheet.createRow(rownum); - for (int i = 0; i < col1.length; i++) { - cell = row2.createCell(i); - cell.setCellValue(col1[i]); - cell.setCellStyle(style); - } - } - public ResultBean checkCodeByFileName(String filename) { - ResultBean rb = ResultBean.fireFail(); - if (StringUtils.isBlank(filename)) - return rb.setMsg("文件名不可为空"); - if (filename.length() < 15) - return rb.setMsg("文件名格式错误"); - String code = filename.substring(0, 14); - PurchaseRequisition purchaseRequisition = fetchByCode(code); - if (purchaseRequisition == null) - return rb.success().setData("nothas"); - return rb.success().setData("hased"); - } + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { - public PurchaseRequisition fetchByCode(String code) { - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("code", code); - List list = baseMapper.selectList(qw); - if (list == null || list.isEmpty()) - return null; - return list.get(0); + } + }; } } diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/tools/StrTool.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/tools/StrTool.java new file mode 100644 index 00000000..a9bcf298 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/tools/StrTool.java @@ -0,0 +1,54 @@ +package com.yxt.supervise.customer.tools; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.StrUtil; + +import java.util.ArrayList; +import java.util.List; + +public class StrTool { + + /** + * 将字符串通过中括号分解 + * + * @param src + * @return + */ + public static String[] splitBySquareBrackets(String src) { + String[] strings = new String[3]; + List list = new ArrayList<>(); + int i = src.indexOf('['); + if (i == -1) + return strings; + if (i == 0) { + int i1 = src.indexOf(']'); + if (i1 == -1) { + String one = src.substring(1); + list.add(one); + } else { + String one = StrUtil.sub(src, 1, i1); + list.add(one); + if ((i1 + 1) < src.length()) { + String two = src.substring(i1 + 1); + list.add(two); + } + } + } else { + String one = StrUtil.sub(src, 0, i); + list.add(one); + int i1 = src.indexOf(']'); + if (i1 == -1) { + String two = src.substring(i + 1); + list.add(two); + } else { + String two = StrUtil.sub(src, i + 1, i1); + list.add(two); + if ((i1 + 1) < src.length()) { + String three = src.substring(i1 + 1); + list.add(three); + } + } + } + return list.toArray(strings); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application.yml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application.yml index f4486602..ea660ca7 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application.yml +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application.yml @@ -2,8 +2,8 @@ spring: application: name: supervise-customer profiles: - active: devv -# active: test +# active: devv + active: test messages: # 国际化资源文件路径 basename: i18n/messages From 6b8c955d129c099e5dce98024dbb914e9ef5eb93 Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Fri, 31 Mar 2023 18:31:18 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97?= =?UTF-8?q?=E5=8F=B7=E6=8E=A8=E9=80=81=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/biz/wechat/WechatApiService.java | 19 ++--- .../customer/biz/wechat/WechatRest.java | 85 ++++++++++++++++++- .../customer/biz/wechat/WechatService.java | 2 +- 3 files changed, 93 insertions(+), 13 deletions(-) diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java index 821e7931..871a5fb1 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatApiService.java @@ -53,21 +53,18 @@ public class WechatApiService { // private Jedis jedis; // @Resource // private JedisPool jedisPool; - public String getAccessToken() throws Exception { +public String getAccessToken(String appId,String appsecret) throws Exception { // SysAppletSet appletSet = appletSetMapper.selectOne(new QueryWrapper<>()); // if (null == appletSet) { // throw new ApiMallPlusException("没有设置支付配置"); // } - String appId="wx1d44e0fcd110351a"; - String appsecret="4764e32722a7d98656dea6afd9405701"; - String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appsecret; - RestTemplate restTemplate=new RestTemplate(); - String re= restTemplate.getForObject(url,String.class); - com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re); - String at=jsonObject.getString("access_token"); - System.out.println(at); - return at; - } + String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appsecret; + RestTemplate restTemplate=new RestTemplate(); + String re= restTemplate.getForObject(url,String.class); + com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re); + String at=jsonObject.getString("access_token"); + return at; +} // public WechatApiService() { // RequestConfig config = RequestConfig.custom() diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java index 4ca3c9b6..825572c0 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java @@ -1,11 +1,18 @@ package com.yxt.supervise.customer.biz.wechat; +import com.alibaba.fastjson.JSONObject; import com.yxt.supervise.customer.biz.util.WeixinCheckoutUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import java.util.HashMap; +import java.util.Map; /** * @author wangpengfei @@ -15,9 +22,10 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("v1/wechat") public class WechatRest { - String token="yxthryy"; @Autowired WechatService wechatService; + @Autowired + private WechatApiService wechatApiService; @ApiOperation("token") @GetMapping(value = "token") public String wechate(String signature,String timestamp,String nonce,String echostr){ @@ -43,6 +51,81 @@ public class WechatRest { } return "非法请求"; } + @GetMapping("/sendMessage") + @Test + public void sendMessage() throws Exception { + //String openId="otnrM57kui-WCUmRtChhb1HguOgw"; + //String openId ="otnrM5ySvUo7ZZc4qafWzM9eyKBk"; + + String openId="otnrM544hxIgkMOfaDU8VpJhj_6k"; + String appsecret="4764e32722a7d98656dea6afd9405701"; + String appId="wx1d44e0fcd110351a"; + // 模板参数 + Map sendMag = new HashMap(); + + // openId代表一个唯一微信用户,即微信消息的接收人 + //String openId = "oLcw_5ti_iJpwibmL0QxfK2ZG9qQ"; + // 公众号的模板id(也有相应的接口可以查询到) + String templateId = "fVgBuwpLC43YkeGWfl1Vw0mW0Qu5WP2giD77TfKAEc4"; + // 微信的基础accessToken + String accessToken=getAccessToken(appId,appsecret); + String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken; + + /** + * 其他模板可以从模板库中自己添加 + * 模板ID + * B0YStqTYdjHhY9Da9Sy2NM7HXxxxxxxxxxxxxxx + * 开发者调用模板消息接口时需提供模板ID + * 标题 + * 产品兑付成功提醒 + * 行业 + * 金融业 - 证券|基金|理财|信托 + * 详细内容 + * {{first.DATA}} + * 产品名称:{{keyword1.DATA}} + * 当期兑付本金:{{keyword2.DATA}} + * 当期兑付利息:{{keyword3.DATA}} + * 已兑付期数:{{keyword4.DATA}} + * 兑付日期:{{keyword5.DATA}} + * {{remark.DATA}} + */ +// sendMag.put("first", new WeChatTemplateMsg("f123")); +// sendMag.put("keyword1", new WeChatTemplateMsg("111")); +// sendMag.put("keyword2", new WeChatTemplateMsg("222")); +// sendMag.put("keyword3", new WeChatTemplateMsg("333")); +// sendMag.put("keyword4", new WeChatTemplateMsg("444")); + sendMag.put("remark", "123465"); + + RestTemplate restTemplate = new RestTemplate(); + //拼接base参数 + Map sendBody = new HashMap<>(); + sendBody.put("touser", openId); // openId + //sendBody.put("url", "www.baidu.com"); // 点击模板信息跳转地址 + sendBody.put("topcolor", "#FF0000"); // 顶色 + sendBody.put("data", sendMag); // 模板参数 + sendBody.put("template_id", templateId); // 模板Id + ResponseEntity forEntity = restTemplate.postForEntity(url, sendBody, String.class); + //log.info("结果是: {}",forEntity.getBody()); + JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody()); + // 0 + String messageCode = jsonObject.getString("errcode"); + // 2431260672639467520 + String msgId = jsonObject.getString("msgid"); + System.out.println("messageCode : " + messageCode + ", msgId: " +msgId); + //return forEntity.getBody(); + } + public String getAccessToken(String appId,String appsecret) throws Exception { +// SysAppletSet appletSet = appletSetMapper.selectOne(new QueryWrapper<>()); +// if (null == appletSet) { +// throw new ApiMallPlusException("没有设置支付配置"); +// } + String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appsecret; + RestTemplate restTemplate=new RestTemplate(); + String re= restTemplate.getForObject(url,String.class); + com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re); + String at=jsonObject.getString("access_token"); + return at; + } } diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java index 12c9bd33..8da9ab77 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatService.java @@ -38,7 +38,7 @@ public class WechatService { if (flag) { try { - accessToken = wechatApiService.getAccessToken(); + //accessToken = wechatApiService.getAccessToken(); // String templateId = appletSet.getTemplateid1(); // Map param = new HashMap(); From ead9faab10004e396126a9d76294c38ccc49274f Mon Sep 17 00:00:00 2001 From: liupopo Date: Fri, 31 Mar 2023 18:33:18 +0800 Subject: [PATCH 05/23] upload --- docs/databases/table_modify.sql | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/databases/table_modify.sql diff --git a/docs/databases/table_modify.sql b/docs/databases/table_modify.sql new file mode 100644 index 00000000..d3bcde63 --- /dev/null +++ b/docs/databases/table_modify.sql @@ -0,0 +1,35 @@ +ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; +ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifySid modifyBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; + +ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifyBySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; +ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifyBySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; + + +select @@GLOBAL.sql_mode; +ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION +select @@sql_mode; +ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION + +set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; + +set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; + +set @@SESSION.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; + +set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; + +ALTER TABLE supervise_supplychain.purchase_requisition CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; +ALTER TABLE supervise_supplychain.purchase_requisition CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; +ALTER TABLE supervise_supplychain.purchase_requisition ADD remarks varchar(200) NULL COMMENT '备注说明'; + + +ALTER TABLE supervise_supplychain.product_information CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; +ALTER TABLE supervise_supplychain.product_information CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; + + +ALTER TABLE supervise_supplychain.restricted_brand CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; +ALTER TABLE supervise_supplychain.restricted_brand CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; + +ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD taxInclusiveAmount DOUBLE(12,2) DEFAULT NULL COMMENT '含税金额'; +ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD preqCode varchar(100) DEFAULT NULL COMMENT '订单编号'; + From 18e9d3c53ae398a81d7d48bb4928d6c5bf206bb3 Mon Sep 17 00:00:00 2001 From: lzh Date: Sat, 1 Apr 2023 01:19:43 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E7=83=9F=E8=8D=89=E5=88=86=E9=94=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- supervise-customer-ui/.env.production | 2 +- supervise-customer-ui/package.json | 2 +- .../src/views/kucun/xssjgl/index.vue | 9 ++++-- .../src/main/resources/application-test.yml | 2 +- .../portal/biz/gdsales/GdSalesService.java | 29 +++++++++++++++++++ .../portal/biz/gdsales/GdSalesYcMapper.java | 19 +++++++----- .../portal/biz/gdsales/GdSalesYcService.java | 5 ++++ .../src/main/resources/application-devv.yml | 8 ++--- .../src/main/resources/application-test.yml | 4 +-- .../src/main/resources/application.yml | 4 +-- 10 files changed, 63 insertions(+), 21 deletions(-) diff --git a/supervise-customer-ui/.env.production b/supervise-customer-ui/.env.production index c4d0fd79..811f3444 100644 --- a/supervise-customer-ui/.env.production +++ b/supervise-customer-ui/.env.production @@ -2,7 +2,7 @@ ENV = 'production' # base api -VUE_APP_BASE_API = '/api' +VUE_APP_BASE_API = '/api/service' ## 配置 正式接口地址 VUE_APP_URL = "http://120.46.131.15:8111" diff --git a/supervise-customer-ui/package.json b/supervise-customer-ui/package.json index 99af34b3..b7226334 100644 --- a/supervise-customer-ui/package.json +++ b/supervise-customer-ui/package.json @@ -17,7 +17,7 @@ "axios": "^0.24.0", "bpmn-js": "^9.2.2", "core-js": "^2.6.12", - "echarts": "^5.4.1", + "echarts": "^5.4.2", "ejs": "^2.7.4", "element-ui": "2.13.2", "js-cookie": "2.2.0", diff --git a/supervise-customer-ui/src/views/kucun/xssjgl/index.vue b/supervise-customer-ui/src/views/kucun/xssjgl/index.vue index 1b636101..29c2ce4e 100644 --- a/supervise-customer-ui/src/views/kucun/xssjgl/index.vue +++ b/supervise-customer-ui/src/views/kucun/xssjgl/index.vue @@ -81,7 +81,8 @@
    共导入数据:{{ currentLog.allNum }} 条;符合监管条件的数据:{{ currentLog.validNum }} 条;用时:{{ currentLog.durations }} 毫秒。
    -
    下载销售报表文件
    +
    下载销售报表文件 + 下载烟草分销数据文件
    关 闭 @@ -250,7 +251,11 @@ export default { }, doDownloadHz() { window.open(this.currentLog.fileUrl, '_blank') - this.dialogClose() + // this.dialogClose() + }, + doDownloadHzYc() { + window.open(this.currentLog.remarks, '_blank') + // this.dialogClose() }, downExcel(row) { if (row.fileUrl) { diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application-test.yml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application-test.yml index e1b5ab04..513ad506 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application-test.yml +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/resources/application-test.yml @@ -1,7 +1,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/supervise_customer?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowMultiQueries=true&rewriteBatchedStatements=true + url: jdbc:mysql://127.0.0.1:3306/supervise_supplychain?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowMultiQueries=true&rewriteBatchedStatements=true username: root password: 1LAiGz$t1*Iw # cloud: diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java index a44336ed..7d6dc787 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java @@ -367,6 +367,34 @@ public class GdSalesService extends ServiceImpl { String url = urlPrefix + "kchzb/" + newFileName; gdLog.setFileUrl(url); gdLog.setOutFilePath(uploadPath + "kchzb/" + newFileName); + + String newFileNameyc = "kchzb/烟草分销数据" + orderDate + "-" + System.currentTimeMillis() + ".xlsx"; + ExcelWriter writerYcfx = ExcelUtil.getWriter(uploadPath + newFileNameyc); + List gdSalesYcs = gdSalesYcService.listFxOfDay(orderDate); + writerYcfx.addHeaderAlias("orderType", "订单类型"); + writerYcfx.addHeaderAlias("orderNo", "销售订单号"); + writerYcfx.addHeaderAlias("prodCode", "商品编码"); + writerYcfx.addHeaderAlias("prodBarCode", "商品条码"); + writerYcfx.addHeaderAlias("prodName", "商品名称"); + writerYcfx.addHeaderAlias("brandCode", "品牌代码"); + writerYcfx.addHeaderAlias("brandName", "品牌名称"); + writerYcfx.addHeaderAlias("categoryb", "商品大类"); + writerYcfx.addHeaderAlias("categorym", "商品中类"); + writerYcfx.addHeaderAlias("categorys", "商品小类"); + writerYcfx.addHeaderAlias("customerCode", "客户代码"); + writerYcfx.addHeaderAlias("customerName", "客户名称"); + writerYcfx.addHeaderAlias("saleNum", "销售数量"); + writerYcfx.addHeaderAlias("storeCode", "销售渠道"); + writerYcfx.addHeaderAlias("salePrice", "销售价格"); + writerYcfx.addHeaderAlias("saleCost", "销售成本"); + writerYcfx.addHeaderAlias("profit", "利润"); + writerYcfx.addHeaderAlias("dataDate", "数据日期"); + writerYcfx.setOnlyAlias(true); + writerYcfx.write(gdSalesYcs, true); + writerYcfx.close(); + + String urlyc = urlPrefix + newFileNameyc; + gdLog.setRemarks(urlyc); gdSalesLogService.updateById(gdLog); return rb.success().setData(gdLog); @@ -449,6 +477,7 @@ public class GdSalesService extends ServiceImpl { public double amountOfLsnjmDay(String orderDate) { return baseMapper.amountOfLsnjmOnDay(orderDate); } + public double amountOfDay(String orderDate) { return baseMapper.amountOfDay(orderDate); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java index 92093496..2b0e6c46 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java @@ -52,32 +52,35 @@ public interface GdSalesYcMapper extends BaseMapper { @Delete("delete from gd_sales_yc where dataDate=#{dataDate} ") void clearByDataDate(@Param("dataDate") String dataDate); - @Select("select count(1) from (select storeCode from gd_sales_yc where dataDate=#{dataDate} group by storeCode) t") + @Select("select count(1) from (select storeCode from gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} group by storeCode) t") int countStoreOnDay(@Param("dataDate") String orderDate); @Select("select t2.storeCode,si.name,t2.amount from( " + " select storeCode,sum(t1.price) as amount from( " + - " select storeCode,saleNum*salePrice as price from gd_sales_yc where dataDate=#{dataDate} " + + " select storeCode,saleNum*salePrice as price from gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} " + " ) t1 group by t1.storeCode " + ") t2 left join store_index si on t2.storecode=si.code ") List> listOfStoreOnDay(@Param("dataDate") String orderDate); - @Select("select count(1) from (select prodCode from gd_sales_yc where dataDate=#{dataDate} group by prodCode) t") + @Select("select count(1) from (select prodCode from gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} group by prodCode) t") int countProductOnDay(@Param("dataDate") String orderDate); @Select("select si.name,t1.* from ( " + - " select storeCode,orderType,orderNo,prodCode,prodName,saleNum,salePrice,saleNum*salePrice as amount from gd_sales_yc where dataDate=#{dataDate} " + + " select storeCode,orderType,orderNo,prodCode,prodName,saleNum,salePrice,saleNum*salePrice as amount from gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} " + ") t1 left join store_index si on t1.storecode=si.code ") List> listOfProductOnDay(@Param("dataDate") String orderDate); - @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where dataDate=#{dataDate}") + @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate}") double amountOfDay(@Param("dataDate") String orderDate); - @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where dataDate=#{dataDate} " + + @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} " + " and storeCode in (select code from store_index si where si.`type`='连网连锁店') ") double amountOfLwlsdDay(@Param("dataDate") String orderDate); - @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where dataDate=#{dataDate} " + + @Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where customerName<>'客户' and customerName<>'客户1' and dataDate=#{dataDate} " + " and storeCode in (select code from store_index si where si.`type`='连锁内加盟') ") - double amountOfLsnjmDay(String orderDate); + double amountOfLsnjmDay(@Param("dataDate") String orderDate); + + @Select("SELECT * FROM gd_sales_yc where orderType='批发' and (customerName='客户' or customerName='客户1') and dataDate=#{dataDate} " ) + List listFxOfDay(@Param("dataDate") String orderDate); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java index 257ed5b9..121e1bbc 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.supervise.portal.biz.gdsales; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -78,4 +79,8 @@ public class GdSalesYcService extends ServiceImpl { public double amountOfLsnjmDay(String orderDate) { return baseMapper.amountOfLsnjmDay(orderDate); } + + public List listFxOfDay(String orderDate) { + return baseMapper.listFxOfDay(orderDate); + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-devv.yml b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-devv.yml index fa82aa6e..93daad3b 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-devv.yml +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-devv.yml @@ -22,11 +22,11 @@ spring: timeout: 0 # 连接超时时间(毫秒) image: - xlsxtmpl: D:/works/projects/yxt/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/xlsx-tmpl/ -# xlsxtmpl: D:/works/projects/javaee/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/xlsx-tmpl/ +# xlsxtmpl: D:/works/projects/yxt/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/xlsx-tmpl/ + xlsxtmpl: D:/works/projects/javaee/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/xlsx-tmpl/ upload: - path: D:/works/projects/yxt/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/static/upload/ -# path: D:/works/projects/javaee/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/static/upload/ +# path: D:/works/projects/yxt/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/static/upload/ + path: D:/works/projects/javaee/yxtgit/supervise/yxt_supervise/supervise-portal/supervise-portal-biz/target/classes/static/upload/ url: prefix: http://127.0.0.1:7003/upload/ login: diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-test.yml b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-test.yml index 3fbea283..d06562ad 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-test.yml +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application-test.yml @@ -3,8 +3,8 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/supervise_supplychain?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowMultiQueries=true&rewriteBatchedStatements=true username: root - #password: 1LAiGz$t1*Iw - password: root` + password: 1LAiGz$t1*Iw +# password: root` # cloud: # nacos: # discovery: diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application.yml b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application.yml index 71a46344..3a7fbf40 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application.yml +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/application.yml @@ -2,8 +2,8 @@ spring: application: name: supervise-portal profiles: - active: devv -# active: test +# active: devv + active: test messages: # 国际化资源文件路径 basename: i18n/messages From 001270dc31dc5a080c31410617c5b7c69d82c33e Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Mon, 3 Apr 2023 18:10:08 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E7=83=9F=E8=8D=89=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E7=83=9F=E8=8D=89=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=85=AC=E4=BC=97=E5=8F=B7=E6=8E=A8=E9=80=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseRequisitionStore.java | 48 +++++++++ .../PurchaseRequisitionStoreDetailsVo.java | 45 +++++++++ .../PurchaseRequisitionStoreDto.java | 45 +++++++++ .../PurchaseRequisitionStoreExcelVo.java | 34 +++++++ .../PurchaseRequisitionStoreFeign.java | 17 ++++ ...PurchaseRequisitionStoreFeignFallback.java | 11 +++ .../PurchaseRequisitionStoreQuery.java | 49 ++++++++++ .../PurchaseRequisitionStoreVo.java | 45 +++++++++ .../PurchaseRequisitionTobacco.java | 70 +++++++++++++ .../PurchaseRequisitionTobaccoDetailsVo.java | 72 ++++++++++++++ .../PurchaseRequisitionTobaccoDto.java | 71 ++++++++++++++ .../PurchaseRequisitionTobaccoExcelVo.java | 35 +++++++ .../PurchaseRequisitionTobaccoFeign.java | 17 ++++ ...rchaseRequisitionTobaccoFeignFallback.java | 11 +++ .../PurchaseRequisitionTobaccoQuery.java | 72 ++++++++++++++ .../PurchaseRequisitionTobaccoVo.java | 73 ++++++++++++++ .../customer/api/wechat/Miniprogram.java | 14 +++ .../customer/api/wechat/Template.java | 22 +++++ .../customer/api/wechat/TemplateData.java | 26 +++++ .../api/wechat/WeChatTemplateMsg.java | 57 +++++++++++ .../PurchaseRequisitionStoreMapper.java | 25 +++++ .../PurchaseRequisitionStoreMapper.xml | 36 +++++++ .../PurchaseRequisitionStoreRest.java | 56 +++++++++++ .../PurchaseRequisitionStoreService.java | 67 +++++++++++++ .../PurchaseRequisitionTobaccoMapper.java | 25 +++++ .../PurchaseRequisitionTobaccoMapper.xml | 38 +++++++ .../PurchaseRequisitionTobaccoRest.java | 60 ++++++++++++ .../PurchaseRequisitionTobaccoService.java | 67 +++++++++++++ .../customer/biz/wechat/WechatRest.java | 98 ++++++++++++++----- .../api/supplier/SupplierFeignFallback.java | 17 ++++ .../supervise-rms/supervise-rms-biz/pom.xml | 6 ++ 31 files changed, 1304 insertions(+), 25 deletions(-) create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStore.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDetailsVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDto.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreExcelVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeign.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeignFallback.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreQuery.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobacco.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDetailsVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDto.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoExcelVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeign.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeignFallback.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoQuery.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Miniprogram.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Template.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/TemplateData.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/WeChatTemplateMsg.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.xml create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.xml create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java create mode 100644 yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStore.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStore.java new file mode 100644 index 00000000..1606e005 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStore.java @@ -0,0 +1,48 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:45 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草)", description = "采购订单商品信息(烟草)") +@TableName("purchase_requisition_store") +public class PurchaseRequisitionStore extends BaseEntity { + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("记录修改时间") + private Date modifyTime; + @ApiModelProperty("关联表sid") + private String mainSid; // 关联表sid + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ApiModelProperty("金额") + private String price; // 金额 + @ApiModelProperty("批次") + private String pc; // 批次 + @ApiModelProperty("明细总金额") + private String detailPrice; // 明细总金额 + @ApiModelProperty("创建者") + private String createBySid; + @ApiModelProperty("更新者") + private String updateBySid; + @ApiModelProperty("备注") + private String remarks; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDetailsVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDetailsVo.java new file mode 100644 index 00000000..4adba787 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDetailsVo.java @@ -0,0 +1,45 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:45 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草) 视图数据详情", description = "采购订单商品信息(烟草)视图数据详情") +public class PurchaseRequisitionStoreDetailsVo implements Vo { + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("记录修改时间") + private Date modifyTime; + @ApiModelProperty("关联表sid") + private String mainSid; // 关联表sid + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ApiModelProperty("金额") + private String price; // 金额 + @ApiModelProperty("批次") + private String pc; // 批次 + @ApiModelProperty("明细总金额") + private String detailPrice; // 明细总金额 + @ApiModelProperty("创建者") + private String createBySid; + @ApiModelProperty("更新者") + private String updateBySid; + @ApiModelProperty("备注") + private String remarks; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDto.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDto.java new file mode 100644 index 00000000..2707cd84 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreDto.java @@ -0,0 +1,45 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草) 数据传输对象", description = "采购订单商品信息(烟草) 数据传输对象") +public class PurchaseRequisitionStoreDto implements Dto { + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("记录修改时间") + private Date modifyTime; + @ApiModelProperty("关联表sid") + private String mainSid; // 关联表sid + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ApiModelProperty("金额") + private String price; // 金额 + @ApiModelProperty("批次") + private String pc; // 批次 + @ApiModelProperty("明细总金额") + private String detailPrice; // 明细总金额 + @ApiModelProperty("创建者") + private String createBySid; + @ApiModelProperty("更新者") + private String updateBySid; + @ApiModelProperty("备注") + private String remarks; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreExcelVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreExcelVo.java new file mode 100644 index 00000000..b218c809 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreExcelVo.java @@ -0,0 +1,34 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草) Excel视图数据对象", description = "采购订单商品信息(烟草) Excel视图数据对象") +public class PurchaseRequisitionStoreExcelVo implements Vo { + @ExcelProperty(value = "创建时间") + @ApiModelProperty("创建时间") + private Date createTime; + @ExcelProperty(value = "烟草证编码") + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ExcelProperty(value = "门店代码") + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ExcelProperty(value = "门店名称") + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ExcelProperty(value = "金额") + @ApiModelProperty("金额") + private String price; // 金额 + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeign.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeign.java new file mode 100644 index 00000000..8377f69d --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeign.java @@ -0,0 +1,17 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Api(tags = "采购订单商品信息") +@FeignClient( + contextId = "yxt-supervise-PurchaseRequisitionStore", + name = "yxt-supervise", + path = "v1/purchaserequisitionstore", + fallback = PurchaseRequisitionStoreFeignFallback.class) +public interface PurchaseRequisitionStoreFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeignFallback.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeignFallback.java new file mode 100644 index 00000000..2aff5749 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreFeignFallback.java @@ -0,0 +1,11 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Component +public class PurchaseRequisitionStoreFeignFallback implements PurchaseRequisitionStoreFeign{ +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreQuery.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreQuery.java new file mode 100644 index 00000000..adcec7ee --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreQuery.java @@ -0,0 +1,49 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草) 查询条件", description = "采购订单商品信息(烟草) 查询条件") +public class PurchaseRequisitionStoreQuery implements Query { + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("记录修改时间") + private Date modifyTime; + @ApiModelProperty("关联表sid") + private String mainSid; // 关联表sid + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ApiModelProperty("金额") + private String price; // 金额 + @ApiModelProperty("批次") + private String pc; // 批次 + @ApiModelProperty("明细总金额") + private String detailPrice; // 明细总金额 + @ApiModelProperty("创建者") + private String createBySid; + @ApiModelProperty("更新者") + private String updateBySid; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("开始时间") + private String startDate; + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java new file mode 100644 index 00000000..d4c67bd6 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitionstore/PurchaseRequisitionStoreVo.java @@ -0,0 +1,45 @@ +package com.yxt.supervise.customer.api.purchaserequisitionstore; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2023/4/3 16:46 + */ +@Data +@ApiModel(value = "采购订单商品信息(烟草) 视图数据对象", description = "采购订单商品信息(烟草) 视图数据对象") +public class PurchaseRequisitionStoreVo implements Vo { + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("记录修改时间") + private Date modifyTime; + @ApiModelProperty("关联表sid") + private String mainSid; // 关联表sid + @ApiModelProperty("烟草证编码") + private String yCode; // 烟草证编码 + @ApiModelProperty("门店代码") + private String storeCode; // 门店代码 + @ApiModelProperty("门店名称") + private String storeName; // 门店名称 + @ApiModelProperty("金额") + private String price; // 金额 + @ApiModelProperty("批次") + private String pc; // 批次 + @ApiModelProperty("明细总金额") + private String detailPrice; // 明细总金额 + @ApiModelProperty("创建者") + private String createBySid; + @ApiModelProperty("更新者") + private String updateBySid; + @ApiModelProperty("备注") + private String remarks; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobacco.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobacco.java new file mode 100644 index 00000000..027146e0 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobacco.java @@ -0,0 +1,70 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:06 + */ +@Data +@ApiModel(value = "采购订单表(烟草)", description = "采购订单表") +@TableName("purchase_requisition_tobacco") +public class PurchaseRequisitionTobacco extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("单号") + private String code; // 单号 + @ApiModelProperty("采购员姓名") + private String buyerName; // 采购员姓名 + @ApiModelProperty("采购员编码") + private String buyerCode; // 采购员编码 + @ApiModelProperty("采购日期(填单日期)") + private String purchaseDate; // 采购日期(填单日期) + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ApiModelProperty("采购组织名称(默认36524集团)") + private String purchasingOrgName; // 采购组织名称(默认36524集团) + @ApiModelProperty("采购组织编码(36524)") + private String purchasingOrgCode; // 采购组织编码(36524) + @ApiModelProperty("采购部门名称(默认生活通)") + private String purchasingDeptCode; // 采购部门名称(默认生活通) + @ApiModelProperty("采购部门编码(默认生活通编码)") + private String purchasingDeptName; // 采购部门编码(默认生活通编码) + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + @ApiModelProperty("供应商唯一编码") + private String supplierOnlyCode; // 供应商唯一编码 + @ApiModelProperty("物流公司名称(和供应商相同)") + private String logisticsCompanyName; // 物流公司名称(和供应商相同) + @ApiModelProperty("物流公司编码") + private String logisticsCompanyCode; // 物流公司编码 + @ApiModelProperty("单据到效期") + private String expiryDate; // 单据到效期 + @ApiModelProperty("仓位") + private String warehousePosition; // 仓位 + @ApiModelProperty("仓位code") + private String warehousePositionCode; // 仓位code + @ApiModelProperty("监管0未审核,1审核通过,2审核不通过") + private String purchaseState; // 监管0未审核,1审核通过,2审核不通过 + @ApiModelProperty("监管审批意见") + private String purchaseRemarks; // 监管审批意见 + @ApiModelProperty("银行0未审核,1审核通过,2审核不通过") + private String bankState; // 银行0未审核,1审核通过,2审核不通过 + @ApiModelProperty("银行审批意见") + private String bankRemarks; // 银行审批意见 + @ApiModelProperty("完成状态") + private String completionStatus; // 完成状态 + @ApiModelProperty("完成状态Key") + private String completionStatusKey; // 完成状态Key + @ApiModelProperty("填单人code") + private String tdrCode; + @ApiModelProperty("填单人姓名") + private String tdrName; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDetailsVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDetailsVo.java new file mode 100644 index 00000000..f05396af --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDetailsVo.java @@ -0,0 +1,72 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:07 + */ +@Data +@ApiModel(value = "采购订单表(烟草) 视图数据详情", description = "采购订单表 视图数据详情") +public class PurchaseRequisitionTobaccoDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("单号") + private String code; // 单号 + @ApiModelProperty("采购员姓名") + private String buyerName; // 采购员姓名 + @ApiModelProperty("采购员编码") + private String buyerCode; // 采购员编码 + @ApiModelProperty("采购日期(填单日期)") + private String purchaseDate; // 采购日期(填单日期) + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ApiModelProperty("采购组织名称(默认36524集团)") + private String purchasingOrgName; // 采购组织名称(默认36524集团) + @ApiModelProperty("采购组织编码(36524)") + private String purchasingOrgCode; // 采购组织编码(36524) + @ApiModelProperty("采购部门名称(默认生活通)") + private String purchasingDeptCode; // 采购部门名称(默认生活通) + @ApiModelProperty("采购部门编码(默认生活通编码)") + private String purchasingDeptName; // 采购部门编码(默认生活通编码) + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + @ApiModelProperty("供应商唯一编码") + private String supplierOnlyCode; // 供应商唯一编码 + @ApiModelProperty("物流公司名称(和供应商相同)") + private String logisticsCompanyName; // 物流公司名称(和供应商相同) + @ApiModelProperty("物流公司编码") + private String logisticsCompanyCode; // 物流公司编码 + @ApiModelProperty("单据到效期") + private String expiryDate; // 单据到效期 + @ApiModelProperty("仓位") + private String warehousePosition; // 仓位 + @ApiModelProperty("仓位code") + private String warehousePositionCode; // 仓位code + @ApiModelProperty("监管0未审核,1审核通过,2审核不通过") + private String purchaseState; // 监管0未审核,1审核通过,2审核不通过 + @ApiModelProperty("监管审批意见") + private String purchaseRemarks; // 监管审批意见 + @ApiModelProperty("银行0未审核,1审核通过,2审核不通过") + private String bankState; // 银行0未审核,1审核通过,2审核不通过 + @ApiModelProperty("银行审批意见") + private String bankRemarks; // 银行审批意见 + @ApiModelProperty("完成状态") + private String completionStatus; // 完成状态 + @ApiModelProperty("完成状态Key") + private String completionStatusKey; // 完成状态Key + @ApiModelProperty("填单人code") + private String tdrCode; + @ApiModelProperty("填单人姓名") + private String tdrName; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDto.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDto.java new file mode 100644 index 00000000..428466e2 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoDto.java @@ -0,0 +1,71 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:07 + */ +@Data +@ApiModel(value = "采购订单表(烟草) 数据传输对象", description = "采购订单表 数据传输对象") +public class PurchaseRequisitionTobaccoDto implements Dto { + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("单号") + private String code; // 单号 + @ApiModelProperty("采购员姓名") + private String buyerName; // 采购员姓名 + @ApiModelProperty("采购员编码") + private String buyerCode; // 采购员编码 + @ApiModelProperty("采购日期(填单日期)") + private String purchaseDate; // 采购日期(填单日期) + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ApiModelProperty("采购组织名称(默认36524集团)") + private String purchasingOrgName; // 采购组织名称(默认36524集团) + @ApiModelProperty("采购组织编码(36524)") + private String purchasingOrgCode; // 采购组织编码(36524) + @ApiModelProperty("采购部门名称(默认生活通)") + private String purchasingDeptCode; // 采购部门名称(默认生活通) + @ApiModelProperty("采购部门编码(默认生活通编码)") + private String purchasingDeptName; // 采购部门编码(默认生活通编码) + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + @ApiModelProperty("供应商唯一编码") + private String supplierOnlyCode; // 供应商唯一编码 + @ApiModelProperty("物流公司名称(和供应商相同)") + private String logisticsCompanyName; // 物流公司名称(和供应商相同) + @ApiModelProperty("物流公司编码") + private String logisticsCompanyCode; // 物流公司编码 + @ApiModelProperty("单据到效期") + private String expiryDate; // 单据到效期 + @ApiModelProperty("仓位") + private String warehousePosition; // 仓位 + @ApiModelProperty("仓位code") + private String warehousePositionCode; // 仓位code + @ApiModelProperty("监管0未审核,1审核通过,2审核不通过") + private String purchaseState; // 监管0未审核,1审核通过,2审核不通过 + @ApiModelProperty("监管审批意见") + private String purchaseRemarks; // 监管审批意见 + @ApiModelProperty("银行0未审核,1审核通过,2审核不通过") + private String bankState; // 银行0未审核,1审核通过,2审核不通过 + @ApiModelProperty("银行审批意见") + private String bankRemarks; // 银行审批意见 + @ApiModelProperty("完成状态") + private String completionStatus; // 完成状态 + @ApiModelProperty("完成状态Key") + private String completionStatusKey; // 完成状态Key + @ApiModelProperty("填单人code") + private String tdrCode; + @ApiModelProperty("填单人姓名") + private String tdrName; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoExcelVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoExcelVo.java new file mode 100644 index 00000000..6650fe92 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoExcelVo.java @@ -0,0 +1,35 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:13 + */ +@Data +@ApiModel(value = "采购订单表(烟草) Excel视图数据对象", description = "采购订单表(烟草) Excel视图数据对象") +public class PurchaseRequisitionTobaccoExcelVo implements Vo { + @ExcelProperty(value = "订单号") + @ApiModelProperty("订单号") + private String code; // 订单号 + @ExcelProperty(value = "采购日期") + @ApiModelProperty("采购日期") + private String purchaseDate; // 采购日期 + @ExcelProperty(value = "采购日期") + @ApiModelProperty("建单日期") + private String createTime; // 采购日期 + @ExcelProperty(value = "到货日期") + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ExcelProperty(value = "供应商名称") + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ExcelProperty(value = "供应商编码") + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeign.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeign.java new file mode 100644 index 00000000..49f86a0b --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeign.java @@ -0,0 +1,17 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @author wangpengfei + * @date 2023/4/3 16:07 + */ +@Api(tags = "采购订单表(烟草)") +@FeignClient( + contextId = "yxt-supervise-PurchaseRequisitionTobacco", + name = "yxt-supervise", + path = "v1/purchaserequisitiontobacco", + fallback = PurchaseRequisitionTobaccoFeignFallback.class) +public interface PurchaseRequisitionTobaccoFeign { +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeignFallback.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeignFallback.java new file mode 100644 index 00000000..e4c369bd --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoFeignFallback.java @@ -0,0 +1,11 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2023/4/3 16:07 + */ +@Component +public class PurchaseRequisitionTobaccoFeignFallback implements PurchaseRequisitionTobaccoFeign{ +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoQuery.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoQuery.java new file mode 100644 index 00000000..a456a27e --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoQuery.java @@ -0,0 +1,72 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:08 + */ +@Data +@ApiModel(value = "采购订单表(烟草) 查询条件", description = "采购订单表 查询条件") +public class PurchaseRequisitionTobaccoQuery implements Query { + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("单号") + private String code; // 单号 + @ApiModelProperty("采购员姓名") + private String buyerName; // 采购员姓名 + @ApiModelProperty("采购员编码") + private String buyerCode; // 采购员编码 + @ApiModelProperty("采购日期(填单日期)") + private String purchaseDate; // 采购日期(填单日期) + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ApiModelProperty("采购组织名称(默认36524集团)") + private String purchasingOrgName; // 采购组织名称(默认36524集团) + @ApiModelProperty("采购组织编码(36524)") + private String purchasingOrgCode; // 采购组织编码(36524) + @ApiModelProperty("采购部门名称(默认生活通)") + private String purchasingDeptCode; // 采购部门名称(默认生活通) + @ApiModelProperty("采购部门编码(默认生活通编码)") + private String purchasingDeptName; // 采购部门编码(默认生活通编码) + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + @ApiModelProperty("供应商唯一编码") + private String supplierOnlyCode; // 供应商唯一编码 + @ApiModelProperty("物流公司名称(和供应商相同)") + private String logisticsCompanyName; // 物流公司名称(和供应商相同) + @ApiModelProperty("物流公司编码") + private String logisticsCompanyCode; // 物流公司编码 + @ApiModelProperty("单据到效期") + private String expiryDate; // 单据到效期 + @ApiModelProperty("仓位") + private String warehousePosition; // 仓位 + @ApiModelProperty("仓位code") + private String warehousePositionCode; // 仓位code + @ApiModelProperty("监管0未审核,1审核通过,2审核不通过") + private String purchaseState; // 监管0未审核,1审核通过,2审核不通过 + @ApiModelProperty("监管审批意见") + private String purchaseRemarks; // 监管审批意见 + @ApiModelProperty("银行0未审核,1审核通过,2审核不通过") + private String bankState; // 银行0未审核,1审核通过,2审核不通过 + @ApiModelProperty("银行审批意见") + private String bankRemarks; // 银行审批意见 + @ApiModelProperty("完成状态") + private String completionStatus; // 完成状态 + @ApiModelProperty("完成状态Key") + private String completionStatusKey; // 完成状态Key + @ApiModelProperty("填单人code") + private String tdrCode; + @ApiModelProperty("填单人姓名") + private String tdrName; + private String startDate; + private String endDate; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java new file mode 100644 index 00000000..7e92211d --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/purchaserequisitiontobacco/PurchaseRequisitionTobaccoVo.java @@ -0,0 +1,73 @@ +package com.yxt.supervise.customer.api.purchaserequisitiontobacco; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 16:08 + */ +@Data +@ApiModel(value = "采购订单表(烟草) 视图数据对象", description = "采购订单表 视图数据对象") +public class PurchaseRequisitionTobaccoVo implements Vo { + private String sid; // sid + + @ApiModelProperty("创建者") + private String createSid; // 创建者 + @ApiModelProperty("更新者") + private String modifySid; // 更新者 + @ApiModelProperty("单号") + private String code; // 单号 + @ApiModelProperty("采购员姓名") + private String buyerName; // 采购员姓名 + @ApiModelProperty("采购员编码") + private String buyerCode; // 采购员编码 + @ApiModelProperty("采购日期(填单日期)") + private String purchaseDate; // 采购日期(填单日期) + @ApiModelProperty("创建日期") + private String createTime; + @ApiModelProperty("到货日期") + private String arrivalDate; // 到货日期 + @ApiModelProperty("采购组织名称(默认36524集团)") + private String purchasingOrgName; // 采购组织名称(默认36524集团) + @ApiModelProperty("采购组织编码(36524)") + private String purchasingOrgCode; // 采购组织编码(36524) + @ApiModelProperty("采购部门名称(默认生活通)") + private String purchasingDeptCode; // 采购部门名称(默认生活通) + @ApiModelProperty("采购部门编码(默认生活通编码)") + private String purchasingDeptName; // 采购部门编码(默认生活通编码) + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("供应商编码") + private String supplierCode; // 供应商编码 + @ApiModelProperty("供应商唯一编码") + private String supplierOnlyCode; // 供应商唯一编码 + @ApiModelProperty("物流公司名称(和供应商相同)") + private String logisticsCompanyName; // 物流公司名称(和供应商相同) + @ApiModelProperty("物流公司编码") + private String logisticsCompanyCode; // 物流公司编码 + @ApiModelProperty("单据到效期") + private String expiryDate; // 单据到效期 + @ApiModelProperty("仓位") + private String warehousePosition; // 仓位 + @ApiModelProperty("仓位code") + private String warehousePositionCode; // 仓位code + @ApiModelProperty("监管0未审核,1审核通过,2审核不通过") + private String purchaseState; // 监管0未审核,1审核通过,2审核不通过 + @ApiModelProperty("监管审批意见") + private String purchaseRemarks; // 监管审批意见 + @ApiModelProperty("银行0未审核,1审核通过,2审核不通过") + private String bankState; // 银行0未审核,1审核通过,2审核不通过 + @ApiModelProperty("银行审批意见") + private String bankRemarks; // 银行审批意见 + @ApiModelProperty("完成状态") + private String completionStatus; // 完成状态 + @ApiModelProperty("完成状态Key") + private String completionStatusKey; // 完成状态Key + @ApiModelProperty("填单人code") + private String tdrCode; + @ApiModelProperty("填单人姓名") + private String tdrName; +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Miniprogram.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Miniprogram.java new file mode 100644 index 00000000..4847d535 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Miniprogram.java @@ -0,0 +1,14 @@ +package com.yxt.supervise.customer.api.wechat; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 13:55 + */ +@Data +public class Miniprogram { + private String appid; + private String pagepath; + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Template.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Template.java new file mode 100644 index 00000000..8adf43b5 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/Template.java @@ -0,0 +1,22 @@ +package com.yxt.supervise.customer.api.wechat; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 14:33 + */ +@Data +public class Template { + private String value; + private String color; + public Template(String value) { + this.value = value; + this.color = "#173177"; + } + + public Template(String value, String color) { + this.value = value; + this.color = color; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/TemplateData.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/TemplateData.java new file mode 100644 index 00000000..ed03877c --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/TemplateData.java @@ -0,0 +1,26 @@ +package com.yxt.supervise.customer.api.wechat; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2023/4/3 13:46 + */ +@Data +public class TemplateData { + private String value; + private String color; + + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getColor() { + return color; + } + public void setColor(String color) { + this.color = color; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/WeChatTemplateMsg.java b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/WeChatTemplateMsg.java new file mode 100644 index 00000000..2795c92a --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-api/src/main/java/com/yxt/supervise/customer/api/wechat/WeChatTemplateMsg.java @@ -0,0 +1,57 @@ +package com.yxt.supervise.customer.api.wechat; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author wangpengfei + * @date 2023/4/3 13:08 + */ +@Data +public class WeChatTemplateMsg { + private String template_id; + private String touser; + private String url; + + private String client_msg_id; + + Map miniprogram = new HashMap<>(); + + //private Miniprogram miniprogram; + private String topcolor; + private Map data; + + public String getTemplate_id() { + return template_id; + } + public void setTemplate_id(String template_id) { + this.template_id = template_id; + } + public String getTouser() { + return touser; + } + public void setTouser(String touser) { + this.touser = touser; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getTopcolor() { + return topcolor; + } + public void setTopcolor(String topcolor) { + this.topcolor = topcolor; + } + public Map getData() { + return data; + } + public void setData(Map data) { + this.data = data; + } + +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java new file mode 100644 index 00000000..ab594a20 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.java @@ -0,0 +1,25 @@ +package com.yxt.supervise.customer.biz.purchaserequisitionstore; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStore; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStore; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStoreExcelVo; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStoreVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 17:00 + */ +@Mapper +public interface PurchaseRequisitionStoreMapper extends BaseMapper { + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + //查询导出的数据 + List exportExcel(@Param(Constants.WRAPPER) Wrapper qw); +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.xml new file mode 100644 index 00000000..cac0a4fa --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreRest.java new file mode 100644 index 00000000..3c2ab6ee --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreRest.java @@ -0,0 +1,56 @@ +package com.yxt.supervise.customer.biz.purchaserequisitionstore; + + + +import com.alibaba.excel.EasyExcel; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.purchaserequisitionstore.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 17:00 + */ +@Api(tags = "采购订单商品信息") +@RestController +@RequestMapping("v1/purchaserequisitionstore") +public class PurchaseRequisitionStoreRest implements PurchaseRequisitionStoreFeign { + + @Autowired + private PurchaseRequisitionStoreService purchaseRequisitionStoreService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = purchaseRequisitionStoreService.listPageVo(pq); + return rb.success().setData(pv); + } + @PostMapping("/exportExcel") + @ApiOperation(value = "采购订单商品(烟草)导出") + public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { + //得到所有要导出的数据 + List excelVos = purchaseRequisitionStoreService.exportExcel(pq); + String fileName = "采购订单商品(烟草)" + System.currentTimeMillis() + ".xlsx"; + response.setContentType( "application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-disposition","attachment;filename="+ fileName ); + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + ServletOutputStream outputStream = response.getOutputStream(); + EasyExcel.write(outputStream, PurchaseRequisitionStoreExcelVo.class).sheet("采购订单商品(烟草)").doWrite(excelVos); + outputStream.flush(); + outputStream.close(); + } +} + diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java new file mode 100644 index 00000000..9d812400 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitionstore/PurchaseRequisitionStoreService.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.biz.purchaserequisitionstore; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStore; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStore; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStoreExcelVo; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStoreQuery; +import com.yxt.supervise.customer.api.purchaserequisitionstore.PurchaseRequisitionStoreVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 17:01 + */ +@Service +public class PurchaseRequisitionStoreService extends MybatisBaseService { + public PagerVo listPageVo(PagerQuery pq) { + PurchaseRequisitionStoreQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + if (StringUtils.isNotBlank(query.getStoreCode())) { + qw.like("storeCode", query.getStoreCode()); + } + if (StringUtils.isNotBlank(query.getStoreName())) { + qw.like("storeName", query.getStoreName()); + } + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getEndDate()); + } + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List exportExcel(PagerQuery pq) { + PurchaseRequisitionStoreQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + if (StringUtils.isNotBlank(query.getStoreCode())) { + qw.like("storeCode", query.getStoreCode()); + } + if (StringUtils.isNotBlank(query.getStoreName())) { + qw.like("storeName", query.getStoreName()); + } + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getEndDate()); + } + } + List pagging = baseMapper.exportExcel(qw); + return pagging; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java new file mode 100644 index 00000000..ba1d9361 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.java @@ -0,0 +1,25 @@ +package com.yxt.supervise.customer.biz.purchaserequisitiontobacco; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoExcelVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 16:01 + */ +@Mapper +public interface PurchaseRequisitionTobaccoMapper extends BaseMapper { + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + //查询导出的数据 + List exportExcel(@Param(Constants.WRAPPER) Wrapper qw); +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.xml b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.xml new file mode 100644 index 00000000..01280ba1 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java new file mode 100644 index 00000000..4b557418 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoRest.java @@ -0,0 +1,60 @@ +package com.yxt.supervise.customer.biz.purchaserequisitiontobacco; + +import com.alibaba.excel.EasyExcel; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoExcelVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoQuery; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoFeign; +import com.yxt.supervise.customer.biz.purchaserequisitiontobacco.PurchaseRequisitionTobaccoService; +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.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 javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 16:03 + */ +@Api(tags = "采购订单表(烟草)") +@RestController +@RequestMapping("v1/purchaserequisitiontobacco") +@Slf4j +public class PurchaseRequisitionTobaccoRest implements PurchaseRequisitionTobaccoFeign { + @Autowired + PurchaseRequisitionTobaccoService purchaseRequisitionTobaccoService; + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = purchaseRequisitionTobaccoService.listPageVo(pq); + return rb.success().setData(pv); + } + @PostMapping("/exportExcel") + @ApiOperation(value = "采购订单(烟草)导出") + public void exportExcel(@RequestBody PagerQuery pq, HttpServletResponse response) throws IOException { + //得到所有要导出的数据 + List excelVos = purchaseRequisitionTobaccoService.exportExcel(pq); + String fileName = "采购订单(烟草)" + System.currentTimeMillis() + ".xlsx"; + response.setContentType( "application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-disposition","attachment;filename="+ fileName ); + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + ServletOutputStream outputStream = response.getOutputStream(); + EasyExcel.write(outputStream, PurchaseRequisitionTobaccoExcelVo.class).sheet("采购订单(烟草)").doWrite(excelVos); + outputStream.flush(); + outputStream.close(); + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java new file mode 100644 index 00000000..cad3f676 --- /dev/null +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/purchaserequisitiontobacco/PurchaseRequisitionTobaccoService.java @@ -0,0 +1,67 @@ +package com.yxt.supervise.customer.biz.purchaserequisitiontobacco; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoExcelVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoQuery; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobaccoVo; +import com.yxt.supervise.customer.api.purchaserequisitiontobacco.PurchaseRequisitionTobacco; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2023/4/3 16:03 + */ +@Service +public class PurchaseRequisitionTobaccoService extends MybatisBaseService { + public PagerVo listPageVo(PagerQuery pq) { + PurchaseRequisitionTobaccoQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + if (StringUtils.isNotBlank(query.getCode())) { + qw.like("code", query.getCode()); + } + if (StringUtils.isNotBlank(query.getSupplierName())) { + qw.like("supplierName", query.getSupplierName()); + } + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getEndDate()); + } + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public List exportExcel(PagerQuery pq) { + PurchaseRequisitionTobaccoQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + if (StringUtils.isNotBlank(query.getCode())) { + qw.like("code", query.getCode()); + } + if (StringUtils.isNotBlank(query.getSupplierName())) { + qw.like("supplierName", query.getSupplierName()); + } + if (StringUtils.isNotBlank(query.getStartDate())) { + qw.ge("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getStartDate()); + } + if (StringUtils.isNotBlank(query.getEndDate())) { + qw.le("STR_TO_DATE(createTime,'%Y-%m-%d')", query.getEndDate()); + } + } + List pagging = baseMapper.exportExcel(qw); + return pagging; + } +} diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java index 825572c0..d6ed589b 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java @@ -1,6 +1,8 @@ package com.yxt.supervise.customer.biz.wechat; import com.alibaba.fastjson.JSONObject; +import com.yxt.supervise.customer.api.wechat.TemplateData; +import com.yxt.supervise.customer.api.wechat.WeChatTemplateMsg; import com.yxt.supervise.customer.biz.util.WeixinCheckoutUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -22,6 +24,10 @@ import java.util.Map; @RestController @RequestMapping("v1/wechat") public class WechatRest { + private static final String WX_URL_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; + private static final String WX_URL_MESSAGE_SEND = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; + private static final String APP_ID="wx1d44e0fcd110351a"; + private static final String APPSECRET="4764e32722a7d98656dea6afd9405701"; @Autowired WechatService wechatService; @Autowired @@ -51,26 +57,23 @@ public class WechatRest { } return "非法请求"; } - @GetMapping("/sendMessage") - @Test - public void sendMessage() throws Exception { - //String openId="otnrM57kui-WCUmRtChhb1HguOgw"; - //String openId ="otnrM5ySvUo7ZZc4qafWzM9eyKBk"; + @PostMapping("/sendMessage") + public void sendMessage(@RequestBody WeChatTemplateMsg data) throws Exception { - String openId="otnrM544hxIgkMOfaDU8VpJhj_6k"; + String openId="otnrM57kui-WCUmRtChhb1HguOgw"; + //String openId ="otnrM5ySvUo7ZZc4qafWzM9eyKBk"; + //String openId="otnrM544hxIgkMOfaDU8VpJhj_6k"; String appsecret="4764e32722a7d98656dea6afd9405701"; String appId="wx1d44e0fcd110351a"; // 模板参数 Map sendMag = new HashMap(); - // openId代表一个唯一微信用户,即微信消息的接收人 //String openId = "oLcw_5ti_iJpwibmL0QxfK2ZG9qQ"; // 公众号的模板id(也有相应的接口可以查询到) String templateId = "fVgBuwpLC43YkeGWfl1Vw0mW0Qu5WP2giD77TfKAEc4"; // 微信的基础accessToken - String accessToken=getAccessToken(appId,appsecret); - String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken; - + String accessToken=getAccessToken(APP_ID,APPSECRET); + String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken); /** * 其他模板可以从模板库中自己添加 * 模板ID @@ -89,22 +92,32 @@ public class WechatRest { * 兑付日期:{{keyword5.DATA}} * {{remark.DATA}} */ -// sendMag.put("first", new WeChatTemplateMsg("f123")); -// sendMag.put("keyword1", new WeChatTemplateMsg("111")); -// sendMag.put("keyword2", new WeChatTemplateMsg("222")); -// sendMag.put("keyword3", new WeChatTemplateMsg("333")); -// sendMag.put("keyword4", new WeChatTemplateMsg("444")); + sendMag.put("first", "f123"); + sendMag.put("keyword1", "111"); + sendMag.put("keyword2", "222"); + sendMag.put("keyword3", "333"); + sendMag.put("keyword4", "444"); sendMag.put("remark", "123465"); - + Map miniprogram = new HashMap<>(); + miniprogram.put("appid","wx11565021714ba796"); + miniprogram.put("pagepath","pages/index/index"); +// System.out.println(data.getMiniprogram()); +// System.out.println(sendMag); +// System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++"); +// System.out.println(data.getData()); RestTemplate restTemplate = new RestTemplate(); //拼接base参数 Map sendBody = new HashMap<>(); + sendBody.put("miniprogram",miniprogram); sendBody.put("touser", openId); // openId - //sendBody.put("url", "www.baidu.com"); // 点击模板信息跳转地址 + sendBody.put("url", ""); // 点击模板信息跳转地址 sendBody.put("topcolor", "#FF0000"); // 顶色 sendBody.put("data", sendMag); // 模板参数 - sendBody.put("template_id", templateId); // 模板Id - ResponseEntity forEntity = restTemplate.postForEntity(url, sendBody, String.class); + sendBody.put("template_id", templateId);// 模板Id + + //System.out.println(sendBody); + ResponseEntity forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class); + //System.out.println(forEntity.toString()); //log.info("结果是: {}",forEntity.getBody()); JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody()); // 0 @@ -115,17 +128,52 @@ public class WechatRest { //return forEntity.getBody(); } public String getAccessToken(String appId,String appsecret) throws Exception { -// SysAppletSet appletSet = appletSetMapper.selectOne(new QueryWrapper<>()); -// if (null == appletSet) { -// throw new ApiMallPlusException("没有设置支付配置"); -// } - String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appsecret; + String url = WX_URL_ACCESS_TOKEN.replace("APPID", appId).replace("APPSECRET", appsecret); RestTemplate restTemplate=new RestTemplate(); String re= restTemplate.getForObject(url,String.class); com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re); String at=jsonObject.getString("access_token"); return at; } - + /** + * * 发送模板消息 + * pagepath 用户点击时需要跳转的小程序页面 + * openid 接收消息的用户openid + * messageContent 推送消息主体内容 + */ +// public static void sendTemplateMessage(String openid,String pagepath, String messageContent) { +// WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage(); +// wxStorage.setAppId(tencentSubscriptionAppid);//appid 公众账号的唯一标识 +// wxStorage.setSecret(tencentSubscriptionAppSecret);//appsecret 公众账号的** +// WxMpService wxMpService = new WxMpServiceImpl(); +// wxMpService.setWxMpConfigStorage(wxStorage); +// +// WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram(); +// miniProgram.setAppid(WxConfig.APP_ID);//小程序appid +// miniProgram.setUsePath(true); +// miniProgram.setPagePath("/pages/index/index?foo=bar");//用户点击时需要跳转的小程序页面 +// //2,推送消息 +// WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() +// .toUser(openid)//要推送的用户openid +// .templateId(templateTemplateID)//消息模版id +// //.url("http://mp.weixin.qq.com/download")//点击模版消息要访问的网址 +// .miniProgram(miniProgram) +// .build(); +// //3,如果是正式版发送模版消息,这里需要配置你的信息 +// templateMessage.addData(new WxMpTemplateData("first","健康预警信息提示", "#FF00FF")); +// templateMessage.addData(new WxMpTemplateData("keyword1","红色预警", "#FF00FF")); +// templateMessage.addData(new WxMpTemplateData("keyword2","紧急处理", "#FF00FF")); +// templateMessage.addData(new WxMpTemplateData("remark",messageContent, "#FF00FF")); +// +// //发起推送 +// try { +// String msg = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage); +// log.info("推送成功:" + msg); +// } catch (Exception e) { +// log.info("推送失败:" + e.getMessage()); +// e.printStackTrace(); +// } +// +// } } diff --git a/yxt_supervise/supervise-rms/supervise-rms-api/src/main/java/com/supervise/rms/api/supplier/SupplierFeignFallback.java b/yxt_supervise/supervise-rms/supervise-rms-api/src/main/java/com/supervise/rms/api/supplier/SupplierFeignFallback.java index b510d84d..590614cc 100644 --- a/yxt_supervise/supervise-rms/supervise-rms-api/src/main/java/com/supervise/rms/api/supplier/SupplierFeignFallback.java +++ b/yxt_supervise/supervise-rms/supervise-rms-api/src/main/java/com/supervise/rms/api/supplier/SupplierFeignFallback.java @@ -1,7 +1,24 @@ package com.supervise.rms.api.supplier; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; import org.springframework.stereotype.Component; @Component public class SupplierFeignFallback implements SupplierFeign { + @Override + public ResultBean saveSupplier(SupplierDto supplierDto) { + return null; + } + + @Override + public ResultBean> listPage(PagerQuery pq) { + return null; + } + + @Override + public ResultBean fetchDetailsBySid(String sid) { + return null; + } } diff --git a/yxt_supervise/supervise-rms/supervise-rms-biz/pom.xml b/yxt_supervise/supervise-rms/supervise-rms-biz/pom.xml index 3e30b94f..4154e54e 100644 --- a/yxt_supervise/supervise-rms/supervise-rms-biz/pom.xml +++ b/yxt_supervise/supervise-rms/supervise-rms-biz/pom.xml @@ -111,6 +111,12 @@ fastcsv 2.2.1 + + net.sf.json-lib + json-lib + jdk15 + 2.4 + From 994c7fa14e4b092a8ddc84d1090bb451d25d61a8 Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Tue, 4 Apr 2023 18:00:48 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E5=85=AC=E4=BC=97=E5=8F=B7=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E6=A8=A1=E7=89=88=E8=B7=B3=E8=BD=AC=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/supervise/customer/biz/wechat/WechatRest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java index d6ed589b..4788e614 100644 --- a/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java +++ b/yxt_supervise/supervise-customer/supervise-customer-biz/src/main/java/com/yxt/supervise/customer/biz/wechat/WechatRest.java @@ -60,11 +60,11 @@ public class WechatRest { @PostMapping("/sendMessage") public void sendMessage(@RequestBody WeChatTemplateMsg data) throws Exception { - String openId="otnrM57kui-WCUmRtChhb1HguOgw"; + String openId="otnrM521f8KcCsRfL2Jj4Tk8np1g"; //String openId ="otnrM5ySvUo7ZZc4qafWzM9eyKBk"; //String openId="otnrM544hxIgkMOfaDU8VpJhj_6k"; - String appsecret="4764e32722a7d98656dea6afd9405701"; - String appId="wx1d44e0fcd110351a"; +// String appsecret="4764e32722a7d98656dea6afd9405701"; +// String appId="wx1d44e0fcd110351a"; // 模板参数 Map sendMag = new HashMap(); // openId代表一个唯一微信用户,即微信消息的接收人 From f63455476627a96a04785b881c7433d5c3be78fe Mon Sep 17 00:00:00 2001 From: liupopo Date: Tue, 4 Apr 2023 18:09:20 +0800 Subject: [PATCH 09/23] abc --- docs/databases/table_create.sql | 23 ++ docs/databases/table_modify.sql | 12 +- docs/demofiles/采购订单(示例).xls | Bin 0 -> 38912 bytes .../api/supervise/purchaserequisitionpro.js | 14 + .../purchaserequisition/uploadxlsx/index.vue | 361 +++++++----------- .../PurchaseRequisition.java | 13 + .../PurchaseRequisitionPro.java | 6 + .../PurchaseRequisitionService.java | 201 ++++------ .../PurchaseRequisitionProRest.java | 32 +- .../PurchaseRequisitionProService.java | 28 +- .../src/main/resources/application.yml | 4 +- 11 files changed, 317 insertions(+), 377 deletions(-) create mode 100644 docs/databases/table_create.sql create mode 100644 docs/demofiles/采购订单(示例).xls diff --git a/docs/databases/table_create.sql b/docs/databases/table_create.sql new file mode 100644 index 00000000..fb42596f --- /dev/null +++ b/docs/databases/table_create.sql @@ -0,0 +1,23 @@ +DROP TABLE IF EXISTS `purchase_requisition_checked`; +CREATE TABLE `purchase_requisition_checked` ( + `id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL COMMENT 'sid', + `lockVersion` VARCHAR(2) NULL DEFAULT NULL COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + + `prSid` VARCHAR(100) NULL DEFAULT NULL COMMENT '订单SID', + `prCode` VARCHAR(100) NULL DEFAULT NULL COMMENT '订单编号', + `storeName` VARCHAR(100) NULL DEFAULT NULL COMMENT '仓库/门店名称', + `receiptTime` DATETIME NULL DEFAULT NULL COMMENT '收货时间', + `billNo` VARCHAR(100) NULL DEFAULT NULL COMMENT '单据号', + `billType` VARCHAR(100) NULL DEFAULT NULL COMMENT '单据类型', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购订单检查结果'; \ No newline at end of file diff --git a/docs/databases/table_modify.sql b/docs/databases/table_modify.sql index d3bcde63..50a5f8d7 100644 --- a/docs/databases/table_modify.sql +++ b/docs/databases/table_modify.sql @@ -1,8 +1,5 @@ ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; -ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifySid modifyBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; - -ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifyBySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; -ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifyBySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; +ALTER TABLE supervise_supplychain.supplier_bank_info CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; select @@GLOBAL.sql_mode; @@ -22,14 +19,17 @@ ALTER TABLE supervise_supplychain.purchase_requisition CHANGE createSid createBy ALTER TABLE supervise_supplychain.purchase_requisition CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; ALTER TABLE supervise_supplychain.purchase_requisition ADD remarks varchar(200) NULL COMMENT '备注说明'; - ALTER TABLE supervise_supplychain.product_information CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; ALTER TABLE supervise_supplychain.product_information CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; - ALTER TABLE supervise_supplychain.restricted_brand CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; ALTER TABLE supervise_supplychain.restricted_brand CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; +ALTER TABLE supervise_supplychain.purchase_requisition_pro CHANGE createSid createBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '创建者'; +ALTER TABLE supervise_supplychain.purchase_requisition_pro CHANGE modifySid updateBySid varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '更新者'; +ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD remarks varchar(200) NULL COMMENT '备注说明'; ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD taxInclusiveAmount DOUBLE(12,2) DEFAULT NULL COMMENT '含税金额'; +ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD distributionAmount DOUBLE(12,2) DEFAULT NULL COMMENT '配货金额'; ALTER TABLE supervise_supplychain.purchase_requisition_pro ADD preqCode varchar(100) DEFAULT NULL COMMENT '订单编号'; + diff --git a/docs/demofiles/采购订单(示例).xls b/docs/demofiles/采购订单(示例).xls new file mode 100644 index 0000000000000000000000000000000000000000..bbe38cbc55ca0dcef30c4d2b45dd17e1efa809ca GIT binary patch literal 38912 zcmeI533wDmxA%LJKqmW4GBcSBOBMnNAwV{EAz=x!h9zN>J&+J(l_h{|VU>Lm1pgpvYKCqsD^aa-i#bars_$z-^1}W8rbQ88|Ws5~oI%0$3e^pji@hS`90;c_3CZ)*!6GSVOReVhzI@jx_=+5KydGBe6zdwPCembzqIg>ckp@ z)rGYN)|yyrVXcid7Hb^Vc&rIn>tId9S{G|QtVvjtvDU|$g0%tGRIClLHp1E%YZ}&c ztQlA{v1Vayg0(5uW>}kJZGp8V)>c^Wz}gyX8?4z_bFj9>+74@btR1lCVkMqw?S$?nDt;!deEPkeLrKHC7xA3AN&#v<4K?qe3`aQp zb_57{Y$)G^IQ5^~EuRiw%FP7p2wM;OJz=U9$6S=gF+B1O4&*U}c$_v!4^ z-!F&dTfxEv7KS4n~Jp#PM)n4o-zn0Rd;IbfF>9KIE}IoRC+5#%1C9f zj{}=w)DYu+U?Y^}t2Dl^c0gNHzqao~t1ej+ayLc_8H#DB5~nJdf-QH=D7}>;@0IIr zlp_JwNnl6uV{_Pc?SOt5n$+io`6`CeeHB3ae2JcpCTi)s9=y6ny2^$5&c_SR2GVXR zTD?YLsFiM1FHdpawKK|5RZ)%6H|>gP5C(o?E7eCU4Z`40P9Fqo*A8d_GF`@pxEb+v za4XPR!}DNGY2#A)US4)CN{*}Q@TxR$3p&rn$%^u8WgL33wp7GXx(U%=D{)5t<@VCa zK^o=vl}=KP^8f#wZbGBE7jEZZcnW5R-xVb%E(aNSI*p82I!>T0Js^m+3tjoJ^arih z^&#s+lz_%8Js3UJNKP8g_D|42b=n*3L4>??a@BB`d-#fj94>`O)dgtfqXcqYT zI0YA;>cZQXE{b`&)hhO1%4C%8D?cvc4D$!F^mvqOwc3Jh!Ad}wqMeV7f^k5;UjT1kF7a#=IHYX!3Jr825Dx4 zG*XJ>RUR+b<&jd9mYrRyr>RPLR-2rpUTx2vOcJ#$f!-zB^%d1TXhzI#NAXYzs!2z>t<@h)tPCwu_OMsIST0-oSJ`9n7 z1N?Cr$tz9sVcMb@!k}KB)~thL{@X%m9^2g{Mw)1v(XWr{)MY|=btM& z+M+RFaDw#g7Y%TXCWPN4@)V-Q>DPxQbpM8TF6K1KOkUM7uyG#`hf6nr0$^qDZeCT_ zzl|z3V%lj0yz`^?`3{r8y2d`LNVlc9omdsW-K-y=vAwzIzZ8Bt4Nd6gpj(rFD1`1V zYC`zEQY5fNYaK04zdj60w(EVNO%r|#Ts!D*REO>|YeJ59`-grv zTM&|wX(U9`jDA^l*7~7~l_`}Em|e;Pf&ok>rP5DnKIG66%1XH`Wr3Az{o-*CKU^_o zV2-}75{KFDIHl!K|K;}=^&7Z(!^C-UxV8R(IYSl|P_Hr^Q|-Qw;6((nTXm+jtBQJg zY2#;uHnd06CaNp|+Q9#oRcBh+Nvo_X%J9}I30hTk1TQKO4=9)v(+`6mFgxXHnQBy; zlph9b8bz1+GfkYNNz=cjNisC4>Ikifm@+e~w5zNd`>jzHgx?@MDuG*+SH`@%#@lYe zup8~+BI5BxMU~o7%Xzk5VwKvF(avohiH5GAwl2`btO4ob@h)xU1<-`8ll8v4#0GA$-8TkhH?3E zvPynUDyu2({hCqf>UG?Qko7#PZq*ObtQC*D7*#d|mF(FNaaA^i zTbsIWZKyYTY7?nzL+4tmKs+9zsZtwiPfu-9tJH?hz$7|INumZ@yXvMvr?#_BeN*k! zLAZ;9tdA~RKf|kS{T#?jd$`mH%$TEXD@rbn>XYBT*BvDfm_6Gz8g1*|&ku{oL_X^2 z+Z8o6sAmT1S=A9-v>kKrX2m4?LNZxBtdxZ>rhxcLvxmpjn25mb0aWU*2e*&#RVgPb z<=#&s$-)iEYjm5;dzN5*W)RozLyBi-NfTDzA9VX$djd1X*;**7FFBMNOXfLZKsL0;|9K0 z#i{3bR=lBC#kJlNkK5o?wyaS{Y+R*wZqav;Xx{@ABhhIPUDXjcm&91hGx1N0D+$WbV z&Tsbq7q-)zx`qu%-5eOUwCKG?i(k7oGj&Ieou789`F84<3y1ArU!CSW`tpjXFFGHY z)N59q)2kOg`^vxKK7OUa>G&U0|21TH;ytaG-P!NTsq6K>%>A}OyaI(2tk{Z?<-kG_yI_p!S_>^k@J`;tGc-l=TJ$)OjU=5F%45mIYnzXrV@yXWwc z_=bf;6Mxur;o|XYVY}a$`0Ma?dq*6vHvI0x&kcU+X6-zG#{*g4{66*0`KucJv1N5~ zn6;?>55G@Jz4i2-*x3`ReSgH6bjJUWg73DjjO|+feL+e>+3>_hFNE&6Hs-*zd5JSG z^{V^Tm4I9IUVgF9vrQWWB|Q1#_GHs*uhol+95!d_g;#s*pPI7JWloMw*)gqFjl9vp z@n1jIb@$ZeC5P{iX;+$YAY%KEy%H1exbl0SKQH$yeXig{-tZ2Wst-IkZfj-mo&#~4 z$6akPJ*!dDv!B%X_3I&5hx+dvbokeSe-`f>aPyR63wZwI=4Dr3df|)De{2%`jOpF% zmNT#4wfFmt3!B{<|J=QwkKQ>aGddTr0L)9Y3TZ41nswx?I@%dZAs?rJM&KVa}ZOM|*z zdg89GC;ZJih%yQ|GwGlcL*pdd0qJ+lVmgVS~+=n;xl-N4|&40&yeysHH z7Z(rho*v%!(0x%qWG8>vI;-pW5ohe*HvDF9yM6siD(5_RV$*Lw!!K;N&F}K`!C|w% z{P^;ZBQO3mqg`^XcU!!Df4fI2s%34Rpv-?aZ)nSVr`I}G`1{V%jBdj&B&>XS#o_W> z3yw^4ZVS!(vB}UDOFCR=89C&gfX`gNK7Z=91E&T|JapjJ#{-^zvPN;E+I~kbO?#!+ z%7ZJ~eto5Q^z^kU{~G=3nzw#xWKKTUEPi;m;hMf4b&<9rtLz-}?4{ zxmIeU2G^GrJo|!jPf_3V3%=UF`>Bh~z8U7%al+Vkw)<0hOn)l+?CGO3HG>-MzY zQ`dTL+gVoh#JQ#4zH{lx)0eiFuIx52arwlTI$t?*rFOkS+n0~EJbh()$(wiYI(O{B zyM8H1UfSQ8b=UgJ6>sNG3M+m3)13VL`X%2yJo(nwrT$&&wZ#w!1Pa!v_1KK;>Du@fhW7|Nq;Qi;W^b7e(=hH8wHz&)_f-QZ0O0>%MV74?>6dI z_`Jx`FW-|=7H_?_bjP|oGZU}%ebM$}(Vx#|J<+c8y-()7vFPV}JG|ty*LvIb@0z=| zzxnvKeGjFly=5Q0sLT~#-*usR@34rZ|4YV=*NP0UN)6AWe|I4_-3xY@N-g_MczaGW*Q4eH(^$cU+U}fF1!)qUn5)j>B{~+pT#_s5N!_o^v^)w=Q}zl4xLyuW)eFmx=$I~Ki+Zq4eV=* zSx$QJgXd{PITx<_;GTnNq4)o|aPRyNXZ1RH&{?;%@%Gj28*iJXTu7c%l2GGZjc?EO zI9xq=k9oo4KVE;b^YY4{mo3Lox zjB~FHeY59>+wOQTy~g%Vuckc|8L{|mk2iboYB%!3qn49ha?fQICeGQh=H8*7#BSIU zbG~V}Q@=WTf6{E&u2nmaR=#vF?f8}+`{z8DdMP(xT(bwe-ThVJqdOa4%-_3uXVFt1 z)jsjc>o-2;XGPx{m6g8S53m2W+(Rg?)$J^spdxa4}Yut?mg=tJ{mP5Ul#L|Kr zWxJYhTh;fggl$i>J+kLSr|VN@ZT)GJY3AFBdkZZyPAf6%dTy+I>Cfh_C8HY0ItKsM ztL>z-3#%nR_RjJ1bv8ZKE#TdOZ@h8n3wh)a_e|o+-%;0^xZ^^PObl#4e%$1uag&D@ zOrKCRX)p~No?UY+?_ioG_j;#W^Di~*viZdvbKR@+4zE1?*vyI}<%y1?XI|XV=a1{% zP8PJ=8Rr<2diLV(%hLw!x_)tMsdMeW3$FGVQnGO5tcyFJ{^gIa>+d<8lHSvQe$q3) znAQ&YWPS9duPtfyuRc+5bxVuSV%CmXRp;@~0u!Hnxy{Oo7gszSG%R~-`$>as&EC1M zF!B9q@1B@)qpabWz`mJUO&7n>gkh~1Lsqp->|V(lP{9bwmY(Y(pziq zi$3{KNy(&jX?OkIg7KCc)jEEdmb&WDbKj;^w*GecGvf!2df}(iR`16B z+~Vi2ZYF)5xq5l#UlG%TS_N&mG5*^gJ-eFxY`9aVjSW3bg&mkZh(nl-sbvGhaRJ6W zx}Vpe=W}ehbD$9^7wXwfky$OYxqb|z@b(KM5ghHRj-hcfUr513tYUYl>PYHpe4!(2 zVDv5?XhD#f_*$q+6N zdUmbG8aW8hw`8Mtl`s&Ns}*Aj->aV zr1XmyFS58&R;E-`RN$vfDaRvN<(b9Edt5n={KfdIM7mOpID5zjw@m1dL?I|+f7qrx zbjKEX=(yuJzOu4hDM!4r9LGW~p6^mJiz}7PTI``Tw5!>c9mjXW2we0WX675xibn6@<)^;$cGD`h32yus2TcA&mJ z7y_C?nb;|<#=2J1{kiI7+;Jn)dUs+4LCoAGTHREcTv0@p5404%I?*)DRSES|Ml~%; zT7g;IZi}zyLy?Ys_7_~tGfhKESi!aF_?b}j!5aKj%YS<@_R|lgVDpjupiygw^dE@L z1_j~weYob~4N&7?59Og#vxknN8e`A!{MTpCn7OPUHdALT&r?NH{ZM%KHAyS3=iwkN z7Zr(|q=b49Wg*E(rK0C9X*UL&br&cP?JkNKip^mwOshW{y{rc|sfJX5x=F%N$e|^7 zlw8k44Z`nZVx~{Lp6Bdwei(9D3R6dYH2VHY(4ggw}o)0Nngp?Qdbz6*m%BYAz)IMYw2r#Xt zxJn!X|YzWXO7<92L)B5qGUZ!#EWdLb(?cFL@Rl7iS#$gLgvLys0k ztd`%*-PxNGnHd&rIFm<~LM;{!?Y@Sky@OVsF|$E$R5ZWGkJFRkhBHwRq?7$o-f!y~ z^-&x0@T!UuVh9Q=qw;#3TSb;YU#GsBj=9}5tWD87@OByRlq2)Y%Lh(eQZ{E);revu z3PzzfXj_A+I_bD&L%k0Ll0(1}MpKb3kVKAv|7EhSOZ#zm<_UIC=hQL&?- zRB6fEi+308>ruF#{F+wdba)fV1X-wOGfY~kCP*6aZr=NAjusZKe{A;U31kc^DGO&b zG6dh!4MDEmp!&^`vnl?XQT2bzgHo2lNA6`xEn94)6uCGrrJ5Tlb?<`m@&`uj+(@dV z>q^nqU}_SwjiEx+BGevIDb0Y6Q1vA<3)g=(|Jb5wYqqVTikFs9HPX~l_!cXLHVsP2 zM1wRzDOqwUq*DtFV^sr}msfiztzZ7?ZL12`Qwd~4Zd|@K*hq8>RF=*yP28f%UuQtS z7W5Jt$G2-?e&OcLOJ-69mdq?I$zV{DaBYjJ@1xZ+U<>LK8Tev?Y0}IkGc|0eBrj}; zL7`|Rue78~zScUt_cT%KMQW?Xnwz zS*kgcYaoyaBvxCv?Zvx0wNbPtP{~`ixJ&*e_;>4~!}H^}j2uIX(^y4o5ZY3~GE|(O z9;pjSU=bkccwJ9#at_p_f+6d7k9mE9(z{FVy#uK%YCv8V-!g3c4A_r+1iSs{?#V=N zmRK2T0nf_N-926a-!d$KYSA3B3<_xB?u2e@-L-t@Ms6!&M$@0Re2S+UWXeV&+M2q3 zFDK~ggu?ZkH;){%bPn}DaygkQJqE2zV>Pb3hxMrmb&r;=kYP4&p1o-1W^(Me-Ra2g zH2U#qT&hZ%yVG&KHD}2I(i)YN^I;T@JQd)fI}Mt3ax}3<j)5L8hUJb&>-MZZL|3xG41|SfmijerGZtmE+z~UtTl_Yl@&wMCt>bc|oxI`+AaK{61T!O_Nrwb${ z)*Y{oE185KcRUc!WS0r$nW0CL)xDo45%vr6gVBmBBHjB#Fo)YLz#R`o9mbp8@i4Sv zf{;I)K0zduZ$WEjhP(6A^uwuOcRUh~vXhXX=Ec4UbnmyLFMJ>BjyurxLaMvt(RlN` zi=a;oe9TLNJQv;$|3iq^z^mq)gyU=CZfufpd@VejQf)#1I9yl0 zA{-x&hv7u~CxE2(LjF3qd=U57!xLdQg#AgFAdVE;D;dvfiTmm62BN)EFl>KCXwL?C zJZh_8?^HbNv_r68Lp;RvOo-cljc^Gq%4>{IIEneGuZ#QXY%SV@+`ZV|Ly zjV$PyW;IBo*;LPbG*R!FM!wrKjr^-;8a*E1nMUs!dZsxI((rVFS3Y_n(DPV&4^T|| zlZNz2Yl~G;c+7+khfx}j`C%WC!ejpUpcpa2V*!W}9XwV|=|H}e#psB(@T6MIgpW}X z3zU;QG<_FEi}_=6klLT`Bbn6lJVr99%_&CZwq<7k9y1BL_%oT*>UvbzAZc~--olda9jYBNi9#u1)zMlo^%#zk4ZdjUp3`Uc9UkWGRQCCoSsB~f5EL6I(Z5Arsa+dj@K|-ksK@YFAY#;4c+89#jk|a(2(emvEEq9*&6Mv8 zK`d5}g(4QG$HEYc*JI&`CFrpT#OmlV3u1|S%!*iDJr;>rJw1kVKf58yOSd7GtnafU zR$q@f5KGZx(TLHzZ~QnXVySv81~GaYjqh_I)<}=lK&-JItBDxRbn%?E5Tl1qd8{^K zIJ2p-Sj2E=K#j#AmZity5u+#g_;Cq{VK}VD>L5n%6!CqDh|w(*9;=I33q4j3v6gx) z2{C%_hUZL1j9#GOF`WO|=Ms4=1u=T1g~u8oMgvqHOGPY4k2OS${3PFpv%bAnT}Yl9?L+iqaMpd>`pzFg;*y&)&$#~^;lEHy6CZHh;`Lt7!fGl5S#56 z%)BfebuF9p#H=F9?ylwxMDNH|^7NekO#ZkWo-+XZdgwW;A=VSIz3_5@=w&2Rp)hV$ zP9U>EAbfbP(hI5l_#i133~hVs`$DiUA2F_BDCC&V-=~%vCLI@!Sb?51f|a;h&1sQx zS`q7`mk=rKi$bigzR!kOKg9Ne))KKeI6B7C( zAJ@MY%dgeDHuep`K5m6r#O~5_#<85eRsG|!kL<;zBw!!u!H=theFJqViBitGBn5Wo zIqRwWc*`WIx^Uf-6@QEg1JUn0D;vvcvE=Z4DMG%KoCa#XRHWua4L_K_Y?&&(p(>r1 z)d;ac(2C1wEXbhGl=3|3lCBwQ9=e;V@US_v42=v} zoN0vXZ^#&eG?Hj$1P?`wY-q+g896KFsX2+@VR}xHV6#YY+A@`3x|VYjj5}yjj0hgC zOCy2{^>P`(!$zp(iUgZ6?r;-q#<&9-T2`nzMS{(^l5-PmMn4mE5ecR@fZYU}8No_L zZcb-q?(%~OX`%31wtJhUz%ra*GtOUb_RKhc@toYIBEe>yzuW|yasEQivJR^LBEe>y zzpxK_a490eX0*3h9wQib=Q-U3C!z&pg3%}93Ul1`&{#F&4Aof~A349GOT=PTj>xJR zXQ^Ce1gt=;nsJtL%g|UgmFWh&iH~dl}Qli~;_2w7W;{4K^gYK3KlK2h6_{;5qgCu_GEj+R%XEX@o zFHwrfZxF^`ZVwzJ@f(Ek7o?yqc)N=H(raUSYoR1x{01?82Y=Sle_9ClSM)lRXho6V zAVYqGBz}W1zTzcwtwer(Y0VM9#Y{P(Un@Rat~tEl63ur zoMnsDoW!p-S_o$Rjz&)Edo(83OX|Nv<(Is*ySCIj#2E2AMlV+!Ed(=u@z{-8uE=k& zY_zc9 zdBOgg2d3Ep($&T^!snb(-?1u5A&lU0h!Mdd62bWPA9890he!m6hy<5xQwa`{2o8}5 z4uPe+;BhbBb7;=jJz5Ci9yqO3)leijL?SqZ6a4!&HK#~$h(vIRL~w{iaEL^32q!p| zY}fY6Il+P=!7C|UCpbj%wjmP1AriqM62T#=w~bTv7YPpG1VazvGDIRcL?SqZ6AZia zoNj^>ahyyryzOeSS8A+=FjgOV@2L-_q&}+35m^n9MhhW^tcFOehDfZ2=&aItErhW; zer~|qtM+%nd95~5nlLIEx60Fk)irKu){?k&GVMYcw-Z!;=#EaVaxY@UZK%pE=OuFITw@mADO+xD938PSVR2JulsI`6&h3PaYEF^c zP>I`6iQ7<#+fa$yP|oe@S75vS8&3)r6u9NrX$ZOJ4V64^sKjlk#BHd=ZKyiR%~SOk zxeevqLJy)bRN^*N;x?3X3%m22Zf>b%WNx|V4P~CUm@SduhVmJC-cUyKr!{5{|M}87 zRk}!XsN{J=4QURQXbzQV4rMe?W)vkt2e0e2^IHY`YXsA5D-m3iX@uLHV0Ma165W~1 z#RIUM;4tYrEleUfj1fE)IjR0(BEh#FQwa`}2o9474r2sQ)63O7FZIhX)Wv;fqgJ82 zZSHYLm_%_Hr+6~=J7Jg=7ITW%YGD$^VG_mkB^CGhA&gUe>qXel)ZLf&Wp>oB)xsq2 z8zxaq->z_vb;Bfz!&L8kr`jGO#kj`^OPHVsw}Lp<4U;Gi;}pa8Jg1xDMA%NI7!rF< zN6l!VQ1iZFjMv|i2d(<@_*PYp$ZMG7eZvfS4U>2clXwl&y)Ruugn9FNM_RTd4YrtcG(|p$Bgnk=1aC)o{)#?9OwF ztcH8D8aGv-LSr?Yv3m3SZ!31M)9tKkx>^bro;C%9I0T}Hl@JQ96X zp|g@+p5lDytF~;U5H5}sh8fKrpgc9C(gxl5S-fx)z3~;bBc2e z5scf}$Vq;d9z*9kA{@3@^|QEV3u)SnZiK{b1mkv&UamM&h~V7jOi;@exs8x~Yy{^P zC6a9-Bp(|gaT_6V8zFHUA#oeQxK+yXb1)yaXg@+)C=^Bt6%#2PA?G$i8Yx6b+(t;; zMo8R7sND8a^%uE~VBC@(ylx`55fZl%oLk)rBDWFV+`_KzI%(X}H&{9=FCQs=EA|0C zV-q298zGGeA`H2WkhqPIxQ$>wR+|rtkbEqg59_~1&`R^MbSIT`O=LEp=MHj}GQ`Ou z7RKsa#K_lKR3AG;%_&}uStM31BC8d%RaWU4CpW7WiB$_@b)H_X$f`wUmEV1^NIupg zv1(C$>>O1?(Z^aORxJ{%7Kv4h#Hxk+*yil+L(NwO3ks}4Z?fSKl~s$xszqYeBC%?b zShc9Ec2@NlS+#H<3q5$th^$&9RxPTJovr3{vl@vul*a>nRBI7Nwfydb#c)(>VFY)4 z@VDwio6bV2ebsMIso_O@Rh+r!xxU5*sDH3dD1Zy+8R*_&_Wd|x`b*n@$UbPW;wlabj>g8$#(>cV- z2`TDixC9^9TH#a4-8E2kK?=Q-UJC&C6Y z#nksKLY*{^Yh}DX8FivV|Eu#=IU=uCiC3#3uU3gytHi5S;??TSYtPk!RvNGL3<_zS z%ruH*ye?9?p?@frtK5$m@fyi_#W|2{5XnZh!}Odqs?|mZ^l}=>WRmsK0o_$`d)!Eg zSDN+hqAb>>X}t1s**t|BIXoXjg(lWXCU1(xRDa8k+(BC z;5F4p2ayu1krJzs604CCtC5`596maTlvs_FMhB77JVKiFq1BeC%+SBR%T<;l zM$AM>qk|~v3M@(*9Yl$&md#OpYm~%ll*DQjV|AHcuEr|))+oWZ@;eSu60cE`Z;j%- z_AFEDBk~$0`PL|j*C>hCD2dl7K0<&O5!z2@~u%4uWT$3w@A=R^Q|`6nCzU&Y(W3UDi<#q^U*B*Uxr*| z1!BZ2eYKl%@)-l0#H)?*sy$0%6L}rBQsvbq@rt*KAzQl+voT&*>g9^O+8D3elOEJk zHi=i8#H)?-sy<0#ll-eq;?*YcYLj@SC(PY5TsF=tpW*uCZNZ9OV*!2Ez$Wo(lX$gB zyxJsQZJgJ#u4;RTyxKUg>I|1n;?*YcYE%8|N>z$D7O;8qYB+b_t@1g@oJZNwM)F(C0^|k zuXc%7dLM$%gd+6GEBCM3ESH_}O8t@BPJDXCF7axYc(tp%@)=pXG#;=^yxJvR?Gmqc ziC4SiU+uTatKExNyX0T(j92aH8M`5`c8OQJ#H(H6)qb12(sR1RYZ~K~zFwV+&th=@ z>R`OCRc-E2dCgOEiq~57ubOj}2a%Izwj3g_72{O@>X3MKNW3~2uMg?vYW|hl+QE3$ zo>g>6tU4rC9V)AQ4$L93>X2AX2Ax9TLF~iC~8}!4=|tX3gW$v*l#{bfyvB9|no*RFa|@ z!RrwtlA62Z|D!O;@I(GtPY>S&hF z6hun|M>B#+4_-HMrXX4(IGPizTfsd#NP$gcf~jWmOhIR5@7`Z>QWai`$Y->~XS5-o z(Gs805}(l$pV0<-UDr^KgI;?v3a+@zN)^66Chu)_;jismh@+0U zDG}_H2zE*YJG}|sU^KrK18RuiOjcjK{|+KHt0cuRf*(eV2#%4)2r&}DG13?zMkKgw zf=Y0VL~x8ma10}Oi(alsaEwZDq^hAfzZD}99K#7d&&LQc62UPN!7&oSF%rQs62UQ? z;H@u%QPUech*T^T3S$H{MH?f;NCd}71jk4O$4CUnaDp+`AogM;f@3(r(1Y(2J#36b za119HcIP=of@2H`ju8m9;;v~V%1&W*2!G>c5mumeirV+mL1%e+z8r9y#2;Pbq5$sY49-!u=QSPI9PH~j$ zk_f(6CDL^#sDb9GgB!XQM!7hnl zmqf5j9V2ujf>XpNH@pcRppJ4~j9~4G%q0=*k_dK51k-;ycY70;M6gR8BXm=(FB0sM z2zIFi->c?y6P$=PlzlMjRCX_FMhk@+t1ias@-E*5WZmGSWtZe_U5r)jip*ums!L+k zC9&$#S*7c47h~0SqQjYMlb!6j1DE>TK^EyIJsCk`hrPJVRRh}6vj;r9md&vM?*hrhJ0;_D;0nA3-g^ zdtvl9%v9U|fZsEI6@CZ&UdQ@8!e`j;GuWoT1Abev(%v?Hk;<#p=_{Ez(EARov@FA? z9+%N;M(Q#Wy|9*orzfhT3Fz~d^bv@L4afEPN+4Eh%pk1v^21+fN_rHR9%iHm#3)V=F<7zEtu?x3LDRrA zwMP5?clpn-0DVTsR9%VK=y#f$oVEEM5kvgu?l{`GE53A!er+#k@CwHD;wj(o1L4kVcn8WNX^r94nTx90cU+I$M&S$szc?fxf=ulkd|ey86%y}3~h%i8s*f9j209gtSdBaJ@t zF&?jj($|=alyP_fGoNjb#VfrN@z`%?q!lB_MC>1qy?0}KoS{{ viewTitle }}
    + 下载Excel示例表样 +
    + + 上传采购订单excel文件 + +
    关闭
    @@ -13,123 +30,88 @@ -
    - -
    - 采购订单excel文件上传 - 下载Excel示例表样 -
    - - -
    - - 选取文件 - 上传到服务器 - -
    -
    - -
    上传采购订单的Excel文件,文件名以订单号开头,类似《90002303240037石家庄朋硕家居用品有限公司.xls》。
    -
    -
    -
    +
    - +
    采购订单信息
    - 订单编号 - + 订单编号 + {{ formobj.code }} - 填单人 - + 填单人 + {{ formobj.buyerName }} + 填单时间 + + + {{ formobj.purchaseDate }} + + - 供货单位 - + 供货单位 + {{ formobj.supplierName }} - 仓位 - + 仓位 + {{ formobj.warehousePosition }} - - - 采购员 - + 到货日期 + - {{ formobj.buyerName }} + {{ formobj.arrivalDate }} - 入库单位 - + + + 采购员 + - {{ formobj.purchasingDeptName }} + {{ formobj.buyerName }} - - - 要货单位 - + 入库单位 + {{ formobj.purchasingDeptName }} - 入库仓位 - + 单据到效期 + - {{ formobj.warehousePosition }} + {{ formobj.expiryDate }} - 填单日期 - + 要货单位 + - {{ formobj.purchaseDate }} - - - 到货日期 - - - {{ formobj.arrivalDate }} + {{ formobj.purchasingDeptName }} - - - 单据到效期 - + 入库仓位 + - {{ formobj.expiryDate }} + {{ formobj.warehousePosition }} - 完成状态 - + 完成状态 + {{ formobj.completionStatus }} @@ -142,108 +124,17 @@ 合计金额:{{ amountInTotal }}
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -274,6 +165,7 @@