From 150b709b74d33656c25af075442af3425c3d6f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A3=E6=96=B0?= Date: Wed, 13 May 2026 08:50:21 +0000 Subject: [PATCH] Merge #136 into master from cc_20260508_adjustment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat:费用单费用调整单合并 * cc_20260508_adjustment: (20 commits squashed) - feat:费用单调整 - feat:费用调整 - feat:新增审批 - feat:费用调整单 - feat:调整单 - feat:自动分账 - feat:填写添加门店 - feat:流水查询条件 - Merge branch 'master' into cc_20260508_adjustment - feat:费用流水筛选条件 - feat:getAdjustAmount - feat:提现申请单导出 - feat:提现申请单导出 状态 - feat:提现申请单导出 状态 - Merge branch 'cc_20260513_withdrawApplication_export' into cc_20260508_adjustment # Conflicts: # coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/WithdrawApplicationDTO.java - feat:提现申请单导出 状态 - feat:导出 - feat:认款完成状态的费用单和调整单,若存在关联的费用分账单,不允许删除,未关联分账单的可以删除 - feat:费用单费用调整单合并 - feat:费用单费用调整单合并 Signed-off-by: 正新 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/136 --- .../cool/store/constants/RedisConstant.java | 5 + .../com/cool/store/enums/ErrorCodeEnum.java | 1 + .../com/cool/store/enums/FileTypeEnum.java | 3 +- .../enums/fees/AllocationPayStatusEnum.java | 29 +++- .../store/enums/wallet/DocStatusEnum.java | 8 + .../store/dao/WithdrawApplicationDAO.java | 7 + .../mapper/WithdrawApplicationMapper.java | 5 + .../mapper/AdjustmentOrderMapper.xml | 6 + .../mapper/WithdrawApplicationMapper.xml | 26 ++- .../dto/wallet/WithdrawApplicationDTO.java | 48 ++++++ .../cool/store/entity/AdjustmentOrderDO.java | 4 + .../store/entity/WithdrawApplicationDO.java | 12 ++ .../request/AdjustmentApprovalRequest.java | 26 +++ .../request/AdjustmentOrderPageRequest.java | 3 + .../request/WithdrawApplicationRequest.java | 6 + .../wallet/CoolTradeRecodePageRequest.java | 5 + .../wallet/TradeRecodePageRequest.java | 2 + .../response/AdjustmentOrderResponse.java | 30 +++- .../response/WithdrawApplicationResponse.java | 9 + .../cool/store/http/WalletHttpClientRest.java | 4 +- .../store/service/AdjustmentOrderService.java | 6 + .../store/service/ExportRealizeService.java | 7 + .../com/cool/store/service/ExportService.java | 16 +- .../impl/AdjustmentOrderServiceImpl.java | 157 ++++++++++++++++-- .../impl/ExportRealizeServiceImpl.java | 33 +++- .../store/service/impl/ExportServiceImpl.java | 57 ++++--- .../impl/WithdrawApplicationServiceImpl.java | 19 +++ .../wallet/impl/WalletServiceImpl.java | 6 + .../webb/AdjustmentOrderController.java | 6 + .../controller/webb/ExportController.java | 12 +- 30 files changed, 489 insertions(+), 69 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentApprovalRequest.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index bbde7df68..db3ac1326 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -395,6 +395,11 @@ public class RedisConstant { */ public static final String SPLIT_ORDER_EXPORT_LOCK = "split_order_export_lock"; + /** + * 提现申请导出锁 + */ + public static final String WITHDRAW_APPLICATION_EXPORT_LOCK = "withdraw_application_export_lock"; + /** * 钱包分账公司配置-招商分部 */ 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 15c16d20b..34ab01c82 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 @@ -399,6 +399,7 @@ public enum ErrorCodeEnum { WITHDRAW_APPLY_NOT_EXIST(1621011, "提现申请单不存在!", null), WITHDRAW_ING(1621012, "提现中,请勿重复分账!", null), WALLET_BALANCE_INSUFFICIENT(1621013, "钱包余额不足!", null), + WALLET_OPEN_ACCOUNT_NO_BALANCE(1621014,"认款失败,该门店钱包余额不足!",null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java index 184d17920..d7b03be10 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java @@ -35,9 +35,10 @@ public enum FileTypeEnum { MY_POINT_EXPORT("myPointExport", "我的铺位管理列表"), ORDER_DEVICE_DETAIL_EXPORT("orderDeviceDetailExport", "订单设备明细导出"), TP_SCORE_JOURNAL_EXPORT("tpScoreJournalExport", "十二分制积分流水导出"), - ADJUSTMENT_ORDER_EXPORT("adjustmentOrderExport", "费用调整单导出"), + ADJUSTMENT_ORDER_EXPORT("adjustmentOrderExport", "费用单据导出"), EXPENSE_ORDER_EXPORT("expenseOrderExport", "费用单导出"), SPLIT_ORDER_EXPORT("splitOrderExport", "分账单导出"), + WITHDRAW_APPLICATION_EXPORT("withdrawApplicationExport", "提现申请导出"), ; private String fileType; private String desc; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java index 742fb19e0..5c66b0fb6 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/fees/AllocationPayStatusEnum.java @@ -3,6 +3,10 @@ package com.cool.store.enums.fees; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 平安钱包缴费转账状态枚举类 @@ -15,17 +19,23 @@ import lombok.Getter; @AllArgsConstructor public enum AllocationPayStatusEnum { - PAID(1, "已支付"), - FAIL(2, "支付失败"), - PAYING(3, "支付中"), - CANCEL(4, "已取消"), - UNPAID(5, "未支付"), + PAID(1, "已支付","提现成功"), + FAIL(2, "支付失败","提现失败"), + PAYING(3, "支付中","提现中"), + CANCEL(4, "已取消","已取消"), + UNPAID(5, "未支付","未提现"), ; private final Integer status; private final String desc; + private final String otherDesc; + + public static List getAllStatus(){ + return Arrays.stream(AllocationPayStatusEnum.values()).map(AllocationPayStatusEnum::getStatus).collect(Collectors.toList()); + } + public static String getDescByStatus(Integer status) { for (AllocationPayStatusEnum value : values()) { if (value.status.equals(status)) { @@ -34,4 +44,13 @@ public enum AllocationPayStatusEnum { } return ""; } + + public static String getOtherDescByStatus(Integer status) { + for (AllocationPayStatusEnum value : values()) { + if (value.status.equals(status)) { + return value.otherDesc; + } + } + return ""; + } } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/DocStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/DocStatusEnum.java index c95e250ea..e67fd90f3 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/DocStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/wallet/DocStatusEnum.java @@ -1,5 +1,8 @@ package com.cool.store.enums.wallet; +import java.util.Arrays; +import java.util.List; + /** * @Auther zx_szh * @Date 2026/4/9 09:35 @@ -8,7 +11,9 @@ package com.cool.store.enums.wallet; public enum DocStatusEnum { //10-待充值/20-已充值待认款/30-认款完成/40-分部分账/50-分账完成 + DOC_STATUS_05(5,"待审批"), DOC_STATUS_1(10,"待充值"), + DOC_STATUS_15(15,"审批未通过"), DOC_STATUS_2(20,"已充值待认款"), DOC_STATUS_3(30,"认款完成"), DOC_STATUS_4(40,"部分分账"), @@ -32,6 +37,9 @@ public enum DocStatusEnum { return desc; } + public static List getCanDeleteStatus(){ + return Arrays.asList(DOC_STATUS_05.getStatus(),DOC_STATUS_1.getStatus(),DOC_STATUS_2.getStatus()); + } public static DocStatusEnum fromStatus(Integer status) { for (DocStatusEnum item : values()) { diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/WithdrawApplicationDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/WithdrawApplicationDAO.java index d18f1a51a..3d58fe1e8 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/WithdrawApplicationDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/WithdrawApplicationDAO.java @@ -58,6 +58,13 @@ public class WithdrawApplicationDAO { return withdrawApplicationMapper.pageQuery(request); } + /** + * 查询总数 + */ + public Long count(WithdrawApplicationPageRequest request) { + return withdrawApplicationMapper.count(request); + } + /** * 根据提现单号查询 */ diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/WithdrawApplicationMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/WithdrawApplicationMapper.java index fd43f0011..0998934c5 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/WithdrawApplicationMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/WithdrawApplicationMapper.java @@ -17,4 +17,9 @@ public interface WithdrawApplicationMapper extends Mapper * 分页查询 */ List pageQuery(@Param("request") WithdrawApplicationPageRequest request); + + /** + * 查询总数 + */ + Long count(@Param("request") WithdrawApplicationPageRequest request); } diff --git a/coolstore-partner-dao/src/main/resources/mapper/AdjustmentOrderMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/AdjustmentOrderMapper.xml index fbb41db38..21fac9143 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/AdjustmentOrderMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/AdjustmentOrderMapper.xml @@ -97,6 +97,9 @@ and a.expense_sheet_type = #{request.expenseSheetType} + + and a.create_user_id = #{request.createUserId} + AND b.region_path LIKE CONCAT('%/', #{regionId}, '/%') @@ -149,6 +152,9 @@ and a.expense_sheet_type = #{request.expenseSheetType} + + and a.create_user_id = #{request.createUserId} + AND b.region_path LIKE CONCAT('%/', #{regionId}, '/%') diff --git a/coolstore-partner-dao/src/main/resources/mapper/WithdrawApplicationMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/WithdrawApplicationMapper.xml index 0c2e64556..1da617a70 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/WithdrawApplicationMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/WithdrawApplicationMapper.xml @@ -15,7 +15,9 @@ fail_reason AS failReason, create_user_id AS createUserId, create_time AS createTime, - update_time AS updateTime + update_time AS updateTime, + relate_store_id AS relateStoreId, + remark FROM zxjp_withdraw_application WHERE 1=1 @@ -36,4 +38,26 @@ ORDER BY create_time DESC + + + diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/WithdrawApplicationDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/WithdrawApplicationDTO.java index 64769a070..3fd84044b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/WithdrawApplicationDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wallet/WithdrawApplicationDTO.java @@ -1,5 +1,9 @@ package com.cool.store.dto.wallet; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.cool.store.enums.fees.AllocationPayStatusEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,39 +21,83 @@ public class WithdrawApplicationDTO { private static final long serialVersionUID = 1L; @ApiModelProperty("主键ID") + @ExcelIgnore private Long id; @ApiModelProperty("提现申请单号") + @ExcelProperty(value = "提现申请单号", order = 1) + @ColumnWidth(30) private String withdrawNo; @ApiModelProperty("提现账户名称") + @ExcelProperty(value = "提现账户名称", order = 2) + @ColumnWidth(30) private String accountName; @ApiModelProperty("提现金额") + @ExcelProperty(value = "提现金额", order = 3) + @ColumnWidth(30) private BigDecimal amount; @ApiModelProperty("到账银行卡号") + @ExcelProperty(value = "到账银行卡号", order = 4) + @ColumnWidth(30) private String bankCardNo; @ApiModelProperty("银行所属银行") + @ExcelProperty(value = "银行所属银行", order = 5) + @ColumnWidth(30) private String bankName; @ApiModelProperty("状态(1-已分账 2-分账失败 3-分账中 5-待分账)") + @ExcelIgnore private Integer status; + @ApiModelProperty("状态名称") + @ExcelProperty(value = "状态", order = 6) + @ColumnWidth(30) + private String statusName; + @ApiModelProperty("失败原因") + @ExcelProperty(value = "失败原因", order = 7) + @ColumnWidth(30) private String failReason; + @ApiModelProperty("门店ID") + @ExcelIgnore + private String relateStoreId; + + @ApiModelProperty("门店名称") + @ExcelProperty(value = "门店名称", order = 8) + @ColumnWidth(30) + private String relateStoreName; + + @ApiModelProperty("备注") + @ExcelProperty(value = "备注", order = 9) + @ColumnWidth(30) + private String remark; + @ApiModelProperty("创建人") + @ExcelIgnore private String createUserId; @ApiModelProperty("创建人姓名") + @ExcelProperty(value = "创建人姓名", order = 10) + @ColumnWidth(30) private String createUserName; @ApiModelProperty("创建时间") + @ExcelProperty(value = "创建时间", order = 11) + @ColumnWidth(30) private Date createTime; @ApiModelProperty("更新时间") + @ExcelIgnore private Date updateTime; + + + public String getStatusName() { + return AllocationPayStatusEnum.getOtherDescByStatus(status); + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/AdjustmentOrderDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/AdjustmentOrderDO.java index 874fba71c..d6d463c03 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/AdjustmentOrderDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/AdjustmentOrderDO.java @@ -104,4 +104,8 @@ public class AdjustmentOrderDO { @ApiModelProperty("支付时间") @Column(name = "pay_time") private Date payTime; + + @ApiModelProperty("拒绝原因") + @Column(name = "reject_reason") + private String rejectReason; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/WithdrawApplicationDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/WithdrawApplicationDO.java index ebd4cb8f6..23e9db3de 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/WithdrawApplicationDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/WithdrawApplicationDO.java @@ -88,4 +88,16 @@ public class WithdrawApplicationDO implements Serializable { */ @Column(name = "update_time") private Date updateTime; + + /** + * 门店ID + */ + @Column(name = "relate_store_id") + private String relateStoreId; + + /** + * 备注 + */ + @Column(name = "remark") + private String remark; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentApprovalRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentApprovalRequest.java new file mode 100644 index 000000000..bc31b89a7 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentApprovalRequest.java @@ -0,0 +1,26 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 调整单审批请求 + */ +@Data +public class AdjustmentApprovalRequest implements Serializable { + + @ApiModelProperty("调整单ID") + @NotNull(message = "调整单ID不能为空") + private Long id; + + @ApiModelProperty("审批结果 1-通过 2-拒绝") + @NotNull(message = "审批结果不能为空") + private Integer approvalResult; + + @ApiModelProperty("拒绝原因(拒绝时必填)") + private String rejectReason; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentOrderPageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentOrderPageRequest.java index b316000fe..f17da0614 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentOrderPageRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AdjustmentOrderPageRequest.java @@ -43,6 +43,9 @@ public class AdjustmentOrderPageRequest extends PageBasicInfo implements Seriali @ApiModelProperty("认领结束时间") private Date claimEndTime; + @ApiModelProperty("创建人ID") + private String createUserId; + private String storeId; private List regionIds; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/WithdrawApplicationRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/WithdrawApplicationRequest.java index ffce97b24..e67b2fbac 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/WithdrawApplicationRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/WithdrawApplicationRequest.java @@ -35,4 +35,10 @@ public class WithdrawApplicationRequest implements Serializable { @ApiModelProperty(value = "提现账户", required = true) @NotBlank(message = "提现账户不能为空") private String accountNo; + + @ApiModelProperty(value = "门店ID") + private String relateStoreId; + + @ApiModelProperty(value = "备注") + private String remark; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/CoolTradeRecodePageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/CoolTradeRecodePageRequest.java index a0b45d602..8c6d7899c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/CoolTradeRecodePageRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/CoolTradeRecodePageRequest.java @@ -20,10 +20,14 @@ public class CoolTradeRecodePageRequest extends PageBasicInfo { private Integer walletType; @ApiModelProperty(value = "关键字(账户名称,账户编号,业务系统付款单号,提现银行卡号)",required = true) private String keyword; + @ApiModelProperty(value = "1.转账 2.提现 3.充值",required = false) + private Integer tradeType; @ApiModelProperty(value = "关键字(门店编号,门店名称)",required = true) private String storeKeyword; @ApiModelProperty(value = "费用科目",required = true) private Integer feeItemId; + @ApiModelProperty(value = "费用科目Code",required = false) + private String expenseTypeCode; @ApiModelProperty(value = "组织ID",required = false,hidden = true) private Long orgId; @@ -37,6 +41,7 @@ public class CoolTradeRecodePageRequest extends PageBasicInfo { target.setFeeItemId(this.getFeeItemId()); target.setCurrentPage(this.getPageNum()); target.setPageSize(this.getPageSize()); + target.setTradeType(this.getTradeType()); return target; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/TradeRecodePageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/TradeRecodePageRequest.java index a5e16cad1..922a6d1d6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/TradeRecodePageRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/wallet/TradeRecodePageRequest.java @@ -21,6 +21,8 @@ public class TradeRecodePageRequest { private String keyword; @ApiModelProperty(value = "关键字(门店编号,门店名称)",required = true) private String storeKeyword; + @ApiModelProperty(value = "1.转账 2.提现 3.充值",required = false) + private Integer tradeType; @ApiModelProperty(value = "费用科目",required = true) private Integer feeItemId; @ApiModelProperty(value = "当前页码",required = true) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/AdjustmentOrderResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/AdjustmentOrderResponse.java index 166ca2074..19134d08f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/AdjustmentOrderResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/AdjustmentOrderResponse.java @@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.cool.store.annotation.DictField; import com.cool.store.converter.StringListConverter; +import com.cool.store.enums.ExpenseSheetTypeEnum; import com.cool.store.enums.wallet.AdjustTypeEnum; import com.cool.store.enums.wallet.DocStatusEnum; import io.swagger.annotations.ApiModelProperty; @@ -23,6 +24,15 @@ public class AdjustmentOrderResponse implements Serializable { @ExcelIgnore private Long id; + @ApiModelProperty("费用单类型 1-费用单 2-调整单") + @ExcelIgnore + private Integer expenseSheetType; + + @ApiModelProperty("单据类型") + @ExcelProperty(value = "单据类型", order = 0) + @ColumnWidth(30) + private String expenseSheetTypeName; + @ApiModelProperty("调整单号") @ExcelProperty(value = "调整单号", order = 1) @ColumnWidth(30) @@ -157,9 +167,10 @@ public class AdjustmentOrderResponse implements Serializable { @ColumnWidth(30) private Date payTime; - @ApiModelProperty("费用单类型 1-费用单 2-调整单") - @ExcelIgnore - private Integer expenseSheetType; + @ApiModelProperty("拒绝原因") + @ExcelProperty(value = "拒绝原因", order = 21) + @ColumnWidth(30) + private String rejectReason; public String getAdjustTypeName() { AdjustTypeEnum adjustTypeEnum = AdjustTypeEnum.fromCode(this.adjustType); @@ -170,4 +181,17 @@ public class AdjustmentOrderResponse implements Serializable { DocStatusEnum docStatusEnum = DocStatusEnum.fromStatus(this.status); return docStatusEnum!=null?docStatusEnum.getDesc():""; } + + public String getExpenseSheetTypeName(){ + ExpenseSheetTypeEnum expenseSheetTypeEnum = ExpenseSheetTypeEnum.getByCode(this.expenseSheetType); + return expenseSheetTypeEnum!=null?expenseSheetTypeEnum.getDesc():""; + } + + public BigDecimal getAdjustAmount() { + if (this.adjustType!=null && this.adjustType==2){ + return BigDecimal.ZERO.subtract(this.adjustAmount); + } + return this.adjustAmount; + } + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/WithdrawApplicationResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/WithdrawApplicationResponse.java index 387841ca5..3992e9a4c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/WithdrawApplicationResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/WithdrawApplicationResponse.java @@ -50,4 +50,13 @@ public class WithdrawApplicationResponse implements Serializable { @ApiModelProperty("更新时间") private Date updateTime; + + @ApiModelProperty("门店ID") + private String relateStoreId; + + @ApiModelProperty("门店名称") + private String relateStoreName; + + @ApiModelProperty("备注") + private String remark; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/WalletHttpClientRest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/WalletHttpClientRest.java index 078814b1c..56e4576eb 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/http/WalletHttpClientRest.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/WalletHttpClientRest.java @@ -174,7 +174,9 @@ public class WalletHttpClientRest { throw new ServiceException(ErrorCodeEnum.WALLET_API_ERROR, msg); } else if (code == 610 || msg.equals("支付密码不正确")) { throw new ServiceException(ErrorCodeEnum.PASSWORD_ERROR); - } else { + } else if (code == 611) { + throw new ServiceException(ErrorCodeEnum.WALLET_OPEN_ACCOUNT_NO_BALANCE); + }else { throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, "code: " + code + ", msg: " + msg); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/AdjustmentOrderService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/AdjustmentOrderService.java index 1a8f51163..b3e459a37 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/AdjustmentOrderService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/AdjustmentOrderService.java @@ -87,5 +87,11 @@ public interface AdjustmentOrderService { */ Long pageCount(AdjustmentOrderPageRequest request,LoginUserInfo user); + /** + * 审批调整单 + * @param request 审批请求 + * @return 是否成功 + */ + Boolean approval(AdjustmentApprovalRequest request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java index 920d3f61c..5202a45fc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java @@ -79,4 +79,11 @@ public interface ExportRealizeService { * @param importTaskDO 导出任务 */ void exportSplitOrder(SplitOrderPageRequest request, ImportTaskDO importTaskDO); + + /** + * 提现申请导出 + * @param request 查询Request + * @param importTaskDO 导出任务 + */ + void exportWithdrawApplication(WithdrawApplicationPageRequest request, ImportTaskDO importTaskDO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java index 34c93869c..1e804b9f5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java @@ -103,14 +103,6 @@ public interface ExportService { */ Long exportAdjustmentOrder(AdjustmentOrderPageRequest request, LoginUserInfo user); - /** - * 费用单导出 - * @param request 查询Request - * @param user 当前用户 - * @return 记录总数 - */ - Long exportExpenseOrder(AdjustmentOrderPageRequest request, LoginUserInfo user); - /** * 分账单导出 * @param request 查询Request @@ -118,4 +110,12 @@ public interface ExportService { * @return 记录总数 */ Long exportSplitOrder(SplitOrderPageRequest request, LoginUserInfo user); + + /** + * 提现流水导出 + * @param request + * @param user + * @return + */ + Long exportWithdrawApplication(WithdrawApplicationPageRequest request, LoginUserInfo user); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AdjustmentOrderServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AdjustmentOrderServiceImpl.java index 112f213d0..1d70754f3 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AdjustmentOrderServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AdjustmentOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.cool.store.service.impl; +import com.alibaba.fastjson.JSONObject; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.*; @@ -10,6 +11,8 @@ import com.cool.store.entity.SplitOrderDO; import com.cool.store.entity.StoreDO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ExpenseSheetTypeEnum; +import com.cool.store.enums.fees.AllocationPayStatusEnum; +import com.cool.store.enums.wallet.AdjustTypeEnum; import com.cool.store.enums.wallet.DocStatusEnum; import com.cool.store.enums.wallet.SplitSourceEnum; import com.cool.store.enums.wallet.SplitTypeEnum; @@ -19,11 +22,10 @@ import com.cool.store.request.wallet.ConfirmRechargeRequest; import com.cool.store.request.wallet.OutStoreIdRequest; import com.cool.store.response.AdjustmentOrderResponse; import com.cool.store.service.AdjustmentOrderService; -import com.cool.store.service.UserAuthMappingService; +import com.cool.store.service.SplitOrderService; import com.cool.store.service.dict.impl.DictService; import com.cool.store.service.wallet.WalletApiService; import com.cool.store.utils.GenerateNoUtil; -import com.cool.store.vo.login.UserLoginVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -39,6 +41,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import static com.cool.store.enums.fees.AllocationPayStatusEnum.*; +import static com.cool.store.enums.fees.WalletFeeItemEnum.*; import static com.cool.store.enums.wallet.DocStatusEnum.*; /** @@ -69,8 +72,13 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { @Resource DictService dictService; - private static final String ADJUSTMENT_ORDER_PREFIX = "TZ"; - private static final String EXPENSE_SHEET_PREFIX = "FY"; + @Resource + SplitOrderService splitOrderService; + + + + private static final String PAYEE_ACCOUNT_NAME = "上海立规装饰设计工程有限公司"; + private static final String PAYEE_ACCOUNT_NO = "422011940168069"; @Override @Transactional(rollbackFor = Exception.class) @@ -82,7 +90,10 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { if (store == null) { throw new ServiceException(ErrorCodeEnum.STORE_IS_EXIST); } - + Integer status = DOC_STATUS_1.getStatus(); + if (request.getAdjustType()!=null && request.getAdjustType()==2){ + status = DOC_STATUS_05.getStatus(); + } AdjustmentOrderDO adjustmentOrder = AdjustmentOrderDO.builder() .adjustmentNo(GenerateNoUtil.generateAdjustmentNo(request.getExpenseSheetType())) .storeId(request.getStoreId()) @@ -97,7 +108,7 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { .expenseSheetType(request.getExpenseSheetType()) .settledAmount(new BigDecimal("0")) .pendingSettlementAmount(request.getAdjustAmount()) - .status(DOC_STATUS_1.getStatus()) + .status(status) .createUserId(userId) .createTime(new Date()) .build(); @@ -119,7 +130,7 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { } // 只有待确认缴费状态才能编辑 - if (!DOC_STATUS_1.getStatus().equals(existing.getStatus())) { + if (!(DOC_STATUS_1.getStatus().equals(existing.getStatus())||DOC_STATUS_05.getStatus().equals(existing.getStatus()))) { throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION); } @@ -155,13 +166,28 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL); } - // 只有待确认缴费状态才能删除 - if (!DOC_STATUS_1.getStatus().equals(existing.getStatus())) { - throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION); + // 待确认缴费状态可以直接删除 + if (DocStatusEnum.getCanDeleteStatus().contains(existing.getStatus())) { + existing.setDeleted(1); + adjustmentOrderDAO.update(existing); + return Boolean.TRUE; } - existing.setDeleted(1); - adjustmentOrderDAO.update(existing); - return Boolean.TRUE; + + // 认款完成状态,检查是否有关联的分账单 + if (DOC_STATUS_3.getStatus().equals(existing.getStatus())) { + List splitOrderDOS = splitOrderDAO.listByRelatedDocNo( + existing.getAdjustmentNo(), + AllocationPayStatusEnum.getAllStatus()); + if (CollectionUtils.isNotEmpty(splitOrderDOS)) { + throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION); + } + existing.setDeleted(1); + adjustmentOrderDAO.update(existing); + return Boolean.TRUE; + } + + // 其他状态不允许删除 + throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION); } @Override @@ -177,10 +203,6 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { return buildResponse(adjustmentOrder); } - @Resource - UserAuthMappingService userAuthMappingService; - @Resource - EnterpriseUserRoleDao enterpriseUserRoleDao; @Override public PageInfo page(AdjustmentOrderPageRequest request, String userId) { @@ -371,9 +393,68 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { log.info("费用调整单认款成功,单号:{},交易流水号:{}", adjustmentOrder.getAdjustmentNo(), request.getTradeNos()); + //查看当前门店是否有账户 + OutStoreIdRequest outStoreIdRequest = new OutStoreIdRequest(); + outStoreIdRequest.setOutStoreId(adjustmentOrder.getStoreId()); + AccountInfoDTO onlineAccountInfo = walletApiService.getOnlineAccountInfo(outStoreIdRequest); + if (onlineAccountInfo==null){ + log.info("费用调整单认款成功_当前门店无网商钱包账户"); + return Boolean.TRUE; + } + //费用单:费用类型为“灯箱广告类(立规) ”、“监控设备类(立规)” ,认款完成自动分账,默认分账到“上海立规装饰设计工程有限公司” + if (autoSplitOrder(adjustmentOrder.getExpenseSheetType(),adjustmentOrder.getExpenseTypeCode(),adjustmentOrder.getAdjustType())){ + StoreDO store = storeDao.getByStoreId(adjustmentOrder.getStoreId()); + GenerateSplitOrderRequest generateSplitOrderRequest = new GenerateSplitOrderRequest(); + generateSplitOrderRequest.setId(update.getId()); + generateSplitOrderRequest.setRemark(store.getStoreName()+adjustmentOrder.getRemark()); + // + generateSplitOrderRequest.setSplitType(SplitTypeEnum.ADD_BY_HAND.getStatus()); + generateSplitOrderRequest.setSplitAmount(adjustmentOrder.getPendingSettlementAmount()); + //收款账户 + generateSplitOrderRequest.setPayeeAccountName(PAYEE_ACCOUNT_NAME); + generateSplitOrderRequest.setPayeeAccountNo(PAYEE_ACCOUNT_NO); + //付款账户 + generateSplitOrderRequest.setPayerAccountName(onlineAccountInfo.getAccountName()); + generateSplitOrderRequest.setPayerAccountNo(onlineAccountInfo.getAccountNo()); + //生成分账单 + String splitOrder = generateSplitOrder(generateSplitOrderRequest); + + SplitOrderDO adjustDO = splitOrderDAO.getBySplitNo(splitOrder); + //确认分账 + splitOrderService.confirmSplitOrder(adjustDO.getId(),userInfo); + } return Boolean.TRUE; } + /** + * 是否自动分账 + * 费用单 广告费或者视频设备费 + * 调整单 广告费或者视频设备费 且是调增 + * @param expenseSheetType + * @param expenseType + * @param adjustType + * @return + */ + private Boolean autoSplitOrder(Integer expenseSheetType, String expenseType, Integer adjustType) { + // 广告费或者视频设备费 + boolean flag = ADVERTISEMENT_FEE.getExpenseType().equals(expenseType) + || VIDEO_DEVICE_FEE.getExpenseType().equals(expenseType); + + if (expenseSheetType == ExpenseSheetTypeEnum.EXPENSE_SHEET.getCode()) { + // 广告费或者视频设备费 自动分账 返回true,其他费用类型手动分账 + return flag; + } + + // 调整单逻辑 + if (expenseSheetType == ExpenseSheetTypeEnum.ADJUSTMENT_SHEET.getCode()) { + // 调整单逻辑:调增 且 广告费/视频设备费 才自动分账 + return adjustType == AdjustTypeEnum.ADJUST_TYPE_1.getCode()&& flag; + } + + // 其他单据类型不分账 + return Boolean.FALSE; + } + @Override public Boolean calculateAmount(String no, String transferAmount) { AdjustmentOrderDO adjustmentOrderDO = adjustmentOrderDAO.getByAdjustmentNo(no); @@ -413,6 +494,47 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { return adjustmentOrderDAO.pageCount(request); } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean approval(AdjustmentApprovalRequest request) { + if (request.getId() == null) { + throw new ServiceException(ErrorCodeEnum.CHANGE_ID_NOT_NULL); + } + + AdjustmentOrderDO adjustmentOrder = adjustmentOrderDAO.getById(request.getId()); + if (adjustmentOrder == null) { + throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL); + } + + // 只有待审批状态才能审批 + if (!DOC_STATUS_05.getStatus().equals(adjustmentOrder.getStatus())) { + throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION); + } + + // 拒绝时必须填写拒绝原因 + if (request.getApprovalResult() == 2 && StringUtils.isBlank(request.getRejectReason())) { + throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE, "拒绝原因不能为空"); + } + + Integer newStatus; + if (request.getApprovalResult() == 1) { + // 审批通过,状态变为待充值 + newStatus = DOC_STATUS_1.getStatus(); + } else { + // 审批拒绝,状态变为审批未通过 + newStatus = DOC_STATUS_15.getStatus(); + } + + AdjustmentOrderDO update = AdjustmentOrderDO.builder() + .id(request.getId()) + .status(newStatus) + .rejectReason(request.getRejectReason()) + .build(); + + int result = adjustmentOrderDAO.update(update); + return result > 0; + } + /** * 构建响应对象 */ @@ -437,6 +559,7 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService { response.setClaimTime(adjustmentOrder.getClaimTime()); response.setContractAttachmentInfo(adjustmentOrder.getContractAttachmentInfo()); response.setPayTime(adjustmentOrder.getPayTime()); + response.setRejectReason(adjustmentOrder.getRejectReason()); // 设置门店信息 if (StringUtils.isNotBlank(adjustmentOrder.getStoreId())) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java index 3e8cd8215..486d09729 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java @@ -8,8 +8,10 @@ import com.cool.store.dao.*; import com.cool.store.dto.*; import com.cool.store.dto.tp.TpScoreJournalExportDTO; import com.cool.store.dto.pre.fry.ApplyManagementDTO; +import com.cool.store.dto.wallet.WithdrawApplicationDTO; import com.cool.store.entity.*; import com.cool.store.enums.*; +import com.cool.store.enums.fees.AllocationPayStatusEnum; import com.cool.store.enums.point.*; import com.cool.store.exception.ServiceException; import com.cool.store.mapper.*; @@ -17,6 +19,8 @@ import com.cool.store.request.*; import com.cool.store.request.order.PCStoreOrderQueryRequest; import com.cool.store.request.tp.TpScoreJournalQueryRequest; import com.cool.store.request.visit.VisitRecordQueryRequest; +import com.cool.store.request.wallet.BillDetailRequest; +import com.cool.store.request.WithdrawApplicationPageRequest; import com.cool.store.request.visit.VisitRecordQueryRequest; import com.cool.store.response.*; import com.cool.store.service.*; @@ -140,6 +144,8 @@ public class ExportRealizeServiceImpl implements ExportRealizeService { AdjustmentOrderService adjustmentOrderService; @Resource SplitOrderService splitOrderService; + @Resource + private WithdrawApplicationService withdrawApplicationService; @Override @Async @@ -955,7 +961,6 @@ public class ExportRealizeServiceImpl implements ExportRealizeService { (pageNum, pageSize) -> { request.setPageNum(pageNum); request.setPageSize(pageSize); - request.setExpenseSheetType(2); PageInfo pageInfo = adjustmentOrderService.page(request,importTaskDO.getCreateUserId()); List list = pageInfo.getList(); dictService.fillDictField(list); @@ -1028,5 +1033,31 @@ public class ExportRealizeServiceImpl implements ExportRealizeService { redisUtilPool.delKey(RedisConstant.SPLIT_ORDER_EXPORT_LOCK); } } + + @Override + @Async("generalThreadPool") + public void exportWithdrawApplication(WithdrawApplicationPageRequest request, ImportTaskDO importTaskDO) { + String url = ""; + try { + url = easyExcelUtil.exportExcelInBatches(WithdrawApplicationDTO.class, + (pageNum, pageSize) -> { + request.setPageNum(pageNum); + request.setPageSize(pageSize); + PageInfo page = withdrawApplicationService.page(request); + List list = page.getList(); + return list; + }, + FileTypeEnum.WITHDRAW_APPLICATION_EXPORT.getDesc(), + FileTypeEnum.WITHDRAW_APPLICATION_EXPORT.getDesc()); + importTaskDO.setStatus(ImportStatusEnum.success.getCode()); + } catch (Exception e) { + log.error("提现申请导出失败", e); + importTaskDO.setStatus(ImportStatusEnum.fail.getCode()); + } finally { + importTaskDO.setFileUrl(url); + importTaskMapper.update(eid, importTaskDO); + redisUtilPool.delKey(RedisConstant.WITHDRAW_APPLICATION_EXPORT_LOCK); + } + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java index b3221cce4..168de4991 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java @@ -8,6 +8,7 @@ import com.cool.store.dao.HyOpenAreaInfoDAO; import com.cool.store.dao.LineInfoDAO; import com.cool.store.dao.PreFryQualificationApplyDAO; import com.cool.store.dao.ShopInfoDAO; +import com.cool.store.dao.WithdrawApplicationDAO; import com.cool.store.dao.order.StoreOrderDAO; import com.cool.store.dao.visit.VisitRecordDAO; import com.cool.store.dto.pre.fry.ApplyManagementDTO; @@ -93,6 +94,8 @@ public class ExportServiceImpl implements ExportService { private AdjustmentOrderService adjustmentOrderService; @Resource private SplitOrderService splitOrderService; + @Resource + private WithdrawApplicationDAO withdrawApplicationDAO; @@ -407,32 +410,7 @@ public class ExportServiceImpl implements ExportService { return count; } - @Override - public Long exportExpenseOrder(AdjustmentOrderPageRequest request, LoginUserInfo user) { - Long count = adjustmentOrderService.pageCount(request,user); - if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) { - throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000); - } - if (Long.valueOf(0).equals(count)) { - log.error("导出数据为空"); - return 0L; - } - boolean lock = redisUtilPool.setNxExpire(RedisConstant.EXPENSE_ORDER_EXPORT_LOCK, RedisConstant.EXPENSE_ORDER_EXPORT_LOCK, 30 * 60 * 1000); - if (!lock) { - throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT); - } - ImportTaskDO importTaskDO = new ImportTaskDO(); - importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode()); - importTaskDO.setFileName(FileTypeEnum.EXPENSE_ORDER_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date())); - importTaskDO.setIsImport(Boolean.FALSE); - importTaskDO.setFileType(FileTypeEnum.EXPENSE_ORDER_EXPORT.getFileType()); - importTaskDO.setCreateUserId(user.getUserId()); - importTaskDO.setCreateTime(new Date().getTime()); - importTaskDO.setCreateName(user.getName()); - importTaskMapper.insert(eid, importTaskDO); - exportRealizeService.exportExpenseOrder(request, importTaskDO); - return count; - } + @Override public Long exportSplitOrder(SplitOrderPageRequest request, LoginUserInfo user) { @@ -461,5 +439,32 @@ public class ExportServiceImpl implements ExportService { return count; } + @Override + public Long exportWithdrawApplication(WithdrawApplicationPageRequest request, LoginUserInfo user) { + Long count = withdrawApplicationDAO.count(request); + if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) { + throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000); + } + if (Long.valueOf(0).equals(count)) { + log.error("导出数据为空"); + return 0L; + } + boolean lock = redisUtilPool.setNxExpire(RedisConstant.WITHDRAW_APPLICATION_EXPORT_LOCK, RedisConstant.WITHDRAW_APPLICATION_EXPORT_LOCK, 30 * 60 * 1000); + if (!lock) { + throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT); + } + ImportTaskDO importTaskDO = new ImportTaskDO(); + importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode()); + importTaskDO.setFileName(FileTypeEnum.WITHDRAW_APPLICATION_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date())); + importTaskDO.setIsImport(Boolean.FALSE); + importTaskDO.setFileType(FileTypeEnum.WITHDRAW_APPLICATION_EXPORT.getFileType()); + importTaskDO.setCreateUserId(user.getUserId()); + importTaskDO.setCreateTime(new Date().getTime()); + importTaskDO.setCreateName(user.getName()); + importTaskMapper.insert(eid, importTaskDO); + exportRealizeService.exportWithdrawApplication(request, importTaskDO); + return count; + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WithdrawApplicationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WithdrawApplicationServiceImpl.java index e6f7b9b27..28ef4d1f6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WithdrawApplicationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WithdrawApplicationServiceImpl.java @@ -5,11 +5,13 @@ import com.cool.store.constants.RedisConstant; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.StoreDao; import com.cool.store.dao.WithdrawApplicationDAO; import com.cool.store.dao.wallet.WalletTradeDAO; import com.cool.store.dto.wallet.AccountWithdrawerDTO; import com.cool.store.dto.wallet.TradeRecordDTO; import com.cool.store.dto.wallet.WithdrawApplicationDTO; +import com.cool.store.entity.StoreDO; import com.cool.store.entity.WithdrawApplicationDO; import com.cool.store.entity.wallet.WalletTradeDO; import com.cool.store.enums.ErrorCodeEnum; @@ -28,6 +30,7 @@ import com.cool.store.utils.RedisUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -65,6 +68,9 @@ public class WithdrawApplicationServiceImpl implements WithdrawApplicationServic @Resource EnterpriseUserDAO enterpriseUserDAO; + @Resource + StoreDao storeDao; + private static final String WITHDRAW_ORDER_PREFIX = "TX"; @Override @@ -77,8 +83,19 @@ public class WithdrawApplicationServiceImpl implements WithdrawApplicationServic .filter(StringUtils::isNotBlank) .collect(Collectors.toSet()); Map userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(userIdList)); + + // 获取门店ID列表并查询门店名称 + Set storeIdList = responses.stream() + .filter(x -> StringUtils.isNotBlank(x.getRelateStoreId())) + .map(WithdrawApplicationDTO::getRelateStoreId) + .collect(Collectors.toSet()); + Map storeNameMap = storeDao.getStoreMapByStoreIds(new ArrayList<>(storeIdList)); responses.stream().forEach(x->{ x.setCreateUserName(userNameMap.get(x.getCreateUserId())); + StoreDO storeDO = storeNameMap.get(x.getRelateStoreId()); + if (storeDO!=null){ + x.setRelateStoreName(storeDO.getStoreName()); + } }); return new PageInfo<>(responses); } @@ -96,6 +113,8 @@ public class WithdrawApplicationServiceImpl implements WithdrawApplicationServic .amount(request.getAmount()) .bankCardNo(request.getBankCardNo()) .bankName(request.getBankName()) + .relateStoreId(request.getRelateStoreId()) + .remark(request.getRemark()) .status(AllocationPayStatusEnum.UNPAID.getStatus()) .createUserId(userId) .createTime(new Date()) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java index 068a91111..fbe04c52d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java @@ -30,6 +30,7 @@ import com.cool.store.mapper.ApplyLicenseMapper; import com.cool.store.request.wallet.*; import com.cool.store.service.UserAuthMappingService; import com.cool.store.service.dict.impl.DictService; +import com.cool.store.service.fees.WalletPayInfoService; import com.cool.store.service.impl.CommonService; import com.cool.store.service.wallet.*; import com.cool.store.utils.BeanUtil; @@ -82,6 +83,7 @@ public class WalletServiceImpl implements WalletService { private final UserAuthMappingService userAuthMappingService; private final CommonService commonService; private final WalletTradeService walletTradeService; + private final WalletPayInfoService walletPayInfoService; @Value("${wallet.org.id}") private Long orgId; @@ -558,6 +560,10 @@ public class WalletServiceImpl implements WalletService { if (orgFlag){ tradeRecodePageRequest.setOrgId(orgId); } + if (StringUtils.isNotEmpty(request.getExpenseTypeCode())){ + tradeRecodePageRequest.setFeeItemId(walletPayInfoService.getFeeItemId(request.getExpenseTypeCode())); + } + TradeRecordListDTO tradeRecordListDTO = walletApiService.getTradeRecordList(tradeRecodePageRequest); return toPageInfo(tradeRecordListDTO.getPageData(), TradeRecordDTO.class, tradeRecordListDTO.getPage()); } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/AdjustmentOrderController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/AdjustmentOrderController.java index dc667a071..21e36fe5f 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/AdjustmentOrderController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/AdjustmentOrderController.java @@ -77,4 +77,10 @@ public class AdjustmentOrderController { public ResponseResult generateSplitOrder(@Valid @RequestBody GenerateSplitOrderRequest request) { return ResponseResult.success(adjustmentOrderService.generateSplitOrder(request)); } + + @PostMapping("/approval") + @ApiOperation("审批调整单") + public ResponseResult approval(@Valid @RequestBody AdjustmentApprovalRequest request) { + return ResponseResult.success(adjustmentOrderService.approval(request)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ExportController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ExportController.java index dba85dc1b..2bf43bf81 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ExportController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ExportController.java @@ -115,15 +115,15 @@ public class ExportController { return ResponseResult.success(exportService.exportAdjustmentOrder(request, CurrentUserHolder.getUser())); } - @PostMapping("/expenseOrderExport") - @ApiOperation("费用单导出") - public ResponseResult expenseOrderExport(@RequestBody AdjustmentOrderPageRequest request) { - return ResponseResult.success(exportService.exportExpenseOrder(request, CurrentUserHolder.getUser())); - } - @PostMapping("/splitOrderExport") @ApiOperation("分账单导出") public ResponseResult splitOrderExport(@RequestBody SplitOrderPageRequest request) { return ResponseResult.success(exportService.exportSplitOrder(request, CurrentUserHolder.getUser())); } + + @PostMapping("/withdrawApplicationExport") + @ApiOperation("提现单导出") + public ResponseResult exportWithdrawApplication(@RequestBody WithdrawApplicationPageRequest request) { + return ResponseResult.success(exportService.exportWithdrawApplication(request, CurrentUserHolder.getUser())); + } }