Compare commits

...

2 Commits

Author SHA1 Message Date
佟明轩 e0ce8e5a68 Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server 2025-05-16 13:25:46 +08:00
佟明轩 ada8607f2b 导出表格 2025-05-16 13:24:40 +08:00
1 changed files with 98 additions and 22 deletions

View File

@ -5,26 +5,27 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.*; import com.syjiaer.clinic.server.common.enums.*;
import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.util.HttpUtil;
import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.goods.GoodsCate;
import com.syjiaer.clinic.server.entity.inventory.*; import com.syjiaer.clinic.server.entity.inventory.*;
import com.syjiaer.clinic.server.entity.inventory.dto.PurchaseOrderQuery; import com.syjiaer.clinic.server.entity.inventory.dto.PurchaseOrderQuery;
import com.syjiaer.clinic.server.entity.inventory.vo.InventoryGoodsVo; import com.syjiaer.clinic.server.entity.inventory.vo.InventoryGoodsVo;
import com.syjiaer.clinic.server.entity.inventory.vo.InventoryPurchaseVo; import com.syjiaer.clinic.server.entity.inventory.vo.InventoryPurchaseVo;
import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.manager.ManagerUser;
import com.syjiaer.clinic.server.mapper.goods.GoodsCateMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.*; import com.syjiaer.clinic.server.mapper.inventory.*;
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper; import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.goods.GoodsService; import com.syjiaer.clinic.server.service.goods.GoodsService;
import jakarta.annotation.Resource; import lombok.val;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ResourceUtils;
import java.io.*; import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -32,6 +33,8 @@ import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.logging.Logger;
@Service @Service
public class InventoryPurchaseService extends BaseService { public class InventoryPurchaseService extends BaseService {
@Autowired @Autowired
@ -54,8 +57,10 @@ public class InventoryPurchaseService extends BaseService {
private InventoryPurchaseMapper inventoryPurchaseMapper; private InventoryPurchaseMapper inventoryPurchaseMapper;
@Autowired @Autowired
private InventoryPurchaseLogMapper inventoryPurchaseLogMapper; private InventoryPurchaseLogMapper inventoryPurchaseLogMapper;
@Autowired
private GoodsCateMapper goodsCateMapper;
private Logger logger = Logger.getLogger(HttpUtil.class.getName());
/* /*
* 创建采购订单 * 创建采购订单
* @param inventoryPurchase 采购订单 * @param inventoryPurchase 采购订单
@ -423,41 +428,112 @@ public class InventoryPurchaseService extends BaseService {
} }
public String toExcel(List<Integer> cateIdList){ public String toExcel(List<Integer> cateIdList){
//查询goodsCate
QueryWrapper<GoodsCate> goodsCateQueryWrapper = new QueryWrapper<>();
goodsCateQueryWrapper.in("id", cateIdList);
List<GoodsCate> goodsCatesList = goodsCateMapper.selectList(goodsCateQueryWrapper);
Map<Integer, String> cateMap = new HashMap<>();
for (GoodsCate goodsCate : goodsCatesList) {
cateMap.put(goodsCate.getId(), goodsCate.getName());
}
//查询goods
QueryWrapper<Goods> goodsWrapper = new QueryWrapper<>();
goodsWrapper.in("cate_id", cateIdList);
List<Goods> goodsList = goodsMapper.selectList(goodsWrapper);
System.out.println(goodsList);
/*
表格拼接字段映射
药品编码 id
药品 name
规格 min_packaging_number min_packaging_unit / packaging_unit
厂家 producer
分类 type
二级分类 goodsCate表中的name
单位 packaging_unit
*/
String fileName="";
try { try {
ClassLoader classLoader = getClass().getClassLoader(); ClassLoader classLoader = getClass().getClassLoader();
// 资源文件的路径 // 资源文件的路径
InputStream inputStream = classLoader.getResourceAsStream("excelTemplate/PurchasingTemplate.xlsx"); InputStream inputStream = classLoader.getResourceAsStream("excelTemplate/PurchasingTemplate.xlsx");
if (inputStream == null)
{
throw new MessageException("模板表格文件获取失败");
}
Workbook workbook = WorkbookFactory.create(inputStream); Workbook workbook = WorkbookFactory.create(inputStream);
// 2. 获取第一个Sheet // 2. 获取第一个Sheet
Sheet sheet = workbook.getSheetAt(0); Sheet sheet = workbook.getSheetAt(0);
// 3. 修改内容例如在A1单元格写入新内容 // 此处配置5等于表格里面的第6行
Row row = sheet.getRow(10); int sheetRowNum = 5;
if (row == null) {
row = sheet.createRow(10); for (Goods goodsRow : goodsList) {
sheetRowNum = sheetRowNum + 1;
Row excelSheetRow = sheet.getRow(sheetRowNum);
if (excelSheetRow == null) {
excelSheetRow = sheet.createRow(sheetRowNum);
} }
Cell cell = row.getCell(0);
if (cell == null) { setCellValue(excelSheetRow,0,goodsRow.getId());
cell = row.createCell(0); setCellValue(excelSheetRow,1,goodsRow.getName());
String packagingString = goodsRow.getMinPackagingNumber() + goodsRow.getMinPackagingUnit() + "/" + goodsRow.getPackagingUnit();
setCellValue(excelSheetRow,2,packagingString);
setCellValue(excelSheetRow,3,goodsRow.getProducer());
String desc="";
GoodsTypeEnum goodsTypeEnum = GoodsTypeEnum.getByType(goodsRow.getType());
if(goodsTypeEnum!=null){
desc = goodsTypeEnum.getDesc();
} }
cell.setCellValue("你好"); setCellValue(excelSheetRow,4,desc);
String cateName = cateMap.getOrDefault(goodsRow.getCateId(),"");
setCellValue(excelSheetRow,5,cateName);
setCellValue(excelSheetRow,6,goodsRow.getPackagingUnit());
}
//生成系统临时文件
File file = File.createTempFile("excel", ".xlsx");
// 4. 保存为新文件 // 4. 保存为新文件
FileOutputStream outFile = new FileOutputStream("D:\\new_excel.xlsx"); FileOutputStream outFile = new FileOutputStream(file);
workbook.write(outFile); workbook.write(outFile);
// 5. 关闭流 // 5. 关闭流
outFile.close(); outFile.close();
inputStream.close(); inputStream.close();
fileName=file.getAbsolutePath();
System.out.println("Excel文件生成成功"); System.out.println("Excel文件生成成功");
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); logger.warning(e.getMessage());
throw new MessageException("excel创建失败");
} }
return ""; return fileName;
}
private void setCellValue(Row row, int column, Object value) {
Cell cell = row.getCell(column, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
if (value == null) {
cell.setCellValue("");
} else if (value instanceof Number) {
cell.setCellValue(((Number) value).doubleValue());
} else {
cell.setCellValue(value.toString());
}
} }
} }