|
@@ -152,51 +152,68 @@ public class QrPackageBookingOrderServiceImpl implements QrPackageBookingOrderSe
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void associateSapOrder(AssociateSapOrderReq associateSapOrderReq) {
|
|
|
- //查询码包信息
|
|
|
+ /**
|
|
|
+ * 处理逻辑
|
|
|
+ * 1.查询是否关联码包
|
|
|
+ * 2.根据sap订单号和sap物料code查询相关订单信息
|
|
|
+ * 3.查询该笔预订单相关信息
|
|
|
+ * 4.根据物料code查询物料信息
|
|
|
+ * 5.根据预订单中录入的物料名称查询物料表,获取物料信息
|
|
|
+ * 6.根据预订单中包材厂id查询包材厂信息
|
|
|
+ * 7.判断预订单中包材厂信息和sap订单中包材厂信息是否一致
|
|
|
+ * 8.判断预订单中物料类型和sap订单中物料类型是否一致
|
|
|
+ * 9.校验是否重复关联(一个sap订单号+sap物料号只能关联一笔预订单)
|
|
|
+ * 修改表信息包存数据
|
|
|
+ */
|
|
|
+ //1.查询码包信息
|
|
|
QueryWrapper<QrPackage> packageQuery = new QueryWrapper<>();
|
|
|
packageQuery.eq("booking_order",associateSapOrderReq.getBookingOrder());
|
|
|
QrPackage qrPackage = qrPackageMapper.selectOne(packageQuery);
|
|
|
if(ObjectUtils.isEmpty(qrPackage)){
|
|
|
- throw new BusinessException("该笔预订单未关联码包,不允许直接关联SAP订单号");
|
|
|
+ throw new BusinessException("码包未生成,不允许直接关联SAP订单号");
|
|
|
}
|
|
|
- //1根据物料id查询物料code保存
|
|
|
- BaseMaterial baseMaterials = baseMaterialMapper.selectById(associateSapOrderReq.getMaterialCode());
|
|
|
- BaseMaterial materialByCode = materialService.getMaterialByCode(baseMaterials.getMaterialCode());
|
|
|
- AssertUtil.isNull(materialByCode,"该SAP订单号内未找到需要打码的物料,请维护物料数据后重试");
|
|
|
- //关联SAP订单 校验
|
|
|
+ //2。根据SAP订单编号,SAP物料code查询sap订单表中数据
|
|
|
QueryWrapper<QrPackageSapOrderItem> qrPackageSapOrderItem = new QueryWrapper<>();
|
|
|
qrPackageSapOrderItem.eq("sap_order_no",associateSapOrderReq.getSapOrder());
|
|
|
- qrPackageSapOrderItem.eq("sap_material_id",baseMaterials.getMaterialCode());
|
|
|
+ qrPackageSapOrderItem.eq("sap_material_id",associateSapOrderReq.getMaterialCode());
|
|
|
QrPackageSapOrderItem queryQrPackageSapOrderItem = qrPackageSapOrderItemMapper.selectOne(qrPackageSapOrderItem);
|
|
|
- if(ObjectUtils.isEmpty(queryQrPackageSapOrderItem)){
|
|
|
- new BusinessException("该SAP订单号内未找到需要打码的物料,请维护物料数据后重试");
|
|
|
- }
|
|
|
+ //3.查询该笔预订单相关数据
|
|
|
QrPackageBookingOrder qrPackageBookingOrder = qrPackageBookingOrderMapper.selectById(associateSapOrderReq.getId());
|
|
|
- //查询包材厂Code
|
|
|
+ //4.根据物料code查询物料信息
|
|
|
+ QueryWrapper<BaseMaterial> baseMaterials = new QueryWrapper<>();
|
|
|
+ baseMaterials.eq("material_code",associateSapOrderReq.getMaterialCode());
|
|
|
+ BaseMaterial baseMaterial = baseMaterialMapper.selectOne(baseMaterials);
|
|
|
+ //5.根据物料名称查询物料信息
|
|
|
+ QueryWrapper<BaseMaterial> baseMaterialsName = new QueryWrapper<>();
|
|
|
+ baseMaterialsName.eq("material_name",qrPackageBookingOrder.getMaterialName());
|
|
|
+ BaseMaterial baseMaterialName = baseMaterialMapper.selectOne(baseMaterials);
|
|
|
+ AssertUtil.isNull(baseMaterialName,"预订单中物料信息不存在");
|
|
|
+ //6.根据预订单中包材厂id查询包材厂信息
|
|
|
BaseFactory factory = baseFactoryMapper.selectById(qrPackageBookingOrder.getFactoryCoverId());
|
|
|
- AssertUtil.isNull(factory,"包材厂信息不存在");
|
|
|
- //判断是否和sap订单信息一致
|
|
|
+ //7判断是否和sap订单信息一致
|
|
|
if(!queryQrPackageSapOrderItem.getSapCoverFactoryId().equals(factory.getFactoryCode())){
|
|
|
new BusinessException("关联的SAP订单内包材厂信息与原预订单不符,请确认后重试。");
|
|
|
}
|
|
|
- // 物料类型 3-罐子 4-瓶盖 5-纸板箱
|
|
|
- if(!materialByCode.getMaterialType().equals(baseMaterials.getMaterialType())){
|
|
|
+ // 8物料类型 3-罐子 4-瓶盖 5-纸板箱
|
|
|
+ if(!baseMaterial.getMaterialType().equals(baseMaterialName.getMaterialType())){
|
|
|
new BusinessException("关联的SAP订单内物料类型与原预订单码类型不符,请确认后重试。");
|
|
|
}
|
|
|
+ //9.校验是否重复关联
|
|
|
QueryWrapper<QrPackage> packageQueryList = new QueryWrapper<>();
|
|
|
packageQueryList.eq("sap_order_no",associateSapOrderReq.getSapOrder());
|
|
|
- packageQueryList.eq("material_code",baseMaterials.getMaterialCode());
|
|
|
+ packageQueryList.eq("material_code",associateSapOrderReq.getMaterialCode());
|
|
|
Integer integer = qrPackageMapper.selectCount(packageQueryList);
|
|
|
if (integer>0) {
|
|
|
throw new BusinessException("该SAP订单和物料已存在,不允许重复!");
|
|
|
}
|
|
|
- //1修改预订单名称
|
|
|
- qrPackageBookingOrder.setMaterialName(baseMaterials.getMaterialName());
|
|
|
+ //修改预订单名称
|
|
|
+ qrPackageBookingOrder.setMaterialName(baseMaterial.getMaterialName());
|
|
|
+ qrPackageBookingOrder.setSapOrderNo(associateSapOrderReq.getSapOrder());
|
|
|
qrPackageBookingOrderMapper.updateById(qrPackageBookingOrder);
|
|
|
- //2修改码包
|
|
|
+ //修改码包
|
|
|
qrPackage.setSapOrderNo(associateSapOrderReq.getSapOrder());
|
|
|
- qrPackage.setMaterialId(baseMaterials.getId());
|
|
|
- qrPackage.setMaterialCode(baseMaterials.getMaterialCode());
|
|
|
+ qrPackage.setMaterialId(baseMaterial.getId());
|
|
|
+ qrPackage.setMaterialCode(associateSapOrderReq.getMaterialCode());
|
|
|
qrPackageMapper.updateById(qrPackage);
|
|
|
}
|
|
|
|