Browse Source

修改预订单

liguosong 3 years ago
parent
commit
68af9df070

+ 2 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/QrPackageBookingOrder.java

@@ -63,6 +63,7 @@ public class QrPackageBookingOrder {
 	@Schema(name = "是否删除")
     private Integer isDelete;
 
-
+    @Schema(name = "sap订单号")
+	private String sapOrderNo;
 
 }

+ 39 - 22
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageBookingOrderServiceImpl.java

@@ -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);
     }
 

+ 3 - 1
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrPackageBookingOrderMapper.xml

@@ -16,11 +16,12 @@
         <result column="UPDATE_TIME" property="updateTime" />
         <result column="UPDATE_BY" property="updateBy" />
         <result column="IS_DELETE" property="isDelete" />
+        <result column="SAP_ORDER_NO" property="sapOrderNo" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        ID, BOOKING_ORDER, MATERIAL_NAME, PURCHASE_COUNT, QR_TYPE, FACTORY_COVER_ID, DESCRIPTION, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE
+        ID, BOOKING_ORDER, MATERIAL_NAME, PURCHASE_COUNT, QR_TYPE, FACTORY_COVER_ID, DESCRIPTION, CREATE_TIME, CREATE_BY, UPDATE_TIME, UPDATE_BY, IS_DELETE,SAP_ORDER_NO
     </sql>
     <!--    查看预订单详情         -->
     <select id="queryOrderFormDetail" resultType="com.abi.qms.platform.dao.vo.result.QueryOrderFormDetailVO">
@@ -94,6 +95,7 @@
             qr_package_booking_order AS booking_order
             LEFT JOIN base_factory AS factory ON booking_order.factory_cover_id = factory.id
         where booking_order.is_delete = 0
+            and booking_order.SAP_ORDER_NO is null
     </select>
 
 </mapper>