From 759061a76deead8a2469adfcd9d1abd2ea807dbf Mon Sep 17 00:00:00 2001
From: youjie <272855983@qq.com>
Date: Tue, 13 Dec 2022 19:01:31 +0800
Subject: [PATCH] 更新入库单数量、更新出库单数量

---
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java |  6 ++++--
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java                      | 21 ++++++++++++++++++++-
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java                           |  4 ++++
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java                   | 14 +++++++++++---
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java                   | 25 +++++++++++++++++++++++++
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java                   | 24 +++++++++++++++++++++++-
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java                        |  2 ++
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java                        |  1 +
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java                | 21 ++++++++++++++++++---
 jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java                | 29 ++++++++++++++++++++++++-----
 10 files changed, 132 insertions(+), 15 deletions(-)

diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
index 229b23a..11a09cc 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
@@ -292,10 +292,12 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
 			return false;
 		}
 		int receiptContainerStatus = receiptContainerHeader.getStatus();
-		if(receiptContainerStatus == QuantityConstant.RECEIPT_CONTAINER_TASK) {
-			throw new ServiceException("取消入库任务时, ");
+		if(receiptContainerStatus != QuantityConstant.RECEIPT_CONTAINER_TASK) {
+			throw new ServiceException("取消入库任务时, 任务状态不为生成任务状态");
 		}
 		receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_BUILD);
+		// 取消任务后,不指定组盘库位
+		receiptContainerHeader.setToLocationCode(QuantityConstant.EMPTY_STRING);
 		boolean success = receiptContainerHeaderService.updateById(receiptContainerHeader);
 		if(!success) {
 			throw new ServiceException("取消入库任务时, 更新入库组盘头失败");
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
index f0f2f92..e76e830 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.wms.receipt.receiptHeader.controller;
 
+import com.aliyun.oss.ServiceException;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -219,7 +220,25 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
 	@ApiOperation(value="入库单详情-通过id删除", notes="入库单详情-通过id删除")
 	@DeleteMapping(value = "/deleteReceiptDetail")
 	public Result<String> deleteReceiptDetail(@RequestParam(name="id",required=true) String id) {
-		receiptDetailService.removeById(id);
+		ReceiptDetail receiptDetail = receiptDetailService.getById(id);
+		if(receiptDetail == null) {
+			return Result.error("删除失败, 没有找到入库单详情");
+		}
+		ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId());
+		if(receiptHeader == null) {
+			return Result.error("删除失败, 没有找到入库单");
+		}
+		if(receiptHeader.getFirstStatus().intValue() != QuantityConstant.RECEIPT_HEADER_BUILD) {
+			return Result.error("删除失败, 入库单必须是新建状态才能删除详情");
+		}
+		boolean success = receiptDetailService.removeById(id);
+		if(!success) {
+			throw new ServiceException("删除详情失败");
+		}
+		success = receiptHeaderService.updateReceiptHeader(receiptDetail.getReceiptId());
+		if(!success) {
+			throw new ServiceException("更新入库单头数量失败");
+		}
 		return Result.OK("删除成功!");
 	}
 
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java
index 4622705..4fe4d70 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/IReceiptHeaderService.java
@@ -31,4 +31,8 @@ public interface IReceiptHeaderService extends IService<ReceiptHeader> {
 	public String createCode(String receiptType);
 
 	public boolean updateReceiptHeaderStatus(Integer id);
+
+	public boolean updateReceiptHeader(Integer id);
+
+
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java
index 8b59f82..ec78149 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.wms.receipt.receiptHeader.service.impl;
 
+import com.aliyun.oss.ServiceException;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.wms.config.material.entity.Material;
 import org.jeecg.modules.wms.config.material.service.IMaterialService;
@@ -47,6 +48,9 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
 		if(receiptHeader == null) {
 			return Result.error("添加失败,没有找到入库单头");
 		}
+		if(receiptHeader.getFirstStatus().intValue() != QuantityConstant.RECEIPT_HEADER_BUILD) {
+			return Result.error("添加失败,入库单非创建状态不能新增详情");
+		}
 		String receiptCode = receiptHeader.getCode();
 		if(StringUtils.isEmpty(receiptCode)) {
 			return Result.error("添加失败,没有找到入库单编码");
@@ -68,9 +72,13 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R
 		receiptDetail.setMaterialSpec(materialSpec);
 		receiptDetail.setMaterialUnit(materialUnit);
 		receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
-		boolean result = receiptDetailService.save(receiptDetail);
-		if(!result) {
-			return Result.error("添加失败, 保存入库单详情的时候报错");
+		boolean success = receiptDetailService.save(receiptDetail);
+		if(!success) {
+			throw new ServiceException("添加失败, 保存入库单详情的时候报错");
+		}
+		success = receiptHeaderService.updateReceiptHeader(receiptDetail.getReceiptId());
+		if(!success) {
+			throw new ServiceException("添加失败, 保存入库单详失败");
 		}
 		return Result.OK("添加成功!");
 	}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
index df13a30..862cf9e 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java
@@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -166,4 +167,28 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R
 		boolean result = receiptHeaderService.updateById(receiptHeader);
 		return result;
 	}
+
+	@Override
+	public boolean updateReceiptHeader(Integer id) {
+		LambdaQueryWrapper<ReceiptDetail> receiptDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+		receiptDetailLambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id);
+		List<ReceiptDetail> receiptDetailList = receiptDetailService.list(receiptDetailLambdaQueryWrapper);
+		ReceiptHeader receiptHeader = receiptHeaderService.getById(id);
+		if(receiptHeader == null) {
+			return false;
+		}
+		BigDecimal totalQty = new BigDecimal(0);
+		int totalLines = 0;
+		for(ReceiptDetail receiptDetail : receiptDetailList) {
+			totalLines++;
+			totalQty = totalQty.add(receiptDetail.getQty());
+		}
+		receiptHeader.setTotalqty(totalQty);
+		receiptHeader.setTotallines(totalLines);
+		if (!receiptHeaderService.updateById(receiptHeader)){
+			return false;
+		}
+		return true;
+	}
+
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
index 5495410..877c8eb 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.wms.shipment.shipmentHeader.controller;
 
