buhuazhen
2026-04-24 2ad27cc54d8fce92cc3f8a2588e25a1517f57dfd
feat(production): 添加生产打印订单相关功能和客户跟进文件查询接口

- 在CustomerFollowUpFileService中新增根据ID获取SimpleFileVo方法
- 在CustomerFollowUpFileServiceImpl中实现根据ID获取SimpleFileVo功能,支持空ID和无记录时返回空对象
- 新增ProcessContentDto用于封装工序加工内容及相关机台信息
- ProductionPrintOrder新增切料图示文件ID和客户单位字段
- ProductionPrintOrderController新增根据订单ID查询打印订单接口,修改保存接口返回统一响应类型
- ProductionPrintOrderDto新增cuttingFileVo字段用于展示切料文件信息
- ProductionPrintOrderService新增根据订单ID查询打印订单方法
- ProductionPrintOrderServiceImpl实现根据订单ID查询打印订单,包含切料文件附件信息的封装
- 修改保存方法中工序相关字段映射及备注字段获取逻辑,确保工序名称正确赋值和连接
- 引入CustomerFollowUpFileService支持切料文件附件查询
已修改8个文件
80 ■■■■ 文件已修改
src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductionPrintOrderController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProcessContentDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductionPrintOrderDto.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
@@ -35,4 +35,6 @@
           @NotNull BiConsumer<T, List<SimpleFileVo>> setAttachmentList
    );
    SimpleFileVo getSimpleFileVoById(@Nullable Long id);
}
src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpFileServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.basic.mapper.CustomerFollowUpFileMapper;
import com.ruoyi.basic.pojo.CustomerFollowUp;
import com.ruoyi.basic.pojo.CustomerFollowUpFile;
import com.ruoyi.basic.service.CustomerFollowUpFileService;
import com.ruoyi.basic.service.CustomerFollowUpService;
@@ -74,4 +75,16 @@
            }
        });
    }
    @Override
    public SimpleFileVo getSimpleFileVoById(Long id) {
        if(id == null){
            return new SimpleFileVo();
        }
        List<CustomerFollowUpFile> followUpFilesByIds = customerFollowUpService.getFollowUpFilesByIds(Lists.newArrayList(id));
        if(CollUtil.isEmpty(followUpFilesByIds)){
            return new SimpleFileVo();
        }
        return SimpleFileVo.convert(followUpFilesByIds.get(0));
    }
}
src/main/java/com/ruoyi/production/controller/ProductionPrintOrderController.java
@@ -1,14 +1,12 @@
package com.ruoyi.production.controller;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.SaveProductionPrintOrderDto;
import com.ruoyi.production.pojo.ProductionPrintOrder;
import com.ruoyi.production.service.ProductionPrintOrderService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
 * @author buhuazhen
