|
|
@ -12,16 +12,17 @@ import com.yxt.common.core.vo.PagerVo; |
|
|
|
import com.yxt.supervise.gf.api.instock.InStock; |
|
|
|
import com.yxt.supervise.gf.api.instock.InStockQuery; |
|
|
|
import com.yxt.supervise.gf.api.instock.InStockVo; |
|
|
|
import com.yxt.supervise.gf.api.pushinventorydata.PushInventoryData; |
|
|
|
import com.yxt.supervise.gf.api.pushinstockdata.PushInStockData; |
|
|
|
import com.yxt.supervise.gf.biz.pushinstockdata.PushInStockDataService; |
|
|
|
import com.yxt.supervise.gf.shanhai.ShRequester; |
|
|
|
import com.yxt.supervise.gf.shanhai.req.In_stockGetRecordMaterielList; |
|
|
|
import com.yxt.supervise.gf.shanhai.resp.BaseResponse; |
|
|
|
import com.yxt.supervise.gf.shanhai.resp.BaseResponseListObj; |
|
|
|
import com.yxt.supervise.gf.shanhai.resp.InStockGetRecordMaterielList; |
|
|
|
import org.apache.poi.hssf.usermodel.HSSFCellStyle; |
|
|
|
import org.apache.poi.ss.usermodel.*; |
|
|
|
import org.apache.poi.ss.util.CellRangeAddress; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
@ -42,6 +43,8 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
|
|
|
|
@Value("${import.filePath}") |
|
|
|
private String filePath; |
|
|
|
@Autowired |
|
|
|
private PushInStockDataService pushInStockDataService; |
|
|
|
|
|
|
|
public ResultBean save(In_stockGetRecordMaterielList reqParams){ |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
@ -53,6 +56,7 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
for (InStockGetRecordMaterielList inStockGetRecordMaterielList : list) { |
|
|
|
InStock inStock = new InStock(); |
|
|
|
BeanUtil.copyProperties(inStockGetRecordMaterielList,inStock); |
|
|
|
inStock.setTime(DateUtil.format(new Date(), "yyyy-MM-dd")); |
|
|
|
baseMapper.insert(inStock); |
|
|
|
} |
|
|
|
Map<String, List<InStockGetRecordMaterielList>> listMap = list.stream().collect(Collectors.groupingBy(it -> it.getStorehouse_name())); |
|
|
@ -65,6 +69,12 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
filterValue = value.stream().filter(t -> t.getMateriel_group_text().equals("组件") || t.getMateriel_group_text().equals("逆变器")).collect(Collectors.toList()); |
|
|
|
if (filterValue.size() != 0){ |
|
|
|
map.put(stringListEntry.getKey(),filterValue); |
|
|
|
for (InStockGetRecordMaterielList inStockGetRecordMaterielList : filterValue) { |
|
|
|
PushInStockData pushInStockData = new PushInStockData(); |
|
|
|
BeanUtil.copyProperties(inStockGetRecordMaterielList,pushInStockData,"id"); |
|
|
|
pushInStockData.setTime(DateUtil.format(new Date(), "yyyy-MM-dd")); |
|
|
|
pushInStockDataService.save(pushInStockData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -82,8 +92,122 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
Date date = new Date(); |
|
|
|
XSSFWorkbook wb = new XSSFWorkbook(); |
|
|
|
List<Map<String, Object>> listMap1 = new ArrayList<>();//存储汇总数据
|
|
|
|
map1.forEach((k,v) -> { |
|
|
|
HashMap<String, Object> mapCount = new HashMap<>(); |
|
|
|
Integer sumCount = v.stream().mapToInt(it -> Integer.parseInt(it.getNum())).sum(); |
|
|
|
Double priceCount = v.stream().mapToDouble(it -> Integer.parseInt(it.getNum()) * Double.parseDouble(it.getPrice())).sum(); |
|
|
|
mapCount.put("name",k); |
|
|
|
mapCount.put("sumCount",sumCount); |
|
|
|
mapCount.put("priceCount",priceCount); |
|
|
|
listMap1.add(mapCount); |
|
|
|
}); |
|
|
|
//汇总工作簿
|
|
|
|
String[] collectHead = {"序号","仓库名称","物料数量","核算的价值"}; |
|
|
|
Sheet stuSheet1 = wb.createSheet("货物入库质押汇总表"); |
|
|
|
Row headRow1 = stuSheet1.createRow(0); //第一行为头
|
|
|
|
Font head11 = wb.createFont(); |
|
|
|
head11.setFontHeightInPoints((short) 25); |
|
|
|
CellStyle cellStylehz = wb.createCellStyle(); |
|
|
|
cellStylehz.setFont(head11); |
|
|
|
cellStylehz.setAlignment(HorizontalAlignment.CENTER); //设置水平对齐方式
|
|
|
|
cellStylehz.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
CellRangeAddress callRangeAddress22 = new CellRangeAddress(0,0,0,collectHead.length-1); |
|
|
|
CellRangeAddress callRangeAddress1g = new CellRangeAddress(1,1,0,collectHead.length-1); |
|
|
|
CellRangeAddress callRangeAddress2 = new CellRangeAddress(2,2,0,collectHead.length-1); |
|
|
|
Cell cell15 = headRow1.createCell(0); |
|
|
|
cell15.setCellStyle(cellStylehz); |
|
|
|
cell15.setCellValue("货物入库质押汇总表"); |
|
|
|
stuSheet1.addMergedRegion(callRangeAddress22); |
|
|
|
|
|
|
|
Row headRowOnehz = stuSheet1.createRow(1); |
|
|
|
Cell headCellhz = headRowOnehz.createCell(0); |
|
|
|
headCellhz.setCellValue("编号:"); |
|
|
|
stuSheet1.addMergedRegion(callRangeAddress1g); |
|
|
|
Row headRowTwohz = stuSheet1.createRow(2); |
|
|
|
Cell headCellTwohz = headRowTwohz.createCell(0); |
|
|
|
headCellTwohz.setCellValue("上报日期:" + sdf1.format(date)); |
|
|
|
stuSheet1.addMergedRegion(callRangeAddress2); |
|
|
|
|
|
|
|
//获取表头行
|
|
|
|
Row titleRowhz = stuSheet1.createRow(3); |
|
|
|
CellStyle stylehz = wb.createCellStyle(); |
|
|
|
Font font = wb.createFont(); |
|
|
|
font.setFontHeightInPoints((short) 16); |
|
|
|
stylehz.setVerticalAlignment(VerticalAlignment.CENTER); |
|
|
|
stylehz.setAlignment(HorizontalAlignment.CENTER); |
|
|
|
stylehz.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
stylehz.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
stylehz.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
stylehz.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
stylehz.setShrinkToFit(true); //自动伸缩
|
|
|
|
stylehz.setFont(font); |
|
|
|
Cell cellhz = null; |
|
|
|
//把已经写好的标题行写入excel文件中
|
|
|
|
for (int i = 0; i < collectHead.length; i++) { |
|
|
|
cellhz = titleRowhz.createCell(i); |
|
|
|
cellhz.setCellValue(collectHead[i]); |
|
|
|
cellhz.setCellStyle(stylehz); |
|
|
|
} |
|
|
|
//把从数据库中取得的数据一一写入excel文件中
|
|
|
|
Row rowh = null; |
|
|
|
Cell cell2h = null; |
|
|
|
CellStyle dataStyle1 = wb.createCellStyle(); |
|
|
|
dataStyle1.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
dataStyle1.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
dataStyle1.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
dataStyle1.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
dataStyle1.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
dataStyle1.setAlignment(HorizontalAlignment.CENTER); //设置水平对齐方式
|
|
|
|
Integer numSum = 0; |
|
|
|
Double countSum = 0.0; |
|
|
|
for (int i = 0; i < listMap1.size(); i++) { |
|
|
|
//创建list.size()行数据
|
|
|
|
rowh = stuSheet1.createRow(i + 4); |
|
|
|
//把值一一写进单元格里
|
|
|
|
//设置第一列为自动递增的序号
|
|
|
|
cell2h = rowh.createCell(0); |
|
|
|
cell2h.setCellValue(i + 1); |
|
|
|
cell2h.setCellStyle(dataStyle1); |
|
|
|
cell2h = rowh.createCell(1); |
|
|
|
cell2h.setCellValue(listMap1.get(i).get("name").toString()); |
|
|
|
cell2h.setCellStyle(dataStyle1); |
|
|
|
cell2h = rowh.createCell(2); |
|
|
|
cell2h.setCellValue(listMap1.get(i).get("sumCount").toString()); |
|
|
|
numSum+=Integer.parseInt(listMap1.get(i).get("sumCount").toString()); |
|
|
|
cell2h.setCellStyle(dataStyle1); |
|
|
|
cell2h = rowh.createCell(3); |
|
|
|
DecimalFormat df = new DecimalFormat("#0.00"); |
|
|
|
cell2h.setCellValue(df.format(listMap1.get(i).get("priceCount"))); |
|
|
|
countSum+=Double.parseDouble(df.format(listMap1.get(i).get("priceCount"))); |
|
|
|
cell2h.setCellStyle(dataStyle1); |
|
|
|
} |
|
|
|
font.setFontHeightInPoints((short) 14); |
|
|
|
Row row1h = stuSheet1.createRow(listMap1.size()+4); |
|
|
|
CellStyle style111 = wb.createCellStyle(); |
|
|
|
style111.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
style111.setAlignment(HorizontalAlignment.CENTER); |
|
|
|
style111.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
style111.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
style111.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
style111.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
style111.setFont(font); |
|
|
|
Cell cell11 = row1h.createCell(0); |
|
|
|
cell11.setCellStyle(style111); |
|
|
|
cell11.setCellValue("合计"); |
|
|
|
cell11 = row1h.createCell(1); |
|
|
|
cell11.setCellStyle(style111); |
|
|
|
cell11 = row1h.createCell(2); |
|
|
|
cell11.setCellStyle(style111); |
|
|
|
cell11.setCellValue(numSum); |
|
|
|
cell11 = row1h.createCell(3); |
|
|
|
cell11.setCellStyle(style111); |
|
|
|
cell11.setCellValue(countSum); |
|
|
|
//设置单元格宽度自适应,在此基础上把宽度调至1.5倍
|
|
|
|
for (int i = 0; i < collectHead.length; i++) { |
|
|
|
stuSheet1.autoSizeColumn(i, true); |
|
|
|
stuSheet1.setColumnWidth(i, stuSheet1.getColumnWidth(i) * 15 / 10); |
|
|
|
} |
|
|
|
for (Map.Entry<String, List<InStockGetRecordMaterielList>> stringListEntry : map1.entrySet()) { |
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
//标题行抽出字段
|
|
|
|
String[] head = {"质物名称","规格(型号)","生产厂家(产地)","数量","重量","质权人确认的单价","核算的价值","货位号","备注"}; |
|
|
|
//设置sheet名称,并创建新的sheet对象
|
|
|
@ -184,8 +308,8 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
count+=price; |
|
|
|
} |
|
|
|
|
|
|
|
Font font = wb.createFont(); |
|
|
|
font.setFontHeightInPoints((short) 14); |
|
|
|
Font fontq = wb.createFont(); |
|
|
|
fontq.setFontHeightInPoints((short) 14); |
|
|
|
Row row1 = stuSheet.createRow(stringListEntry.getValue().size()+4); |
|
|
|
CellStyle style11 = wb.createCellStyle(); |
|
|
|
style11.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
@ -194,148 +318,34 @@ public class InStockService extends ServiceImpl<InStockMapper, InStock> { |
|
|
|
style11.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
style11.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
style11.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
style11.setFont(font); |
|
|
|
Cell cell11 = row1.createCell(0); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue("合计"); |
|
|
|
cell11 = row1.createCell(3); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue(numCount); |
|
|
|
cell11 = row1.createCell(6); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue(count); |
|
|
|
cell11 = row1.createCell(1); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(2); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(4); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(5); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(7); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(8); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
map.put("name",stringListEntry.getKey()); |
|
|
|
map.put("numCount",numCount); |
|
|
|
map.put("count",count); |
|
|
|
listMap1.add(map); |
|
|
|
style11.setFont(fontq); |
|
|
|
Cell cell11a = row1.createCell(0); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a.setCellValue("合计"); |
|
|
|
cell11a = row1.createCell(3); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a.setCellValue(numCount); |
|
|
|
cell11a = row1.createCell(6); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a.setCellValue(count); |
|
|
|
cell11a = row1.createCell(1); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a = row1.createCell(2); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a = row1.createCell(4); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a = row1.createCell(5); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a = row1.createCell(7); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
cell11a = row1.createCell(8); |
|
|
|
cell11a.setCellStyle(style11); |
|
|
|
//设置单元格宽度自适应,在此基础上把宽度调至1.5倍
|
|
|
|
for (int i = 0; i < head.length; i++) { |
|
|
|
stuSheet.autoSizeColumn(i, true); |
|
|
|
stuSheet.setColumnWidth(i, stuSheet.getColumnWidth(i) * 15 / 10); |
|
|
|
} |
|
|
|
} |
|
|
|
//汇总工作簿
|
|
|
|
String[] collectHead = {"序号","仓库名称","物料数量","核算的价值"}; |
|
|
|
Sheet stuSheet = wb.createSheet("货物入库质押汇总表"); |
|
|
|
Row headRow = stuSheet.createRow(0); //第一行为头
|
|
|
|
Font head1 = wb.createFont(); |
|
|
|
head1.setFontHeightInPoints((short) 25); |
|
|
|
CellStyle cellStyle = wb.createCellStyle(); |
|
|
|
cellStyle.setFont(head1); |
|
|
|
cellStyle.setAlignment(HorizontalAlignment.CENTER); //设置水平对齐方式
|
|
|
|
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
CellRangeAddress callRangeAddress = new CellRangeAddress(0,0,0,collectHead.length-1); |
|
|
|
CellRangeAddress callRangeAddress1 = new CellRangeAddress(1,1,0,collectHead.length-1); |
|
|
|
CellRangeAddress callRangeAddress2 = new CellRangeAddress(2,2,0,collectHead.length-1); |
|
|
|
Cell cell1 = headRow.createCell(0); |
|
|
|
cell1.setCellStyle(cellStyle); |
|
|
|
cell1.setCellValue("货物入库质押汇总表"); |
|
|
|
stuSheet.addMergedRegion(callRangeAddress); |
|
|
|
|
|
|
|
Row headRowOne = stuSheet.createRow(1); |
|
|
|
Cell headCell = headRowOne.createCell(0); |
|
|
|
headCell.setCellValue("编号:"); |
|
|
|
stuSheet.addMergedRegion(callRangeAddress1); |
|
|
|
Row headRowTwo = stuSheet.createRow(2); |
|
|
|
Cell headCellTwo = headRowTwo.createCell(0); |
|
|
|
headCellTwo.setCellValue("上报日期:" + sdf1.format(date)); |
|
|
|
stuSheet.addMergedRegion(callRangeAddress2); |
|
|
|
|
|
|
|
//设置表头字体大小
|
|
|
|
Font font1 = wb.createFont(); |
|
|
|
font1.setFontHeightInPoints((short) 16); |
|
|
|
//获取表头行
|
|
|
|
Row titleRow = stuSheet.createRow(3); |
|
|
|
CellStyle style = wb.createCellStyle(); |
|
|
|
Font font = wb.createFont(); |
|
|
|
font.setFontHeightInPoints((short) 16); |
|
|
|
style.setVerticalAlignment(VerticalAlignment.CENTER); |
|
|
|
style.setAlignment(HorizontalAlignment.CENTER); |
|
|
|
style.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
style.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
style.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
style.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
style.setShrinkToFit(true); //自动伸缩
|
|
|
|
style.setFont(font); |
|
|
|
Cell cell = null; |
|
|
|
//把已经写好的标题行写入excel文件中
|
|
|
|
for (int i = 0; i < collectHead.length; i++) { |
|
|
|
cell = titleRow.createCell(i); |
|
|
|
cell.setCellValue(collectHead[i]); |
|
|
|
cell.setCellStyle(style); |
|
|
|
} |
|
|
|
//把从数据库中取得的数据一一写入excel文件中
|
|
|
|
Row row = null; |
|
|
|
Cell cell2 = null; |
|
|
|
Double count = 0.0; |
|
|
|
CellStyle dataStyle = wb.createCellStyle(); |
|
|
|
dataStyle.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
dataStyle.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
dataStyle.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
dataStyle.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
dataStyle.setAlignment(HorizontalAlignment.CENTER); //设置水平对齐方式
|
|
|
|
Integer numSum = 0; |
|
|
|
Double countSum = 0.0; |
|
|
|
for (int i = 0; i < listMap1.size(); i++) { |
|
|
|
//创建list.size()行数据
|
|
|
|
row = stuSheet.createRow(i + 4); |
|
|
|
//把值一一写进单元格里
|
|
|
|
//设置第一列为自动递增的序号
|
|
|
|
cell2 = row.createCell(0); |
|
|
|
cell2.setCellValue(i + 1); |
|
|
|
cell2.setCellStyle(dataStyle); |
|
|
|
cell2 = row.createCell(1); |
|
|
|
cell2.setCellValue(listMap1.get(i).get("name").toString()); |
|
|
|
cell2.setCellStyle(dataStyle); |
|
|
|
cell2 = row.createCell(2); |
|
|
|
cell2.setCellValue(listMap1.get(i).get("numCount").toString()); |
|
|
|
numSum+=Integer.parseInt(listMap1.get(i).get("numCount").toString()); |
|
|
|
cell2.setCellStyle(dataStyle); |
|
|
|
cell2 = row.createCell(3); |
|
|
|
DecimalFormat df = new DecimalFormat("#0.00"); |
|
|
|
cell2.setCellValue(df.format(listMap1.get(i).get("count"))); |
|
|
|
countSum+=Double.parseDouble(df.format(listMap1.get(i).get("count"))); |
|
|
|
cell2.setCellStyle(dataStyle); |
|
|
|
} |
|
|
|
font.setFontHeightInPoints((short) 14); |
|
|
|
Row row1 = stuSheet.createRow(listMap1.size()+4); |
|
|
|
CellStyle style11 = wb.createCellStyle(); |
|
|
|
style11.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐方式
|
|
|
|
style11.setAlignment(HorizontalAlignment.CENTER); |
|
|
|
style11.setBorderBottom(BorderStyle.THIN); //下边框
|
|
|
|
style11.setBorderLeft(BorderStyle.THIN);//左边框
|
|
|
|
style11.setBorderTop(BorderStyle.THIN);//上边框
|
|
|
|
style11.setBorderRight(BorderStyle.THIN);//右边框
|
|
|
|
style11.setFont(font); |
|
|
|
Cell cell11 = row1.createCell(0); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue("合计"); |
|
|
|
cell11 = row1.createCell(1); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11 = row1.createCell(2); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue(numSum); |
|
|
|
cell11 = row1.createCell(3); |
|
|
|
cell11.setCellStyle(style11); |
|
|
|
cell11.setCellValue(countSum); |
|
|
|
//设置单元格宽度自适应,在此基础上把宽度调至1.5倍
|
|
|
|
for (int i = 0; i < collectHead.length; i++) { |
|
|
|
stuSheet.autoSizeColumn(i, true); |
|
|
|
stuSheet.setColumnWidth(i, stuSheet.getColumnWidth(i) * 15 / 10); |
|
|
|
} |
|
|
|
File file = new File(filePath); |
|
|
|
if (!file.exists()) { |
|
|
|
file.mkdirs(); |
|
|
|