Browse Source

预装箱单列表导出优化

huxy 1 year ago
parent
commit
fb4ddcd331

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

@@ -1268,6 +1268,244 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
 
     }
 
+//    public static void refreshSheet3(Workbook workbook,List<SyPreAssembledPackingList> items) {
+//
+//        CellStyle cellStyle = workbook.createCellStyle();//设置单元格样式
+//        cellStyle.setAlignment(HorizontalAlignment.CENTER);//左右居中
+//        cellStyle.setWrapText(true);//自动换行
+//        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+//        cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());//设置前景色 现在是浅绿色
+//        cellStyle.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());//设置背景色 现在是浅绿色
+//        cellStyle.setBorderBottom(BorderStyle.THIN);//边框
+//        cellStyle.setBorderTop(BorderStyle.THIN);//边框
+//        cellStyle.setBorderLeft(BorderStyle.THIN);//边框
+//        cellStyle.setBorderRight(BorderStyle.THIN);//边框
+//        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//必须设置 否则无效
+//
+//        CellStyle cellStyle2 = workbook.createCellStyle();//设置单元格样式
+//        cellStyle2.setAlignment(HorizontalAlignment.CENTER);//左右居中
+//        cellStyle2.setWrapText(true);//自动换行
+//        cellStyle2.setFillForegroundColor(IndexedColors.WHITE.getIndex());//设置前景色 现在是
+//        cellStyle2.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());//设置背景色 现在是浅绿色
+//        cellStyle2.setBorderBottom(BorderStyle.THIN);//边框
+//        cellStyle2.setBorderTop(BorderStyle.THIN);//边框
+//        cellStyle2.setBorderLeft(BorderStyle.THIN);//边框
+//        cellStyle2.setBorderRight(BorderStyle.THIN);//边框
+//        cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+//        cellStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND);//必须设置 否则无效
+//
+//        CellStyle cellStyle3 = workbook.createCellStyle();//设置单元格样式
+//        cellStyle3.setAlignment(HorizontalAlignment.CENTER);//左右居中
+//        cellStyle3.setWrapText(true);//自动换行
+//        cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+//        cellStyle3.setFillForegroundColor(IndexedColors.WHITE.getIndex());//设置前景色 现在是浅绿色
+//        cellStyle3.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());//设置背景色 现在是浅绿色
+//        cellStyle3.setBorderBottom(BorderStyle.THIN);//边框
+//        cellStyle3.setBorderTop(BorderStyle.THIN);//边框
+//        cellStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND);//必须设置 否则无效
+//
+//
+//        CellStyle cellStyle4 = workbook.createCellStyle();//设置单元格样式
+//        cellStyle4.setAlignment(HorizontalAlignment.CENTER);//左右居中
+//        cellStyle4.setWrapText(true);//自动换行
+//        cellStyle4.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
+//        cellStyle4.setFillForegroundColor(IndexedColors.WHITE.getIndex());//设置前景色 现在是浅绿色
+//        cellStyle4.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex());//设置背景色 现在是浅绿色
+//        cellStyle4.setBorderBottom(BorderStyle.THIN);//边框
+//        cellStyle4.setBorderTop(BorderStyle.THIN);//边框
+//        cellStyle4.setBorderRight(BorderStyle.THIN);//边框
+//        cellStyle4.setFillPattern(FillPatternType.SOLID_FOREGROUND);//必须设置 否则无效
+//
+//        Font headerFont = workbook.createFont();
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setFontName("黑体");
+//        headerFont.setColor(Font.COLOR_RED);
+//        cellStyle2.setFont(headerFont);
+//
+//        Iterator sheets=workbook.sheetIterator();
+//       // int num=items.size()-1;
+//        int num1=0;
+//        int x=0;
+//        while (sheets.hasNext()){
+//            Sheet sheet=(Sheet) sheets.next();
+//            //箱数、件数、总净重、总体积、总毛重 不需要合计只需要获取主表数据
+//            //int max=0;
+//            for (SyPreAssembledPackingList list : items){
+//                int mainLength=num1+1;
+//                num1++;
+//                num1++;
+//                int num2=0;
+//                for (SyPreAssembledPackingListItem item : list.getSyPreAssembledPackingListItemList()){
+//                    //int sizeLength=20-list.getSizeTables().size();
+//                    if(num2==0){
+//                        Row row1 = sheet.createRow(num1+1);
+//                        num1++;
+//                        String strs="";
+//                        for (SizeTable sizeTable: list.getSizeTables()){
+//                            strs=strs+sizeTable.getSize()+",";
+//                        }
+//                        String[] args2=("B号码,ITEMCODE,LABEL,启始箱号,结束箱号,颜色(中英文),"+strs+
+//                        "件数/每箱,PCS/PACK,PACKS/CTN,PACK QTY,箱数,总件数,长,宽,高,总体积,外箱净重,总净重,外箱毛重,总毛重").split(",");
+//                        num2++;
+//                        //PCS/PACK	PACKS/CTN	PACK QTY
+//                        //件数/包	包数/箱	包数
+//                        for (int i=0;i<args2.length/*+sizeLength*/;i++){
+//                            Cell cell = row1.createCell(i);//横向
+//                            if(i<args2.length-11-3&&i>5){
+//                                if(i>5+strs.split(",").length){
+//                                    cell.setCellValue("");
+//                                }else{
+//                                    cell.setCellValue(args2[i]);
+//                                }
+//                                cell.setCellStyle(cellStyle2);
+//                            }else{
+//                                cell.setCellStyle(cellStyle);
+//                            }
+//                        }
+//                    }
+//                    Row row2 = sheet.createRow(num1+1);
+//                    num1++;
+//                    String [] args3=item.toString4(list.getSizeTables()).split(",");
+//                    x=args3.length;
+//                    for (int i=0;i<args3.length/*+sizeLength*/;i++){
+//                        Cell cell = row2.createCell(i);//横向
+//                        if(i>2&&i!=5&&args3[i].length()>0){
+//                            if(args3[i]==null||args3[i].equals("null")){
+//                                //cell.setCellValue(null);
+//                            }else{
+//                                cell.setCellValue(Double.parseDouble(args3[i]));
+//                            }
+//                        }else{
+//                            cell.setCellValue(args3[i]);
+//                        }
+//                        cell.setCellStyle(cellStyle);
+//                    }
+//                }
+//                //起始行,结束行,起始列,结束列
+//              /*  String [] args=list.toString1().split(",");
+//                Row row = sheet.createRow(mainLength);
+//                for (int i=0;i<x;i++){
+//                    //sheet.createFreezePane();
+//                    Cell cell = row.createCell(i);//横向
+//                    if(i<args.length){
+//                        cell.setCellValue(args[i]);
+//                        cell.setCellStyle(cellStyle);
+//                    }else{
+//                        cell.setCellStyle(cellStyle3);
+//                    }
+//                    if(i==x-1){
+//                        cell.setCellStyle(cellStyle4);
+//                    }
+//                }*/
+//               // CellRangeAddress region = new CellRangeAddress( 10, 12,10, 12);
+//                //sheet.addMergedRegion(region);
+//               // Row row = sheet.createRow(mainLength);
+//                //Row row3 = sheet.createRow(10);
+//                /*Cell cellx = row3.createCell(10);//横向
+//                cellx.setCellValue("测试数据");
+//                cellx.setCellStyle(cellStyle);*/
+//                String [] args=list.toString1().split("_____");
+//                String [] args1=args[0].split(",");
+//                String [] args2=args[1].split(",");
+//
+//                CellRangeAddress region = new CellRangeAddress( mainLength, mainLength,5, 5+list.getSizeTables().size());
+//                sheet.addMergedRegion(region);
+//                Row row = sheet.createRow(mainLength);
+//                for (int i=0;i<x;i++){
+//                    //sheet.createFreezePane();
+//                    Cell cell = row.createCell(i);//横向
+//                    cell.setCellStyle(cellStyle2);
+//                    if(i>5&&i<5+list.getSizeTables().size()+1){
+//                        Cell cell2= row.createCell(5);
+//                        cell2.setCellStyle(cellStyle);
+//                        cell2.setCellValue(args1[5]);
+//                        continue;
+//                    }else if(i<5){
+//                        cell.setCellValue(args1[i]);
+//                        cell.setCellStyle(cellStyle);
+//                    }
+//                    else if(i>5+list.getSizeTables().size()&&i<10+list.getSizeTables().size()){
+//                        cell.setCellValue(args1[i-list.getSizeTables().size()]);
+//                        cell.setCellStyle(cellStyle);
+//                    }
+//                    else{
+//                        cell.setCellStyle(cellStyle3);
+//                    }
+//                    if(i==x-1){
+//                        cell.setCellStyle(cellStyle4);
+//                    }
+//                }
+//                if((5+list.getSizeTables().size())-6>0){
+//                    CellRangeAddress region2 = new CellRangeAddress( mainLength+1, mainLength+1,6, 5+list.getSizeTables().size());
+//                    sheet.addMergedRegion(region2);
+//                }
+//                row = sheet.createRow(mainLength+1);
+//               // int sizeLength=20-list.getSizeTables().size();
+//                for (int i=0;i<(x/*+sizeLength*/);i++){
+//                    Cell cell = row.createCell(i);//横向
+//                    cell.setCellStyle(cellStyle);
+//                    if(i>=6&&i<6/*+sizeLength*/){
+//                        //row.createCell(6).setCellValue("size");
+//                        Cell cell2= row.createCell(6);
+//                        cell2.setCellStyle(cellStyle2);
+//                        cell2.setCellValue("size");
+//                        continue;
+//                    }else if(i<6){
+//                        cell.setCellValue(args2[i]);
+//                        cell.setCellStyle(cellStyle);
+//                    }
+//                    else if(i>=5/*+sizeLength*/&&i<9/*+sizeLength*/){
+//                        //System.out.println("i\t"+i);
+//                        cell.setCellValue(args2[i/*-sizeLength*/]);
+//                        cell.setCellStyle(cellStyle);
+//                    }
+//                    else{
+//                        cell.setCellStyle(cellStyle3);
+//                    }
+//                    if(i==x-1){
+//                        cell.setCellStyle(cellStyle4);
+//                    }
+//                }
+//                Row row2 = sheet.createRow(num1+1);
+//                for (int i=0;i<(x/*+sizeLength*/);i++){
+//                    Cell cell = row2.createCell(i);//横向
+//                    cell.setCellStyle(cellStyle);
+//                    if(i==0){
+//                        cell.setCellValue("合计");
+//                    }else if(i==x-10){
+//                        cell.setCellValue(list.getTotalBoxes().doubleValue());//箱数
+//                        sheet.setColumnWidth(x-10,list.getTotalVolume().toString().length()*500);
+//                    }else if(i==x-9){
+//                        cell.setCellValue(list.getTotal().doubleValue());//总件数
+//                        sheet.setColumnWidth(x-9,list.getTotal().toString().length()*500);
+//                    }else if(i==x-5){
+//                        cell.setCellValue(list.getTotalVolume().doubleValue());//总体积
+//                        sheet.setColumnWidth(x-9,list.getTotalVolume().toString().length()*500);
+//                    }else if(i==x-3){
+//                        cell.setCellValue(list.getTotalNetWeight().doubleValue());//总净重
+//                        sheet.setColumnWidth(x-9,list.getTotalNetWeight().toString().length()*500);
+//                    }else if(i==x-1){
+//                        cell.setCellValue(list.getTotalGrossWeight().doubleValue());//总毛重
+//                        sheet.setColumnWidth(x-9,list.getTotalGrossWeight().toString().length()*500);
+//                    }else{
+//                        cell.setCellStyle(cellStyle3);
+//                        //cell.setCellValue();//
+//                    }
+//                    sheet.setColumnWidth(i,2500);
+//                }
+//
+//                //cell6.setCellStyle(cellStyle);
+//                num1++;
+//                num1++;
+//               /* if(list.getSizeTables()!=null&&list.getSizeTables().size()>max){
+//                    max=list.getSizeTables().size();
+//                }*/
+//            }
+//           // System.out.println("最长的sizetables为"+max);
+//        }
+//    }
+
+
     public static void refreshSheet3(Workbook workbook,List<SyPreAssembledPackingList> items) {
 
         CellStyle cellStyle = workbook.createCellStyle();//设置单元格样式
@@ -1323,20 +1561,24 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
         cellStyle2.setFont(headerFont);
 
         Iterator sheets=workbook.sheetIterator();
-       // int num=items.size()-1;
+        // int num=items.size()-1;
         int num1=0;
         int x=0;
+        int max=0;
+        Sheet sheet=null;
         while (sheets.hasNext()){
-            Sheet sheet=(Sheet) sheets.next();
+            sheet=(Sheet) sheets.next();
             //箱数、件数、总净重、总体积、总毛重 不需要合计只需要获取主表数据
-            //int max=0;
             for (SyPreAssembledPackingList list : items){
+                int max1= list.setSizetable2();
                 int mainLength=num1+1;
+                if(max1>max){
+                    max=max1;
+                }
                 num1++;
                 num1++;
                 int num2=0;
                 for (SyPreAssembledPackingListItem item : list.getSyPreAssembledPackingListItemList()){
-                    //int sizeLength=20-list.getSizeTables().size();
                     if(num2==0){
                         Row row1 = sheet.createRow(num1+1);
                         num1++;
@@ -1345,18 +1587,14 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                             strs=strs+sizeTable.getSize()+",";
                         }
                         String[] args2=("B号码,ITEMCODE,LABEL,启始箱号,结束箱号,颜色(中英文),"+strs+
-                        "件数/每箱,PCS/PACK,PACKS/CTN,PACK QTY,箱数,总件数,长,宽,高,总体积,外箱净重,总净重,外箱毛重,总毛重").split(",");
+                                "件数/每箱,PCS/PACK,PACKS/CTN,PACK QTY,箱数,总件数,长,宽,高,总体积,外箱净重,总净重,外箱毛重,总毛重").split(",");
                         num2++;
                         //PCS/PACK	PACKS/CTN	PACK QTY
                         //件数/包	包数/箱	包数
-                        for (int i=0;i<args2.length/*+sizeLength*/;i++){
+                        for (int i=0;i<args2.length;i++){
                             Cell cell = row1.createCell(i);//横向
+                            cell.setCellValue(args2[i]);
                             if(i<args2.length-11-3&&i>5){
-                                if(i>5+strs.split(",").length){
-                                    cell.setCellValue("");
-                                }else{
-                                    cell.setCellValue(args2[i]);
-                                }
                                 cell.setCellStyle(cellStyle2);
                             }else{
                                 cell.setCellStyle(cellStyle);
@@ -1367,7 +1605,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                     num1++;
                     String [] args3=item.toString4(list.getSizeTables()).split(",");
                     x=args3.length;
-                    for (int i=0;i<args3.length/*+sizeLength*/;i++){
+                    for (int i=0;i<args3.length;i++){
                         Cell cell = row2.createCell(i);//横向
                         if(i>2&&i!=5&&args3[i].length()>0){
                             if(args3[i]==null||args3[i].equals("null")){
@@ -1397,9 +1635,9 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                         cell.setCellStyle(cellStyle4);
                     }
                 }*/
-               // CellRangeAddress region = new CellRangeAddress( 10, 12,10, 12);
+                // CellRangeAddress region = new CellRangeAddress( 10, 12,10, 12);
                 //sheet.addMergedRegion(region);
-               // Row row = sheet.createRow(mainLength);
+                // Row row = sheet.createRow(mainLength);
                 //Row row3 = sheet.createRow(10);
                 /*Cell cellx = row3.createCell(10);//横向
                 cellx.setCellValue("测试数据");
@@ -1440,11 +1678,10 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                     sheet.addMergedRegion(region2);
                 }
                 row = sheet.createRow(mainLength+1);
-               // int sizeLength=20-list.getSizeTables().size();
-                for (int i=0;i<(x/*+sizeLength*/);i++){
+                for (int i=0;i<x;i++){
                     Cell cell = row.createCell(i);//横向
                     cell.setCellStyle(cellStyle);
-                    if(i>=6&&i<6/*+sizeLength*/){
+                    if(i>=6&&i<6+list.getSizeTables().size()){
                         //row.createCell(6).setCellValue("size");
                         Cell cell2= row.createCell(6);
                         cell2.setCellStyle(cellStyle2);
@@ -1454,9 +1691,9 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                         cell.setCellValue(args2[i]);
                         cell.setCellStyle(cellStyle);
                     }
-                    else if(i>=5/*+sizeLength*/&&i<9/*+sizeLength*/){
+                    else if(i>=5+list.getSizeTables().size()&&i<9+list.getSizeTables().size()){
                         //System.out.println("i\t"+i);
-                        cell.setCellValue(args2[i/*-sizeLength*/]);
+                        cell.setCellValue(args2[i-list.getSizeTables().size()]);
                         cell.setCellStyle(cellStyle);
                     }
                     else{
@@ -1467,41 +1704,39 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
                     }
                 }
                 Row row2 = sheet.createRow(num1+1);
-                for (int i=0;i<(x/*+sizeLength*/);i++){
+                for (int i=0;i<x;i++){
                     Cell cell = row2.createCell(i);//横向
                     cell.setCellStyle(cellStyle);
                     if(i==0){
                         cell.setCellValue("合计");
                     }else if(i==x-10){
                         cell.setCellValue(list.getTotalBoxes().doubleValue());//箱数
-                        sheet.setColumnWidth(x-10,list.getTotalVolume().toString().length()*500);
+                        //sheet.setColumnWidth(x-10,list.getTotalVolume().toString().length()*500);
                     }else if(i==x-9){
                         cell.setCellValue(list.getTotal().doubleValue());//总件数
-                        sheet.setColumnWidth(x-9,list.getTotal().toString().length()*500);
+                       // sheet.setColumnWidth(x-9,list.getTotal().toString().length()*500);
                     }else if(i==x-5){
                         cell.setCellValue(list.getTotalVolume().doubleValue());//总体积
-                        sheet.setColumnWidth(x-9,list.getTotalVolume().toString().length()*500);
+                       // sheet.setColumnWidth(x-9,list.getTotalVolume().toString().length()*500);
                     }else if(i==x-3){
                         cell.setCellValue(list.getTotalNetWeight().doubleValue());//总净重
-                        sheet.setColumnWidth(x-9,list.getTotalNetWeight().toString().length()*500);
+                       // sheet.setColumnWidth(x-9,list.getTotalNetWeight().toString().length()*500);
                     }else if(i==x-1){
                         cell.setCellValue(list.getTotalGrossWeight().doubleValue());//总毛重
-                        sheet.setColumnWidth(x-9,list.getTotalGrossWeight().toString().length()*500);
+                        //sheet.setColumnWidth(x-9,list.getTotalGrossWeight().toString().length()*500);
                     }else{
                         cell.setCellStyle(cellStyle3);
                         //cell.setCellValue();//
                     }
-                    sheet.setColumnWidth(i,2500);
+                    //sheet.setColumnWidth(i,2500);
                 }
-
                 //cell6.setCellStyle(cellStyle);
                 num1++;
                 num1++;
-               /* if(list.getSizeTables()!=null&&list.getSizeTables().size()>max){
-                    max=list.getSizeTables().size();
-                }*/
             }
-           // System.out.println("最长的sizetables为"+max);
+        }
+        for (int i=1;i<=20-max;i++){
+            sheet.setColumnWidth(i+5+max,1);
         }
     }
 

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

@@ -298,4 +298,18 @@ public class SyPreAssembledPackingList implements Serializable {
 				"分销点:"+ ","+
 				distributionPoint;
 	}*/
+
+	public int setSizetable2(){
+		int max=0;
+		for (int i=1;i<=20;i++){
+			if(i>this.sizeTables.size()){
+				SizeTable sizeTable=new SizeTable();
+				sizeTable.setSize("");
+				sizeTables.add(sizeTable);
+			}else{
+				max++;
+			}
+		}
+		return max;
+	}
 }

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.hibernate.engine.jdbc.Size;
 import org.jeecgframework.poi.excel.annotation.ExcelCollection;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
@@ -486,6 +487,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	}
 
 	public String toString4(List <SizeTable> sizes1 ) {
+		setSizetable2();
 		//B号码	ITEMCODE	LABEL	启始箱号	结束箱号	颜色(中英文)
 		//sizes
 		//件数/每箱	箱数	总件数	外箱长度	外箱宽度	外箱高度	总体积	外箱净重	总净重	外箱毛重	总毛重
@@ -545,5 +547,14 @@ public class SyPreAssembledPackingListItem implements Serializable {
 
 	}
 
+	void setSizetable2(){
+		for (int i=1;i<=20;i++){
+			if(i>this.sizeTables.size()){
+				SizeTable sizeTable=new SizeTable();
+				sizeTable.setSize("");
+				this.sizeTables.add(sizeTable);
+			}
+		}
+	}
 
 }

+ 4 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListItemMapper.xml

@@ -258,7 +258,8 @@
 
 	<select id="querySize3" resultType="org.jeecg.modules.spapl.entity.SizeTable" >
 		SELECT DISTINCT b.size, b.sy_order_data_item_id itemId,num,
-		CONCAT(b.small_po,b.hod,b.unit_price,d.material_composition,b.distribution_Point) groupName
+		CONCAT(IFNULL(b.small_po,''),b.hod,IFNULL(b.unit_price,''),
+		IFNULL(d.material_composition,''),IFNULL(b.distribution_Point,'')) groupName
 		FROM sy_pre_assembled_packing_list_item b
 		left join sy_shipping_details_item d
 		on	b.sy_declaration_elements_item_id=d.id
@@ -370,7 +371,8 @@
 			b.factory_unit_price,
 			b.master_Metering,
 			b.group_id,
-			CONCAT(b.small_po,b.hod,b.unit_price,d.material_composition,b.distribution_Point) groupName
+			CONCAT(IFNULL(b.small_po,''),b.hod,IFNULL(b.unit_price,''),
+			IFNULL(d.material_composition,''),IFNULL(b.distribution_Point,'')) groupName
 			/*SUM(total_quantity) total_quantity,合计数量/件数*/
 		FROM  sy_pre_assembled_packing_list_item b
 		left join sy_shipping_details_item d

+ 2 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListMapper.xml

@@ -367,7 +367,8 @@
         b.Unit_Price  price,
         d.material_Composition,
         declaration_name productName,
-        CONCAT(b.small_po,b.hod,b.unit_price,d.material_composition,b.distribution_Point) groupName
+        CONCAT(IFNULL(b.small_po,''),b.hod,IFNULL(b.unit_price,''),
+        IFNULL(d.material_composition,''),IFNULL(b.distribution_Point,'')) groupName
         FROM Sy_Pre_Assembled_Packing_List a
         left join sy_pre_assembled_packing_list_item b
         on a.id=b.sy_Pre_Assembled_Packing_List_Id