Sfoglia il codice sorgente

预装箱单-二维表格

huxy 2 anni fa
parent
commit
0fcee8e6c4
13 ha cambiato i file con 814 aggiunte e 211 eliminazioni
  1. 45 2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
  2. 170 91
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/controller/SyPreAssembledPackingListController.java
  3. 30 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingList.java
  4. 43 38
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/entity/SyPreAssembledPackingListItem.java
  5. 15 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/SyPreAssembledPackingListItemMapper.java
  6. 7 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/SyPreAssembledPackingListMapper.java
  7. 158 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListItemMapper.xml
  8. 85 12
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListMapper.xml
  9. 9 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/ISyPreAssembledPackingListItemService.java
  10. 20 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/ISyPreAssembledPackingListService.java
  11. 35 12
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListItemServiceImpl.java
  12. 169 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListServiceImpl.java
  13. 28 28
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/vo/SyPreAssembledPackingListPage.java

+ 45 - 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java

@@ -108,12 +108,12 @@ public class JeecgController<T, S extends IService<T>> {
             String selections = request.getParameter("selections");
             if (oConvertUtils.isNotEmpty(selections)) {
                 List<String> selectionList = Arrays.asList(selections.split(","));
-                exportList = records.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList());
+                exportList = records.stream().filter(item -> selectionList.contains("getId(item)")).collect(Collectors.toList());
             } else {
                 exportList = records;
             }
             Map<String, Object> map = new HashMap<String, Object>();
-            ExportParams  exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title+i,upLoadPath);
+            ExportParams  exportParams=new ExportParams(title + "报表", "导出人:admin" /*sysUser.getRealname()*/, title+i,upLoadPath);
             exportParams.setType(ExcelType.XSSF);
             //map.put("title",exportParams);//表格Title
             map.put(NormalExcelConstants.PARAMS,exportParams);//表格Title
@@ -128,6 +128,49 @@ public class JeecgController<T, S extends IService<T>> {
         return mv;
     }
 
+    /**
+     * 根据每页sheet数量导出多sheet
+     *
+     * @param request
+     * @param clazz 实体类class
+     * @param pageList 数据
+     * @param title 标题
+     * @param pageNum 每个sheet的数据条数
+     * @param request
+     */
+    protected ModelAndView exportXlsSheet2(HttpServletRequest request, Class<T> clazz, List<T> pageList,
+                                           String title,Integer pageNum) {
+        double total = pageList.size();
+        int count = (int)Math.ceil(total/pageNum);
+        // Step.3 多sheet处理
+        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
+        for (int i = 1; i <=count ; i++) {
+            List<T> exportList = new ArrayList<>();
+            // 过滤选中数据
+//            String selections = request.getParameter("selections");
+//            if (oConvertUtils.isNotEmpty(selections)) {
+//                List<String> selectionList = Arrays.asList(selections.split(","));
+//                exportList = pageList.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList());
+//            } else {
+            System.out.println("pageList\t"+pageList.get(i-1));
+            exportList.add(pageList.get(i-1));
+            System.out.println("exportList.length\t"+exportList.size());
+            //}
+            Map<String, Object> map = new HashMap<String, Object>();
+            ExportParams  exportParams=new ExportParams(title + "报表", "导出人:admin" /*sysUser.getRealname()*/, title+i,upLoadPath);
+            exportParams.setType(ExcelType.XSSF);
+            //map.put("title",exportParams);//表格Title
+            map.put(NormalExcelConstants.PARAMS,exportParams);//表格Title
+            map.put(NormalExcelConstants.CLASS,clazz);//表格对应实体
+            map.put(NormalExcelConstants.DATA_LIST, exportList);//数据集合
+            listMap.add(map);
+        }
+        // Step.4 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
+        mv.addObject(NormalExcelConstants.MAP_LIST, listMap);
+        return mv;
+    }
 
     /**
      * 根据权限导出excel,传入导出字段参数

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

@@ -7,11 +7,17 @@ import java.net.URLDecoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.apache.commons.beanutils.PropertyUtils;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.vo.LoginUser;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetails;
@@ -19,12 +25,19 @@ import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
 import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
 import org.jeecg.modules.documents.shippingDetails.service.ISyShippingDetailsItemService;
 import org.jeecg.modules.documents.shippingDetails.service.ISyShippingDetailsService;
+import org.jeecg.modules.openApi.entity.DxpDataPlan;
+import org.jeecg.modules.openApi.service.IDxpDataPlanService;
+import org.jeecg.modules.scas.entity.SyCostAllocationSummary;
+import org.jeecg.modules.scas.service.ISyCostAllocationSummaryService;
 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;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 
 import org.jeecg.common.api.vo.Result;
@@ -60,7 +73,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 @RestController
 @RequestMapping("/spapl/syPreAssembledPackingList")
 @Slf4j
-public class SyPreAssembledPackingListController {
+public class SyPreAssembledPackingListController extends JeecgController<SyPreAssembledPackingList, ISyPreAssembledPackingListService>{
 	@Autowired
 	private ISyPreAssembledPackingListService syPreAssembledPackingListService;
 	@Autowired
@@ -69,7 +82,8 @@ public class SyPreAssembledPackingListController {
 	private ISyShippingDetailsService syShippingDetailsService;
 	@Autowired
 	private ISyShippingDetailsItemService syShippingDetailsItemService;
-	
+	 @Autowired
+	 private IDxpDataPlanService iDxpDataPlanService;
 	/**
 	 * 分页列表查询
 	 *
@@ -79,7 +93,8 @@ public class SyPreAssembledPackingListController {
 	 * @param req
 	 * @return
 	 */
-	/*@AutoLog(value = "预装箱单主表-分页列表查询")
+/*
+	@AutoLog(value = "预装箱单主表-分页列表查询")
 	@ApiOperation(value="预装箱单主表-分页列表查询", notes="预装箱单主表-分页列表查询")
 	@GetMapping(value = "/list")
 	public Result<IPage<SyPreAssembledPackingList>> queryPageList(SyPreAssembledPackingList syPreAssembledPackingList,
@@ -101,7 +116,8 @@ public class SyPreAssembledPackingListController {
 		Page<SyPreAssembledPackingList> page = new Page<SyPreAssembledPackingList>(pageNo, pageSize);
 		IPage<SyPreAssembledPackingList> pageList = syPreAssembledPackingListService.page(page, queryWrapper);
 		return Result.OK(pageList);
-	}*/
+	}
+*/
 
 	 /**
 	  * 分页列表查询
@@ -119,8 +135,12 @@ public class SyPreAssembledPackingListController {
 									 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 									 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 									 HttpServletRequest req) {
-		 QueryWrapper<SyPreAssembledPackingListVo> queryWrapper = QueryGenerator.initQueryWrapper(syPreAssembledPackingListVo, req.getParameterMap());
+		 //System.out.println("当前登录用户:"+((LoginUser)SecurityUtils.getSubject().getPrincipal()).getRealname());
+		 QueryWrapper<SyPreAssembledPackingListVo> queryWrapper =new QueryWrapper<>();//初始化
 		 queryWrapper.eq("a.del_flag","0");//默认查询未删除
+		 if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getId())){//查询id
+		 	queryWrapper.eq("a.id",syPreAssembledPackingListVo.getId());
+		 }
 		 if(oConvertUtils.isNotEmpty(syPreAssembledPackingListVo.getOrderNumber())){
 			 queryWrapper.eq("a.order_number",syPreAssembledPackingListVo.getOrderNumber());//订单号
 		 }
@@ -175,9 +195,9 @@ public class SyPreAssembledPackingListController {
 		 	result.setMessage("未找到id");
 		 }
 		 SyPreAssembledPackingList syPreAssembledPackingList=syPreAssembledPackingListService.queryPageList3(id);//获取数据
-		 for(SyPreAssembledPackingListItem spapl_item : syPreAssembledPackingList.getSyPreAssembledPackingListItemList()){
+		 /*for(SyPreAssembledPackingListItem spapl_item : syPreAssembledPackingList.getSyPreAssembledPackingListItemList()){
 			 spapl_item.setSizeTables(syPreAssembledPackingListItemService.selectSize(spapl_item.getWithCode(),spapl_item.getTotal()));
-		 }
+		 }*/
 		 result.setSuccess(true);
 		 result.setResult(syPreAssembledPackingList);
 		 result.setMessage("查询成功!");
@@ -201,7 +221,7 @@ public class SyPreAssembledPackingListController {
 				result.setSuccess(false);
 				return result;
 			}
-			syPreAssembledPackingList=syPreAssembledPackingListService.saveMain(syPreAssembledPackingList);
+			syPreAssembledPackingList=syPreAssembledPackingListService.saveMain2(syPreAssembledPackingList);
 			result.setSuccess(true);
 			result.setMessage("添加成功");
 			result.setResult(syPreAssembledPackingList);
@@ -241,7 +261,7 @@ public class SyPreAssembledPackingListController {
 				result.setSuccess(false);
 				return result;
 			}
-			syPreAssembledPackingListService.updateMain(syPreAssembledPackingList);
+			syPreAssembledPackingListService.updateMain2(syPreAssembledPackingList);
 			result.setSuccess(true);
 			result.setMessage("修改成功");
 			result.setResult(syPreAssembledPackingList);
