From 3614fc3249b3de228000234d384e07b97c0079ec Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 11 十月 2023 16:48:03 +0800
Subject: [PATCH] 单据自动完结
---
src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java | 4
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 11 +-
src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java | 2
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 162 ++++++++++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/service/AgvWrkDetlService.java | 2
src/main/java/com/zy/asrs/controller/AgvWorkController.java | 14 +++
src/main/webapp/static/js/agvWrkMast/wrkMast.js | 10 +-
src/main/webapp/static/js/common.js | 1
src/main/java/com/zy/asrs/service/AgvWorkService.java | 10 ++
9 files changed, 203 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
index 0e7637e..8fe7e30 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
@@ -40,4 +40,18 @@
workService.adjustLocDetl(param, getUserId());
return R.ok("搴撳瓨璋冩暣鎴愬姛");
}
+
+ @RequestMapping("/hand/control/wrkMast")
+ @ManagerAuth(memo = "鎵嬪姩澶勭悊宸ヤ綔妗�")
+ public R handControlWrkMast(@RequestParam String workNo,
+ @RequestParam Integer type){
+ if (type == 1) {
+ workService.completeWrkMast(workNo, getUserId());
+ return R.ok("宸ヤ綔妗e凡瀹屾垚");
+ } else if (type == 2) {
+ workService.cancelWrkMast(workNo, getUserId());
+ return R.ok("宸ヤ綔妗e凡鍙栨秷");
+ }
+ return R.ok();
+ }
}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java
index 0715ccf..0fab304 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java
@@ -5,6 +5,7 @@
import com.zy.asrs.entity.WrkDetl;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -13,7 +14,8 @@
@Repository
public interface AgvWrkDetlMapper extends BaseMapper<AgvWrkDetl> {
- List<WrkDetl> selectByWrkNo(Integer wrkNo);
+ @Select("SELECT * FROM agv_wrk_detl WHERE wrk_no = #{wrkNo}")
+ List<AgvWrkDetl> selectByWrkNo(@Param("wrkNo")Integer wrkNo);
int deleteItem(@Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch);
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
index cdc2396..9056644 100644
--- a/src/main/java/com/zy/asrs/service/AgvWorkService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -49,4 +49,14 @@
*/
void adjustLocDetl(LocDetlAdjustParam param, Long userId);
+ /**
+ * 鎵嬪姩瀹屾垚宸ヤ綔妗�
+ */
+ void completeWrkMast(String workNo, Long userId);
+
+ /**
+ * 鎵嬪姩鍙栨秷宸ヤ綔妗�
+ */
+ void cancelWrkMast(String workNo, Long userId);
+
}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
index d9522c0..3447454 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
@@ -10,7 +10,7 @@
//void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId);
- List<WrkDetl> selectByWrkNo(Integer wrkNo);
+ List<AgvWrkDetl> selectByWrkNo(Integer wrkNo);
boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch);
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index bbd57fe..cf82a7a 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -24,6 +25,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
/**
* Created by vincent on 2020/6/11
@@ -59,6 +61,10 @@
private OrderDetlService orderDetlService;
@Autowired
private AdjDetlService adjDetlService;
+ @Autowired
+ private AgvWrkMastLogService agvWrkMastLogService;
+ @Autowired
+ private AgvWrkDetlLogService agvWrkDetlLogService;
/*
@@ -434,6 +440,162 @@
}
}
+ @Override
+ @Transactional
+ public void completeWrkMast(String workNo, Long userId) {
+ AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)){
+ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+ if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) {
+ throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+ }
+ // 鍏ュ簱 + 搴撲綅杞Щ
+ if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+ wrkMast.setWrkSts(9L);
+ // 鍑哄簱
+ } else if (wrkMast.getWrkSts() > 20) {
+ wrkMast.setWrkSts(29L);
+ }
+ Date now = new Date();
+ wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩瀹屾垚");
+ if (!agvWrkMastService.updateById(wrkMast)) {
+ throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+ }
+ }
+
+ @Transactional
+ public void cancelWrkMast(String workNo, Long userId) {
+ AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
+ if (Cools.isEmpty(wrkMast)){
+ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+ }
+
+ if (wrkMast.getWrkSts() == 200) {
+ //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
+ agvWrkMastService.deleteById(wrkMast);
+ return;
+ }
+
+ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+ String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+ // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+ if (wrkMast.getWrkSts() < 9) {
+ locNo = wrkMast.getLocNo();
+ locSts = "O";
+
+ // 搴撲綅杞Щ
+ if (wrkMast.getIoType() == 11) {
+ // 搴撲綅杞Щ锛氭簮搴撲綅
+ AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getSourceLocNo());
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts("F");
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ agvLocMastService.updateById(locMast);
+ }
+ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+ } else if (wrkMast.getWrkSts() > 20) {
+ locNo = wrkMast.getSourceLocNo();
+ // 鍑哄簱 ===>> F.鍦ㄥ簱
+ if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+ locSts = "F";
+ // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 110) {
+ locSts = "D";
+ // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+ } else if (wrkMast.getIoType() == 11) {
+ locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+ // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+ AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getLocNo());
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
+ }
+ locMast.setLocSts("O");
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ agvLocMastService.updateById(locMast);
+ }
+ } else {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
+ }
+ // 璁㈠崟鍏宠仈
+ List<AgvWrkDetl> wrkDetls = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ for (AgvWrkDetl wrkDetl : wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
+ if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+ throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+ }
+ } else {
+ // 璁㈠崟鍚堝苟鍑哄簱
+
+ //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
+ Double wrkDetlAnfme = wrkDetl.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
+ List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
+ for (OrderDto orderDto : orderDtoList) {
+
+ if(wrkDetlAnfme > orderDto.getAnfme()){
+ orderAnfme = orderDto.getAnfme();
+ wrkDetlAnfme -= orderAnfme;
+ }else {
+ orderAnfme = wrkDetlAnfme;
+ }
+
+ if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
+ throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+ }
+ }
+ }
+ }
+ }
+ // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+ wrkMast.setManuType("鎵嬪姩鍙栨秷");
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ if (!agvWrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!agvWrkMastLogService.save(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔涓绘。
+ boolean wrkMastRes = agvWrkMastService.deleteById(wrkMast);
+
+ if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (!agvWrkDetlLogService.save(wrkMast.getWrkNo())) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+ }
+ // 鍒犻櫎宸ヤ綔妗f槑缁�
+ boolean wrkDetlRes = agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", workNo));
+ }
+
+ // 淇敼搴撲綅鐘舵��
+ AgvLocMast locMast = agvLocMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+ }
+ locMast.setLocSts(locSts);
+ locMast.setModiTime(new Date());
+ locMast.setModiUser(userId);
+ boolean locMastRes = agvLocMastService.updateById(locMast);
+ if (!wrkMastRes || !locMastRes) {
+ throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+ }
+ }
+
/*
鏇存柊鐩爣搴撲綅淇℃伅
*/
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
index 647b9b3..f8cd847 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
@@ -50,7 +50,7 @@
}
*/
@Override
- public List<WrkDetl> selectByWrkNo(Integer wrkNo) {
+ public List<AgvWrkDetl> selectByWrkNo(Integer wrkNo) {
return this.baseMapper.selectByWrkNo(wrkNo);
}
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index ef79460..3a59dba 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -80,6 +80,12 @@
//淇敼婧愬簱浣嶇姸鎬佷负O
agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
}
+
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+
if(!isJSON(orderNo)){
//妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
orderService.checkComplete(orderNo);
@@ -90,11 +96,6 @@
orderService.checkComplete(o);
});
}
-
- //鍒犻櫎AGV宸ヤ綔妗�
- agvWrkMastService.deleteById(wrkNo);
- //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
return SUCCESS;
}
diff --git a/src/main/webapp/static/js/agvWrkMast/wrkMast.js b/src/main/webapp/static/js/agvWrkMast/wrkMast.js
index 85ad9a2..63ae9f5 100644
--- a/src/main/webapp/static/js/agvWrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/agvWrkMast/wrkMast.js
@@ -320,7 +320,7 @@
// 瀹屾垚
case 'complete':
layer.confirm('纭瀹屾垚璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
- http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) {
+ http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) {
$(".layui-laypage-btn")[0].click();
layer.msg(data.wrkNo + res.msg);
})
@@ -332,7 +332,7 @@
case 'cancel':
if (data.pdcType === "Y") {
layer.confirm('褰撳墠浠诲姟鍏宠仈ERP閿�鍞崟锛屽彇娑堝皢閲嶆柊鐢熸垚鍑哄簱浣滀笟锛屾槸鍚︾户缁紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
- http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
+ http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
$(".layui-laypage-btn")[0].click();
layer.msg(data.wrkNo + res.msg);
})
@@ -340,7 +340,7 @@
});
} else {
layer.confirm('纭鍙栨秷璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
- http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
+ http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
$(".layui-laypage-btn")[0].click();
layer.msg(data.wrkNo + res.msg);
})
@@ -351,7 +351,7 @@
// 鎷f枡鍏ュ簱
case 'pick':
layer.confirm('鎷f枡鍏ュ簱璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
- http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:3}, function (res) {
+ http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:3}, function (res) {
$(".layui-laypage-btn")[0].click();
layer.msg(data.wrkNo + res.msg);
})
@@ -361,7 +361,7 @@
// 鍏堝叆鍝�
case 'preHave':
layer.confirm('浠诲姟鍙戠敓鍏堝叆鍝佸紓甯搞�傚闇�閲嶆柊鍏ュ簱锛岃纭繚璐х墿宸叉斁鑷冲爢鍨涙満鍑哄簱绔欙紒', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){
- http.post(baseUrl+"/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) {
+ http.post(baseUrl+"/agv/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) {
$(".layui-laypage-btn")[0].click();
layer.msg(data.wrkNo + res.msg, {icon: 1});
})
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index b409c37..6b2f84a 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -228,6 +228,7 @@
,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', hide: false, width: 110}
,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜',hide: true}
,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜'}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: true}
,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О'}
,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
--
Gitblit v1.9.1