Pārlūkot izejas kodu

采购产品价格指导

yzc 1 gadu atpakaļ
vecāks
revīzija
ebc5773a45

+ 11 - 1
hx-sale/src/main/java/com/fjhx/sale/controller/purchase/EhsdPurchaseController.java

@@ -2,7 +2,6 @@ package com.fjhx.sale.controller.purchase;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.pay.vo.PayVo;
-import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseSelectDto;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
@@ -12,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -93,4 +93,14 @@ public class EhsdPurchaseController {
         ehsdPurchaseService.cancellation(dto.getId());
     }
 
+    /**
+     * 获取产品采购指导价
+     *
+     * @return
+     */
+    @PostMapping("/getProductPriceInfo")
+    public Map<Long, Map<String, Object>> edit(@RequestBody EhsdPurchaseDto dto) {
+        return ehsdPurchaseService.getProductPriceInfo(dto);
+    }
+
 }

+ 7 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/dto/EhsdPurchaseDto.java

@@ -5,6 +5,8 @@ import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * ehsd采购表新增编辑入参实体
  *
@@ -41,4 +43,9 @@ public class EhsdPurchaseDto extends EhsdPurchase implements SetCustomizeAreaId
      * 国家ID
      */
     private Long countryId;
+
+    /**
+     * 产品id列表
+     */
+    private List<Long> productIds;
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/purchase/EhsdPurchaseMapper.java

@@ -3,10 +3,13 @@ package com.fjhx.sale.mapper.purchase;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
+import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -24,4 +27,6 @@ public interface EhsdPurchaseMapper extends BaseMapper<EhsdPurchase> {
     Page<EhsdPurchaseVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<EhsdPurchase> wrapper);
 
     boolean updatePurchaseId(Long id, Long newId, Long userId, Long oldPurchaseId);
+
+    List<EhsdPurchaseProductVo> getProductPriceInfo(@Param("ew") IWrapper<Object> wrapper);
 }

+ 6 - 1
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java

@@ -1,6 +1,5 @@
 package com.fjhx.sale.service.purchase;
 
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.pay.vo.PayVo;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
@@ -10,6 +9,7 @@ import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
 import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -63,4 +63,9 @@ public interface EhsdPurchaseService extends BaseService<EhsdPurchase> {
     List<EhsdPurchaseVo> getListBySupplyId(String supplyId);
 
     boolean updatePurchaseId(Long id, Long newId, Long userId, Long oldPurchaseId);
+
+    /**
+     * 获取产品采购指导价
+     */
+    Map<Long, Map<String, Object>> getProductPriceInfo(EhsdPurchaseDto dto);
 }

+ 42 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -508,4 +508,46 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         return baseMapper.updatePurchaseId(id, newId, userId, oldPurchaseId);
     }
 
+    /**
+     * 获取产品采购指导价
+     */
+    @Override
+    public Map<Long, Map<String, Object>> getProductPriceInfo(EhsdPurchaseDto dto) {
+        List<Long> productIds = dto.getProductIds();
+
+        //产品在该供应商近20条采购价格
+        List<EhsdPurchaseProductVo> supplyPurchaseProductList = baseMapper.getProductPriceInfo(IWrapper.getWrapper()
+                .in("epp.product_id", productIds)
+                .eq(EhsdPurchase::getSellCorporationId, dto.getSellCorporationId())
+                .orderByDesc(EhsdPurchase::getCreateTime)
+                .orderByDesc(EhsdPurchase::getId)
+                .last("LIMIT 20")
+        );
+        Map<Long, List<EhsdPurchaseProductVo>> supplyPurchaseProductMap =
+                supplyPurchaseProductList.stream().collect(Collectors.groupingBy(EhsdPurchaseProductVo::getProductId));
+        //产品近20条采购价格
+        List<EhsdPurchaseProductVo> purchaseProductList = baseMapper.getProductPriceInfo(IWrapper.getWrapper()
+                .in("epp.product_id", productIds)
+                .orderByDesc(EhsdPurchase::getCreateTime)
+                .orderByDesc(EhsdPurchase::getId)
+                .last("LIMIT 20")
+        );
+        Map<Long, List<EhsdPurchaseProductVo>> purchaseProductMap =
+                purchaseProductList.stream().collect(Collectors.groupingBy(EhsdPurchaseProductVo::getProductId));
+
+        //处理输出数据
+        Map<Long, Map<String, Object>> reData = new HashMap<>();
+        for (Long productId : productIds) {
+            Map<String, Object> data = new HashMap<>();
+            //销售给指定客户近3条产品价格
+            data.put("supplyPurchaseProductList", supplyPurchaseProductMap.getOrDefault(productId, new ArrayList<>()));
+            //该产品近20条销售价格
+            data.put("purchaseProductList", purchaseProductMap.getOrDefault(productId, new ArrayList<>()));
+
+            reData.put(productId, data);
+        }
+
+        return reData;
+    }
+
 }

+ 11 - 5
hx-sale/src/main/resources/mapper/purchase/EhsdPurchaseMapper.xml

@@ -13,14 +13,20 @@
 
     <update id="updatePurchaseId">
         update
-            ehsd_purchase
+        ehsd_purchase
         set id = #{newId},
-            update_user = #{userId},
-            update_time = sysdate()
-            <if test="oldPurchaseId != null">,old_purchase_id = #{oldPurchaseId}</if>
+        update_user = #{userId},
+        update_time = sysdate()
+        <if test="oldPurchaseId != null">,old_purchase_id = #{oldPurchaseId}</if>
         where
-            id = #{id}
+        id = #{id}
     </update>
 
+    <select id="getProductPriceInfo" resultType="com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo">
+        SELECT epp.*
+        FROM ehsd_purchase_product epp
+                 LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>