|
@@ -7,7 +7,9 @@ import com.abi.qms.platform.dto.req.BatchImportPackageSapOrderItemReq;
|
|
|
import com.abi.qms.platform.service.QrPackageSapOrderItemService;
|
|
|
import com.abi.task.common.api.exception.BusinessException;
|
|
|
import com.abi.task.common.api.exception.ErrorCodeEnum;
|
|
|
+import com.abi.task.common.utils.IMathUtils;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -56,12 +58,9 @@ public class QrPackageSapOrderItemServiceImpl implements QrPackageSapOrderItemSe
|
|
|
|
|
|
List<BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem> sapOrderItemList = req.getBatchImportSapOrderItemList();
|
|
|
for (BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem item : sapOrderItemList) {
|
|
|
-
|
|
|
try {
|
|
|
-
|
|
|
updateQrPackageSapOrderItem(item);
|
|
|
} catch (Exception e) {
|
|
|
-
|
|
|
log.error("修改Sap订单明细数据失败",e);
|
|
|
}
|
|
|
}
|
|
@@ -83,43 +82,48 @@ public class QrPackageSapOrderItemServiceImpl implements QrPackageSapOrderItemSe
|
|
|
}
|
|
|
|
|
|
private void updateQrPackageSapOrderItem(BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem item) {
|
|
|
-
|
|
|
- //根据sap订单号和物料ID查询物料订单明细信息
|
|
|
- QrPackageSapOrderItem qrPackageSapOrderItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getSapMaterialId());
|
|
|
-
|
|
|
- QrPackageSapOrderItem sapOrderItem = new QrPackageSapOrderItem();
|
|
|
- sapOrderItem.setSapOrderNo(item.getSapOrderNo());
|
|
|
- sapOrderItem.setSapMaterialId(item.getSapMaterialId());
|
|
|
- sapOrderItem.setSapCoverFactoryId(item.getSapCoverFactoryId());
|
|
|
- sapOrderItem.setSapBeerFactoryId(item.getSapBeerFactoryId());
|
|
|
- sapOrderItem.setSapMaterialName(item.getSapMaterialName());
|
|
|
-
|
|
|
- //判断订单信息是否存在如果不存在就新增一条数据
|
|
|
- if (ObjectUtil.isNull(qrPackageSapOrderItem)) {
|
|
|
- sapOrderItem.setPurchaseCount(item.getPurchaseCount());
|
|
|
- saveQrPackageSapOrderItem(sapOrderItem);
|
|
|
+ //新的item +数量
|
|
|
+ QrPackageSapOrderItem curItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getSapMaterialId());
|
|
|
+ if(curItem==null){
|
|
|
+ //如果没有则新增一个数量为0的
|
|
|
+ curItem = new QrPackageSapOrderItem();
|
|
|
+ curItem.setSapOrderNo(item.getSapOrderNo());
|
|
|
+ curItem.setSapMaterialId(item.getSapMaterialId());
|
|
|
+ curItem.setSapCoverFactoryId(item.getSapCoverFactoryId());
|
|
|
+ curItem.setSapBeerFactoryId(item.getSapBeerFactoryId());
|
|
|
+ curItem.setSapMaterialName(item.getSapMaterialName());
|
|
|
+ curItem.setPurchaseCount(0L);
|
|
|
+ qrPackageSapOrderItemMapper.insert(curItem);
|
|
|
}
|
|
|
-
|
|
|
- sapOrderItem.setId(qrPackageSapOrderItem.getId());
|
|
|
-
|
|
|
- //判断物料ID是否修改 如果没有修改 采购数量=(新的采购数量-老的采购数量)+当前的采购数量
|
|
|
- if (qrPackageSapOrderItem.getSapMaterialId().equals(item.getOriSapMaterialId())) {
|
|
|
- sapOrderItem.setPurchaseCount((item.getPurchaseCount() - item.getOriPurchaseCount()) + qrPackageSapOrderItem.getPurchaseCount());
|
|
|
- } else {
|
|
|
- //如果物料ID修改 采购数量等于当前采购数量减去老的采购数量再加上新的采购数量
|
|
|
- long purchaseCount = (qrPackageSapOrderItem.getPurchaseCount() - item.getOriPurchaseCount()) + item.getPurchaseCount();
|
|
|
- //如果采购数量为0就删除此订单号数据
|
|
|
- if (purchaseCount == 0) {
|
|
|
- qrPackageSapOrderItemMapper.deleteById(qrPackageSapOrderItem.getId());
|
|
|
- return;
|
|
|
- }
|
|
|
- sapOrderItem.setPurchaseCount(purchaseCount);
|
|
|
+ long afterAddCount = IMathUtils.asLong(curItem.getPurchaseCount()) + IMathUtils.asLong(item.getPurchaseCount());
|
|
|
+ curItem.setPurchaseCount(afterAddCount);
|
|
|
+ qrPackageSapOrderItemMapper.updateById(curItem);
|
|
|
+
|
|
|
+ //老的item -数量
|
|
|
+ //老的item
|
|
|
+ QrPackageSapOrderItem oriItem = curItem;
|
|
|
+ if (!item.getSapMaterialId().equals(item.getOriSapMaterialId())) {
|
|
|
+ oriItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getOriSapMaterialId());
|
|
|
+ }
|
|
|
+ long afterSubCount = IMathUtils.asLong(oriItem.getPurchaseCount()) - IMathUtils.asLong(item.getOriPurchaseCount());
|
|
|
+ oriItem.setPurchaseCount(afterSubCount);
|
|
|
+ //如果剪完后为0,直接删除,否则修改
|
|
|
+ if(afterSubCount>0){
|
|
|
+ qrPackageSapOrderItemMapper.updateById(oriItem);
|
|
|
+ }else{
|
|
|
+ qrPackageSapOrderItemMapper.deleteById(oriItem.getId());
|
|
|
}
|
|
|
- qrPackageSapOrderItemMapper.updateById(sapOrderItem);
|
|
|
+
|
|
|
+ //针对酒厂包材厂的改动,直接改订单下所有item
|
|
|
+ UpdateWrapper<QrPackageSapOrderItem> sapOrderItemUw = new UpdateWrapper<>();
|
|
|
+ sapOrderItemUw.set("sap_cover_factory_id",item.getSapCoverFactoryId());
|
|
|
+ sapOrderItemUw.set("sap_beer_factory_id",item.getSapBeerFactoryId());
|
|
|
+ sapOrderItemUw.eq("sap_order_no",item.getSapOrderNo());
|
|
|
+ qrPackageSapOrderItemMapper.update(null,sapOrderItemUw);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void saveQrPackageSapOrderItem(QrPackageSapOrderItem sapOrderItem) {
|
|
|
-
|
|
|
//采购数量
|
|
|
long newPurchaseCount = sapOrderItem.getPurchaseCount() == null ? 0 : sapOrderItem.getPurchaseCount();
|
|
|
|