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 com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
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.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
@ -30,17 +32,17 @@ import org.springframework.web.bind.annotation.*;
public class OrderSupplierController {
@DubboReference(version = "1.0.0")
private final OrderSupplierServiceI orderSupplierService;
private final OrderSupplierServiceI orderSupplierService;
@DubboReference(version = "1.0.0")
private final AdminServiceI adminService;
@SaCheckLogin
@SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_VIEW})
@GetMapping("pageOrderSupplier")
@Operation(summary = "订单供应商列表", method = "GET")
public PageResponse<OrderSupplierVO> pageOrderSupplier(@ModelAttribute @Validated OrderSupplierPageQry orderSupplierPageQry) {
@GetMapping("pageOrderSupplier")
@Operation(summary = "订单供应商列表", method = "GET")
public PageResponse<OrderSupplierVO> pageOrderSupplier(@ModelAttribute @Validated OrderSupplierPageQry orderSupplierPageQry) {
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();
@ -49,15 +51,24 @@ public class OrderSupplierController {
AdminVO adminVO = adminService.show(adminShowQry);
orderSupplierPageQry.setCreatedBy(adminVO.getAdminId());
}
PageDTO<OrderSupplierVO> page = orderSupplierService.page(orderSupplierPageQry);
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
}
PageDTO<OrderSupplierVO> page = orderSupplierService.page(orderSupplierPageQry);
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
}
@SaCheckLogin
@SaCheckLogin
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_UPDATE})
@RequestMapping(value = "updateOrderSupplier", method = {RequestMethod.PATCH, RequestMethod.PUT})
@Operation(summary = "订单供应商更新", method = "PATCH")
public SingleResponse<OrderSupplierVO> updateOrderSupplier(@RequestBody @Validated OrderSupplierUpdateCmd orderSupplierUpdateCmd) {
return SingleResponse.of(orderSupplierService.update(orderSupplierUpdateCmd));
}
@RequestMapping(value = "updateOrderSupplier", method = {RequestMethod.PATCH, RequestMethod.PUT})
@Operation(summary = "订单供应商更新", method = "PATCH")
public SingleResponse<OrderSupplierVO> updateOrderSupplier(@RequestBody @Validated OrderSupplierUpdateCmd 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")
@Operation(summary = "管理员详情", method = "GET")
public SingleResponse<AdminVO> userAdmin(@ModelAttribute @Validated AdminShowQry adminShowQry) {
Long userId = UserSession.USER_THREAD_LOCAL.get().getUserId();
adminShowQry.setUserId(userId);
@ -99,6 +98,10 @@ public class UserController {
EmployeeVO employeeVO = employeeService.show(employeeShowQry);
if (Objects.isNull(employeeVO)) {
return SingleResponse.of(null);
}
// 获取角色
UserRoleListQry userRoleListQry = new UserRoleListQry();
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;
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.biz.domain.entity.OrderSupplier;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
@ -12,7 +12,6 @@ import org.mapstruct.NullValueCheckStrategy;
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface OrderSupplierAssembler {
@Mapping(target = "pricingMethod", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "purchaseOrderVO", source = "purchaseOrder")
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;
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.biz.app.assembler.OrderSupplierAssembler;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway;
import lombok.RequiredArgsConstructor;
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;
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.vo.OrderSupplierVO;
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 lombok.RequiredArgsConstructor;
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;
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.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
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.query.OrderSupplierPageQryExe;
import lombok.RequiredArgsConstructor;
@ -22,6 +24,7 @@ import org.springframework.stereotype.Service;
public class OrderSupplierServiceImpl implements OrderSupplierServiceI {
private final OrderSupplierUpdateCmdExe orderSupplierUpdateCmdExe;
private final OrderSupplierBatchInvoiceUploadCmdExe orderSupplierBatchInvoiceUploadCmdExe;
private final OrderSupplierPageQryExe orderSupplierPageQryExe;
@ -35,5 +38,10 @@ public class OrderSupplierServiceImpl implements OrderSupplierServiceI {
public OrderSupplierVO update(OrderSupplierUpdateCmd 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;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
private CostTypeEnum type;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
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.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.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -35,6 +36,16 @@ public class OrderShip extends DTO {
*/
private String orderSn;
/**
* 经销商ID
*/
private Long dealerId;
/**
* 经销商名称
*/
private String dealerName;
/**
* 仓库ID
*/
@ -119,4 +130,9 @@ public class OrderShip extends DTO {
* 订单费用表
*/
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;
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.common.OrderSupplier;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
/**
* @author shenyifei
@ -12,5 +13,7 @@ public interface OrderSupplierGateway {
IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry);
OrderSupplier update(OrderSupplierUpdateCmd orderSupplierUpdateCmd);
void batchInvoiceUpload(OrderSupplierBatchInvoiceUploadCmd cmd);
}

View File

@ -1,6 +1,7 @@
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 org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@ -13,6 +14,9 @@ import java.util.List;
*/
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
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 = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
@ -24,5 +28,19 @@ public interface OrderCostConvert {
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);
@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;
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 org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@ -11,11 +11,9 @@ import org.mapstruct.NullValueCheckStrategy;
*/
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
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);
}

View File

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

View File

@ -1,39 +1,32 @@
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.common.OrderSupplier;
import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValueCheckStrategy;
import java.util.List;
/**
* @author shenyifei
*/
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {OrderPackageConvert.class})
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 = "createdByName", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "orderPackageList", source = "orderPackageDOList")
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 = "wechatQr", ignore = true)
@Mapping(target = "totalWeightImg", ignore = true)

View File

@ -1,17 +1,25 @@
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.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.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 org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValueCheckStrategy;
import java.util.List;
/**
* @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 {
@Mapping(target = "orderShipList", source = "orderShipDOList")
@ -92,5 +100,97 @@ public interface PurchaseOrderConvert {
@Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true)
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;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
@TableField(value = "type")
private CostTypeEnum type;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
@TableField(value = "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.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.datasource.domain.entity.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -65,7 +66,7 @@ public class OrderCostDO extends BaseDO<OrderCostDO> {
private Integer count;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
@TableField(value = "belong")
private CostBelongEnum belong;
@ -83,10 +84,29 @@ public class OrderCostDO extends BaseDO<OrderCostDO> {
private List<Long> costItemIds;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
@TableField(value = "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.TableName;
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 lombok.Data;
import lombok.EqualsAndHashCode;
@ -72,4 +73,23 @@ public class OrderRebateDO extends BaseDO<OrderPackageDO> {
*/
@TableField("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")
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)
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.enums.LoadingModeEnum;
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 lombok.Data;
import lombok.EqualsAndHashCode;
@ -216,9 +217,25 @@ public class OrderSupplierDO extends BaseDO<OrderSupplierDO> {
@TableField(value = "deposit_amount")
private BigDecimal depositAmount;
/**
* 是否付款
*/
@TableField(value = "is_paid")
private Boolean isPaid;
@TableField(exist = false)
private List<OrderPackageDO> orderPackageDOList;
@TableField(exist = false)
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;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.OrderShipDO;
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.mapper.OrderShipItemMapper;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderShipMapper;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderVehicleDO;
import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
import lombok.RequiredArgsConstructor;
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
@ -41,6 +44,9 @@ public class OrderShipGatewayImpl implements OrderShipGateway {
private final OrderShipItemMapper orderShipItemMapper;
private final OrderCostMapper orderCostMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
private final OrderVehicleMapper orderVehicleMapper;
@Override
public OrderShip save(OrderShipCreateCmd orderShipCreateCmd) {
@ -62,6 +68,17 @@ public class OrderShipGatewayImpl implements OrderShipGateway {
IPage<OrderShipDO> page = new Page<>(orderShipPageQry.getPageIndex(), orderShipPageQry.getPageSize());
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);
}

View File

@ -1,20 +1,28 @@
package com.xunhong.erp.turbo.biz.infrastructure.gateway;
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.update.LambdaUpdateWrapper;
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.OrderSupplierBatchInvoiceUploadCmd;
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.biz.domain.entity.OrderSupplier;
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.entity.OrderCompanyDO;
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.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.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;
@ -26,6 +34,7 @@ import java.util.stream.Collectors;
/**
* @author shenyifei
*/
@Slf4j
@Repository
@RequiredArgsConstructor
public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
@ -33,14 +42,16 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
private final OrderSupplierConvert orderSupplierConvert;
private final OrderVehicleMapper orderVehicleMapper;
private final OrderCompanyMapper orderCompanyMapper;
private final PurchaseOrderMapper purchaseOrderMapper;
@Override
public IPage<OrderSupplier> page(OrderSupplierPageQry orderSupplierPageQry) {
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.getInvoiceUpload()), OrderSupplierDO::getInvoiceUpload, orderSupplierPageQry.getInvoiceUpload());
queryWrapper.eq(Objects.nonNull(orderSupplierPageQry.getIsPaid()), OrderSupplierDO::getIsPaid, orderSupplierPageQry.getIsPaid());
queryWrapper.orderByDesc(OrderSupplierDO::getCreatedAt);
@ -49,7 +60,10 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
List<Long> orderIdList = page.getRecords().stream().map(OrderSupplierDO::getOrderId).toList();
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()));
page.getRecords().forEach(orderSupplierDO -> {
OrderVehicleDO orderVehicleDO = orderVehicleDOMap.get(orderSupplierDO.getOrderId());
@ -57,6 +71,30 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
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);
@ -75,5 +113,17 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
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);
queryWrapper6.eq(OrderShipDO::getOrderId, purchaseOrderDO.getOrderId());
queryWrapper6.eq(Objects.nonNull(purchaseOrderShowQry.getOrderShipId()), OrderShipDO::getOrderShipId, purchaseOrderShowQry.getOrderShipId());
List<OrderShipDO> orderShipDOList = orderShipMapper.selectList(queryWrapper6);
LambdaQueryWrapper<OrderShipItemDO> queryWrapper7 = Wrappers.lambdaQuery(OrderShipItemDO.class);
@ -339,7 +340,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
// 更新供应商信息直接更新因为不存在条数更新
purchaseOrderApproveCmd.getOrderSupplierList().forEach(orderSupplier -> {
orderSupplier.setOrderId(purchaseOrderDO.getOrderId());
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(orderSupplier);
OrderSupplierDO orderSupplierDO = purchaseOrderConvert.toOrderSupplierDO(orderSupplier);
orderSupplierDO.setOrderSupplierId(orderSupplier.getOrderSupplierId());
// 直接更新包材信息因为包材信息条数也不会变
@ -359,7 +360,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
OrderRebate orderRebate = purchaseOrderApproveCmd.getOrderRebate();
if (Objects.nonNull(orderRebate)) {
orderRebate.setOrderId(purchaseOrderDO.getOrderId());
OrderRebateDO orderRebateDO = orderRebateConvert.toOrderRebateDO(orderRebate);
OrderRebateDO orderRebateDO = purchaseOrderConvert.toOrderRebateDO(orderRebate);
// 先尝试更新如果不存在则插入
if (orderRebateDO.getOrderRebateId() != null) {
orderRebateMapper.updateById(orderRebateDO);
@ -377,7 +378,19 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
}
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);
}
@ -856,7 +869,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
}
updatedSupplier.setOrderId(orderId);
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(updatedSupplier);
OrderSupplierDO orderSupplierDO = purchaseOrderConvert.toOrderSupplierDO(updatedSupplier);
if (updatedSupplier.getSupplierId() != null && existingOrderSupplierMap.containsKey(updatedSupplier.getSupplierId())) {
// 更新已存在的供应商
@ -980,7 +993,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
purchaseOrderMapper.updateById(purchaseOrderDO);
saveOrderCostItem(orderId, purchaseOrderStep3Cmd.getOrderCostItemList().stream().toList());
saveOrderCost(orderId, purchaseOrderStep3Cmd.getOrderCostList().stream().toList());
saveOrderCost(purchaseOrderDO.getOrderId(), purchaseOrderStep3Cmd.getOrderCostList().stream().toList());
// 空箱费
if (purchaseOrderStep3Cmd.getOrderPackageList() != null) {
@ -1062,7 +1075,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
for (OrderCost updatedCost : orderCostList) {
updatedCost.setOrderId(orderId);
OrderCostDO costDO = orderCostConvert.toOrderCostDO(updatedCost);
OrderCostDO costDO = purchaseOrderConvert.toOrderCostDO(updatedCost);
if (existingCostMap.containsKey(updatedCost.getCostId())) {
// 更新已存在的费用

View File

@ -1,13 +1,20 @@
package com.xunhong.erp.turbo.biz.infrastructure.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderCostPageQry;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderCostDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author shenyifei
*/
@Mapper
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;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderRebatePageQry;
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderRebateDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author shenyifei
*/
@Mapper
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="principal" column="principal"/>
<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="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/>
<result property="version" column="version"/>
</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>

View File

@ -13,11 +13,44 @@
<result property="netWeight" column="net_weight"/>
<result property="unitPrice" column="unit_price"/>
<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="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/>
<result property="version" column="version"/>
</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>

View File

@ -41,6 +41,8 @@
<result property="costTemplate" column="cost_template"/>
<result property="isDepositPaid" column="is_deposit_paid"/>
<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="updatedAt" column="updated_at"/>
<result property="isDelete" column="is_delete"/>
@ -51,7 +53,8 @@
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO"
resultMap="BaseResultMap">
SELECT
os.*
os.*,
po.state as po_state
FROM order_supplier os
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
@ -63,10 +66,13 @@
<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="poStates" item="state" open="(" separator="," close=")">
#{state}
<foreach collection="query.poStates" item="state" open="(" separator="," close=")">
#{state.type}
</foreach>
</if>
<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;
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.qry.OrderSupplierPageQry;
import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO;
@ -12,5 +13,12 @@ public interface OrderSupplierServiceI {
PageDTO<OrderSupplierVO> page(OrderSupplierPageQry orderSupplierPageQry);
OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd);
/**
* 批量上传供应商发票
*
* @param batchInvoiceUploadCmd 批量上传发票命令
*/
void batchUploadInvoice(OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd);
}

View File

@ -25,15 +25,15 @@ public class CostCreateCmd extends Command {
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;
/**
* 费用归属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;
/**

View File

@ -118,5 +118,17 @@ public class DealerCreateCmd extends Command {
@Schema(title = "是否可调整比例")
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 = "定金金额")
private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
/**
* 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板
*/

View File

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

View File

@ -63,9 +63,9 @@ public class OrderCost extends Command {
private Integer count;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
@Schema(title = "费用归属:1_工头2_产地")
@Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong;
/**
@ -75,9 +75,9 @@ public class OrderCost extends Command {
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;
/**
@ -92,5 +92,11 @@ public class OrderCost extends Command {
*/
@Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean selected;
/**
* 是否已付款
*/
@Schema(title = "是否已付款")
private Boolean isPaid;
}

View File

@ -65,4 +65,10 @@ public class OrderRebate extends DTO {
*/
@Schema(title = "返点金额")
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)
private String orderSn;
/**
* 经销商ID
*/
@Schema(title = "经销商ID", type = "string")
private Long dealerId;
/**
* 经销商名称
*/
@Schema(title = "经销商名称")
private String dealerName;
/**
* 仓库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.PurchaseOrderPricingMethodEnum;
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;
/**
@ -210,6 +212,12 @@ public class OrderSupplier extends Command {
@Schema(title = "定金金额")
private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款")
private Boolean isPaid;
/**
* 采购订单包装箱信息
*/
@ -222,9 +230,27 @@ public class OrderSupplier extends Command {
@Schema(title = "采购订单车辆信息")
private OrderVehicle orderVehicle;
/**
* 采购订单公司信息
*/
@Schema(title = "采购订单公司信息")
private OrderCompany orderCompany;
/**
* 是否选中
*/
@Schema(title = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED)
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;
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.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema;
@ -17,6 +18,7 @@ import java.time.LocalDate;
@Data
@Schema(title = "采购订单车辆运输信息创建")
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderVehicle extends Command {
/**

View File

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

View File

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

View File

@ -19,15 +19,15 @@ public class CostListQry extends Query {
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;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
@Schema(title = "费用归属:1_工头2_产地")
@Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
private CostBelongEnum belong;
}

View File

@ -19,15 +19,15 @@ public class CostPageQry extends PageQuery {
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;
/**
* 费用归属1_工头2_产地
* 费用归属0_无归属1_工头2_产地3_司机
*/
@Schema(title = "费用归属:1_工头2_产地")
@Schema(title = "费用归属:0_无归属1_工头2_产地3_司机")
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 = "订单状态")
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")
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;
/**
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型
* 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型
*/
@Schema(title = "费用类型", requiredMode = Schema.RequiredMode.REQUIRED)
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;
/**

View File

@ -137,5 +137,17 @@ public class DealerVO extends DTO {
*/
@Schema(title = "是否可调整比例")
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.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.OrderVehicle;
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderShipStateEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -33,6 +34,18 @@ public class OrderShipVO extends DTO {
*/
@Schema(title = "采购单ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
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 = "发货单成本项目信息")
private List<OrderCost> orderCostList;
/**
* 采购订单车辆运输信息
*/
@Schema(title = "采购订单车辆运输信息")
private OrderVehicle orderVehicle;
}

View File

@ -1,9 +1,12 @@
package com.xunhong.erp.turbo.api.biz.dto.vo;
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.UploadFileItem;
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;
@ -35,176 +38,199 @@ public class OrderSupplierVO extends DTO {
/**
* 供应商ID
*/
@Schema(title = "供应商ID", type = "string")
@Schema(title = "供应商ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long supplierId;
/**
* 供应商姓名
*/
@Schema(title = "供应商姓名")
@Schema(title = "供应商姓名", requiredMode = Schema.RequiredMode.REQUIRED)
private String name;
/**
* 身份证号
*/
@Schema(title = "身份证号")
@Schema(title = "身份证号", requiredMode = Schema.RequiredMode.REQUIRED)
private String idCard;
/**
* 银行卡号
*/
@Schema(title = "银行卡号")
@Schema(title = "银行卡号", requiredMode = Schema.RequiredMode.REQUIRED)
private String bankCard;
/**
* 手机号
*/
@Schema(title = "手机号")
@Schema(title = "手机号", requiredMode = Schema.RequiredMode.REQUIRED)
private String phone;
/**
* 微信二维码
*/
@Schema(title = "微信二维码")
@Schema(title = "微信二维码", requiredMode = Schema.RequiredMode.REQUIRED)
private String wechatQr;
/**
* 是否最后一家
*/
@Schema(title = "是否最后一家")
@Schema(title = "是否最后一家", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isLast;
/**
* 空磅是否包含纸箱
*/
@Schema(title = "空磅是否包含纸箱")
@Schema(title = "空磅是否包含纸箱", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isPaper;
/**
* 产品id
*/
@Schema(title = "产品id", type = "string")
@Schema(title = "产品id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
private Long productId;
/**
* 产品名称
*/
@Schema(title = "产品名称")
@Schema(title = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String productName;
/**
* 装车模式1_搭架子+网垫2_纸箱+胶带+木隔板
*/
@Schema(title = "装车模式", description = "1_搭架子+网垫2_纸箱+胶带+木隔板")
@Schema(title = "装车模式1_搭架子+网垫2_纸箱+胶带+木隔板", requiredMode = Schema.RequiredMode.REQUIRED)
private LoadingModeEnum loadingMode;
/**
* 空车重量(kg)
*/
@Schema(title = "空车重量(kg)")
@Schema(title = "空车重量(kg)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal emptyWeight;
/**
* 总重量(kg)
*/
@Schema(title = "总重量(kg)")
@Schema(title = "总重量(kg)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal totalWeight;
/**
* 毛重()
*/
@Schema(title = "毛重(斤)")
@Schema(title = "毛重(斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal grossWeight;
/**
* 净重()
*/
@Schema(title = "净重(斤)")
@Schema(title = "净重(斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal netWeight;
/**
* 采购单价(&#x2F;)
*/
@Schema(title = "采购单价(元&#x2F;斤)")
@Schema(title = "采购单价(元&#x2F;斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal purchasePrice;
/**
* 销售单价(&#x2F;)
*/
@Schema(title = "销售单价(元&#x2F;斤)")
@Schema(title = "销售单价(元&#x2F;斤)", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal salePrice;
/**
* 报价方式1_按毛重报价2_按净重报价
*/
@Schema(title = "报价方式1_按毛重报价2_按净重报价")
private Boolean pricingMethod;
@Schema(title = "报价方式1_按毛重报价2_按净重报价", requiredMode = Schema.RequiredMode.REQUIRED)
private PurchaseOrderPricingMethodEnum pricingMethod;
/**
* 发票金额
*/
@Schema(title = "发票金额")
@Schema(title = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal invoiceAmount;
/**
* 是否已付定金
*/
@Schema(title = "是否已付定金")
@Schema(title = "是否已付定金", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isDepositPaid;
/**
* 定金金额
*/
@Schema(title = "定金金额")
@Schema(title = "定金金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal depositAmount;
/**
* 是否付款
*/
@Schema(title = "是否付款", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isPaid;
/**
* 空车照片
*/
@Schema(title = "空车照片")
@Schema(title = "空车照片", requiredMode = Schema.RequiredMode.REQUIRED)
private String emptyWeightImg;
/**
* 满载照片
*/
@Schema(title = "满载照片")
@Schema(title = "满载照片", requiredMode = Schema.RequiredMode.REQUIRED)
private String totalWeightImg;
/**
* 是否上传票证
*/
@Schema(title = "是否上传票证")
@Schema(title = "是否上传票证", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean invoiceUpload;
/**
* 发票照片
*/
@Schema(title = "发票照片")
@Schema(title = "发票照片", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadFileItem> invoiceImg;
/**
* 是否上传合同
*/
@Schema(title = "是否上传合同")
@Schema(title = "是否上传合同", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean contractUpload;
/**
* 合同照片
*/
@Schema(title = "合同照片")
@Schema(title = "合同照片", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadFileItem> contractImg;
/**
* 创建时间
*/
@Schema(title = "创建时间")
@Schema(title = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createdAt;
/**
* 车辆信息
*/
@Schema(title = "车辆信息")
@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;
}

View File

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

View File

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

View File

@ -1,5 +1,6 @@
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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -15,6 +16,9 @@ public class AdminShowQry extends Query {
@Schema(title = "用户ID", type = "string")
private Long userId;
@Schema(title = "管理员类型", type = "string")
private Integer type;
@Schema(title = "管理员类型")
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")
private Long userId;
@Schema(title = "管理员类型", type = "string")
@Schema(title = "管理员类型")
private AdminTypeEnum type;
}

View File

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