提交发票修改流程

This commit is contained in:
2026-03-02 08:23:19 +08:00
parent 1be18e2ff5
commit 572e9a443f
133 changed files with 1599 additions and 44 deletions

BIN
.image/Java监控.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
.image/MySQL.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
.image/OA请假-列表.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
.image/OA请假-发起.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
.image/OA请假-详情.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
.image/Redis.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
.image/admin-uniapp/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
.image/admin-uniapp/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
.image/admin-uniapp/03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
.image/admin-uniapp/04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
.image/admin-uniapp/05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
.image/admin-uniapp/06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
.image/admin-uniapp/07.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
.image/admin-uniapp/08.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
.image/admin-uniapp/09.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
.image/个人中心.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
.image/代码生成.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
.image/令牌管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
.image/任务日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
.image/商户信息.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
.image/在线用户.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
.image/字典数据.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
.image/字典类型.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
.image/定时任务.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
.image/岗位管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
.image/应用管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
.image/操作日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
.image/支付订单.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

BIN
.image/敏感词.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
.image/数据库文档.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
.image/文件管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
.image/文件管理2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
.image/文件配置.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
.image/日志中心.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
.image/流程表单.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
.image/生成效果.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
.image/用户分组.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
.image/用户管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
.image/登录.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
.image/登录日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
.image/短信日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
.image/短信模板.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

BIN
.image/短信渠道.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
.image/租户套餐.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
.image/租户管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
.image/系统接口.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
.image/菜单管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
.image/表单构建.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
.image/角色管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
.image/访问日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
.image/退款订单.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
.image/通知公告.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
.image/部门管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
.image/配置管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
.image/链路追踪.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
.image/错误日志.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
.image/错误码管理.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
.image/首页.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -68,5 +68,30 @@
<version>2.2.0-jdk8-snapshot</version>
<scope>compile</scope>
</dependency>
<!-- Thymeleaf 模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- OpenHTMLToPDF - HTML转PDF -->
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-svg-support</artifactId>
<version>1.0.10</version>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-infra-biz</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
</project>

View File

