From 7178ac3731005f2829fa9cca16dc125fc34ec12e Mon Sep 17 00:00:00 2001
From: ZY <zc857179121@qq.com>
Date: 星期五, 16 八月 2024 17:09:40 +0800
Subject: [PATCH] 出库代码提交和部分别的基础代码
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java | 6
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/TaskManage.java | 24 +
zy-asrs-wms/src/main/resources/mapper/asrs/LocDetlMapper.xml | 14 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldSortParam.java | 16 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/StockSortInterceptor.java | 68 ++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java | 3
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/LocManage.java | 110 +++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java | 101 ++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/config/MybatisPlusConfig.java | 3
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchEvent.java | 17 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/req/OutReq.java | 32 ++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/MyMetaObjectHandler.java | 42 +++
zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml | 19 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchListener.java | 18 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java | 3
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/FIFOWithdrawalStrategy.java | 15 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalService.java | 16 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalStrategy.java | 8
zy-asrs-wms/pom.xml | 10
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java | 3
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/po/OutStrategyPO.java | 10
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java | 52 +++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldParam.java | 13
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 106 +++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocDetlMapper.java | 6
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 81 +++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java | 28 +
27 files changed, 805 insertions(+), 19 deletions(-)
diff --git a/zy-asrs-wms/pom.xml b/zy-asrs-wms/pom.xml
index 00d3847..de2fc7f 100644
--- a/zy-asrs-wms/pom.xml
+++ b/zy-asrs-wms/pom.xml
@@ -62,6 +62,16 @@
<version>5.2.5.RELEASE</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
index c9b7b0a..94ebbef 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocDetlController.java
@@ -7,6 +7,7 @@
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.mapper.LocDetlMapper;
import com.zy.asrs.wms.asrs.service.LocDetlFieldService;
import com.zy.asrs.wms.asrs.service.MatFieldService;
import com.zy.asrs.wms.common.annotation.OperationLog;
@@ -34,6 +35,8 @@
@Autowired
private LocDetlFieldService locDetlFieldService;
+
+
@PreAuthorize("hasAuthority('asrs:locDetl:list')")
@PostMapping("/locDetl/page")
public R page(@RequestBody Map<String, Object> map) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java
new file mode 100644
index 0000000..a2b6d08
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OutController.java
@@ -0,0 +1,52 @@
+package com.zy.asrs.wms.asrs.controller;
+
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wms.asrs.controller.req.OutReq;
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.manage.OutManage;
+import com.zy.asrs.wms.system.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 杩欓噷澶勭悊鎵�鏈夌殑鍑哄簱娴佺▼鐨勬帴鍙�
+ */
+@RestController
+@RequestMapping("/api")
+public class OutController extends BaseController {
+
+ @Autowired
+ private OutManage outManage;
+
+
+ /**
+ * 鑾峰彇搴撳瓨
+ *
+ * @param map
+ * @return
+ */
+ @PostMapping("/out/getStock")
+ public R page(@RequestBody Map<String, Object> map) {
+ List<LocDetl> suitableMat = outManage.getSuitableMat(map);
+ return R.ok(suitableMat);
+ }
+
+
+ /**
+ * 鍑哄簱
+ *
+ * @param outReq 鍑哄簱鍒楄〃
+ * @return
+ */
+ @PostMapping("/out/start")
+ public R page(@RequestBody OutReq outReq) {
+ outManage.out(outReq);
+ return R.ok();
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/req/OutReq.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/req/OutReq.java
new file mode 100644
index 0000000..ef7b080
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/req/OutReq.java
@@ -0,0 +1,32 @@
+package com.zy.asrs.wms.asrs.controller.req;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class OutReq implements Serializable {
+ /**
+ * 搴撲綅鏄庣粏
+ */
+ private List<Detl> detls;
+ /**
+ * 鐩爣绔欑偣
+ */
+ private String targetSite;
+
+ @Data
+ public class Detl {
+ /**
+ * 搴撳瓨鏄庣粏ID
+ */
+ private Long locDetlId;
+ /**
+ * 鏁伴噺
+ */
+ private Double anfme;
+ }
+
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldParam.java
index 6c845e9..c617e68 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldParam.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldParam.java
@@ -4,9 +4,18 @@
@Data
public class FieldParam {
-
+ /**
+ * 瀛楁鍚�
+ */
private String name;
-
+ /**
+ * 姣旇緝绫诲瀷锛屽父瑙佺殑 =,>,<,>=,<=,like,in,between,is null,is not null
+ * 娉細鏈変簺闇�瑕佽浆涔�
+ */
+ private String type;
+ /**
+ * 瀛楁鍊�
+ */
private Object value;
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldSortParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldSortParam.java
new file mode 100644
index 0000000..9638885
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/FieldSortParam.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.wms.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class FieldSortParam {
+ /**
+ * 瀛楁鍚�
+ */
+ private String name;
+ /**
+ * desc鍜宎sc
+ */
+ private String value;
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/po/OutStrategyPO.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/po/OutStrategyPO.java
new file mode 100644
index 0000000..5eeaf82
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/po/OutStrategyPO.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.wms.asrs.entity.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class OutStrategyPO implements Serializable {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/LocManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/LocManage.java
new file mode 100644
index 0000000..f457313
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/LocManage.java
@@ -0,0 +1,110 @@
+package com.zy.asrs.wms.asrs.manage;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.Loc;
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.Task;
+import com.zy.asrs.wms.asrs.entity.TaskDetl;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
+import com.zy.asrs.wms.asrs.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class LocManage {
+
+ private static Logger logger = LoggerFactory.getLogger(LocManage.class);
+
+ @Autowired
+ private LocService locService;
+
+ @Autowired
+ private LocDetlService locDetlService;
+
+ @Autowired
+ private WorkService workService;
+
+
+ @Autowired
+ private TaskService taskService;
+
+
+ @Autowired
+ private TaskDetlService taskDetlService;
+
+
+ /**
+ * 绉诲簱鏂规硶
+ *
+ * @param sourceLocId 婧愬簱浣�
+ * @param locId 鐩爣搴撲綅
+ */
+ @Transactional
+ public void locMove(Long sourceLocId, Long locId) {
+ logger.info("绉诲簱鎿嶄綔锛屾簮搴撲綅锛歿}锛岀洰鏍囧簱浣嶏細{}", sourceLocId, locId);
+ if (Cools.isEmpty(sourceLocId) || Cools.isEmpty(locId)) {
+ throw new CoolException("婧愬簱浣嶆垨鐩爣涓虹┖");
+ }
+ Loc sourceLoc = locService.getById(sourceLocId);
+ Loc loc = locService.getById(locId);
+ if (Cools.isEmpty(sourceLoc) || Cools.isEmpty(loc)) {
+ throw new CoolException("婧愬簱浣嶆垨鐩爣涓虹┖");
+ }
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, sourceLoc.getId()));
+ //TODO 鏍规嵁涓嶅悓鐨勮澶囷紝鍙兘鏈変笉鍚岀殑绉诲簱瑙勫垯
+
+ // 淇濆瓨宸ヤ綔妗�
+ Task task = new Task();
+ task.setTaskNo(workService.generateTaskNo(1L));
+ // 浠诲姟鐘舵��
+ task.setTaskSts(11L);
+ // 浠诲姟绫诲瀷
+ task.setTaskType(11L);
+ // 浼樺厛绾�
+ task.setIoPri(1);
+ // 婧愬簱浣�
+ task.setOriginLoc(sourceLoc.getLocNo());
+ // 鐩爣搴撲綅
+ task.setTargetLoc(loc.getLocNo());
+ // 鎵樼洏鐮�
+ task.setBarcode(loc.getBarcode());
+ boolean res = taskService.save(task);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetls) {
+ TaskDetl taskDetl = new TaskDetl();
+ taskDetl.sync(locDetl);
+ taskDetl.setTaskId(task.getId());
+ if (!taskDetlService.save(taskDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocStsId$().equals("D") || sourceLoc.getLocStsId$().equals("F")) {
+ sourceLoc.setLocStsId(LocStsType.R.val()); // R.鍑哄簱棰勭害
+ if (!locService.updateById(sourceLoc)) {
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocStsId$());
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocStsId$().equals("O")) {
+ loc.setLocStsId(LocStsType.S.val()); // S.鍏ュ簱棰勭害
+ if (!locService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocStsId$());
+ }
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
new file mode 100644
index 0000000..6773409
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.wms.asrs.manage;
+
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.controller.req.OutReq;
+import com.zy.asrs.wms.asrs.entity.Loc;
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.Task;
+import com.zy.asrs.wms.asrs.entity.TaskDetl;
+import com.zy.asrs.wms.asrs.entity.param.FieldParam;
+import com.zy.asrs.wms.asrs.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 鍑哄簱绠$悊
+ */
+@Service
+public class OutManage {
+
+ @Autowired
+ private TaskService taskService;
+
+
+ @Autowired
+ private TaskDetlService taskDetlService;
+
+ @Autowired
+ private LocService locService;
+
+ @Autowired
+ private LocDetlService locDetlService;
+
+
+ @Autowired
+ private WorkService workService;
+
+
+ /**
+ * 鑾峰彇搴撳瓨
+ *
+ * @param map
+ */
+ public List<LocDetl> getSuitableMat(Map<String, Object> map) {
+ List<FieldParam> param = new ArrayList<>();
+ map.entrySet().stream().filter(entry -> entry.getValue() != null).forEach(entry -> {
+ FieldParam fieldParam = new FieldParam();
+ fieldParam.setName(entry.getKey());
+ fieldParam.setValue(entry.getValue());
+ param.add(fieldParam);
+ });
+ //TODO 杩欓噷鍔犱笂鍑哄簱瑙勫垯
+ List<LocDetl> stock = locDetlService.getSuitableMat(param, null);
+ return stock;
+ }
+
+ /**
+ * 鍑哄簱
+ *
+ * @param outReq
+ */
+ public void out(OutReq outReq) {
+ Map<Long, List<OutReq.Detl>> map = outReq.getDetls().stream().collect(Collectors.groupingBy(OutReq.Detl::getLocDetlId));
+ map.forEach((k, v) -> {
+ Loc loc = locService.getById(k);
+ processTask(loc, v, outReq.getTargetSite());
+ });
+ }
+
+
+ private void processTask(Loc loc, List<OutReq.Detl> detls, String targetSite) {
+ // 淇濆瓨宸ヤ綔妗�
+ Task task = new Task();
+ task.setTaskNo(workService.generateTaskNo(1L));
+ // 浠诲姟鐘舵��
+ task.setTaskSts(101L);
+ // 浠诲姟绫诲瀷
+ task.setTaskType(101L);
+ // 浼樺厛绾�
+ task.setIoPri(1);
+ // 婧愬簱浣�
+ task.setOriginLoc(loc.getLocNo());
+ // 鐩爣绔欑偣
+ task.setTargetSite(targetSite);
+ // 鎵樼洏鐮�
+ task.setBarcode(loc.getBarcode());
+ boolean res = taskService.save(task);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (OutReq.Detl detl : detls) {
+ LocDetl locDetl = locDetlService.getById(detl.getLocDetlId());
+ TaskDetl taskDetl = new TaskDetl();
+ taskDetl.sync(locDetl);
+ taskDetl.setTaskId(task.getId());
+ if (!taskDetlService.save(taskDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/TaskManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/TaskManage.java
new file mode 100644
index 0000000..478767d
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/TaskManage.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.wms.asrs.manage;
+
+import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper;
+import com.zy.asrs.wms.asrs.service.TaskDetlService;
+import com.zy.asrs.wms.asrs.service.TaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class TaskManage {
+
+ @Autowired
+ private TaskService taskService;
+
+
+ @Autowired
+ private TaskDetlService taskDetlService;
+
+ @Autowired
+ private ViewLocDetlMapper viewLocDetlMapper;
+
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocDetlMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocDetlMapper.java
index 7dcada8..c35c124 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocDetlMapper.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/LocDetlMapper.java
@@ -3,6 +3,10 @@
import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.plugin.Intercepts;
+import org.apache.ibatis.plugin.Signature;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -13,4 +17,6 @@
List<LocDetl> getList(String matnr, String batch, List<Long> ids);
+
+ List<LocDetl> getStock(String matnr, String batch, List<Long> ids);
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
index 026c55a..ed0c5b5 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ViewLocDetlMapper.java
@@ -1,9 +1,12 @@
package com.zy.asrs.wms.asrs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
import com.zy.asrs.wms.asrs.entity.param.FieldParam;
+import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -19,4 +22,7 @@
Map<String,Object> getById(Long id);
+
+ List<Map<String,Object>> getSuitableMat( @Param("param") List<FieldParam> param, @Param("sortParam") List<FieldSortParam> sortParam);
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
index 9c98799..c569982 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/LocDetlService.java
@@ -5,6 +5,7 @@
import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
import com.zy.asrs.wms.asrs.entity.param.FieldParam;
+import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.common.domain.PageParam;
import org.apache.poi.ss.formula.functions.T;
@@ -20,4 +21,6 @@
List<LocDetl> parseLocDetl(List<LocDetl> list);
+ List<LocDetl> getSuitableMat( List<FieldParam> param, List<FieldSortParam> sortParam);
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
index 8457aec..d8aaacc 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
@@ -4,21 +4,24 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.zy.asrs.wms.asrs.entity.LocDetlField;
import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
import com.zy.asrs.wms.asrs.entity.param.FieldParam;
+import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
import com.zy.asrs.wms.asrs.mapper.LocDetlMapper;
-import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper;
import com.zy.asrs.wms.asrs.service.LocDetlFieldService;
import com.zy.asrs.wms.asrs.service.LocDetlService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.common.domain.PageParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
@Service("locDetlService")
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
@@ -84,4 +87,23 @@
}
return list;
}
+
+ /**
+ * 鏍规嵁鍑哄簱鏉′欢鏌ヨ绗﹀悎鐨勫簱瀛�
+ * @param param 鏌ヨ鏉′欢
+ * @param sortParam 鎺掑簭瀛楁
+ * @return
+ */
+ @Override
+ public List<LocDetl> getSuitableMat( List<FieldParam> param, List<FieldSortParam> sortParam) {
+ List<Map<String, Object>> stock = viewLocDetlMapper.getSuitableMat(param, sortParam);
+ List<LocDetl> locDetls = new ArrayList<>();
+ for (Map<String, Object> objectMap : stock) {
+ LocDetl detl = JSON.parseObject(JSON.toJSONString(objectMap), LocDetl.class);
+ detl.syncFieldMap(objectMap);
+ locDetls.add(detl);
+ }
+ return locDetls;
+ }
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java
index efa64fd..c70fd26 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.wms.asrs.service.impl;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.mapper.LocMapper;
import com.zy.asrs.wms.asrs.entity.Loc;
import com.zy.asrs.wms.asrs.service.LocService;
@@ -9,4 +10,6 @@
@Service("locService")
public class LocServiceImpl extends ServiceImpl<LocMapper, Loc> implements LocService {
+
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/FIFOWithdrawalStrategy.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/FIFOWithdrawalStrategy.java
new file mode 100644
index 0000000..b0584be
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/FIFOWithdrawalStrategy.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.wms.asrs.strategy;
+
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.Mat;
+
+/**
+ * 鍏堣繘鍏堝嚭
+ */
+public class FIFOWithdrawalStrategy implements WithdrawalStrategy {
+ @Override
+ public Mat selectMatStrategy(LocDetl storageLocation) {
+
+ return null;
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalService.java
new file mode 100644
index 0000000..4ae95b6
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalService.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.wms.asrs.strategy;
+
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.Mat;
+
+public class WithdrawalService {
+ private WithdrawalStrategy strategy;
+
+ public WithdrawalService(WithdrawalStrategy strategy) {
+ this.strategy = strategy;
+ }
+
+ public Mat withdrawProduct(LocDetl storageLocation) {
+ return strategy.selectMatStrategy(storageLocation);
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalStrategy.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalStrategy.java
new file mode 100644
index 0000000..7de3ed3
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/strategy/WithdrawalStrategy.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wms.asrs.strategy;
+
+import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.Mat;
+
+public interface WithdrawalStrategy {
+ Mat selectMatStrategy(LocDetl locDetl);
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
index 2ede7d5..8962a76 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -64,7 +64,7 @@
//淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗�
List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
- if(taskDetls.isEmpty()) {
+ if (taskDetls.isEmpty()) {
throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
}
for (TaskDetl taskDetl : taskDetls) {
@@ -86,14 +86,14 @@
//鍒犻櫎鏄庣粏鎵╁睍
boolean removeField = taskDetlFieldService.removeById(detlField.getId());
- if(!removeField){
+ if (!removeField) {
throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍澶辫触");
}
}
//鍒犻櫎鏄庣粏
boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
- if(!removeDetl){
+ if (!removeDetl) {
throw new CoolException("鏄庣粏鍒犻櫎澶辫触");
}
}
@@ -117,7 +117,7 @@
if (checkOrderComplete) {
//璁㈠崟宸茬粡瀹屾垚
Order order = orderService.getById(orderDetl.getOrderId());
- if(order == null) {
+ if (order == null) {
throw new CoolException("璁㈠崟涓嶅瓨鍦�");
}
@@ -135,7 +135,7 @@
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }finally {
+ } finally {
InterceptorIgnoreHelper.clearIgnoreStrategy();
}
}
@@ -145,11 +145,100 @@
public void outExecute() {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
try {
+ //鑾峰彇鍏ュ簱瀹屾垚浠诲姟
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 200));
+ if (list.isEmpty()) {
+ return;
+ }
+ for (Task task : list) {
+ Long hostId = task.getHostId();
+
+ //淇濆瓨浠诲姟鍘嗗彶妗�
+ TaskLog taskLog = new TaskLog();
+ taskLog.sync(task);
+ if (!taskLogService.save(taskLog)) {
+ throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�");
+ }
+
+ //鍒犻櫎浠诲姟鍘嗗彶妗f
+ if (!taskService.removeById(task.getId())) {
+ throw new CoolException("鍒犻櫎浠诲姟妗eけ璐�");
+ }
+
+ //淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗�
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+ for (TaskDetl taskDetl : taskDetls) {
+ TaskDetlLog taskDetlLog = new TaskDetlLog();
+ taskDetlLog.sync(taskDetl);
+ if (!taskDetlLogService.save(taskDetlLog)) {
+ throw new CoolException("淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗eけ璐�");
+ }
+
+ //淇濆瓨鏄庣粏鎵╁睍瀛楁鍘嗗彶妗�
+ List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
+ for (TaskDetlField detlField : detlFields) {
+ //鏄庣粏鎵╁睍瀛楁鏁版嵁淇濆瓨鑷冲巻鍙叉。
+ TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog();
+ taskDetlFieldLog.sync(detlField);
+ if (!taskDetlFieldLogService.save(taskDetlFieldLog)) {
+ throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。妗堝け璐�");
+ }
+
+ //鍒犻櫎鏄庣粏鎵╁睍
+ boolean removeField = taskDetlFieldService.removeById(detlField.getId());
+ if (!removeField) {
+ throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍澶辫触");
+ }
+ }
+
+ //鍒犻櫎鏄庣粏
+ boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
+ if (!removeDetl) {
+ throw new CoolException("鏄庣粏鍒犻櫎澶辫触");
+ }
+ }
+
+ //鏇存柊璁㈠崟淇℃伅
+ for (TaskDetl taskDetl : taskDetls) {
+ OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
+ if (orderDetl == null) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme());//宸ヤ綔涓暟閲忓噺灏�
+ orderDetl.setQty(orderDetl.getQty() + taskDetl.getAnfme());//宸插畬鎴愭暟閲忓鍔�
+ orderDetl.setUpdateTime(new Date());
+ if (!orderDetlService.updateById(orderDetl)) {
+ throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
+ }
+
+ //妫�娴嬭鍗曟槸鍚﹀畬鎴�
+ boolean checkOrderComplete = orderService.checkOrderComplete(orderDetl.getOrderId());
+ if (checkOrderComplete) {
+ //璁㈠崟宸茬粡瀹屾垚
+ Order order = orderService.getById(orderDetl.getOrderId());
+ if (order == null) {
+ throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+ }
+
+ order.setOrderSettle(OrderSettleType.COMPLETE.val());
+ order.setUpdateTime(new Date());
+ if (!orderService.updateById(order)) {
+ throw new CoolException("璁㈠崟鏇存柊澶辫触");
+ }
+ }
+ }
+
+
+ }
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }finally {
+ } finally {
InterceptorIgnoreHelper.clearIgnoreStrategy();
}
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index e9a0f64..4b78bed 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -21,20 +21,40 @@
@Autowired
private TaskService taskService;
+
@Autowired
private TaskDetlService taskDetlService;
+
@Autowired
private TaskDetlFieldService taskDetlFieldService;
+
@Autowired
private LocService locService;
+
@Autowired
private LocDetlService locDetlService;
+
@Autowired
private LocDetlFieldService locDetlFieldService;
+
@Autowired
private WaitPakinService waitPakinService;
+
@Autowired
private WaitPakinLogService waitPakinLogService;
+
+ @Autowired
+ private TaskDetlLogService taskDetlLogService;
+
+ @Autowired
+ private TaskDetlFieldLogService taskDetlFieldLogService;
+
+ @Autowired
+ private OrderService orderService;
+
+ @Autowired
+ private OrderDetlService orderDetlService;
+
@Scheduled(cron = "0/3 * * * * ? ")
@Transactional
@@ -53,11 +73,11 @@
switch (task.getTaskType().intValue()) {
case 1://鍏ュ簱
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
- if(loc == null) {
+ if (loc == null) {
throw new CoolException("搴撲綅涓嶅瓨鍦�");
}
- if(loc.getLocStsId() != LocStsType.S.val()){
+ if (loc.getLocStsId() != LocStsType.S.val()) {
throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
}
@@ -70,7 +90,7 @@
List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
- if(taskDetls.isEmpty()) {
+ if (taskDetls.isEmpty()) {
throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
}
@@ -106,7 +126,7 @@
//缁勬墭閫氱煡妗h浆鍘嗗彶妗�
List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, task.getBarcode()).eq(WaitPakin::getHostId, hostId));
- if(waitPakins.isEmpty()) {
+ if (waitPakins.isEmpty()) {
throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪");
}
for (WaitPakin waitPakin : waitPakins) {
@@ -132,7 +152,7 @@
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }finally {
+ } finally {
InterceptorIgnoreHelper.clearIgnoreStrategy();
}
}
@@ -142,11 +162,60 @@
public void outExecute() {
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
try {
+ //鑾峰彇鍑哄簱瀹屾垚浠诲姟
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 199));
+ if (list.isEmpty()) {
+ return;
+ }
+ for (Task task : list) {
+ //鍚屾鏁版嵁
+ Long hostId = task.getHostId();
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId));
+ if (loc == null) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦�");
+ }
+ if (loc.getLocStsId() != LocStsType.R.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
+ }
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+ switch (task.getTaskType().intValue()) {
+ //鍑哄簱
+ case 101:
+ loc.setLocStsId(LocStsType.O.val());
+ loc.setBarcode("");
+ if (!locService.updateById(loc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+ List<LocDetl> detlList = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, loc.getId()).eq(LocDetl::getHostId, hostId));
+ //鍒犻櫎搴撳瓨鏄庣粏
+ for (LocDetl locDetl : detlList) {
+ if (!locDetlService.removeById(locDetl)) {
+ throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+ }
+ List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()).eq(LocDetlField::getHostId, hostId));
+ for (LocDetlField detlField : detlFields) {
+ if (!locDetlFieldService.removeById(detlField)) {
+ throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+ break;
+
+ }
+
+ task.setTaskSts(200L);//200.搴撳瓨鏇存柊瀹屾垚
+ if (!taskService.updateById(task)) {
+ throw new CoolException("搴撳瓨鏇存柊澶辫触");
+ }
+ }
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- }finally {
+ } finally {
InterceptorIgnoreHelper.clearIgnoreStrategy();
}
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/config/MybatisPlusConfig.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/config/MybatisPlusConfig.java
index 7f50413..7a5bf23 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/config/MybatisPlusConfig.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/config/MybatisPlusConfig.java
@@ -65,6 +65,7 @@
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
interceptor.addInnerInterceptor(paginationInnerInterceptor);
+
return interceptor;
}
@@ -92,7 +93,7 @@
}
@Bean
- public ConfigurationCustomizer mybatisConfigurationCustomizer(){
+ public ConfigurationCustomizer mybatisConfigurationCustomizer() {
return configuration -> configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory());
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchEvent.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchEvent.java
new file mode 100644
index 0000000..33ff054
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchEvent.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.wms.common.event;
+
+import org.springframework.context.ApplicationEvent;
+
+
+public class OrderBatchEvent extends ApplicationEvent {
+ private String orderId;
+
+ public OrderBatchEvent(Object source, String orderId) {
+ super(source);
+ this.orderId = orderId;
+ }
+
+ public String getOrderId() {
+ return orderId;
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchListener.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchListener.java
new file mode 100644
index 0000000..5d4b5e9
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/event/OrderBatchListener.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.wms.common.event;
+
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+//瀹炵幇ApplicationListener鎺ュ彛锛屽苟鎸囧畾鐩戝惉鐨勪簨浠剁被鍨�
+@Component
+public class OrderBatchListener implements ApplicationListener<OrderBatchEvent> {
+
+ @Override
+ public void onApplicationEvent(OrderBatchEvent event) {
+ //浣跨敤onApplicationEvent鏂规硶瀵规秷鎭繘琛屾帴鍙楀鐞�
+ String orderId = event.getOrderId();
+ System.out.println("DemoListener鑾峰彇鍒颁簡鐩戝惉娑堟伅:" + orderId);
+
+ }
+}
+
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/MyMetaObjectHandler.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/MyMetaObjectHandler.java
new file mode 100644
index 0000000..17b1423
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/MyMetaObjectHandler.java
@@ -0,0 +1,42 @@
+package com.zy.asrs.wms.common.interceptor;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 瀹炵幇mybatisplus鐨勬帴鍙o紝瀵逛竴浜涘瓧娈电殑鑷姩濉粠
+ */
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+ private static final Logger log = LoggerFactory.getLogger(MyMetaObjectHandler.class);
+
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ log.info("323434323211221");
+// String username = SecurityUtils.getUsername();
+// if (StrUtil.isNotBlank(username)) {
+// this.setFieldValByName("createName", username, metaObject);
+// }
+// this.setFieldValByName("createId", SecurityUtils.getUserId(), metaObject);
+ this.setFieldValByName("createTime", new Date(), metaObject);
+ this.setFieldValByName("status", 1, metaObject);
+ this.setFieldValByName("isDeleted", 0, metaObject);
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ log.info("ceshishsihsshiisis");
+// String username = SecurityUtils.getUsername();
+// if (StrUtil.isNotBlank(username)) {
+// this.setFieldValByName("updateName", username, metaObject);
+// }
+// this.setFieldValByName("updateId", SecurityUtils.getUserId(), metaObject);
+ this.setFieldValByName("updateTime", new Date(), metaObject);
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/StockSortInterceptor.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/StockSortInterceptor.java
new file mode 100644
index 0000000..f05da9e
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/interceptor/StockSortInterceptor.java
@@ -0,0 +1,68 @@
+//package com.zy.asrs.wms.common.interceptor;
+//
+//import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+//import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+//import org.apache.ibatis.executor.Executor;
+//import org.apache.ibatis.mapping.BoundSql;
+//import org.apache.ibatis.mapping.MappedStatement;
+//import org.apache.ibatis.session.ResultHandler;
+//import org.apache.ibatis.session.RowBounds;
+//
+//import java.sql.SQLException;
+//
+//
+//public class StockSortInterceptor implements InnerInterceptor {
+//
+// @Override
+// public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+// // 鑾峰彇鍘熷SQL璇彞
+// String originalSql = boundSql.getSql();
+// // 鍒ゆ柇鏂规硶鏄惁涓虹壒瀹氱殑鏌ヨ鏂规硶
+// if (isSpecificQueryMethod(ms)) {
+// // 娣诲姞鎺掑簭閫昏緫
+// String sql = addSort(originalSql);
+// // 淇敼瀹屾垚鐨剆ql 鍐嶈缃洖鍘�
+// PluginUtils.MPBoundSql mpBoundSql = PluginUtils.mpBoundSql(boundSql);
+// mpBoundSql.sql(sql);
+// }
+// }
+//
+// private boolean isSpecificQueryMethod(MappedStatement ms) {
+// // 妫�鏌appedStatement鐨処D浠ュ垽鏂槸鍚︿负鐗瑰畾鐨勬煡璇㈡柟娉�
+// String statementId = ms.getId();
+// return statementId.equals("com.zy.asrs.wms.asrs.mapper.LocDetlMapper.getStock");
+// }
+//
+// private String addSort(String originalSql) {
+// // 鏍规嵁闇�瑕佹坊鍔犳帓搴忛�昏緫
+// return originalSql + " ORDER BY" + isQueue();
+// }
+//
+// private String isQueue() {
+// //鍏堣繘鍏堝嚭锛氬湪鏌ヨ搴撳瓨璁板綍鏃讹紝鎺掑簭瀛楁鎸夌収man_loc_detl琛ㄧ殑createTime鍗囧簭鎺掑簭
+// return " create_time ASC";
+// }
+//
+// private String isFree() {
+// //璁惧绌洪棽鎯呭喌锛氫紭鍏堟煡璇㈢┖闂茬殑璁惧锛屽湪鏈夌┖闂茬殑璁惧鏃讹紝浠庣┖闂茬殑璁惧瀵瑰簲鐨勮揣鏋朵笂鏌ヨ
+// //TODO
+// return " create_time ASC";
+// }
+//
+// private String isBarcodeDesc() {
+// //鎵樼洏鏈�澶у�奸檷搴忥細灏辨槸鎸夌収鎵樼洏鍙烽檷搴�
+// return " barcode DESC";
+// }
+//
+// private String isBarcodeAsc() {
+// //鎵樼洏鏈�澶у�煎崌搴忥細灏辨槸鎸夌収鎵樼洏鍙峰崌搴�
+// return " barcode ASC";
+// }
+//
+// private String isEven() {
+// // 妤煎眰鍧囧寑鍒嗗竷锛�
+// //TODO
+// return " barcode ASC";
+// }
+//
+//}
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/LocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/LocDetlMapper.xml
index fac81f9..60952f9 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/LocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/LocDetlMapper.xml
@@ -15,5 +15,19 @@
</foreach>
</if>
</select>
+
+ <select id="getStock" resultType="com.zy.asrs.wms.asrs.entity.LocDetl">
+ select * from man_loc_detl
+ where matnr = #{matnr}
+ <if test="batch!=null">
+ and batch = #{batch}
+ </if>
+ <if test="ids!=null and ids.size()>0">
+ and id in
+ <foreach item="item" collection="ids" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ </select>
</mapper>
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
index e5d0179..505c629 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -31,8 +31,25 @@
</select>
<select id="getById" resultType="map">
- select * from view_man_loc_detl
+ select *
+ from view_man_loc_detl
where id = #{id}
</select>
+
+
+ <select id="getSuitableMat" resultType="map">
+ select * from view_man_loc_detl ld
+ where 1=1
+ <if test="param!=null and param.size()>0">
+ <foreach item="item" collection="param" index="index">
+ and ${item.name} ${type} #{item.value}
+ </foreach>
+ </if>
+ <if test="sortParam!=null and sortParam.size()>0">
+ <foreach collection="sortParam" item="order" open="order by " separator="," close=" ">
+ ${item.name} #{item.value}
+ </foreach>
+ </if>
+ </select>
</mapper>
--
Gitblit v1.9.1