Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server

This commit is contained in:
LiJianZhao 2025-05-16 14:20:17 +08:00
commit c959b4292f
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.enums.*;
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.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.dto.PurchaseOrderQuery;
import com.syjiaer.clinic.server.entity.inventory.vo.InventoryGoodsVo;
import com.syjiaer.clinic.server.entity.inventory.vo.InventoryPurchaseVo;
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.inventory.*;
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.goods.GoodsService;
import jakarta.annotation.Resource;
import lombok.val;
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ResourceUtils;
import java.io.*;
import java.math.BigDecimal;
@ -32,6 +33,8 @@ import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.logging.Logger;
@Service
public class InventoryPurchaseService extends BaseService {
@Autowired
@ -54,8 +57,10 @@ public class InventoryPurchaseService extends BaseService {
private InventoryPurchaseMapper inventoryPurchaseMapper;
@Autowired
private InventoryPurchaseLogMapper inventoryPurchaseLogMapper;
@Autowired
private GoodsCateMapper goodsCateMapper;
private Logger logger = Logger.getLogger(HttpUtil.class.getName());
/*
* 创建采购订单
* @param inventoryPurchase 采购订单
@ -423,41 +428,112 @@ public class InventoryPurchaseService extends BaseService {
}
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 {
ClassLoader classLoader = getClass().getClassLoader();
// 资源文件的路径
InputStream inputStream = classLoader.getResourceAsStream("excelTemplate/PurchasingTemplate.xlsx");
if (inputStream == null)
{
throw new MessageException("模板表格文件获取失败");
}
Workbook workbook = WorkbookFactory.create(inputStream);
// 2. 获取第一个Sheet
Sheet sheet = workbook.getSheetAt(0);
// 3. 修改内容例如在A1单元格写入新内容
Row row = sheet.getRow(10);
if (row == null) {
row = sheet.createRow(10);
// 此处配置5等于表格里面的第6行
int sheetRowNum = 5;
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) {
cell = row.createCell(0);
setCellValue(excelSheetRow,0,goodsRow.getId());
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. 保存为新文件
FileOutputStream outFile = new FileOutputStream("D:\\new_excel.xlsx");
FileOutputStream outFile = new FileOutputStream(file);
workbook.write(outFile);
// 5. 关闭流
outFile.close();
inputStream.close();
fileName=file.getAbsolutePath();
System.out.println("Excel文件生成成功");
} 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());
}
}
}