@@ -255,15 +275,73 @@ public class SyPreAssembledPackingListController {
 
 	 /**
 	  * 推送
-	  *
-	  * @param syPreAssembledPackingList
+	  * @param id
 	  * @return
 	  */
-	 @AutoLog(value = "预装箱单主表-推送(未完成)")
-	 @ApiOperation(value="预装箱单主表-推送(未完成)", notes="预装箱单主表-推送(未完成)")
+	 @AutoLog(value = "预装箱单主表-推送")
+	 @ApiOperation(value="预装箱单主表-推送", notes="预装箱单主表-推送")
 	 @RequestMapping(value = "/push", method = {RequestMethod.GET})
-	 public Result<?> push(@RequestBody SyPreAssembledPackingList syPreAssembledPackingList) {
-	 	return Result.OK("该功能暂未完成!!");
+	 public JSONObject push(@RequestParam(value = "id",required = true) String id) {
+
+		 JSONObject result = new JSONObject();
+		 List<PackingHeaderVo> list=new ArrayList<>();
+		 try{
+		 	if(oConvertUtils.isEmpty(id)){
+				log.warn("id为空值");
+		 		return null;
+		 	}
+		 	//查询IP及账套信息、时间戳
+			 QueryWrapper<DxpDataPlan> queryWrapper = new QueryWrapper<>();
+			 //获取推送接口地址
+			 queryWrapper.eq("code", "senYu_syShipping").or().eq("code","senYu_SH_token");
+			 queryWrapper.orderBy(true,true,"id");
+			 Page<DxpDataPlan> page = new Page<DxpDataPlan>(1, 10);
+			 IPage<DxpDataPlan> pageList = iDxpDataPlanService.page(page, queryWrapper);
+			 List<DxpDataPlan> resultList = pageList.getRecords();
+
+			 PackingHeaderVo vo=syPreAssembledPackingListService.pushData(id);
+			 list.add(vo);
+			 Gson userGson = new GsonBuilder().create();
+			 result.put("payload", userGson.toJson(JSONObject.toJSON(list)));
+			 log.info("JSON数据:" + result);
+
+			 String url = resultList.get(0).getItemIp() + resultList.get(0).getItemUrl();//拼接url
+
+			 String tokenUrl = resultList.get(1).getItemIp()+resultList.get(1).getItemUrl();//获取token
+
+			 if(oConvertUtils.isEmpty(url)||oConvertUtils.isEmpty(tokenUrl)){
+			 	log.warn("缺少推送接口信息" );
+			 	return null;
+			 }
+			 //调用doPost
+			 InterfaceConnUtils interfaceConnUtils = new InterfaceConnUtils();
+			 //处理返回信息
+			 JSONObject  informationJson = interfaceConnUtils.doPostToBearer(result, url,tokenUrl, "发预装箱单接口-");
+			 //获取返回信息
+			 JSONObject jsonArray = informationJson.getJSONObject("payload");
+
+			//获取code判断是否成功
+			 String code = jsonArray.getString("code");
+			 //获取返回消息
+			 String message = jsonArray.getString("message");
+
+			 SyPreAssembledPackingList syPreAssembledPackingList =   syPreAssembledPackingListService.getById(id);
+			 if(code.equals("S")){
+				 syPreAssembledPackingList.setPushStatus("1");
+				 System.out.println("推送过去了");
+			 }else{
+				 syPreAssembledPackingList.setPushStatus("2");
+				 System.out.println("推送失败了");
+			 }
+			 syPreAssembledPackingListService.updateById(syPreAssembledPackingList);
+
+		 }catch (Exception ex){
+			 ex.printStackTrace();
+			 log.error("推送失败:" + ex.getMessage());
+		 }
+
+		 return result;
+
 	 }
 
 	 /**
@@ -410,8 +488,13 @@ public class SyPreAssembledPackingListController {
 		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<>();
 		if(spaplItems.size()>0){
 			preAssembledPackingList.setSyPreAssembledPackingListItemList(spaplItems);
+//			for (SyPreAssembledPackingListItem item : spaplItems){
+//				strings.add(item.getSyDeclarationElementsId());
+//			}
+			//preAssembledPackingList.setSizeTables(syPreAssembledPackingListItemService.querySizes(strings.toArray(new String[strings.size()])));
 		}
 		result.setMessage("查询成功!");
 		result.setSuccess(true);
@@ -425,7 +508,7 @@ public class SyPreAssembledPackingListController {
 	 * @param id
 	 * @return
 	 */
-	@AutoLog(value = "预装箱单子表-通过主表ID查询")
+	/*@AutoLog(value = "预装箱单子表-通过主表ID查询")
 	@ApiOperation(value="预装箱单子表-通过主表ID查询", notes="预装箱单主表-通过主表ID查询")
 	@GetMapping(value = "/querySyPreAssembledPackingListItemByMainId")
 	public Result<?> querySyPreAssembledPackingListItemListByMainId(@RequestParam(name="id",required=true) String id) {
@@ -441,86 +524,82 @@ public class SyPreAssembledPackingListController {
 			result.setMessage("查询成功!");
 		}
 		return result;
-	}
-
-  /**
-   * 导出excel
-   * 不传数据就是导出全部,传id就根据id查询导出
-   * @param request
-   * @param syPreAssembledPackingList
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, SyPreAssembledPackingList syPreAssembledPackingList) {
-      // Step.1 组装查询条件
-      QueryWrapper<SyPreAssembledPackingList> queryWrapper = QueryGenerator.initQueryWrapper(syPreAssembledPackingList, request.getParameterMap());
-      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+	}*/
 
-      //Step.2 获取导出数据
-      List<SyPreAssembledPackingListPage> pageList = new ArrayList<SyPreAssembledPackingListPage>();
-      List<SyPreAssembledPackingList> syPreAssembledPackingListList = syPreAssembledPackingListService.list(queryWrapper);
-      for (SyPreAssembledPackingList temp : syPreAssembledPackingListList) {
-          SyPreAssembledPackingListPage vo = new SyPreAssembledPackingListPage();
-          BeanUtils.copyProperties(temp, vo);
-          List<SyPreAssembledPackingListItem> syPreAssembledPackingListItemList = syPreAssembledPackingListItemService.selectByMainId(temp.getId());
-          vo.setSyPreAssembledPackingListItemList(syPreAssembledPackingListItemList);
-          pageList.add(vo);
-      }
-      //Step.3 调用AutoPoi导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      mv.addObject(NormalExcelConstants.FILE_NAME, "预装箱单主表");
-      mv.addObject(NormalExcelConstants.CLASS, SyPreAssembledPackingListPage.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("预装箱单主表数据", "导出人:admin", "预装箱单主表"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
+	  /**
+	   * 导出excel
+	   * 不传数据就是导出全部,传id就根据id查询导出
+	   * @param request
+	   * @param syPreAssembledPackingList
+	   */
+	  @RequestMapping(value = "/exportXls")
+	  public ModelAndView exportXls(HttpServletRequest request, SyPreAssembledPackingList syPreAssembledPackingList) throws Exception {
+		  // Step.1 组装查询条件
+		  QueryWrapper<SyPreAssembledPackingList> queryWrapper = QueryGenerator.initQueryWrapper(syPreAssembledPackingList, request.getParameterMap());
+		  queryWrapper.eq("del_flag","0");
+		  //Step.2 获取导出数据
+		  List<SyPreAssembledPackingList> syPreAssembledPackingListList = syPreAssembledPackingListService.list(queryWrapper);
+		  for (SyPreAssembledPackingList temp : syPreAssembledPackingListList) {
+			  List<SyPreAssembledPackingListItem> syPreAssembledPackingListItemList = syPreAssembledPackingListItemService.selectByMainId(temp.getId());
+			  temp.setSyPreAssembledPackingListItemList(syPreAssembledPackingListItemList);
+		  }
+		  return exportXlsSheet2(request,SyPreAssembledPackingList.class,syPreAssembledPackingListList,"预装箱单",1);
+	  }
 
-  /**
-   * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();// 获取上传文件对象
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<SyPreAssembledPackingListPage> list = ExcelImportUtil.importExcel(file.getInputStream(), SyPreAssembledPackingListPage.class, params);
-              for (SyPreAssembledPackingListPage page : list) {
-                  SyPreAssembledPackingList po = new SyPreAssembledPackingList();
-                  BeanUtils.copyProperties(page, po);
-                  po.setSyPreAssembledPackingListItemList(page.getSyPreAssembledPackingListItemList());
-                  syPreAssembledPackingListService.saveMain(po);
-              }
-              return Result.OK("文件导入成功!数据行数:" + list.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.OK("文件导入失败!");
-  }
+	  /**
+	   * 通过excel导入数据
+	   *
+	   * @param request
+	   * @param response
+	   * @return
+	   */
+	  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+	  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+		  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+		  Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+		  for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+			  MultipartFile file = entity.getValue();// 获取上传文件对象
+			  ImportParams params = new ImportParams();
+			  params.setTitleRows(2);
+			  params.setHeadRows(1);
+			  params.setNeedSave(true);
+			  try {
+				  List<SyPreAssembledPackingListPage> list = ExcelImportUtil.importExcel(file.getInputStream(), SyPreAssembledPackingListPage.class, params);
+				  for (SyPreAssembledPackingListPage page : list) {
+					  SyPreAssembledPackingList po = new SyPreAssembledPackingList();
+					  BeanUtils.copyProperties(page, po);
+					  po.setSyPreAssembledPackingListItemList(page.getSyPreAssembledPackingListItemList());
+					  syPreAssembledPackingListService.saveMain(po);
+				  }
+				  return Result.OK("文件导入成功!数据行数:" + list.size());
+			  } catch (Exception e) {
+				  log.error(e.getMessage(),e);
+				  return Result.error("文件导入失败:"+e.getMessage());
+			  } finally {
+				  try {
+					  file.getInputStream().close();
+				  } catch (IOException e) {
+					  e.printStackTrace();
+				  }
+			  }
+		  }
+		  return Result.OK("文件导入失败!");
+	  }
 
 
 
-	 @AutoLog(value = "二维表格测试")
+	/* @AutoLog(value = "二维表格测试")
 	 @ApiOperation(value="二维表格测试", notes="二维表格测试")
 	 @GetMapping(value = "/selecSize")
-  public List<SizeTable> table(@RequestParam(name="str",required=true)String str,
-							   @RequestParam(name="orderNum",required=true) BigDecimal orderNum){
-  	return syPreAssembledPackingListItemService.selectSize(str,orderNum);
-  }
+	 public List<SizeTable> table(@RequestParam(name="str",required=true)String str,
+								   @RequestParam(name="orderNum",required=true) BigDecimal orderNum){
+	  	return syPreAssembledPackingListItemService.selectSize(str,orderNum);
+	  }*/
+
+	/* @AutoLog(value = "尺码")
+	 @ApiOperation(value="尺码", notes="尺码")
+	 @GetMapping(value = "/querySizes")
+	 public List<SizeTable> table(@RequestParam(name="ids",required=true)String ids){
+		 return syPreAssembledPackingListItemService.querySizes(ids.split(","));
+	 }*/
 }

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

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
 import org.springframework.format.annotation.DateTimeFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -31,22 +32,30 @@ public class SyPreAssembledPackingList implements Serializable {
 	@TableId(type = IdType.ASSIGN_ID)
 	@ApiModelProperty(value = "主键id")
 	private String id;
+	@Excel(name = "单据号", width = 15)
+	@ApiModelProperty(value = "单据号")
+	private java.lang.String documentNo;
 	/**发运明细主表id*/
 	@ApiModelProperty(value = "发运明细主表id")
 	private String syDeclarationElementsId;
-	/**订单号*/
+	/**订单号 可能要自动生成*/
+	@Excel(name="订单号", width = 15,needMerge = true,groupName = "主表信息")
 	@ApiModelProperty(value = "订单号")
 	private String orderNumber;
 	/**款号*/
+	@Excel(name = "款号", width = 15,groupName = "主表信息")
 	@ApiModelProperty(value = "款号")
 	private String itemNumber;
 	/**品名*/
+	@Excel(name = "品名", width = 15,groupName = "主表信息")
 	@ApiModelProperty(value = "品名")
 	private String productName;
 	/**尺码范围*/
+	@Excel(name = "尺码范围", width = 15,groupName = "主表信息")
 	@ApiModelProperty(value = "尺码范围")
 	private String sizeRange;
 	/**客户*/
+	@Excel(name = "客户", width = 15,needMerge = true,groupName = "主表信息")
 	@ApiModelProperty(value = "客户")
 	private String customer;
 	/**集装箱代号*/
@@ -144,5 +153,25 @@ public class SyPreAssembledPackingList implements Serializable {
 	//子表集合
 	@TableField(exist = false)
 	@ApiModelProperty(value = "子表集合")
+	@ExcelCollection(name="预装箱单子表")
 	private List<SyPreAssembledPackingListItem> syPreAssembledPackingListItemList;
+
+	/**二维表格*/
+	@TableField(exist = false)
+	@ApiModelProperty(value = "二维表格")
+	private List<SizeTable> sizeTables;
+
+	@Override
+	public String toString() {
+		return "SyPreAssembledPackingList{" +
+				"id='" + id + '\'' +
+				", orderNumber='" + orderNumber + '\'' +
+				", itemNumber='" + itemNumber + '\'' +
+				", productName='" + productName + '\'' +
+				", sizeRange='" + sizeRange + '\'' +
+				", preDeliveryDate=" + preDeliveryDate +
+				", orderType='" + orderType + '\'' +
+				", syPreAssembledPackingListItemList=" + syPreAssembledPackingListItemList +
+				'}';
+	}
 }

+ 43 - 38
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.jeecgframework.poi.excel.annotation.ExcelCollection;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import java.util.Date;
@@ -32,15 +33,15 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "装箱单id")
 	private String id;
 	/**发运明细主表id*/
-	@Excel(name = "预装箱单主表id", width = 15)
+	//@Excel(name = "预装箱单主表id", width = 15)
 	@ApiModelProperty(value = "预装箱单主表id")
 	private String syPreAssembledPackingListId;
 	/**发运明细主表id*/
-    @Excel(name = "发运明细主表id", width = 15)
+   // @Excel(name = "发运明细主表id", width = 15)
 	@ApiModelProperty(value = "发运明细主表id")
 	private String syDeclarationElementsId;
 	/**发运明细子表id*/
-    @Excel(name = "发运明细子表id", width = 15)
+    //@Excel(name = "发运明细子表id", width = 15)
 	@ApiModelProperty(value = "发运明细子表id")
 	private String syDeclarationElementsItemId;
 	/**账套*/
@@ -48,23 +49,23 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "账套")
 	private String acSetNo;
 	/**成衣工厂*/