+import com.aliyun.oss.ServiceException;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -8,11 +9,14 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
 import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail;
 import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader;
 import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService;
 import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentHeaderService;
 import org.jeecg.utils.StringUtils;
+import org.jeecg.utils.constant.QuantityConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
@@ -206,7 +210,25 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
 	@ApiOperation(value="出库单详情-通过id删除", notes="出库单详情-通过id删除")
 	@DeleteMapping(value = "/deleteShipmentDetail")
 	public Result<String> deleteShipmentDetail(@RequestParam(name="id",required=true) String id) {
-		shipmentDetailService.removeById(id);
+		ShipmentDetail shipmentDetail = shipmentDetailService.getById(id);
+		if(shipmentDetail == null) {
+			return Result.error("删除失败, 没有找到出库单详情");
+		}
+		ShipmentHeader shipmentHeader = shipmentHeaderService.getById(shipmentDetail.getShipmentId());
+		if(shipmentHeader == null) {
+			return Result.error("删除失败, 没有找到出库单");
+		}
+		if(shipmentHeader.getFirstStatus().intValue() != QuantityConstant.SHIPMENT_HEADER_BUILD) {
+			return Result.error("删除失败, 出库单必须是新建状态才能删除详情");
+		}
+		boolean success = shipmentDetailService.removeById(id);
+		if(!success) {
+			throw new ServiceException("删除详情失败");
+		}
+		success = shipmentHeaderService.updateShipmentHeader(shipmentDetail.getShipmentId());
+		if(!success) {
+			throw new ServiceException("更新出库单头数量失败");
+		}
 		return Result.OK("删除成功!");
 	}
 
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java
index cab9841..fbc1866 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentDetailService.java
@@ -18,4 +18,6 @@ public interface IShipmentDetailService extends IService<ShipmentDetail> {
 	public List<ShipmentDetail> selectByMainId(String mainId);
 
 	public Result saveShipmentDetail(ShipmentDetail shipmentDetail);
+
+	public List<ShipmentDetail> getShipmentDetailListByShipmentId(Integer id);
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java
index bcc8a0b..bcfadfe 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/IShipmentHeaderService.java
@@ -35,4 +35,5 @@ public interface IShipmentHeaderService extends IService<ShipmentHeader> {
 
 	public boolean updateShipmentHeaderStatus(Integer id);
 
+	public boolean updateShipmentHeader(Integer id);
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
index 4988741..b75099b 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentDetailServiceImpl.java
@@ -1,5 +1,8 @@
 package org.jeecg.modules.wms.shipment.shipmentHeader.service.impl;
 
+import com.aliyun.oss.ServiceException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.wms.config.material.entity.Material;
 import org.jeecg.modules.wms.config.material.service.IMaterialService;
@@ -69,10 +72,22 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper,
 		shipmentDetail.setMaterialSpec(materialSpec);
 		shipmentDetail.setMaterialUnit(materialUnit);
 		shipmentDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD);
-		boolean result = shipmentDetailService.save(shipmentDetail);
-		if(!result) {
-			return Result.error("添加失败, 保存出库单详情的时候报错");
+		boolean success = shipmentDetailService.save(shipmentDetail);
+		if(!success) {
+			throw new ServiceException("添加失败, 保存出库单详情的时候报错");
+		}
+		success = shipmentHeaderService.updateShipmentHeader(shipmentHeader.getId());
+		if(!success) {
+			throw new ServiceException("添加失败, 更新出库单失败");
 		}
 		return Result.OK("添加成功!");
 	}
+
+	@Override
+	public List<ShipmentDetail> getShipmentDetailListByShipmentId(Integer id) {
+		LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+		shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getShipmentId, id);
+		List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(shipmentDetailLambdaQueryWrapper);
+		return shipmentDetailList;
+	}
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
index 5040145..8abfab6 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
@@ -152,11 +152,9 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
 	}
 
 	@Override
