feat(order): 新增订单成本和返点管理功能

- 新增订单成本项管理接口,支持创建和分页查询
- 新增订单返点管理接口,支持分页查询
- 扩展订单供应商接口,增加批量上传发票功能
- 完善费用类型枚举,新增物流类型
- 扩展费用归属枚举,新增司机类型
- 更新订单相关DTO,增加是否付款字段
- 优化订单查询条件,支持按支付状态筛选
- 完善订单供应商信息,增加公司信息和创建时间字段
- 新增经销商损耗相关字段配置
This commit is contained in:
shenyifei 2025-12-17 18:24:09 +08:00
parent 6ff802850e
commit 9b9542385f
78 changed files with 2123 additions and 126 deletions

View File

@ -0,0 +1,62 @@
package com.xunhong.erp.turbo.admin.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
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.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
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;
import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO;
import com.xunhong.erp.turbo.base.dto.PageDTO;
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 org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author shenyifei
*/
@Tag(name = "OrderCost", description = "订单成本项管理")
@RestController("operationOrderCostController")
@RequestMapping(value = "/operation")
@RequiredArgsConstructor
public class OrderCostController {
@DubboReference(version = "1.0.0")
private final OrderCostServiceI orderCostService;
@DubboReference(version = "1.0.0")
private final AdminServiceI adminService;
@SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW})
@GetMapping("pageOrderCost")
@Operation(summary = "订单成本项列表", method = "GET")
public PageResponse<OrderCostVO> pageOrderCost(@ModelAttribute @Validated OrderCostPageQry orderCostPageQry) {
String roleSlug = UserSession.USER_THREAD_LOCAL.get().getRoleSlug();
if (roleSlug.equals(RoleConstant.ORIGIN_ENTRY) || roleSlug.equals(RoleConstant.MARKET_BUYER)) {
Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId();
AdminShowQry adminShowQry = new AdminShowQry();
adminShowQry.setUserId(userId);
AdminVO adminVO = adminService.show(adminShowQry);
orderCostPageQry.setCreatedBy(adminVO.getAdminId());
}
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_UPDATE})
@PostMapping(value = "createOrderCost")
@Operation(summary = "创建订单成本项", method = "POST")
public SingleResponse<OrderCostVO> createOrderCost(@RequestBody @Validated OrderCostCreateCmd orderCostCreateCmd) {
return SingleResponse.of(orderCostService.create(orderCostCreateCmd));
}
}

View File

@ -0,0 +1,56 @@
package com.xunhong.erp.turbo.admin.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import com.alibaba.cola.dto.PageResponse;
import com.xunhong.erp.turbo.api.biz.api.OrderRebateServiceI;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderRebateVO;
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;
import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO;
import com.xunhong.erp.turbo.base.dto.PageDTO;
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 org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author shenyifei
*/
@Tag(name = "OrderRebate", description = "订单返点管理")
@RestController("operationOrderRebateController")
@RequestMapping(value = "/operation")
@RequiredArgsConstructor
public class OrderRebateController {
@DubboReference(version = "1.0.0")
private final OrderRebateServiceI orderRebateService;
@DubboReference(version = "1.0.0")
private final AdminServiceI adminService;
@SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW})
@GetMapping("pageOrderRebate")
@Operation(summary = "订单返点列表", method = "GET")
public PageResponse<OrderRebateVO> pageOrderRebate(@ModelAttribute @Validated OrderRebatePageQry orderRebatePageQry) {
String roleSlug = UserSession.USER_THREAD_LOCAL.get().getRoleSlug();
if (roleSlug.equals(RoleConstant.ORIGIN_ENTRY) || roleSlug.equals(RoleConstant.MARKET_BUYER)) {
Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId();
AdminShowQry adminShowQry = new AdminShowQry();
adminShowQry.setUserId(userId);
AdminVO adminVO = adminService.show(adminShowQry);
orderRebatePageQry.setCreatedBy(adminVO.getAdminId());
}
PageDTO<OrderRebateVO> page = orderRebateService.page(orderRebatePageQry);
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
}
}

View File

@ -2,8 +2,10 @@ package com.xunhong.erp.turbo.admin.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.SingleResponse;
import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI; import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
@ -30,17 +32,17 @@ import org.springframework.web.bind.annotation.*;
public class OrderSupplierController { public class OrderSupplierController {
@DubboReference(version = "1.0.0") @DubboReference(version = "1.0.0")
private final OrderSupplierServiceI orderSupplierService; private final OrderSupplierServiceI orderSupplierService;
@DubboReference(version = "1.0.0") @DubboReference(version = "1.0.0")
private final AdminServiceI adminService; private final AdminServiceI adminService;
@SaCheckLogin @SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW}) // @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW})
@GetMapping("pageOrderSupplier") @GetMapping("pageOrderSupplier")
@Operation(summary = "订单供应商列表", method = "GET") @Operation(summary = "订单供应商列表", method = "GET")
public PageResponse<OrderSupplierVO> pageOrderSupplier(@ModelAttribute @Validated OrderSupplierPageQry orderSupplierPageQry) { public PageResponse<OrderSupplierVO> pageOrderSupplier(@ModelAttribute @Validated OrderSupplierPageQry orderSupplierPageQry) {
String roleSlug = UserSession.USER_THREAD_LOCAL.get().getRoleSlug(); String roleSlug = UserSession.USER_THREAD_LOCAL.get().getRoleSlug();
if (roleSlug.equals(RoleConstant.ORIGIN_ENTRY) || roleSlug.equals(RoleConstant.MARKET_BUYER)) { if (roleSlug.equals(RoleConstant.ORIGIN_ENTRY) || roleSlug.equals(RoleConstant.MARKET_BUYER)) {
Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId(); Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId();
@ -49,15 +51,24 @@ public class OrderSupplierController {
AdminVO adminVO = adminService.show(adminShowQry); AdminVO adminVO = adminService.show(adminShowQry);
orderSupplierPageQry.setCreatedBy(adminVO.getAdminId()); orderSupplierPageQry.setCreatedBy(adminVO.getAdminId());
} }
PageDTO<OrderSupplierVO> page = orderSupplierService.page(orderSupplierPageQry); PageDTO<OrderSupplierVO> page = orderSupplierService.page(orderSupplierPageQry);
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent()); return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
} }
@SaCheckLogin @SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_UPDATE}) // @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_UPDATE})
@RequestMapping(value = "updateOrderSupplier", method = {RequestMethod.PATCH, RequestMethod.PUT}) @RequestMapping(value = "updateOrderSupplier", method = {RequestMethod.PATCH, RequestMethod.PUT})
@Operation(summary = "订单供应商更新", method = "PATCH") @Operation(summary = "订单供应商更新", method = "PATCH")
public SingleResponse<OrderSupplierVO> updateOrderSupplier(@RequestBody @Validated OrderSupplierUpdateCmd orderSupplierUpdateCmd) { public SingleResponse<OrderSupplierVO> updateOrderSupplier(@RequestBody @Validated OrderSupplierUpdateCmd orderSupplierUpdateCmd) {
return SingleResponse.of(orderSupplierService.update(orderSupplierUpdateCmd)); return SingleResponse.of(orderSupplierService.update(orderSupplierUpdateCmd));
} }
@SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_BATCH_INVOICE_UPLOAD})
@PostMapping("batchUploadInvoice")
@Operation(summary = "批量上传供应商发票", method = "POST")
public Response batchUploadInvoice(@RequestBody @Validated OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd) {
orderSupplierService.batchUploadInvoice(batchInvoiceUploadCmd);
return SingleResponse.buildSuccess();
}
} }

View File

