From 274fc7ccf903da9d59a381dd245d78abec0e0af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 2 Jan 2025 10:26:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8F=91=E7=A5=A8=E5=9B=9E=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/ErrorCodeEnum.java | 2 +- .../store/enums/point/ShopSubStageEnum.java | 1 + .../enums/point/ShopSubStageStatusEnum.java | 5 + .../java/com/cool/store/dao/InvoicingDAO.java | 36 ++ .../cool/store/mapper/InvoicingMapper.java | 15 + .../main/resources/mapper/InvoicingMapper.xml | 37 ++ .../resources/mybatis-generator.properties | 6 +- .../java/com/cool/store/dto/InvoicingDTO.java | 113 +++++ .../com/cool/store/dto/ocr/InvoiceDTO.java | 33 ++ .../com/cool/store/entity/InvoicingDO.java | 410 ++++++++++++++++++ .../cool/store/entity/SignFranchiseDO.java | 2 + .../request/AddSignFranchiseRequest.java | 4 + .../response/AddSignFranchiseResponse.java | 3 +- coolstore-partner-service/pom.xml | 5 + .../com/cool/store/service/AliyunService.java | 10 + .../com/cool/store/service/DeskService.java | 10 + .../cool/store/service/InvoicingService.java | 39 ++ .../store/service/PreparationService.java | 4 +- .../store/service/impl/AliyunServiceImpl.java | 43 +- .../store/service/impl/DeskServiceImpl.java | 6 + .../service/impl/InvoicingServiceImpl.java | 84 ++++ .../service/impl/PreparationServiceImpl.java | 2 +- .../impl/SignFranchiseServiceImpl.java | 5 +- .../store/controller/webb/DeskController.java | 8 + .../controller/webb/InvoicingController.java | 58 +++ .../controller/webb/PCOcrController.java | 39 ++ .../webc/MiniInvoicingController.java | 41 ++ .../store/controller/webc/OcrController.java | 7 + .../store/controller/webc/TestController.java | 8 + 29 files changed, 1023 insertions(+), 13 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/InvoicingDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/InvoicingMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/InvoicingMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/InvoicingDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/ocr/InvoiceDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/InvoicingDO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/InvoicingService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/InvoicingServiceImpl.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/InvoicingController.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOcrController.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniInvoicingController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index e912cc342..90c5ee956 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -221,7 +221,7 @@ public enum ErrorCodeEnum { FITMENT_FAIL(12003,"装修款阶段未完成",null), SEE_ACCEPTANCE_ERROR(12004,"获取鲜丰撤场数据失败",null), SEE_ACCEPTANCE_AUDIT_NULL(12005,"视觉验收结果为空",null), - STATUS_NOT_SUPPORT_SUMMIT(121006,"该状态不支持上传",null), + STATUS_NOT_SUPPORT_SUMMIT(121006,"该状态不支持提交",null), DESIGN_NO_COMPLETE(121007,"请先完成设计阶段!",null), SIGN_COMPLETED(121008,"你已完成验收,无需重复操作!",null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java index fafa635e4..a7fa6c5e4 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java @@ -20,6 +20,7 @@ public enum ShopSubStageEnum { SHOP_STAGE_5(ShopStageEnum.SHOP_STAGE_2, 50, "员工招聘", 23), SHOP_STAGE_7(ShopStageEnum.SHOP_STAGE_2, 70, "缴纳加盟费/保证金", 1), SHOP_STAGE_8(ShopStageEnum.SHOP_STAGE_2, 80, "加盟合同签约", 4), + SHOP_STAGE_8_5(ShopStageEnum.SHOP_STAGE_2, 85, "发票回传", 5), SHOP_STAGE_9(ShopStageEnum.SHOP_STAGE_2, 90, "设计阶段", 14), SHOP_STAGE_11(ShopStageEnum.SHOP_STAGE_2, 110, "施工阶段", 25), SHOP_STAGE_12(ShopStageEnum.SHOP_STAGE_2, 120, "装修验收", 27), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java index 2218ba78c..2c443b069 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java @@ -49,6 +49,11 @@ public enum ShopSubStageStatusEnum { SHOP_SUB_STAGE_STATUS_84(ShopSubStageEnum.SHOP_STAGE_8, 840, "已签约", Boolean.TRUE), SHOP_SUB_STAGE_STATUS_85(ShopSubStageEnum.SHOP_STAGE_8, 850, "退回", Boolean.FALSE), + //发票回传 + SHOP_SUB_STAGE_STATUS_85_1(ShopSubStageEnum.SHOP_STAGE_8_5, 880, "待提交", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_85_3(ShopSubStageEnum.SHOP_STAGE_8_5, 890, "已完成", Boolean.TRUE), + + //设计阶段 SHOP_SUB_STAGE_STATUS_90(ShopSubStageEnum.SHOP_STAGE_9, 900, "待上传", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_905(ShopSubStageEnum.SHOP_STAGE_9, 905, "待确认", Boolean.FALSE), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/InvoicingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/InvoicingDAO.java new file mode 100644 index 000000000..0bd84bad3 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/InvoicingDAO.java @@ -0,0 +1,36 @@ +package com.cool.store.dao; + +import com.cool.store.entity.InvoicingDO; +import com.cool.store.mapper.InvoicingMapper; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2024/12/31 13:37 + * @Version 1.0 + */ +@Repository +public class InvoicingDAO { + + @Resource + InvoicingMapper invoicingMapper; + + public Integer add(InvoicingDO invoicingDO){ + return invoicingMapper.insert(invoicingDO); + } + + public Integer update(InvoicingDO invoicingDO){ + return invoicingMapper.updateByPrimaryKeySelective(invoicingDO); + } + + public InvoicingDO getByShopId(Long shopId){ + if (shopId == null){ + return null; + } + return invoicingMapper.selectByShopId(shopId); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/InvoicingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/InvoicingMapper.java new file mode 100644 index 000000000..3996b0a04 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/InvoicingMapper.java @@ -0,0 +1,15 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.InvoicingDO; +import tk.mybatis.mapper.common.Mapper; + +public interface InvoicingMapper extends Mapper { + + /** + * 根据shopId查询 + * @param shopId + * @return + */ + InvoicingDO selectByShopId(Long shopId); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/InvoicingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/InvoicingMapper.xml new file mode 100644 index 000000000..f69d653ae --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/InvoicingMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties index fa531da0c..a6d7bcc74 100644 --- a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties +++ b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties @@ -3,6 +3,6 @@ jdbc.url = jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcoll jdbc.user= coolstore jdbc.password = CSCErYcXniNYm7bT -table.name = xfsg_qualifications_info -table.object.class = QualificationsInfoDO -table.mapper = QualificationsInfoMapper \ No newline at end of file +table.name = xfsg_invoicing +table.object.class = InvoicingDO +table.mapper = InvoicingMapper \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/InvoicingDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/InvoicingDTO.java new file mode 100644 index 000000000..5454fc2ba --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/InvoicingDTO.java @@ -0,0 +1,113 @@ +package com.cool.store.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.math.BigDecimal; + +/** + * @Author suzhuhong + * @Date 2024/12/31 13:46 + * @Version 1.0 + */ +@Data +@ApiModel("发票DTO") +public class InvoicingDTO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @ApiModelProperty("ID") + private Long id; + + /** + * xfsg_shop_info.id + */ + @Column(name = "shop_id") + @ApiModelProperty("shopId") + private Long shopId; + + /** + * 发票URL + */ + @Column(name = "invoice_url") + @ApiModelProperty("ID") + private String invoiceUrl; + + /** + * 开票日期 + */ + @Column(name = "invoice_date") + @ApiModelProperty("开票日期") + private String invoiceDate; + + /** + * 票据编码 + */ + @Column(name = "invoice_number") + @ApiModelProperty("票据编码") + private String invoiceNumber; + + /** + * 加盟费 + */ + @Column(name = "franchise_fee") + @ApiModelProperty("加盟费") + private BigDecimal franchiseFee; + + /** + * 加盟费税 + */ + @Column(name = "franchise_fee_tax") + @ApiModelProperty("加盟费税") + private BigDecimal franchiseFeeTax; + + /** + * 管理费 + */ + @Column(name = "management_fee") + @ApiModelProperty("管理费") + private BigDecimal managementFee; + + /** + * 管理费税 + */ + @Column(name = "management_fee_tax") + @ApiModelProperty("管理费税") + private BigDecimal managementFeeTax; + + /** + * 品牌使用费 + */ + @Column(name = "brand_usage_fee") + @ApiModelProperty("品牌使用费") + private BigDecimal brandUsageFee; + + /** + * 品牌使用费税 + */ + @Column(name = "brand_usage_fee_tax") + @ApiModelProperty("品牌使用费税") + private BigDecimal brandUsageFeeTax; + + /** + * 设计服务费 + */ + @Column(name = "design_service_fee") + @ApiModelProperty("设计服务费") + private BigDecimal designServiceFee; + + /** + * 设计服务费税 + */ + @Column(name = "design_service_fee_tax") + @ApiModelProperty("设计服务费税") + private BigDecimal designServiceFeeTax; + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/ocr/InvoiceDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/ocr/InvoiceDTO.java new file mode 100644 index 000000000..e86f7a3b5 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/ocr/InvoiceDTO.java @@ -0,0 +1,33 @@ +package com.cool.store.dto.ocr; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2024/12/30 16:14 + * @Version 1.0 + */ +@Data +public class InvoiceDTO { + + @ApiModelProperty(value = "发票号码") + private String invoiceNumber; + @ApiModelProperty(value = "发票日期") + private String invoiceDate; + @ApiModelProperty(value = "发票明细") + private List invoiceDetails; + + @Data + class InvoiceDetailDTO{ + @ApiModelProperty(value = "发票明细名称") + private String itemName; + @ApiModelProperty(value = "发票明细金额") + private String amount; + @ApiModelProperty(value = "发票明细税额") + private String tax; + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/InvoicingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/InvoicingDO.java new file mode 100644 index 000000000..d7a1582d4 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/InvoicingDO.java @@ -0,0 +1,410 @@ +package com.cool.store.entity; + +import java.math.BigDecimal; +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_invoicing") +public class InvoicingDO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * xfsg_shop_info.id + */ + @Column(name = "shop_id") + private Long shopId; + + /** + * 创建人 + */ + @Column(name = "invoice_url") + private String invoiceUrl; + + /** + * 开票日期 + */ + @Column(name = "invoice_date") + private String invoiceDate; + + /** + * 票据编码 + */ + @Column(name = "invoice_number") + private String invoiceNumber; + + /** + * 加盟费 + */ + @Column(name = "franchise_fee") + private BigDecimal franchiseFee; + + /** + * 加盟费税 + */ + @Column(name = "franchise_fee_tax") + private BigDecimal franchiseFeeTax; + + /** + * 管理费 + */ + @Column(name = "management_fee") + private BigDecimal managementFee; + + /** + * 管理费税 + */ + @Column(name = "management_fee_tax") + private BigDecimal managementFeeTax; + + /** + * 品牌使用费 + */ + @Column(name = "brand_usage_fee") + private BigDecimal brandUsageFee; + + /** + * 品牌使用费税 + */ + @Column(name = "brand_usage_fee_tax") + private BigDecimal brandUsageFeeTax; + + /** + * 设计服务费 + */ + @Column(name = "design_service_fee") + private BigDecimal designServiceFee; + + /** + * 设计服务费税 + */ + @Column(name = "design_service_fee_tax") + private BigDecimal designServiceFeeTax; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Date createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Date updateTime; + + /** + * 创建人 + */ + @Column(name = "create_user_id") + private String createUserId; + + /** + * 更新人 + */ + @Column(name = "update_user_id") + private String updateUserId; + + /** + * @return id + */ + public Long getId() { + return id; + } + + /** + * @param id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取xfsg_shop_info.id + * + * @return shop_id - xfsg_shop_info.id + */ + public Long getShopId() { + return shopId; + } + + /** + * 设置xfsg_shop_info.id + * + * @param shopId xfsg_shop_info.id + */ + public void setShopId(Long shopId) { + this.shopId = shopId; + } + + /** + * 获取创建人 + * + * @return invoice_url - 创建人 + */ + public String getInvoiceUrl() { + return invoiceUrl; + } + + /** + * 设置创建人 + * + * @param invoiceUrl 创建人 + */ + public void setInvoiceUrl(String invoiceUrl) { + this.invoiceUrl = invoiceUrl; + } + + /** + * 获取开票日期 + * + * @return invoice_date - 开票日期 + */ + public String getInvoiceDate() { + return invoiceDate; + } + + /** + * 设置开票日期 + * + * @param invoiceDate 开票日期 + */ + public void setInvoiceDate(String invoiceDate) { + this.invoiceDate = invoiceDate; + } + + /** + * 获取票据编码 + * + * @return invoice_number - 票据编码 + */ + public String getInvoiceNumber() { + return invoiceNumber; + } + + /** + * 设置票据编码 + * + * @param invoiceNumber 票据编码 + */ + public void setInvoiceNumber(String invoiceNumber) { + this.invoiceNumber = invoiceNumber; + } + + /** + * 获取加盟费 + * + * @return franchise_fee - 加盟费 + */ + public BigDecimal getFranchiseFee() { + return franchiseFee; + } + + /** + * 设置加盟费 + * + * @param franchiseFee 加盟费 + */ + public void setFranchiseFee(BigDecimal franchiseFee) { + this.franchiseFee = franchiseFee; + } + + /** + * 获取加盟费税 + * + * @return franchise_fee_tax - 加盟费税 + */ + public BigDecimal getFranchiseFeeTax() { + return franchiseFeeTax; + } + + /** + * 设置加盟费税 + * + * @param franchiseFeeTax 加盟费税 + */ + public void setFranchiseFeeTax(BigDecimal franchiseFeeTax) { + this.franchiseFeeTax = franchiseFeeTax; + } + + /** + * 获取管理费 + * + * @return management_fee - 管理费 + */ + public BigDecimal getManagementFee() { + return managementFee; + } + + /** + * 设置管理费 + * + * @param managementFee 管理费 + */ + public void setManagementFee(BigDecimal managementFee) { + this.managementFee = managementFee; + } + + /** + * 获取管理费税 + * + * @return management_fee_tax - 管理费税 + */ + public BigDecimal getManagementFeeTax() { + return managementFeeTax; + } + + /** + * 设置管理费税 + * + * @param managementFeeTax 管理费税 + */ + public void setManagementFeeTax(BigDecimal managementFeeTax) { + this.managementFeeTax = managementFeeTax; + } + + /** + * 获取品牌使用费 + * + * @return brand_usage_fee - 品牌使用费 + */ + public BigDecimal getBrandUsageFee() { + return brandUsageFee; + } + + /** + * 设置品牌使用费 + * + * @param brandUsageFee 品牌使用费 + */ + public void setBrandUsageFee(BigDecimal brandUsageFee) { + this.brandUsageFee = brandUsageFee; + } + + /** + * 获取品牌使用费税 + * + * @return brand_usage_fee_tax - 品牌使用费税 + */ + public BigDecimal getBrandUsageFeeTax() { + return brandUsageFeeTax; + } + + /** + * 设置品牌使用费税 + * + * @param brandUsageFeeTax 品牌使用费税 + */ + public void setBrandUsageFeeTax(BigDecimal brandUsageFeeTax) { + this.brandUsageFeeTax = brandUsageFeeTax; + } + + /** + * 获取设计服务费 + * + * @return design_service_fee - 设计服务费 + */ + public BigDecimal getDesignServiceFee() { + return designServiceFee; + } + + /** + * 设置设计服务费 + * + * @param designServiceFee 设计服务费 + */ + public void setDesignServiceFee(BigDecimal designServiceFee) { + this.designServiceFee = designServiceFee; + } + + /** + * 获取设计服务费税 + * + * @return design_service_fee_tax - 设计服务费税 + */ + public BigDecimal getDesignServiceFeeTax() { + return designServiceFeeTax; + } + + /** + * 设置设计服务费税 + * + * @param designServiceFeeTax 设计服务费税 + */ + public void setDesignServiceFeeTax(BigDecimal designServiceFeeTax) { + this.designServiceFeeTax = designServiceFeeTax; + } + + /** + * 获取创建时间 + * + * @return create_time - 创建时间 + */ + public Date getCreateTime() { + return createTime; + } + + /** + * 设置创建时间 + * + * @param createTime 创建时间 + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** + * 获取更新时间 + * + * @return update_time - 更新时间 + */ + public Date getUpdateTime() { + return updateTime; + } + + /** + * 设置更新时间 + * + * @param updateTime 更新时间 + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + /** + * 获取创建人 + * + * @return create_user_id - 创建人 + */ + public String getCreateUserId() { + return createUserId; + } + + /** + * 设置创建人 + * + * @param createUserId 创建人 + */ + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + /** + * 获取更新人 + * + * @return update_user_id - 更新人 + */ + public String getUpdateUserId() { + return updateUserId; + } + + /** + * 设置更新人 + * + * @param updateUserId 更新人 + */ + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java index 30c281c8a..93cd48fe9 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SignFranchiseDO.java @@ -52,4 +52,6 @@ public class SignFranchiseDO { private Date createTime; @Column(name = "update_time") private Date updateTime; + @Column(name = "contract_code") + private String contractCode; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java index d3012080a..cfee3ef37 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AddSignFranchiseRequest.java @@ -63,6 +63,9 @@ public class AddSignFranchiseRequest { @ApiModelProperty("加盟商联系方式") private String mobile; + @ApiModelProperty("合同编码") + private String contractCode; + public SignFranchiseDO toSignFranchiseDO() { SignFranchiseDO signFranchiseDO = new SignFranchiseDO(); @@ -81,6 +84,7 @@ public class AddSignFranchiseRequest { signFranchiseDO.setRemark(this.remark); signFranchiseDO.setResign(this.resign); signFranchiseDO.setMobile(this.mobile); + signFranchiseDO.setContractCode(this.contractCode); return signFranchiseDO; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java index 19c7d203d..7e1ced15b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java @@ -160,6 +160,7 @@ public class AddSignFranchiseResponse { @ApiModelProperty("失败时间") private Date resultTime; - + @ApiModelProperty("合同编码") + private String contractCode; } diff --git a/coolstore-partner-service/pom.xml b/coolstore-partner-service/pom.xml index a6f1d873b..ff45bc16f 100644 --- a/coolstore-partner-service/pom.xml +++ b/coolstore-partner-service/pom.xml @@ -77,6 +77,11 @@ ocr_api20210707 2.0.7 + + com.aliyun + darabonba-stream + 0.0.1 + org.aspectj aspectjrt diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java index 1279fdd48..fbc032b35 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java @@ -1,5 +1,6 @@ package com.cool.store.service; +import com.cool.store.dto.ocr.InvoiceDTO; import com.cool.store.enums.IDCardSideEnum; import com.cool.store.enums.SmsCodeTypeEnum; import com.cool.store.exception.ApiException; @@ -7,6 +8,8 @@ import com.cool.store.response.ResponseResult; import com.cool.store.vo.BusinessLicenseInfoVO; import com.cool.store.vo.FoodLicenseVO; import com.cool.store.vo.IdentityCardInfoVO; +import io.swagger.models.auth.In; +import org.springframework.web.multipart.MultipartFile; public interface AliyunService { /** @@ -40,4 +43,11 @@ public interface AliyunService { * @return */ FoodLicenseVO getFoodLicense(String imageUrl) throws ApiException ; + + /** + * OCR 发票解析数据 + * @param imageUrl + * @return + */ + InvoiceDTO getRecognizeInvoiceWithOptions(String imageUrl); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java index fd3b93db8..baacac9d9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java @@ -134,6 +134,16 @@ public interface DeskService { * @return */ PageInfo signingOfFranchiseContractPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + + + /** + * 发票回传待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo invoiceReturnPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); /** * 开业运营方案待处理数据 * @param pageNum diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InvoicingService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InvoicingService.java new file mode 100644 index 000000000..89a36266c --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InvoicingService.java @@ -0,0 +1,39 @@ +package com.cool.store.service; + +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.InvoicingDTO; +import com.cool.store.entity.InvoicingDO; + +/** + * @Author suzhuhong + * @Date 2024/12/31 13:44 + * @Version 1.0 + */ +public interface InvoicingService { + + /** + * 提交发票详情 + * @param invoicingDTO + * @return + */ + Boolean addInvoicing(InvoicingDTO invoicingDTO, LoginUserInfo userInfo); + + /** + * 编辑发票详情 + * @param invoicingDTO + * @return + */ + Boolean editInvoicing(InvoicingDTO invoicingDTO,LoginUserInfo userInfo); + + /** + * 查询发票详情 + * @param shopId + * @return + */ + InvoicingDTO getInvoicingByShopId(Long shopId); + + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PreparationService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PreparationService.java index 3acf2687d..fa33a89e8 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PreparationService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PreparationService.java @@ -34,7 +34,9 @@ public interface PreparationService { PreparationProcessVO getPreparationProcess(Long shopId); /** - * 校验建店与加盟签约合同是否完成 并初始化后续流程数据 + * V1.0 校验建店与加盟签约合同是否完成 并初始化后续流程数据 + * V1.1 加盟签约合同是否完成 并初始化后续流程数据 + * V1.2 新增发票回传阶段 校验发票回传是否完成 并初始化后续流程数据 * @param shopId */ void contractAndBuildStoreCompletion(Long shopId); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java index ed787df50..1bd00abc6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java @@ -3,12 +3,13 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyun.ocr20191230.models.*; -import com.aliyun.ocr_api20210707.Client; -import com.aliyun.ocr_api20210707.models.RecognizeAdvancedRequest; -import com.aliyun.ocr_api20210707.models.RecognizeFoodManageLicenseRequest; -import com.aliyun.ocr_api20210707.models.RecognizeFoodManageLicenseResponse; +import com.aliyun.ocr20191230.models.RecognizeBusinessLicenseResponse; +import com.aliyun.ocr20191230.models.RecognizeBusinessLicenseResponseBody; +import com.aliyun.ocr_api20210707.models.*; +import com.aliyun.tea.*; import com.aliyuncs.CommonRequest; import com.aliyuncs.http.MethodType; +import com.cool.store.dto.ocr.InvoiceDTO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.IDCardSideEnum; import com.cool.store.enums.SmsCodeTypeEnum; @@ -17,6 +18,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.response.ResponseResult; import com.cool.store.service.AliyunService; import com.cool.store.utils.poi.StringUtils; +import com.cool.store.utils.poi.constant.Constants; import com.cool.store.vo.BusinessLicenseInfoVO; import com.cool.store.vo.FoodLicenseVO; import com.cool.store.vo.IdentityCardInfoVO; @@ -203,6 +205,39 @@ public class AliyunServiceImpl implements AliyunService { } } + @Override + public InvoiceDTO getRecognizeInvoiceWithOptions(String url){ + if (StringUtils.isEmpty(url)){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + .setAccessKeyId(accessKeyId) + .setAccessKeySecret(accessKeySecret); + config.endpoint = "ocr-api.cn-hangzhou.aliyuncs.com"; + try { + com.aliyun.ocr_api20210707.Client client = new com.aliyun.ocr_api20210707.Client(config); + RecognizeInvoiceRequest recognizeInvoiceRequest = new RecognizeInvoiceRequest().setUrl(url); + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + RecognizeInvoiceResponse recognizeInvoiceResponse = client.recognizeInvoiceWithOptions(recognizeInvoiceRequest, runtime); + InvoiceDTO invoiceDTO = null; + if (recognizeInvoiceResponse!=null&&recognizeInvoiceResponse.getBody()!=null){ + String data = recognizeInvoiceResponse.getBody().getData(); + if (StringUtils.isNotEmpty(data)){ + JSONObject jsonObject = JSONObject.parseObject(data); + Object specialData = jsonObject.get("data"); + invoiceDTO = JSONObject.parseObject(JSONObject.toJSONString(specialData), InvoiceDTO.class); + } + } + log.info("普通发票:{}", JSONObject.toJSONString(recognizeInvoiceResponse)); + return invoiceDTO; + } catch (Exception _error) { + log.info("getRecognizeInvoiceWithOptions error:{}",_error); + throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE,"发票解析异常"); + } + } + + + @Override public ResponseResult sendMessage(String mobile, SmsCodeTypeEnum codeType) { String msgKey = codeType + ":" + mobile; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java index 5bb40c1e3..b2c5f049d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java @@ -364,6 +364,12 @@ public class DeskServiceImpl implements DeskService { Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_80.getShopSubStageStatus(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85.getShopSubStageStatus()), Boolean.TRUE); } + @Override + public PageInfo invoiceReturnPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, null, ShopSubStageEnum.SHOP_STAGE_8_5, + Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_1.getShopSubStageStatus()), Boolean.FALSE); + } + @Override public PageInfo openingAndOperationPlanPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_14, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_140.getShopSubStageStatus()), Boolean.FALSE); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InvoicingServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InvoicingServiceImpl.java new file mode 100644 index 000000000..98dcf6327 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InvoicingServiceImpl.java @@ -0,0 +1,84 @@ +package com.cool.store.service.impl; + +import ch.qos.logback.classic.jmx.MBeanUtil; +import cn.hutool.core.bean.BeanUtil; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dao.InvoicingDAO; +import com.cool.store.dao.ShopStageInfoDAO; +import com.cool.store.dto.InvoicingDTO; +import com.cool.store.entity.InvoicingDO; +import com.cool.store.entity.ShopStageInfoDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.point.ShopSubStageEnum; +import com.cool.store.enums.point.ShopSubStageStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.service.InvoicingService; +import com.cool.store.service.PreparationService; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2024/12/31 13:53 + * @Version 1.0 + */ +@Service +public class InvoicingServiceImpl implements InvoicingService { + + @Resource + private InvoicingDAO invoicingDAO; + @Resource + PreparationService preparationService; + @Resource + private ShopStageInfoDAO shopStageInfoDAO; + + @Override + public Boolean addInvoicing(InvoicingDTO invoicingDTO, LoginUserInfo userInfo) { + if (invoicingDTO==null||invoicingDTO.getId()!=null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(invoicingDTO.getShopId(), ShopSubStageEnum.SHOP_STAGE_8_5); + //待提交时候支持提交 + if (shopSubStageInfo!=null&&!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_1.getShopSubStageStatus().equals(shopSubStageInfo.getShopSubStageStatus())){ + throw new ServiceException(ErrorCodeEnum.STATUS_NOT_SUPPORT_SUMMIT); + } + InvoicingDO invoicingDO = new InvoicingDO(); + BeanUtil.copyProperties(invoicingDTO, invoicingDO); + invoicingDO.setCreateUserId(userInfo.getUserId()); + invoicingDAO.add(invoicingDO); + ////如果发票回传完成 开始设计阶段与验收阶段 + preparationService.contractAndBuildStoreCompletion(invoicingDTO.getShopId()); + return Boolean.TRUE; + } + + @Override + public Boolean editInvoicing(InvoicingDTO invoicingDTO,LoginUserInfo userInfo) { + if (invoicingDTO==null||invoicingDTO.getId()==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + ShopStageInfoDO shopSubStageInfo = shopStageInfoDAO.getShopSubStageInfo(invoicingDTO.getShopId(), ShopSubStageEnum.SHOP_STAGE_8_5); + //已完成支持编辑 + if (shopSubStageInfo!=null&&!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_3.getShopSubStageStatus().equals(shopSubStageInfo.getShopSubStageStatus())){ + throw new ServiceException(ErrorCodeEnum.STATUS_NOT_SUPPORT_SUMMIT); + } + InvoicingDO invoicingDO = new InvoicingDO(); + BeanUtil.copyProperties(invoicingDTO, invoicingDO); + invoicingDO.setUpdateUserId(userInfo.getUserId()); + invoicingDAO.update(invoicingDO); + return Boolean.TRUE; + } + + @Override + public InvoicingDTO getInvoicingByShopId(Long shopId) { + if (shopId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + InvoicingDO invoicingDO = invoicingDAO.getByShopId(shopId); + InvoicingDTO invoicingDTO = new InvoicingDTO(); + BeanUtil.copyProperties(invoicingDO, invoicingDTO); + return invoicingDTO; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java index b6ca5574d..2aac00116 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java @@ -206,7 +206,7 @@ public class PreparationServiceImpl implements PreparationService { List shopStageInfo = shopStageInfoDAO.getShopStageInfo(shopId, null); if (CollectionUtils.isNotEmpty(shopStageInfo)) { Map shopStageInfoDOMap = shopStageInfo.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopSubStage, data -> data)); - Boolean contractCompletionFlag = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84.getShopSubStageStatus().equals(shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_8.getShopSubStage()).getShopSubStageStatus()); + Boolean contractCompletionFlag = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_3.getShopSubStageStatus().equals(shopStageInfoDOMap.get(ShopSubStageEnum.SHOP_STAGE_8_5.getShopSubStage()).getShopSubStageStatus()); //都完成了 初始化后续流程数据 if (contractCompletionFlag) { //初始化后续流程数据s diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java index 78e57c90d..96a8190b0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java @@ -171,8 +171,8 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu lineInfoMapper.insertOrUpdate(lineInfoDO); //todo 提交之后先直接到已签约 正常是待审核 shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_84); - //如果加盟合同完成 开始设计阶段与验收阶段 - preparationService.contractAndBuildStoreCompletion(request.getShopId()); + //初始化数据 + shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(),Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_1)); commonService.sendSms(lineInfoDO.getMobile(),SMSMsgEnum.SIGN_CONTRACT); } else { signFranchiseMapper.updateByPrimaryKeySelective(signFranchiseDO); @@ -263,6 +263,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu addSignFranchiseResponse.setRemark(signFranchiseDO.getRemark()); addSignFranchiseResponse.setResign(signFranchiseDO.getResign()); addSignFranchiseResponse.setMobile(signFranchiseDO.getMobile()); + addSignFranchiseResponse.setContractCode(signFranchiseDO.getContractCode()); } else { addSignFranchiseResponse.setMobile(lineInfoDO.getMobile()); } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java index a2b017169..88d0a7aaf 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java @@ -126,6 +126,14 @@ public class DeskController { LoginUserInfo userInfo = CurrentUserHolder.getUser(); return ResponseResult.success(deskService.signingOfFranchiseContractPendingList(pageNumber,pageSize,userInfo)); } + + @ApiOperation("待处理-发票回传") + @GetMapping("/invoiceReturnPendingList") + public ResponseResult> invoiceReturnPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.invoiceReturnPendingList(pageNumber,pageSize,userInfo)); + } @ApiOperation("待处理-开店运营方案") @GetMapping("/openingAndOperationPlanPendingList") public ResponseResult> openingAndOperationPlanPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/InvoicingController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/InvoicingController.java new file mode 100644 index 000000000..965b88342 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/InvoicingController.java @@ -0,0 +1,58 @@ +package com.cool.store.controller.webb; + +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.InvoicingDTO; +import com.cool.store.request.LineListRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.InvoicingService; +import com.cool.store.vo.LineInfoVO; +import com.cool.store.vo.LineListVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2024/12/31 14:02 + * @Version 1.0 + */ +@RestController +@RequestMapping("/pc/invoicing") +@Api("发票") +public class InvoicingController { + + @Resource + InvoicingService invoicingService; + + + @ApiOperation("提交发票") + @PostMapping("/submitInvoicing") + public ResponseResult submitInvoicing(@RequestBody InvoicingDTO invoicingDTO) { + LoginUserInfo user = CurrentUserHolder.getUser(); + return ResponseResult.success(invoicingService.addInvoicing(invoicingDTO,user)); + } + + @ApiOperation("编辑发票") + @PostMapping("/editInvoicing") + public ResponseResult editInvoicing(@RequestBody InvoicingDTO invoicingDTO) { + LoginUserInfo user = CurrentUserHolder.getUser(); + return ResponseResult.success(invoicingService.editInvoicing(invoicingDTO,user)); + } + + @ApiOperation("查询发票") + @GetMapping("/getInvoicingByShopId") + @ApiImplicitParams({ + @ApiImplicitParam(name = "shopId", value = "门店shopId", required = true) + }) + public ResponseResult getInvoicingByShopId(@RequestParam("lineId")Long shopId) { + return ResponseResult.success(invoicingService.getInvoicingByShopId(shopId)); + } + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOcrController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOcrController.java new file mode 100644 index 000000000..2dc03e278 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOcrController.java @@ -0,0 +1,39 @@ +package com.cool.store.controller.webb; + +import com.cool.store.dto.ocr.InvoiceDTO; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.AliyunService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2025/1/2 9:46 + * @Version 1.0 + */ +@RestController +@RequestMapping({"/pc/orc"}) +@Slf4j +@Api(tags = "PC文字识别OCR") +public class PCOcrController { + + + @Resource + AliyunService aliyunService; + + @GetMapping(path = "/getInvoice") + @ApiOperation("根据发票解析获取数据") + public ResponseResult getInvoice(@RequestParam(value = "imageUrl")String imageUrl){ + return ResponseResult.success(aliyunService.getRecognizeInvoiceWithOptions(imageUrl)); + } + + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniInvoicingController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniInvoicingController.java new file mode 100644 index 000000000..5b5fca2b6 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniInvoicingController.java @@ -0,0 +1,41 @@ +package com.cool.store.controller.webc; + +import com.cool.store.dto.InvoicingDTO; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.InvoicingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2024/12/31 14:13 + * @Version 1.0 + */ +@RestController +@RequestMapping("/mini/invoicing") +@Api("小程序发票") +public class MiniInvoicingController { + + @Resource + InvoicingService invoicingService; + + + + @ApiOperation("小程序查询发票详情") + @GetMapping("/getInvoicingByShopId") + @ApiImplicitParams({ + @ApiImplicitParam(name = "shopId", value = "门店shopId", required = true) + }) + public ResponseResult getInvoicingByShopId(@RequestParam("lineId")Long shopId) { + return ResponseResult.success(invoicingService.getInvoicingByShopId(shopId)); + } + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/OcrController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/OcrController.java index 9da5e9048..8d86dff14 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/OcrController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/OcrController.java @@ -1,5 +1,6 @@ package com.cool.store.controller.webc; +import com.cool.store.dto.ocr.InvoiceDTO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.IDCardSideEnum; import com.cool.store.exception.ServiceException; @@ -64,4 +65,10 @@ public class OcrController { throw new ServiceException(ErrorCodeEnum.FOOD_BUSINESS_LICENSE_PARSE_FAIL); } } + + @GetMapping(path = "/getInvoice") + @ApiOperation("根据发票解析获取数据") + public ResponseResult getInvoice(@RequestParam(value = "imageUrl")String imageUrl){ + return ResponseResult.success(aliyunService.getRecognizeInvoiceWithOptions(imageUrl)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 6b9dacf93..f50b2a5f6 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -3,15 +3,22 @@ package com.cool.store.controller.webc; import com.alibaba.fastjson.JSONObject; import com.cool.store.dao.*; import com.cool.store.dto.OpenCityDTO; +import com.cool.store.dto.ocr.InvoiceDTO; import com.cool.store.entity.*; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.IDCardSideEnum; +import com.cool.store.exception.ApiException; +import com.cool.store.exception.ServiceException; import com.cool.store.job.XxlJobHandler; import com.cool.store.mapper.HyOpenAreaInfoMapper; import com.cool.store.request.xfsgFirstOrderListRequest; import com.cool.store.response.ResponseResult; import com.cool.store.response.xfsgFirstOderListResponse; +import com.cool.store.service.AliyunService; import com.cool.store.service.CoolStoreStartFlowService; import com.cool.store.service.RegionService; import com.cool.store.utils.poi.ExcelUtil; +import com.cool.store.utils.poi.StringUtils; import com.cool.store.vo.RegionPathNameVO; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -192,4 +199,5 @@ public class TestController { xxlJobHandler.threeAcceptanceBookingMessage(); return ResponseResult.success(); } + }