diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderCostController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderCostController.java index d3ccbc1..161475d 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderCostController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderCostController.java @@ -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 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 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 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 payOrderCost(@RequestBody @Validated OrderCostPayCmd orderCostPayCmd) { + return SingleResponse.of(orderCostService.pay(orderCostPayCmd)); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/PaymentRecordAssembler.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/PaymentRecordAssembler.java index 2ed394e..312e533 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/PaymentRecordAssembler.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/PaymentRecordAssembler.java @@ -12,7 +12,8 @@ import org.mapstruct.NullValueCheckStrategy; @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) public interface PaymentRecordAssembler { - @Mapping(target = "companyVO", source = "company") + @Mapping(target = "orderCostVO", source = "orderCost") + @Mapping(target = "companyVO", source = "company") @Mapping(target = "supplierVO", source = "supplier") @Mapping(target = "paymentTaskVO", source = "paymentTask") PaymentRecordVO toPaymentRecordVO(PaymentRecord paymentRecord); diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderCostPayCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderCostPayCmdExe.java new file mode 100644 index 0000000..61ca095 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderCostPayCmdExe.java @@ -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); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/OrderCostShowQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/OrderCostShowQryExe.java new file mode 100644 index 0000000..69eff7f --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/OrderCostShowQryExe.java @@ -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); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderCostServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderCostServiceImpl.java index 2b9d7c4..c2b337f 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderCostServiceImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderCostServiceImpl.java @@ -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 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); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/PaymentRecord.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/PaymentRecord.java index 5efbce7..a72659a 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/PaymentRecord.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/PaymentRecord.java @@ -125,5 +125,10 @@ public class PaymentRecord extends DTO { * 公司 */ private Company company; + + /** + * 成本项 + */ + private OrderCost orderCost; } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderCostGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderCostGateway.java index 125ee33..083020d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderCostGateway.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderCostGateway.java @@ -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 page(OrderCostPageQry orderCostPageQry); OrderCost save(OrderCostCreateCmd orderCostCreateCmd); + + OrderCost show(OrderCostShowQry orderCostShowQry); + + PaymentRecord pay(OrderCostPayCmd orderCostPayCmd); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/OrderCostConvert.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/OrderCostConvert.java index 555098e..459435f 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/OrderCostConvert.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/OrderCostConvert.java @@ -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); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/PaymentRecordConvert.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/PaymentRecordConvert.java index b5e5bba..56a9cc0 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/PaymentRecordConvert.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/PaymentRecordConvert.java @@ -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) diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/PaymentRecordDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/PaymentRecordDO.java index 3a8de12..7d1893c 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/PaymentRecordDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/PaymentRecordDO.java @@ -135,5 +135,19 @@ public class PaymentRecordDO extends BaseDO { @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); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderCostGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderCostGatewayImpl.java index f456269..eb64f47 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderCostGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderCostGatewayImpl.java @@ -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 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 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); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java index 70f84c5..e77cb1d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java @@ -204,16 +204,18 @@ public class OrderGatewayImpl implements OrderGateway { orderDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> Objects.isNull(orderPackageDO.getOrderSupplierId())).toList()); Set invoiceIdList = orderSupplierDOList.stream().map(OrderSupplierDO::getInvoiceId).collect(Collectors.toSet()); - List supplierInvoiceDOList = supplierInvoiceMapper.selectByIds(invoiceIdList); - Map supplierInvoiceDOMap = supplierInvoiceDOList.stream().collect(Collectors.toMap(SupplierInvoiceDO::getSupplierInvoiceId, Function.identity())); + if (CollUtil.isNotEmpty(invoiceIdList)) { + List supplierInvoiceDOList = supplierInvoiceMapper.selectByIds(invoiceIdList); + Map supplierInvoiceDOMap = supplierInvoiceDOList.stream().collect(Collectors.toMap(SupplierInvoiceDO::getSupplierInvoiceId, Function.identity())); - if (CollUtil.isNotEmpty(orderSupplierIdList)) { - orderSupplierDOList.forEach(orderSupplierDO -> { - if (Objects.nonNull(orderSupplierDO.getInvoiceId())) { - orderSupplierDO.setInvoiceImg(supplierInvoiceDOMap.get(orderSupplierDO.getInvoiceId()).getInvoiceImg()); - } - orderSupplierDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> orderSupplierDO.getOrderSupplierId().equals(orderPackageDO.getOrderSupplierId())).toList()); - }); + if (CollUtil.isNotEmpty(orderSupplierIdList)) { + orderSupplierDOList.forEach(orderSupplierDO -> { + if (Objects.nonNull(orderSupplierDO.getInvoiceId())) { + orderSupplierDO.setInvoiceImg(supplierInvoiceDOMap.get(orderSupplierDO.getInvoiceId()).getInvoiceImg()); + } + 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 orderSupplierInvoiceList = buildOrderSupplierInvoiceList(supplierDO); diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java index 608e178..be83806 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java @@ -45,6 +45,7 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway { public IPage page(OrderSupplierPageQry orderSupplierPageQry) { LambdaQueryWrapper 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); diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentRecordGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentRecordGatewayImpl.java index 65ccf2e..e7a3386 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentRecordGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentRecordGatewayImpl.java @@ -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 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 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 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 orderCostIdList = page.getRecords().stream().map(PaymentRecordDO::getTargetId).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(orderCostIdList)) { + LambdaQueryWrapper queryWrapper3 = Wrappers.lambdaQuery(OrderCostDO.class); + queryWrapper3.in(OrderCostDO::getOrderCostId, orderCostIdList); + List orderCostDOList = orderCostMapper.selectList(queryWrapper3); + Map orderCostDOMap = orderCostDOList.stream().collect(Collectors.toMap(OrderCostDO::getOrderCostId, Function.identity())); + page.getRecords().forEach(paymentRecordDO -> { + paymentRecordDO.setOrderCostDO(orderCostDOMap.get(paymentRecordDO.getTargetId())); + }); + } + } + Set companyIdList = page.getRecords().stream().map(PaymentRecordDO::getCompanyId).collect(Collectors.toSet()); if (CollUtil.isNotEmpty(companyIdList)) { List companyDOList = companyMapper.selectByIds(companyIdList); diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentTaskGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentTaskGatewayImpl.java index 55ad325..d0b9566 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentTaskGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PaymentTaskGatewayImpl.java @@ -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()); diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java index 45468d2..7c25e72 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java @@ -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 page(SupplierInvoicePageQry supplierInvoicePageQry) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + queryWrapper.eq(Objects.nonNull(supplierInvoicePageQry.getSupplierId()), SupplierInvoiceDO::getSupplierId, supplierInvoicePageQry.getSupplierId()); queryWrapper.orderByDesc(SupplierInvoiceDO::getCreatedAt); IPage page = new Page<>(supplierInvoicePageQry.getPageIndex(), supplierInvoicePageQry.getPageSize()); - page = supplierInvoiceMapper.selectPage(page, queryWrapper); + page = supplierInvoiceMapper.selectPage(page, queryWrapper, supplierInvoicePageQry); return page.convert(supplierInvoiceConvert::toInvoice); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/PaymentRecordMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/PaymentRecordMapper.java index b156eb8..3e4b156 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/PaymentRecordMapper.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/PaymentRecordMapper.java @@ -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 { + IPage selectPage(IPage page, @Param(Constants.WRAPPER) LambdaQueryWrapper queryWrapper, @Param("query") PaymentRecordPageQry paymentRecordPageQry); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java index 529ea5c..2773f0f 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java @@ -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 { + IPage selectPage(IPage page, @Param(Constants.WRAPPER) LambdaQueryWrapper queryWrapper, @Param("query") SupplierInvoicePageQry supplierInvoicePageQry); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/PaymentRecordMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/PaymentRecordMapper.xml index fd2dd3c..6f4da6f 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/PaymentRecordMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/PaymentRecordMapper.xml @@ -28,5 +28,29 @@ + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml index c74ffae..27d7be8 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml @@ -1,13 +1,17 @@ - - - + + + - @@ -19,5 +23,32 @@ + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderCostServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderCostServiceI.java index 601f03d..ebd5ad3 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderCostServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderCostServiceI.java @@ -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 page(OrderCostPageQry orderCostPageQry); OrderCostVO create(OrderCostCreateCmd orderCostCreateCmd); + + OrderCostVO show(OrderCostShowQry orderCostShowQry); + + PaymentRecordVO pay(OrderCostPayCmd orderCostPayCmd); } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderCostPayCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderCostPayCmd.java new file mode 100644 index 0000000..4f52c7f --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderCostPayCmd.java @@ -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 paidCredentials; + + @Schema(title = "备注") + private String remark; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/PaymentTargetTypeEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/PaymentTargetTypeEnum.java index 4c63e6d..956fd3b 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/PaymentTargetTypeEnum.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/PaymentTargetTypeEnum.java @@ -16,7 +16,7 @@ public enum PaymentTargetTypeEnum { * 付款对象类型:1_瓜农;2_成本项 */ SUPPLIER(1, "瓜农"), - COST(2, "成本项"); + ORDER_COST(2, "成本项"); @EnumValue private final int type; diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderCostShowQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderCostShowQry.java new file mode 100644 index 0000000..d8b6a69 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderCostShowQry.java @@ -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; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java index b56577e..c47a48c 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java @@ -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; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/PaymentRecordPageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/PaymentRecordPageQry.java index d267cfc..49d1036 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/PaymentRecordPageQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/PaymentRecordPageQry.java @@ -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_私人账户 */ diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java index 0f8cf30..762df59 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java @@ -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 poStates; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/PaymentRecordVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/PaymentRecordVO.java index 52134ad..6dfce08 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/PaymentRecordVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/PaymentRecordVO.java @@ -134,5 +134,8 @@ public class PaymentRecordVO extends DTO { @Schema(title = "公司信息") private CompanyVO companyVO; + + @Schema(title = "采购订单成本项目信息") + private OrderCostVO orderCostVO; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/exception/BizErrorCode.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/exception/BizErrorCode.java index 3cf52ed..4030003 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/exception/BizErrorCode.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/exception/BizErrorCode.java @@ -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;