@ -82,7 +82,6 @@ public class UserController {
@GetMapping(value = "/userAdmin") @GetMapping(value = "/userAdmin")
@Operation(summary = "管理员详情", method = "GET") @Operation(summary = "管理员详情", method = "GET")
public SingleResponse<AdminVO> userAdmin(@ModelAttribute @Validated AdminShowQry adminShowQry) { public SingleResponse<AdminVO> userAdmin(@ModelAttribute @Validated AdminShowQry adminShowQry) {
Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId(); Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId();
adminShowQry.setUserId(userId); adminShowQry.setUserId(userId);
@ -99,6 +98,10 @@ public class UserController {
EmployeeVO employeeVO = employeeService.show(employeeShowQry); EmployeeVO employeeVO = employeeService.show(employeeShowQry);
if (Objects.isNull(employeeVO)) {
return SingleResponse.of(null);
}
// 获取角色 // 获取角色
UserRoleListQry userRoleListQry = new UserRoleListQry(); UserRoleListQry userRoleListQry = new UserRoleListQry();
userRoleListQry.setUserId(employeeVO.getUserId()); userRoleListQry.setUserId(employeeVO.getUserId());

View File

@ -0,0 +1,19 @@
package com.xunhong.erp.turbo.biz.app.assembler;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
/**
* @author shenyifei
*/
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderCostAssembler {
@Mapping(target = "purchaseOrderVO", source = "purchaseOrder")
@Mapping(target = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
OrderCostVO toOrderCostVO(OrderCost orderCost);
}

View File

@ -0,0 +1,19 @@
package com.xunhong.erp.turbo.biz.app.assembler;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderRebateVO;
import com.xunhong.erp.turbo.biz.domain.entity.OrderRebate;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
/**
* @author shenyifei
*/
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderRebateAssembler {
@Mapping(target = "purchaseOrderVO", source = "purchaseOrder")
@Mapping(target = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
OrderRebateVO toOrderRebateVO(OrderRebate orderRebate);
}

View File

@ -1,7 +1,7 @@
package com.xunhong.erp.turbo.biz.app.assembler; package com.xunhong.erp.turbo.biz.app.assembler;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.NullValueCheckStrategy;
@ -12,7 +12,6 @@ import org.mapstruct.NullValueCheckStrategy;
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderSupplierAssembler { public interface OrderSupplierAssembler {
@Mapping(target = "pricingMethod", ignore = true) @Mapping(target = "purchaseOrderVO", source = "purchaseOrder")
@Mapping(target = "createdAt", ignore = true)
OrderSupplierVO toOrderSupplierVO(OrderSupplier orderSupplier); OrderSupplierVO toOrderSupplierVO(OrderSupplier orderSupplier);
} }

View File

@ -0,0 +1,29 @@
package com.xunhong.erp.turbo.biz.app.executor.cmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
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 OrderCostCreateCmdExe {
private final OrderCostAssembler orderCostAssembler;
private final OrderCostGateway orderCostGateway;
public OrderCostVO execute(OrderCostCreateCmd orderCostCreateCmd) {
OrderCost orderCost = orderCostGateway.save(orderCostCreateCmd);
return orderCostAssembler.toOrderCostVO(orderCost);
}
}

View File

@ -0,0 +1,29 @@
package com.xunhong.erp.turbo.biz.app.executor.cmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 订单供应商批量上传发票执行器
*
* @author claude
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class OrderSupplierBatchInvoiceUploadCmdExe {
private final OrderSupplierGateway orderSupplierGateway;
/**
* 执行批量上传发票
*
* @param orderSupplierBatchInvoiceUploadCmd 批量上传发票命令
*/
public void execute(OrderSupplierBatchInvoiceUploadCmd orderSupplierBatchInvoiceUploadCmd) {
orderSupplierGateway.batchInvoiceUpload(orderSupplierBatchInvoiceUploadCmd);
}
}

View File

@ -1,9 +1,9 @@
package com.xunhong.erp.turbo.biz.app.executor.cmd; package com.xunhong.erp.turbo.biz.app.executor.cmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
import com.xunhong.erp.turbo.biz.app.assembler.OrderSupplierAssembler; import com.xunhong.erp.turbo.biz.app.assembler.OrderSupplierAssembler;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway; import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,29 @@
package com.xunhong.erp.turbo.biz.app.executor.query;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
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 OrderCostPageQryExe {
private final OrderCostGateway orderCostGateway;
private final OrderCostAssembler orderCostAssembler;
public IPage<OrderCostVO> execute(OrderCostPageQry orderCostPageQry) {
IPage<OrderCost> page = orderCostGateway.page(orderCostPageQry);
return page.convert(orderCostAssembler::toOrderCostVO);
}
}

View File

@ -0,0 +1,29 @@
package com.xunhong.erp.turbo.biz.app.executor.query;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderRebateVO;
import com.xunhong.erp.turbo.biz.app.assembler.OrderRebateAssembler;
import com.xunhong.erp.turbo.biz.domain.entity.OrderRebate;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderRebateGateway;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author shenyifei
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class OrderRebatePageQryExe {
private final OrderRebateGateway orderRebateGateway;
private final OrderRebateAssembler orderRebateAssembler;
public IPage<OrderRebateVO> execute(OrderRebatePageQry orderRebatePageQry) {
IPage<OrderRebate> page = orderRebateGateway.page(orderRebatePageQry);
return page.convert(orderRebateAssembler::toOrderRebateVO);
}
}

View File

@ -1,10 +1,10 @@
package com.xunhong.erp.turbo.biz.app.executor.query; package com.xunhong.erp.turbo.biz.app.executor.query;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
import com.xunhong.erp.turbo.biz.app.assembler.OrderSupplierAssembler; import com.xunhong.erp.turbo.biz.app.assembler.OrderSupplierAssembler;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway; import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,37 @@
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.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
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.query.OrderCostPageQryExe;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
/**
* @author shenyifei
*/
@Slf4j
@Service
@DubboService(interfaceClass = OrderCostServiceI.class, version = "1.0.0")
@RequiredArgsConstructor
public class OrderCostServiceImpl implements OrderCostServiceI {
private final OrderCostPageQryExe orderCostPageQryExe;
private final OrderCostCreateCmdExe orderCostCreateCmdExe;
@Override
public PageDTO<OrderCostVO> page(OrderCostPageQry orderCostPageQry) {
return PageDTO.of(orderCostPageQryExe.execute(orderCostPageQry));
}
@Override
public OrderCostVO create(OrderCostCreateCmd orderCostCreateCmd) {
return orderCostCreateCmdExe.execute(orderCostCreateCmd);
}
}

View File

@ -0,0 +1,29 @@
package com.xunhong.erp.turbo.biz.app.service;
import com.xunhong.erp.turbo.api.biz.api.OrderRebateServiceI;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderRebateVO;
import com.xunhong.erp.turbo.base.dto.PageDTO;
import com.xunhong.erp.turbo.biz.app.executor.query.OrderRebatePageQryExe;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
/**
* @author shenyifei
*/
@Slf4j
@Service
@DubboService(interfaceClass = OrderRebateServiceI.class, version = "1.0.0")
@RequiredArgsConstructor
public class OrderRebateServiceImpl implements OrderRebateServiceI {
private final OrderRebatePageQryExe orderRebatePageQryExe;
@Override
public PageDTO<OrderRebateVO> page(OrderRebatePageQry orderRebatePageQry) {
return PageDTO.of(orderRebatePageQryExe.execute(orderRebatePageQry));
}
}

View File

@ -1,10 +1,12 @@
package com.xunhong.erp.turbo.biz.app.service; package com.xunhong.erp.turbo.biz.app.service;
import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI; import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
import com.xunhong.erp.turbo.base.dto.PageDTO; import com.xunhong.erp.turbo.base.dto.PageDTO;
import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderSupplierBatchInvoiceUploadCmdExe;
import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderSupplierUpdateCmdExe; import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderSupplierUpdateCmdExe;
import com.xunhong.erp.turbo.biz.app.executor.query.OrderSupplierPageQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.OrderSupplierPageQryExe;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -22,6 +24,7 @@ import org.springframework.stereotype.Service;
public class OrderSupplierServiceImpl implements OrderSupplierServiceI { public class OrderSupplierServiceImpl implements OrderSupplierServiceI {
private final OrderSupplierUpdateCmdExe orderSupplierUpdateCmdExe; private final OrderSupplierUpdateCmdExe orderSupplierUpdateCmdExe;
private final OrderSupplierBatchInvoiceUploadCmdExe orderSupplierBatchInvoiceUploadCmdExe;
private final OrderSupplierPageQryExe orderSupplierPageQryExe; private final OrderSupplierPageQryExe orderSupplierPageQryExe;
@ -35,5 +38,10 @@ public class OrderSupplierServiceImpl implements OrderSupplierServiceI {
public OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd) { public OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd) {
return orderSupplierUpdateCmdExe.execute(orderSupplierUpdateCmd); return orderSupplierUpdateCmdExe.execute(orderSupplierUpdateCmd);
} }
@Override
public void batchUploadInvoice(OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd) {
orderSupplierBatchInvoiceUploadCmdExe.execute(batchInvoiceUploadCmd);
}
} }

View File

@ -25,12 +25,12 @@ public class Cost extends DTO {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
private CostBelongEnum belong; private CostBelongEnum belong;

View File

@ -0,0 +1,108 @@
package com.xunhong.erp.turbo.biz.domain.entity;
import com.alibaba.cola.dto.DTO;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCompany;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostTypeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author shenyifei
*/
@Data
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrderCost extends DTO {
/**
* 记录ID
*/
private Long orderCostId;
/**
* 订单ID
*/
private Long orderId;
/**
* 费用Id
*/
private Long costId;
/**
* 成本项目名称
*/
private String name;
/**
* 单价
*/
private BigDecimal price;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private Integer count;
/**
* 费用归属0_无归属1_工头2_产地3_司机
*/
private CostBelongEnum belong;
/**
* 负责人
*/
private String principal;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
private CostTypeEnum type;
/**
* 关联项目id
*/
private List<Long> costItemIds;
/**
* 是否付款
*/
private Boolean isPaid;
/**
* 采购订单车辆信息
*/
private OrderVehicle orderVehicle;
/**
* 采购订单公司信息
*/
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
private PurchaseOrder purchaseOrder;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
private PurchaseOrderStateEnum poState;
private LocalDateTime createdAt;
}

View File

@ -0,0 +1,90 @@
package com.xunhong.erp.turbo.biz.domain.entity;
import com.alibaba.cola.dto.DTO;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCompany;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderRebateCalcMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = true)
public class OrderRebate extends DTO {
/**
* 记录ID
*/
private Long orderRebateId;
/**
* 订单ID
*/
private Long orderId;
/**
* 客户ID
*/
private Long customerId;
/**
* 经销商ID
*/
private Long dealerId;
/**
* 客户名称
*/
private String name;
/**
* 返点计算方式1_按净重计算2_固定金额
*/
private OrderRebateCalcMethodEnum calcMethod;
/**
* 返点净重
*/
private BigDecimal netWeight;
/**
* 返点单价
*/
private BigDecimal unitPrice;
/**
* 返点金额
*/
private BigDecimal amount;
/**
* 是否付款
*/
private Boolean isPaid;
/**
* 采购订单车辆信息
*/
private OrderVehicle orderVehicle;
/**
* 采购订单公司信息
*/
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
private PurchaseOrder purchaseOrder;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
private PurchaseOrderStateEnum poState;
private LocalDateTime createdAt;
}

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.domain.Entity;
import com.alibaba.cola.dto.DTO; import com.alibaba.cola.dto.DTO;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost; import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderShipItem; import com.xunhong.erp.turbo.api.biz.dto.common.OrderShipItem;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -35,6 +36,16 @@ public class OrderShip extends DTO {
*/ */
private String orderSn; private String orderSn;
/**
* 经销商ID
*/
private Long dealerId;
/**
* 经销商名称
*/
private String dealerName;
/** /**
* 仓库ID * 仓库ID
*/ */
@ -119,4 +130,9 @@ public class OrderShip extends DTO {
* 订单费用表 * 订单费用表
*/ */
private List<OrderCost> orderCostList; private List<OrderCost> orderCostList;
/**
* 订单运输表
*/
private OrderVehicle orderVehicle;
} }

View File

@ -0,0 +1,218 @@
package com.xunhong.erp.turbo.biz.domain.entity;
import com.alibaba.cola.dto.DTO;
import com.xunhong.erp.turbo.api.biz.dto.common.*;
import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
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 OrderSupplier extends DTO {
/**
* 记录ID
*/
private Long orderSupplierId;
/**
* 订单ID
*/
private Long orderId;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 供应商姓名
*/
private String name;
/**
* 身份证号
*/
private String idCard;
/**
* 银行卡号
*/
private String bankCard;
/**
* 手机号
*/
private String phone;
/**
* 微信二维码
*/
private String wechatQr;
/**
* 是否最后一家
*/
private Boolean isLast;
/**
* 空磅是否包含纸箱
*/
private Boolean isPaper;
/**
* 空车重量(kg)
*/
private BigDecimal emptyWeight;
/**
* 总重量(kg)
*/
private BigDecimal totalWeight;
/**
* 毛重(kg)
*/
private BigDecimal grossWeight;
/**
* 净重(kg)
*/
private BigDecimal netWeight;
/**
* 采购单价(/)
*/
private BigDecimal purchasePrice;
/**
* 箱子类型
*/
private List<SupplierPackageUsage> packageUsage;
/**
* 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板
*/
private LoadingModeEnum loadingMode;
/**
* 销售单价(/)
*/
private BigDecimal salePrice;
/**
* 报价方式1_按毛重报价2_按净重报价
*/
private PurchaseOrderPricingMethodEnum pricingMethod;
/**
* 发票金额
*/
private BigDecimal invoiceAmount;
/**
* 空车照片
*/
private String emptyWeightImg;
/**
* 满载照片
*/
private String totalWeightImg;
/**
* 是否上传票证
*/
private Boolean invoiceUpload;
/**
* 发票
*/
private List<UploadFileItem> invoiceImg;
/**
* 是否上传合同
*/
private Boolean contractUpload;
/**
* 合同
*/
private List<UploadFileItem> contractImg;
/**
* 产品ID
*/
private Long productId;
/**
* 产品名称
*/
private String productName;
/**
* 关联费用id
*/
private List<Long> costIds;
/**
* 成本模板
*/
private String costTemplate;
/**
* 是否已付定金
*/
private Boolean isDepositPaid;
/**
* 定金金额
*/
private BigDecimal depositAmount;
/**
* 是否付款
*/
private Boolean isPaid;
/**
* 采购订单包装箱信息
*/
private List<OrderPackage> orderPackageList;
/**
* 采购订单车辆信息
*/
private OrderVehicle orderVehicle;
/**
* 采购订单公司信息
*/
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
private PurchaseOrder purchaseOrder;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
private PurchaseOrderStateEnum poState;
/**
* 创建时间
*/
private LocalDateTime createdAt;
}

View File

@ -83,7 +83,7 @@ public class PurchaseOrder extends DTO {
/** /**
* 采购订单供应商信息 * 采购订单供应商信息
*/ */
private List<OrderSupplier> orderSupplierList; private List<com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier> orderSupplierList;
/** /**
* 采购订单运输信息 * 采购订单运输信息
@ -103,7 +103,7 @@ public class PurchaseOrder extends DTO {
/** /**
* 采购订单包装箱信息 * 采购订单包装箱信息
*/ */
private List<OrderCost> orderCostList; private List<com.xunhong.erp.turbo.api.biz.dto.common.OrderCost> orderCostList;
/** /**
* 采购订单成本项目信息 * 采购订单成本项目信息
@ -113,7 +113,7 @@ public class PurchaseOrder extends DTO {
/** /**
* 采购订单返点信息 * 采购订单返点信息
*/ */
private OrderRebate orderRebate; private com.xunhong.erp.turbo.api.biz.dto.common.OrderRebate orderRebate;
/** /**
* 采购订单包装信息 * 采购订单包装信息

View File

@ -0,0 +1,16 @@
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.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
/**
* @author shenyifei
*/
public interface OrderCostGateway {
IPage<OrderCost> page(OrderCostPageQry orderCostPageQry);
OrderCost save(OrderCostCreateCmd orderCostCreateCmd);
}

View File

@ -0,0 +1,13 @@
package com.xunhong.erp.turbo.biz.domain.gateway;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderRebate;
/**
* @author shenyifei
*/
public interface OrderRebateGateway {
IPage<OrderRebate> page(OrderRebatePageQry orderRebatePageQry);
}

View File

@ -1,9 +1,10 @@
package com.xunhong.erp.turbo.biz.domain.gateway; package com.xunhong.erp.turbo.biz.domain.gateway;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
/** /**
* @author shenyifei * @author shenyifei
@ -12,5 +13,7 @@ public interface OrderSupplierGateway {
IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry); IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry);
OrderSupplier update(OrderSupplierUpdateCmd orderSupplierUpdateCmd); OrderSupplier update(OrderSupplierUpdateCmd orderSupplierUpdateCmd);
void batchInvoiceUpload(OrderSupplierBatchInvoiceUploadCmd cmd);
} }

View File

@ -1,6 +1,7 @@
package com.xunhong.erp.turbo.biz.infrastructure.convert; package com.xunhong.erp.turbo.biz.infrastructure.convert;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderCostCreateCmd;
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.OrderCostDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
@ -13,6 +14,9 @@ import java.util.List;
*/ */
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderCostConvert { public interface OrderCostConvert {
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "orderCostId", ignore = true) @Mapping(target = "orderCostId", ignore = true)
@Mapping(target = "version", ignore = true) @Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true) @Mapping(target = "updatedAt", ignore = true)
@ -24,5 +28,19 @@ public interface OrderCostConvert {
List<OrderCost> toOrderCostList(List<OrderCostDO> orderCostDOList); List<OrderCost> toOrderCostList(List<OrderCostDO> orderCostDOList);
@Mapping(target = "orderCompany", source = "orderCompanyDO")
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
@Mapping(target = "purchaseOrder", source = "purchaseOrderDO")
OrderCost toOrderCost(OrderCostDO orderCostDO); OrderCost toOrderCost(OrderCostDO orderCostDO);
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "poState", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCostId", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderCostDO toOrderCostDO(OrderCostCreateCmd orderCostCreateCmd);
} }

View File

@ -1,6 +1,6 @@
package com.xunhong.erp.turbo.biz.infrastructure.convert; package com.xunhong.erp.turbo.biz.infrastructure.convert;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderRebate; import com.xunhong.erp.turbo.biz.domain.entity.OrderRebate;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
@ -11,11 +11,9 @@ import org.mapstruct.NullValueCheckStrategy;
*/ */
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderRebateConvert { public interface OrderRebateConvert {
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderRebateDO toOrderRebateDO(OrderRebate orderRebate);
@Mapping(target = "orderCompany", source = "orderCompanyDO")
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
@Mapping(target = "purchaseOrder", source = "purchaseOrderDO")
OrderRebate toOrderRebate(OrderRebateDO orderRebateDO); OrderRebate toOrderRebate(OrderRebateDO orderRebateDO);
} }

View File

@ -16,10 +16,12 @@ import org.mapstruct.NullValueCheckStrategy;
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderShipConvert { public interface OrderShipConvert {
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
@Mapping(target = "orderCostList", source = "orderCostDOList") @Mapping(target = "orderCostList", source = "orderCostDOList")
@Mapping(target = "orderShipItemList", source = "orderShipItemDOList") @Mapping(target = "orderShipItemList", source = "orderShipItemDOList")
com.xunhong.erp.turbo.biz.domain.entity.OrderShip toOrderShip(OrderShipDO orderShipDO); com.xunhong.erp.turbo.biz.domain.entity.OrderShip toOrderShip(OrderShipDO orderShipDO);
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCostDOList", ignore = true) @Mapping(target = "orderCostDOList", ignore = true)
@Mapping(target = "warehouseName", ignore = true) @Mapping(target = "warehouseName", ignore = true)
@Mapping(target = "warehouseId", ignore = true) @Mapping(target = "warehouseId", ignore = true)
@ -32,6 +34,7 @@ public interface OrderShipConvert {
@Mapping(target = "createdAt", ignore = true) @Mapping(target = "createdAt", ignore = true)
OrderShipDO toOrderShipDO(OrderShipCreateCmd orderShipCreateCmd); OrderShipDO toOrderShipDO(OrderShipCreateCmd orderShipCreateCmd);
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderId", ignore = true) @Mapping(target = "orderId", ignore = true)
@Mapping(target = "orderCostDOList", ignore = true) @Mapping(target = "orderCostDOList", ignore = true)
@Mapping(target = "warehouseName", ignore = true) @Mapping(target = "warehouseName", ignore = true)
@ -48,6 +51,7 @@ public interface OrderShipConvert {
@Mapping(target = "createdAt", ignore = true) @Mapping(target = "createdAt", ignore = true)
void toOrderShipDO(@MappingTarget OrderShipDO orderShipDO, OrderShipUpdateCmd orderShipUpdateCmd); void toOrderShipDO(@MappingTarget OrderShipDO orderShipDO, OrderShipUpdateCmd orderShipUpdateCmd);
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderId", ignore = true) @Mapping(target = "orderId", ignore = true)
@Mapping(target = "orderCostDOList", ignore = true) @Mapping(target = "orderCostDOList", ignore = true)
@Mapping(target = "companyName", ignore = true) @Mapping(target = "companyName", ignore = true)
@ -66,6 +70,7 @@ public interface OrderShipConvert {
@Mapping(target = "createdAt", ignore = true) @Mapping(target = "createdAt", ignore = true)
void toOrderShipDO(@MappingTarget OrderShipDO orderShipDO, OrderShipGenerateDocumentCmd orderShipGenerateDocumentCmd); void toOrderShipDO(@MappingTarget OrderShipDO orderShipDO, OrderShipGenerateDocumentCmd orderShipGenerateDocumentCmd);
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCostDOList", ignore = true) @Mapping(target = "orderCostDOList", ignore = true)
@Mapping(target = "orderShipItemDOList", ignore = true) @Mapping(target = "orderShipItemDOList", ignore = true)
@Mapping(target = "version", ignore = true) @Mapping(target = "version", ignore = true)

View File

@ -1,39 +1,32 @@
package com.xunhong.erp.turbo.biz.infrastructure.convert; package com.xunhong.erp.turbo.biz.infrastructure.convert;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier; import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget; import org.mapstruct.MappingTarget;
import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.NullValueCheckStrategy;
import java.util.List;
/** /**
* @author shenyifei * @author shenyifei
*/ */
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {OrderPackageConvert.class}) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {OrderPackageConvert.class})
public interface OrderSupplierConvert { public interface OrderSupplierConvert {
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderPackageDOList", source = "orderPackageList")
@Mapping(target = "orderSupplierId", ignore = true)
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderSupplierDO toOrderSupplierDO(OrderSupplier orderSupplier);
List<OrderSupplierDO> toOrderSupplierDOList(List<OrderSupplier> orderSupplierList);
List<OrderSupplier> toOrderSupplierList(List<OrderSupplierDO> orderSupplierDOList);
@Mapping(target = "purchaseOrder", source = "purchaseOrderDO")
@Mapping(target = "orderCompany", source = "orderCompanyDO")
@Mapping(target = "orderVehicle", source = "orderVehicleDO") @Mapping(target = "orderVehicle", source = "orderVehicleDO")
@Mapping(target = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "orderPackageList", source = "orderPackageDOList") @Mapping(target = "orderPackageList", source = "orderPackageDOList")
OrderSupplier toOrderSupplier(OrderSupplierDO orderSupplierDO); OrderSupplier toOrderSupplier(OrderSupplierDO orderSupplierDO);
@Mapping(target = "pricingMethod", ignore = true)
@Mapping(target = "poState", ignore = true)
@Mapping(target = "packageUsage", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "costTemplate", ignore = true)
@Mapping(target = "costIds", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true) @Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "wechatQr", ignore = true) @Mapping(target = "wechatQr", ignore = true)
@Mapping(target = "totalWeightImg", ignore = true) @Mapping(target = "totalWeightImg", ignore = true)

View File

@ -1,17 +1,25 @@
package com.xunhong.erp.turbo.biz.infrastructure.convert; package com.xunhong.erp.turbo.biz.infrastructure.convert;
import com.xunhong.erp.turbo.api.biz.dto.cmd.*; import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderRebate;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.entity.PurchaseOrder; import com.xunhong.erp.turbo.biz.domain.entity.PurchaseOrder;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget; import org.mapstruct.MappingTarget;
import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.NullValueCheckStrategy;
import java.util.List;
/** /**
* @author shenyifei * @author shenyifei
*/ */
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {OrderVehicleConvert.class, OrderSupplierConvert.class, OrderCostConvert.class, OrderPackageConvert.class, OrderDealerConvert.class, OrderRebateConvert.class, OrderCompanyConvert.class, OrderPackageConvert.class, OrderShipItemConvert.class, OrderShipConvert.class}) @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {OrderVehicleConvert.class, OrderCostConvert.class, OrderPackageConvert.class, OrderDealerConvert.class, OrderRebateConvert.class, OrderCompanyConvert.class, OrderPackageConvert.class, OrderShipItemConvert.class, OrderShipConvert.class})
public interface PurchaseOrderConvert { public interface PurchaseOrderConvert {
@Mapping(target = "orderShipList", source = "orderShipDOList") @Mapping(target = "orderShipList", source = "orderShipDOList")
@ -92,5 +100,97 @@ public interface PurchaseOrderConvert {
@Mapping(target = "isDelete", ignore = true) @Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true) @Mapping(target = "createdAt", ignore = true)
PurchaseOrderDO toPurchaseOrderDO(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd); PurchaseOrderDO toPurchaseOrderDO(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd);
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderPackageDOList", source = "orderPackageList")
@Mapping(target = "orderSupplierId", ignore = true)
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderSupplierDO toOrderSupplierDO(OrderSupplier orderSupplier);
List<OrderSupplierDO> toOrderSupplierDOList(List<OrderSupplier> orderSupplierList);
List<OrderSupplier> toOrderSupplierList(List<OrderSupplierDO> orderSupplierDOList);
@Mapping(target = "selected", ignore = true)
@Mapping(target = "orderCompany", source = "orderCompanyDO")
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
@Mapping(target = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "orderPackageList", source = "orderPackageDOList")
OrderSupplier toOrderSupplier(OrderSupplierDO orderSupplierDO);
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "pricingMethod", ignore = true)
@Mapping(target = "poState", ignore = true)
@Mapping(target = "packageUsage", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "costTemplate", ignore = true)
@Mapping(target = "costIds", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "wechatQr", ignore = true)
@Mapping(target = "totalWeightImg", ignore = true)
@Mapping(target = "totalWeight", ignore = true)
@Mapping(target = "supplierId", ignore = true)
@Mapping(target = "salePrice", ignore = true)
@Mapping(target = "purchasePrice", ignore = true)
@Mapping(target = "productName", ignore = true)
@Mapping(target = "productId", ignore = true)
@Mapping(target = "phone", ignore = true)
@Mapping(target = "orderId", ignore = true)
@Mapping(target = "netWeight", ignore = true)
@Mapping(target = "name", ignore = true)
@Mapping(target = "isPaper", ignore = true)
@Mapping(target = "isLast", ignore = true)
@Mapping(target = "invoiceAmount", ignore = true)
@Mapping(target = "idCard", ignore = true)
@Mapping(target = "grossWeight", ignore = true)
@Mapping(target = "emptyWeightImg", ignore = true)
@Mapping(target = "emptyWeight", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "bankCard", ignore = true)
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "orderPackageDOList", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "isDepositPaid", ignore = true)
@Mapping(target = "depositAmount", ignore = true)
void toOrderSupplierDO(@MappingTarget OrderSupplierDO orderSupplierDO, OrderSupplierUpdateCmd orderSupplierUpdateCmd);
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "poState", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "orderCostId", ignore = true)
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderCostDO toOrderCostDO(OrderCost orderCost);
List<OrderCostDO> toOrderCostDOList(List<OrderCost> orderCostList);
List<OrderCost> toOrderCostList(List<OrderCostDO> orderCostDOList);
@Mapping(target = "selected", ignore = true)
@Mapping(target = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
OrderCost toOrderCost(OrderCostDO orderCostDO);
@Mapping(target = "purchaseOrderDO", ignore = true)
@Mapping(target = "poState", ignore = true)
@Mapping(target = "orderVehicleDO", ignore = true)
@Mapping(target = "orderCompanyDO", ignore = true)
@Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
OrderRebateDO toOrderRebateDO(OrderRebate orderRebate);
OrderRebate toOrderRebate(OrderRebateDO orderRebateDO);
} }

View File

@ -29,13 +29,13 @@ public class CostDO extends BaseDO<CostDO> {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@TableField(value = "type") @TableField(value = "type")
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@TableField(value = "belong") @TableField(value = "belong")
private CostBelongEnum belong; private CostBelongEnum belong;

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostTypeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.CostTypeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -65,7 +66,7 @@ public class OrderCostDO extends BaseDO<OrderCostDO> {
private Integer count; private Integer count;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@TableField(value = "belong") @TableField(value = "belong")
private CostBelongEnum belong; private CostBelongEnum belong;
@ -83,10 +84,29 @@ public class OrderCostDO extends BaseDO<OrderCostDO> {
private List<Long> costItemIds; private List<Long> costItemIds;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@TableField(value = "type") @TableField(value = "type")
private CostTypeEnum type; private CostTypeEnum type;
/**
* 是否付款
*/
@TableField(value = "is_paid")
private Boolean isPaid;
@TableField(exist = false)
private PurchaseOrderStateEnum poState;
@TableField(exist = false)
private OrderVehicleDO orderVehicleDO;
@TableField(exist = false)
private OrderCompanyDO orderCompanyDO;
@TableField(exist = false)
private PurchaseOrderDO purchaseOrderDO;
} }

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderRebateCalcMethodEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.OrderRebateCalcMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -72,4 +73,23 @@ public class OrderRebateDO extends BaseDO<OrderPackageDO> {
*/ */
@TableField("amount") @TableField("amount")
private BigDecimal amount; private BigDecimal amount;
/**
* 是否付款
*/
@TableField(value = "is_paid")
private Boolean isPaid;
@TableField(exist = false)
private PurchaseOrderStateEnum poState;
@TableField(exist = false)
private OrderVehicleDO orderVehicleDO;
@TableField(exist = false)
private OrderCompanyDO orderCompanyDO;
@TableField(exist = false)
private PurchaseOrderDO purchaseOrderDO;
} }

View File

@ -32,6 +32,19 @@ public class OrderShipDO extends BaseDO<OrderShipDO> {
@TableField(value = "order_id") @TableField(value = "order_id")
private Long orderId; private Long orderId;
/**
* 经销商ID
*/
@TableField(value = "dealer_id")
private Long dealerId;
/**
* 经销商名称
*/
@TableField(value = "dealer_name")
private String dealerName;
/** /**
* 发货单编号 * 发货单编号
*/ */
@ -139,4 +152,7 @@ public class OrderShipDO extends BaseDO<OrderShipDO> {
@TableField(exist = false) @TableField(exist = false)
private List<OrderCostDO> orderCostDOList; private List<OrderCostDO> orderCostDOList;
@TableField(exist = false)
private OrderVehicleDO orderVehicleDO;
} }

View File

@ -9,6 +9,7 @@ import com.xunhong.erp.turbo.api.biz.dto.common.SupplierPackageUsage;
import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem;
import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -216,9 +217,25 @@ public class OrderSupplierDO extends BaseDO<OrderSupplierDO> {
@TableField(value = "deposit_amount") @TableField(value = "deposit_amount")
private BigDecimal depositAmount; private BigDecimal depositAmount;
/**
* 是否付款
*/
@TableField(value = "is_paid")
private Boolean isPaid;
@TableField(exist = false) @TableField(exist = false)
private List<OrderPackageDO> orderPackageDOList; private List<OrderPackageDO> orderPackageDOList;
@TableField(exist = false) @TableField(exist = false)
private OrderVehicleDO orderVehicleDO; private OrderVehicleDO orderVehicleDO;
@TableField(exist = false)
private OrderCompanyDO orderCompanyDO;
@TableField(exist = false)
private PurchaseOrderDO purchaseOrderDO;
@TableField(exist = false)
private PurchaseOrderStateEnum poState;
} }

View File

@ -0,0 +1,108 @@
package com.xunhong.erp.turbo.biz.infrastructure.gateway;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderCost;
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.*;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author shenyifei
*/
@Slf4j
@Repository
@RequiredArgsConstructor
public class OrderCostGatewayImpl implements OrderCostGateway {
private final OrderCostMapper orderCostMapper;
private final OrderCostConvert orderCostConvert;
private final OrderVehicleMapper orderVehicleMapper;
private final OrderCompanyMapper orderCompanyMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
private final CostMapper costMapper;
@Override
public IPage<OrderCost> page(OrderCostPageQry orderCostPageQry) {
LambdaQueryWrapper<OrderCostDO> queryWrapper = Wrappers.lambdaQuery(OrderCostDO.class);
queryWrapper.eq(Objects.nonNull(orderCostPageQry.getCostId()), OrderCostDO::getCostId, orderCostPageQry.getCostId());
queryWrapper.eq(Objects.nonNull(orderCostPageQry.getIsPaid()), OrderCostDO::getIsPaid, orderCostPageQry.getIsPaid());
queryWrapper.in(Objects.nonNull(orderCostPageQry.getBelongs()), OrderCostDO::getBelong, orderCostPageQry.getBelongs());
queryWrapper.orderByDesc(OrderCostDO::getCreatedAt);
IPage<OrderCostDO> page = new Page<>(orderCostPageQry.getPageIndex(), orderCostPageQry.getPageSize());
page = orderCostMapper.selectPage(page, queryWrapper, orderCostPageQry);
List<Long> orderIdList = page.getRecords().stream().map(OrderCostDO::getOrderId).toList();
if (CollUtil.isNotEmpty(orderIdList)) {
LambdaQueryWrapper<OrderVehicleDO> queryWrapper3 = Wrappers.lambdaQuery(OrderVehicleDO.class);
queryWrapper3.in(OrderVehicleDO::getOrderId, orderIdList);
queryWrapper3.select(OrderVehicleDO::getOrderId, OrderVehicleDO::getVehicleNo, OrderVehicleDO::getDeliveryTime, OrderVehicleDO::getOrigin, OrderVehicleDO::getDestination, OrderVehicleDO::getDealerId, OrderVehicleDO::getDealerName);
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(queryWrapper3);
Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
OrderVehicleDO orderVehicleDO = orderVehicleDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(orderVehicleDO)) {
orderCostDO.setOrderVehicleDO(orderVehicleDO);
}
});
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
queryWrapper2.select(OrderCompanyDO::getOrderId, OrderCompanyDO::getShortName, OrderCompanyDO::getFullName, OrderCompanyDO::getCompanyId);
List<OrderCompanyDO> orderCompanyDOList = orderCompanyMapper.selectList(queryWrapper2);
Map<Long, OrderCompanyDO> orderCompanyDOMap = orderCompanyDOList.stream().collect(Collectors.toMap(OrderCompanyDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
OrderCompanyDO orderCompanyDO = orderCompanyDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(orderCompanyDO)) {
orderCostDO.setOrderCompanyDO(orderCompanyDO);
}
});
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper1 = Wrappers.lambdaQuery(PurchaseOrderDO.class);
queryWrapper1.in(PurchaseOrderDO::getOrderId, orderIdList);
queryWrapper1.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getOrderSn, PurchaseOrderDO::getState, PurchaseOrderDO::getAuditState);
List<PurchaseOrderDO> purchaseOrderDOList = purchaseOrderMapper.selectList(queryWrapper1);
Map<Long, PurchaseOrderDO> purchaseOrderDOMap = purchaseOrderDOList.stream().collect(Collectors.toMap(PurchaseOrderDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
PurchaseOrderDO purchaseOrderDO = purchaseOrderDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(purchaseOrderDO)) {
orderCostDO.setPurchaseOrderDO(purchaseOrderDO);
}
});
}
return page.convert(orderCostConvert::toOrderCost);
}
@Override
public OrderCost save(OrderCostCreateCmd orderCostCreateCmd) {
CostDO costDO = costMapper.selectById(orderCostCreateCmd.getCostId());
OrderCostDO orderCostDO = orderCostConvert.toOrderCostDO(orderCostCreateCmd);
orderCostDO.setUnit(costDO.getUnit());
orderCostDO.setName(costDO.getName());
orderCostDO.setBelong(costDO.getBelong());
orderCostMapper.insert(orderCostDO);
return orderCostConvert.toOrderCost(orderCostDO);
}
}

