| src/main/java/com/gs/xky/entity/VwCjScSjTsBb.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/entity/VwCjScSjTsBbMonth.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/mapper/VwCjScSjTsBbMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/mapper/VwCjScSjTsBbMonthMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbMonthServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/service/VwCjScSjTsBbMonthService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/gs/xky/service/VwCjScSjTsBbService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/VwCjScSjTsBbMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/VwCjScSjTsBbMonthMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/gs/xky/entity/VwCjScSjTsBb.java
@@ -75,4 +75,6 @@ * ç³è¯·æªå ¥åº */ private String sqwrk; } src/main/java/com/gs/xky/entity/VwCjScSjTsBbMonth.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; /** * * @TableName VW_CJ_SC_SJ_TS_BB_MONTH */ @TableName(value ="VW_CJ_SC_SJ_TS_BB_MONTH") @Data public class VwCjScSjTsBbMonth 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; } src/main/java/com/gs/xky/mapper/VwCjScSjTsBbMapper.java
@@ -1,13 +1,13 @@ package com.gs.xky.mapper; import com.gs.xky.entity.VwCjScSjTsBb; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.VwCjScSjTsBb; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BBãçæ°æ®åºæä½Mapper * @createDate 2025-11-12 16:42:06 * @Entity com.gs.xky.entity.VwCjScSjTsBb * @createDate 2025-11-12 19:44:46 * @Entity generator.domain.VwCjScSjTsBb */ public interface VwCjScSjTsBbMapper extends BaseMapper<VwCjScSjTsBb> { src/main/java/com/gs/xky/mapper/VwCjScSjTsBbMonthMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.gs.xky.entity.VwCjScSjTsBbMonth; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BB_MONTHãçæ°æ®åºæä½Mapper * @createDate 2025-11-12 19:45:00 * @Entity com.gs.xky.entity.VwCjScSjTsBbMonth */ public interface VwCjScSjTsBbMonthMapper extends BaseMapper<VwCjScSjTsBbMonth> { } src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbMonthServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package generator.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.VwCjScSjTsBbMonth; import generator.service.VwCjScSjTsBbMonthService; import com.gs.xky.mapper.VwCjScSjTsBbMonthMapper; import org.springframework.stereotype.Service; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BB_MONTHãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-11-12 19:45:00 */ @Service public class VwCjScSjTsBbMonthServiceImpl extends ServiceImpl<VwCjScSjTsBbMonthMapper, VwCjScSjTsBbMonth> implements VwCjScSjTsBbMonthService{ } src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java
@@ -1,182 +1,20 @@ package com.gs.xky.service.Impl; package generator.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 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 generator.domain.VwCjScSjTsBb; import generator.service.VwCjScSjTsBbService; import generator.mapper.VwCjScSjTsBbMapper; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BBãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-11-12 16:42:06 */ * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BBãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-11-12 19:44:46 */ @Service @Slf4j @RequiredArgsConstructor public class VwCjScSjTsBbServiceImpl extends ServiceImpl<VwCjScSjTsBbMapper, VwCjScSjTsBb> implements VwCjScSjTsBbService { 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ï¼ä¸¤ä¸ªsheeté¡µï¼ * * @param dataList æ°æ®å表 * @param filePath æä»¶è·¯å¾ */ private void exportToExcel(List<VwCjScSjTsBb> dataList, String filePath) { // è®¡ç®æ¨å¤©çæ¥æ LocalDate yesterday = LocalDate.now().minusDays(1); String yesterdayStr = yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // è®¡ç®æ¬æçèµ·æ¢æ¥æ LocalDate today = LocalDate.now(); LocalDate firstDayOfMonth = today.withDayOfMonth(1); LocalDate lastDayOfMonth = today.withDayOfMonth(today.lengthOfMonth()); String firstDayStr = firstDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String lastDayStr = lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); log.info("æ¨å¤©æ¥æ: {}", yesterdayStr); log.info("æ¬æèå´: {} è³ {}", firstDayStr, lastDayStr); // è¿æ»¤æ°æ®ï¼é¢è®¡å¼å·¥å¨æ¨å¤©çæ°æ® List<VwCjScSjTsBb> yesterdayData = dataList.stream() .filter(item -> item.getYjkg() != null && item.getYjkg().startsWith(yesterdayStr)) .collect(Collectors.toList()); // è¿æ»¤æ°æ®ï¼é¢è®¡å¼å·¥å¨æ¬æçæ°æ® List<VwCjScSjTsBb> thisMonthData = dataList.stream() .filter(item -> { if (item.getYjkg() == null || item.getYjkg().trim().isEmpty()) { return false; } String yjkg = item.getYjkg().substring(0, Math.min(10, item.getYjkg().length())); return yjkg.compareTo(firstDayStr) >= 0 && yjkg.compareTo(lastDayStr) <= 0; }) .collect(Collectors.toList()); log.info("æ¨å¤©æ°æ®: {} æ¡", yesterdayData.size()); log.info("æ¬ææ°æ®: {} æ¡", thisMonthData.size()); // å建Excelåå ¥å¨ï¼ç¬¬ä¸ä¸ªsheetï¼ ExcelWriter writer = ExcelUtil.getWriter(filePath, "æ¨å¤©é¢è®¡å¼å·¥"); // åå ¥ç¬¬ä¸ä¸ªsheetï¼æ¨å¤©é¢è®¡å¼å·¥çæ°æ® writeSheetData(writer, yesterdayData, "æ¨å¤©é¢è®¡å¼å·¥æ°æ®ï¼" + yesterdayStr + "ï¼"); // å建第äºä¸ªsheet writer.setSheet("æ¬æé¢è®¡å¼å·¥"); // åå ¥ç¬¬äºä¸ªsheetï¼æ¬æé¢è®¡å¼å·¥çæ°æ® writeSheetData(writer, thisMonthData, "æ¬æé¢è®¡å¼å·¥æ°æ®ï¼" + firstDayStr + " è³ " + lastDayStr + "ï¼"); // å ³éwriterï¼éæ¾å å writer.close(); } /** * åå ¥å个sheetçæ°æ® * * @param writer Excelåå ¥å¨ * @param dataList æ°æ®å表 * @param title æ é¢ */ private void writeSheetData(ExcelWriter writer, List<VwCjScSjTsBb> dataList, String title) { // æ¸ ç©ºä¹åçå«å设置 writer.clearHeaderAlias(); // 设置表头å«åï¼ä¸æååï¼ writer.addHeaderAlias("daa001", "å·¥åå·"); writer.addHeaderAlias("itemNo", "ç©æç¼ç "); writer.addHeaderAlias("itemName", "ç©æåç§°"); writer.addHeaderAlias("departmentname", "车é´åç§°"); writer.addHeaderAlias("lineName", "线ä½åç§°"); writer.addHeaderAlias("departmentcode", "车é´ç¼ç "); 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, title); // åå ¥æ°æ®ï¼é»è®¤ä¼ä½¿ç¨å«åä½ä¸ºè¡¨å¤´ writer.write(dataList, true); // 设置å宽èªéåº writer.autoSizeColumnAll(); } } src/main/java/com/gs/xky/service/VwCjScSjTsBbMonthService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package generator.service; import com.gs.xky.entity.VwCjScSjTsBbMonth; import com.baomidou.mybatisplus.extension.service.IService; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BB_MONTHãçæ°æ®åºæä½Service * @createDate 2025-11-12 19:45:00 */ public interface VwCjScSjTsBbMonthService extends IService<VwCjScSjTsBbMonth> { } src/main/java/com/gs/xky/service/VwCjScSjTsBbService.java
@@ -1,19 +1,13 @@ package com.gs.xky.service; package generator.service; import generator.domain.VwCjScSjTsBb; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.VwCjScSjTsBb; /** * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BBãçæ°æ®åºæä½Service * @createDate 2025-11-12 16:42:06 */ * @author Administrator * @description é对表ãVW_CJ_SC_SJ_TS_BBãçæ°æ®åºæä½Service * @createDate 2025-11-12 19:44:46 */ public interface VwCjScSjTsBbService extends IService<VwCjScSjTsBb> { /** * å¯¼åºæ°æ®å°Excelå¹¶åéééæ¶æ¯ * * @return æ¯å¦æå */ boolean exportAndSendToDingtalk() throws Exception; } src/main/resources/mapper/VwCjScSjTsBbMapper.xml
@@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.VwCjScSjTsBbMapper"> <mapper namespace="generator.mapper.VwCjScSjTsBbMapper"> </mapper> src/main/resources/mapper/VwCjScSjTsBbMonthMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ <?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.gs.xky.mapper.VwCjScSjTsBbMonthMapper"> <resultMap id="BaseResultMap" type="com.gs.xky.entity.VwCjScSjTsBbMonth"> <result property="itemName" column="ITEM_NAME" /> <result property="itemNo" column="ITEM_NO" /> <result property="departmentname" column="DEPARTMENTNAME" /> <result property="departmentcode" column="DEPARTMENTCODE" /> <result property="daa001" column="DAA001" /> <result property="lineName" column="LINE_NAME" /> <result property="lineNo" column="LINE_NO" /> <result property="daa008" column="DAA008" /> <result property="yjkg" column="YJKG" /> <result property="sjkg" column="SJKG" /> <result property="sq" column="SQ" /> <result property="rk" column="RK" /> <result property="sqwwg" column="SQWWG" /> <result property="rkwwg" column="RKWWG" /> <result property="sqwrk" column="SQWRK" /> </resultMap> <sql id="Base_Column_List"> ITEM_NAME,ITEM_NO,DEPARTMENTNAME,DEPARTMENTCODE,DAA001,LINE_NAME, LINE_NO,DAA008,YJKG,SJKG,SQ, RK,SQWWG,RKWWG,SQWRK </sql> </mapper>