Преглед на файлове

预装箱单excel导出

huxy преди 2 години
родител
ревизия
2d3ed4ed34

+ 222 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/controller/SyPreAssembledPackingListController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.spapl.controller;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -8,15 +9,22 @@ import java.util.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.*;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.documents.letterDeposit.entity.SyLetterDepositItem;
 import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
 import org.jeecg.modules.openApi.entity.DxpDataPlan;
 import org.jeecg.modules.openApi.service.IDxpDataPlanService;
+import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.vo.PackingHeaderVo;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo;
 import org.jeecg.modules.system.util.InterfaceConnUtils;
@@ -29,12 +37,13 @@ import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListPage;
 import org.jeecg.modules.spapl.service.ISyPreAssembledPackingListService;
 import org.jeecg.modules.spapl.service.ISyPreAssembledPackingListItemService;
+//import org.jeecgframework.poi.excel.ExcelExportUtil;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.def.TemplateExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.entity.TemplateExportParams;
+//import org.jeecgframework.poi.excel.entity.TemplateExportParams;
 import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
 import org.jeecgframework.poi.excel.view.JeecgTemplateExcelView;
 import org.springframework.beans.BeanUtils;
@@ -372,6 +381,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 			 //获取返回信息
 			 JSONObject jsonArray = informationJson.getJSONObject("payload");
 
+			 System.out.println("jsonArray\n"+jsonArray);
 			//获取code判断是否成功
 			 String code = jsonArray.getString("code");
 			 //获取返回消息
@@ -724,7 +734,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 		queryWrapper.eq("id",id).eq("del_flag",0);//预装箱单主表id
 		SyPreAssembledPackingList preAssembledPackingList=syPreAssembledPackingListService.queryById(queryWrapper);//已筛选删除状态
 		List<SyPreAssembledPackingListItem> spaplItems = syPreAssembledPackingListItemService.selectByMainId(id);//已筛选删除状态
-		List<String> strings=new ArrayList<>();
+		//List<String> strings=new ArrayList<>();
 		if(spaplItems.size()>0){
 			preAssembledPackingList.setSyPreAssembledPackingListItemList(spaplItems);
 //			for (SyPreAssembledPackingListItem item : spaplItems){
@@ -795,7 +805,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 		  List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
 		  Map<String, Object> maps = new HashMap<String, Object>();
 		  for (int i = 1; i <=count ; i++) {
-			  System.out.println("循环了"+i+"次");
+			  //System.out.println("循环了"+i+"次");
 			 // List<SyPreAssembledPackingList exportList = new ArrayList<SyPreAssembledPackingList>();
 			  SyPreAssembledPackingList exportList = new SyPreAssembledPackingList();
 			  exportList=syPreAssembledPackingListList.get(i-1);
@@ -824,13 +834,221 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 		  }
 		  ModelAndView mv = new ModelAndView(new JeecgTemplateExcelView());
 		  maps.put("orderNumber",listMap);
-		  System.out.println("maps的值为:\n"+maps.get("orderNumber"));
 		  mv.addObject(TemplateExcelConstants.FILE_NAME,"预装箱单模板导出测试");
 		  mv.addObject(TemplateExcelConstants.PARAMS,templateExcelConstants);
 		  mv.addObject(TemplateExcelConstants.MAP_DATA, maps);
 		  return mv;
 	}
 