View File

@ -0,0 +1,97 @@
package com.xunhong.erp.turbo.biz.infrastructure.gateway;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderRebate;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderRebateGateway;
import com.xunhong.erp.turbo.biz.infrastructure.convert.OrderRebateConvert;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCompanyDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderVehicleDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderCompanyMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderRebateMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderVehicleMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.PurchaseOrderMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author shenyifei
*/
@Slf4j
@Repository
@RequiredArgsConstructor
public class OrderRebateGatewayImpl implements OrderRebateGateway {
private final OrderRebateMapper orderRebateMapper;
private final OrderRebateConvert orderRebateConvert;
private final OrderVehicleMapper orderVehicleMapper;
private final OrderCompanyMapper orderCompanyMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
@Override
public IPage<OrderRebate> page(OrderRebatePageQry orderRebatePageQry) {
LambdaQueryWrapper<OrderRebateDO> queryWrapper = Wrappers.lambdaQuery(OrderRebateDO.class);
queryWrapper.eq(Objects.nonNull(orderRebatePageQry.getIsPaid()), OrderRebateDO::getIsPaid, orderRebatePageQry.getIsPaid());
queryWrapper.orderByDesc(OrderRebateDO::getCreatedAt);
IPage<OrderRebateDO> page = new Page<>(orderRebatePageQry.getPageIndex(), orderRebatePageQry.getPageSize());
page = orderRebateMapper.selectPage(page, queryWrapper, orderRebatePageQry);
List<Long> orderIdList = page.getRecords().stream().map(OrderRebateDO::getOrderId).toList();
if (CollUtil.isNotEmpty(orderIdList)) {
LambdaQueryWrapper<OrderVehicleDO> queryWrapper3 = Wrappers.lambdaQuery(OrderVehicleDO.class);
queryWrapper3.in(OrderVehicleDO::getOrderId, orderIdList);
queryWrapper3.select(OrderVehicleDO::getOrderId, OrderVehicleDO::getVehicleNo, OrderVehicleDO::getDeliveryTime, OrderVehicleDO::getOrigin, OrderVehicleDO::getDestination, OrderVehicleDO::getDealerId, OrderVehicleDO::getDealerName);
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(queryWrapper3);
Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
OrderVehicleDO orderVehicleDO = orderVehicleDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(orderVehicleDO)) {
orderCostDO.setOrderVehicleDO(orderVehicleDO);
}
});
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
queryWrapper2.select(OrderCompanyDO::getOrderId, OrderCompanyDO::getShortName, OrderCompanyDO::getFullName, OrderCompanyDO::getCompanyId);
List<OrderCompanyDO> orderCompanyDOList = orderCompanyMapper.selectList(queryWrapper2);
Map<Long, OrderCompanyDO> orderCompanyDOMap = orderCompanyDOList.stream().collect(Collectors.toMap(OrderCompanyDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
OrderCompanyDO orderCompanyDO = orderCompanyDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(orderCompanyDO)) {
orderCostDO.setOrderCompanyDO(orderCompanyDO);
}
});
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper1 = Wrappers.lambdaQuery(PurchaseOrderDO.class);
queryWrapper1.in(PurchaseOrderDO::getOrderId, orderIdList);
queryWrapper1.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getOrderSn, PurchaseOrderDO::getState, PurchaseOrderDO::getAuditState);
List<PurchaseOrderDO> purchaseOrderDOList = purchaseOrderMapper.selectList(queryWrapper1);
Map<Long, PurchaseOrderDO> purchaseOrderDOMap = purchaseOrderDOList.stream().collect(Collectors.toMap(PurchaseOrderDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderCostDO -> {
PurchaseOrderDO purchaseOrderDO = purchaseOrderDOMap.get(orderCostDO.getOrderId());
if (Objects.nonNull(purchaseOrderDO)) {
orderCostDO.setPurchaseOrderDO(purchaseOrderDO);
}
});
}
return page.convert(orderRebateConvert::toOrderRebate);
}
}

