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