From a29aa2ea80eaaea6acff08068a04de47b69478a8 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 19 七月 2024 10:05:19 +0800
Subject: [PATCH] 盘点出入库接口开发
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 102 ++++++++++++++++++++++++++++++++-
src/main/java/com/zy/asrs/controller/MobileController.java | 9 +++
src/main/java/com/zy/asrs/entity/param/PdckqrParam.java | 31 ++++++++++
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 24 +++++--
src/main/java/com/zy/asrs/service/MobileService.java | 8 ++
5 files changed, 163 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 0ce894b..2077292 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -554,4 +554,13 @@
return R.ok("澶嶆牳纭鎴愬姛");
}
+ @PostMapping("/pdckqr/auth")
+ @ManagerAuth(memo = "鐩樼偣鍑哄簱纭")
+ public synchronized R pdckqr(@RequestBody PdckqrParam param) {
+ // 鏍规嵁宸ヤ綔鍙风‘璁ゅ鏍�
+ if(Cools.isEmpty(param) || Cools.isEmpty(param.getWorkNo()) || Cools.isEmpty(param.getMaterials())){
+ return R.parse(BaseRes.PARAM);
+ }
+ return mobileService.pdckqr(param);
+ }
}
diff --git a/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java b/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java
new file mode 100644
index 0000000..6e749b1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PdckqrParam.java
@@ -0,0 +1,31 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鐩樼偣鍑哄簱纭
+ * @createDate 2024/7/18 16:23
+ */
+@Data
+public class PdckqrParam {
+
+ private Integer workNo;
+
+ private List<Material> materials;
+
+ @Data
+ public static class Material {
+ /**
+ * 鍗峰彿
+ */
+ private String rollNo;
+
+ /**
+ * 绠卞彿
+ */
+ private String boxNo;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 6174796..b187f84 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service;
import com.alibaba.fastjson.JSONObject;
+import com.core.common.R;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetl;
@@ -48,4 +49,11 @@
* 鍑哄簱澶嶆牳纭
*/
void pakoutFhqr(Integer workNo, Integer check);
+
+ /**
+ * 鐩樼偣鍑哄簱纭
+ * @param param 鎵弿淇℃伅
+ * @return 200鎴愬姛锛屽叾浠栧け璐�
+ */
+ R pdckqr(PdckqrParam param);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 5880371..472cf6a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,10 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
@@ -27,6 +24,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.util.*;
/**
@@ -85,7 +83,11 @@
private TagService tagService;
@Autowired
private BasBoxTypeService basBoxTypeService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+ @Resource
+ private OpenServiceImpl openServiceImpl;
@Override
@Transactional
@@ -1185,6 +1187,98 @@
@Override
@Transactional
+ public R pdckqr(PdckqrParam param) {
+ WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo());
+ if (wrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getWorkNo());
+ }
+ if (wrkMast.getIoType() != 107 || wrkMast.getWrkSts() != 2) {
+ throw new CoolException(param.getWorkNo() + "宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(param.getWorkNo());
+ List<PdckqrParam.Material> materials = param.getMaterials();
+
+ boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials);
+ if (isFullyCancelled) { // 鐩樼偣鐗╂枡纭垚鍔燂紝宸ヤ綔妗h浆鎹� 鐩樼偣鍑哄簱->鐩樼偣鍐嶅叆搴擄紝涓嬪彂鍥炲簱鍛戒护
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵��: 14.宸插嚭搴撴湭纭
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+
+ // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+ openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo());
+
+ return R.ok("鐩樼偣纭鎴愬姛");
+
+ } else { // 鐗╂枡涓嶄竴鑷�
+ // todo 涓嶄竴鑷寸殑澶勭悊澶勭悊鏂规硶寰呭畾
+
+ }
+
+ return R.error("鐩樼偣纭寮傚父");
+ }
+
+ /**
+ * 姣旇緝涓や釜闆嗗悎鐨勭被鐨勫睘鎬э紝鐩稿悓鍒欐姷娑堬紝鏈�鍚庡垽鏂袱涓泦鍚堟槸鍚﹀畬鍏ㄦ姷娑�
+ */
+ public boolean compareAndCheckCancellation(List<WrkDetl> list1, List<PdckqrParam.Material> list2) {
+ if (list1.size() != list2.size()) {
+ return false; // If lists are not of the same size, cancellation is not possible
+ }
+
+ List<PdckqrParam.Material> remainingList2 = new ArrayList<>(list2);
+
+ // Compare and cancel out elements
+ for (WrkDetl p1 : list1) {
+ boolean cancelled = false;
+ for (PdckqrParam.Material p2 : remainingList2) {
+ if (p1.getBatch().equals(p2.getBoxNo()) && p1.getModel().equals(p2.getRollNo())) { // 鍗峰彿鍜岀鍙风浉鍚�
+ remainingList2.remove(p2);
+ cancelled = true;
+ break;
+ }
+ }
+ if (!cancelled) {
+ return false; // If any element in list1 cannot be cancelled, return false
+ }
+ }
+
+ return remainingList2.isEmpty(); // Return true if all elements in list1 were cancelled out
+ }
+
+ @Override
+ @Transactional
public List<Map<String, Object>> boxTypeComb() {
EntityWrapper<BasBoxType> wrapper = new EntityWrapper<>();
List<Map<String, Object>> result = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 1762a66..869bbeb 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
@@ -1352,14 +1353,23 @@
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
}
-
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
// 鏇存柊宸ヤ綔绫诲瀷103->53
wrkMast.setIoType(53);
wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
- Integer staNo = wrkMast.getStaNo();
// 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
- wrkMast.setStaNo(wrkMast.getSourceStaNo());
- wrkMast.setSourceStaNo(staNo);
+ wrkMast.setSourceStaNo(wrkMast.getStaNo());
+ wrkMast.setStaNo(staNo);
// 鐩爣搴撲綅=婧愬簱浣�
wrkMast.setLocNo(wrkMast.getSourceLocNo());
// 婧愬簱浣嶆竻闄�
@@ -1417,7 +1427,7 @@
return wrkDetls.size() > 1 ? 0 : 1; // 涓�鏉¤褰曞氨鏄竴鍗�
}
- private void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
+ public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
boolean success = false;
// 鑾峰彇璇锋眰澶�
Map<String, Object> headers = getHeaders();
@@ -1456,10 +1466,10 @@
// 淇濆瓨鎺ュ彛鏃ュ織
apiLogService.save(
"鍏ュ簱",
- MesConstant.URL + MesConstant.PAKIN_URL,
+ MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL,
null,
"127.0.0.1",
- jsonObject.toJSONString(),
+ body,
response,
success
);
--
Gitblit v1.9.1