Преглед на файлове

1、车皮订单出入库查询优化

xiaosonghong преди 7 месеца
родител
ревизия
3d87d643c2

+ 31 - 6
src/main/java/com/steerinfo/dil/controller/UniversalController.java

@@ -14,6 +14,7 @@ import io.swagger.annotations.*;
 import io.swagger.models.auth.In;
 import javassist.expr.NewArray;
 import oracle.jdbc.proxy.annotation.Post;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.FastDateFormat;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,10 +35,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @ author    :TXF
@@ -1140,8 +1138,35 @@ public class UniversalController extends BaseRESTfulController {
     @PostMapping("/getInwardInboundResult")
     public RESTfulResult getInwardInboundResult(@RequestBody Map<String,Object> map){
         List<Map<String,Object>> mapList = universalMapper.getInwardInboundResult(map);
+        //卡顿优化
+        StringBuffer buffer = new StringBuffer();
+        for(Map<String,Object> map1 : mapList){
+            if(map1.get("orderId") != null && !map1.get("orderId").toString().isEmpty()){
+                buffer.append(map1.get("orderId").toString()).append(",");
+            }
+        }
+        String orderIds = "";
+        if(StringUtils.isNotEmpty(buffer.toString())){
+            orderIds = "(" + buffer.substring(0, buffer.length()-1) + ")";
+        }
+        //查询所有物资
+        if(StringUtils.isNotEmpty(orderIds)) {
+            HashMap<String, Object> oMap = new HashMap<>();
+            oMap.put("orderIds", orderIds);
+            List<Map<String, Object>> materialListAll = universalMapper.getMaterialListAll(oMap);
+            //遍历数组去查物资赋值物资
+            for(Map<String,Object>map1:mapList){
+                List<Map<String,Object>> materialList = new ArrayList<>();
+                for(Map<String,Object> map2 : materialListAll){
+                    if(DataChange.dataToBigDecimal(map1.get("orderId")).equals(DataChange.dataToBigDecimal(map2.get("orderId")))){
+                        materialList.add(map2);
+                    }
+                }
+                map1.put("materialList",materialList);
+            }
+        }
         //遍历数组去查物资数据
-        for(Map<String,Object>map1:mapList){
+        /*for(Map<String,Object>map1:mapList){
             BigDecimal orderId = DataChange.dataToBigDecimal(map1.get("orderId"));
             List<Map<String,Object>> materialList = universalMapper.getMaterialList(map1);
             //for (Map<String,Object>materialMap:materialList){
@@ -1161,7 +1186,7 @@ public class UniversalController extends BaseRESTfulController {
             //    }
             //}
             map1.put("materialList",materialList);
-        }
+        }*/
         return success(mapList);
     }
 

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/UniversalMapper.java

@@ -251,6 +251,8 @@ public interface UniversalMapper {
 
     List<Map<String, Object>> getMaterialList(Map<String, Object> map1);
 
+    List<Map<String, Object>> getMaterialListAll(Map<String, Object> map1);
+
     List<Map<String, Object>> getLuhaoNum(@Param("orderId") BigDecimal orderId, @Param("materialId") BigDecimal materialId);
 
 

+ 15 - 0
src/main/resources/com/steerinfo/dil/mapper/UniversalMapper.xml

@@ -1428,6 +1428,21 @@
             OR (TWR.SALE_MATERIAL_ID = OOM.SALE_MATERIAL_ID AND TWR.SALE_MATERIAL_ID IS not null))
         WHERE OOM.ORDER_ID = #{orderId}
     </select>
+    <select id="getMaterialListAll" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT DISTINCT RM.MATERIAL_ID "materialId",
+               RM.MATERIAL_NAME||'-'||RM.MATERIAL_SPECIFICATION||'('||RM.MATERIAL_SPECIFICATION||')'||'-'||OOM.ORDER_MATERIAL_NUMBER||'件' "materialName",
+               TWR.INSERT_UPDATE_REMARK "weightNo",
+               OOM.ORDER_ID "orderId"
+        FROM OMSTRUCK_ORDER_MATERIAL OOM
+                 LEFT JOIN RMS_MATERIAL RM
+                           ON RM.MATERIAL_ID = OOM.MATERIAL_ID
+                 LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                           ON TTR.ORDER_ID = OOM.ORDER_ID
+                 LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
+                           ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+                        AND nvl(TWR.SALE_MATERIAL_ID, TWR.MATERIAL_ID) = nvl2(TWR.SALE_MATERIAL_ID, OOM.SALE_MATERIAL_ID, OOM.MATERIAL_ID)
+        WHERE OOM.ORDER_ID in ${orderIds}
+    </select>
     <select id="getLuhaoNum" resultType="java.util.Map" parameterType="decimal">
         SELECT
             RMS.MATERIAL_FURNACE_NUMBER "materialFurnaceNumber",