tjx
2025-11-12 e84eb88617326313e9f4543a2220a68e8f119dce
更新钉钉配置
已修改5个文件
291 ■■■■ 文件已修改
pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xky/entity/VwCjScSjTsBb.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xky/service/VwCjScSjTsBbService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/gs/xky/XkyApplicationTests.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -96,6 +96,13 @@
            <artifactId>hutool-all</artifactId>
            <version>5.8.18</version>
        </dependency>
        <!-- Apache POI for Excel (required by Hutool) -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>
    </dependencies>
    <build>
src/main/java/com/gs/xky/entity/VwCjScSjTsBb.java
@@ -2,8 +2,9 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import java.io.Serializable;
/**
 * 
@@ -12,81 +13,66 @@
@TableName(value ="VW_CJ_SC_SJ_TS_BB")
@Data
public class VwCjScSjTsBb implements Serializable {
    /**
     *
     */
    private Object itemName;
    /**
     *
     */
    private Object itemNo;
    /**
     *
     */
    private Object departmentname;
    /**
     *
     */
    private Object departmentcode;
    /**
     *
     */
    private Object daa001;
    /**
     *
     */
    private Object lineName;
    /**
     *
     */
    private Object lineNo;
    /**
     *
     */
    private Object daa008;
    /**
     *
     */
    private Object yjkg;
    /**
     *
     */
    private Object sjkg;
    /**
     *
     */
    private Object sq;
    /**
     *
     */
    private Object rk;
    /**
     *
     */
    private Object sqwwg;
    /**
     *
     */
    private Object rkwwg;
    /**
     *
     */
    private Object sqwrk;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     * 物料名称
     */
    private String itemName;
    /**
     * 物料编码
     */
    private String itemNo;
    /**
     * 车间名称
     */
    private String departmentname;
    /**
     * 车间编码
     */
    private String departmentcode;
    /**
     * 工单号
     */
    private String daa001;
    /**
     * 线体名称
     */
    private String lineName;
    /**
     * 线体编码
     */
    private String lineNo;
    /**
     * 工单数量
     */
    private String daa008;
    /**
     * 预计开工
     */
    private String yjkg;
    /**
     * 实际开工
     */
    private String sjkg;
    /**
     * 申请入库数
     */
    private String sq;
    /**
     * 入库
     */
    private String rk;
    /**
     * 申请未完工数
     */
    private String sqwwg;
    /**
     * 入库未完工
     */
    private String rkwwg;
    /**
     * 申请未入库
     */
    private String sqwrk;
}
src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java
@@ -1,10 +1,20 @@
package com.gs.xky.service.Impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import generator.domain.VwCjScSjTsBb;
import com.gs.xky.service.VwCjScSjTsBbService;
import com.gs.xky.entity.VwCjScSjTsBb;
import com.gs.xky.mapper.VwCjScSjTsBbMapper;
import com.gs.xky.service.DingtalkInfoService;
import com.gs.xky.service.VwCjScSjTsBbService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
@@ -12,9 +22,104 @@
* @createDate 2025-11-12 16:42:06
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class VwCjScSjTsBbServiceImpl extends ServiceImpl<VwCjScSjTsBbMapper, VwCjScSjTsBb>
    implements VwCjScSjTsBbService{
    private final DingtalkInfoService dingtalkInfoService;
    @Override
    public boolean exportAndSendToDingtalk() throws Exception {
        String exportFilePath = null;
        try {
            // 1. 查询所有数据
            log.info("开始查询生产数据...");
            List<VwCjScSjTsBb> dataList = list();
            if (dataList == null || dataList.isEmpty()) {
                log.warn("没有数据需要导出");
                return false;
            }
            log.info("查询到 {} 条数据", dataList.size());
            // 2. 准备导出文件路径
            String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
            String fileName = "生产数据报表_" + timestamp + ".xlsx";
            exportFilePath = "D:\\BIFile\\" + fileName;
            // 确保目录存在
            FileUtil.mkdir("D:\\BIFile");
            // 3. 导出到Excel
            log.info("开始导出Excel文件: {}", exportFilePath);
            exportToExcel(dataList, exportFilePath);
            log.info("Excel文件导出成功");
            // 4. 发送钉钉消息
            log.info("开始发送钉钉文件消息...");
            boolean sendResult = dingtalkInfoService.sendFileMessage(exportFilePath);
            if (sendResult) {
                log.info("钉钉文件消息发送成功");
            } else {
                log.warn("钉钉文件消息发送失败");
            }
            return sendResult;
        } catch (Exception e) {
            log.error("导出并发送失败", e);
            throw e;
        } finally {
            // 可选:发送后删除临时文件
            // if (exportFilePath != null && FileUtil.exist(exportFilePath)) {
            //     FileUtil.del(exportFilePath);
            //     log.info("临时文件已删除: {}", exportFilePath);
            // }
        }
    }
    /**
     * 导出数据到Excel
     *
     * @param dataList 数据列表
     * @param filePath 文件路径
     */
    private void exportToExcel(List<VwCjScSjTsBb> dataList, String filePath) {
        // 创建Excel写入器
        ExcelWriter writer = ExcelUtil.getWriter(filePath);
        // 设置表头别名(中文列名)
        writer.addHeaderAlias("itemName", "物料名称");
        writer.addHeaderAlias("itemNo", "物料编码");
        writer.addHeaderAlias("departmentname", "车间名称");
        writer.addHeaderAlias("departmentcode", "车间编码");
        writer.addHeaderAlias("daa001", "工单号");
        writer.addHeaderAlias("lineName", "线体名称");
        writer.addHeaderAlias("lineNo", "线体编码");
        writer.addHeaderAlias("daa008", "工单数量");
        writer.addHeaderAlias("yjkg", "预计开工");
        writer.addHeaderAlias("sjkg", "实际开工");
        writer.addHeaderAlias("sq", "申请入库数");
        writer.addHeaderAlias("rk", "入库数");
        writer.addHeaderAlias("sqwwg", "申请未完工数");
        writer.addHeaderAlias("rkwwg", "入库未完工");
        writer.addHeaderAlias("sqwrk", "申请未入库");
        // 合并单元格后标题行
        writer.merge(14, "车间生产数据统计报表");
        // 写入数据,默认会使用别名作为表头
        writer.write(dataList, true);
        // 设置列宽自适应
        writer.autoSizeColumnAll();
        // 关闭writer,释放内存
        writer.close();
    }
}
src/main/java/com/gs/xky/service/VwCjScSjTsBbService.java
@@ -1,7 +1,7 @@
package com.gs.xky.service;
import generator.domain.VwCjScSjTsBb;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gs.xky.entity.VwCjScSjTsBb;
/**
* @author Administrator
@@ -10,4 +10,10 @@
*/
public interface VwCjScSjTsBbService extends IService<VwCjScSjTsBb> {
    /**
     * 导出数据到Excel并发送钉钉消息
     *
     * @return 是否成功
     */
    boolean exportAndSendToDingtalk() throws Exception;
}
src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -41,6 +41,8 @@
    private PurchaseService service;
    @Autowired
    private DingtalkInfoService dingtalkInfoService;
    @Autowired
    private VwCjScSjTsBbService vwCjScSjTsBbService;
    @Test
    void contextLoads() throws IOException {
@@ -217,4 +219,31 @@
        System.out.println("=== 测试结束 ===");
    }
    /**
     * 测试导出生产数据并发送钉钉消息
     * 功能:查询VW_CJ_SC_SJ_TS_BB表数据 -> 导出Excel -> 发送钉钉文件消息
     */
    @Test
    void testExportAndSendProductionData() throws Exception {
        System.out.println("=== 开始测试导出生产数据并发送钉钉 ===");
        try {
            boolean result = vwCjScSjTsBbService.exportAndSendToDingtalk();
            if (result) {
                System.out.println("✓ 生产数据导出并发送成功");
                System.out.println("  - 数据已从 VW_CJ_SC_SJ_TS_BB 表查询");
                System.out.println("  - Excel 文件已生成并保存到 D:\\BIFile\\");
                System.out.println("  - 钉钉文件消息已发送");
            } else {
                System.out.println("✗ 生产数据导出或发送失败");
            }
        } catch (Exception e) {
            System.out.println("✗ 导出并发送时发生异常: " + e.getMessage());
            e.printStackTrace();
        }
        System.out.println("=== 测试结束 ===");
    }
}