liyong
2026-04-25 20d3e1da6517ed5e55ae3613ccbbb01f1b9eda2e
fix(approve): 修复审批流程中的数据类型和业务逻辑问题

- 将 ApproveLog 中的 approveId 从 Long 类型改为 String 类型
- 修复 Excel 导出时日期格式问题,将开始时间和结束时间格式统一为 yyyy-MM-dd HH:mm:ss
- 修改删除接口参数类型,将删除方法中的 ID 列表从 Long 类型改为 String 类型
- 更新审批编号生成方式,使用新的计数方法替代原有方法
- 修复删除审批时传递参数的类型转换问题
- 移除 VO 类中不必要的导入包和注解
- 修复生产路由服务中产品模型 ID 和计划数量的赋值逻辑
- 为产品型号反向新增功能增加 ID 查询支持
- 在销售台账产品服务中集成产品型号反向新增逻辑
已修改10个文件
52 ■■■■■ 文件已修改
src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/pojo/ApproveLog.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/service/IApproveProcessService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/dto/ProductModelAnticlockwiseDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/approve/bean/vo/ApproveProcessVO.java
@@ -3,15 +3,11 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Data
src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -105,7 +105,7 @@
    @DeleteMapping("/deleteIds")
    @ApiOperation(value = "删除审批")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult deleteIds(@RequestBody List<Long> ids) {
    public AjaxResult deleteIds(@RequestBody List<String> ids) {
        if (ids == null || ids.size() == 0) {
            return AjaxResult.warn("参数不能为空");
        }
src/main/java/com/ruoyi/approve/pojo/ApproveLog.java
@@ -29,7 +29,7 @@
    /**
     * 审批id
     */
    private Long approveId;
    private String approveId;
    /**
     * 审批节点顺序
src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -139,13 +139,13 @@
    @ApiModelProperty(value = "审批备注")
    private String approveRemark;
    @Excel(name = "开始时间", dateFormat = "yyyy-MM-dd",width = 30)
    @Excel(name = "开始时间", dateFormat = "yyyy-MM-dd HH:mm:ss",width = 30)
    @ApiModelProperty(value = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDate;
    @Excel(name = "结束时间", dateFormat = "yyyy-MM-dd",width = 30)
    @Excel(name = "结束时间", dateFormat = "yyyy-MM-dd HH:mm:ss",width = 30)
    @ApiModelProperty(value = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -25,7 +25,7 @@
    IPage<ApproveProcess> listAll(Page page, ApproveProcess approveProcess);
    void delApprove(List<Long> ids);
    void delApprove(List<String> ids);
    void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException;
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -83,7 +83,7 @@
//        String approveID = today + formattedCount;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        ApproveProcess approveProcess = new ApproveProcess();
        String no = OrderUtils.countTodayByCreateTime(approveProcessMapper, "CGSP");
        String no = OrderUtils.countAfterServiceTodayByCreateTime(approveProcessMapper, "CGSP");
        approveProcess.setApproveId(no);
        approveProcess.setApproveUser(sysUser.getUserId());
        approveProcess.setApproveUserName(sysUser.getNickName());
@@ -240,8 +240,8 @@
    }
    @Override
    public void delApprove(List<Long> ids) {
        for (Long approveId : ids) {
    public void delApprove(List<String> ids) {
        for (String approveId : ids) {
            ApproveProcess approveProcess = approveProcessMapper.selectOne(new LambdaQueryWrapper<ApproveProcess>()
                    .eq(ApproveProcess::getApproveId, approveId)
                    .eq(ApproveProcess::getApproveDelete, 0)
@@ -254,7 +254,7 @@
            // 删除对应的附件
            commonFileService.deleteByBusinessId(approveProcess.getId(), FileNameType.ApproveProcess.getValue());
            //  删除审批节点
            approveNodeService.delApproveNodeByApproveId(approveId.toString());
            approveNodeService.delApproveNodeByApproveId(approveId);
            //  只查最新一条审批流程
            ApproveProcess latestProcess = approveProcessMapper.selectOne(
src/main/java/com/ruoyi/basic/dto/ProductModelAnticlockwiseDto.java
@@ -17,4 +17,8 @@
    private String subUnit;
    private String type;
    private Long id;
}
src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -169,7 +169,12 @@
    //反向新增成品产品,只有销售关联新增的时候调用
    @Override
    public Long productModelAnticlockwise(ProductModelAnticlockwiseDto productModelDto) {
        ProductModel oldProductModel = productModelMapper.selectOldProductModel(productModelDto.getModel(), productModelDto.getProductName());
        ProductModel oldProductModel = new ProductModel();
        if (ObjectUtils.isNotEmpty(productModelDto.getId())) {
             oldProductModel = productModelMapper.selectById(productModelDto.getId());
        }else {
             oldProductModel = productModelMapper.selectOldProductModel(productModelDto.getModel(), productModelDto.getProductName());
        }
        //存在就更新
        if (oldProductModel != null) {
            oldProductModel.setModel(productModelDto.getModel());
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -179,7 +179,7 @@
            ProcessRouteItem item = new ProcessRouteItem();
            item.setRouteId(routeId);
            item.setProcessId(dto.getProcessId());
            item.setProductModelId(dto.getProductModelId());
            item.setProductModelId(productModelId);
            item.setProcessRouteName(dto.getProcessRouteName());
            item.setProcessRouteOpenNum(dto.getProcessRouteOpenNum());
            item.setProcessRouteNum(dto.getProcessRouteNum());
@@ -229,8 +229,7 @@
            ProductWorkOrder productWorkOrder = new ProductWorkOrder();
            productWorkOrder.setProductProcessRouteItemId(item.getId());
            productWorkOrder.setProductOrderId(productOrderId);
            ProductOrder order = productOrderMapper.selectById(productOrderId);
            productWorkOrder.setPlanQuantity(order.getQuantity());
            productWorkOrder.setPlanQuantity(new BigDecimal(dto.getProcessRouteNum()));
            productWorkOrder.setDeviceId(dto.getDeviceId());
            productWorkOrder.setUserIds(dto.getUserIds());
            productWorkOrder.setUserNames(dto.getUserNames());
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -7,6 +7,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.ProductModelAnticlockwiseDto;
import com.ruoyi.basic.service.IProductModelService;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.framework.web.domain.R;
@@ -85,6 +87,8 @@
    private StockInventoryMapper stockInventoryMapper;
    @Autowired
    private ProductOrderServiceImpl productOrderServiceImpl;
    @Autowired
    private IProductModelService productModelService;
    @Override
    public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -195,6 +199,16 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) {
        //先查询基础表有没有
        ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto();
        productModelAnticlockwiseDto.setProductName(salesLedgerProduct.getProductCategory());
        productModelAnticlockwiseDto.setModel(salesLedgerProduct.getSpecificationModel());
        productModelAnticlockwiseDto.setUnit(salesLedgerProduct.getUnit());
        productModelAnticlockwiseDto.setSubUnit(salesLedgerProduct.getUnit());
        productModelAnticlockwiseDto.setId(salesLedgerProduct.getId());
        Long l = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto);
        salesLedgerProduct.setProductModelId(l);
        // 待回款,付款
        if (salesLedgerProduct.getType().equals(1)) {
            salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));