+/*
+	@RequestMapping(value = "/exportXls2")
+	public ModelAndView exportXls2(HttpServletRequest request, SyPreAssembledPackingList syPreAssembledPackingList) throws Exception {
+		QueryWrapper<SyPreAssembledPackingList> queryWrapper = QueryGenerator.initQueryWrapper(syPreAssembledPackingList, request.getParameterMap());
+		queryWrapper.eq("del_flag","0");
+		List<SyPreAssembledPackingList> syPreAssembledPackingListList = syPreAssembledPackingListService.list(queryWrapper);
+		for (SyPreAssembledPackingList temp : syPreAssembledPackingListList) {
+			QueryWrapper queryWrapper1=new QueryWrapper();
+			queryWrapper1.eq("sy_Pre_Assembled_Packing_List_Id",temp.getId());//获取主表id
+			queryWrapper1.eq("del_flag","0");//未删除数据
+			List<SyPreAssembledPackingListItem> items = syPreAssembledPackingListItemService.list(queryWrapper1);
+			temp.setSyPreAssembledPackingListItemList(items);
+		}
+		// return exportXlsSheet2(request,SyPreAssembledPackingList.class,syPreAssembledPackingListList,"预装箱单",1);
+		String load= "/static/test.xlsx";//文件名
+		double total = syPreAssembledPackingListList.size();//总条数
+		int count = (int)Math.ceil(total/1);//每条sheet分几条数据
+		File filePath=new File(ResourceUtils.getURL("classpath:").getPath());//获取路径
+		File file=new File(filePath,load);
+		TemplateExportParams templateExcelConstants=new TemplateExportParams(file.getAbsolutePath(),true,"预装箱单");
+
+		//templateExcelConstants.setTempParams("true");
+		List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+		Map<String, Object> maps = new HashMap<String, Object>();
+		Map<Integer, List<Map<String, Object>>> mapscoce = new HashMap<Integer, List<Map<String, Object>>>();
+		List<String> strs=new ArrayList<String>();
+		for (int i = 1; i <=count ; i++) {
+			strs.add("预装箱单"+i);
+			SyPreAssembledPackingList exportList = new SyPreAssembledPackingList();
+			List list=new ArrayList();
+			//templateExcelConstants.setSheetNum(i);
+			exportList=syPreAssembledPackingListList.get(i-1);
+			//ExportParams exportParams=new ExportParams("预装箱单报表", "导出人:admin" , "预装箱单"+i,file.getAbsolutePath());//sysUser.getRealname()
+
+			//exportParams.setType(ExcelType.XSSF);
+			Map<String, Object> map = new HashMap<String, Object>();
+			//map.put("entity",SyPreAssembledPackingList.class);//表格对应实体
+			//map.put(NormalExcelConstants.PARAMS,exportParams+""+i);//表格Title
+			//map.put("title",exportParams);//表格Title
+			list.add(exportList);
+			map.put("data", list);//数据集合
+			listMap.add(map);
+			*/
+/*if(i>12){
+				break;
+			}*//*
+
+		}
+		mapscoce.put(0,listMap);
+		//templateExcelConstants.setSheetName(strs.toArray(new String[strs.size()]));//转数组
+		maps.put("orderNumber",listMap);
+		//Workbook workbook = ExcelExportUtil.exportExcel(listMap,null);
+		Workbook workbook = ExcelExportUtil.exportExcelClone(mapscoce,templateExcelConstants);
+		//Workbook workbook =ExcelExportUtil.exportExcel(templateExcelConstants,maps);
+		File savefile = new File("D:/excel");
+		if (!savefile.exists()) {
+			savefile.mkdirs();
+		}
+		FileOutputStream fos = new FileOutputStream("D:/excel/装箱单报表.xls");
+		workbook.write(fos);
+		fos.close();
+		return null;
+	}
+*/
+	@AutoLog(value = "导出")
+	@ApiOperation(value="导出", notes="导出")
+	@RequestMapping(value = "/exportXls3")
+	public Result<IPage<SyPreAssembledPackingList>> exportXls3(HttpServletRequest request, SyPreAssembledPackingList syPreAssembledPackingList,String path,String excelName) {
+		if(oConvertUtils.isEmpty(path)){
+			return null;
+		}
+		if(oConvertUtils.isEmpty(excelName)){
+			excelName="预装箱单";
+		}
+		Result result=new Result();
+		FileOutputStream fos = null;
+		try{
+			QueryWrapper<SyPreAssembledPackingList> queryWrapper = QueryGenerator.initQueryWrapper(syPreAssembledPackingList, request.getParameterMap());
+			queryWrapper.eq("del_flag","0");
+			queryWrapper.orderByDesc(	"create_time");//创建时间倒序
+			List<SyPreAssembledPackingList> syPreAssembledPackingListList = syPreAssembledPackingListService.list(queryWrapper);
+			if(syPreAssembledPackingListList.size()==0){
+				result.setResult(null);
+				result.setMessage("导出失败!没有查询到数据");
+				result.setSuccess(false);
+				return result;
+			}
+			List<SyPreAssembledPackingList> temps=new ArrayList<>();
+			for (SyPreAssembledPackingList temp : syPreAssembledPackingListList) {
+				QueryWrapper<SyPreAssembledPackingList> queryWrapper1 = new QueryWrapper<SyPreAssembledPackingList>();
+				queryWrapper1.eq("id",temp.getId()).eq("del_flag",0);//预装箱单主表id
+				SyPreAssembledPackingList preAssembledPackingList=syPreAssembledPackingListService.queryById(queryWrapper1);//已筛选删除状态
+				List<SyPreAssembledPackingListItem> spaplItems = syPreAssembledPackingListItemService.selectByMainId(temp.getId());//已筛选删除状态
+				if(spaplItems.size()>0){
+					preAssembledPackingList.setSyPreAssembledPackingListItemList(spaplItems);
+				}
+				temps.add(preAssembledPackingList);
+			}
+			String load="D:\\单证模板\\test2.xlsx";
+			int count = temps.size();//分几条sheet
+			File file=new File(load);
+			TemplateExportParams templateExcelConstants=new TemplateExportParams(file.getAbsolutePath(),true,"预装箱单");
+			List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+			Map<Integer, List<Map<String, Object>>> maps = new HashMap<Integer, List<Map<String, Object>>>();
+			for (int i = 1; i <=count ; i++) {
+				List<SyPreAssembledPackingList> exportList=new ArrayList<>();
+				exportList.add(temps.get(i-1));
+				SyPreAssembledPackingList exportList2=temps.get(i-1);
+				Map<String, Object> map = new HashMap<String, Object>();
+				map.put("entity", exportList2);
+				listMap.add(map);
+			}
+			maps.put(0,listMap);
+			templateExcelConstants.setColForEach(true);
+			Workbook workbook = ExcelExportUtil.exportExcelClone(maps,templateExcelConstants);
+			path=path+"\\"+excelName+".xlsx";
+			System.out.println(path);
+			File savefile = new File(path);
+			if (!savefile.exists()) {
+				savefile.createNewFile();
+			}
+			refreshSheet(workbook,temps);//配置某列数据
+			fos = new FileOutputStream(savefile);
+			workbook.write(fos);
+			result.setCode(200);
+			result.setResult(temps);
+			result.setMessage("导出成功!");
+			result.setSuccess(true);
+		}catch (Exception e){
+			result.setResult(null);
+			result.setMessage(e.getMessage());
+			result.setSuccess(false);
+		}finally {
+			if(fos!=null){
+				try{
+					fos.close();
+				}catch (Exception e){
+					e.getMessage();
+				}
+			}
+			return result;
+		}
+
+	}
+
+	protected static void refreshSheet(Workbook workbook,List<SyPreAssembledPackingList> items) {
+		CellStyle cellStyle = workbook.createCellStyle();//设置单元格样式
+
+		cellStyle.setAlignment(HorizontalAlignment.CENTER);//左右居中
+		cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+		cellStyle.setBorderBottom(BorderStyle.THIN);//边框
+		cellStyle.setBorderTop(BorderStyle.THIN);//边框
+		cellStyle.setBorderLeft(BorderStyle.THIN);//边框
+		cellStyle.setBorderRight(BorderStyle.THIN);//边框
+		cellStyle.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex());//设置前景色 现在是浅绿色
+		cellStyle.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.LIGHT_GREEN.getIndex());//设置背景色 现在是浅绿色
+		cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//必须设置 否则无效
+
+		CellStyle cellStyle2=workbook.createCellStyle();//设置单元格样式
+		cellStyle2.setAlignment(HorizontalAlignment.CENTER);//左右居中
+		cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+
+		Iterator sheets=workbook.sheetIterator();
+		int num=items.size()-1;
+		while (sheets.hasNext()){
+			Sheet sheet=(Sheet) sheets.next();
+			SyPreAssembledPackingList sypres=items.get(num);
+			workbook.setSheetName(num,sypres.getDocumentNo());
+			num--;
+			List<SyPreAssembledPackingListItem> list=sypres.getSyPreAssembledPackingListItemList();
+			if(list==null){
+				continue;//退出本次循环
+			}
+			for (int i=0; i < list.size(); i++) {
+				Row row = sheet.createRow(4+i);//列
+				String strs="";
+				for (SizeTable size : sypres.getSizeTables()){
+					strs+=size.getSize()+",";
+				}
+				String[] params=("序号,H/D,PO,款号,订单号,UNIT PRICE(单价),分销点,ITEMCODE,启始箱号,结束箱号,颜色(中英文),"+strs+"件数/每箱,箱数,总件数,外箱长度,外箱宽度,外箱高度,总体积,外箱净重,总净重,外箱毛重,总毛重,NN.W,总价,Lot NO,Packs CODE,DC NO,SKU号码,LABEL(标签),ORDER NO,Pre-Pack SKU Number").split(",");
+				Row row2 = sheet.createRow(3);
+				for (int x=0;x<params.length;x++){
+					Cell cell = row2.createCell(x);//横向
+					if(x>10&&x<params.length-20){
+						cell.setCellStyle(cellStyle);
+					}else{
+						cell.setCellStyle(cellStyle2);
+					}
+					cell.setCellValue(params[x]);//比例
+				}
+				List<SizeTable> sizes=list.get(i).getSizeTables();
+				SyPreAssembledPackingListItem itemN=list.get(0);
+				params=list.get(i).toString().replace("null","").split(",");
+				for (int y=0;y<params.length;y++){
+					Cell cell = row.createCell(y);//横向
+					if(y==0){
+						cell.setCellStyle(cellStyle2);
+						cell.setCellValue(i+1);//比例
+						continue;
+					} else if(y>10&&y<params.length-20){
+						cell.setCellStyle(cellStyle);
+					}else{
+						cell.setCellStyle(cellStyle2);
+					}
+					cell.setCellValue(params[y]);//比例
+				}
+			}
+		}
+	}
 	  /**
 	   * 通过excel导入数据
 	   *

+ 46 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingListItem.java

@@ -14,6 +14,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -231,6 +232,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "二维表格")
 	private List<SizeTable> sizeTables;
 
+
 	/**计划尺码数量汇总*/
 	//@ExcelCollection(name="计划尺码数量汇总")
 	@ApiModelProperty(value = "计划尺码数量汇总")
