瀏覽代碼

调整物料删除的问题。

yuj 7 年之前
父節點
當前提交
a3e4bd8e3a

+ 15 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductMatchResultDao.java

@@ -17,7 +17,22 @@ import java.util.List;
 @Repository
 public interface ProductMatchResultDao extends JpaRepository<ProductMatchResult, Long>, JpaSpecificationExecutor<ProductMatchResult> {
 
+
+    /**
+     * 批量删除根据物料找到的匹配结果
+     *
+     * @param productIds 物料的主键
+     */
     @Modifying
     @Query(value = "delete from ProductMatchResult p where p.prid in (:productIds)")
     void deleteByProductids(@Param("productIds") List<Long> productIds);
+
+    /**
+     * 根据物料删除
+     *
+     * @param prid 物料的id
+     */
+    @Modifying
+    @Query(value = "delete from ProductMatchResult p where p.prid = :prid")
+    void deleteByProductid(@Param("prid") Long prid);
 }

+ 11 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/V_ProductPrivateDao.java

@@ -72,4 +72,15 @@ public interface V_ProductPrivateDao extends JpaRepository<V_ProductPrivate, Lon
      */
     @Query(value = "select p from V_ProductPrivate p where p.pcmpcode=:pcmpcode and p.pbranden=:pbranden and p.enUU=:enUU order by p.b2cEnabled desc")
     List<V_ProductPrivate> findProductByPcmpcodeAndPbrandenAndEnUU(@Param("pcmpcode") String pcmpcode, @Param("pbranden") String pbranden, @Param("enUU") Long enUU);
+
+
+    /**
+     * 根据enuu查询所有的prids
+     *
+     * @param standard 是否是标准
+     * @param enUU     企业的enuu
+     * @return list
+     */
+    @Query(value = "select p.id from V_ProductPrivate p where p.standard = :standard and p.enUU = :enUU and coalesce(p.b2cEnabled, 1) = 1 and coalesce(p.pcmpcode, '') <> '' and coalesce(p.pbranden, '') <> '' ")
+    List<Long> findPridsByEnUUAndStandard(@Param("standard") Integer standard, @Param("enUU") Long enUU);
 }

+ 9 - 11
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -690,16 +690,16 @@ public class ProductServiceImpl implements ProductService {
         Integer success = 0;
         Integer isHave = 0;
         Long uu = SystemSession.getUser().getEnterprise().getUu();
-        List<Product> products = productDao.findProductByEnuuAndStandardAndEnabled(uu, standard, IntegerConstant.YES_SHORT);
-        for (Product product : products) {
+        List<Long> products = v_productPrivateDao.findPridsByEnUUAndStandard(standard, uu);
+        for (Long prid : products) {
             try {
-                personList = productPersonDao.findByProductId(product.getId());
+                personList = productPersonDao.findByProductId(prid);
                 if (CollectionUtils.isNotEmpty(personList)) {
                     fail++;
                     continue;
                 }
                 //查看是否存在正常未取消的订单
-                List<Goods> goodses = goodsDao.findByProductId(product.getId());
+                List<Goods> goodses = goodsDao.findByProductId(prid);
                 Boolean isExistOrder = false;
                 String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
                 for (Goods goods : goodses) {
@@ -722,13 +722,11 @@ public class ProductServiceImpl implements ProductService {
                 }
                 if (!isExistOrder) {
                     // 删除外键关联的匹配结果列表,不然删除product失败
-                    Set<ProductMatchResult> productMatchResultSet =  product.getMatchresults();
-                    productMatchResultDao.delete(productMatchResultSet);
+                    productMatchResultDao.deleteByProductid(prid);
                     goodsService.deleteGoods(goodses);
-                    ProductPrivate productPrivate = productPrivateService.findByPrId(product.getId());
+                    ProductPrivate productPrivate = productPrivateService.findByPrId(prid);
                     if (null == productPrivate) {
-                        productPrivate = new ProductPrivate();
-                        productPrivate.setPrId(product.getId());
+                        productPrivate = new ProductPrivate(prid);
                     } else {
                         if (productPrivate.getB2cEnabled().equals(IntegerConstant.NO_SHORT)) {
                             fail++;
@@ -1528,11 +1526,11 @@ public class ProductServiceImpl implements ProductService {
         Map<String, Integer> resultMap = new HashMap<>();
         Long enUU = SystemSession.getUser().getEnterprise().getUu();
         Long userUU = SystemSession.getUser().getUserUU();
-        if (enUU == null){
+        if (enUU == null) {
             throw new IllegalOperatorException("店铺信息丢失,请刷新后重试");
         }
         int standard,nStandard;
-        if (null != isPerson && isPerson.intValue() == IntegerConstant.YES_SHORT.intValue()){
+        if (IntegerConstant.YES_SHORT.equals(isPerson)){
             standard = v_productPersonDao.getCountByEnuuAndUserUUAndStatusAndEnabled(enUU, userUU, ShortConstant.YES_SHORT, IntegerConstant.YES_SHORT);
             nStandard = v_productPersonDao.getCountByEnuuAndUserUUAndStatusAndEnabled(enUU, userUU, ShortConstant.NO_SHORT, IntegerConstant.YES_SHORT);
         } else {