@@ -24,8 +22,15 @@
    private final ProductionPrintOrderService productionPrintOrderService;
    @PostMapping("/save")
    public void save(@RequestBody SaveProductionPrintOrderDto dto){
    public R save(@RequestBody SaveProductionPrintOrderDto dto){
        productionPrintOrderService.save(dto);
        return R.ok();
    }
    @PostMapping("/getByProductWordId/{id}")
    public ProductionPrintOrder getByProductWordId(@PathVariable Long id){
        return productionPrintOrderService.getByProductWordId(id);
    }
}
src/main/java/com/ruoyi/production/dto/ProcessContentDto.java
@@ -20,7 +20,7 @@
public class ProcessContentDto implements Serializable {
    private String id;
    private Long processId;             // 工序id
    private String processContent;    // 工艺加工内容
    private String processName;    // 工艺加工内容
    private String openCount;         // 开数
    private String processPositive;   // 工艺正数
    private String allowanceQty;      // 加放数
src/main/java/com/ruoyi/production/dto/ProductionPrintOrderDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.dto;
import com.ruoyi.common.vo.SimpleFileVo;
import com.ruoyi.production.pojo.ProductionPrintOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -18,6 +19,6 @@
@AllArgsConstructor
@NoArgsConstructor
public class ProductionPrintOrderDto extends ProductionPrintOrder implements Serializable {
    private String xxx;
    private SimpleFileVo cuttingFileVo;
}
src/main/java/com/ruoyi/production/pojo/ProductionPrintOrder.java
@@ -244,4 +244,16 @@
     */
    @TableField(value = "product_model_id")
    private Long productModelId;
    /**
     * 切料图示文件id
     */
    @TableField(value = "cutting_file_id")
    private Long cuttingFileId;
    /**
     * 客户单位
     */
    @TableField(value = "client_name")
    private String clientName;
}
src/main/java/com/ruoyi/production/service/ProductionPrintOrderService.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.service;
import com.ruoyi.production.dto.ProductionPrintOrderDto;
import com.ruoyi.production.dto.SaveProductionPrintOrderDto;
import com.ruoyi.production.pojo.ProductionPrintOrder;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -17,5 +18,10 @@
     */
    void save(SaveProductionPrintOrderDto dto);
    /**
     * 根据订单ID 查询
     * @param id 订单
     * @return
     */
    ProductionPrintOrderDto getByProductWordId(Long id);
}
src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java
@@ -3,10 +3,13 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.service.CustomerFollowUpFileService;
import com.ruoyi.dto.SimplePersonDto;
import com.ruoyi.production.dto.ProcessContentDto;
import com.ruoyi.production.dto.ProcessRouteAnticlockwiseDto;
import com.ruoyi.production.dto.ProductionPrintOrderDto;
import com.ruoyi.production.dto.SaveProductionPrintOrderDto;
import com.ruoyi.production.mapper.ProductOrderMapper;
import com.ruoyi.production.mapper.ProductionPrintOrderMapper;
@@ -34,6 +37,8 @@
    private final ProductOrderMapper productOrderMapper;
    private final ProcessRouteServiceImpl processRouteService;
    private final CustomerFollowUpFileService customerFollowUpFileService;
    @Override
    @Transactional
    public void save(SaveProductionPrintOrderDto dto) {
@@ -50,7 +55,7 @@
        List<ProcessRouteAnticlockwiseDto> processRouteAnticlockwiseDtos = processContentDtoList.stream().map(it -> {
            ProcessRouteAnticlockwiseDto pdto = new ProcessRouteAnticlockwiseDto();
            pdto.setProcessId(it.getProcessId());
            pdto.setProcessRouteName(it.getProcessContent());
            pdto.setProcessRouteName(it.getProcessName());
            pdto.setProcessRouteOpenNum(it.getOpenCount());
            pdto.setProcessRouteNum(it.getProcessPositive());
            pdto.setProcessRouteAddNum(it.getProcessPositive());
@@ -58,18 +63,34 @@
            pdto.setProductModelId(dto.getProductModelId());
            pdto.setUserIds(it.getReportWorkerList().stream().map(SimplePersonDto::getUserName).collect(Collectors.joining(",")));
            pdto.setDeviceId(it.getDeviceId());
            pdto.setUuid(it.getId());
            return pdto;
        }).collect(Collectors.toList());
        processRouteService.processRouteAnticlockwise(processRouteAnticlockwiseDtos,dto.getProductModelId(),dto.getProductOrderId());
        // 生成备注 备注由全部工序名称来 组成
        String remark = processContentDtoList.stream().map(ProcessContentDto::getProcessContent).collect(Collectors.joining("、"));
        String remark = processContentDtoList.stream().map(ProcessContentDto::getProcessName).collect(Collectors.joining("、"));
        ProductOrder productOrder = new ProductOrder();
        productOrder.setId(dto.getProductOrderId());
        productOrder.setRemark(remark);
        productOrderMapper.updateById(productOrder);
        int i = dto.getId() == null ? productionPrintOrderMapper.insert(productionPrintOrder) : productionPrintOrderMapper.updateById(productionPrintOrder);
    }
    @Override
    public ProductionPrintOrderDto getByProductWordId(Long id) {
        LambdaQueryWrapper<ProductionPrintOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ProductionPrintOrder::getProductOrderId, id);
        queryWrapper.orderByDesc(ProductionPrintOrder::getCreateTime);
        queryWrapper.last("limit 1");
        ProductionPrintOrder productionPrintOrder = productionPrintOrderMapper.selectOne(queryWrapper);
        ProductionPrintOrderDto productionPrintOrderDto = BeanUtil.copyProperties(productionPrintOrder, ProductionPrintOrderDto.class);
        // 获取附件信息
        productionPrintOrderDto.setCuttingFileVo(customerFollowUpFileService.getSimpleFileVoById(productionPrintOrderDto.getCuttingFileId()));
        return productionPrintOrderDto;
    }
}