|
@@ -1,5 +1,6 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.abi.qms.platform.dao.entity.*;
|
|
|
import com.abi.qms.platform.dao.enums.FactoryTypeEnum;
|
|
|
import com.abi.qms.platform.dao.mapper.*;
|
|
@@ -46,6 +47,11 @@ public class QrPackageBookingOrderServiceImpl implements QrPackageBookingOrderSe
|
|
|
@Autowired
|
|
|
private MaterialService materialService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BaseMaterialMapper baseMaterialMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FactoryService factoryService;
|
|
|
/**
|
|
|
* 新增修改预订单
|
|
|
* @author ludashi
|
|
@@ -144,43 +150,53 @@ public class QrPackageBookingOrderServiceImpl implements QrPackageBookingOrderSe
|
|
|
* @param associateSapOrderReq
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void associateSapOrder(AssociateSapOrderReq associateSapOrderReq) {
|
|
|
- //1根据物料code查询id保存
|
|
|
- BaseMaterial baseMaterials = materialService.getMaterialByCode(associateSapOrderReq.getMaterialCode());
|
|
|
- if(ObjectUtils.isEmpty(baseMaterials)){
|
|
|
- new BusinessException("该SAP订单号内未找到需要打码的物料,请维护物料数据后重试");
|
|
|
+ //查询码包信息
|
|
|
+ QueryWrapper<QrPackage> packageQuery = new QueryWrapper<>();
|
|
|
+ packageQuery.eq("booking_order",associateSapOrderReq.getBookingOrder());
|
|
|
+ QrPackage qrPackage = qrPackageMapper.selectOne(packageQuery);
|
|
|
+ if(ObjectUtils.isEmpty(qrPackage)){
|
|
|
+ throw new BusinessException("该笔预订单未关联码包,不允许直接关联SAP订单号");
|
|
|
}
|
|
|
+ //1根据物料id查询物料code保存
|
|
|
+ BaseMaterial baseMaterials = baseMaterialMapper.selectById(associateSapOrderReq.getMaterialCode());
|
|
|
+ BaseMaterial materialByCode = materialService.getMaterialByCode(baseMaterials.getMaterialCode());
|
|
|
+ AssertUtil.isNull(materialByCode,"该SAP订单号内未找到需要打码的物料,请维护物料数据后重试");
|
|
|
//关联SAP订单 校验
|
|
|
QueryWrapper<QrPackageSapOrderItem> qrPackageSapOrderItem = new QueryWrapper<>();
|
|
|
qrPackageSapOrderItem.eq("sap_order_no",associateSapOrderReq.getSapOrder());
|
|
|
qrPackageSapOrderItem.eq("sap_material_id",baseMaterials.getMaterialCode());
|
|
|
QrPackageSapOrderItem queryQrPackageSapOrderItem = qrPackageSapOrderItemMapper.selectOne(qrPackageSapOrderItem);
|
|
|
if(ObjectUtils.isEmpty(queryQrPackageSapOrderItem)){
|
|
|
- new BusinessException("关联的SAP订单不存在。");
|
|
|
+ new BusinessException("该SAP订单号内未找到需要打码的物料,请维护物料数据后重试");
|
|
|
}
|
|
|
- //2修改预订单名称
|
|
|
QrPackageBookingOrder qrPackageBookingOrder = qrPackageBookingOrderMapper.selectById(associateSapOrderReq.getId());
|
|
|
- qrPackageBookingOrder.setMaterialName(baseMaterials.getMaterialName());
|
|
|
-
|
|
|
- //修改码包
|
|
|
- QueryWrapper<QrPackage> packageQuery = new QueryWrapper<>();
|
|
|
- packageQuery.eq("booking_order",associateSapOrderReq.getBookingOrder());
|
|
|
- QrPackage qrPackage = qrPackageMapper.selectOne(packageQuery);
|
|
|
- qrPackage.setSapOrderNo(associateSapOrderReq.getSapOrder());
|
|
|
- qrPackage.setMaterialId(baseMaterials.getId());
|
|
|
- qrPackage.setMaterialCode(baseMaterials.getMaterialCode());
|
|
|
- if(!queryQrPackageSapOrderItem.getSapCoverFactoryId().equals(qrPackageBookingOrder.getFactoryCoverId().toString())){
|
|
|
+ //查询包材厂Code
|
|
|
+ BaseFactory factory = baseFactoryMapper.selectById(qrPackageBookingOrder.getFactoryCoverId());
|
|
|
+ AssertUtil.isNull(factory,"包材厂信息不存在");
|
|
|
+ //判断是否和sap订单信息一致
|
|
|
+ if(!queryQrPackageSapOrderItem.getSapCoverFactoryId().equals(factory.getFactoryCode())){
|
|
|
new BusinessException("关联的SAP订单内包材厂信息与原预订单不符,请确认后重试。");
|
|
|
}
|
|
|
// 物料类型 3-罐子 4-瓶盖 5-纸板箱
|
|
|
- BaseMaterial materialByCode = materialService.getMaterialByCode(queryQrPackageSapOrderItem.getSapMaterialId());
|
|
|
- if(ObjectUtils.isEmpty(materialByCode)){
|
|
|
- new BusinessException("关联的SAP订单内物料查询为空,请确认后重试。");
|
|
|
- }
|
|
|
if(!materialByCode.getMaterialType().equals(baseMaterials.getMaterialType())){
|
|
|
new BusinessException("关联的SAP订单内物料类型与原预订单码类型不符,请确认后重试。");
|
|
|
}
|
|
|
+ QueryWrapper<QrPackage> packageQueryList = new QueryWrapper<>();
|
|
|
+ packageQueryList.eq("booking_order",associateSapOrderReq.getBookingOrder());
|
|
|
+ packageQueryList.eq("material_code",baseMaterials.getMaterialCode());
|
|
|
+ Integer integer = qrPackageMapper.selectCount(packageQueryList);
|
|
|
+ if (integer>0) {
|
|
|
+ throw new BusinessException("该SAP订单和物料已存在,不允许重复!");
|
|
|
+ }
|
|
|
+ //1修改预订单名称
|
|
|
+ qrPackageBookingOrder.setMaterialName(baseMaterials.getMaterialName());
|
|
|
qrPackageBookingOrderMapper.updateById(qrPackageBookingOrder);
|
|
|
+ //2修改码包
|
|
|
+ qrPackage.setSapOrderNo(associateSapOrderReq.getSapOrder());
|
|
|
+ qrPackage.setMaterialId(baseMaterials.getId());
|
|
|
+ qrPackage.setMaterialCode(baseMaterials.getMaterialCode());
|
|
|
qrPackageMapper.updateById(qrPackage);
|
|
|
}
|
|
|
|