From b69671d75ba283f8d47c31ae989b5dd346b62967 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 24 四月 2025 15:17:54 +0800
Subject: [PATCH] #出库任务预调度提升机
---
src/main/resources/docs/台升四向库WCS与货叉提升机PLC通讯接口协议1.1.docx | 0
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 86 +++++++++++++++++
src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java | 1
src/main/java/com/zy/core/action/ForkLiftAction.java | 2
src/main/java/com/zy/asrs/controller/ForkLiftController.java | 31 +++++-
src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java | 39 +++++++
src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java | 5 +
src/main/resources/sql/20250424151727.nb3 | 0
/dev/null | 48 ---------
src/main/java/com/zy/asrs/controller/ShuttleController.java | 2
src/main/java/com/zy/core/enums/WrkIoType.java | 2
src/main/resources/sql/出库任务预调度提升机sql | 1
src/main/java/com/zy/core/MainProcess.java | 3
src/main/java/com/zy/core/thread/ForkLiftThread.java | 4
src/main/java/com/zy/common/service/CommonService.java | 17 +++
src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java | 37 +++++++
src/main/webapp/views/forklift.html | 3
17 files changed, 223 insertions(+), 58 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ForkLiftController.java b/src/main/java/com/zy/asrs/controller/ForkLiftController.java
index 844e50a..747abf8 100644
--- a/src/main/java/com/zy/asrs/controller/ForkLiftController.java
+++ b/src/main/java/com/zy/asrs/controller/ForkLiftController.java
@@ -16,10 +16,7 @@
import com.zy.core.action.ForkLiftAction;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.ForkLiftProtocolStatusType;
-import com.zy.core.enums.ForkLiftTaskModeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.*;
import com.zy.core.model.ForkLiftSlave;
import com.zy.core.model.command.*;
import com.zy.core.model.protocol.ForkLiftProtocol;
@@ -274,7 +271,7 @@
if (param.getLiftTaskMode() == 1) {
//灏忚溅鎹㈠眰
- int workNo = commonService.getWorkNo(99);//鑾峰彇浠诲姟鍙�
+ int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
Integer startSta = param.getSourceStaNo();
Integer targetSta = param.getStaNo();
@@ -296,7 +293,7 @@
return R.ok();
} else if (param.getLiftTaskMode() == 2) {
//绉诲姩鎵樼洏
- int workNo = commonService.getWorkNo(99);//鑾峰彇浠诲姟鍙�
+ int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
Integer startSta = param.getSourceStaNo();
Integer targetSta = param.getStaNo();
@@ -317,6 +314,28 @@
forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
return R.ok();
} else if (param.getLiftTaskMode() == 3) {
+ //绉诲姩
+ int workNo = commonService.getWorkNo(WrkIoType.MANUAL.id);//鑾峰彇浠诲姟鍙�
+
+ Integer startSta = param.getSourceStaNo();
+ Integer targetSta = param.getStaNo();
+
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, startSta, targetSta);
+ ArrayList<ForkLiftCommand> commands = new ArrayList<>();
+ commands.addAll(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(forkLiftProtocol.getLiftNo().shortValue());
+ assignCommand.setTaskNo((short) workNo);
+ assignCommand.setAuto(false);//鎵嬪姩妯″紡
+ assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id.shortValue());
+
+ forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
+ return R.ok();
+ } else if (param.getLiftTaskMode() == 4) {
//浠诲姟纭
forkLiftThread.reset();
return R.ok();
diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java
index 2c0f5bc..983162a 100644
--- a/src/main/java/com/zy/asrs/controller/ShuttleController.java
+++ b/src/main/java/com/zy/asrs/controller/ShuttleController.java
@@ -298,7 +298,7 @@
ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode().intValue());
assignCommand.setShuttleNo(param.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
assignCommand.setTaskMode(shuttleTaskModeType.id);
- assignCommand.setTaskNo(commonService.getWorkNo(99));//鑾峰彇浠诲姟鍙�
+ assignCommand.setTaskNo(commonService.getWorkNo(WrkIoType.MANUAL.id));//鑾峰彇浠诲姟鍙�
assignCommand.setAuto(false);//鎵嬪姩妯″紡
if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) {
diff --git a/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java b/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
deleted file mode 100644
index 4aa3911..0000000
--- a/src/main/java/com/zy/asrs/domain/enums/WorkNoType.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.zy.asrs.domain.enums;
-
-import com.core.exception.CoolException;
-
-/**
- * 宸ヤ綔鍙锋帓搴忚鍒�
- */
-public enum WorkNoType {
-
- PAKIN(0),
- PICK(1),
- PAKOUT(2),
- OTHER(3),
- ;
-
- public Integer type;
-
- WorkNoType(Integer type) {
- this.type = type;
- }
-
- public static Integer getWorkNoType(Integer ioType) {
- switch (ioType) {
- case 1:
- return PAKIN.type;
- case 10:
- return PAKIN.type;
- case 11:
- return PICK.type;
- case 53:
- case 54:
- case 57:
- return PICK.type;
- case 101:
- return PAKOUT.type;
- case 103:
- case 104:
- case 107:
- return PICK.type;
- case 110:
- return PAKOUT.type;
- default:
- break;
- }
- throw new CoolException(ioType + "鐨勪换鍔$被鍨嬫棤娉曠敓鎴愬伐浣滃彿");
- }
-
-}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index ec17584..655216b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -919,6 +919,15 @@
} else {
News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo());
}
+ }else {
+ boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(forkLiftProtocol.getWrkNo(), WrkIoType.FORKLIFT_MOVE.id);
+ if (checkPreviewDispatchForkLift) {
+ //灞炰簬鎻愬崌鏈洪璋冨害绉诲姩浠诲姟
+ //鏃犲伐浣滄。鏀拺锛岀洿鎺ョ‘璁ゅ畬鎴�
+ forkLiftThread.setSyncTaskNo(0);
+ forkLiftThread.reset();
+ News.info("宸茬‘璁ゆ彁鍗囨満棰勮皟搴︾Щ鍔ㄤ换鍔°�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo());
+ }
}
}
}
@@ -1860,4 +1869,81 @@
}
}
+ //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満
+ public void outTaskPreviewDispatchForkLift() {
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .in("wrk_sts"
+ , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
+ ));
+ for (WrkMast wrkMast : wrkMasts) {
+ if(wrkMast.getShuttleNo() == null){
+ continue;
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if(shuttleProtocol.getCurrentLocNo() == null){
+ continue;
+ }
+
+ //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿
+ Integer liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo());
+ if (liftNo == null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+ continue;
+ }
+
+ ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
+ if (forkLiftThread == null) {
+ continue;
+ }
+
+ ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
+ if (forkLiftProtocol == null) {
+ continue;
+ }
+
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+ if (liftWrkMast != null) {
+ continue;//鎻愬崌鏈哄凡琚粦瀹氾紝涓嶅啀鎵ц棰勮皟搴︿换鍔�
+ }
+
+ if (!forkLiftThread.isIdle()) {
+ continue;
+ }
+
+ //鎻愬崌鏈轰笉鍦ㄥ嚭搴撳眰
+ if (forkLiftProtocol.getLev() != Utils.getLev(wrkMast.getSourceLocNo())) {
+ continue;
+ }
+
+ //绉诲姩
+ int workNo = commonService.getWorkNo(WrkIoType.FORKLIFT_MOVE.id);//鑾峰彇浠诲姟鍙�
+
+ //鑾峰彇鎻愬崌鏈哄懡浠�
+ List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo()));
+ ArrayList<ForkLiftCommand> commands = new ArrayList<>();
+ commands.addAll(liftCommand);
+
+ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+ LiftAssignCommand assignCommand = new LiftAssignCommand();
+ assignCommand.setCommands(commands);
+ assignCommand.setLiftNo(forkLiftProtocol.getLiftNo().shortValue());
+ assignCommand.setTaskNo((short) workNo);
+ assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id.shortValue());
+
+ forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand);
+ }
+ }
+
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index c9df23c..fd32480 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -21,8 +21,6 @@
@Autowired
private WrkMastService wrkMastService;
@Autowired
- private WrkMastLogService wrkMastLogService;
- @Autowired
private WrkLastnoService wrkLastnoService;
@Autowired
private LocMastService locMastService;
@@ -65,6 +63,21 @@
return workNo;
}
+ //妫�娴嬪伐浣滃彿鏄惁鍦ㄦ寚瀹氱被鍨嬪伐浣滆寖鍥村唴
+ public synchronized boolean checkWorkNoContainMk(Integer workNo, Integer wrkMk) {
+ WrkLastno wrkLastno = wrkLastnoService.selectById(wrkMk);
+ if (Cools.isEmpty(wrkLastno)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+
+ int sNo = wrkLastno.getSNo();
+ int eNo = wrkLastno.getENo();
+ if (workNo >= sNo && workNo <= eNo) {
+ return true;
+ }
+ return false;
+ }
+
public static String zerofill(String msg, Integer count) {
if (msg.length() == count) {
return msg;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 1f0250b..c9e4c8b 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -66,6 +66,9 @@
//鑷姩鍒囨崲鍑哄叆搴撴ā寮�
mainService.autoSwitchForkLiftIOMode();
+ //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満
+ mainService.outTaskPreviewDispatchForkLift();
+
// 闂撮殧
Thread.sleep(200);
} catch (Exception e) {
diff --git a/src/main/java/com/zy/core/action/ForkLiftAction.java b/src/main/java/com/zy/core/action/ForkLiftAction.java
index b6e7c0f..e7c6a4b 100644
--- a/src/main/java/com/zy/core/action/ForkLiftAction.java
+++ b/src/main/java/com/zy/core/action/ForkLiftAction.java
@@ -148,6 +148,8 @@
response = forkLiftThread.pickAndPut(command);
} else if (command.getMode().intValue() == ForkLiftTaskModeType.SHUTTLE_SWITCH.id) {
response = forkLiftThread.shuttleSwitch(command);
+ } else if (command.getMode().intValue() == ForkLiftTaskModeType.MOVE.id) {
+ response = forkLiftThread.move(command);
}
return response;
}
diff --git a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java
index d49b56e..894c60d 100644
--- a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java
@@ -8,6 +8,7 @@
PUT_DOWN(2, "鏀捐揣"),
PICK_PUT(3, "鍙栨斁璐�"),
SHUTTLE_SWITCH(4, "灏忚溅鎹㈠眰"),
+ MOVE(5, "鎻愬崌鏈虹Щ鍔�"),
;
public Integer id;
diff --git a/src/main/java/com/zy/core/enums/WrkIoType.java b/src/main/java/com/zy/core/enums/WrkIoType.java
index e6fbccb..5926868 100644
--- a/src/main/java/com/zy/core/enums/WrkIoType.java
+++ b/src/main/java/com/zy/core/enums/WrkIoType.java
@@ -9,6 +9,8 @@
SHUTTLE_MOVE(200, "灏忚溅绉诲姩"),
LOC_MOVE(201, "绉诲簱浠诲姟"),
SHUTTLE_CHARGE(300, "灏忚溅鍏呯數"),
+ FORKLIFT_MOVE(98, "鎻愬崌鏈洪璋冨害绉诲姩浠诲姟"),
+ MANUAL(99, "鎵嬪姩浠诲姟"),
;
WrkIoType(int id, String desc) {
diff --git a/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java b/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java
index 6e29736..36a6e91 100644
--- a/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java
@@ -85,6 +85,11 @@
private Integer errorCode;
/**
+ * 褰撳墠灞�
+ */
+ private Integer lev;
+
+ /**
* 浣滀笟鏍囪
*/
private Boolean pakMk = false;
diff --git a/src/main/java/com/zy/core/thread/ForkLiftThread.java b/src/main/java/com/zy/core/thread/ForkLiftThread.java
index 866de88..408ad8c 100644
--- a/src/main/java/com/zy/core/thread/ForkLiftThread.java
+++ b/src/main/java/com/zy/core/thread/ForkLiftThread.java
@@ -24,6 +24,8 @@
CommandResponse shuttleSwitch(ForkLiftCommand command);//灏忚溅鎹㈠眰
+ CommandResponse move(ForkLiftCommand command);//灏忚溅鎹㈠眰
+
CommandResponse reset();//澶嶄綅
boolean isIdle();//鏄惁绌洪棽
@@ -46,4 +48,6 @@
List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put);//灏忚溅鎹㈠眰
+ List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put);//鎻愬崌鏈虹Щ鍔�
+
}
diff --git a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
index 3ee487a..7075597 100644
--- a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
+++ b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
@@ -159,6 +159,8 @@
forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12));
//鏁呴殰鐮�
forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 14));
+ //褰撳墠灞�
+ forkLiftProtocol.setLev((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 16));
//************琛ュ厖鎵╁睍瀛楁*************
InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
@@ -304,6 +306,25 @@
}
@Override
+ public CommandResponse move(ForkLiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
+
+ short[] array = new short[4];
+ array[0] = command.getTaskNo();//浠诲姟鍙�
+ array[1] = command.getMode();//浠诲姟妯″紡
+ array[2] = command.getPick();//鍙栬揣鏁版嵁
+ array[3] = command.getPut();//鏀捐揣鏁版嵁
+ OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
+ if (result.IsSuccess) {
+ OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
+ if (result2.IsSuccess) {
+ response.setResult(true);
+ }
+ }
+ return response;
+ }
+
+ @Override
public CommandResponse reset() {
CommandResponse response = new CommandResponse(false);
OperateResult result = this.masterThread.write(this.slave.getId(), "confirm", (short) 1);
@@ -424,6 +445,24 @@
return commands;
}
+ @Override
+ public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
+ Integer realPick = pick % 1000;
+ Integer realPut = put % 1000;
+
+ List<ForkLiftCommand> commands = new ArrayList<>();
+ ForkLiftCommand command = new ForkLiftCommand();
+ command.setLiftNo(slave.getId());
+ command.setTaskNo(taskNo.shortValue());
+ command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
+ command.setPick(realPick.shortValue());
+ command.setPut(realPut.shortValue());
+ command.setConfirm((short) 1);
+
+ commands.add(command);
+ return commands;
+ }
+
/**
* 鎵╁睍瀛楁
*/
diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
index fc0c40c..e795ce3 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
@@ -285,6 +285,25 @@
}
@Override
+ public CommandResponse move(ForkLiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
+
+ short[] array = new short[4];
+ array[0] = command.getTaskNo();//浠诲姟鍙�
+ array[1] = command.getMode();//浠诲姟妯″紡
+ array[2] = command.getPick();//鍙栬揣鏁版嵁
+ array[3] = command.getPut();//鏀捐揣鏁版嵁
+ OperateResult result = siemensS7Net.Write("DB103.0", array);
+ if (result.IsSuccess) {
+ OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm());
+ if (result2.IsSuccess) {
+ response.setResult(true);
+ }
+ }
+ return response;
+ }
+
+ @Override
public CommandResponse reset() {
CommandResponse response = new CommandResponse(false);
OperateResult result = siemensS7Net.Write("DB103.10", (short) 1);
@@ -405,6 +424,24 @@
return commands;
}
+ @Override
+ public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
+ Integer realPick = pick % 1000;
+ Integer realPut = put % 1000;
+
+ List<ForkLiftCommand> commands = new ArrayList<>();
+ ForkLiftCommand command = new ForkLiftCommand();
+ command.setLiftNo(slave.getId());
+ command.setTaskNo(taskNo.shortValue());
+ command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
+ command.setPick(realPick.shortValue());
+ command.setPut(realPut.shortValue());
+ command.setConfirm((short) 1);
+
+ commands.add(command);
+ return commands;
+ }
+
/**
* 鎵╁睍瀛楁
*/
diff --git "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx" "b/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx"
index cecd73a..bdd75fd 100644
--- "a/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx"
+++ "b/src/main/resources/docs/\345\217\260\345\215\207\345\233\233\345\220\221\345\272\223WCS\344\270\216\350\264\247\345\217\211\346\217\220\345\215\207\346\234\272PLC\351\200\232\350\256\257\346\216\245\345\217\243\345\215\217\350\256\2561.1.docx"
Binary files differ
diff --git a/src/main/resources/sql/20250424151727.nb3 b/src/main/resources/sql/20250424151727.nb3
new file mode 100644
index 0000000..eaa242a
--- /dev/null
+++ b/src/main/resources/sql/20250424151727.nb3
Binary files differ
diff --git "a/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql" "b/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql"
new file mode 100644
index 0000000..a19b11e
--- /dev/null
+++ "b/src/main/resources/sql/\345\207\272\345\272\223\344\273\273\345\212\241\351\242\204\350\260\203\345\272\246\346\217\220\345\215\207\346\234\272sql"
@@ -0,0 +1 @@
+INSERT INTO `asr_wrk_lastno` (`wrk_mk`, `wrk_no`, `modi_user`, `modi_time`, `appe_user`, `appe_time`, `s_no`, `e_no`, `memo_m`) VALUES (98, 35001, 9527, '2025-04-24 14:57:34', 9527, '2025-04-24 14:57:39', 35001, 40000, NULL);
\ No newline at end of file
diff --git a/src/main/webapp/views/forklift.html b/src/main/webapp/views/forklift.html
index 2f5c1a0..0e69f9f 100644
--- a/src/main/webapp/views/forklift.html
+++ b/src/main/webapp/views/forklift.html
@@ -91,7 +91,8 @@
</div>
<button class="item" onclick="liftOperator(1)">灏忚溅鎹㈠眰</button>
<button class="item" onclick="liftOperator(2)">绉诲姩鎵樼洏</button>
- <button class="item" onclick="liftOperator(3)">浠诲姟纭</button>
+ <button class="item" onclick="liftOperator(3)">绉诲姩</button>
+ <button class="item" onclick="liftOperator(4)">浠诲姟纭</button>
<button class="item" onclick="liftOperator(0)">澶嶄綅</button>
</div>
</fieldset>
--
Gitblit v1.9.1