From ab14726215678ac69adfeafbd845ebc5b0776ea2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:56:41 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找
---
src/main/java/com/zy/asrs/controller/OrderDetlController.java | 248 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 246 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OrderDetlController.java b/src/main/java/com/zy/asrs/controller/OrderDetlController.java
index 48f77c7..83caf0b 100644
--- a/src/main/java/com/zy/asrs/controller/OrderDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderDetlController.java
@@ -1,5 +1,6 @@
package com.zy.asrs.controller;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -9,10 +10,14 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
+import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.*;
import com.zy.common.web.BaseController;
+import lombok.Synchronized;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StopWatch;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@@ -25,6 +30,16 @@
@Autowired
private OrderDetlService orderDetlService;
+
+ @Autowired
+ private DocTypeService docTypeService;
+
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private AgvLocDetlService agvLocDetlService;
@RequestMapping(value = "/orderDetl/{id}/auth")
@ManagerAuth
@@ -45,10 +60,226 @@
if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
wrapper.orderBy("create_time", false);
}
- wrapper.eq("status", 0);
+ wrapper.eq("status", 1);
return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
}
+ @RequestMapping(value = "/orderDetl/pakout/list/auth")
+ @ManagerAuth
+ public R pakoutList(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam Map<String, Object> param){
+ return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class)));
+ }
+
+ @RequestMapping(value = "/orderDetl/pakout/list/authV2")
+ @ManagerAuth
+ public R pakoutList2(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+ for (DocType pakin : pakins) {
+ docIds.add(pakin.getDocId());
+ }
+ EntityWrapper<Order> orderEntityWrapper = new EntityWrapper<>();
+ List<Order> orders = orderService.selectList(orderEntityWrapper.in("doc_type",docIds));
+ List<String> orderNos = new ArrayList<>();
+ for (Order order : orders) {
+ orderNos.add(order.getOrderNo());
+ }
+ wrapper.in("order_no",orderNos);
+ return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ @RequestMapping(value = "/orderDetl/pakout/list/authV193")
+ @ManagerAuth
+ public R pakoutList193(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam(required = false)Long docType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ param.remove("docType");
+ excludeTrash(param);
+ convertLike(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+
+ List<Long> unDocIds = new ArrayList<>();
+ unDocIds.add(18L);
+ unDocIds.add(31L);
+ unDocIds.add(33L);
+ unDocIds.add(34L);
+ unDocIds.add(35L);
+ unDocIds.add(37L);
+ for (DocType pakin : pakins) {
+ if (!unDocIds.contains(pakin.getDocId())) {
+ docIds.add(pakin.getDocId());
+ }
+ }
+
+ if (docIds.size() > 0) {
+ if (docType > 0) {
+ wrapper.in("source",docType);
+ } else {
+ wrapper.in("source",docIds);
+ }
+
+ } else {
+ wrapper.in("source",0);
+ }
+ Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+ for (OrderDetl record : page.getRecords()) {
+ Double sumAnfme = agvLocDetlService.getSumAnfme(record.getMatnr(), record.getThreeCode());
+ record.setStock(sumAnfme == null ? 0 : sumAnfme);
+ }
+
+ return R.ok(page);
+ }
+
+ @RequestMapping(value = "/orderDetl/pakout/list/authV3")
+ @Synchronized
+ @ManagerAuth
+ public R pakoutList3(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ StopWatch stopWatch = new StopWatch();
+ stopWatch.start();
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convertLike(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+ for (DocType pakin : pakins) {
+ if (pakin.getDocId() != 17 && pakin.getDocId() != 33 && pakin.getDocId() != 34 && pakin.getDocId() != 35) {
+ docIds.add(pakin.getDocId());
+ }
+ }
+ wrapper.in("source",docIds);
+ Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+ for (OrderDetl record : page.getRecords()) {
+ Double sumAnfme = agvLocDetlService.getSumAnfme(record.getMatnr(), record.getThreeCode());
+ record.setStock(sumAnfme == null ? 0 : sumAnfme);
+ }
+ stopWatch.stop();
+ System.out.println(stopWatch.getTotalTimeSeconds());
+ return R.ok(page);
+ }
+
+ /*
+ * 鍗婃垚鍝佸姞宸ュ崟鎹�
+ * */
+ @RequestMapping(value = "/orderDetl/pakout/list/authV5")
+ @ManagerAuth
+ public R pakoutList5(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convertLike(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+ for (DocType pakin : pakins) {
+ if (pakin.getDocId() == 35) {
+ docIds.add(pakin.getDocId());
+ }
+ }
+ wrapper.eq("process_sts",1);
+ wrapper.in("source",docIds);
+ Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+ for (OrderDetl record : page.getRecords()) {
+ Double sumAnfme = agvLocDetlService.getSumAnfmeProcess(record.getMatnr(), record.getThreeCode());
+ record.setStock(sumAnfme == null ? 0 : sumAnfme);
+ }
+
+ return R.ok(page);
+ }
+
+ @RequestMapping(value = "/orderDetl/pakout/list/authV4")
+ @ManagerAuth
+ public R pakoutList4(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convertLike(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+ for (DocType pakin : pakins) {
+ if (pakin.getDocId() == 34) {
+ docIds.add(pakin.getDocId());
+ }
+ }
+
+ wrapper.in("source",docIds);
+ Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+ for (OrderDetl record : page.getRecords()) {
+ Double sumAnfme = agvLocDetlService.getSumAnfmeProcessed(record.getMatnr(), record.getThreeCode());
+ record.setStock(sumAnfme == null ? 0 : sumAnfme);
+ }
+
+ return R.ok(page);
+ }
+
+ @RequestMapping(value = "/orderDetl/pakout/list/authV6")
+ @ManagerAuth
+ public R pakoutList6(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convertLike(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+ wrapper.orderBy("create_time", false);
+ }
+ List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
+ List<Long> docIds = new ArrayList<>();
+ for (DocType pakin : pakins) {
+ if (pakin.getDocId() == 37) {
+ docIds.add(pakin.getDocId());
+ }
+ }
+
+ wrapper.in("source",docIds);
+ Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
+ for (OrderDetl record : page.getRecords()) {
+ Double sumAnfme = agvLocDetlService.getSumAnfme(record.getMatnr(), record.getThreeCode());
+ record.setStock(sumAnfme == null ? 0 : sumAnfme);
+ }
+
+ return R.ok(page);
+ }
+
private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
for (Map.Entry<String, Object> entry : map.entrySet()){
String val = String.valueOf(entry.getValue());
@@ -57,6 +288,19 @@
wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
} else {
+ wrapper.eq(entry.getKey(), val);
+ }
+ }
+ }
+
+ private <T> void convertLike(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
wrapper.like(entry.getKey(), val);
}
}
--
Gitblit v1.9.1