Ver código fonte

修改 新增码包校验

liguosong 3 anos atrás
pai
commit
804e72b331

+ 3 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/BaseActiveMapper.java

@@ -21,9 +21,9 @@ public interface BaseActiveMapper extends BaseMapper<BaseActive> {
     IPage<ListActiveVO> listActivePage(IPage page, @Param("param") ListActiveReq param);
 
     /**
-     * 通过码包ID查询对应一个活动
-     * @param packageId 码包ID
+     * 通过物料ID查询对应一个活动
+     * @param materialId 物料ID
      * @return
      */
-    PackageActiveVO getPackageActive(@Param("packageId") Long packageId);
+    PackageActiveVO getPackageActive(@Param("materialId") Long materialId);
 }

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/SaveQrPackageReq.java

@@ -27,7 +27,7 @@ public class SaveQrPackageReq implements Serializable {
 	@ApiModelProperty("码包id")
 	private Long id;
 
-	@NotEmpty(message = "订单类型为空")
+	@NotNull(message = "订单类型为空")
 	@ApiModelProperty(value = "订单类型: 1-SAP订单 2-预订单")
 	private Integer orderType;
 

+ 3 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ValidSAPOrderNoAndMaterialReq.java

@@ -25,4 +25,7 @@ public class ValidSAPOrderNoAndMaterialReq implements Serializable{
     @ApiModelProperty("SAP单号")
     private String sapOrderNo;
 
+    @ApiModelProperty("申请数量")
+    private Long applyNumber;
+
 }

+ 22 - 22
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/GetQrPackageDetailRes.java

@@ -104,28 +104,28 @@ public class GetQrPackageDetailRes implements Serializable {
 	@ApiModelProperty(value = "修改人id")
 	private Long updateBy;
 
-	@ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
-	private String activeCode;
-
-	@ApiModelProperty("活动名称")
-	private String activeName;
-
-	@ApiModelProperty("活动域名")
-	private String activeUrl;
-
-	@ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
-	private Integer activeType;
-
-	@ApiModelProperty(value = "活动开始日期")
-	@JsonFormat(pattern = "yyyy-MM-dd")
-	private LocalDateTime beginTime;
-
-	@ApiModelProperty(value = "活动结束日期")
-	@JsonFormat(pattern = "yyyy-MM-dd")
-	private LocalDateTime endTime;
-
-	@ApiModelProperty(value = "多品牌名称")
-	private String brandNames;
+//	@ApiModelProperty(value = "活动code(即页面上的手输的活动id)")
+//	private String activeCode;
+//
+//	@ApiModelProperty("活动名称")
+//	private String activeName;
+//
+//	@ApiModelProperty("活动域名")
+//	private String activeUrl;
+//
+//	@ApiModelProperty(value = "活动类型 1-utc 2-bof 3-品质信息")
+//	private Integer activeType;
+//
+//	@ApiModelProperty(value = "活动开始日期")
+//	@JsonFormat(pattern = "yyyy-MM-dd")
+//	private LocalDateTime beginTime;
+//
+//	@ApiModelProperty(value = "活动结束日期")
+//	@JsonFormat(pattern = "yyyy-MM-dd")
+//	private LocalDateTime endTime;
+//
+//	@ApiModelProperty(value = "多品牌名称")
+//	private String brandNames;
 
 	@ApiModelProperty(value = "码包下载记录")
 	private List<QrPackageDownloadRecordVO> qrPackageDownloadRecordList;

+ 2 - 15
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ValidSAPOrderNoAndMaterialRes.java

@@ -19,19 +19,6 @@ import java.util.List;
 @ApiModel
 public class ValidSAPOrderNoAndMaterialRes implements Serializable {
 
-    @ApiModelProperty("码包bean列表")
-    private List<PackageBean> packageBeanList;
-
-    /**
-     * 码包bean
-     */
-    @Data
-    @NoArgsConstructor
-    @AllArgsConstructor
-    @ToString
-    @ApiModel(value = "ValidSAPOrderNoAndMaterialRes_PackageBean")
-    public static class PackageBean implements Serializable {
-        @ApiModelProperty(value = "码包id")
-        private Long id;
-    }
+    @ApiModelProperty("是否超出采购总数")
+    private Integer isOverstepNum;
 }

+ 61 - 37
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageServiceImpl.java

@@ -320,8 +320,13 @@ public class QrPackageServiceImpl implements QrPackageService {
             ValidSAPOrderNoAndMaterialReq reqValid = new ValidSAPOrderNoAndMaterialReq();
             reqValid.setMaterialId(req.getMaterialId());
             reqValid.setSapOrderNo(req.getSapOrderNo());
+            reqValid.setApplyNumber(req.getQrNumber());
             ValidSAPOrderNoAndMaterialRes validSAPOrderNoAndMaterialRes = validSAPOrderNoAndMaterial(reqValid);
-            if (Objects.nonNull(validSAPOrderNoAndMaterialRes) && CollectionUtil.isNotEmpty(validSAPOrderNoAndMaterialRes.getPackageBeanList())) {
+            if(TrueFalseEnum.TRUE.is(validSAPOrderNoAndMaterialRes.getIsOverstepNum())){
+                throw new BusinessException("该SAP订单号和物料已超额申请码包,若仍需申请需要提交额外码包申请原因");
+            }
+
+            /*if (Objects.nonNull(validSAPOrderNoAndMaterialRes) && CollectionUtil.isNotEmpty(validSAPOrderNoAndMaterialRes.getPackageBeanList())) {
                 Set<Long> validQrPackageIdSet = validSAPOrderNoAndMaterialRes.getPackageBeanList().stream().map(bean -> bean.getId()).collect(Collectors.toSet());
                 if(validQrPackageIdSet.size()>1
                 ||(isAdd && validQrPackageIdSet.size()==1)
@@ -329,7 +334,7 @@ public class QrPackageServiceImpl implements QrPackageService {
                     Long id = validSAPOrderNoAndMaterialRes.getPackageBeanList().get(0).getId();
                     throw new BusinessException("该SAP订单号和物料与码包" + id + "重复,若仍需申请需要提交额外码包申请原因");
                 }
-            }
+            }*/
         }
 
         //查询物料信息
@@ -430,12 +435,12 @@ public class QrPackageServiceImpl implements QrPackageService {
         GetQrPackageDetailRes res = PojoConverterUtils.copy(qrPackage, GetQrPackageDetailRes.class);
 
         //查询码包对应活动单条数据
-        PackageActiveVO packageActive = baseActiveMapper.getPackageActive(qrPackage.getId());
+        //PackageActiveVO packageActive = baseActiveMapper.getPackageActive(qrPackage.getMaterialId());
 
         //存在活动数据
-        if (ObjectUtils.isNotEmpty(packageActive)) {
-            getBrandCodeName(res,packageActive);
-        }
+//        if (ObjectUtils.isNotEmpty(packageActive)) {
+//            getBrandCodeName(res,packageActive);
+//        }
         return res;
     }
 
@@ -444,35 +449,36 @@ public class QrPackageServiceImpl implements QrPackageService {
      * @param res
      * @param packageActive
      */
-    private void getBrandCodeName(GetQrPackageDetailRes res,PackageActiveVO packageActive){
 
-        res.setActiveCode(packageActive.getActiveCode());
-        res.setActiveName(packageActive.getActiveName());
-        res.setActiveUrl(packageActive.getActiveUrl());
-        res.setActiveType(packageActive.getActiveType());
-        res.setBeginTime(packageActive.getBeginTime());
-        res.setEndTime(packageActive.getEndTime());
-        //多品牌名称
-        StringBuffer brandNames = new StringBuffer();
-        //查询品牌一级列表
-        QueryWrapper<BaseBrand> baseBrandQW = new QueryWrapper<>();
-        baseBrandQW.eq("brand_level",1);
-        List<BaseBrand> baseBrands = baseBrandMapper.selectList(baseBrandQW);
-        Map<String, String> brandCodeMap = baseBrands.stream().collect(Collectors.toMap(BaseBrand::getBrandCode, BaseBrand::getBrandName));
-
-        //品牌名称获取
-        String[] brandCodeArray = packageActive.getBrandCode().split(",");
-        for (String brandCode : brandCodeArray) {
-            String codeName = brandCodeMap.get(brandCode);
-            if (StringUtils.isNotBlank(codeName)) {
-                brandNames.append(codeName).append(",");
-            }
-        }
+    private void getBrandCodeName(GetQrPackageDetailRes res,PackageActiveVO packageActive){
 
-        if (brandNames.length()>0){
-            brandNames.deleteCharAt(brandNames.length()-1);
-            res.setBrandNames(brandNames.toString());
-        }
+//        res.setActiveCode(packageActive.getActiveCode());
+//        res.setActiveName(packageActive.getActiveName());
+//        res.setActiveUrl(packageActive.getActiveUrl());
+//        res.setActiveType(packageActive.getActiveType());
+//        res.setBeginTime(packageActive.getBeginTime());
+//        res.setEndTime(packageActive.getEndTime());
+//        //多品牌名称
+//        StringBuffer brandNames = new StringBuffer();
+//        //查询品牌一级列表
+//        QueryWrapper<BaseBrand> baseBrandQW = new QueryWrapper<>();
+//        baseBrandQW.eq("brand_level",1);
+//        List<BaseBrand> baseBrands = baseBrandMapper.selectList(baseBrandQW);
+//        Map<String, String> brandCodeMap = baseBrands.stream().collect(Collectors.toMap(BaseBrand::getBrandCode, BaseBrand::getBrandName));
+//
+//        //品牌名称获取
+//        String[] brandCodeArray = packageActive.getBrandCode().split(",");
+//        for (String brandCode : brandCodeArray) {
+//            String codeName = brandCodeMap.get(brandCode);
+//            if (StringUtils.isNotBlank(codeName)) {
+//                brandNames.append(codeName).append(",");
+//            }
+//        }
+//
+//        if (brandNames.length()>0){
+//            brandNames.deleteCharAt(brandNames.length()-1);
+//            res.setBrandNames(brandNames.toString());
+//        }
     }
 
     /**
@@ -614,12 +620,30 @@ public class QrPackageServiceImpl implements QrPackageService {
         qrPackageQuery.eq("sap_order_no", req.getSapOrderNo());
         qrPackageQuery.eq("is_delete", 0);
         List<QrPackage> qrPackages = qrPackageMapper.selectList(qrPackageQuery);
-
+        long num = 0;
+        //根据物料id,sap订单编号,计算历史订单总数
+        if (CollectionUtil.isNotEmpty(qrPackages)) {
+            num = qrPackages.stream().mapToInt(x -> Math.toIntExact(x.getQrNumber())).sum();
+        }
+        //根据物料,获取sap物料code
+        BaseMaterial baseMaterial = baseMaterialMapper.selectById(req.getMaterialId());
+        AssertUtil.isNull(baseMaterial, "物料信息不存在");
+        //入参获取sap订单表中采购数量
+        QueryWrapper<QrPackageSapOrderItem> item = new QueryWrapper<>();
+        item.eq("sap_order_no", req.getSapOrderNo());
+        item.eq("sap_material_id", baseMaterial.getMaterialCode());
+        QrPackageSapOrderItem qrPackageSapOrderItem = qrPackageSapOrderItemMapper.selectOne(item);
+        AssertUtil.isNull(qrPackageSapOrderItem, "sap订单不存在");
+        //之前采购数量+当前申请数量
+        long number = num + req.getApplyNumber();
         //构造出参
         ValidSAPOrderNoAndMaterialRes res = new ValidSAPOrderNoAndMaterialRes();
-        List<ValidSAPOrderNoAndMaterialRes.PackageBean> packageBeanList = PojoConverterUtils.copyList(qrPackages, ValidSAPOrderNoAndMaterialRes.PackageBean.class);
-        res.setPackageBeanList(packageBeanList);
-
+        //判断是否超出sap订单中的采购数量
+        if (number > qrPackageSapOrderItem.getPurchaseCount()) {
+            res.setIsOverstepNum(TrueFalseEnum.TRUE.getCode());
+        } else {
+            res.setIsOverstepNum(TrueFalseEnum.FALSE.getCode());
+        }
         return res;
     }
 

+ 14 - 14
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/BaseActiveMapper.xml

@@ -59,20 +59,20 @@
     </select>
 
     <select id="getPackageActive" resultType="com.abi.qms.platform.dao.vo.result.PackageActiveVO">
-        SELECT
-            ba.id,
-            ba.active_code,
-            ba.active_name,
-            ba.active_url,
-            ba.active_type,
-            ba.begin_time,
-            ba.end_time,
-            ba.brand_code
-        FROM
-            base_active ba
-        LEFT JOIN base_active_qr_package_mapping bam ON ba.id = bam.active_id
-        WHERE
-        bam.qr_package_id = #{packageId} limit 1
+--         SELECT
+--             ba.id,
+--             ba.active_code,
+--             ba.active_name,
+--             ba.active_url,
+--             ba.active_type,
+--             ba.begin_time,
+--             ba.end_time,
+--             ba.brand_code
+--         FROM
+--             base_active ba
+--             left join base_active act on act.id = ba.
+--         WHERE
+--         bam.qr_package_id = #{materialId} limit 1
     </select>