package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.ManageRecordTotalMapper; import com.yuanchu.mom.pojo.ManageRecordTotal; import com.yuanchu.mom.pojo.ManageRecordVerify; import com.yuanchu.mom.mapper.ManageRecordVerifyMapper; import com.yuanchu.mom.service.ManageRecordVerifyService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.utils.QueryWrappers; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 外来文件确认记录 服务实现类 *

* * @author * @since 2024-11-12 10:29:44 */ @Service @Transactional(rollbackFor = Exception.class) public class ManageRecordVerifyServiceImpl extends ServiceImpl implements ManageRecordVerifyService { @Resource private ManageRecordVerifyMapper manageRecordVerifyMapper; @Resource private ManageRecordTotalMapper manageRecordTotalMapper; @Override public Map pageManageRecordVerify(Page page, ManageRecordVerify manageRecordVerify) { Map map = new HashMap<>(); map.put("head", PrintChina.printChina(ManageRecordVerify.class)); if (ObjectUtils.isEmpty(manageRecordVerify.getManageRecordTotalId())) { //获取当前年份 LocalDate currentDate = LocalDate.now(); // 定义日期格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy"); // 格式化当前日期 String currentMonth = currentDate.format(formatter); //查询历史 ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth)); manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId()); } map.put("body", manageRecordVerifyMapper.pageManageRecordVerify(page, QueryWrappers.queryWrappers(manageRecordVerify))); return map; } @Override public int addManageRecordVerify(ManageRecordVerify manageRecordVerify) { //获取当前年份 LocalDate currentDate = LocalDate.now(); // 定义日期格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy"); // 格式化当前日期 String currentMonth = currentDate.format(formatter); ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth)); manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId()); manageRecordVerifyMapper.insert(manageRecordVerify); manageRecordTotal.setTotalNum(1 + manageRecordTotal.getTotalNum()); return manageRecordTotalMapper.updateById(manageRecordTotal); } @Override public int delManageRecordVerify(Integer id) { ManageRecordVerify manageRecordVerify = manageRecordVerifyMapper.selectById(id); manageRecordVerifyMapper.deleteById(id); ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(manageRecordVerify.getManageRecordTotalId()); manageRecordTotal.setTotalNum(manageRecordTotal.getTotalNum() - 1); return manageRecordTotalMapper.updateById(manageRecordTotal); } @Override public int exportManageRecordVerify(MultipartFile file) { List manageRecordVerifyList = new ArrayList<>(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //获取当前年份 LocalDate currentDate = LocalDate.now(); // 定义日期格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy"); // 格式化当前日期 String currentMonth = currentDate.format(formatter); ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectOne(Wrappers.lambdaQuery().eq(ManageRecordTotal::getYear, currentMonth)); try { InputStream inputStream = file.getInputStream(); XWPFDocument document = new XWPFDocument(inputStream); List tables = document.getTables(); if (tables.isEmpty()) { throw new ErrorException("文档中没有表格"); } for (XWPFTable table : tables) { List rows = table.getRows(); if (rows.size() <= 1) { throw new ErrorException("表格没有数据行"); } for (int i = 1; i < rows.size(); i++) { // 从第二行开始,跳过表头 XWPFTableRow row = rows.get(i); if (row.getTableCells().size() != 8) { System.out.println("行 " + (i + 1) + " 的列数不匹配,跳过该行"); continue; } if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) { ManageRecordVerify manageRecordVerify = new ManageRecordVerify(); manageRecordVerify.setDocumentName(row.getCell(1).getText()); manageRecordVerify.setDocumentCode(row.getCell(2).getText()); manageRecordVerify.setStandardName(row.getCell(3).getText()); manageRecordVerify.setStandardCode(row.getCell(4).getText()); try { manageRecordVerify.setEffectiveDate(LocalDate.parse(row.getCell(5).getText(), dateTimeFormatter)); } catch (Exception e) { manageRecordVerify.setEffectiveDate(null); } try { manageRecordVerify.setCancelDate(LocalDate.parse(row.getCell(6).getText(), dateTimeFormatter)); } catch (Exception e) { manageRecordVerify.setCancelDate(null); } manageRecordVerify.setNote(row.getCell(7).getText()); manageRecordVerify.setManageRecordTotalId(manageRecordTotal.getId()); if (manageRecordVerifyMapper.selectCount(Wrappers.lambdaQuery() .eq(ManageRecordVerify::getDocumentCode, manageRecordVerify.getDocumentCode()) .eq(ManageRecordVerify::getDocumentName, manageRecordVerify.getDocumentName()) .eq(ManageRecordVerify::getStandardName, manageRecordVerify.getStandardName()) .eq(ManageRecordVerify::getStandardCode, manageRecordVerify.getStandardCode()) .eq(ManageRecordVerify::getManageRecordTotalId, manageRecordVerify.getManageRecordTotalId())) <= 0) { manageRecordVerifyList.add(manageRecordVerify); } } } } saveBatch(manageRecordVerifyList); } catch (IOException e) { e.printStackTrace(); } return 0; } }