-    @Excel(name = "成衣工厂", width = 15)
+   // @Excel(name = "成衣工厂", width = 15)
 	@ApiModelProperty(value = "成衣工厂")
 	private String garmentFactory;
 	/**HOD*/
-    @Excel(name = "HOD", width = 15)
+   // @Excel(name = "HOD", width = 15)
 	@ApiModelProperty(value = "HOD")
 	private String hod;
 	/**STYLE NO*/
-    @Excel(name = "STYLE NO", width = 15)
+   // @Excel(name = "STYLE NO", width = 15)
 	@ApiModelProperty(value = "STYLE NO")
 	private String styleNo;
 	/**PO NO*/
-    @Excel(name = "PO NO", width = 15)
+   // @Excel(name = "PO NO", width = 15)
 	@ApiModelProperty(value = "PO NO")
 	private String poNo;
 	/**ITEM NO./SKU NO./UPC NO./PACKS CODE*/
-    @Excel(name = "ITEM NO./SKU NO./UPC NO./PACKS CODE", width = 15)
+    //@Excel(name = "ITEM NO./SKU NO./UPC NO./PACKS CODE", width = 15)
 	@ApiModelProperty(value = "ITEM NO./SKU NO./UPC NO./PACKS CODE")
 	private String itemCode;
 	/**分销点*/
@@ -72,7 +73,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "分销点")
 	private String distributionPoint;
 	/**PREPACK SKU*/
-    @Excel(name = "PREPACK SKU", width = 15)
+   // @Excel(name = "PREPACK SKU", width = 15)
 	@ApiModelProperty(value = "PREPACK SKU")
 	private String prepackSku;
 	/**尺码*/
@@ -80,11 +81,11 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "尺码")
 	private String size;
 	/**起始箱号*/
-    @Excel(name = "起始箱号", width = 15)
+   // @Excel(name = "起始箱号", width = 15)
 	@ApiModelProperty(value = "起始箱号")
 	private String startingBoxNumber;
 	/**结束箱号*/
-    @Excel(name = "结束箱号", width = 15)
+  //  @Excel(name = "结束箱号", width = 15)
 	@ApiModelProperty(value = "结束箱号")
 	private String endCaseNumber;
 	/**颜色*/
@@ -92,27 +93,31 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "颜色")
 	private String colour;
 	/**件数/箱*/
-    @Excel(name = "件数/箱", width = 15)
+    @Excel(name = "件数/箱", width = 15,isStatistics = true)
 	@ApiModelProperty(value = "件数/箱")
-	private String piecesBox;
+	private java.math.BigDecimal piecesBox;
 	/**箱数*/
-    @Excel(name = "箱数", width = 15)
+    @Excel(name = "箱数", width = 15,isStatistics = true)
 	@ApiModelProperty(value = "箱数")
 	private java.math.BigDecimal boxNumber;
 	/**总件数*/
-    @Excel(name = "总件数", width = 15)
+    @Excel(name = "总件数", width = 15,isStatistics = true)
 	@ApiModelProperty(value = "总件数")
 	private java.math.BigDecimal total;
+	/**计划装箱数量*//*
+	@Excel(name = "计划装箱数量", width = 15,isStatistics = true)
+	@ApiModelProperty(value = "计划装箱数量")
+	private java.math.BigDecimal planQuantity;*/
 	/**净重/箱*/
-    @Excel(name = "净重/箱", width = 15)
+   // @Excel(name = "净重/箱", width = 15)
 	@ApiModelProperty(value = "净重/箱")
 	private java.math.BigDecimal netWeight;
 	/**总净重*/
-    @Excel(name = "总净重", width = 15)
+   // @Excel(name = "总净重", width = 15)
 	@ApiModelProperty(value = "总净重")
 	private java.math.BigDecimal totalNetWeight;
 	/**毛重*/
-    @Excel(name = "毛重/箱", width = 15)
+   // @Excel(name = "毛重/箱", width = 15)
 	@ApiModelProperty(value = "毛重/箱")
 	private java.math.BigDecimal grossWeight;
 	/**总毛重*/
@@ -120,15 +125,15 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "总毛重")
 	private java.math.BigDecimal totalGrossWeight;
 	/**外箱长度*/
-    @Excel(name = "外箱长度", width = 15)
+    //@Excel(name = "外箱长度", width = 15)
 	@ApiModelProperty(value = "外箱长度")
 	private java.math.BigDecimal outerBoxLength;
 	/**外箱宽度*/
-    @Excel(name = "外箱宽度", width = 15)
+  //  @Excel(name = "外箱宽度", width = 15)
 	@ApiModelProperty(value = "外箱宽度")
 	private java.math.BigDecimal outerBoxWidth;
 	/**外箱高度*/
-    @Excel(name = "外箱高度", width = 15)
+  //  @Excel(name = "外箱高度", width = 15)
 	@ApiModelProperty(value = "外箱高度")
 	private java.math.BigDecimal outerBoxHeight;
 	/**总体积*/
@@ -136,11 +141,11 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "总体积")
 	private java.math.BigDecimal totalVolume;
 	/**净净重*/