View File

@ -1,5 +1,6 @@
package com.xunhong.erp.turbo.biz.infrastructure.gateway; package com.xunhong.erp.turbo.biz.infrastructure.gateway;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -20,14 +21,16 @@ import com.xunhong.erp.turbo.biz.infrastructure.convert.OrderShipConvert;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderShipDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderShipDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderShipItemDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderShipItemDO;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderCostMapper; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderVehicleDO;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderShipItemMapper; import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderShipMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @author shenyifei * @author shenyifei
@ -41,6 +44,9 @@ public class OrderShipGatewayImpl implements OrderShipGateway {
private final OrderShipItemMapper orderShipItemMapper; private final OrderShipItemMapper orderShipItemMapper;
private final OrderCostMapper orderCostMapper; private final OrderCostMapper orderCostMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
private final OrderVehicleMapper orderVehicleMapper;
@Override @Override
public OrderShip save(OrderShipCreateCmd orderShipCreateCmd) { public OrderShip save(OrderShipCreateCmd orderShipCreateCmd) {
@ -62,6 +68,17 @@ public class OrderShipGatewayImpl implements OrderShipGateway {
IPage<OrderShipDO> page = new Page<>(orderShipPageQry.getPageIndex(), orderShipPageQry.getPageSize()); IPage<OrderShipDO> page = new Page<>(orderShipPageQry.getPageIndex(), orderShipPageQry.getPageSize());
page = orderShipMapper.selectPage(page, queryWrapper); page = orderShipMapper.selectPage(page, queryWrapper);
List<Long> orderIdList = page.getRecords().stream().map(OrderShipDO::getOrderId).toList();
if (CollUtil.isNotEmpty(orderIdList)) {
LambdaQueryWrapper<OrderVehicleDO> queryWrapper1 = Wrappers.lambdaQuery(OrderVehicleDO.class);
queryWrapper1.in(OrderVehicleDO::getOrderId, orderIdList);
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(queryWrapper1);
Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderShipDO -> {
orderShipDO.setOrderVehicleDO(orderVehicleDOMap.get(orderShipDO.getOrderId()));
});
}
return page.convert(orderShipConvert::toOrderShip); return page.convert(orderShipConvert::toOrderShip);
} }

View File

@ -1,20 +1,28 @@
package com.xunhong.erp.turbo.biz.infrastructure.gateway; package com.xunhong.erp.turbo.biz.infrastructure.gateway;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway; import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway;
import com.xunhong.erp.turbo.biz.infrastructure.convert.OrderSupplierConvert; import com.xunhong.erp.turbo.biz.infrastructure.convert.OrderSupplierConvert;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCompanyDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderVehicleDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderVehicleDO;
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderCompanyMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderSupplierMapper; import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderSupplierMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderVehicleMapper; import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderVehicleMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.PurchaseOrderMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -26,6 +34,7 @@ import java.util.stream.Collectors;
/** /**
* @author shenyifei * @author shenyifei
*/ */
@Slf4j
@Repository @Repository
@RequiredArgsConstructor @RequiredArgsConstructor
public class OrderSupplierGatewayImpl implements OrderSupplierGateway { public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
@ -33,14 +42,16 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
private final OrderSupplierConvert orderSupplierConvert; private final OrderSupplierConvert orderSupplierConvert;
private final OrderVehicleMapper orderVehicleMapper; private final OrderVehicleMapper orderVehicleMapper;
private final OrderCompanyMapper orderCompanyMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
@Override @Override
public IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry) { public IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry) {
LambdaQueryWrapper<OrderSupplierDO> queryWrapper = Wrappers.lambdaQuery(OrderSupplierDO.class); LambdaQueryWrapper<OrderSupplierDO> queryWrapper = Wrappers.lambdaQuery(OrderSupplierDO.class);
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getOrderId()), OrderSupplierDO::getOrderId, orderSupplierPageQry.getOrderId());
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getSupplierId()), OrderSupplierDO::getSupplierId, orderSupplierPageQry.getSupplierId()); queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getSupplierId()), OrderSupplierDO::getSupplierId, orderSupplierPageQry.getSupplierId());
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getInvoiceUpload()), OrderSupplierDO::getInvoiceUpload, orderSupplierPageQry.getInvoiceUpload()); queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getInvoiceUpload()), OrderSupplierDO::getInvoiceUpload, orderSupplierPageQry.getInvoiceUpload());
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getIsPaid()), OrderSupplierDO::getIsPaid, orderSupplierPageQry.getIsPaid());
queryWrapper.orderByDesc(OrderSupplierDO::getCreatedAt); queryWrapper.orderByDesc(OrderSupplierDO::getCreatedAt);
@ -49,7 +60,10 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
List<Long> orderIdList = page.getRecords().stream().map(OrderSupplierDO::getOrderId).toList(); List<Long> orderIdList = page.getRecords().stream().map(OrderSupplierDO::getOrderId).toList();
if (CollUtil.isNotEmpty(orderIdList)) { if (CollUtil.isNotEmpty(orderIdList)) {
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(Wrappers.lambdaQuery(OrderVehicleDO.class).in(OrderVehicleDO::getOrderId, orderIdList)); LambdaQueryWrapper<OrderVehicleDO> queryWrapper3 = Wrappers.lambdaQuery(OrderVehicleDO.class);
queryWrapper3.in(OrderVehicleDO::getOrderId, orderIdList);
queryWrapper3.select(OrderVehicleDO::getOrderId, OrderVehicleDO::getVehicleNo, OrderVehicleDO::getDeliveryTime, OrderVehicleDO::getOrigin, OrderVehicleDO::getDestination, OrderVehicleDO::getDealerId, OrderVehicleDO::getDealerName);
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(queryWrapper3);
Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity())); Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderSupplierDO -> { page.getRecords().forEach(orderSupplierDO -> {
OrderVehicleDO orderVehicleDO = orderVehicleDOMap.get(orderSupplierDO.getOrderId()); OrderVehicleDO orderVehicleDO = orderVehicleDOMap.get(orderSupplierDO.getOrderId());
@ -57,6 +71,30 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
orderSupplierDO.setOrderVehicleDO(orderVehicleDO); orderSupplierDO.setOrderVehicleDO(orderVehicleDO);
} }
}); });
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
queryWrapper2.select(OrderCompanyDO::getOrderId, OrderCompanyDO::getShortName, OrderCompanyDO::getFullName, OrderCompanyDO::getCompanyId);
List<OrderCompanyDO> orderCompanyDOList = orderCompanyMapper.selectList(queryWrapper2);
Map<Long, OrderCompanyDO> orderCompanyDOMap = orderCompanyDOList.stream().collect(Collectors.toMap(OrderCompanyDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderSupplierDO -> {
OrderCompanyDO orderCompanyDO = orderCompanyDOMap.get(orderSupplierDO.getOrderId());
if (Objects.nonNull(orderCompanyDO)) {
orderSupplierDO.setOrderCompanyDO(orderCompanyDO);
}
});
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper1 = Wrappers.lambdaQuery(PurchaseOrderDO.class);
queryWrapper1.in(PurchaseOrderDO::getOrderId, orderIdList);
queryWrapper1.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getOrderSn, PurchaseOrderDO::getState, PurchaseOrderDO::getAuditState);
List<PurchaseOrderDO> purchaseOrderDOList = purchaseOrderMapper.selectList(queryWrapper1);
Map<Long, PurchaseOrderDO> purchaseOrderDOMap = purchaseOrderDOList.stream().collect(Collectors.toMap(PurchaseOrderDO::getOrderId, Function.identity()));
page.getRecords().forEach(orderSupplierDO -> {
PurchaseOrderDO purchaseOrderDO = purchaseOrderDOMap.get(orderSupplierDO.getOrderId());
if (Objects.nonNull(purchaseOrderDO)) {
orderSupplierDO.setPurchaseOrderDO(purchaseOrderDO);
}
});
} }
return page.convert(orderSupplierConvert::toOrderSupplier); return page.convert(orderSupplierConvert::toOrderSupplier);
@ -75,5 +113,17 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
return orderSupplierConvert.toOrderSupplier(orderSupplierDO); return orderSupplierConvert.toOrderSupplier(orderSupplierDO);
} }
@Override
public void batchInvoiceUpload(OrderSupplierBatchInvoiceUploadCmd orderSupplierBatchInvoiceUploadCmd) {
// 构建更新条件
LambdaUpdateWrapper<OrderSupplierDO> updateWrapper = Wrappers.lambdaUpdate(OrderSupplierDO.class);
updateWrapper.in(OrderSupplierDO::getOrderSupplierId, orderSupplierBatchInvoiceUploadCmd.getOrderSupplierIdList())
.set(OrderSupplierDO::getInvoiceUpload, true)
.set(OrderSupplierDO::getInvoiceImg, JSONObject.toJSONString(orderSupplierBatchInvoiceUploadCmd.getInvoiceImg()));
// 执行更新
orderSupplierMapper.update(updateWrapper);
}
} }

