From bad9ff47e7ed4965c6b3e93aebc38f28e97cca68 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期一, 08 十二月 2025 16:11:00 +0800
Subject: [PATCH] 发货查询以及可发货订单查询筛选缓存

---
 north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml                     |   17 ++-
 north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js                     |    9 +
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue             |    1 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java |    4 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue            |   50 +++++----
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue             |   88 ++++++++++++-----
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java         |    5 
 north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java       |   12 ++
 north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java         |   74 ++++++++++++++
 9 files changed, 199 insertions(+), 61 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js b/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
index e2e4676..09ee61f 100644
--- a/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
+++ b/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
@@ -52,6 +52,11 @@
             }
 
         },
+        searchDeliverFilter:{
+            list:ref([]),
+            data:{}
+
+        },
         projectNo:ref(),
         optimizeData:{
             optimalResults:'',
@@ -117,6 +122,10 @@
                     }
                 }
             }
+            this.searchDeliverFilter={
+                list:[],
+                data:{}
+            }
             this.projectNo=null
             this.optimizeData={
                 optimalResults:null,
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index ffbf370..a17d092 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -1106,7 +1106,6 @@
         destroy-on-close
         :close-on-click-modal="false"
         :close-on-press-escape="false">
-    >
       <SelectOrderList
           style="width: 100%;height: 600px"
           :customer-id="titleUploadData.customerId"
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
index e065b91..d4ca703 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -1,6 +1,6 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue";
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
 import {useRouter} from "vue-router"
 import request from "@/utils/request"
 import deepClone from "@/utils/deepClone"
@@ -92,6 +92,10 @@
 
 //绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
 let filterData = ref({})
+let sortData = ref({
+  field:'id',
+  order:null
+})
 
 let selectDate = ref(["",""])
 
@@ -103,29 +107,44 @@
   pageSize : 100
 })
 
-//绗竴娆¤皟鐢�
-request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
-
-  if(res.code==200){
-    total.dataTotal = res.data.total.total*1
-    total.pageTotal= res.data.total.pageTotal
-
-    orderInfo.selectDeliveryDate = res.data.selectDate
-    pageNum.value=1
-    produceList = deepClone(res.data.data)
-    if(company.companyName=='娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�'){
-      xGrid.value.menuConfig.body.options[0][2].visible=true
-      xGrid.value.menuConfig.body.options[0][3].visible=true
-      xGrid.value.menuConfig.body.options[0][4].visible=true
-      xGrid.value.menuConfig.body.options[0][5].visible=true
-    }
-    xGrid.value.loadData(produceList)
-    gridOptions.loading=false
-  }else{
-    ElMessage.warning(res.msg)
-    router.push("/login")
-  }
+onMounted(async () => {
+  filterData.value = orderInfo.searchDeliverFilter.data
+  await getDeliveryList()
+  orderInfo.searchDeliverFilter.list.forEach(item =>{
+    xGrid.value.getColumnByField(item.field).filters = item.column.filters
+  })
 })