-    @Excel(name = "净净重", width = 15)
+  //  @Excel(name = "净净重", width = 15)
 	@ApiModelProperty(value = "净净重")
 	private java.math.BigDecimal netWeightToo;
 	/**单价*/
-    @Excel(name = "单价", width = 15)
+   // @Excel(name = "单价", width = 15)
 	@ApiModelProperty(value = "单价")
 	private java.math.BigDecimal unitPrice;
 	/**总价*/
@@ -148,39 +153,39 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "总价")
 	private java.math.BigDecimal totalPrice;
 	/**排序*/
-    @Excel(name = "排序", width = 15)
+   // @Excel(name = "排序", width = 15)
 	@ApiModelProperty(value = "排序")
 	private Integer sort;
 	/**创建人*/
-    @Excel(name = "创建人", width = 15)
+  //  @Excel(name = "创建人", width = 15)
 	@ApiModelProperty(value = "创建人")
 	private String createBy;
 	/**创建日期*/
-	@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+//	@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty(value = "创建日期")
 	private Date createTime;
 	/**更新人*/
-    @Excel(name = "更新人", width = 15)
+ //   @Excel(name = "更新人", width = 15)
 	@ApiModelProperty(value = "更新人")
 	private String updateBy;
 	/**更新日期*/
-	@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+//	@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	@ApiModelProperty(value = "更新日期")
 	private Date updateTime;
 	/**组织*/
-    @Excel(name = "组织", width = 15)
+  //  @Excel(name = "组织", width = 15)
 	@ApiModelProperty(value = "组织")
 	private String pkOrg;
 	/**删除状态*/
-    @Excel(name = "删除状态", width = 15)
+ //   @Excel(name = "删除状态", width = 15)
 	@ApiModelProperty(value = "删除状态")
 	private String delFlag;
 	/**备注*/
-    @Excel(name = "备注", width = 15)
+ //   @Excel(name = "备注", width = 15)
 	@ApiModelProperty(value = "备注")
 	private Object memo;
 	/**备注*/
@@ -189,7 +194,7 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	private String withCode;
 
 	/**小PO*/
-	@Excel(name = "小PO", width = 20)
+//	@Excel(name = "小PO", width = 20)
 	@ApiModelProperty(value = "小PO")
 	private String smallPo;
 	/**存货名称*/
