feat(order): 添加订单成本项详情和付款功能
- 新增订单成本项详情查询接口showOrderCost - 实现订单成本项付款功能payOrderCost - 添加OrderCostShowQry和OrderCostPayCmd数据传输对象 - 在PaymentRecord中关联订单成本项信息 - 优化供应商发票查询逻辑,添加发票ID筛选条件 - 修复付款记录查询中的供应商ID筛选条件 - 添加费用不存在的业务异常码B_BIZ_COST_NOT_FOUND - 优化支付记录编号生成逻辑 - 修复枚举值名称从COST到ORDER_COST的映射 - 添加采购订单成本项目信息到PaymentRecordVO
This commit is contained in:
parent
c4aa2ad5bf
commit
b06a6a1fdd
@ -5,8 +5,11 @@ import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.xunhong.erp.turbo.api.biz.api.OrderCostServiceI;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.PaymentRecordVO;
|
||||
import com.xunhong.erp.turbo.api.rbac.dto.constants.RoleConstant;
|
||||
import com.xunhong.erp.turbo.api.user.api.AdminServiceI;
|
||||
import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry;
|
||||
@ -16,6 +19,7 @@ import com.xunhong.erp.turbo.base.dto.UserSession;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -23,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "OrderCost", description = "订单成本项管理")
|
||||
@RestController("operationOrderCostController")
|
||||
@RequestMapping(value = "/operation")
|
||||
@ -52,6 +57,15 @@ public class OrderCostController {
|
||||
PageDTO<OrderCostVO> page = orderCostService.page(orderCostPageQry);
|
||||
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
||||
}
|
||||
|
||||
@SaCheckLogin
|
||||
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW})
|
||||
@GetMapping("showOrderCost")
|
||||
@Operation(summary = "订单成本项详情", method = "GET")
|
||||
public SingleResponse<OrderCostVO> showOrderCost(@ModelAttribute @Validated OrderCostShowQry orderCostShowQry) {
|
||||
return SingleResponse.of(orderCostService.show(orderCostShowQry));
|
||||
}
|
||||
|
||||
@SaCheckLogin
|
||||
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_UPDATE})
|
||||
@PostMapping(value = "createOrderCost")
|
||||
@ -59,4 +73,12 @@ public class OrderCostController {
|
||||
public SingleResponse<OrderCostVO> createOrderCost(@RequestBody @Validated OrderCostCreateCmd orderCostCreateCmd) {
|
||||
return SingleResponse.of(orderCostService.create(orderCostCreateCmd));
|
||||
}
|
||||
|
||||
@SaCheckLogin
|
||||
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_UPDATE})
|
||||
@PostMapping(value = "payOrderCost")
|
||||
@Operation(summary = "费用付款", method = "POST")
|
||||
public SingleResponse<PaymentRecordVO> payOrderCost(@RequestBody @Validated OrderCostPayCmd orderCostPayCmd) {
|
||||
return SingleResponse.of(orderCostService.pay(orderCostPayCmd));
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ import org.mapstruct.NullValueCheckStrategy;
|
||||
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
|
||||
public interface PaymentRecordAssembler {
|
||||
|
||||
@Mapping(target = "orderCostVO", source = "orderCost")
|
||||
@Mapping(target = "companyVO", source = "company")
|
||||
@Mapping(target = "supplierVO", source = "supplier")
|
||||
@Mapping(target = "paymentTaskVO", source = "paymentTask")
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.xunhong.erp.turbo.biz.app.executor.cmd;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.PaymentRecordVO;
|
||||
import com.xunhong.erp.turbo.biz.app.assembler.PaymentRecordAssembler;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.PaymentRecord;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.OrderCostGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 费用付款执行器
|
||||
*
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class OrderCostPayCmdExe {
|
||||
|
||||
private final OrderCostGateway orderCostGateway;
|
||||
private final PaymentRecordAssembler paymentRecordAssembler;
|
||||
|
||||
public PaymentRecordVO execute(OrderCostPayCmd orderCostPayCmd) {
|
||||
PaymentRecord paymentRecord = orderCostGateway.pay(orderCostPayCmd);
|
||||
|
||||
return paymentRecordAssembler.toPaymentRecordVO(paymentRecord);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.xunhong.erp.turbo.biz.app.executor.query;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
|
||||
import com.xunhong.erp.turbo.biz.app.assembler.OrderCostAssembler;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.OrderCostGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class OrderCostShowQryExe {
|
||||
|
||||
private final OrderCostGateway orderCostGateway;
|
||||
private final OrderCostAssembler orderCostAssembler;
|
||||
|
||||
public OrderCostVO execute(OrderCostShowQry orderCostShowQry) {
|
||||
OrderCost orderCost = orderCostGateway.show(orderCostShowQry);
|
||||
return orderCostAssembler.toOrderCostVO(orderCost);
|
||||
}
|
||||
}
|
||||
@ -2,11 +2,16 @@ package com.xunhong.erp.turbo.biz.app.service;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.api.OrderCostServiceI;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.PaymentRecordVO;
|
||||
import com.xunhong.erp.turbo.base.dto.PageDTO;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderCostCreateCmdExe;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderCostPayCmdExe;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.query.OrderCostPageQryExe;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.query.OrderCostShowQryExe;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
@ -23,6 +28,8 @@ public class OrderCostServiceImpl implements OrderCostServiceI {
|
||||
|
||||
private final OrderCostPageQryExe orderCostPageQryExe;
|
||||
private final OrderCostCreateCmdExe orderCostCreateCmdExe;
|
||||
private final OrderCostShowQryExe orderCostShowQryExe;
|
||||
private final OrderCostPayCmdExe orderCostPayCmdExe;
|
||||
|
||||
@Override
|
||||
public PageDTO<OrderCostVO> page(OrderCostPageQry orderCostPageQry) {
|
||||
@ -33,5 +40,15 @@ public class OrderCostServiceImpl implements OrderCostServiceI {
|
||||
public OrderCostVO create(OrderCostCreateCmd orderCostCreateCmd) {
|
||||
return orderCostCreateCmdExe.execute(orderCostCreateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderCostVO show(OrderCostShowQry orderCostShowQry) {
|
||||
return orderCostShowQryExe.execute(orderCostShowQry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaymentRecordVO pay(OrderCostPayCmd orderCostPayCmd) {
|
||||
return orderCostPayCmdExe.execute(orderCostPayCmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -125,5 +125,10 @@ public class PaymentRecord extends DTO {
|
||||
* 公司
|
||||
*/
|
||||
private Company company;
|
||||
|
||||
/**
|
||||
* 成本项
|
||||
*/
|
||||
private OrderCost orderCost;
|
||||
}
|
||||
|
||||
|
||||
@ -2,8 +2,11 @@ package com.xunhong.erp.turbo.biz.domain.gateway;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.PaymentRecord;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
@ -12,5 +15,9 @@ public interface OrderCostGateway {
|
||||
IPage<OrderCost> page(OrderCostPageQry orderCostPageQry);
|
||||
|
||||
OrderCost save(OrderCostCreateCmd orderCostCreateCmd);
|
||||
|
||||
OrderCost show(OrderCostShowQry orderCostShowQry);
|
||||
|
||||
PaymentRecord pay(OrderCostPayCmd orderCostPayCmd);
|
||||
}
|
||||
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package com.xunhong.erp.turbo.biz.infrastructure.convert;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Order;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PaymentRecordDO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.NullValueCheckStrategy;
|
||||
@ -45,6 +47,7 @@ public interface OrderCostConvert {
|
||||
@Mapping(target = "order", source = "orderDO")
|
||||
OrderCost toOrderCost(OrderCostDO orderCostDO);
|
||||
|
||||
@Mapping(target = "orderVehicleDO", ignore = true)
|
||||
@Mapping(target = "version", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "orderDO", ignore = true)
|
||||
@ -54,4 +57,19 @@ public interface OrderCostConvert {
|
||||
@Mapping(target = "isDelete", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
OrderCostDO toOrderCostDO(OrderCostCreateCmd orderCostCreateCmd);
|
||||
|
||||
@Mapping(target = "version", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "targetType", ignore = true)
|
||||
@Mapping(target = "targetId", ignore = true)
|
||||
@Mapping(target = "supplierDO", ignore = true)
|
||||
@Mapping(target = "paymentTaskId", ignore = true)
|
||||
@Mapping(target = "paymentTaskDO", ignore = true)
|
||||
@Mapping(target = "paymentRecordSn", ignore = true)
|
||||
@Mapping(target = "paymentRecordId", ignore = true)
|
||||
@Mapping(target = "paidState", ignore = true)
|
||||
@Mapping(target = "isDelete", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
@Mapping(target = "companyDO", ignore = true)
|
||||
PaymentRecordDO toPaymentRecordDO(OrderCostPayCmd orderCostPayCmd);
|
||||
}
|
||||
|
||||
@ -15,11 +15,13 @@ import org.mapstruct.NullValueCheckStrategy;
|
||||
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
|
||||
public interface PaymentRecordConvert {
|
||||
|
||||
@Mapping(target = "orderCost", source = "orderCostDO")
|
||||
@Mapping(target = "company", source = "companyDO")
|
||||
@Mapping(target = "paymentTask", source = "paymentTaskDO")
|
||||
@Mapping(target = "supplier", source = "supplierDO")
|
||||
PaymentRecord toPaymentRecord(PaymentRecordDO paymentRecordDO);
|
||||
|
||||
@Mapping(target = "orderCostDO", ignore = true)
|
||||
@Mapping(target = "companyDO", ignore = true)
|
||||
@Mapping(target = "supplierDO", ignore = true)
|
||||
@Mapping(target = "paymentTaskDO", ignore = true)
|
||||
@ -29,6 +31,7 @@ public interface PaymentRecordConvert {
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
PaymentRecordDO toPaymentRecordDO(PaymentRecordCreateCmd paymentRecordCreateCmd);
|
||||
|
||||
@Mapping(target = "orderCostDO", ignore = true)
|
||||
@Mapping(target = "companyDO", ignore = true)
|
||||
@Mapping(target = "supplierDO", ignore = true)
|
||||
@Mapping(target = "paymentTaskDO", ignore = true)
|
||||
|
||||
@ -135,5 +135,19 @@ public class PaymentRecordDO extends BaseDO<PaymentRecordDO> {
|
||||
|
||||
@TableField(exist = false)
|
||||
private CompanyDO companyDO;
|
||||
|
||||
@TableField(exist = false)
|
||||
private OrderCostDO orderCostDO;
|
||||
|
||||
/**
|
||||
* 付款记录编号
|
||||
*
|
||||
* @return 付款记录编号
|
||||
*/
|
||||
public String generatePaymentRecordSn() {
|
||||
// 生成类似 PAY20251105001 格式的编号
|
||||
return "PAY" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE)
|
||||
+ String.format("%03d", System.currentTimeMillis() % 1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -6,21 +6,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.PaymentRecordStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.PaymentTargetTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.exception.BizErrorCode;
|
||||
import com.xunhong.erp.turbo.api.biz.exception.BizException;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.PaymentRecord;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.OrderCostGateway;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.convert.OrderCostConvert;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.CostDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCompanyDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.CostMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderCompanyMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderCostMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.convert.PaymentRecordConvert;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.*;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -44,6 +47,9 @@ public class OrderCostGatewayImpl implements OrderCostGateway {
|
||||
|
||||
private final CostMapper costMapper;
|
||||
|
||||
private final PaymentRecordMapper paymentRecordMapper;
|
||||
private final PaymentRecordConvert paymentRecordConvert;
|
||||
|
||||
|
||||
@Override
|
||||
public IPage<OrderCost> page(OrderCostPageQry orderCostPageQry) {
|
||||
@ -95,5 +101,53 @@ public class OrderCostGatewayImpl implements OrderCostGateway {
|
||||
|
||||
return orderCostConvert.toOrderCost(orderCostDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderCost show(OrderCostShowQry orderCostShowQry) {
|
||||
OrderCostDO orderCostDO = orderCostMapper.selectById(orderCostShowQry.getOrderCostId());
|
||||
if (Objects.isNull(orderCostDO)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
OrderCompanyDO orderCompanyDO = orderCompanyMapper.selectOne(Wrappers.lambdaQuery(OrderCompanyDO.class)
|
||||
.eq(OrderCompanyDO::getOrderId, orderCostDO.getOrderId()));
|
||||
if (Objects.nonNull(orderCompanyDO)) {
|
||||
orderCostDO.setOrderCompanyDO(orderCompanyDO);
|
||||
}
|
||||
|
||||
OrderDO orderDO = orderMapper.selectByOrderId(orderCostDO.getOrderId());
|
||||
if (Objects.nonNull(orderDO)) {
|
||||
orderCostDO.setOrderDO(orderDO);
|
||||
}
|
||||
|
||||
return orderCostConvert.toOrderCost(orderCostDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PaymentRecord pay(OrderCostPayCmd orderCostPayCmd) {
|
||||
// 获取费用详情
|
||||
LambdaQueryWrapper<OrderCostDO> queryWrapper = Wrappers.lambdaQuery(OrderCostDO.class);
|
||||
queryWrapper.eq(OrderCostDO::getOrderCostId, orderCostPayCmd.getOrderCostId());
|
||||
queryWrapper.select(OrderCostDO::getOrderCostId, OrderCostDO::getCostId, OrderCostDO::getPrice, OrderCostDO::getIsPaid);
|
||||
OrderCostDO orderCostDO = orderCostMapper.selectOne(queryWrapper);
|
||||
|
||||
if (Objects.isNull(orderCostDO)) {
|
||||
throw new BizException(BizErrorCode.B_BIZ_COST_NOT_FOUND);
|
||||
}
|
||||
|
||||
PaymentRecordDO paymentRecordDO = orderCostConvert.toPaymentRecordDO(orderCostPayCmd);
|
||||
paymentRecordDO.setPaymentRecordSn(paymentRecordDO.generatePaymentRecordSn());
|
||||
paymentRecordDO.setTargetId(orderCostPayCmd.getOrderCostId());
|
||||
paymentRecordDO.setTargetType(PaymentTargetTypeEnum.ORDER_COST);
|
||||
paymentRecordDO.setPaidState(PaymentRecordStateEnum.PAID);
|
||||
|
||||
orderCostDO.setIsPaid(Boolean.TRUE);
|
||||
orderCostMapper.updateById(orderCostDO);
|
||||
|
||||
paymentRecordMapper.insert(paymentRecordDO);
|
||||
|
||||
return paymentRecordConvert.toPaymentRecord(paymentRecordDO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -204,6 +204,7 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
orderDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> Objects.isNull(orderPackageDO.getOrderSupplierId())).toList());
|
||||
|
||||
Set<Long> invoiceIdList = orderSupplierDOList.stream().map(OrderSupplierDO::getInvoiceId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(invoiceIdList)) {
|
||||
List<SupplierInvoiceDO> supplierInvoiceDOList = supplierInvoiceMapper.selectByIds(invoiceIdList);
|
||||
Map<Long, SupplierInvoiceDO> supplierInvoiceDOMap = supplierInvoiceDOList.stream().collect(Collectors.toMap(SupplierInvoiceDO::getSupplierInvoiceId, Function.identity()));
|
||||
|
||||
@ -215,6 +216,7 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
orderSupplierDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> orderSupplierDO.getOrderSupplierId().equals(orderPackageDO.getOrderSupplierId())).toList());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
orderDO.setOrderSupplierDOList(orderSupplierDOList);
|
||||
|
||||
@ -916,6 +918,15 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成编码
|
||||
*/
|
||||
private String generateInvoiceSn() {
|
||||
// 生成类似 SO20251105001 格式的编号
|
||||
return java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE)
|
||||
+ String.format("%03d", System.currentTimeMillis() % 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理供应商发票信息
|
||||
* 逻辑:
|
||||
@ -936,7 +947,7 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
boolean hasInvoiceImg = CollUtil.isNotEmpty(frontendInvoiceImg);
|
||||
|
||||
// 场景1:前端传了invoiceId,且与数据库中的invoiceId不一致
|
||||
if (frontendInvoiceId != null && !frontendInvoiceId.equals(dbInvoiceId)) {
|
||||
if (frontendInvoiceId != null && !frontendInvoiceId.equals(dbInvoiceId) && frontendInvoiceId > 0) {
|
||||
// 删除旧的发票记录
|
||||
if (dbInvoiceId != null) {
|
||||
supplierInvoiceMapper.deleteById(dbInvoiceId);
|
||||
@ -956,6 +967,7 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
newInvoice.setInvoiceImg(frontendInvoiceImg);
|
||||
newInvoice.setCreatedBy(orderStep2Cmd.getCreatedBy());
|
||||
newInvoice.setCreatedByName(orderStep2Cmd.getCreatedByName());
|
||||
newInvoice.setInvoiceSn("INV" + generateInvoiceSn());
|
||||
|
||||
// 构建 orderSupplierInvoice 列表
|
||||
List<OrderSupplierInvoice> orderSupplierInvoiceList = buildOrderSupplierInvoiceList(supplierDO);
|
||||
|
||||
@ -45,6 +45,7 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
|
||||
public IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry) {
|
||||
LambdaQueryWrapper<OrderSupplierDO> queryWrapper = Wrappers.lambdaQuery(OrderSupplierDO.class);
|
||||
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getInvoiceUpload()), OrderSupplierDO::getInvoiceUpload, orderSupplierPageQry.getInvoiceUpload());
|
||||
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getInvoiceId()), OrderSupplierDO::getInvoiceId, orderSupplierPageQry.getInvoiceId());
|
||||
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getIsPaid()), OrderSupplierDO::getIsPaid, orderSupplierPageQry.getIsPaid());
|
||||
|
||||
queryWrapper.orderByDesc(OrderSupplierDO::getCreatedAt);
|
||||
|
||||
@ -16,14 +16,8 @@ import com.xunhong.erp.turbo.api.biz.dto.qry.PaymentRecordShowQry;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.PaymentRecord;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.PaymentRecordGateway;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.convert.PaymentRecordConvert;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.CompanyDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PaymentRecordDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PaymentTaskDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.CompanyMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.PaymentRecordMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.PaymentTaskMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.SupplierMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.*;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@ -47,6 +41,8 @@ public class PaymentRecordGatewayImpl implements PaymentRecordGateway {
|
||||
private final SupplierMapper supplierMapper;
|
||||
private final CompanyMapper companyMapper;
|
||||
|
||||
private final OrderCostMapper orderCostMapper;
|
||||
|
||||
@Override
|
||||
public PaymentRecord save(PaymentRecordCreateCmd paymentRecordCreateCmd) {
|
||||
PaymentRecordDO paymentRecordDO = paymentRecordConvert.toPaymentRecordDO(paymentRecordCreateCmd);
|
||||
@ -60,6 +56,9 @@ public class PaymentRecordGatewayImpl implements PaymentRecordGateway {
|
||||
LambdaQueryWrapper<PaymentRecordDO> queryWrapper = Wrappers.lambdaQuery(PaymentRecordDO.class);
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getPaymentTaskId()), PaymentRecordDO::getPaymentTaskId, paymentRecordPageQry.getPaymentTaskId());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getPaymentRecordId()), PaymentRecordDO::getPaymentRecordId, paymentRecordPageQry.getPaymentRecordId());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getTargetType()), PaymentRecordDO::getTargetType, paymentRecordPageQry.getTargetType());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getSupplierId()), PaymentRecordDO::getTargetId, paymentRecordPageQry.getSupplierId());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getSupplierId()), PaymentRecordDO::getTargetType, PaymentTargetTypeEnum.SUPPLIER);
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getPaidState()), PaymentRecordDO::getPaidState, paymentRecordPageQry.getPaidState());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getAccountType()), PaymentRecordDO::getAccountType, paymentRecordPageQry.getAccountType());
|
||||
queryWrapper.eq(Objects.nonNull(paymentRecordPageQry.getAccountCategory()), PaymentRecordDO::getAccountCategory, paymentRecordPageQry.getAccountCategory());
|
||||
@ -68,7 +67,7 @@ public class PaymentRecordGatewayImpl implements PaymentRecordGateway {
|
||||
queryWrapper.orderByDesc(PaymentRecordDO::getCreatedAt);
|
||||
|
||||
IPage<PaymentRecordDO> page = new Page<>(paymentRecordPageQry.getPageIndex(), paymentRecordPageQry.getPageSize());
|
||||
page = paymentRecordMapper.selectPage(page, queryWrapper);
|
||||
page = paymentRecordMapper.selectPage(page, queryWrapper, paymentRecordPageQry);
|
||||
|
||||
if (PaymentTargetTypeEnum.SUPPLIER.equals(paymentRecordPageQry.getTargetType())) {
|
||||
Set<Long> paymentTaskIdList = page.getRecords().stream().map(PaymentRecordDO::getPaymentTaskId).collect(Collectors.toSet());
|
||||
@ -96,6 +95,19 @@ public class PaymentRecordGatewayImpl implements PaymentRecordGateway {
|
||||
}
|
||||
}
|
||||
|
||||
if (PaymentTargetTypeEnum.ORDER_COST.equals(paymentRecordPageQry.getTargetType())) {
|
||||
Set<Long> orderCostIdList = page.getRecords().stream().map(PaymentRecordDO::getTargetId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(orderCostIdList)) {
|
||||
LambdaQueryWrapper<OrderCostDO> queryWrapper3 = Wrappers.lambdaQuery(OrderCostDO.class);
|
||||
queryWrapper3.in(OrderCostDO::getOrderCostId, orderCostIdList);
|
||||
List<OrderCostDO> orderCostDOList = orderCostMapper.selectList(queryWrapper3);
|
||||
Map<Long, OrderCostDO> orderCostDOMap = orderCostDOList.stream().collect(Collectors.toMap(OrderCostDO::getOrderCostId, Function.identity()));
|
||||
page.getRecords().forEach(paymentRecordDO -> {
|
||||
paymentRecordDO.setOrderCostDO(orderCostDOMap.get(paymentRecordDO.getTargetId()));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Set<Long> companyIdList = page.getRecords().stream().map(PaymentRecordDO::getCompanyId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(companyIdList)) {
|
||||
List<CompanyDO> companyDOList = companyMapper.selectByIds(companyIdList);
|
||||
|
||||
@ -71,17 +71,6 @@ public class PaymentTaskGatewayImpl implements PaymentTaskGateway {
|
||||
+ String.format("%03d", System.currentTimeMillis() % 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 付款记录编号
|
||||
*
|
||||
* @return 付款记录编号
|
||||
*/
|
||||
private String generatePaymentRecordSn() {
|
||||
// 生成类似 PAY20251105001 格式的编号
|
||||
return "PAY" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE)
|
||||
+ String.format("%03d", System.currentTimeMillis() % 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PaymentTask save(PaymentTaskCreateCmd paymentTaskCreateCmd) {
|
||||
@ -250,12 +239,12 @@ public class PaymentTaskGatewayImpl implements PaymentTaskGateway {
|
||||
|
||||
// 创建付款记录
|
||||
PaymentRecordDO paymentRecordDO = new PaymentRecordDO();
|
||||
paymentRecordDO.setPaymentRecordSn(generatePaymentRecordSn());
|
||||
paymentRecordDO.setPaymentRecordSn(paymentRecordDO.generatePaymentRecordSn());
|
||||
paymentRecordDO.setPaymentTaskId(paymentTaskPayCmd.getPaymentTaskId());
|
||||
paymentRecordDO.setTargetId(paymentTaskDO.getTargetId());
|
||||
paymentRecordDO.setTargetType(paymentTaskDO.getTaskType().equals(PaymentTaskTypeEnum.MELON_FARMER)
|
||||
? PaymentTargetTypeEnum.SUPPLIER
|
||||
: PaymentTargetTypeEnum.COST);
|
||||
: PaymentTargetTypeEnum.ORDER_COST);
|
||||
paymentRecordDO.setCompanyId(paymentTaskPayCmd.getCompanyId());
|
||||
paymentRecordDO.setAccountCategory(paymentTaskPayCmd.getAccountCategory());
|
||||
paymentRecordDO.setAccountType(paymentTaskPayCmd.getAccountType());
|
||||
|
||||
@ -25,6 +25,7 @@ import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
@ -68,10 +69,11 @@ public class SupplierInvoiceGatewayImpl implements SupplierInvoiceGateway {
|
||||
@Override
|
||||
public IPage<SupplierInvoice> page(SupplierInvoicePageQry supplierInvoicePageQry) {
|
||||
LambdaQueryWrapper<SupplierInvoiceDO> queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class);
|
||||
queryWrapper.eq(Objects.nonNull(supplierInvoicePageQry.getSupplierId()), SupplierInvoiceDO::getSupplierId, supplierInvoicePageQry.getSupplierId());
|
||||
queryWrapper.orderByDesc(SupplierInvoiceDO::getCreatedAt);
|
||||
|
||||
IPage<SupplierInvoiceDO> page = new Page<>(supplierInvoicePageQry.getPageIndex(), supplierInvoicePageQry.getPageSize());
|
||||
page = supplierInvoiceMapper.selectPage(page, queryWrapper);
|
||||
page = supplierInvoiceMapper.selectPage(page, queryWrapper, supplierInvoicePageQry);
|
||||
|
||||
return page.convert(supplierInvoiceConvert::toInvoice);
|
||||
}
|
||||
|
||||
@ -1,13 +1,19 @@
|
||||
package com.xunhong.erp.turbo.biz.infrastructure.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.PaymentRecordPageQry;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PaymentRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Mapper
|
||||
public interface PaymentRecordMapper extends BaseMapper<PaymentRecordDO> {
|
||||
IPage<PaymentRecordDO> selectPage(IPage<PaymentRecordDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<PaymentRecordDO> queryWrapper, @Param("query") PaymentRecordPageQry paymentRecordPageQry);
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,13 @@
|
||||
package com.xunhong.erp.turbo.biz.infrastructure.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 发票记录表Mapper
|
||||
@ -10,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
*/
|
||||
@Mapper
|
||||
public interface SupplierInvoiceMapper extends BaseMapper<SupplierInvoiceDO> {
|
||||
IPage<SupplierInvoiceDO> selectPage(IPage<SupplierInvoiceDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<SupplierInvoiceDO> queryWrapper, @Param("query") SupplierInvoicePageQry supplierInvoicePageQry);
|
||||
}
|
||||
|
||||
@ -28,5 +28,29 @@
|
||||
<result property="isDelete" column="is_delete"/>
|
||||
<result property="version" column="version"/>
|
||||
</resultMap>
|
||||
<select id="selectPage"
|
||||
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.PaymentRecordDO"
|
||||
resultMap="BaseResultMap">
|
||||
SELECT
|
||||
pr.*
|
||||
FROM payment_record pr
|
||||
<if test="query.costId">
|
||||
LEFT JOIN order_cost oc ON oc.order_cost_id = pr.target_id and
|
||||
oc.is_delete = 0 and pr.target_type = 2
|
||||
</if>
|
||||
<where>
|
||||
pr.is_delete = 0
|
||||
<if test="query.costId">
|
||||
AND oc.cost_id = #{query.costId}
|
||||
</if>
|
||||
<if test="ew != null">
|
||||
<if test="ew.nonEmptyOfWhere">
|
||||
AND
|
||||
</if>
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@ -1,13 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.SupplierInvoiceMapper">
|
||||
<resultMap id="BaseResultMap" type="com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO">
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper
|
||||
namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.SupplierInvoiceMapper">
|
||||
<resultMap id="BaseResultMap"
|
||||
type="com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO">
|
||||
<result property="supplierInvoiceId" column="supplier_invoice_id"/>
|
||||
<result property="invoiceSn" column="invoice_sn"/>
|
||||
<result property="type" column="type"/>
|
||||
<result property="supplierId" column="supplier_id"/>
|
||||
<result property="supplierName" column="supplier_name"/>
|
||||
<result property="orderSupplierInvoiceList" column="order_supplier_invoice"
|
||||
<result property="orderSupplierInvoiceList"
|
||||
column="order_supplier_invoice"
|
||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result property="invoiceImg" column="invoice_img"
|
||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
@ -19,5 +23,32 @@
|
||||
<result property="isDelete" column="is_delete"/>
|
||||
<result property="version" column="version"/>
|
||||
</resultMap>
|
||||
<select id="selectPage"
|
||||
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO"
|
||||
resultMap="BaseResultMap">
|
||||
SELECT
|
||||
si.*
|
||||
FROM supplier_invoice si
|
||||
<where>
|
||||
si.is_delete = 0
|
||||
<if test="query.poStates != null and query.poStates.size() > 0">
|
||||
AND si.supplier_invoice_id IN (
|
||||
SELECT invoice_id FROM order_supplier WHERE order_id IN (
|
||||
SELECT order_id FROM `order` WHERE state IN
|
||||
<foreach collection="query.poStates" item="state" open="("
|
||||
separator="," close=")">
|
||||
#{state.type}
|
||||
</foreach>
|
||||
)
|
||||
)
|
||||
</if>
|
||||
<if test="ew != null">
|
||||
<if test="ew.nonEmptyOfWhere">
|
||||
AND
|
||||
</if>
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
package com.xunhong.erp.turbo.api.biz.api;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostPayCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.PaymentRecordVO;
|
||||
import com.xunhong.erp.turbo.base.dto.PageDTO;
|
||||
|
||||
/**
|
||||
@ -12,5 +15,9 @@ public interface OrderCostServiceI {
|
||||
PageDTO<OrderCostVO> page(OrderCostPageQry orderCostPageQry);
|
||||
|
||||
OrderCostVO create(OrderCostCreateCmd orderCostCreateCmd);
|
||||
|
||||
OrderCostVO show(OrderCostShowQry orderCostShowQry);
|
||||
|
||||
PaymentRecordVO pay(OrderCostPayCmd orderCostPayCmd);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.cmd;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.CompanyPaymentAccountCategoryEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.CompanyPaymentAccountTypeEnum;
|
||||
import com.xunhong.erp.turbo.base.dto.Command;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 费用付款命令
|
||||
*
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "费用付款")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrderCostPayCmd extends Command {
|
||||
|
||||
@Schema(title = "费用ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
|
||||
private Long orderCostId;
|
||||
|
||||
@Schema(title = "付款金额", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private BigDecimal paidAmount;
|
||||
|
||||
@Schema(title = "付款公司ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
|
||||
private Long companyId;
|
||||
|
||||
@Schema(title = "账户类别:1_对公账户;2_私人账户", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private CompanyPaymentAccountCategoryEnum accountCategory;
|
||||
|
||||
@Schema(title = "账户类型:1_银行卡;2_支付宝;3_微信", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private CompanyPaymentAccountTypeEnum accountType;
|
||||
|
||||
@Schema(title = "银行名称")
|
||||
private String bankName;
|
||||
|
||||
@Schema(title = "支行名称")
|
||||
private String branchName;
|
||||
|
||||
@Schema(title = "开户公司名称/支付宝昵称/微信号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String accountName;
|
||||
|
||||
@Schema(title = "银行账号/支付宝账号/微信账号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String accountNumber;
|
||||
|
||||
@Schema(title = "支付时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private LocalDateTime paidAt;
|
||||
|
||||
@Schema(title = "支付凭证")
|
||||
private List<String> paidCredentials;
|
||||
|
||||
@Schema(title = "备注")
|
||||
private String remark;
|
||||
}
|
||||
@ -16,7 +16,7 @@ public enum PaymentTargetTypeEnum {
|
||||
* 付款对象类型:1_瓜农;2_成本项
|
||||
*/
|
||||
SUPPLIER(1, "瓜农"),
|
||||
COST(2, "成本项");
|
||||
ORDER_COST(2, "成本项");
|
||||
|
||||
@EnumValue
|
||||
private final int type;
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
||||
|
||||
import com.xunhong.erp.turbo.base.dto.Query;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "订单成本项详情查询")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrderCostShowQry extends Query {
|
||||
|
||||
@Schema(title = "费用ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long orderCostId;
|
||||
}
|
||||
@ -50,5 +50,8 @@ public class OrderSupplierPageQry extends PageQuery {
|
||||
*/
|
||||
@Schema(title = "供应商类型:1_瓜农;2_自家档口;3_其他家档口")
|
||||
private SupplierTypeEnum type;
|
||||
|
||||
@Schema(title = "发票ID", type = "string")
|
||||
private Long invoiceId;
|
||||
}
|
||||
|
||||
|
||||
@ -57,6 +57,18 @@ public class PaymentRecordPageQry extends PageQuery {
|
||||
@Schema(title = "付款任务ID", type = "string")
|
||||
private Long paymentTaskId;
|
||||
|
||||
/**
|
||||
* 供应商ID
|
||||
*/
|
||||
@Schema(title = "供应商ID", type = "string")
|
||||
private Long supplierId;
|
||||
|
||||
/**
|
||||
* 成本项ID
|
||||
*/
|
||||
@Schema(title = "成本项ID", type = "string")
|
||||
private Long costId;
|
||||
|
||||
/**
|
||||
* 账户类别:1_对公账户;2_私人账户
|
||||
*/
|
||||
|
||||
@ -1,10 +1,13 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderStateEnum;
|
||||
import com.xunhong.erp.turbo.base.dto.PageQuery;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@ -15,5 +18,19 @@ public class SupplierInvoicePageQry extends PageQuery {
|
||||
|
||||
@Schema(title = "瓜农发票ID", type = "string")
|
||||
private Long supplierInvoiceId;
|
||||
/**
|
||||
* 瓜农发票编号
|
||||
*/
|
||||
@Schema(title = "瓜农发票编号", type = "string")
|
||||
private String invoiceSn;
|
||||
|
||||
/**
|
||||
* 发票开具人
|
||||
*/
|
||||
@Schema(title = "瓜农发票开具人", type = "string")
|
||||
private Long supplierId;
|
||||
|
||||
@Schema(title = "订单状态")
|
||||
private List<OrderStateEnum> poStates;
|
||||
}
|
||||
|
||||
|
||||
@ -134,5 +134,8 @@ public class PaymentRecordVO extends DTO {
|
||||
|
||||
@Schema(title = "公司信息")
|
||||
private CompanyVO companyVO;
|
||||
|
||||
@Schema(title = "采购订单成本项目信息")
|
||||
private OrderCostVO orderCostVO;
|
||||
}
|
||||
|
||||
|
||||
@ -40,8 +40,12 @@ public enum BizErrorCode implements ErrorCode {
|
||||
/**
|
||||
* 审核记录不存在
|
||||
*/
|
||||
B_BIZ_AUDIT_NOT_FOUND("B_BIZ_AUDIT_NOT_FOUND", "审核记录不存在");
|
||||
;
|
||||
B_BIZ_AUDIT_NOT_FOUND("B_BIZ_AUDIT_NOT_FOUND", "审核记录不存在"),
|
||||
|
||||
/**
|
||||
* 费用不存在
|
||||
*/
|
||||
B_BIZ_COST_NOT_FOUND("B_BIZ_COST_NOT_FOUND", "费用不存在");;
|
||||
|
||||
|
||||
private final String code;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user