From abe957080b5b2f960f414c8ae10a67be0d418ce7 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期六, 08 六月 2024 10:32:34 +0800
Subject: [PATCH] 增加并板出库功能(PDA端)
---
src/main/resources/mapper/OrderDetlMapper.xml | 16 +++
src/main/java/com/zy/asrs/service/OrderDetlService.java | 2
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 2
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 34 ++++--
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 3
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | 5 +
src/main/java/com/zy/asrs/entity/param/PickConfirmParam.java | 16 +++
src/main/java/com/zy/asrs/controller/MobileController.java | 193 +++++++++++++++++++++++++++++++++++++-
src/main/java/com/zy/asrs/entity/param/PickMatParam.java | 20 ++++
9 files changed, 271 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 232ba46..00dff10 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -9,15 +9,13 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.OffSaleParam;
+import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
-import com.zy.common.model.LocDto;
-import com.zy.common.model.TaskDto;
import com.zy.common.model.WrkDto;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@@ -55,7 +53,12 @@
private PackService packService;
@Autowired
private ManLocDetlMapper manLocDetlMapper;
-
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private MatService matService;
// 鍟嗗搧涓婃灦
@RequestMapping("/mat/onSale/auth")
@@ -358,4 +361,182 @@
return mobileService.manDetlOut(json);
}
+ @RequestMapping("/loc/f/list")
+ @ManagerAuth(memo = "鑾峰彇鍦ㄥ簱搴撲綅")
+ public R locNoF(@RequestParam(required = false) String locNo){
+ Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", "F");
+ if (!Cools.isEmpty(locNo)) {
+ wrapper.like("loc_no", locNo);
+ }
+ List<LocMast> list = locMastService.selectList(wrapper);
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/sta/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘绔�")
+ public R pickSta(){
+ List<StaDesc> list = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no",104));
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/mat/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡")
+ public R pickMats(@RequestParam(required = false) String matnr){
+ List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().like("doc_name", "鍏ュ簱"));
+ ArrayList<Long> typeList = new ArrayList<>();
+ for (DocType docType : docTypes) {
+ typeList.add(docType.getDocId());
+ }
+
+ EntityWrapper<Order> wrapper = new EntityWrapper<>();
+ wrapper.eq("status", 1);
+ wrapper.in("doc_type", typeList);
+ List<Order> orders = orderService.selectList(wrapper);
+
+ ArrayList<Long> orderIds = new ArrayList<>();
+ for (Order order : orders) {
+ orderIds.add(order.getId());
+ }
+
+ //鎼滅储鏄庣粏
+ Wrapper<OrderDetl> wrapper1 = new EntityWrapper<OrderDetl>();
+ wrapper1.eq("status", 1);
+ wrapper1.in("order_id", orderIds);
+ if (!Cools.isEmpty(matnr)) {
+ wrapper1.like("matnr", matnr);
+ }
+
+ List<OrderDetl> list = orderDetlService.selectList(wrapper1);
+
+ ArrayList<PickMatParam> maps = new ArrayList<>();
+ for (OrderDetl orderDetl : list) {
+ //鍓╀綑鍙敤鏁伴噺
+ double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+ if (count <= 0) {
+ continue;
+ }
+
+ PickMatParam matParam = new PickMatParam();
+ matParam.setMatnr(orderDetl.getMatnr());
+ matParam.setBatch(orderDetl.getBatch());
+ matParam.setOrderNo(orderDetl.getOrderNo());
+ matParam.setOrderId(orderDetl.getOrderId());
+ matParam.setCount(count);
+ matParam.setUseCount(0D);
+ maps.add(matParam);
+ }
+ return R.ok().add(maps);
+ }
+
+ @RequestMapping("/pick/in")
+ @ManagerAuth(memo = "骞舵澘鍏ュ簱")
+ @Transactional
+ public R pickConfirm(@RequestBody PickConfirmParam param){
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+ if (!locMast.getLocSts().equals("F")) {
+ return R.error("搴撲綅鐘舵�佷笉鏄湪搴�");
+ }
+
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+ .eq("type_no", 104)
+ .eq("stn_no", param.getStaNo()));
+ if (staDesc == null) {
+ return R.error("绔欑偣涓嶅瓨鍦�");
+ }
+
+ //妫�楠屼紶鍙傛槸鍚﹀拰璁㈠崟鏄庣粏鍖归厤
+ for (PickMatParam matParam : param.getList()) {
+ Wrapper<OrderDetl> wrapper = new EntityWrapper<OrderDetl>()
+ .eq("order_no", matParam.getOrderNo())
+ .eq("status", 1)
+ .eq("matnr", matParam.getMatnr());
+ if (!Cools.isEmpty(matParam.getBatch())) {
+ wrapper.eq("batch", matParam.getBatch());
+ }
+ OrderDetl orderDetl = orderDetlService.selectOne(wrapper);
+ if (orderDetl == null) {
+ return R.error("鐗╂枡鏁版嵁涓嶅瓨鍦�");
+ }
+
+ //鍓╀綑鍙敤鏁伴噺
+ double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+ if (matParam.getCount() != count) {
+ return R.error("鐗╂枡鏁版嵁宸茶繃鏈�");
+ }
+
+ if (matParam.getUseCount() > count) {
+ return R.error("鍙敤鏁伴噺涓嶈冻");
+ }
+ }
+
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(104));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
+ wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("Y"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(getUserId()); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(getUserId());
+ wrkMast.setModiTime(now);
+ wrkMast.setCrnNo(staDesc.getCrnNo());
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + param.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (PickMatParam matParam : param.getList()) {
+ EntityWrapper<Mat> wrapper = new EntityWrapper<>();
+ wrapper.eq("status", 1);
+ wrapper.eq("matnr", matParam.getMatnr());
+ Mat mat = matService.selectOne(wrapper);
+ if (mat == null) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鐗╂枡淇℃伅涓嶅瓨鍦細" + matParam.getMatnr());
+ }
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(mat);
+ wrkDetl.setOrderNo(matParam.getOrderNo());
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(matParam.getUseCount()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(getUserId());
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(getUserId());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
+ //鏇存柊璁㈠崟宸ヤ綔鏁伴噺
+ orderDetlService.increaseWorkQtyByOrderNo(matParam.getOrderNo(), matParam.getMatnr(), matParam.getBatch(), matParam.getUseCount());
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts("P");
+ locMast.setModiUser(getUserId());
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + param.getLocNo());
+ }
+ } else {
+ throw new CoolException(param.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/entity/param/PickConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/PickConfirmParam.java
new file mode 100644
index 0000000..f688ef2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickConfirmParam.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PickConfirmParam {
+
+ private String locNo;
+
+ private Integer staNo;
+
+ private List<PickMatParam> list;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/PickMatParam.java b/src/main/java/com/zy/asrs/entity/param/PickMatParam.java
new file mode 100644
index 0000000..912fb38
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickMatParam.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class PickMatParam {
+
+ private String matnr;
+
+ private String batch;
+
+ private String orderNo;
+
+ private Long orderId;
+
+ private Double count;
+
+ private Double useCount;
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 497cc9d..8d8bbd6 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -56,4 +56,7 @@
* @return 搴撳瓨鏁伴噺
*/
Long selectCountToManByMatnr(@Param("matnr") String matnr,@Param("batch") String batch);
+
+ int increaseWorkQtyByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("qty") Double qty);
+
}
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 78708f9..c586e5d 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -52,4 +52,6 @@
* @return 杩斿洖涓や釜閿�煎锛宎srCount鍦ㄧ珛搴撳簱瀛橈紝manCount鍦ㄥ钩搴撳簱瀛�
*/
Map<String,Long> selectCountByMatnr(String matnr, String batch);
+
+ boolean increaseWorkQtyByOrderNo(String orderNo, String matnr, String batch, Double qty);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index db16b05..8126ad5 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -127,4 +127,9 @@
map.put("manCount",orderDetlMapper.selectCountToManByMatnr(matnr, batch));
return map;
}
+
+ @Override
+ public boolean increaseWorkQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) {
+ return this.baseMapper.increaseWorkQtyByOrderNo(orderNo, matnr, batch, qty) > 0;
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 977a63a..0f50023 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -73,7 +73,7 @@
if (complete) {
for (OrderDetl orderDetl : orderDetls) {
//鐢熸垚鍗曟嵁鍜屽叆搴撻�氱煡妗f椂锛岀粰batch涓虹┖鐨勬槑缁嗚祴浜嗕竴涓� =""锛� 鐜板湪鏀逛负null锛屽洖浼犵敤
- if (orderDetl.getBatch().equals("")){
+ if (!Cools.isEmpty(orderDetl.getBatch()) && orderDetl.getBatch().equals("")){
orderDetl.setBatch(null);
orderDetlService.updateById(orderDetl);
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 68ac6c0..7d518be 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -204,19 +204,15 @@
// 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
if (wrkDetls54.isEmpty()) {
-// exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ exceptionHandle("骞舵澘鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
}
// 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
for (WrkDetl wrkDetl:wrkDetls54) {
LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
if (null != locDetl) {
- if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
-// exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ if (!locDetlService.updateAnfme(locDetl.getAnfme() + wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+ exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
}
} else {
locDetl = new LocDetl();
@@ -227,11 +223,25 @@
locDetl.setModiTime(now);
locDetl.setAppeTime(now);
if (!locDetlService.insert(locDetl)) {
-// exceptionHandle("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ exceptionHandle("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
}
}
+
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+ if (orderDetl == null) {
+ orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+ }
+ try {
+ if(!Cools.isEmpty(orderDetl)){
+ if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ orderDetl.getBatch(), wrkDetl.getAnfme())) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ }
+ }
+ } catch (Exception ignore){}
+
}
// 淇敼搴撲綅鐘舵�� Q ====>> F
if (locMast.getLocSts().equals("Q")) {
@@ -240,9 +250,7 @@
locMast.setIoTime(now);
locMast.setModiTime(now);
if (!locMastService.updateById(locMast)) {
-// exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
}
}
break;
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index d7238bd..3cecff7 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -246,4 +246,20 @@
</choose>
</update>
+ <update id="increaseWorkQtyByOrderNo">
+ update man_order_detl
+ set work_qty = work_qty + #{qty}
+ where 1=1
+ and order_no = #{orderNo}
+ and matnr = #{matnr}
+ <choose>
+ <when test="batch != null and batch != ''">
+ and batch = #{batch}
+ </when>
+ <otherwise>
+ and (batch IS NULL OR batch = '')
+ </otherwise>
+ </choose>
+ </update>
+
</mapper>
--
Gitblit v1.9.1