feat(operation): 添加审核管理功能
- 新增 AuditController 提供审核详情、列表和更新接口 - 新增 AuditServiceI 接口定义审核服务契约 - 重构审核相关枚举名称,将 OrderAuditStateEnum 重命名为 AuditStateEnum - 新增 AuditSubjectTypeEnum 枚举定义审核对象类型 - 重构 OrderAuditTypeEnum 为 AuditTypeEnum 审核类型枚举 - 新增 AuditPageQry、AuditShowQry 查询对象和 AuditVO 值对象 - 优化 ExpenseCost 中的 expenseAmount 字段类型定义 - 为 ExpenseProvision 添加备注字段 - 新增 AuditAssembler 实现审核数据转换 - 实现 AuditUpdateCmdExe、AuditPageQryExe、AuditShowQryExe 执行器 - 新增 AuditServiceImpl 实现审核服务 - 创建 Audit 实体类和 AuditGateway 数据网关接口 - 新增 AuditConvert 数据转换器和 AuditDO 数据对象 - 实现 AuditGatewayImpl 数据访问实现类 - 优化各 GatewayImpl 中的查询逻辑,使用 Set 替代 List 避免重复数据 - 更新 PurchaseOrderGatewayImpl 中的审核相关处理逻辑
This commit is contained in:
parent
67fea6e500
commit
20ca821bb2
@ -0,0 +1,52 @@
|
||||
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.AuditServiceI;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.base.dto.PageDTO;
|
||||
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 = "Audit", description = "审核管理")
|
||||
@RestController("operationAuditController")
|
||||
@RequestMapping(value = "/operation")
|
||||
@RequiredArgsConstructor
|
||||
public class AuditController {
|
||||
|
||||
@DubboReference(version = "1.0.0")
|
||||
private final AuditServiceI auditService;
|
||||
|
||||
@SaCheckLogin
|
||||
@GetMapping("showAudit")
|
||||
@Operation(summary = "审核详情", method = "GET")
|
||||
public SingleResponse<AuditVO> showAudit(@ModelAttribute @Validated AuditShowQry auditShowQry) {
|
||||
return SingleResponse.of(auditService.show(auditShowQry));
|
||||
}
|
||||
|
||||
@SaCheckLogin
|
||||
@GetMapping("pageAudit")
|
||||
@Operation(summary = "审核列表", method = "GET")
|
||||
public PageResponse<AuditVO> pageAudit(@ModelAttribute @Validated AuditPageQry auditPageQry) {
|
||||
PageDTO<AuditVO> page = auditService.page(auditPageQry);
|
||||
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
||||
}
|
||||
|
||||
@SaCheckLogin
|
||||
@RequestMapping(value = "updateAudit", method = {RequestMethod.PATCH, RequestMethod.PUT})
|
||||
@Operation(summary = "审核更新", method = "PATCH")
|
||||
public SingleResponse<AuditVO> updateAudit(@RequestBody @Validated AuditUpdateCmd auditUpdateCmd) {
|
||||
return SingleResponse.of(auditService.update(auditUpdateCmd));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.xunhong.erp.turbo.biz.app.assembler;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.NullValueCheckStrategy;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {PurchaseOrderAssembler.class})
|
||||
public interface AuditAssembler {
|
||||
|
||||
@Mapping(target = "purchaseOrderVO", source = "purchaseOrder")
|
||||
AuditVO toAuditVO(Audit audit);
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.xunhong.erp.turbo.biz.app.executor.cmd;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.biz.app.assembler.AuditAssembler;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AuditUpdateCmdExe {
|
||||
|
||||
private final AuditAssembler auditAssembler;
|
||||
private final AuditGateway auditGateway;
|
||||
|
||||
public AuditVO execute(AuditUpdateCmd auditUpdateCmd) {
|
||||
Audit audit = auditGateway.update(auditUpdateCmd);
|
||||
return auditAssembler.toAuditVO(audit);
|
||||
}
|
||||
}
|
||||
@ -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.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.biz.app.assembler.AuditAssembler;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AuditPageQryExe {
|
||||
|
||||
private final AuditGateway auditGateway;
|
||||
private final AuditAssembler auditAssembler;
|
||||
|
||||
public IPage<AuditVO> execute(AuditPageQry auditPageQry) {
|
||||
IPage<Audit> page = auditGateway.page(auditPageQry);
|
||||
return page.convert(auditAssembler::toAuditVO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
package com.xunhong.erp.turbo.biz.app.executor.query;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.biz.app.assembler.AuditAssembler;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AuditShowQryExe {
|
||||
|
||||
private final AuditAssembler auditAssembler;
|
||||
private final AuditGateway auditGateway;
|
||||
|
||||
public AuditVO execute(AuditShowQry auditShowQry) {
|
||||
Audit audit = auditGateway.show(auditShowQry);
|
||||
|
||||
return auditAssembler.toAuditVO(audit);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package com.xunhong.erp.turbo.biz.app.service;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.api.AuditServiceI;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.base.dto.PageDTO;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.cmd.AuditUpdateCmdExe;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.query.AuditPageQryExe;
|
||||
import com.xunhong.erp.turbo.biz.app.executor.query.AuditShowQryExe;
|
||||
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 = AuditServiceI.class, version = "1.0.0")
|
||||
@RequiredArgsConstructor
|
||||
public class AuditServiceImpl implements AuditServiceI {
|
||||
|
||||
private final AuditUpdateCmdExe auditUpdateCmdExe;
|
||||
private final AuditPageQryExe auditPageQryExe;
|
||||
private final AuditShowQryExe auditShowQryExe;
|
||||
|
||||
@Override
|
||||
public PageDTO<AuditVO> page(AuditPageQry auditPageQry) {
|
||||
return PageDTO.of(auditPageQryExe.execute(auditPageQry));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuditVO update(AuditUpdateCmd auditUpdateCmd) {
|
||||
return auditUpdateCmdExe.execute(auditUpdateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuditVO show(AuditShowQry auditShowQry) {
|
||||
return auditShowQryExe.execute(auditShowQry);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,87 @@
|
||||
package com.xunhong.erp.turbo.biz.domain.entity;
|
||||
|
||||
import com.alibaba.cola.domain.Entity;
|
||||
import com.alibaba.cola.dto.DTO;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Entity
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Audit extends DTO {
|
||||
|
||||
/**
|
||||
* 审核Id
|
||||
*/
|
||||
private Long auditId;
|
||||
|
||||
/**
|
||||
* 资源Id
|
||||
*/
|
||||
private Long subjectId;
|
||||
|
||||
/**
|
||||
* 资源类型
|
||||
*/
|
||||
private AuditSubjectTypeEnum subjectType;
|
||||
|
||||
/**
|
||||
* 审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回
|
||||
*/
|
||||
private AuditStateEnum state;
|
||||
|
||||
/**
|
||||
* 审核类型:1_审核员审核;2_老板审核
|
||||
*/
|
||||
private AuditTypeEnum type;
|
||||
|
||||
/**
|
||||
* 驳回原因
|
||||
*/
|
||||
private String auditReason;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private LocalDateTime auditAt;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long auditBy;
|
||||
|
||||
/**
|
||||
* 审核人名称
|
||||
*/
|
||||
private String auditByName;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
private Long createdBy;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String createdByName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
/**
|
||||
* 采购订单
|
||||
*/
|
||||
private PurchaseOrder purchaseOrder;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xunhong.erp.turbo.biz.domain.gateway;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
public interface AuditGateway {
|
||||
|
||||
IPage<Audit> page(AuditPageQry auditPageQry);
|
||||
|
||||
Audit update(AuditUpdateCmd auditUpdateCmd);
|
||||
|
||||
Audit show(AuditShowQry auditShowQry);
|
||||
}
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package com.xunhong.erp.turbo.biz.infrastructure.convert;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import org.mapstruct.NullValueCheckStrategy;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = {PurchaseOrderConvert.class})
|
||||
public interface AuditConvert {
|
||||
|
||||
@Mapping(target = "purchaseOrder", source = "purchaseOrderDO")
|
||||
Audit toAudit(AuditDO auditDO);
|
||||
|
||||
@Mapping(target = "purchaseOrderDO", ignore = true)
|
||||
@Mapping(target = "version", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "isDelete", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
void toAuditDO(@MappingTarget AuditDO auditDO, AuditUpdateCmd auditUpdateCmd);
|
||||
}
|
||||
|
||||
@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
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.OrderAuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.OrderAuditTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum;
|
||||
import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -18,7 +19,7 @@ import java.time.LocalDateTime;
|
||||
@Data
|
||||
@TableName(value = "order_audit")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrderAuditDO extends BaseDO<OrderAuditDO> {
|
||||
public class AuditDO extends BaseDO<AuditDO> {
|
||||
|
||||
/**
|
||||
* 审核Id
|
||||
@ -27,22 +28,28 @@ public class OrderAuditDO extends BaseDO<OrderAuditDO> {
|
||||
private Long auditId;
|
||||
|
||||
/**
|
||||
* 订单Id
|
||||
* 审核对象Id
|
||||
*/
|
||||
@TableField(value = "order_id")
|
||||
private Long orderId;
|
||||
@TableField(value = "subject_id")
|
||||
private Long subjectId;
|
||||
|
||||
/**
|
||||
* 审核对象类型:1_采购单;
|
||||
*/
|
||||
@TableField(value = "subject_type")
|
||||
private AuditSubjectTypeEnum subjectType;
|
||||
|
||||
/**
|
||||
* 审核状态: 1_待审核;2_审核中;3_审核通过:4_审核驳回;5_审核取消;
|
||||
*/
|
||||
@TableField(value = "state")
|
||||
private OrderAuditStateEnum state;
|
||||
private AuditStateEnum state;
|
||||
|
||||
/**
|
||||
* 审核类型:1_报价审核员审核;2_老板审核
|
||||
*/
|
||||
@TableField(value = "type")
|
||||
private OrderAuditTypeEnum type;
|
||||
private AuditTypeEnum type;
|
||||
|
||||
/**
|
||||
* 驳回原因
|
||||
@ -80,5 +87,8 @@ public class OrderAuditDO extends BaseDO<OrderAuditDO> {
|
||||
@TableField(value = "created_by_name")
|
||||
private String createdByName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private PurchaseOrderDO purchaseOrderDO;
|
||||
|
||||
}
|
||||
|
||||
@ -54,5 +54,11 @@ public class ExpenseProvisionDO extends BaseDO<ExpenseProvisionDO> {
|
||||
@TableField(value = "order_id")
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@TableField(value = "remark")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,90 @@
|
||||
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.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.biz.domain.entity.Audit;
|
||||
import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.convert.AuditConvert;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.AuditMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.PurchaseOrderMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class AuditGatewayImpl implements AuditGateway {
|
||||
private final AuditMapper auditMapper;
|
||||
private final AuditConvert auditConvert;
|
||||
|
||||
private final PurchaseOrderMapper purchaseOrderMapper;
|
||||
|
||||
@Override
|
||||
public IPage<Audit> page(AuditPageQry auditPageQry) {
|
||||
LambdaQueryWrapper<AuditDO> queryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
|
||||
queryWrapper.eq(Objects.nonNull(auditPageQry.getAuditId()), AuditDO::getAuditId, auditPageQry.getAuditId());
|
||||
queryWrapper.eq(Objects.nonNull(auditPageQry.getType()), AuditDO::getType, auditPageQry.getType());
|
||||
queryWrapper.eq(Objects.nonNull(auditPageQry.getState()), AuditDO::getState, auditPageQry.getState());
|
||||
queryWrapper.eq(Objects.nonNull(auditPageQry.getSubjectType()), AuditDO::getSubjectType, auditPageQry.getSubjectType());
|
||||
|
||||
queryWrapper.orderByDesc(AuditDO::getCreatedAt);
|
||||
|
||||
IPage<AuditDO> page = new Page<>(auditPageQry.getPageIndex(), auditPageQry.getPageSize());
|
||||
page = auditMapper.selectPage(page, queryWrapper);
|
||||
Set<Long> orderIdList = page.getRecords().stream().filter(auditDO -> auditDO.getSubjectType().equals(AuditSubjectTypeEnum.PURCHASE_ORDER)).map(AuditDO::getSubjectId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(orderIdList)) {
|
||||
List<PurchaseOrderDO> purchaseOrderDOList = purchaseOrderMapper.selectByOrderIdList(orderIdList);
|
||||
Map<Long, PurchaseOrderDO> purchaseOrderDOMap = purchaseOrderDOList.stream().collect(Collectors.toMap(PurchaseOrderDO::getOrderId, Function.identity()));
|
||||
page.getRecords().forEach(auditDO -> {
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderDOMap.get(auditDO.getSubjectId());
|
||||
auditDO.setPurchaseOrderDO(purchaseOrderDO);
|
||||
});
|
||||
}
|
||||
|
||||
return page.convert(auditConvert::toAudit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Audit update(AuditUpdateCmd auditUpdateCmd) {
|
||||
LambdaQueryWrapper<AuditDO> queryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
queryWrapper.eq(AuditDO::getAuditId, auditUpdateCmd.getAuditId());
|
||||
queryWrapper.last("limit 1");
|
||||
|
||||
AuditDO auditDO = auditMapper.selectOne(queryWrapper);
|
||||
|
||||
auditConvert.toAuditDO(auditDO, auditUpdateCmd);
|
||||
auditMapper.updateById(auditDO);
|
||||
|
||||
return auditConvert.toAudit(auditDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Audit show(AuditShowQry auditShowQry) {
|
||||
LambdaQueryWrapper<AuditDO> queryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
queryWrapper.eq(AuditDO::getAuditId, auditShowQry.getAuditId());
|
||||
queryWrapper.last("limit 1");
|
||||
|
||||
AuditDO auditDO = auditMapper.selectOne(queryWrapper);
|
||||
return auditConvert.toAudit(auditDO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -56,7 +57,7 @@ public class OrderCostGatewayImpl implements OrderCostGateway {
|
||||
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();
|
||||
Set<Long> orderIdList = page.getRecords().stream().map(OrderCostDO::getOrderId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(orderIdList)) {
|
||||
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
|
||||
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
|
||||
|
||||
@ -22,6 +22,7 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -49,7 +50,7 @@ public class OrderRebateGatewayImpl implements OrderRebateGateway {
|
||||
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();
|
||||
Set<Long> orderIdList = page.getRecords().stream().map(OrderRebateDO::getOrderId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(orderIdList)) {
|
||||
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
|
||||
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
|
||||
|
||||
@ -26,6 +26,7 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -55,7 +56,7 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway {
|
||||
IPage<OrderSupplierDO> page = new Page<>(orderSupplierPageQry.getPageIndex(), orderSupplierPageQry.getPageSize());
|
||||
page = orderSupplierMapper.selectPage(page, queryWrapper, orderSupplierPageQry);
|
||||
|
||||
List<Long> orderIdList = page.getRecords().stream().map(OrderSupplierDO::getOrderId).toList();
|
||||
Set<Long> orderIdList = page.getRecords().stream().map(OrderSupplierDO::getOrderId).collect(Collectors.toSet());
|
||||
if (CollUtil.isNotEmpty(orderIdList)) {
|
||||
LambdaQueryWrapper<OrderCompanyDO> queryWrapper2 = Wrappers.lambdaQuery(OrderCompanyDO.class);
|
||||
queryWrapper2.in(OrderCompanyDO::getOrderId, orderIdList);
|
||||
|
||||
@ -68,7 +68,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
private final SupplierMapper supplierMapper;
|
||||
private final SupplierConvert supplierConvert;
|
||||
|
||||
private final OrderAuditMapper orderAuditMapper;
|
||||
private final AuditMapper auditMapper;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@ -269,32 +269,32 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderDO.setAuditState(PurchaseOrderAuditStateEnum.PENDING_BOSS_APPROVAL);
|
||||
|
||||
// 更新审核记录状态为审核成功
|
||||
LambdaQueryWrapper<OrderAuditDO> auditQueryWrapper = Wrappers.lambdaQuery(OrderAuditDO.class);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getOrderId, purchaseOrderApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(OrderAuditDO::getState, OrderAuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getType, OrderAuditTypeEnum.REVIEWER_AUDIT);
|
||||
OrderAuditDO orderAuditDO = orderAuditMapper.selectOne(auditQueryWrapper);
|
||||
LambdaQueryWrapper<AuditDO> auditQueryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
auditQueryWrapper.eq(AuditDO::getSubjectId, purchaseOrderApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(AuditDO::getState, AuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(AuditDO::getType, AuditTypeEnum.REVIEWER_AUDIT);
|
||||
AuditDO auditDO = auditMapper.selectOne(auditQueryWrapper);
|
||||
|
||||
if (orderAuditDO != null) {
|
||||
orderAuditDO.setState(OrderAuditStateEnum.AUDIT_SUCCESS);
|
||||
orderAuditDO.setAuditAt(LocalDateTime.now());
|
||||
orderAuditDO.setAuditBy(purchaseOrderApproveCmd.getCreatedBy());
|
||||
orderAuditDO.setAuditByName(purchaseOrderApproveCmd.getCreatedByName());
|
||||
orderAuditMapper.updateById(orderAuditDO);
|
||||
if (auditDO != null) {
|
||||
auditDO.setState(AuditStateEnum.AUDIT_SUCCESS);
|
||||
auditDO.setAuditAt(LocalDateTime.now());
|
||||
auditDO.setAuditBy(purchaseOrderApproveCmd.getCreatedBy());
|
||||
auditDO.setAuditByName(purchaseOrderApproveCmd.getCreatedByName());
|
||||
auditMapper.updateById(auditDO);
|
||||
} else {
|
||||
// 如果审核记录不存在,抛出异常
|
||||
throw new BizException(BizErrorCode.B_BIZ_ORDER_AUDIT_NOT_FOUND);
|
||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
||||
// 自动生成报老板待审核记录(每次都创建新记录)
|
||||
OrderAuditDO orderAuditDO1 = new OrderAuditDO();
|
||||
orderAuditDO1.setOrderId(purchaseOrderApproveCmd.getOrderId());
|
||||
orderAuditDO1.setType(OrderAuditTypeEnum.BOSS_AUDIT);
|
||||
orderAuditDO1.setState(OrderAuditStateEnum.WAITING_AUDIT);
|
||||
orderAuditDO1.setCreatedBy(purchaseOrderApproveCmd.getCreatedBy());
|
||||
orderAuditDO1.setCreatedByName(purchaseOrderApproveCmd.getCreatedByName());
|
||||
orderAuditMapper.insert(orderAuditDO1);
|
||||
AuditDO auditDO1 = new AuditDO();
|
||||
auditDO1.setSubjectId(purchaseOrderApproveCmd.getOrderId());
|
||||
auditDO1.setType(AuditTypeEnum.BOSS_AUDIT);
|
||||
auditDO1.setState(AuditStateEnum.WAITING_AUDIT);
|
||||
auditDO1.setCreatedBy(purchaseOrderApproveCmd.getCreatedBy());
|
||||
auditDO1.setCreatedByName(purchaseOrderApproveCmd.getCreatedByName());
|
||||
auditMapper.insert(auditDO1);
|
||||
}
|
||||
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
@ -562,13 +562,13 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
|
||||
// 自动生成报价审核员待审核记录(每次都创建新记录)
|
||||
OrderAuditDO orderAuditDO = new OrderAuditDO();
|
||||
orderAuditDO.setOrderId(purchaseOrderSubmitReviewCmd.getOrderId());
|
||||
orderAuditDO.setType(OrderAuditTypeEnum.REVIEWER_AUDIT);
|
||||
orderAuditDO.setState(OrderAuditStateEnum.WAITING_AUDIT);
|
||||
orderAuditDO.setCreatedBy(purchaseOrderSubmitReviewCmd.getCreatedBy());
|
||||
orderAuditDO.setCreatedByName(purchaseOrderSubmitReviewCmd.getCreatedByName());
|
||||
orderAuditMapper.insert(orderAuditDO);
|
||||
AuditDO auditDO = new AuditDO();
|
||||
auditDO.setSubjectId(purchaseOrderSubmitReviewCmd.getOrderId());
|
||||
auditDO.setType(AuditTypeEnum.REVIEWER_AUDIT);
|
||||
auditDO.setState(AuditStateEnum.WAITING_AUDIT);
|
||||
auditDO.setCreatedBy(purchaseOrderSubmitReviewCmd.getCreatedBy());
|
||||
auditDO.setCreatedByName(purchaseOrderSubmitReviewCmd.getCreatedByName());
|
||||
auditMapper.insert(auditDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -592,18 +592,18 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
|
||||
// 更新审核记录状态为草稿(撤回审核)
|
||||
LambdaQueryWrapper<OrderAuditDO> auditQueryWrapper = Wrappers.lambdaQuery(OrderAuditDO.class);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getOrderId, purchaseOrderWithdrawReviewCmd.getOrderId());
|
||||
auditQueryWrapper.eq(OrderAuditDO::getState, OrderAuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getType, OrderAuditTypeEnum.REVIEWER_AUDIT);
|
||||
OrderAuditDO orderAuditDO = orderAuditMapper.selectOne(auditQueryWrapper);
|
||||
LambdaQueryWrapper<AuditDO> auditQueryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
auditQueryWrapper.eq(AuditDO::getSubjectId, purchaseOrderWithdrawReviewCmd.getOrderId());
|
||||
auditQueryWrapper.eq(AuditDO::getState, AuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(AuditDO::getType, AuditTypeEnum.REVIEWER_AUDIT);
|
||||
AuditDO auditDO = auditMapper.selectOne(auditQueryWrapper);
|
||||
|
||||
if (orderAuditDO != null) {
|
||||
orderAuditDO.setState(OrderAuditStateEnum.AUDIT_CANCEL);
|
||||
orderAuditDO.setAuditAt(LocalDateTime.now());
|
||||
orderAuditDO.setAuditBy(purchaseOrderWithdrawReviewCmd.getCreatedBy());
|
||||
orderAuditDO.setAuditByName(purchaseOrderWithdrawReviewCmd.getCreatedByName());
|
||||
orderAuditMapper.updateById(orderAuditDO);
|
||||
if (auditDO != null) {
|
||||
auditDO.setState(AuditStateEnum.AUDIT_CANCEL);
|
||||
auditDO.setAuditAt(LocalDateTime.now());
|
||||
auditDO.setAuditBy(purchaseOrderWithdrawReviewCmd.getCreatedBy());
|
||||
auditDO.setAuditByName(purchaseOrderWithdrawReviewCmd.getCreatedByName());
|
||||
auditMapper.updateById(auditDO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -628,22 +628,22 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
|
||||
// 更新审核记录
|
||||
LambdaQueryWrapper<OrderAuditDO> auditQueryWrapper = Wrappers.lambdaQuery(OrderAuditDO.class);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getOrderId, purchaseOrderRejectApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(OrderAuditDO::getState, OrderAuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getType, OrderAuditTypeEnum.REVIEWER_AUDIT);
|
||||
OrderAuditDO orderAuditDO = orderAuditMapper.selectOne(auditQueryWrapper);
|
||||
LambdaQueryWrapper<AuditDO> auditQueryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
auditQueryWrapper.eq(AuditDO::getSubjectId, purchaseOrderRejectApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(AuditDO::getState, AuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(AuditDO::getType, AuditTypeEnum.REVIEWER_AUDIT);
|
||||
AuditDO auditDO = auditMapper.selectOne(auditQueryWrapper);
|
||||
|
||||
if (orderAuditDO != null) {
|
||||
orderAuditDO.setState(OrderAuditStateEnum.AUDIT_REJECTED);
|
||||
orderAuditDO.setAuditReason(purchaseOrderRejectApproveCmd.getRejectReason());
|
||||
orderAuditDO.setAuditAt(LocalDateTime.now());
|
||||
orderAuditDO.setAuditBy(purchaseOrderRejectApproveCmd.getCreatedBy());
|
||||
orderAuditDO.setAuditByName(purchaseOrderRejectApproveCmd.getCreatedByName());
|
||||
orderAuditMapper.updateById(orderAuditDO);
|
||||
if (auditDO != null) {
|
||||
auditDO.setState(AuditStateEnum.AUDIT_REJECTED);
|
||||
auditDO.setAuditReason(purchaseOrderRejectApproveCmd.getRejectReason());
|
||||
auditDO.setAuditAt(LocalDateTime.now());
|
||||
auditDO.setAuditBy(purchaseOrderRejectApproveCmd.getCreatedBy());
|
||||
auditDO.setAuditByName(purchaseOrderRejectApproveCmd.getCreatedByName());
|
||||
auditMapper.updateById(auditDO);
|
||||
} else {
|
||||
// 如果审核记录不存在,抛出异常
|
||||
throw new BizException(BizErrorCode.B_BIZ_ORDER_AUDIT_NOT_FOUND);
|
||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 发货单改成(草稿)
|
||||
@ -672,21 +672,21 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderDO.setAuditState(PurchaseOrderAuditStateEnum.BOSS_APPROVED);
|
||||
|
||||
// 更新审核记录为审核成功
|
||||
LambdaQueryWrapper<OrderAuditDO> auditQueryWrapper = Wrappers.lambdaQuery(OrderAuditDO.class);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getOrderId, purchaseOrderFinalApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(OrderAuditDO::getState, OrderAuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getType, OrderAuditTypeEnum.BOSS_AUDIT);
|
||||
OrderAuditDO orderAuditDO = orderAuditMapper.selectOne(auditQueryWrapper);
|
||||
LambdaQueryWrapper<AuditDO> auditQueryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
auditQueryWrapper.eq(AuditDO::getSubjectId, purchaseOrderFinalApproveCmd.getOrderId());
|
||||
auditQueryWrapper.eq(AuditDO::getState, AuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(AuditDO::getType, AuditTypeEnum.BOSS_AUDIT);
|
||||
AuditDO auditDO = auditMapper.selectOne(auditQueryWrapper);
|
||||
|
||||
if (orderAuditDO != null) {
|
||||
orderAuditDO.setState(OrderAuditStateEnum.AUDIT_SUCCESS);
|
||||
orderAuditDO.setAuditAt(LocalDateTime.now());
|
||||
orderAuditDO.setAuditBy(purchaseOrderFinalApproveCmd.getCreatedBy());
|
||||
orderAuditDO.setAuditByName(purchaseOrderFinalApproveCmd.getCreatedByName());
|
||||
orderAuditMapper.updateById(orderAuditDO);
|
||||
if (auditDO != null) {
|
||||
auditDO.setState(AuditStateEnum.AUDIT_SUCCESS);
|
||||
auditDO.setAuditAt(LocalDateTime.now());
|
||||
auditDO.setAuditBy(purchaseOrderFinalApproveCmd.getCreatedBy());
|
||||
auditDO.setAuditByName(purchaseOrderFinalApproveCmd.getCreatedByName());
|
||||
auditMapper.updateById(auditDO);
|
||||
} else {
|
||||
// 如果审核记录不存在,抛出异常
|
||||
throw new BizException(BizErrorCode.B_BIZ_ORDER_AUDIT_NOT_FOUND);
|
||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||
}
|
||||
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
@ -729,22 +729,22 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||
|
||||
// 更新审核记录
|
||||
LambdaQueryWrapper<OrderAuditDO> auditQueryWrapper = Wrappers.lambdaQuery(OrderAuditDO.class);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getOrderId, purchaseOrderRejectFinalCmd.getOrderId());
|
||||
auditQueryWrapper.eq(OrderAuditDO::getState, OrderAuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(OrderAuditDO::getType, OrderAuditTypeEnum.BOSS_AUDIT);
|
||||
OrderAuditDO orderAuditDO = orderAuditMapper.selectOne(auditQueryWrapper);
|
||||
LambdaQueryWrapper<AuditDO> auditQueryWrapper = Wrappers.lambdaQuery(AuditDO.class);
|
||||
auditQueryWrapper.eq(AuditDO::getSubjectId, purchaseOrderRejectFinalCmd.getOrderId());
|
||||
auditQueryWrapper.eq(AuditDO::getState, AuditStateEnum.WAITING_AUDIT);
|
||||
auditQueryWrapper.eq(AuditDO::getType, AuditTypeEnum.BOSS_AUDIT);
|
||||
AuditDO auditDO = auditMapper.selectOne(auditQueryWrapper);
|
||||
|
||||
if (orderAuditDO != null) {
|
||||
orderAuditDO.setState(OrderAuditStateEnum.AUDIT_REJECTED);
|
||||
orderAuditDO.setAuditReason(purchaseOrderRejectFinalCmd.getRejectReason());
|
||||
orderAuditDO.setAuditAt(LocalDateTime.now());
|
||||
orderAuditDO.setAuditBy(purchaseOrderRejectFinalCmd.getCreatedBy());
|
||||
orderAuditDO.setAuditByName(purchaseOrderRejectFinalCmd.getCreatedByName());
|
||||
orderAuditMapper.updateById(orderAuditDO);
|
||||
if (auditDO != null) {
|
||||
auditDO.setState(AuditStateEnum.AUDIT_REJECTED);
|
||||
auditDO.setAuditReason(purchaseOrderRejectFinalCmd.getRejectReason());
|
||||
auditDO.setAuditAt(LocalDateTime.now());
|
||||
auditDO.setAuditBy(purchaseOrderRejectFinalCmd.getCreatedBy());
|
||||
auditDO.setAuditByName(purchaseOrderRejectFinalCmd.getCreatedByName());
|
||||
auditMapper.updateById(auditDO);
|
||||
} else {
|
||||
// 如果审核记录不存在,抛出异常
|
||||
throw new BizException(BizErrorCode.B_BIZ_ORDER_AUDIT_NOT_FOUND);
|
||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package com.xunhong.erp.turbo.biz.infrastructure.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderAuditDO;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrderAuditMapper extends BaseMapper<OrderAuditDO> {
|
||||
public interface AuditMapper extends BaseMapper<AuditDO> {
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
@ -13,6 +14,6 @@ import java.util.List;
|
||||
@Mapper
|
||||
public interface PurchaseOrderMapper extends BaseMapper<PurchaseOrderDO> {
|
||||
|
||||
List<PurchaseOrderDO> selectByOrderIdList(@Param("orderIdList") List<Long> orderIdList);
|
||||
List<PurchaseOrderDO> selectByOrderIdList(@Param("orderIdList") Set<Long> orderIdList);
|
||||
}
|
||||
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderAuditMapper">
|
||||
<resultMap id="BaseResultMap" type="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderAuditDO">
|
||||
<mapper namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.AuditMapper">
|
||||
<resultMap id="BaseResultMap" type="com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO">
|
||||
<result property="auditId" column="audit_id"/>
|
||||
<result property="orderId" column="order_id"/>
|
||||
<result property="subjectId" column="subject_id"/>
|
||||
<result property="subjectType" column="subject_type"/>
|
||||
<result property="state" column="state"/>
|
||||
<result property="type" column="type"/>
|
||||
<result property="auditReason" column="reject_reason"/>
|
||||
@ -54,7 +54,7 @@
|
||||
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO"
|
||||
resultMap="SelectByOrderIdListResultMap">
|
||||
SELECT
|
||||
po.order_id, po.order_sn, po.state, po.type, ov.vehicle_id, ov.vehicle_no, ov.dealer_id, ov.dealer_name, ov.origin, ov.destination
|
||||
po.order_id, po.order_sn, po.state, po.audit_state, po.type, ov.vehicle_id, ov.vehicle_no, ov.dealer_id, ov.dealer_name, ov.origin, ov.destination
|
||||
FROM purchase_order po
|
||||
LEFT JOIN order_vehicle ov ON po.order_id = ov.order_id AND ov.is_delete = 0
|
||||
<where>
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.xunhong.erp.turbo.api.biz.api;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.AuditUpdateCmd;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.vo.AuditVO;
|
||||
import com.xunhong.erp.turbo.base.dto.PageDTO;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
public interface AuditServiceI {
|
||||
PageDTO<AuditVO> page(AuditPageQry auditPageQry);
|
||||
|
||||
AuditVO update(AuditUpdateCmd auditUpdateCmd);
|
||||
|
||||
AuditVO show(AuditShowQry auditShowQry);
|
||||
}
|
||||
|
||||
@ -0,0 +1,93 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.cmd;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum;
|
||||
import com.xunhong.erp.turbo.base.dto.Command;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "审核更新")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class AuditUpdateCmd extends Command {
|
||||
|
||||
/**
|
||||
* 审核Id
|
||||
*/
|
||||
@Schema(title = "审核Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long auditId;
|
||||
|
||||
/**
|
||||
* 资源Id
|
||||
*/
|
||||
@Schema(title = "资源Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long subjectId;
|
||||
|
||||
/**
|
||||
* 资源类型
|
||||
*/
|
||||
@Schema(title = "资源类型", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private AuditSubjectTypeEnum subjectType;
|
||||
|
||||
/**
|
||||
* 审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回
|
||||
*/
|
||||
@Schema(title = "审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回")
|
||||
private AuditStateEnum state;
|
||||
|
||||
/**
|
||||
* 审核类型:1_审核员审核;2_老板审核
|
||||
*/
|
||||
@Schema(title = "审核类型:1_审核员审核;2_老板审核", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private AuditTypeEnum type;
|
||||
|
||||
/**
|
||||
* 驳回原因
|
||||
*/
|
||||
@Schema(title = "驳回原因")
|
||||
private String auditReason;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@Schema(title = "审核时间")
|
||||
private LocalDateTime auditAt;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
@Schema(title = "审核人ID", type = "string")
|
||||
private Long auditBy;
|
||||
|
||||
/**
|
||||
* 审核人名称
|
||||
*/
|
||||
@Schema(title = "审核人名称")
|
||||
private String auditByName;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
@Schema(title = "创建人ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long createdBy;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
@Schema(title = "创建人姓名")
|
||||
private String createdByName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Schema(title = "创建时间")
|
||||
private LocalDateTime createdAt;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ public class ExpenseCost extends Command {
|
||||
/**
|
||||
* 花销金额
|
||||
*/
|
||||
@Schema(title = "花销金额", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
|
||||
@Schema(title = "花销金额", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private BigDecimal expenseAmount;
|
||||
|
||||
/**
|
||||
|
||||
@ -52,5 +52,11 @@ public class ExpenseProvision extends Command {
|
||||
*/
|
||||
@Schema(title = "采购单ID", type = "string")
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Schema(title = "备注", type = "string")
|
||||
private String remark;
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum OrderAuditStateEnum {
|
||||
public enum AuditStateEnum {
|
||||
/**
|
||||
* 审核状态: 1_待审核;2_审核中;3_审核通过:4_审核驳回;5_审核取消;
|
||||
*/
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum AuditSubjectTypeEnum {
|
||||
/**
|
||||
* 审核对象类型:1_采购单;
|
||||
*/
|
||||
PURCHASE_ORDER(1, "采购单"),
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
private final int type;
|
||||
|
||||
private final String message;
|
||||
}
|
||||
@ -6,7 +6,7 @@ import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum OrderAuditTypeEnum {
|
||||
public enum AuditTypeEnum {
|
||||
/**
|
||||
* 审核类型:1_审核员审核;2_老板审核
|
||||
*/
|
||||
@ -0,0 +1,31 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
||||
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum;
|
||||
import com.xunhong.erp.turbo.base.dto.PageQuery;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "审核分页查询")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class AuditPageQry extends PageQuery {
|
||||
|
||||
@Schema(title = "审核ID", type = "string")
|
||||
private Long auditId;
|
||||
|
||||
@Schema(title = "审核类型:1_报价审核员审核;2_老板审核")
|
||||
private AuditTypeEnum type;
|
||||
|
||||
@Schema(title = "审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回")
|
||||
private AuditStateEnum state;
|
||||
|
||||
@Schema(title = "审核对象类型:1_采购单;")
|
||||
private AuditSubjectTypeEnum subjectType;
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
||||
|
||||
import com.xunhong.erp.turbo.base.dto.Query;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "审核查询")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class AuditShowQry extends Query {
|
||||
|
||||
@Schema(title = "审核ID", type = "string")
|
||||
private Long auditId;
|
||||
}
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
package com.xunhong.erp.turbo.api.biz.dto.vo;
|
||||
|
||||
import com.alibaba.cola.dto.DTO;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author shenyifei
|
||||
*/
|
||||
@Data
|
||||
@Schema(title = "审核")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class AuditVO extends DTO {
|
||||
|
||||
/**
|
||||
* 审核Id
|
||||
*/
|
||||
@Schema(title = "审核Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long auditId;
|
||||
|
||||
/**
|
||||
* 资源Id
|
||||
*/
|
||||
@Schema(title = "资源Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long subjectId;
|
||||
|
||||
/**
|
||||
* 资源类型
|
||||
*/
|
||||
@Schema(title = "资源类型", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private AuditSubjectTypeEnum subjectType;
|
||||
|
||||
/**
|
||||
* 审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回
|
||||
*/
|
||||
@Schema(title = "审核状态: 1_待审核;2_审核中;3_审核通过;4_审核驳回;5_审核撤回")
|
||||
private AuditStateEnum state;
|
||||
|
||||
/**
|
||||
* 审核类型:1_审核员审核;2_老板审核
|
||||
*/
|
||||
@Schema(title = "审核类型:1_审核员审核;2_老板审核", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private AuditTypeEnum type;
|
||||
|
||||
/**
|
||||
* 驳回原因
|
||||
*/
|
||||
@Schema(title = "驳回原因")
|
||||
private String auditReason;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@Schema(title = "审核时间")
|
||||
private LocalDateTime auditAt;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
@Schema(title = "审核人ID", type = "string")
|
||||
private Long auditBy;
|
||||
|
||||
/**
|
||||
* 审核人名称
|
||||
*/
|
||||
@Schema(title = "审核人名称")
|
||||
private String auditByName;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
@Schema(title = "创建人ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Long createdBy;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
@Schema(title = "创建人姓名")
|
||||
private String createdByName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Schema(title = "创建时间")
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
/**
|
||||
* 采购单信息
|
||||
*/
|
||||
@Schema(title = "采购单信息")
|
||||
private PurchaseOrderVO purchaseOrderVO;
|
||||
|
||||
}
|
||||
|
||||
@ -68,19 +68,19 @@ public class PurchaseOrderVO extends DTO {
|
||||
/**
|
||||
* 采购订单状态: 0_草稿;1_审核中;2_已完成;3_已驳回;4_已关闭;
|
||||
*/
|
||||
@Schema(title = "采购订单状态: 0_草稿;1_审核中;2_已完成;3_已驳回;4_已关闭;")
|
||||
@Schema(title = "采购订单状态: 0_草稿;1_审核中;2_已完成;3_已驳回;4_已关闭;", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private PurchaseOrderStateEnum state;
|
||||
|
||||
/**
|
||||
* 采购单审核状态: 1_待报价审核;2_待老板审批;3_老板审批通过;4_报价审核驳回;5_老板审批驳回
|
||||
*/
|
||||
@Schema(title = "采购单审核状态: 1_待报价审核;2_待老板审批;3_老板审批通过;4_报价审核驳回;5_老板审批驳回")
|
||||
@Schema(title = "采购单审核状态: 1_待报价审核;2_待老板审批;3_老板审批通过;4_报价审核驳回;5_老板审批驳回", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private PurchaseOrderAuditStateEnum auditState;
|
||||
|
||||
/**
|
||||
* 采购类型:1_产地采购;2_市场采购;
|
||||
*/
|
||||
@Schema(title = "采购类型:1_产地采购;2_市场采购;")
|
||||
@Schema(title = "采购类型:1_产地采购;2_市场采购;", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private PurchaseOrderTypeEnum type;
|
||||
|
||||
/**
|
||||
|
||||
@ -40,7 +40,7 @@ public enum BizErrorCode implements ErrorCode {
|
||||
/**
|
||||
* 审核记录不存在
|
||||
*/
|
||||
B_BIZ_ORDER_AUDIT_NOT_FOUND("B_BIZ_ORDER_AUDIT_NOT_FOUND", "审核记录不存在");
|
||||
B_BIZ_AUDIT_NOT_FOUND("B_BIZ_AUDIT_NOT_FOUND", "审核记录不存在");
|
||||
;
|
||||
|
||||
|
||||
@ -62,4 +62,4 @@ public enum BizErrorCode implements ErrorCode {
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user