@@ -290,4 +292,48 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@Excel(name = "采购/委外订单号", width = 20)
 	@ApiModelProperty(value = "采购/委外订单号")
 	private String spurOrSubOrder;
+
+	//序号,H/D,PO,款号,订单号,UNIT PRICE(单价,分销点,ITEMCODE,启始箱号,结束箱号,颜色(中英文) sizes	件数/每箱,箱数,总件数,外箱长度,外箱宽度,外箱高度,总体积,外箱净重,总净重,外箱毛重,总毛重,NN.W,总价
+
+
+	@Override
+	public String toString() {
+		String sizes="";
+		for (SizeTable size : sizeTables){
+			sizes+=size.getProportion()+",";
+		}
+		return
+				" ," +
+				hod.substring(0,10) + "," +
+				poNo +  "," +
+				styleNo +  "," +
+				orderNumber + ","+
+				unitPrice + ","+
+				distributionPoint + ","+
+				itemCode + ","+
+				startingBoxNumber + ","+
+				endCaseNumber +  ","+
+				colour +  ","+
+				sizes +
+				piecesBox +  ","+
+				boxNumber + ","+
+				total + ","+
+				netWeight +  ","+
+				totalNetWeight + ","+
+				grossWeight + ","+
+				totalGrossWeight + ","+
+				outerBoxLength + ","+
+				outerBoxWidth + ","+
+				outerBoxHeight + ","+
+				totalVolume + ","+
+				netWeightToo + ","+
+				totalPrice+
+				",不确定的值"+
+				",不确定的值"+
+				",不确定的值"+
+				",不确定的值"+
+				",不确定的值"+
+				",不确定的值"+
+				",不确定的值";
+	}
 }

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListItemServiceImpl.java

@@ -10,7 +10,10 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListServiceImpl.java

@@ -75,7 +75,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				SyPreAssembledPackingListItem item1=item;
 				BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
 				item1.setTotal(boxNumber);//该尺码件数
-				item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
+				//item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
 				item1.setSize(size.getSize());//获取尺码
 				item1.setActualPackingQty(size.getQuantity());//获取该尺码计划装箱数量
 				item1.setTotalPrice(boxNumber.multiply(item1.getUnitPrice()));//获取总价		箱数*单价-->件数*单价