@@ -30,7 +30,7 @@ public class TireLoginRespVO{
@Schema(description = "门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11176")
@ExcelProperty("门店ID")
private Long storeId;
private String storeId;
@Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11178")
@ExcelProperty("仓库编号")

View File

@@ -1,9 +1,15 @@
package cn.iocoder.yudao.module.car.controller.admin.renewalorder;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import com.google.common.collect.Lists;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
@@ -18,6 +24,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.enums.UserTypeEnum.ADMIN;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
@@ -53,6 +61,22 @@ public class RenewalOrderController {
return success(true);
}
@PostMapping("/generate-contract")
@Operation(summary = "生成在线合同 PDF 并上传(回写 contractUrl")
@Parameter(name = "id", description = "订单编号", required = true)
@PreAuthorize("@ss.hasPermission('car:renewal-order:update')")
public CommonResult<String> generateContract(@RequestParam("id") Long id) {
return success(renewalOrderService.generateContract(id));
}
@GetMapping("/generate-contract-html")
@Operation(summary = "生成合同 HTML用于预览")
@Parameter(name = "id", description = "订单编号", required = true)
@PreAuthorize("@ss.hasPermission('car:renewal-order:query')")
public CommonResult<String> generateContractHtml(@RequestParam("id") Long id) {
return success(renewalOrderService.generateContractHtml(id));
}
@DeleteMapping("/delete")
@Operation(summary = "删除车辆续保订单")
@Parameter(name = "id", description = "编号", required = true)
@@ -70,15 +94,28 @@ public class RenewalOrderController {
RenewalOrderDO renewalOrder = renewalOrderService.getRenewalOrder(id);
return success(BeanUtils.toBean(renewalOrder, RenewalOrderRespVO.class));
}
@Resource
private PermissionService permissionService;
@GetMapping("/page")
@Operation(summary = "获得车辆续保订单分页")
@PreAuthorize("@ss.hasPermission('car:renewal-order:query')")
public CommonResult<PageResult<RenewalOrderRespVO>> getRenewalOrderPage(@Valid RenewalOrderPageReqVO pageReqVO) {
public CommonResult<PageResult<RenewalOrderRespVO>> getRenewalOrderPage(
@Valid RenewalOrderPageReqVO pageReqVO) {
Long userId = SecurityFrameworkUtils.getLoginUserId();
boolean isTenantAdmin = permissionService.hasAnyRoles(userId, "tenant_admin");
if (!isTenantAdmin) {
pageReqVO.setCreator(String.valueOf(userId));
}
PageResult<RenewalOrderDO> pageResult = renewalOrderService.getRenewalOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RenewalOrderRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出车辆续保订单 Excel")
@PreAuthorize("@ss.hasPermission('car:renewal-order:export')")

View File

@@ -96,15 +96,48 @@ public class RenewalOrderPageReqVO extends PageParam {
@Schema(description = "合同备注", example = "你说的对")
private String contractRemark;
private String contractUrl;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
private String creator;
private Long storeId;
private String storeName;
private String invoiceUrl;
private String productType;
@Schema(description = "客户签名")
private String customerSignatureUrl;
@Schema(description = "身份证正面")
private String idCardFrontUrl;
@Schema(description = "身份证反面")
private String idCardBackUrl;
@Schema(description = "行驶证")
private String drivingLicenseUrl;
@Schema(description = "购车发票多张JSON字符串")
private List<String> carInvoiceUrls;
@Schema(description = "购置税发票多张JSON字符串")
private List<String> purchaseTaxInvoiceUrls;
@Schema(description = "商业险保单多张JSON字符串")
private List<String> businessInsurancePolicyUrls;
@Schema(description = "合格证")
private String certificateOfConformityUrl;
@Schema(description = "里程表照片")
private String odometerPhotoUrl;
@Schema(description = "车名牌照片")
private String nameplatePhotoUrl;
}

View File

@@ -122,6 +122,7 @@ public class RenewalOrderRespVO {
@Schema(description = "合同备注", example = "你说的对")
@ExcelProperty("合同备注")
private String contractRemark;
private String contractUrl;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@@ -132,5 +133,45 @@ public class RenewalOrderRespVO {
private String storeName;
private String invoiceUrl;
private String productType;
@Schema(description = "客户签名")
@ExcelProperty("客户签名")
private String customerSignatureUrl;
@Schema(description = "身份证正面")
@ExcelProperty("身份证正面")
private String idCardFrontUrl;
@Schema(description = "身份证反面")
@ExcelProperty("身份证反面")
private String idCardBackUrl;
@Schema(description = "行驶证")
@ExcelProperty("行驶证")
private String drivingLicenseUrl;
@Schema(description = "购车发票(多张)")
@ExcelProperty("购车发票")
private List<String> carInvoiceUrls;
@Schema(description = "购置税发票(多张)")
@ExcelProperty("购置税发票")
private List<String> purchaseTaxInvoiceUrls;
@Schema(description = "商业险保单(多张)")
@ExcelProperty("商业险保单")
private List<String> businessInsurancePolicyUrls;
@Schema(description = "合格证")
@ExcelProperty("合格证")
private String certificateOfConformityUrl;
@Schema(description = "里程表照片")
@ExcelProperty("里程表照片")
private String odometerPhotoUrl;
@Schema(description = "车名牌照片")
@ExcelProperty("车名牌照片")
private String nameplatePhotoUrl;
}

View File

@@ -94,6 +94,7 @@ public class RenewalOrderSaveReqVO {
@Schema(description = "合同备注", example = "你说的对")
private String contractRemark;
private String contractUrl;
private Long storeId;
@@ -101,4 +102,35 @@ public class RenewalOrderSaveReqVO {
private String invoiceUrl;
private String productType;
@Schema(description = "客户签名")
private String customerSignatureUrl;
@Schema(description = "身份证正面")
private String idCardFrontUrl;
@Schema(description = "身份证反面")
private String idCardBackUrl;
@Schema(description = "行驶证")
private String drivingLicenseUrl;
@Schema(description = "购车发票(多张)")
private List<String> carInvoiceUrls;
@Schema(description = "购置税发票(多张)")
private List<String> purchaseTaxInvoiceUrls;
@Schema(description = "商业险保单(多张)")
private List<String> businessInsurancePolicyUrls;
@Schema(description = "合格证")
private String certificateOfConformityUrl;
@Schema(description = "里程表照片")
private String odometerPhotoUrl;
@Schema(description = "车名牌照片")
private String nameplatePhotoUrl;
}

View File

@@ -79,6 +79,17 @@ public class RenewalProductController {
return success(BeanUtils.toBean(pageResult, RenewalProductRespVO.class));
}
@GetMapping("/findByProductType")
@Operation(summary = "获得车辆续保产品信息")
@PreAuthorize("@ss.hasPermission('car:renewal-product:query')")
public CommonResult<List<RenewalProductRespVO>> findByProductType() {
// 调用服务层的方法,查询所有符合条件的记录
List<RenewalProductDO> list = renewalProductService.findByProductType();
// 返回成功结果,转换为 VO 类型
return success(BeanUtils.toBean(list, RenewalProductRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出车辆续保产品信息 Excel")
@PreAuthorize("@ss.hasPermission('car:renewal-product:export')")

Some files were not shown because too many files have changed in this diff Show More