@@ -197,25 +202,25 @@ public class SyPreAssembledPackingListItem implements Serializable {
 	@ApiModelProperty(value = "存货名称")
 	private String inventoryName;
 	/**采购/委外订单号*/
-	@Excel(name = "采购/委外订单号", width = 20)
+//	@Excel(name = "采购/委外订单号", width = 20)
 	@ApiModelProperty(value = "采购/委外订单号")
 	private String spurOrSubOrder;
 	/**工厂单价*/
-	@Excel(name = "工厂单价", width = 20)
+//	@Excel(name = "工厂单价", width = 20)
 	@ApiModelProperty(value = "工厂单价")
 	private java.math.BigDecimal factoryUnitPrice;
 	/**数量(按合并规则累计)*/
-	@Excel(name = "数量(按合并规则累计)", width = 20)
+//	@Excel(name = "数量(按合并规则累计)", width = 20)
 	@ApiModelProperty(value = "数量(按合并规则累计)")
 	private java.math.BigDecimal totalQuantity;
 	/**客户简称*/
-	@Excel(name = "客户简称", width = 20)
+	//@Excel(name = "客户简称", width = 20)
 	@ApiModelProperty(value = "客户简称")
 	private java.lang.String customerAbbreviation;
 
-	/**客户简称*/
+	/**二维表格*/
 	@TableField(exist = false)
-	@Excel(name = "二维表格", width = 20)
+	@ExcelCollection(name="二维表格")
 	@ApiModelProperty(value = "二维表格")
 	private List<SizeTable> sizeTables;
 

+ 15 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/SyPreAssembledPackingListItemMapper.java

@@ -2,10 +2,13 @@ package org.jeecg.modules.spapl.mapper;
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.spapl.vo.PackingHeaderVo;
+import org.jeecg.modules.spapl.vo.PackingLineVo;
 
 /**
  * @Description: 预装箱单子表
@@ -19,7 +22,18 @@ public interface SyPreAssembledPackingListItemMapper extends BaseMapper<SyPreAss
     
 	public List<SyPreAssembledPackingListItem> selectByMainId(String mainId);
 
-	public List<SyPreAssembledPackingListItem> selectSyShippingDetailsItemData(String id);
+	public List<SyPreAssembledPackingListItem> selectSyShippingDetailsItemData(@Param("value")String[] value);
 
 	public List<SizeTable> selectSize(@Param("begin") String begin,@Param("end") String end);
+
+	public List<SizeTable> querySizes(@Param("value")String[] value);
+
+	public List<SizeTable> querySizes2(String ids);
+
+	public List<SizeTable> querySize(@Param("value")String value,@Param("color")String color);
+
+	public List<SizeTable> querySize2(@Param("colour")String colour,@Param("value2") String pid);
+
+	@InterceptorIgnore(tenantLine = "true")
+	public List<PackingLineVo> pushData(String id);
 }

+ 7 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/SyPreAssembledPackingListMapper.java

@@ -5,8 +5,10 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.spapl.vo.PackingHeaderVo;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo;
 
 /**
@@ -22,4 +24,9 @@ public interface SyPreAssembledPackingListMapper extends BaseMapper<SyPreAssembl
    Integer deleteId(String id);
 
    IPage<SyPreAssembledPackingListVo> selectPage(IPage<SyPreAssembledPackingListVo> page, @Param("ew") QueryWrapper<SyPreAssembledPackingListVo> queryWrapper);
+
+   PackingHeaderVo pushData(String id);
+   //发运明细分页列表查询
+   public IPage<SyShippingDetailsVo> queryShippingDetails(IPage<SyShippingDetailsVo> page, @Param("ew") QueryWrapper<SyShippingDetailsVo> queryWrapper);
+
 }

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

@@ -10,40 +10,181 @@
 
 	
 	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
-		SELECT * 
+		SELECT
+			id,
+			sy_pre_assembled_packing_list_id,
+			sy_declaration_elements_id,
+			ac_set_no,
+			garment_factory,
+			hod,
+			style_no,
+			po_no,
+			item_code,
+			distribution_point,
+			prepack_sku,
+			size,
+			starting_box_number,
+			end_case_number,
+			colour,
+			pieces_box,
+			box_number,
+			sum(total) total,/*件数*/
+			net_weight,
+			total_net_weight total_net_weight,/*总净重*/
+			gross_weight,
+			total_gross_weight total_gross_weight,/*总毛重*/
+			outer_box_length,
+			outer_Box_Width,
+			total_volume total_volume,/*总体积*/
+			net_weight_too net_weight_too,/*净净重*/
+			unit_price,
+			total_price total_price,/*总价*/
+			with_code,
+			small_po,
+			inventory_name,
+			spur_or_sub_order,
+			factory_unit_price,
+			/*SUM(total_quantity) total_quantity,合计数量/件数*/
+			customer_abbreviation
 		FROM  sy_pre_assembled_packing_list_item
-		WHERE
-			 sy_pre_assembled_packing_list_id = #{id} and del_flag = 0
+		WHERE sy_pre_assembled_packing_list_id = #{value} AND del_flag = 0
+		GROUP BY colour/*根据发运明细主表id分组 改为了按照 颜色进行分组*/
+
 	</select>
 
 	<select id="selectSyShippingDetailsItemData" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
-		 select
+		 SELECT
 		 	shipping_details_id syDeclarationElementsId,/*发育明细主表id s*/
 		 	sy_shipping_details_item.id syDeclarationElementsItemId,/*发育明细子表id s*/
-		 	account acSetNo,/*单据号 s*/
+            sy_shipping_details.pre_delivery_date hod, /*预发货日期 m*/
+          	sy_shipping_details_item.small_Po poNo, /*小PO sxx*/
+		 	sy_shipping_details_item.account acSetNo,/*单据号 s*/
+		 	sy_shipping_details.garment_Factory garment_Factory, /*成衣工厂*/
 			sy_shipping_details_item.distribution_point distributionPoint,/*分销点 s*/
 			factory_unit_price factoryUnitPrice,/*工厂单价 s*/
-			size,/*尺码 s*/
-			colour,/*颜色 s*/
+			sales_Unit_Price UnitPrice,/*销售单价--> 单价*/
 			coding_Rules withCode,/*配码规则*/
-		    sy_shipping_details_item.item_Number itemNumber, /*款号 s*/
+			sy_order_data_item.size,/*尺码 s*/
+			sy_order_data_item.colour,/*颜色 s*/
+		    sy_shipping_details_item.item_Number styleNo, /*款号 s*/
           	sy_shipping_details_item.customer_Abbreviation customerAbbreviation, /*客户简称 s*/
-          	sy_shipping_details_item.small_Po smallPo, /*小PO s*/
            	sy_shipping_details_item.distribution_Point distributionPoint, /*分销点 s*/
             sy_shipping_details_item.inventory_Name inventoryName, /*存货名称 s*/
-            shipment_Quantity total,/*数量 s*/
+            sum(shipment_Quantity) total,/*数量 s*/
+            sum(shipment_Quantity) totalQuantity,/*数量(按合并规则累计) s*/
+            sum(box_Number) boxNumber,/*箱数*/
             sy_shipping_details_item.pur_Or_Sub_Order  purOrSubOrder /*采购/委外订单号 s*/
-		 from sy_shipping_details_item left join sy_order_data_item
-		 on sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
-		 where sy_shipping_details_item.del_flag = 0 and shipping_details_id=#{value}
+		 FROM sy_shipping_details
+		 LEFT JOIN sy_shipping_details_item
+		 ON sy_shipping_details.`id`=sy_shipping_details_item.`shipping_details_id`
+		 LEFT JOIN sy_order_data_item
+		 ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
+		 where sy_shipping_details_item.del_flag = 0 and shipping_details_id in
+		<foreach collection="value" item="item" separator=","  open="(" close=")" >
+			#{item}
+		</foreach>
+		group by sy_order_data_item.colour
 	</select>
 
 	<select id="selectSize" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
 		SELECT * FROM  sizetable WHERE num&gt;=(SELECT num FROM sizetable WHERE  size=#{begin} or alias=#{begin})
-		AND num&lt;=(SELECT num FROM sizetable WHERE size=#{end} or alias=#{end})
+		AND num&lt;=(SELECT num FROM sizetable WHERE size=#{end} or alias=#{end}) order by num
+	</select>
+
+	<!--获取所有id的所有尺码去重并排序-->
+	<select id="querySizes" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
+		SELECT DISTINCT sy_order_data_item.size FROM sy_shipping_details_item LEFT JOIN sy_order_data_item
+		 ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
+		 LEFT JOIN sizetable ON sy_order_data_item.`size`=sizetable.`size` OR sy_order_data_item.`size`=sizetable.`alias`
+		 WHERE shipping_details_id in
+		<foreach collection="value" item="item" separator=","  open="(" close=")" >
+			#{item}
+		</foreach>
+		 ORDER BY sizetable.num
+	</select>
+
+	<!--获取所有id的所有尺码去重并排序2-->
+	<select id="querySizes2" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
+		SELECT DISTINCT sy_pre_assembled_packing_list_item.size,alias
+		FROM sy_pre_assembled_packing_list_item
+		LEFT JOIN sizetable ON sy_pre_assembled_packing_list_item.`size`=sizetable.`size`
+		OR sy_pre_assembled_packing_list_item.`size`=sizetable.`alias`
+		WHERE sy_pre_assembled_packing_list_id =#{value}
+		ORDER BY sizetable.num
 	</select>
 
-	<!--<select id="selectSize2" resultType="org.jeecg.modules.spapl.entity.SizeTable" parameterType="java.lang.String">
-		SELECT * FROM  sizetable WHERE  size=#{value} or alias=#{value}
-	</select>-->
+	<!--参照发育明细获取id的所有尺码并排序-->
+	<select id="querySize" resultType="org.jeecg.modules.spapl.entity.SizeTable" >
+		SELECT sy_order_data_item.size,alias,shipment_Quantity quantity,shipment_Quantity/box_Number proportion,
+			sy_shipping_details_item.id itemId
+			FROM sy_shipping_details_item
+			LEFT JOIN sy_order_data_item
+			ON sy_shipping_details_item.sy_order_data_item_id=sy_order_data_item.id
+			LEFT JOIN sizetable ON sy_order_data_item.`size`=sizetable.`size`
+			OR sy_order_data_item.`size`=sizetable.`alias`
+		WHERE shipping_details_id=#{value} and sy_order_data_item.colour=#{color}
+		order by sizetable.num
+	</select>
+
+	<!--预装箱单获取id的所有尺码并排序-->
+	<select id="querySize2" resultType="org.jeecg.modules.spapl.entity.SizeTable" >
+		SELECT sy_pre_assembled_packing_list_item.size,alias,total quantity,box_Number,total/box_Number proportion,
+		sy_pre_assembled_packing_list_item.id itemId
+			FROM sy_pre_assembled_packing_list_item
+			LEFT JOIN sizetable ON sy_pre_assembled_packing_list_item.`size`=sizetable.`size`
+			OR sy_pre_assembled_packing_list_item.`size`=sizetable.`alias`
+		WHERE colour=#{colour} and sy_pre_assembled_packing_list_id=#{value2}
+		order by sizetable.num
+	</select>
+
+
+	<select id="pushData" resultType="org.jeecg.modules.spapl.vo.PackingLineVo" parameterType="java.lang.String">
+        SELECT
+        	'1001' tenantId/*租户ID*/,
+			id packingLineId/*主键*/,
+			'' packingHeaderId/*预装箱单主表id*/,
+			sort packingLineNum/*排序*/,
+			po_No pono/*poNo*/,
+			'' poId/*poId*/,
+            '' supplierNumber/*供应商编码*/,
+            '' supplierId/*供应商ID*/,
+            '' supplierTenantId/*供应商租户ID*/,
+			style_No styleNo/*styleNo*/,
+			item_Code featureCode1/*ITEM NO./SKU NO./UPC NO./PACKS CODE*/,
+			prepack_Sku	prepackSku/*PREPACK_SKU*/,
+			colour color/*颜色*/,
+    		'' itemId/*物料id*/,
+			'' itemAttrId/*物料特性*/,
+			inventory_Name itemCode/*物料名称*/,
+			hod	hod	/*预发货日期*/,
+			size size/*尺码*/,
+			'0'  planPackingQty/*计划装箱数量*/,
+			0 actualPackingQty /*实际装箱数量*/,
+			distribution_Point featureCode2/*分销点/DC/LABEL*/,
+			with_Code planSizeSpec/*计划配码规格*/,
+			'' actualPackingQty/*实际配码规格*/,
+			starting_Box_Number	startBoxNo/*起始箱号*/,
+			end_Case_Number endBoxNo/*结束箱号*/,
+			pieces_Box setQty/*件数/每箱*/,
+			box_Number cartons/*箱数*/,
+			total sets/*总件数*/,
+			outer_Box_Length boxLength/*外箱长度*/,
+			outer_Box_Width	boxWidth/*外箱宽度*/,
+			outer_Box_Height boxHeight/*外箱高度*/,
+			total_Volume totalCbm/*总体积*/,
+			net_Weight boxNetWeight/*净重/箱*/,
+			total_Net_Weight totalNetWeight/*总净重*/,
+			gross_Weight boxGrossWeight/*毛重/箱*/,
+			total_Gross_Weight totalGrossWeight/*总毛重*/,
+			net_Weight_Too netNetWeight/*NN.W净净重*/,
+			unit_Price unitPrice/*单价*/,
+			total_Price totalPrice/*总价*/,
+			'' packsCode/*Packs code*/,
+			'' dcNo/*DC NO*/,
+			'' skuNo/*SKU NO*/,
+			'' label/*标签*/,
+			'' distribution/*分销点*/
+		FROM sy_pre_assembled_packing_list_item
+		where sy_Pre_Assembled_Packing_List_Id=#{value}
+    </select>
 </mapper>

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

@@ -5,31 +5,104 @@
         /*获取发运明细数据*/
         select
             id syDeclarationElementsId, /*发运明细主表id*/
+            chinese_Name productName,/*中文品名-->品名*/
             pre_delivery_date preDeliveryDate, /*预发货日期 m*/
+            /*orderNumber 订单数据主表*/ /*订单号 orderNumberm  */
+            customer, /*客户 customer */
+            /*orderNumber 订单数据子表or发运明细子表*/  /*款号 itemNumber */
+            garment_Factory garmentFactory, /*成衣工厂 garmentFactory m*/
             order_Type  orderType /*订单类型 m*/
+
         from sy_shipping_details
         where del_flag = 0 and id=#{value}
 	</select>
 
     <select id="selectPage" resultType="org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo">
         /*获取汇总数据*/
-       select a.*,
-			b.customer_abbreviation,
-			sum(b.total_quantity) totalquantity,
-			b.factory_unit_price,
-			b.spur_or_sub_order,
-			b.inventory_name,
-			b.small_po,
-			b.distribution_point
-        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  AND b.del_flag='0'
+       SELECT
+            a.id,/*主键id*/
+			a.document_No,/*单据号*/
+			a.order_number,/*订单号*/
+			a.item_number, /*款号*/
+			a.product_name,/*品名*/
+			a.size_range,/*尺码范围*/
+			a.customer,/*客户名称*/
+			a.container_code,/*集装箱号*/
+			a.container_number,/*集装箱代号*/
+			a.u8_remarks,/*备注*/
+			a.garment_factory,/*成衣工厂*/
+			a.total_boxes,/*总箱数*/
+			a.total_net_weight,/*总净重*/
+			a.total_gross_weight,/*总毛重*/
+			a.total_volume,/*总体积*/
+			a.total_price,/*总价*/
+			a.depositary_receipt_no,/*预托书号*/
+			a.memo,/*备注*/
+			a.pre_delivery_date,/*预发货日期*/
+			a.order_type,/*订单类型*/
+			b.customer_abbreviation,/*客户简称*/
+			SUM(b.total) totalquantity,/*件数*/
+			/*sum(b.total) totalquantity,*/
+			b.factory_unit_price,/*工厂单价*/
+			b.spur_or_sub_order,/*采购委外订单号*/
+			b.inventory_name,/*存货名称*/
+			b.small_po,/*小po*/
+			b.distribution_point/*分销点*/
+        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  AND b.del_flag='0'
         ${ew.customSqlSegment}
-        group by a.id
+        GROUP BY a.id
 	</select>
 
     <update id="deleteId" parameterType="java.lang.String">
         update sy_pre_assembled_packing_list set del_flag='1' where
         id=#{value}
     </update>
+    
+    <select id="pushData" resultType="org.jeecg.modules.spapl.vo.PackingHeaderVo" parameterType="java.lang.String">
+        SELECT
+            document_No packingHeaderNum/* 单据号*/,
+            '1001' tenantId/*租户ID*/,
+            '' packingHeaderNum/*单据号*/,
+            id packingHeaderId/*documentNo*/,
+            'CLOTHING' packingType /*计划装箱单类型*/,
+            'NEW' packingStatus /*计划装箱单头状态*/,
+            order_Number poNo/*订单号*/,
+            '' supplierNumber/*供应商编码*/,
+            '' supplierId/*供应商ID*/,
+            '' supplierTenantId/*供应商租户ID*/,
+            '' customerCode/*客户*/,
+            '' customerId/*客户ID*/,
+            '' customerTenantId/*客户租户ID*/,
+            size_Range sizeRange/*尺码范围*/,
+            item_Number styleNo/*款号*/,
+            product_Name productName/*品名*/,
+            create_By preparer/*创建人*/,
+            create_Time preparationTime/*创建时间*/
+        FROM `sy_pre_assembled_packing_list`
+        where id=#{value}
+    </select>
+
+
+    <select id="queryShippingDetails" resultType="org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo">
+    select t.* from(select a.id as id,a.document_no as documentNo,a.document_date as documentDate,b.order_number as orderNumber,a.push_state,a.state,
+    b.customer_abbreviation as customerAbbreviation,b.sales_department as salesDepartment,b.salesman as salesman,a.customer as customer,
+    b.small_po as smallPo,b.pack_id as packId,a.pre_delivery_date as preDeliveryDate,a.declaration_name as declarationName,b.order_date as orderDate,
+    sum(b.shipment_quantity) as shipmentQuantity,b.customs_declaration_unit_price as customsDeclarationUnitPrice,b.order_quantity as orderQuantity,
+    b.is_tc as isTc,a.hs_code as hsCode,b.distribution_point as distributionPoint,b.item_number as itemNumber,b.business_type_text as businessTypeText,
+    b.arrival_date as arrivalDate,b.inventory_name as inventoryName,b.sales_unit_price as salesUnitPrice,b.order_remaining_quantity as orderRemainingQuantity,
+    b.pur_or_sub_order as purOrSubOrder,a.order_type as orderType,b.factory_unit_price as factoryUnitPrice,b.third_party as thirdParty,b.customer_order as customerOrder,
+    b.material_composition as materialComposition,b.currency_text as currencyText,b.brand_side as brandSide,b.deposit_ratio as depositRatio,
+    b.deposit as deposit,b.collaborative_route as collaborativeRoute,b.term_of_payment as termOfPayment,b.end_customer as endCustomer,
+    b.order_remarks as orderRemarks,b.price_remarks as priceRemarks,b.order_change_description as orderChangeDescription,a.pre_completion_date as preCompletionDate,
+    b.sales_type_text as salesTypeText,b.customer_name as customerName,b.exchange_rate as exchangeRate,a.whole_order_total as wholeOrderTotal,
+    b.declaration_elements as declarationElements,b.number_of_sets as numberOfSets,a.chinese_name as chineseName,b.account as account,
+    a.english_product_name as englishProductName,a.garment_factory as garmentFactory from sy_shipping_details a
+left join sy_shipping_details_item b
+on a.id = b.shipping_details_id and b.del_flag = 0
+where a.del_flag = 0 /* and inventory_code like '19%'*/  group by a.id order by a.document_no desc) as t
+${ew.customSqlSegment}
+
+</select>
 </mapper>

+ 9 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/ISyPreAssembledPackingListItemService.java

@@ -23,4 +23,13 @@ public interface ISyPreAssembledPackingListItemService extends IService<SyPreAss
 	 * @return
 	 */
 	public List<SizeTable> selectSize(String str, BigDecimal orderNum);
+
+	/**
+	 * 获取所选中的id所有的尺码数据
+	 * @param ids
+	 * @return
+	 */
+	public List<SizeTable> querySizes(String[] ids);
+
+	public List<SizeTable> sort(List<SizeTable> sizes);
 }

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

@@ -8,6 +8,7 @@ import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.spapl.vo.PackingHeaderVo;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo;
 
 import java.io.Serializable;
@@ -28,11 +29,23 @@ public interface ISyPreAssembledPackingListService extends IService<SyPreAssembl
 	 */
 	public SyPreAssembledPackingList saveMain(SyPreAssembledPackingList syPreAssembledPackingList) ;
 
+	/**
+	 * 添加一对多
+	 *
+	 */
+	public SyPreAssembledPackingList saveMain2(SyPreAssembledPackingList syPreAssembledPackingList) ;
+
 	/**
 	 * 修改一对多
 	 * 
 	 */
 	public SyPreAssembledPackingList updateMain(SyPreAssembledPackingList syPreAssembledPackingList);
+
+	/**
+	 * 修改一对多2测试版
+	 *
+	 */
+	public SyPreAssembledPackingList updateMain2(SyPreAssembledPackingList syPreAssembledPackingList);
 	
 	/**
 	 * 删除一对多
@@ -73,5 +86,11 @@ public interface ISyPreAssembledPackingListService extends IService<SyPreAssembl
 	public SyPreAssembledPackingList queryById(QueryWrapper<SyPreAssembledPackingList> queryWrapper);
 
 
-
+	/**
+	 * 根据id手动推送云工厂数据
+	 * 根据id手动推送云工厂数据
+	 * @param id
+	 * @return	PackingHeaderVo
+	 */
+	public PackingHeaderVo pushData(String id);
 }

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.spapl.service.impl;
 
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.spapl.entity.SizeTable;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingList;
 import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
@@ -29,7 +30,9 @@ public class SyPreAssembledPackingListItemServiceImpl extends ServiceImpl<SyPreA
 	public List<SyPreAssembledPackingListItem> selectByMainId(String mainId) {
 		List<SyPreAssembledPackingListItem> list= syPreAssembledPackingListItemMapper.selectByMainId(mainId);
 		for(SyPreAssembledPackingListItem spapl_item : list){
-			spapl_item.setSizeTables(selectSize(spapl_item.getWithCode(),spapl_item.getTotal()));
+			List<SizeTable> sizes=syPreAssembledPackingListItemMapper.querySize2(spapl_item.getColour(),spapl_item.getSyPreAssembledPackingListId());
+			sizes=sort(sizes);
+			spapl_item.setSizeTables(sizes);
 		}
 		return list;
 	}
@@ -38,7 +41,7 @@ public class SyPreAssembledPackingListItemServiceImpl extends ServiceImpl<SyPreA
 	public List<SizeTable> selectSize(String str, BigDecimal orderNum){
 		List<SizeTable> sizes=null;
 		try{
-			if(str==null){
+			if(oConvertUtils.isEmpty(str)){
 				return null;
 			}//XS-3XL;1/1/2/4/4/4/2 	2XS-2XL 1464311
 			String[] str1={};
@@ -46,16 +49,19 @@ public class SyPreAssembledPackingListItemServiceImpl extends ServiceImpl<SyPreA
 			//根据情况截取字符串
 			if(str.indexOf(" ")>-1){
 				str1=str.substring(0,str.indexOf(" ")).split("-");
-				num1=str.substring(str.indexOf(" ")+1,str.length());
-			}else{
+				str=str.substring(str.indexOf(" ")+1,str.length());
+			}else if(str.indexOf(";")>-1){
 				str1=str.substring(0,str.indexOf(";")).split("-");
-				num1=str.substring(str.indexOf(";")+1,str.length()).replace("/","");
+				str=str.substring(str.indexOf(";")+1,str.length());
+			}
+			num1=str;
+			if(str.indexOf("/")>-1){
+				num1=str.replace("/","");
 			}
-			//System.out.println("str的长度为:"+str1.length);
 			if(str1.length<2){
 				sizes=new ArrayList<SizeTable>();
 				SizeTable sizeTable=new SizeTable();
-				sizeTable.setProportion(1);//比例
+				sizeTable.setProportion(Integer.parseInt(num1));//比例
 				sizeTable.setNum(1);//序号
 				sizeTable.setQuantity(orderNum);//订单数量
 				sizeTable.setSize(str1[0]);
@@ -68,9 +74,10 @@ public class SyPreAssembledPackingListItemServiceImpl extends ServiceImpl<SyPreA
 			BigDecimal avg=new BigDecimal(0);
 			for (int i=0;i< sizes.size();i++) {
 				SizeTable sizeTable=sizes.get(i);
-				sizeTable.setProportion(Integer.parseInt(num1.substring(i,i+1)));//比例
+				int index=num1.length()/sizes.size();//0 2 4 6
+				sizeTable.setProportion(Integer.parseInt(num1.substring(i*index,i*index+index)));//比例
 				sizeTable.setNum(i);//序号
-				row=row.add(BigDecimal.valueOf(Double.parseDouble(num1.substring(i,i+1))));
+				row=row.add(BigDecimal.valueOf(Double.parseDouble(num1.substring(i*index,i*index+index))));
 			}
 			if(row.equals(0)) {
 				return null;
@@ -79,13 +86,29 @@ public class SyPreAssembledPackingListItemServiceImpl extends ServiceImpl<SyPreA
 			for (SizeTable sizeTable :sizes) {
 				sizeTable.setQuantity(avg.multiply(new BigDecimal(sizeTable.getProportion()) ) );//平均值
 			}
-			System.out.println("sizes为:"+sizes);
-			System.out.println("row为:"+row);
-			System.out.println("avg为:"+avg);
 		}catch (Exception ex){
 			ex.printStackTrace();
 			log.error("尺码组解析失败:" + ex.getMessage());
 		}
 		return sizes;
 	}
+
+	public List<SizeTable> querySizes(String[] ids) {
+		return sort(syPreAssembledPackingListItemMapper.querySizes(ids));
+	}
+
+	/**
+	 * 排序方法
+	 * @param sizes
+	 * @return
+	 */
+	@Override
+	public List<SizeTable> sort(List<SizeTable> sizes) {
+		int i=0;
+		for(SizeTable size : sizes){
+			size.setNum(++i);
+		}
+		return sizes;
+	}
+
 }

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.ApiModelProperty;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.documents.shippingDetails.controller.SyShippingDetailsController;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetails;
 import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
@@ -16,6 +17,8 @@ import org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem;
 import org.jeecg.modules.spapl.mapper.SyPreAssembledPackingListItemMapper;
 import org.jeecg.modules.spapl.mapper.SyPreAssembledPackingListMapper;
 import org.jeecg.modules.spapl.service.ISyPreAssembledPackingListService;
+import org.jeecg.modules.spapl.vo.PackingHeaderVo;
+import org.jeecg.modules.spapl.vo.PackingLineVo;
 import org.jeecg.modules.spapl.vo.SyPreAssembledPackingListVo;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -44,7 +47,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 	private SyPreAssembledPackingListItemMapper syPreAssembledPackingListItemMapper;
 	@Autowired
 	private SyShippingDetailsMapper syShippingDetailsMapper;
-	
+
 	@Override
 	@Transactional
 	public SyPreAssembledPackingList saveMain(SyPreAssembledPackingList syPreAssembledPackingList) {
@@ -58,7 +61,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		BigDecimal totalVolume=new BigDecimal(0);//总体积
 		BigDecimal totalPrice=new BigDecimal(0);//总价
 		syPreAssembledPackingListMapper.insert(syPreAssembledPackingList);//添加主表数据
-
+		System.out.println("syPreAssembledPackingList的字段为:"+syPreAssembledPackingList);
 		/*BigDecimal total;//总件数*/
 		for(SyPreAssembledPackingListItem entity:syPreAssembledPackingList.getSyPreAssembledPackingListItemList()) {
 			totalBoxes=totalBoxes.add(entity.getBoxNumber());//箱数
@@ -67,7 +70,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 			totalVolume=totalVolume.add(entity.getTotalVolume());//总体积
 			totalPrice=totalPrice.add(entity.getTotalPrice());//总价
 			entity.setDelFlag("0");//默认为0
-			entity.setSyPreAssembledPackingListId(syPreAssembledPackingList.getId());
+			entity.setSyPreAssembledPackingListId(syPreAssembledPackingList.getId());//获取主表的id
 			syPreAssembledPackingListItemMapper.insert(entity);//循环添加子表数据
 		}
 		syPreAssembledPackingList.setTotalBoxes(totalBoxes);
@@ -79,6 +82,74 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		return syPreAssembledPackingList;
 	}
 
+	/**
+	 * 新的添加方法
+	 * @param syPreAssembledPackingList
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public SyPreAssembledPackingList saveMain2(SyPreAssembledPackingList syPreAssembledPackingList) {
+		List<SyPreAssembledPackingListItem> items=syPreAssembledPackingList.getSyPreAssembledPackingListItemList();
+		syPreAssembledPackingList.setDocumentNo(oConvertUtils.id());//随机单据号
+		syPreAssembledPackingList.setDelFlag("0");//删除状态默认为0
+		syPreAssembledPackingList.setPushStatus("0");//推送状态默认为0
+		syPreAssembledPackingList.setStatus("0");//单据装填默认为0
+		syPreAssembledPackingListMapper.insert(syPreAssembledPackingList);//往主表添加数据
+		BigDecimal totalBoxes=new BigDecimal(0);//总箱数
+		BigDecimal totalNetWeight=new BigDecimal(0);//总净重
+		BigDecimal totalGrossWeight=new BigDecimal(0);//总毛重
+		BigDecimal totalVolume=new BigDecimal(0);//总体积
+		BigDecimal totalPrice=new BigDecimal(0);//总价
+		for (SyPreAssembledPackingListItem item : items){
+			totalBoxes=totalBoxes.add(item.getBoxNumber());//箱数
+			totalNetWeight=totalNetWeight.add(item.getTotalNetWeight());//总净重
+			totalGrossWeight=totalGrossWeight.add(item.getTotalGrossWeight());//总毛重
+			totalVolume=totalVolume.add(item.getTotalVolume());//总体积
+			totalPrice=totalPrice.add(item.getTotalPrice());//总价
+			System.out.println("箱数\t"+totalBoxes);
+			System.out.println("总净重\t"+totalNetWeight);
+			System.out.println("总毛重\t"+totalGrossWeight);
+			System.out.println("总体积\t"+totalVolume);
+			System.out.println("总价\t"+totalPrice);
+			List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
+			BigDecimal total=item.getTotal();//总件数
+			BigDecimal piecesBox=item.getPiecesBox();//箱/件数
+			item.setSyPreAssembledPackingListId(syPreAssembledPackingList.getId());//获取主表id
+			for (SizeTable size : sizes){
+				BigDecimal quantity=total.divide(piecesBox,4,BigDecimal.ROUND_HALF_UP) ;//总件数除以箱/件数
+				quantity=quantity.multiply(new BigDecimal(size.getProportion()));//乘以比例可获得
+				item.setTotal(quantity);//该尺码件数
+				item.setSize(size.getSize());//获取尺码信息
+				item.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
+				item.setDelFlag("0");//默认为未删除
+				item.setSort(size.getNum());//序号
+				item.setId(oConvertUtils.id());//获取到随机id
+				int row =syPreAssembledPackingListItemMapper.insert(item);//添加子表数据
+				System.out.println("尺码大小:\t"+item.getSize());
+				System.out.println("尺码件数:\t"+item.getTotal());
+				System.out.println("尺码比例:\t"+size.getProportion());
+				System.out.println("预装箱单主表id\t"+syPreAssembledPackingList.getId());
+				System.out.println("发育明细主表id\t"+item.getSyDeclarationElementsId());
+				System.out.println("发运明细子表id\t"+size.getItemId()+"\n");
+				System.out.println("预装箱单子表id为"+item.getId());
+				System.out.println("插入数据库后返回消息为"+row);
+			}
+		}
+		syPreAssembledPackingList.setTotalBoxes(totalBoxes);
+		syPreAssembledPackingList.setTotalNetWeight(totalNetWeight);
+		syPreAssembledPackingList.setTotalGrossWeight(totalGrossWeight);
+		syPreAssembledPackingList.setTotalVolume(totalVolume);
+		syPreAssembledPackingList.setTotalPrice(totalPrice);
+		syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);
+		return syPreAssembledPackingList;
+	}
+
+	/**
+	 * 编辑
+	 * @param syPreAssembledPackingList
+	 * @return
+	 */
 	@Override
 	@Transactional
 	public SyPreAssembledPackingList updateMain(SyPreAssembledPackingList syPreAssembledPackingList) {
@@ -119,6 +190,75 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		return syPreAssembledPackingList;
 	}
 
+	/**
+	 * 修改数据
+	 * @param syPreAssembledPackingList
+	 * @return
+	 */
+	@Override
+	@Transactional
+	public SyPreAssembledPackingList updateMain2(SyPreAssembledPackingList syPreAssembledPackingList) {
+		if(!syPreAssembledPackingListMapper.selectById(syPreAssembledPackingList.getId()).getStatus().equals("0")){
+			throw new JeecgBootException("单据已提交不能修改!");
+		}
+		List<SyPreAssembledPackingListItem> items=syPreAssembledPackingList.getSyPreAssembledPackingListItemList();
+		syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);//修改主表数据
+		syPreAssembledPackingListItemMapper.deleteByMainId(syPreAssembledPackingList.getId());//将子表的删除状态都变成1
+		BigDecimal totalBoxes=new BigDecimal(0);//总箱数
+		BigDecimal totalNetWeight=new BigDecimal(0);//总净重
+		BigDecimal totalGrossWeight=new BigDecimal(0);//总毛重
+		BigDecimal totalVolume=new BigDecimal(0);//总体积
+		BigDecimal totalPrice=new BigDecimal(0);//总价
+		for (SyPreAssembledPackingListItem item : items){
+			List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
+			BigDecimal total=item.getTotal();//总件数
+			BigDecimal piecesBox=item.getPiecesBox();//箱/件数
+			totalBoxes=totalBoxes.add(item.getBoxNumber());//箱数
+			totalNetWeight=totalNetWeight.add(item.getTotalNetWeight());//总净重
+			totalGrossWeight=totalGrossWeight.add(item.getTotalGrossWeight());//总毛重
+			totalVolume=totalVolume.add(item.getTotalVolume());//总体积
+			totalPrice=totalPrice.add(item.getTotalPrice());//总价
+			//item.setSyPreAssembledPackingListId(syPreAssembledPackingList.getId());//获取主表id
+			item.setDelFlag("0");//默认为未删除
+			for (SizeTable size : sizes){
+				BigDecimal quantity=total.divide(piecesBox,4,BigDecimal.ROUND_HALF_UP) ;//总件数除以箱/件数
+				quantity=quantity.multiply(new BigDecimal(size.getProportion()));//乘以比例可获得
+				item.setTotal(quantity);//该尺码件数
+				item.setSize(size.getSize());//获取尺码信息
+				//item.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
+				item.setSort(size.getNum());//序号
+				item.setId(size.getItemId());//从尺码表中获取到id
+				// 获取到子表id
+				String syDeclarationElementsItemId=syPreAssembledPackingListItemMapper.selectById(item.getId()).getSyDeclarationElementsItemId();
+				item.setSyDeclarationElementsItemId(syDeclarationElementsItemId);
+				int row=syPreAssembledPackingListItemMapper.updateById(item);//如果没修改成功就是新增数据
+				if(row==0){//如果为0就添加数据
+					item.setSyPreAssembledPackingListId(syPreAssembledPackingList.getId());
+					syPreAssembledPackingListItemMapper.insert(item);
+					System.out.println("添加");
+				}else{
+					System.out.println("修改");
+				}
+				System.out.println("尺码大小:\t"+item.getSize());
+				System.out.println("尺码件数:\t"+item.getTotal());
+				System.out.println("尺码比例:\t"+size.getProportion());
+				System.out.println("预装箱单主表id\t"+syPreAssembledPackingList.getId());
+				System.out.println("发育明细主表id\t"+item.getSyDeclarationElementsId());
+				System.out.println("发运明细子表id\t"+item.getSyDeclarationElementsItemId());
+				System.out.println("预装箱单子表id为\t"+item.getId());
+				System.out.println("原子表id为\t"+size.getItemId());
+				System.out.println("返回消息为:"+row+"\t0为新增,1为修改\n");
+			}
+		}
+		syPreAssembledPackingList.setTotalBoxes(totalBoxes);
+		syPreAssembledPackingList.setTotalNetWeight(totalNetWeight);
+		syPreAssembledPackingList.setTotalGrossWeight(totalGrossWeight);
+		syPreAssembledPackingList.setTotalVolume(totalVolume);
+		syPreAssembledPackingList.setTotalPrice(totalPrice);
+		syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);
+		return syPreAssembledPackingList;
+	}
+
 	@Override
 	@Transactional
 	public Integer delMain(String id) {
@@ -141,14 +281,23 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 
 	@Override
 	public IPage<SyShippingDetailsVo> queryShippingDetails(IPage<SyShippingDetailsVo> page, QueryWrapper<SyShippingDetailsVo> queryWrapper) {
-		return syShippingDetailsMapper.queryShippingDetails(page,queryWrapper);//查询发运明细
+		return syPreAssembledPackingListMapper.queryShippingDetails(page,queryWrapper);//查询发运明细
 	}
 
 	@Override
 	public SyPreAssembledPackingList queryPageList3(String id) {
-		SyPreAssembledPackingList syPreAssembledPackingList=syPreAssembledPackingListMapper.selectSyShippingDetailsData(id);
-		List<SyPreAssembledPackingListItem> list=syPreAssembledPackingListItemMapper.selectSyShippingDetailsItemData(id);
-		if(list.size()>0)//如果list有数据就添加
+		//SyPreAssembledPackingList syPreAssembledPackingList=syPreAssembledPackingListMapper.selectSyShippingDetailsData(id.split(","));
+		SyPreAssembledPackingList syPreAssembledPackingList=new SyPreAssembledPackingList();
+		List<SyPreAssembledPackingListItem> list=syPreAssembledPackingListItemMapper.selectSyShippingDetailsItemData(id.split(","));
+		for(SyPreAssembledPackingListItem item :list){
+			List<SizeTable> sizes=syPreAssembledPackingListItemMapper.querySize(item.getSyDeclarationElementsId(),item.getColour());//获取尺码信息
+			int row=0;
+			for (SizeTable size : sizes){
+				size.setNum(++row);
+			}
+			item.setSizeTables(sizes);
+		}
+		syPreAssembledPackingList.setSizeTables(syPreAssembledPackingListItemMapper.querySizes(id.split(",")));//获取所有尺码信息
 		syPreAssembledPackingList.setSyPreAssembledPackingListItemList(list);
 		return syPreAssembledPackingList;
 	}
@@ -160,7 +309,19 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 
 	@Override
 	public SyPreAssembledPackingList queryById(QueryWrapper<SyPreAssembledPackingList> queryWrapper) {
-		return syPreAssembledPackingListMapper.selectOne(queryWrapper);
+		SyPreAssembledPackingList syPreAssembledPackingList=syPreAssembledPackingListMapper.selectOne(queryWrapper);
+		if(syPreAssembledPackingList!=null&&syPreAssembledPackingList.getId()!=null)
+		syPreAssembledPackingList.setSizeTables(syPreAssembledPackingListItemMapper.querySizes2(syPreAssembledPackingList.getId()));
+		return syPreAssembledPackingList;
+	}
+
+	@Override
+	public PackingHeaderVo pushData(String id) {
+		PackingHeaderVo vo=syPreAssembledPackingListMapper.pushData(id);
+		List<PackingLineVo> packingLineVoList =syPreAssembledPackingListItemMapper.pushData(id);
+		if(packingLineVoList.size()>0)
+		vo.setLines(packingLineVoList);
+		return vo;
 	}
 
 }

+ 28 - 28
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/vo/SyPreAssembledPackingListPage.java

@@ -25,89 +25,89 @@ public class SyPreAssembledPackingListPage {
 	/**主键id*/
 	private String id;
 	/**发运明细主表id*/
-  	@Excel(name = "发运明细主表id", width = 15)
+  	//@Excel(name = "发运明细主表id", width = 15)
 	private String syDeclarationElementsId;
 	/**订单号*/
-  	@Excel(name = "订单号", width = 15)
+  	@Excel(name="订单号", width = 15,needMerge = true,groupName = "主表信息")
 	private String orderNumber;
 	/**款号*/
-  	@Excel(name = "款号", width = 15)
+  	@Excel(name = "款号", width = 15,needMerge = true,groupName = "主表信息")
 	private String itemNumber;
 	/**品名*/
-  	@Excel(name = "品名", width = 15)
+  	@Excel(name = "品名", width = 15,needMerge = true,groupName = "主表信息")
 	private String productName;
 	/**尺码范围*/
-  	@Excel(name = "尺码范围", width = 15)
+  	@Excel(name = "尺码范围", width = 15,needMerge = true,groupName = "主表信息")
 	private String sizeRange;
 	/**客户*/
-  	@Excel(name = "客户", width = 15)
+  	@Excel(name = "客户", width = 15,needMerge = true,groupName = "主表信息")
 	private String customer;
 	/**集装箱代号*/
-  	@Excel(name = "集装箱代号", width = 15)
+  	//@Excel(name = "集装箱代号", width = 15)
 	private String containerCode;
 	/**集装箱号*/
-  	@Excel(name = "集装箱号", width = 15)
+  	//@Excel(name = "集装箱号", width = 15)
 	private String containerNumber;
 	/**u8备注*/
-  	@Excel(name = "u8备注", width = 15)
+  	//@Excel(name = "u8备注", width = 15)
 	private Object u8Remarks;
 	/**成衣工厂*/
-  	@Excel(name = "成衣工厂", width = 15)
+  	//@Excel(name = "成衣工厂", width = 15)
 	private String garmentFactory;
 	/**总箱数*/
-  	@Excel(name = "总箱数", width = 15)
+  	//@Excel(name = "总箱数", width = 15)
 	private java.math.BigDecimal totalBoxes;
 	/**总净重*/
-  	@Excel(name = "总净重", width = 15)
+  	//@Excel(name = "总净重", width = 15)
 	private java.math.BigDecimal totalNetWeight;
 	/**总毛重*/
-  	@Excel(name = "总毛重", width = 15)
+  	//@Excel(name = "总毛重", width = 15)
 	private java.math.BigDecimal totalGrossWeight;
 	/**总体积*/
-  	@Excel(name = "总体积", width = 15)
+  	//@Excel(name = "总体积", width = 15)
 	private java.math.BigDecimal totalVolume;
 	/**总价*/
-  	@Excel(name = "总价", width = 15)
+  	//@Excel(name = "总价", width = 15)
 	private java.math.BigDecimal totalPrice;
 	/**预托书号*/
-  	@Excel(name = "预托书号", width = 15)
+  	//@Excel(name = "预托书号", width = 15)
 	private String depositaryReceiptNo;
 	/**推送状态0未推送1推送成功2推送失败*/
-  	@Excel(name = "推送状态0未推送1推送成功2推送失败", width = 15)
+  	//@Excel(name = "推送状态0未推送1推送成功2推送失败", width = 15)
 	private String pushStatus;
 	/**单据装填0未提交1已提交*/
-  	@Excel(name = "单据装填0未提交1已提交", width = 15)
+  	//@Excel(name = "单据装填0未提交1已提交", width = 15)
 	private String status;
 	/**创建人*/
-  	@Excel(name = "创建人", width = 15)
+  	//@Excel(name = "创建人", width = 15)
 	private String createBy;
 	/**创建日期*/
-  	@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+  	//@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
   	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	private Date createTime;
 	/**更新人*/
-  	@Excel(name = "更新人", width = 15)
+  	//@Excel(name = "更新人", width = 15)
 	private String updateBy;
 	/**更新日期*/
-  	@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+  	//@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
   	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 	private Date updateTime;
 	/**组织*/
-  	@Excel(name = "组织", width = 15)
+  	//@Excel(name = "组织", width = 15)
 	private String pkOrg;
 	/**删除状态*/
-  	@Excel(name = "删除状态", width = 15)
+  	//@Excel(name = "删除状态", width = 15)
 	private String delFlag;
 	/**备注*/
-  	@Excel(name = "备注", width = 15)
+	@Excel(name = "备注", width = 15,groupName = "主表信息")
 	private Object memo;
 
 	/**预发货日期*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
 	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	@Excel(name = "预发货日期", width = 20)
+	//@Excel(name = "预发货日期", width = 20)
 	private Date preDeliveryDate;
 /*	*//**小PO*//*
 	@Excel(name = "小PO", width = 20)
@@ -125,12 +125,12 @@ public class SyPreAssembledPackingListPage {
 	@Excel(name = "采购/委外订单号", width = 20)
 	private String spurOrSubOrder;*/
 	/**订单类型*/
-	@Excel(name = "订单类型", width = 20)
+	//@Excel(name = "订单类型", width = 20)
 	private String orderType;
 /*	*//**工厂单价*//*
 	@Excel(name = "工厂单价", width = 20)
 	private java.math.BigDecimal factoryUnitPrice;
-	*//**数量(按合并规则累计)*//*
+	*//**数量(按合并规则累计)*//*http://localhost:8080/jeecg-boot/spapl/syPreAssembledPackingList/exportXls?id=1534834138052374530
 	@Excel(name = "数量(按合并规则累计)", width = 20)
 	private java.math.BigDecimal totalQuantity;
 	*/