From 0bedfead3ffe6d2251d7428d772de0a4df6b5201 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 21 七月 2025 15:52:49 +0800
Subject: [PATCH] 1.向mes查询物料 2.入库上报mes
---
src/main/java/com/zy/common/web/WcsController.java | 266 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 226 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 6365efd..ee11139 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -1,23 +1,31 @@
package com.zy.common.web;
+import com.alibaba.fastjson.JSON;
+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.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.StatusParam;
import com.zy.asrs.service.*;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -42,60 +50,139 @@
@Autowired
private WaitPakinService waitPakinService;
@Autowired
- private LocDetlService locDetlService;
+ private LocDetlService locDetlService;
+ @Autowired
+ private RowLastnoService rowLastnoService;
+ @Autowired
+ private WorkService workService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Value("${wcs-slave.url}")
+ private String url;
+ @Value("${wcs-slave.loc}")
+ private String loc;
- @PostMapping("/pakin/loc/v1")
+ @PostMapping("/fromwcs/inware-task")
@ResponseBody
- public synchronized R getLocNo(@RequestBody SearchLocParam param) {
- if (Cools.isEmpty(param.getIoType())) {
- return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+ public synchronized Re getLocNo(@RequestBody SearchLocParam param) {
+ log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+ if (Cools.isEmpty(param.getCargoHeight())) {
+ return Re.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
}
- if (Cools.isEmpty(param.getSourceStaNo())) {
- return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+ if (Cools.isEmpty(param.getFromPort())) {
+ return Re.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
}
List<WaitPakin> waitPakins = null;
- if (param.getIoType() == 1) {
- if (Cools.isEmpty(param.getBarcode())) {
- return R.error("鏉$爜涓嶈兘涓虹┖");
+ if (param.getFromPort().equals("100")) {
+
+ //鏈夌┖鏉垮嚭搴撴椂绂佹鍏ュ簱
+ int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100).notIn("wrk_sts",7));
+ if(wrkCount > 0){
+ return Re.error("鏈夌┖鏉垮嚭搴撳埌100绔欐椂鏃剁姝㈠叆搴�");
}
- waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+
+ if (Cools.isEmpty(param.getBarCode())) {
+ return Re.error("鏉$爜涓嶈兘涓虹┖");
+ }
+ waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarCode()));
if (Cools.isEmpty(waitPakins)) {
- WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
+ WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode());
if (wrkMast != null && wrkMast.getIoType() == 103) {
- return R.parse(CodeRes.PICK_600);
+ return Re.parse(CodeRes.PICK_600);
}
- return R.parse(CodeRes.NO_COMB_700);
+ return Re.parse(CodeRes.NO_COMB_700);
}
- int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
- int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
+ int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarCode()));
+ int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarCode()));
if (countLoc > 0 || countWrk > 0) {
- return R.error("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");
+ return Re.error(CodeRes.EXIST_500);
+ }
+ }else {
+ //鏈夋弧鏉垮嚭搴撴椂绂佹绌烘澘鍏ュ簱
+ int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no",200).andNew().eq("io_type",101).or().eq("io_type",110));
+ if(wrkCount > 0){
+ return Re.error("鏈夋弧鏉垮嚭搴撴椂绂佹绌烘澘鍏ュ簱");
+ }
+
+ int countLoc = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 10));
+ if (countLoc > 0 ) {
+ return Re.error("宸叉湁绌烘澘鍏ュ簱浠诲姟绂佹鍦ㄥ叆绌烘澘");
}
}
- if (Cools.isEmpty(param.getLocType1())){
- return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
+ if (Cools.isEmpty(param.getCargoHeight())) {
+ return Re.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
}
// 婧愮珯鐐圭姸鎬佹娴�
- BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true);
+ sourceStaNo.setLocType1(param.getCargoHeight().shortValue());
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
StartupDto dto = null;
- switch (param.getIoType()) {
- case 1://婊℃墭鐩樺叆搴�
+ switch (param.getFromPort()) {
+ case "100"://婊℃墭鐩樺叆搴�
assert waitPakins != null;
- dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+ dto = startupFullPutStore(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, waitPakins);
break;
- case 10://绌烘墭鐩樺叆搴�
- dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode());
+ case "200"://绌烘墭鐩樺叆搴�
+ dto = emptyPlateIn(Integer.valueOf(param.getFromPort()), locTypeDto, param.getBarCode());
break;
default:
break;
}
- log.info("/pakin/loc/v1:"+dto + "======鎵樼洏鐮�:"+param.getBarcode());
- return R.ok().add(dto);
+ log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarCode());
+ return Re.ok();
}
+ @PostMapping("/auto/emptyIn/v1")
+ @ResponseBody
+ public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto) {
+ // 婧愮珯鐐圭姸鎬佹娴�
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(12, true);
+
+ // 妫�绱㈠簱浣�
+ StartupDto dto = commonService.getLocNo(10, 12, null, null, null, locTypeDto);
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(dto.getWorkNo());
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(1L);
+ wrkMast.setIoPri(13D);
+ wrkMast.setIoType(10);
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歂
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setMemo("鑷姩绌烘墭鍏ュ簱");
+ return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触");
+ }
+
+ @PostMapping("auto/emptyOut/v1")
+ @ResponseBody
+ public R autoEmptyOut() {
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_sts", "D"));
+ if (Cools.isEmpty(locMast)) {
+ return R.error("搴撳瓨娌℃湁绌烘澘");
+ }
+ EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+ emptyPlateOutParam.setOutSite(12);
+ emptyPlateOutParam.setLocNos(new ArrayList<String>() {{
+ add(locMast.getLocNo() + "");
+ }});
+ WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
+ return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+ }
/**
* 鍏ㄦ澘鍏ュ簱
@@ -105,15 +192,16 @@
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
- List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
- StartupDto dto = commonService.getLocNo(1, 1, devpNo, matNos, locTypeDto,0);
+ List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+ List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
+ StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
int workNo = dto.getWorkNo();
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(new Date());
- wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呮帴鏀�
wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
wrkMast.setIoPri(13D); // 浼樺厛绾�
wrkMast.setCrnNo(dto.getCrnNo());
@@ -127,6 +215,8 @@
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("Y");
wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+ wrkMast.setMk("N");//鏄惁瀹屾垚涓婃姤wcs
+ wrkMast.setFullPlt("N");//鍑哄簱绌烘澘娑堥櫎鏍囪
// 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(now);
wrkMast.setModiTime(now);
@@ -150,6 +240,7 @@
Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
.eq("zpallet", barcode);
WaitPakin setParam = new WaitPakin();
+ setParam.setLocNo(dto.getLocNo());
setParam.setIoStatus("Y");
setParam.setModiTime(now);
if (!waitPakinService.update(setParam, wrapper)) {
@@ -158,19 +249,19 @@
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(now);
- if (!basDevpService.updateById(sourceStaNo)){
+ if (!basDevpService.updateById(sourceStaNo)) {
throw new CoolException("鏇存柊婧愮珯澶辫触");
}
// 鏇存柊鐩爣搴撲綅鐘舵��
LocMast locMast = locMastService.selectById(dto.getLocNo());
- if (locMast.getLocSts().equals("O")){
+ if (locMast.getLocSts().equals("O")) {
locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)){
+ if (!locMastService.updateById(locMast)) {
throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
}
} else {
- throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
}
return dto;
}
@@ -180,13 +271,13 @@
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
- StartupDto dto = commonService.getLocNo(1, 10, devpNo, null, locTypeDto,0);
+ StartupDto dto = commonService.getLocNo(10, devpNo, null, null, null, locTypeDto);
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(new Date());
- wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呮帴鏀�
wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
wrkMast.setIoPri(13D); // 浼樺厛绾�
wrkMast.setCrnNo(dto.getCrnNo());
@@ -210,21 +301,116 @@
// 鏇存柊婧愮珯鐐逛俊鎭�
sourceStaNo.setWrkNo(workNo);
sourceStaNo.setModiTime(new Date());
- if (!basDevpService.updateById(sourceStaNo)){
+ if (!basDevpService.updateById(sourceStaNo)) {
throw new CoolException("鏇存柊婧愮珯澶辫触");
}
// 鏇存柊鐩爣搴撲綅鐘舵��
LocMast locMast = locMastService.selectById(dto.getLocNo());
- if (locMast.getLocSts().equals("O")){
+ if (locMast.getLocSts().equals("O")) {
locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
locMast.setModiTime(new Date());
- if (!locMastService.updateById(locMast)){
+ if (!locMastService.updateById(locMast)) {
throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
}
} else {
- throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
}
return dto;
}
+ @PostMapping("/fromwcs/task")
+ @ResponseBody
+ public Re status(@RequestBody StatusParam statusParam) {
+ String[] wrkNo=statusParam.getTaskId().split("-",2);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.parseInt(wrkNo[0])));
+ if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()!=8){
+ return Re.error("娌℃湁鎵惧埌:"+statusParam.getTaskId()+"杩欐潯浠诲姟");
+ }else if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8){
+ return Re.ok();
+ }else if(!Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8&&wrkMast.getIoType()==110){
+ return Re.ok();
+ }
+ /**
+ * 浠诲姟鐘舵��
+ * 鎵ц杩囩▼涓�
+ * 鐨勭姸鎬併�� 0- 宸� 鎺�
+ * 鏀� , 1- 浠� 鍔� 寮�
+ * 濮�,2-鍙栬揣瀹屾垚,3-
+ * 浠诲姟涓柇,4-鏀捐揣
+ * 瀹屾垚,8-浠诲姟缁撴潫
+ */
+ if (statusParam.getTaskStatus()==0){
+ wrkMast.setWrkSts(1L);//1.宸叉帴鏀�
+ }else if (statusParam.getTaskStatus()==1){
+ wrkMast.setWrkSts(2L);//2.浠诲姟寮�濮�
+ }else if (statusParam.getTaskStatus()==2){
+ wrkMast.setWrkSts(3L);//3.鍙栬揣瀹屾垚
+ }else if (statusParam.getTaskStatus()==3){
+ wrkMast.setWrkSts(6L);//6.浠诲姟涓柇
+ } else if (statusParam.getTaskStatus()==4 || statusParam.getTaskStatus()==8){
+// wrkMast.setWrkSts(7L);//6.鏀捐揣瀹屾垚
+ if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 11){
+ wrkMast.setWrkSts(4L);//4.鍏ュ簱瀹屾垚
+ }else if (wrkMast.getIoType()==101 || wrkMast.getIoType()==110){
+ wrkMast.setWrkSts(14L);//14.宸插嚭搴撴湭纭
+ }
+ }
+ wrkMastService.updateById(wrkMast);
+ return Re.ok();
+ }
+
+ @GetMapping("loc")
+ public void loc(){
+ List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>());
+ List<HashMap<String,Object>> mapList=new ArrayList<>();
+ for (LocMast locMast : locMasts) {
+ if (locMast.getLev1()!=4){
+ HashMap<String,Object> map=new HashMap<>();
+ map.put("warehouse","wzzy");
+ map.put("posiX",locMast.getRow1());
+ map.put("posiY",locMast.getBay1());
+ map.put("posiZ",locMast.getLev1());
+ map.put("cargoNo",locMast.getLocNo());
+ map.put("type","0");
+ mapList.add(map);
+ }
+ }
+ if(mapList.size()>0){
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(url)
+ .setPath(loc)
+ .setJson(JSON.toJSONString(mapList))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("returnStatus").equals(0)) {
+ success = true;
+ } else {
+ log.error("wms鍚屾wcs搴撲綅澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url+"/"+loc, JSON.toJSONString(mapList), response);
+ throw new CoolException("wms涓嬪彂浠诲姟缁檞cs澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ throw new CoolException("wms涓嬪彂浠诲姟缁檞cs澶辫触");
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "wms鍚屾wcs搴撲綅澶辫触",
+ url+"/"+loc,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(mapList),
+ response,
+ success
+ );
+ } catch (Exception e) { log.error("", e); }
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1