View File

@ -212,6 +212,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
LambdaQueryWrapper<OrderShipDO> queryWrapper6 = Wrappers.lambdaQuery(OrderShipDO.class); LambdaQueryWrapper<OrderShipDO> queryWrapper6 = Wrappers.lambdaQuery(OrderShipDO.class);
queryWrapper6.eq(OrderShipDO::getOrderId, purchaseOrderDO.getOrderId()); queryWrapper6.eq(OrderShipDO::getOrderId, purchaseOrderDO.getOrderId());
queryWrapper6.eq(Objects.nonNull(purchaseOrderShowQry.getOrderShipId()), OrderShipDO::getOrderShipId, purchaseOrderShowQry.getOrderShipId());
List<OrderShipDO> orderShipDOList = orderShipMapper.selectList(queryWrapper6); List<OrderShipDO> orderShipDOList = orderShipMapper.selectList(queryWrapper6);
LambdaQueryWrapper<OrderShipItemDO> queryWrapper7 = Wrappers.lambdaQuery(OrderShipItemDO.class); LambdaQueryWrapper<OrderShipItemDO> queryWrapper7 = Wrappers.lambdaQuery(OrderShipItemDO.class);
@ -339,7 +340,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
// 更新供应商信息直接更新因为不存在条数更新 // 更新供应商信息直接更新因为不存在条数更新
purchaseOrderApproveCmd.getOrderSupplierList().forEach(orderSupplier -> { purchaseOrderApproveCmd.getOrderSupplierList().forEach(orderSupplier -> {
orderSupplier.setOrderId(purchaseOrderDO.getOrderId()); orderSupplier.setOrderId(purchaseOrderDO.getOrderId());
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(orderSupplier); OrderSupplierDO orderSupplierDO = purchaseOrderConvert.toOrderSupplierDO(orderSupplier);
orderSupplierDO.setOrderSupplierId(orderSupplier.getOrderSupplierId()); orderSupplierDO.setOrderSupplierId(orderSupplier.getOrderSupplierId());
// 直接更新包材信息因为包材信息条数也不会变 // 直接更新包材信息因为包材信息条数也不会变
@ -359,7 +360,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
OrderRebate orderRebate = purchaseOrderApproveCmd.getOrderRebate(); OrderRebate orderRebate = purchaseOrderApproveCmd.getOrderRebate();
if (Objects.nonNull(orderRebate)) { if (Objects.nonNull(orderRebate)) {
orderRebate.setOrderId(purchaseOrderDO.getOrderId()); orderRebate.setOrderId(purchaseOrderDO.getOrderId());
OrderRebateDO orderRebateDO = orderRebateConvert.toOrderRebateDO(orderRebate); OrderRebateDO orderRebateDO = purchaseOrderConvert.toOrderRebateDO(orderRebate);
// 先尝试更新如果不存在则插入 // 先尝试更新如果不存在则插入
if (orderRebateDO.getOrderRebateId() != null) { if (orderRebateDO.getOrderRebateId() != null) {
orderRebateMapper.updateById(orderRebateDO); orderRebateMapper.updateById(orderRebateDO);
@ -377,7 +378,19 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
} }
saveOrderCostItem(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderCostItemList().stream().toList()); saveOrderCostItem(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderCostItemList().stream().toList());
saveOrderCost(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderCostList().stream().toList()); saveOrderCost(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderCostList().stream().peek(orderCost -> {
if (orderCost.getBelong().equals(CostBelongEnum.PRODUCTION_TYPE)) {
orderCost.setPrincipal(purchaseOrderDO.getOriginPrincipal());
}
if (orderCost.getBelong().equals(CostBelongEnum.DRIVER_TYPE)) {
orderCost.setPrincipal(orderVehicleDO.getDriver());
}
if (orderCost.getBelong().equals(CostBelongEnum.WORKER_TYPE)) {
orderCost.setPrincipal(purchaseOrderDO.getForeman());
}
}).toList());
saveOrderShip(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderShipList().stream().toList(), purchaseOrderApproveCmd); saveOrderShip(purchaseOrderDO.getOrderId(), purchaseOrderApproveCmd.getOrderShipList().stream().toList(), purchaseOrderApproveCmd);
} }
@ -856,7 +869,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
} }
updatedSupplier.setOrderId(orderId); updatedSupplier.setOrderId(orderId);
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(updatedSupplier); OrderSupplierDO orderSupplierDO = purchaseOrderConvert.toOrderSupplierDO(updatedSupplier);
if (updatedSupplier.getSupplierId() != null && existingOrderSupplierMap.containsKey(updatedSupplier.getSupplierId())) { if (updatedSupplier.getSupplierId() != null && existingOrderSupplierMap.containsKey(updatedSupplier.getSupplierId())) {
// 更新已存在的供应商 // 更新已存在的供应商
@ -980,7 +993,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
purchaseOrderMapper.updateById(purchaseOrderDO); purchaseOrderMapper.updateById(purchaseOrderDO);
saveOrderCostItem(orderId, purchaseOrderStep3Cmd.getOrderCostItemList().stream().toList()); saveOrderCostItem(orderId, purchaseOrderStep3Cmd.getOrderCostItemList().stream().toList());
saveOrderCost(orderId, purchaseOrderStep3Cmd.getOrderCostList().stream().toList()); saveOrderCost(purchaseOrderDO.getOrderId(), purchaseOrderStep3Cmd.getOrderCostList().stream().toList());
// 空箱费 // 空箱费
if (purchaseOrderStep3Cmd.getOrderPackageList() != null) { if (purchaseOrderStep3Cmd.getOrderPackageList() != null) {
@ -1062,7 +1075,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
for (OrderCost updatedCost : orderCostList) { for (OrderCost updatedCost : orderCostList) {
updatedCost.setOrderId(orderId); updatedCost.setOrderId(orderId);
OrderCostDO costDO = orderCostConvert.toOrderCostDO(updatedCost); OrderCostDO costDO = purchaseOrderConvert.toOrderCostDO(updatedCost);
if (existingCostMap.containsKey(updatedCost.getCostId())) { if (existingCostMap.containsKey(updatedCost.getCostId())) {
// 更新已存在的费用 // 更新已存在的费用

View File

@ -1,13 +1,20 @@
package com.xunhong.erp.turbo.biz.infrastructure.mapper; 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.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.OrderCostPageQry;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* @author shenyifei * @author shenyifei
*/ */
@Mapper @Mapper
public interface OrderCostMapper extends BaseMapper<OrderCostDO> { public interface OrderCostMapper extends BaseMapper<OrderCostDO> {
IPage<OrderCostDO> selectPage(IPage<OrderCostDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<OrderCostDO> queryWrapper, @Param("query") OrderCostPageQry orderCostPageQry);
} }

View File

@ -1,13 +1,19 @@
package com.xunhong.erp.turbo.biz.infrastructure.mapper; 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.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.OrderRebatePageQry;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO; import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* @author shenyifei * @author shenyifei
*/ */
@Mapper @Mapper
public interface OrderRebateMapper extends BaseMapper<OrderRebateDO> { public interface OrderRebateMapper extends BaseMapper<OrderRebateDO> {
IPage<OrderRebateDO> selectPage(IPage<OrderRebateDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<OrderRebateDO> queryWrapper, @Param("query") OrderRebatePageQry orderRebatePageQry);
} }

View File

@ -14,11 +14,44 @@
<result property="belong" column="belong"/> <result property="belong" column="belong"/>
<result property="principal" column="principal"/> <result property="principal" column="principal"/>
<result property="type" column="type"/> <result property="type" column="type"/>
<result property="isPaid" column="is_paid"/>
<result property="poState" column="po_state"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
<result property="updatedAt" column="updated_at"/> <result property="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/> <result property="isDelete" column="is_delete"/>
<result property="version" column="version"/> <result property="version" column="version"/>
</resultMap> </resultMap>
<select id="selectPage"
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO"
resultMap="BaseResultMap">
SELECT
oc.*,
po.state as po_state
FROM order_cost oc
LEFT JOIN order_vehicle ov ON oc.order_id = ov.order_id AND ov.is_delete = 0
LEFT JOIN purchase_order po ON oc.order_id = po.order_id AND po.is_delete = 0
<where>
oc.is_delete = 0
<if test="query.createdBy != null">
AND po.created_by = #{query.createdBy}
</if>
<if test="query.orderId != null">
AND po.order_id = #{query.orderId}
</if>
<if test="query.poStates != null and query.poStates.size() > 0">
AND po.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> </mapper>

View File

@ -13,11 +13,44 @@
<result property="netWeight" column="net_weight"/> <result property="netWeight" column="net_weight"/>
<result property="unitPrice" column="unit_price"/> <result property="unitPrice" column="unit_price"/>
<result property="amount" column="amount"/> <result property="amount" column="amount"/>
<result property="isPaid" column="is_paid"/>
<result property="poState" column="po_state"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
<result property="updatedAt" column="updated_at"/> <result property="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/> <result property="isDelete" column="is_delete"/>
<result property="version" column="version"/> <result property="version" column="version"/>
</resultMap> </resultMap>
<select id="selectPage"
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO"
resultMap="BaseResultMap">
SELECT
ore.*,
po.state as po_state
FROM order_rebate ore
LEFT JOIN order_vehicle ov ON ore.order_id = ov.order_id AND ov.is_delete = 0
LEFT JOIN purchase_order po ON ore.order_id = po.order_id AND po.is_delete = 0
<where>
ore.is_delete = 0
<if test="query.createdBy != null">
AND po.created_by = #{query.createdBy}
</if>
<if test="query.orderId != null">
AND po.order_id = #{query.orderId}
</if>
<if test="query.poStates != null and query.poStates.size() > 0">
AND po.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> </mapper>

View File

@ -41,6 +41,8 @@
<result property="costTemplate" column="cost_template"/> <result property="costTemplate" column="cost_template"/>
<result property="isDepositPaid" column="is_deposit_paid"/> <result property="isDepositPaid" column="is_deposit_paid"/>
<result property="depositAmount" column="deposit_amount"/> <result property="depositAmount" column="deposit_amount"/>
<result property="isPaid" column="is_paid"/>
<result property="poState" column="po_state"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
<result property="updatedAt" column="updated_at"/> <result property="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/> <result property="isDelete" column="is_delete"/>
@ -51,7 +53,8 @@
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO" resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT SELECT
os.* os.*,
po.state as po_state
FROM order_supplier os FROM order_supplier os
LEFT JOIN order_vehicle ov ON os.order_id = ov.order_id AND ov.is_delete = 0 LEFT JOIN order_vehicle ov ON os.order_id = ov.order_id AND ov.is_delete = 0
LEFT JOIN purchase_order po ON os.order_id = po.order_id AND po.is_delete = 0 LEFT JOIN purchase_order po ON os.order_id = po.order_id AND po.is_delete = 0
@ -63,10 +66,13 @@
<if test="query.createdBy != null"> <if test="query.createdBy != null">
AND po.created_by = #{query.createdBy} AND po.created_by = #{query.createdBy}
</if> </if>
<if test="query.orderId != null">
AND po.order_id = #{query.orderId}
</if>
<if test="query.poStates != null and query.poStates.size() > 0"> <if test="query.poStates != null and query.poStates.size() > 0">
AND po.state IN AND po.state IN
<foreach collection="poStates" item="state" open="(" separator="," close=")"> <foreach collection="query.poStates" item="state" open="(" separator="," close=")">
#{state} #{state.type}
</foreach> </foreach>
</if> </if>
<if test="ew != null"> <if test="ew != null">

View File

@ -0,0 +1,16 @@
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.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderCostVO;
import com.xunhong.erp.turbo.base.dto.PageDTO;
/**
* @author shenyifei
*/
public interface OrderCostServiceI {
PageDTO<OrderCostVO> page(OrderCostPageQry orderCostPageQry);
OrderCostVO create(OrderCostCreateCmd orderCostCreateCmd);
}

View File

@ -0,0 +1,13 @@
package com.xunhong.erp.turbo.api.biz.api;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderRebateVO;
import com.xunhong.erp.turbo.base.dto.PageDTO;
/**
* @author shenyifei
*/
public interface OrderRebateServiceI {
PageDTO<OrderRebateVO> page(OrderRebatePageQry orderRebatePageQry);
}

View File

@ -1,5 +1,6 @@
package com.xunhong.erp.turbo.api.biz.api; package com.xunhong.erp.turbo.api.biz.api;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd;
import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
@ -12,5 +13,12 @@ public interface OrderSupplierServiceI {
PageDTO<OrderSupplierVO> page(OrderSupplierPageQry orderSupplierPageQry); PageDTO<OrderSupplierVO> page(OrderSupplierPageQry orderSupplierPageQry);
OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd); OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd);
/**
* 批量上传供应商发票
*
* @param batchInvoiceUploadCmd 批量上传发票命令
*/
void batchUploadInvoice(OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd);
} }

View File

@ -25,15 +25,15 @@ public class CostCreateCmd extends Command {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型", requiredMode = Schema.RequiredMode.REQUIRED)
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@Schema(title = "费用归属:1_工头2_产地", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "费用归属:0_无归属1_工头2_产地3_司机", requiredMode = Schema.RequiredMode.REQUIRED)
private CostBelongEnum belong; private CostBelongEnum belong;
/** /**

View File

@ -118,5 +118,17 @@ public class DealerCreateCmd extends Command {
@Schema(title = "是否可调整比例") @Schema(title = "是否可调整比例")
private Boolean shareAdjusted; private Boolean shareAdjusted;
/**
* 是否开启损耗
*/
@Schema(title = "是否开启损耗")
private Boolean enableLoss;
/**
* 损耗金额
*/
@Schema(title = "损耗金额")
private BigDecimal lossAmount;
} }

View File

@ -0,0 +1,89 @@
package com.xunhong.erp.turbo.api.biz.dto.cmd;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostTypeEnum;
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.util.List;
/**
* @author shenyifei
*/
@Data
@Schema(title = "订单成本费用创建")
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrderCostCreateCmd extends Command {
/**
* 订单ID
*/
@Schema(title = "订单ID", type = "string")
private Long orderId;
/**
* 费用Id
*/
@Schema(title = "费用Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long costId;
/**
* 成本项目名称
*/
@Schema(title = "成本项目名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String name;
/**
* 单价
*/
@Schema(title = "单价", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal price;
/**
* 单位
*/
@Schema(title = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
private String unit;
/**
* 数量
*/
@Schema(title = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
/**
* 费用归属0_无归属1_工头2_产地3_司机
*/
@Schema(title = "费用归属0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong;
/**
* 负责人
*/
@Schema(title = "负责人")
private String principal;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型", requiredMode = Schema.RequiredMode.REQUIRED)
private CostTypeEnum type;
/**
* 关联项目id
*/
@Schema(title = "关联项目id")
private List<Long> costItemIds;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
}

View File

@ -0,0 +1,39 @@
package com.xunhong.erp.turbo.api.biz.dto.cmd;
import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem;
import com.xunhong.erp.turbo.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 订单供应商批量上传发票命令
*
* @author claude
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "订单供应商批量上传发票命令")
public class OrderSupplierBatchInvoiceUploadCmd extends Command {
/**
* 供应商ID列表
*/
@Schema(description = "供应商ID列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<Long> orderSupplierIdList;
/**
* 是否上传票证
*/
@Schema(title = "是否上传票证")
private Boolean invoiceUpload;
/**
* 发票照片
*/
@Schema(title = "发票照片")
private List<UploadFileItem> invoiceImg;
}

View File

@ -57,6 +57,12 @@ public class OrderSupplierUpdateCmd extends Command {
@Schema(title = "定金金额") @Schema(title = "定金金额")
private BigDecimal depositAmount; private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
/** /**
* 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板 * 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板
*/ */

View File

@ -1,5 +1,6 @@
package com.xunhong.erp.turbo.api.biz.dto.common; package com.xunhong.erp.turbo.api.biz.dto.common;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xunhong.erp.turbo.base.dto.Command; import com.xunhong.erp.turbo.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -11,6 +12,7 @@ import lombok.EqualsAndHashCode;
@Data @Data
@Schema(title = "采购订单公司信息创建") @Schema(title = "采购订单公司信息创建")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderCompany extends Command { public class OrderCompany extends Command {
/** /**

View File

@ -63,9 +63,9 @@ public class OrderCost extends Command {
private Integer count; private Integer count;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@Schema(title = "费用归属:1_工头2_产地") @Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong; private CostBelongEnum belong;
/** /**
@ -75,9 +75,9 @@ public class OrderCost extends Command {
private String principal; private String principal;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型", requiredMode = Schema.RequiredMode.REQUIRED)
private CostTypeEnum type; private CostTypeEnum type;
/** /**
@ -92,5 +92,11 @@ public class OrderCost extends Command {
*/ */
@Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean selected; private Boolean selected;
/**
* 是否已付款
*/
@Schema(title = "是否已付款")
private Boolean isPaid;
} }

View File

@ -65,4 +65,10 @@ public class OrderRebate extends DTO {
*/ */
@Schema(title = "返点金额") @Schema(title = "返点金额")
private BigDecimal amount; private BigDecimal amount;
/**
* 是否已付款
*/
@Schema(title = "是否已付款")
private Boolean isPaid;
} }

View File

@ -35,6 +35,18 @@ public class OrderShip extends Command {
@Schema(title = "发货单编号", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "发货单编号", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderSn; private String orderSn;
/**
* 经销商ID
*/
@Schema(title = "经销商ID", type = "string")
private Long dealerId;
/**
* 经销商名称
*/
@Schema(title = "经销商名称")
private String dealerName;
/** /**
* 仓库ID * 仓库ID
*/ */

View File

@ -2,12 +2,14 @@ package com.xunhong.erp.turbo.api.biz.dto.common;
import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import com.xunhong.erp.turbo.base.dto.Command; import com.xunhong.erp.turbo.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@ -210,6 +212,12 @@ public class OrderSupplier extends Command {
@Schema(title = "定金金额") @Schema(title = "定金金额")
private BigDecimal depositAmount; private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
/** /**
* 采购订单包装箱信息 * 采购订单包装箱信息
*/ */
@ -222,9 +230,27 @@ public class OrderSupplier extends Command {
@Schema(title = "采购订单车辆信息") @Schema(title = "采购订单车辆信息")
private OrderVehicle orderVehicle; private OrderVehicle orderVehicle;
/**
* 采购订单公司信息
*/
@Schema(title = "采购订单公司信息")
private OrderCompany orderCompany;
/** /**
* 是否选中 * 是否选中
*/ */
@Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean selected; private Boolean selected;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
@Schema(title = "采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭")
private PurchaseOrderStateEnum poState;
/**
* 创建时间
*/
@Schema(title = "创建时间")
private LocalDateTime createdAt;
} }

View File

@ -1,6 +1,7 @@
package com.xunhong.erp.turbo.api.biz.dto.common; package com.xunhong.erp.turbo.api.biz.dto.common;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderVehiclePriceTypeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.OrderVehiclePriceTypeEnum;
import com.xunhong.erp.turbo.base.dto.Command; import com.xunhong.erp.turbo.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -17,6 +18,7 @@ import java.time.LocalDate;
@Data @Data
@Schema(title = "采购订单车辆运输信息创建") @Schema(title = "采购订单车辆运输信息创建")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderVehicle extends Command { public class OrderVehicle extends Command {
/** /**

View File

@ -8,11 +8,12 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
public enum CostBelongEnum { public enum CostBelongEnum {
/** /**
* 费用归属0_无归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
NONE_TYPE(0, "无归属"), NONE_TYPE(0, "无归属"),
WORKER_TYPE(1, "工头"), WORKER_TYPE(1, "工头"),
PRODUCTION_TYPE(2, "产地"), PRODUCTION_TYPE(2, "产地"),
DRIVER_TYPE(3, "司机"),
; ;
@EnumValue @EnumValue

View File

@ -8,12 +8,13 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
public enum CostTypeEnum { public enum CostTypeEnum {
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型5_物流类型
*/ */
MATERIAL_TYPE(1, "辅料类型"), MATERIAL_TYPE(1, "辅料类型"),
ARTIFICIAL_TYPE(2, "人工类型"), ARTIFICIAL_TYPE(2, "人工类型"),
PRODUCTION_TYPE(3, "产地类型"), PRODUCTION_TYPE(3, "产地类型"),
OTHER_TYPE(4, "其他类型"), OTHER_TYPE(4, "其他类型"),
LOGISTICS_TYPE(5, "物流类型"),
; ;
@EnumValue @EnumValue

View File

@ -19,15 +19,15 @@ public class CostListQry extends Query {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型") @Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型")
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@Schema(title = "费用归属:1_工头2_产地") @Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong; private CostBelongEnum belong;
} }

View File

@ -19,15 +19,15 @@ public class CostPageQry extends PageQuery {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型") @Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型")
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@Schema(title = "费用归属:1_工头2_产地") @Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong; private CostBelongEnum belong;
} }

View File

@ -0,0 +1,38 @@
package com.xunhong.erp.turbo.api.biz.dto.qry;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
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
*/
@Data
@Schema(title = "订单成本分页查询")
@EqualsAndHashCode(callSuper = true)
public class OrderCostPageQry extends PageQuery {
@Schema(title = "订单ID", type = "string")
private Long orderId;
@Schema(title = "订单ID", type = "string")
private Long costId;
@Schema(title = "供应商id", type = "string")
private Long supplierId;
@Schema(title = "订单状态")
private List<PurchaseOrderStateEnum> poStates;
@Schema(title = "所属方")
private List<CostBelongEnum> belongs;
@Schema(title = "是否支付", type = "boolean")
private Boolean isPaid;
}

View File

@ -0,0 +1,28 @@
package com.xunhong.erp.turbo.api.biz.dto.qry;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
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
*/
@Data
@Schema(title = "订单返点分页查询")
@EqualsAndHashCode(callSuper = true)
public class OrderRebatePageQry extends PageQuery {
@Schema(title = "订单ID", type = "string")
private Long orderId;
@Schema(title = "订单状态")
private List<PurchaseOrderStateEnum> poStates;
@Schema(title = "是否支付", type = "boolean")
private Boolean isPaid;
}

View File

@ -36,5 +36,8 @@ public class OrderSupplierPageQry extends PageQuery {
@Schema(title = "订单状态") @Schema(title = "订单状态")
private List<PurchaseOrderStateEnum> poStates; private List<PurchaseOrderStateEnum> poStates;
@Schema(title = "是否支付", type = "boolean")
private Boolean isPaid;
} }

View File

@ -15,5 +15,8 @@ public class PurchaseOrderShowQry extends Query {
@Schema(title = "采购订单ID", type = "string") @Schema(title = "采购订单ID", type = "string")
private Long orderId; private Long orderId;
@Schema(title = "采购订单发货ID", type = "string")
private Long orderShipId;
} }

View File

@ -26,15 +26,15 @@ public class CostVO extends DTO {
private Long costId; private Long costId;
/** /**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 * 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/ */
@Schema(title = "费用类型", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "费用类型", requiredMode = Schema.RequiredMode.REQUIRED)
private CostTypeEnum type; private CostTypeEnum type;
/** /**
* 费用归属1_工头2_产地 * 费用归属0_无归属1_工头2_产地3_司机
*/ */
@Schema(title = "费用归属:1_工头2_产地", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "费用归属:0_无归属1_工头2_产地3_司机", requiredMode = Schema.RequiredMode.REQUIRED)
private CostBelongEnum belong; private CostBelongEnum belong;
/** /**

View File

@ -137,5 +137,17 @@ public class DealerVO extends DTO {
*/ */
@Schema(title = "是否可调整比例") @Schema(title = "是否可调整比例")
private Boolean shareAdjusted; private Boolean shareAdjusted;
/**
* 是否开启损耗
*/
@Schema(title = "是否开启损耗")
private Boolean enableLoss;
/**
* 损耗金额
*/
@Schema(title = "损耗金额")
private BigDecimal lossAmount;
} }

View File

@ -0,0 +1,132 @@
package com.xunhong.erp.turbo.api.biz.dto.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCompany;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostBelongEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostTypeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
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)
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrderCostVO extends Command {
/**
* 记录ID
*/
@Schema(title = "记录ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderCostId;
/**
* 订单ID
*/
@Schema(title = "订单ID", type = "string")
private Long orderId;
/**
* 费用Id
*/
@Schema(title = "费用Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long costId;
/**
* 成本项目名称
*/
@Schema(title = "成本项目名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String name;
/**
* 单价
*/
@Schema(title = "单价", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal price;
/**
* 单位
*/
@Schema(title = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
private String unit;
/**
* 数量
*/
@Schema(title = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
/**
* 费用归属0_无归属1_工头2_产地3_司机
*/
@Schema(title = "费用归属0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong;
/**
* 负责人
*/
@Schema(title = "负责人")
private String principal;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
@Schema(title = "费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型", requiredMode = Schema.RequiredMode.REQUIRED)
private CostTypeEnum type;
/**
* 关联项目id
*/
@Schema(title = "关联项目id")
private List<Long> costItemIds;
/**
* 创建时间
*/
@Schema(title = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createdAt;
/**
* 车辆信息
*/
@Schema(title = "车辆信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderVehicle orderVehicle;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
@Schema(title = "采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭")
private PurchaseOrderStateEnum poState;
/**
* 公司信息
*/
@Schema(title = "公司信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
@Schema(title = "采购订单信息", requiredMode = Schema.RequiredMode.REQUIRED)
private PurchaseOrderVO purchaseOrderVO;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
}

View File

@ -0,0 +1,108 @@
package com.xunhong.erp.turbo.api.biz.dto.vo;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCompany;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderRebateCalcMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
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;
@Data
@EqualsAndHashCode(callSuper = true)
public class OrderRebateVO extends Command {
/**
* 记录ID
*/
@Schema(title = "记录ID", type = "string")
private Long orderRebateId;
/**
* 订单ID
*/
@Schema(title = "订单ID", type = "string")
private Long orderId;
/**
* 客户ID
*/
@Schema(title = "客户ID", type = "string")
private Long customerId;
/**
* 经销商ID
*/
@Schema(title = "经销商ID", type = "string")
private Long dealerId;
/**
* 客户名称
*/
@Schema(title = "客户名称")
private String name;
/**
* 返点计算方式1_按净重计算2_固定金额
*/
@Schema(title = "返点计算方式1_按净重计算2_固定金额")
private OrderRebateCalcMethodEnum calcMethod;
/**
* 返点净重
*/
@Schema(title = "返点净重")
private BigDecimal netWeight;
/**
* 返点单价
*/
@Schema(title = "返点单价")
private BigDecimal unitPrice;
/**
* 返点金额
*/
@Schema(title = "返点金额")
private BigDecimal amount;
/**
* 创建时间
*/
@Schema(title = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createdAt;
/**
* 车辆信息
*/
@Schema(title = "车辆信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderVehicle orderVehicle;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
@Schema(title = "采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭")
private PurchaseOrderStateEnum poState;
/**
* 公司信息
*/
@Schema(title = "公司信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
@Schema(title = "采购订单信息", requiredMode = Schema.RequiredMode.REQUIRED)
private PurchaseOrderVO purchaseOrderVO;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
}

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.DTO;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost; import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderShipItem; import com.xunhong.erp.turbo.api.biz.dto.common.OrderShipItem;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -34,6 +35,18 @@ public class OrderShipVO extends DTO {
@Schema(title = "采购单ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "采购单ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderId; private Long orderId;
/**
* 经销商ID
*/
@Schema(title = "经销商ID", type = "string")
private Long dealerId;
/**
* 经销商名称
*/
@Schema(title = "经销商名称")
private String dealerName;
/** /**
* 发货单编号 * 发货单编号
*/ */
@ -153,4 +166,10 @@ public class OrderShipVO extends DTO {
@Schema(title = "发货单成本项目信息") @Schema(title = "发货单成本项目信息")
private List<OrderCost> orderCostList; private List<OrderCost> orderCostList;
/**
* 采购订单车辆运输信息
*/
@Schema(title = "采购订单车辆运输信息")
private OrderVehicle orderVehicle;
} }

View File

@ -1,9 +1,12 @@
package com.xunhong.erp.turbo.api.biz.dto.vo; package com.xunhong.erp.turbo.api.biz.dto.vo;
import com.alibaba.cola.dto.DTO; import com.alibaba.cola.dto.DTO;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCompany;
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle; import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem;
import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.LoadingModeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -35,176 +38,199 @@ public class OrderSupplierVO extends DTO {
/** /**
* 供应商ID * 供应商ID
*/ */
@Schema(title = "供应商ID", type = "string") @Schema(title = "供应商ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long supplierId; private Long supplierId;
/** /**
* 供应商姓名 * 供应商姓名
*/ */
@Schema(title = "供应商姓名") @Schema(title = "供应商姓名", requiredMode = Schema.RequiredMode.REQUIRED)
private String name; private String name;
/** /**
* 身份证号 * 身份证号
*/ */
@Schema(title = "身份证号") @Schema(title = "身份证号", requiredMode = Schema.RequiredMode.REQUIRED)
private String idCard; private String idCard;
/** /**
* 银行卡号 * 银行卡号
*/ */
@Schema(title = "银行卡号") @Schema(title = "银行卡号", requiredMode = Schema.RequiredMode.REQUIRED)
private String bankCard; private String bankCard;
/** /**
* 手机号 * 手机号
*/ */
@Schema(title = "手机号") @Schema(title = "手机号", requiredMode = Schema.RequiredMode.REQUIRED)
private String phone; private String phone;
/** /**
* 微信二维码 * 微信二维码
*/ */
@Schema(title = "微信二维码") @Schema(title = "微信二维码", requiredMode = Schema.RequiredMode.REQUIRED)
private String wechatQr; private String wechatQr;
/** /**
* 是否最后一家 * 是否最后一家
*/ */
@Schema(title = "是否最后一家") @Schema(title = "是否最后一家", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isLast; private Boolean isLast;
/** /**
* 空磅是否包含纸箱 * 空磅是否包含纸箱
*/ */
@Schema(title = "空磅是否包含纸箱") @Schema(title = "空磅是否包含纸箱", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isPaper; private Boolean isPaper;
/** /**
* 产品id * 产品id
*/ */
@Schema(title = "产品id", type = "string") @Schema(title = "产品id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long productId; private Long productId;
/** /**
* 产品名称 * 产品名称
*/ */
@Schema(title = "产品名称") @Schema(title = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String productName; private String productName;
/** /**
* 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板 * 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板
*/ */
@Schema(title = "装车模式", description = "1_搭架子+网垫2_纸箱+胶带+木隔板") @Schema(title = "装车模式1_搭架子+网垫2_纸箱+胶带+木隔板", requiredMode = Schema.RequiredMode.REQUIRED)
private LoadingModeEnum loadingMode; private LoadingModeEnum loadingMode;
/** /**
* 空车重量(kg) * 空车重量(kg)
*/ */
@Schema(title = "空车重量(kg)") @Schema(title = "空车重量(kg)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal emptyWeight; private BigDecimal emptyWeight;
/** /**
* 总重量(kg) * 总重量(kg)
*/ */
@Schema(title = "总重量(kg)") @Schema(title = "总重量(kg)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal totalWeight; private BigDecimal totalWeight;
/** /**
* 毛重() * 毛重()
*/ */
@Schema(title = "毛重(斤)") @Schema(title = "毛重(斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal grossWeight; private BigDecimal grossWeight;
/** /**
* 净重() * 净重()
*/ */
@Schema(title = "净重(斤)") @Schema(title = "净重(斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal netWeight; private BigDecimal netWeight;
/** /**
* 采购单价(&#x2F;) * 采购单价(&#x2F;)
*/ */
@Schema(title = "采购单价(元&#x2F;斤)") @Schema(title = "采购单价(元&#x2F;斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal purchasePrice; private BigDecimal purchasePrice;
/** /**
* 销售单价(&#x2F;) * 销售单价(&#x2F;)
*/ */
@Schema(title = "销售单价(元&#x2F;斤)") @Schema(title = "销售单价(元&#x2F;斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal salePrice; private BigDecimal salePrice;
/** /**
* 报价方式1_按毛重报价2_按净重报价 * 报价方式1_按毛重报价2_按净重报价
*/ */
@Schema(title = "报价方式1_按毛重报价2_按净重报价") @Schema(title = "报价方式1_按毛重报价2_按净重报价", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean pricingMethod; private PurchaseOrderPricingMethodEnum pricingMethod;
/** /**
* 发票金额 * 发票金额
*/ */
@Schema(title = "发票金额") @Schema(title = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal invoiceAmount; private BigDecimal invoiceAmount;
/** /**
* 是否已付定金 * 是否已付定金
*/ */
@Schema(title = "是否已付定金") @Schema(title = "是否已付定金", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isDepositPaid; private Boolean isDepositPaid;
/** /**
* 定金金额 * 定金金额
*/ */
@Schema(title = "定金金额") @Schema(title = "定金金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal depositAmount; private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isPaid;
/** /**
* 空车照片 * 空车照片
*/ */
@Schema(title = "空车照片") @Schema(title = "空车照片", requiredMode = Schema.RequiredMode.REQUIRED)
private String emptyWeightImg; private String emptyWeightImg;
/** /**
* 满载照片 * 满载照片
*/ */
@Schema(title = "满载照片") @Schema(title = "满载照片", requiredMode = Schema.RequiredMode.REQUIRED)
private String totalWeightImg; private String totalWeightImg;
/** /**
* 是否上传票证 * 是否上传票证
*/ */
@Schema(title = "是否上传票证") @Schema(title = "是否上传票证", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean invoiceUpload; private Boolean invoiceUpload;
/** /**
* 发票照片 * 发票照片
*/ */
@Schema(title = "发票照片") @Schema(title = "发票照片", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadFileItem> invoiceImg; private List<UploadFileItem> invoiceImg;
/** /**
* 是否上传合同 * 是否上传合同
*/ */
@Schema(title = "是否上传合同") @Schema(title = "是否上传合同", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean contractUpload; private Boolean contractUpload;
/** /**
* 合同照片 * 合同照片
*/ */
@Schema(title = "合同照片") @Schema(title = "合同照片", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadFileItem> contractImg; private List<UploadFileItem> contractImg;
/** /**
* 创建时间 * 创建时间
*/ */
@Schema(title = "创建时间") @Schema(title = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createdAt; private LocalDateTime createdAt;
/** /**
* 车辆信息 * 车辆信息
*/ */
@Schema(title = "车辆信息") @Schema(title = "车辆信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderVehicle orderVehicle; private OrderVehicle orderVehicle;
/**
* 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭
*/
@Schema(title = "采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭")
private PurchaseOrderStateEnum poState;
/**
* 公司信息
*/
@Schema(title = "公司信息", requiredMode = Schema.RequiredMode.REQUIRED)
private OrderCompany orderCompany;
/**
* 采购订单信息
*/
@Schema(title = "采购订单信息", requiredMode = Schema.RequiredMode.REQUIRED)
private PurchaseOrderVO purchaseOrderVO;
} }

View File

@ -1,6 +1,7 @@
package com.xunhong.erp.turbo.api.biz.dto.vo; package com.xunhong.erp.turbo.api.biz.dto.vo;
import com.alibaba.cola.dto.DTO; import com.alibaba.cola.dto.DTO;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xunhong.erp.turbo.api.biz.dto.common.*; import com.xunhong.erp.turbo.api.biz.dto.common.*;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderAuditStateEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderAuditStateEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderPricingMethodEnum;
@ -18,6 +19,7 @@ import java.util.List;
@Data @Data
@Schema(title = "采购订单") @Schema(title = "采购订单")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PurchaseOrderVO extends DTO { public class PurchaseOrderVO extends DTO {
/** /**

View File

@ -19,6 +19,6 @@ public class AdminCreateCmd extends Command {
@Schema(title = "管理员名称") @Schema(title = "管理员名称")
private String name; private String name;
@Schema(title = "管理员类型", type = "string") @Schema(title = "管理员类型")
private AdminTypeEnum type; private AdminTypeEnum type;
} }

View File

@ -1,5 +1,6 @@
package com.xunhong.erp.turbo.api.user.dto.qry; package com.xunhong.erp.turbo.api.user.dto.qry;
import com.xunhong.erp.turbo.api.user.dto.enums.AdminTypeEnum;
import com.xunhong.erp.turbo.base.dto.Query; import com.xunhong.erp.turbo.base.dto.Query;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -15,6 +16,9 @@ public class AdminShowQry extends Query {
@Schema(title = "用户ID", type = "string") @Schema(title = "用户ID", type = "string")
private Long userId; private Long userId;
@Schema(title = "管理员类型", type = "string") @Schema(title = "管理员类型")
private Integer type; private AdminTypeEnum type;
@Schema(title = "平台ID", type = "string")
private Long platformId;
} }

View File

@ -29,6 +29,6 @@ public class AdminVO extends DTO {
@Schema(title = "用户Id", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") @Schema(title = "用户Id", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
private Long userId; private Long userId;
@Schema(title = "管理员类型", type = "string") @Schema(title = "管理员类型")
private AdminTypeEnum type; private AdminTypeEnum type;
} }

View File

@ -61,8 +61,11 @@ public class MerchantIdAspect {
// 获取方法的第一个参数对象 // 获取方法的第一个参数对象
if (args.length > 0 && args[0] instanceof DTO dto) { if (args.length > 0 && args[0] instanceof DTO dto) {
setParam(dto, "CreatedBy", UserSession.USER_THREAD_LOCAL.get().getCreatedBy()); String roleSlug = UserSession.USER_THREAD_LOCAL.get().getRoleSlug();
setParam(dto, "CreatedByName", UserSession.USER_THREAD_LOCAL.get().getCreatedByName()); if (!"operation".equals(roleSlug)) {
setParam(dto, "CreatedBy", UserSession.USER_THREAD_LOCAL.get().getCreatedBy());
setParam(dto, "CreatedByName", UserSession.USER_THREAD_LOCAL.get().getCreatedByName());
}
} }
// 继续执行原方法 // 继续执行原方法