-	public boolean updateShipmentHeaderStatus(Integer id) {
-		LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
-		shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getShipmentId, id);
-		List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(shipmentDetailLambdaQueryWrapper);
-		ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id);
+	public boolean updateShipmentHeaderStatus(Integer shipmentId) {
+		List<ShipmentDetail> shipmentDetailList = shipmentDetailService.getShipmentDetailListByShipmentId(shipmentId);
+		ShipmentHeader shipmentHeader = shipmentHeaderService.getById(shipmentId);
 		if(shipmentHeader == null) {
 			return false;
 		}
@@ -185,4 +183,25 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
 		return result;
 	}
 
+	@Override
+	public boolean updateShipmentHeader(Integer shipmentId) {
+		List<ShipmentDetail> shipmentDetailList = shipmentDetailService.getShipmentDetailListByShipmentId(shipmentId);
+		ShipmentHeader shipmentHeader = shipmentHeaderService.getById(shipmentId);
+		if(shipmentHeader == null) {
+			return false;
+		}
+		BigDecimal totalQty = new BigDecimal(0);
+		int totalLines = 0;
+		for(ShipmentDetail shipmentDetail : shipmentDetailList) {
+			totalLines++;
+			totalQty = totalQty.add(shipmentDetail.getQty());
+		}
+		shipmentHeader.setTotalQty(totalQty);
+		shipmentHeader.setTotalLines(totalLines);
+		if (!shipmentHeaderService.updateById(shipmentHeader)){
+			return false;
+		}
+		return true;
+	}
+
 }
--
libgit2 0.22.2