+
+const getDeliveryList = async () => {
+  //鍔犺浇璇锋眰
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  await request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
+
+    if(res.code==200){
+      total.dataTotal = res.data.total.total*1
+      total.pageTotal= res.data.total.pageTotal
+
+      orderInfo.selectDeliveryDate = res.data.selectDate
+      pageNum.value=1
+      produceList = deepClone(res.data.data)
+      if(company.companyName=='娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�'){
+        xGrid.value.menuConfig.body.options[0][2].visible=true
+        xGrid.value.menuConfig.body.options[0][3].visible=true
+        xGrid.value.menuConfig.body.options[0][4].visible=true
+        xGrid.value.menuConfig.body.options[0][5].visible=true
+      }
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
 
 
 //瀹氫箟褰撳墠椤垫暟
@@ -150,7 +169,12 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
+
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -162,6 +186,9 @@
         xGrid.value.menuConfig.body.options[0][2].visible=true
         xGrid.value.menuConfig.body.options[0][3].visible=true
       }
+
+      orderInfo.searchDeliverFilter.list = xGrid.value.getCheckedFilters()
+      orderInfo.searchDeliverFilter.data = filterData.value
       gridOptions.loading=false
     }else{
       ElMessage.warning(res.msg)
@@ -172,7 +199,11 @@
 
 
 const selectOrderList = ()=>{
-  request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
 
     if(res.code==200){
       if (res.data.total!=null){
@@ -494,6 +525,10 @@
   },
   cellClick({ row }){
     rowClickIndex.value = row
+  },
+  sortChange ({ field, order }) {
+    sortData.value = {field,order}
+    selectOrderList()
   }
 }
 
@@ -517,6 +552,9 @@
   filterConfig: {   //绛涢�夐厤缃」
     remote: true
   },
+  sortConfig: {   //鎺掑簭閰嶇疆椤�
+    remote: true//鏄惁鏈嶅姟绔帓搴�
+  },
   customConfig: {
     storage: true
   },
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
index 63afece..79df0df 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -61,14 +61,6 @@
 //绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
 let filterData = ref({
 
-  finishedGoodsInventory:{
-    quantityAvailable:'',
-
-  },
-  customerId: null,  // 鏂板
-  project: null,     // 鏂板
-  excludeOrderIds: []  // 鏂板
-
 })
 let selectDate = ref(["",""])
 
@@ -82,18 +74,9 @@
 
 
 // 绗竴娆¤皟鐢紝淇敼涓哄甫绛涢�夋潯浠�
-const fetchOrders = () => {
-  // 鏂板锛氫粠props鑾峰彇绛涢�夋潯浠�
-  if(props.customerId!==undefined){
-    filterData.value.customerId = props.customerId
-    filterData.value.project = props.project
-    filterData.value.excludeOrderIds = props.excludeOrderIds
-    gridOptions.toolbarConfig.buttons[0].visible  = false
-  }else{
-    gridOptions.toolbarConfig.buttons[1].visible  = false
-  }
+const fetchOrders = async () => {
 
-  request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => {
+  await request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => {
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
       total.pageTotal= res.data.total.pageTotal
@@ -109,8 +92,24 @@
 }
 
 
-onMounted(() => {
-  fetchOrders()
+onMounted(async () => {
+  if (props.customerId !== undefined) {
+    filterData.value.customerId = props.customerId
+    filterData.value.project = props.project
+    filterData.value.excludeOrderIds = props.excludeOrderIds
+    gridOptions.toolbarConfig.buttons[0].visible = false
+
+    await fetchOrders()
+  } else {
+    gridOptions.toolbarConfig.buttons[1].visible = false
+    filterData.value = orderInfo.searchOrderFilter.data
+    await fetchOrders()
+    orderInfo.searchOrderFilter.list.forEach(item => {
+      xGrid.value.getColumnByField(item.field).filters = item.column.filters
+    })
+  }
+
+
 })
 
 const changeFilterEvent = (event, option, $panel,) => {
@@ -150,6 +149,13 @@
       pageNum.value=1
       produceList = deepClone(res.data.data)
       xGrid.value.loadData(produceList)
+
+      //涓嶆槸寮圭獥鐣岄潰
+      if(props.customerId===undefined){
+        orderInfo.searchOrderFilter.list = xGrid.value.getCheckedFilters()
+        orderInfo.searchOrderFilter.data = filterData.value
+      }
+
       gridOptions.loading=false
     }else{
       ElMessage.warning(res.msg)
@@ -238,7 +244,7 @@
     {field: 'customerId',width:120,  title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'customerName',width:120,  title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'), sortable: true},
     {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'money',width:120,   title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
index 55a04c9..63f3dd4 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -39,8 +39,8 @@
     @ApiOperation("鍙戣揣璁㈠崟鏌ヨ鎺ュ彛")
     @SaCheckPermission("selectDelivery.search")
     @PostMapping("/getSelectShippingOrder/{pageNum}/{pageSize}/{selectDate}")
-    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery) throws JsonProcessingException {
-        return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,delivery));
+    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Map<String,Object> config) throws JsonProcessingException {
+        return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,config));
     }
 
     /*鍙戣揣鎶ヨ〃鏌ヨ*/
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java
new file mode 100644
index 0000000..22de8e2
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java
@@ -0,0 +1,74 @@
+package com.example.erp.dto.sd;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.example.erp.entity.sd.Order;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+
+@Data
+public class DeliverySearchDTO {
+    @ExcelProperty("缂栧彿")
+    private Long id;
+    @ExcelProperty("鍙戣揣鐘舵��")
+    private Integer deliveryState;
+    @ExcelProperty("鍑哄簱鐘舵��")
+    private Integer stockState;
+    @ExcelProperty("浠樻鏉′欢")
+    private String paymentTerms;
+    @ExcelProperty("鍙戣揣鍗曞彿")
+    private String deliveryId;
+    @ExcelProperty("璁㈠崟缂栧彿")
+    private String orderId;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("瀹㈡埛缂栧彿")
+    private String customerId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("鍙戣揣鏃ユ湡")
+    private LocalDate deliveryDate;
+    @ExcelProperty("鏀粯鏂瑰紡")
+    private String payMethod;
+    @ExcelProperty("鏀粯鏃ユ湡")
+    private LocalDate payDate;
+    @ExcelProperty("閿�鍞汉id")
+    private String salesmanId;
+    @ExcelProperty("閿�鍞汉")
+    private String salesman;
+    @ExcelProperty("鍒涘缓浜篿d")
+    private String creatorId;
+    @ExcelProperty("鍒涘缓浜�")
+    private String creator;
+    @ExcelProperty("鑱旂郴浜�")
+    private String contacts;
+    @ExcelProperty("鑱旂郴鐢佃瘽")
+    private String contactNumber;
+    @ExcelProperty("閫佽揣鍦板潃")
+    private String deliveryAddress;
+    @ExcelProperty("闈㈢Н")
+    private Double area;
+    @ExcelProperty("鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("鎬婚噾棰�")
+    private Double money;
+    @ExcelProperty("鍏朵粬閲戦")
+    private Double otherMoney;
+    @ExcelProperty("杩愯垂閲戦")
+    private Double freight;
+    @ExcelProperty("杩愯垂鏁伴噺")
+    private Integer freightQuantity;
+    @ExcelProperty("杩愯垂鍗曚环")
+    private Double freightPrice;
+    @ExcelProperty("鎵撳嵃娆℃暟")
+    private Integer printingNumber;
+    @ExcelProperty("澶囨敞")
+    private String remarks;
+    @ExcelProperty("鍒涘缓鏃堕棿")
+    private LocalDate createTime;
+    @ExcelProperty("淇敼鏃堕棿")
+    private LocalDate updateTime;
+
+    private Order order;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
index b063e68..a7a7a6d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
@@ -1,5 +1,6 @@
 package com.example.erp.mapper.sd;
 
+import com.example.erp.dto.sd.DeliverySearchDTO;
 import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.sd.Delivery;
 import com.example.erp.entity.sd.DeliveryDetail;
@@ -17,7 +18,7 @@
 
     List<Delivery> getSelectShippingOrder(@Param("offset") Integer offset,
                                                       @Param("pageSize") Integer pageSize,String startDate, String endDate,
-                                                      @Param("delivery") Delivery delivery);
+                                                      @Param("delivery") DeliverySearchDTO delivery,String field, String orderBy);
 
    Delivery getSelectShippingOrderDetailDelivery(@Param("offset") Integer offset,
                                                              @Param("pageSize") Integer pageSize,
@@ -30,7 +31,7 @@
     Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset,
                                                  @Param("pageSize") Integer pageSize,
                                                  @Param("orderDetail") OrderDetail orderDetail);
-    Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Delivery delivery);
+    Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, DeliverySearchDTO delivery);
 
     List<Order> getSelectOrderInventory(@Param("offset") Integer offset,
                                         @Param("pageSize") Integer pageSize,String startDate, String endDate,
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
index f659512..8eb787d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -10,6 +10,8 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.example.erp.dto.sd.DeliveryDetailDTO;
 import com.example.erp.dto.sd.DeliveryDetailProductDTO;
+import com.example.erp.dto.sd.DeliverySearchDTO;
+import com.example.erp.dto.sd.OrderSearchDTO;
 import com.example.erp.entity.mm.FinishedOperateLog;
 import com.example.erp.entity.sd.*;
 import com.example.erp.entity.userInfo.Log;
@@ -60,7 +62,7 @@
     FinishedGoodsInventoryService finishedGoodsInventoryService;
 
 
-    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) throws JsonProcessingException {
+    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Map<String,Object> config) throws JsonProcessingException {
         Integer offset = (pageNum - 1) * pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
@@ -72,8 +74,14 @@
                 endDate = selectDate.get(1);
             }
         }
+        JSONObject orderJson = new JSONObject(config);
+        DeliverySearchDTO delivery = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), DeliverySearchDTO.class);
+        Map<String,String> sortDate = (Map<String, String>) config.get("sort");
+        String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase();
+        String orderBy = sortDate.get("order");
+
         Map<String, Object> map = new HashMap<>();
-        map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery));
+        map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery,field, orderBy));
         map.put("total", deliveryMapper.getSelectShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery));
         List<String> list = new ArrayList<>();
         list.add(startDate);
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
index 337f2c0..57931dc 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
@@ -179,9 +179,6 @@
             <if test="order.createTime != null and order.createTime != ''">
                 and o.create_time REGEXP #{order.createTime}
             </if>
-            <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''">
-                and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable}
-            </if>
         </where>
         group by o.order_id order by o.id desc
         limit #{offset},#{pageSize};
@@ -236,9 +233,6 @@
             </if>
             <if test="order.createTime != null and order.createTime != ''">
                 and o.create_time REGEXP #{order.createTime}
-            </if>
-            <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''">
-                and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable}
             </if>
         </where>
         group by o.order_id limit #{offset},#{pageSize}) as zu;
@@ -350,7 +344,16 @@
 
             </where>
         group by d.delivery_id
-        order by d.id desc
+        order by
+        <if test="orderBy == null ">
+            d.id desc
+        </if>
+        <if test="orderBy == 'desc'">
+            d.${field} desc
+        </if>
+        <if test="orderBy == 'asc'">
+            d.${field}
+        </if>
         limit #{offset},#{pageSize};
     </select>
 

--
Gitblit v1.8.0