From 2d81e5e2ff8de4e97633e86b5605b6c787660cd5 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 20 六月 2025 12:58:22 +0800
Subject: [PATCH] #工作档手动完成
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 316 ++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 265 insertions(+), 51 deletions(-)
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 2791178..7322481 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -14,9 +15,7 @@
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.entity.result.ZphjcdgzVo;
import com.zy.asrs.entity.result.ZphjcdwcVo;
-import com.zy.asrs.mapper.LocDetlMapper;
-import com.zy.asrs.mapper.MatMapper;
-import com.zy.asrs.mapper.TagMapper;
+import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.common.constant.MesConstant;
@@ -36,6 +35,7 @@
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -106,6 +106,12 @@
@Resource
private ConfigMapper configMapper;
+
+ @Resource
+ private OrderMapper orderMapper;
+
+ @Resource
+ private BasCrnpMapper basCrnpMapper;
@Override
@Transactional
@@ -1020,29 +1026,27 @@
@Override
@Transactional
- public void prodCheck(List<ProdCheckParam> param) {
+ public R prodCheck(List<ProdCheckParam> param) {
if (param.isEmpty()) {
- throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+ return R.parse("璇锋眰鍙傛暟涓嶈兘涓虹┖");
}
for (ProdCheckParam checkParam : param) {
// 鏇存柊搴撳瓨鏄庣粏鏄惁鍚堟牸
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo())
- .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", checkParam.getRollNo()));
// 鏇存柊鍟嗗搧琛ㄦ槸鍚﹀悎鏍�
- Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo())
- .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
- if (locDetl == null || mat == null) {
+// Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("model", checkParam.getRollNo()));
+ if (locDetl == null) { // || mat == null
throw new CoolException("鏇存柊鏄惁鍚堟牸鐗╂枡涓嶅瓨鍦細" + checkParam);
}
locDetl.setThreeCode(checkParam.getQualified());
- mat.setThreeCode(checkParam.getQualified());
+// mat.setThreeCode(checkParam.getQualified());
- locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo())
- .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
- matService.update(mat,(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo())
- .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo())));
+ locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("model", checkParam.getRollNo()));
+// matService.update(mat, (new EntityWrapper<Mat>().eq("model", checkParam.getRollNo())));
}
+
+ return R.ok("鏇存柊鎴愬姛");
}
@Override
@@ -1243,6 +1247,7 @@
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
+ wrkMast.setWhsType(iotype == 1 && param.getPalletizingNo() == 2051 ? 1 : 0); // 杩斾慨鍏ュ簱鏍囪
wrkMast.setIoTime(new Date());
wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
wrkMast.setIoType(iotype); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
@@ -1305,14 +1310,14 @@
}
// 鐗╂枡琛ㄥ浠戒竴浠�
- Mat mat = new Mat();
- mat.sync(wrkDetl);
- mat.setTagId(6L);
- mat.setCreateTime(now);
- mat.setUpdateTime(now);
- if (!matService.insert(mat)) {
- throw new CoolException("澶囦唤鐗╂枡琛ㄥけ璐�");
- }
+// Mat mat = new Mat();
+// mat.sync(wrkDetl);
+// mat.setTagId(6L);
+// mat.setCreateTime(now);
+// mat.setUpdateTime(now);
+// if (!matService.insert(mat)) {
+// throw new CoolException("澶囦唤鐗╂枡琛ㄥけ璐�");
+// }
});
}
@@ -1372,6 +1377,9 @@
}
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
+ if (docType == null) {
+ return R.parse("鍗曟嵁绫诲瀷涓嶅瓨鍦紝璇锋鏌ワ細" + param.getOrderType());
+ }
Date now = new Date();
// 鍗曟嵁涓绘。
@@ -1386,7 +1394,7 @@
null, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 瀹㈡埛缂栧彿
- null, // 瀹㈡埛
+ param.getCustomerName(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
null, // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -1409,7 +1417,7 @@
now, // 娣诲姞鏃堕棿
9527L, // 淇敼浜哄憳
now, // 淇敼鏃堕棿
- null // 澶囨敞
+ param.getMemo() // 澶囨敞
);
if (!orderService.insert(order)) {
@@ -1483,7 +1491,97 @@
wrkMastService.updateById(wrkMast);
}
+ // 鍑哄簱涓婃姤鎺ㄩ�乵es璁板綍
+ ckjgsbPushMes(wrkMast,wrkDetls);
+
return "鍑哄簱缁撴灉涓婃姤鎴愬姛";
+ }
+
+ private void ckjgsbPushMes(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
+ GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto();
+ gwmsGenerateInventoryDto.setBarcode(wrkMast.getBarcode());
+ gwmsGenerateInventoryDto.setPalletizingNo(wrkMast.getStaNo());
+ List<GwmsGenerateInventoryDto.MatList> matLists = new ArrayList<>();
+ for (WrkDetl wrkDetl:wrkDetls) {
+ boolean flag = true;
+ for (GwmsGenerateInventoryDto.MatList matList : matLists) {
+ if (matList.getPackageGroupNo().equals(wrkDetl.getBrand())) {
+ matList.getRolls().add(new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
+ wrkDetl.getUnit(),wrkDetl.getMaktx(),wrkDetl.getLength(),
+ Integer.parseInt(wrkDetl.getSpecs()),wrkDetl.getWeight(),wrkDetl.getVolume(),
+ wrkDetl.getManuDate()));
+ flag = false;
+ break;
+ }
+ }
+ if (flag) {
+ GwmsGenerateInventoryDto.MatList matList = new GwmsGenerateInventoryDto.MatList();
+ matList.setBoxPos(wrkDetl.getOrigin());
+ matList.setPackageGroupNo(wrkDetl.getBrand());
+ matList.setOutOrIn("out");
+ matList.setStockType(wrkMast.getStaNo() == 2041 ? "杩斾慨鍑哄簱" : "鎴愬搧鍑哄簱");
+ matList.setBoxType(wrkDetl.getColor());
+ matList.setRollType(wrkDetl.getManu());
+ matList.setWideInWidth(wrkDetl.getSku());
+ matList.setThickness(wrkDetl.getItemNum());
+ List<GwmsGenerateInventoryDto.Rolls> rollsList = new ArrayList<>();
+ GwmsGenerateInventoryDto.Rolls roll = new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
+ wrkDetl.getUnit(),wrkDetl.getMaktx(),wrkDetl.getLength(),
+ Integer.parseInt(wrkDetl.getSpecs()),wrkDetl.getWeight(),wrkDetl.getVolume(),
+ wrkDetl.getManuDate());
+ rollsList.add(roll);
+ matList.setRolls(rollsList);
+ matLists.add(matList);
+ }
+ }
+ gwmsGenerateInventoryDto.setMatList(matLists);
+
+
+
+ boolean success = false;
+ // 鑾峰彇璇锋眰澶�
+ Map<String,Object> headers = new HashMap<>();
+ headers.put("Content-Type","application/json;charset=UTF-8");
+
+ // 鏋勯�犺姹備綋
+ String body = JSON.toJSONString(gwmsGenerateInventoryDto);
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.MES_CC_IP_PORT)
+ .setPath(MesConstant.MES_CC_FXRK_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ int code = (int) jsonObject1.get("code");
+ boolean state = jsonObject1.getBoolean("state");
+ if (code == 200 && state) {
+ success = true;
+ }
+ } else {
+ log.error("鍑哄簱涓婃姤鎺ㄩ�乵es璁板綍澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_FXRK_URL, body, response);
+ }
+ } catch (Exception e) {
+ log.error("鍑哄簱涓婃姤鎺ㄩ�乵es璁板綍寮傚父锛歿}", e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍑哄簱涓婃姤鎺ㄩ�乵es璁板綍",
+ MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_FXRK_URL,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
}
@Autowired
@@ -1867,6 +1965,86 @@
}
+ @Override
+ public R getUnfulfilledOrders() {
+ // 鑾峰彇鏈畬鎴愯鍗曠粺璁′俊鎭�
+ List<OrderStatisticsDto> unfulfilledOrders = orderMapper.getUnfulfilledOrders("");
+ return R.ok(unfulfilledOrders);
+ }
+
+ @Override
+ public R getCrnLaneWayInfo() {
+ List<CrnLaneWayInfoDto> crnLaneWayInfo = basCrnpMapper.getCrnLaneWayInfo();
+ return R.ok(crnLaneWayInfo);
+ }
+
+ @Override
+ public R getOutLocInfoByBarcode(String barcode) {
+
+ // 鏍规嵁鎵樼洏鐮佽幏鍙栦换鍔′富妗�
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+ if (wrkMast == null) {
+ return R.parse("璇ユ潯鐮佹棤姝e湪鎵ц浠诲姟锛�" + barcode);
+ }
+ // 鏍规嵁浠诲姟涓绘。鑾峰彇宸ヤ綔妗f槑缁�
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ // 鎻愬彇鍖呰缁勫彿
+ List<String> brandList = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
+ OutLocInfoDto outLocInfoDto = new OutLocInfoDto();
+ outLocInfoDto.setWrkNo(wrkMast.getWrkNo());
+ List<OutLocInfoDto.Material> materialList = new ArrayList<>();
+ for (String brand : brandList) {
+ // 涓�涓湪绠�
+ OutLocInfoDto.Material material = new OutLocInfoDto.Material();
+ material.setPackageGroupNo(brand); // 鍖呰缁勫彿
+ // 鎸夊寘瑁呯粍鍙疯繃婊�
+ List<WrkDetl> wrkDetls1 = wrkDetls.stream().filter(wrkDetl -> Objects.equals(wrkDetl.getBrand(), brand)).collect(Collectors.toList());
+ // 鍗蜂俊鎭�
+ List<OutLocInfoDto.Material.MaterialDetail> materialDetailList = new ArrayList<>();
+ for (WrkDetl wrkDetl : wrkDetls1) {
+ OutLocInfoDto.Material.MaterialDetail materialDetail = new OutLocInfoDto.Material.MaterialDetail();
+ materialDetail.setRollNo(wrkDetl.getModel());
+ materialDetail.setBoxNo(wrkDetl.getUnit());
+ materialDetail.setSpecs(wrkDetl.getMatnr());
+ materialDetail.setBoxType(wrkDetl.getColor());
+ materialDetail.setCoreType(wrkDetl.getManu());
+ materialDetail.setWidth(wrkDetl.getSku());
+ materialDetail.setThickness(wrkDetl.getItemNum());
+ materialDetail.setWeight(wrkDetl.getWeight());
+ materialDetail.setLength(wrkDetl.getLength());
+ materialDetail.setVolume(wrkDetl.getVolume());
+ materialDetail.setCustomerName(wrkDetl.getSupp());
+ materialDetail.setMemo(wrkDetl.getMemo());
+ material.setBoxPos(wrkDetl.getOrigin()); // 鎵樼洏涓婃湪绠变綅缃�
+ materialDetailList.add(materialDetail);
+ }
+ // 璁㈠崟淇℃伅
+ WrkDetl wrkDetl = wrkDetls1.get(0);
+ if (wrkDetl != null && wrkDetl.getOrderNo() != null) {
+ Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()));
+ if (order != null) {
+ material.setOrderNo(order.getOrderNo());
+// material.setMemo(order.getMemo());
+// material.setCustomerName(order.getCstmrName());
+ List<OrderStatisticsDto> unfulfilledOrders = orderMapper.getUnfulfilledOrders(order.getOrderNo());
+ if (unfulfilledOrders.size() == 1) {
+ OrderStatisticsDto orderStatisticsDto = unfulfilledOrders.get(0);
+ material.setSum(orderStatisticsDto.getSum());
+ material.setToShipQuantity(orderStatisticsDto.getToShipQuantity());
+ material.setWorkQuantity(orderStatisticsDto.getWorkQuantity());
+ material.setCompleteQuantity(orderStatisticsDto.getCompletedQuantity());
+ }
+ }
+ }
+
+ material.setMaterialDetailList(materialDetailList);
+ materialList.add(material);
+ }
+ outLocInfoDto.setMaterialList(materialList);
+
+ return R.ok(outLocInfoDto);
+ }
+
/**
* 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。
*/
@@ -1918,39 +2096,60 @@
return wrkDetls.size() > 1 ? 1 : 4; // 涓�鏉¤褰曞氨鏄竴鍗�
}
- public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode,String message) {
- boolean success = false;
- // 鑾峰彇璇锋眰澶�
- Map<String, Object> headers = getHeaders();
+ public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo, String barcode, String message) {
+ int maxRetry = 3; // 鏈�澶氶噸璇� 3 娆�
+ long retryDelay = 10000; // 閲嶈瘯闂撮殧 10 绉�
+ boolean finalSuccess = false;
- // 鏋勯�犺姹備綋
+ Map<String, Object> headers = getHeaders();
JSONObject jsonObject = new JSONObject();
jsonObject.put("workNo", workNo);
jsonObject.put("staNo", staNo);
jsonObject.put("sourceStaNo", palletizingNo);
jsonObject.put("barcode", barcode);
String body = jsonObject.toJSONString();
- String response = "";
- try {
- response = new HttpHandler.Builder()
- .setUri(MesConstant.GWCS_IP_PORT)
- .setPath(MesConstant.GWCS_FPKW_URL)
- .setHeaders(headers)
- .setJson(body)
- .build()
- .doPost();
- if (!Cools.isEmpty(response)) {
- success = true;
- } else {
- log.error(message + "澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, body, response);
- }
- } catch (Exception e) {
- log.error(message + "寮傚父锛歿}", e);
- } finally {
+
+ for (int attempt = 1; attempt <= maxRetry; attempt++) {
+ String response = "";
+ boolean success = false;
+ String attemptMsg = message + "锛堢 " + attempt + " 娆″皾璇曪級";
+
try {
- // 淇濆瓨鎺ュ彛鏃ュ織
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.GWCS_IP_PORT)
+ .setPath(MesConstant.GWCS_FPKW_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .setTimeout(30, TimeUnit.SECONDS) // 璁剧疆杩炴帴 + 璇诲彇瓒呮椂涓�30绉�
+ .build()
+ .doPost();
+
+
+ if (!Cools.isEmpty(response)) {
+ try {
+ JSONObject resJson = JSON.parseObject(response);
+ int code = resJson.getIntValue("code"); // 瑙嗗叿浣撴帴鍙h�屽畾
+ if (code == 200) {
+ success = true;
+ finalSuccess = true;
+ log.info("{} 鎴愬姛锛屽搷搴旓細{}", attemptMsg, response);
+ } else {
+ log.warn("{} 鍝嶅簲澶辫触锛岃繑鍥瀋ode={}锛屽畬鏁村搷搴旓細{}", attemptMsg, code, response);
+ }
+ } catch (Exception parseEx) {
+ log.warn("{} 鍝嶅簲瑙f瀽澶辫触锛屽唴瀹癸細{}", attemptMsg, response);
+ }
+ } else {
+ log.warn("{} 澶辫触锛屽搷搴斾负绌�", attemptMsg);
+ }
+ } catch (Exception e) {
+ log.error("{} 寮傚父锛歿}", attemptMsg, e.getMessage(), e);
+ }
+
+ // 姣忔閮借褰曟棩蹇楋紝涓嶈鎴愬姛鎴栧け璐�
+ try {
apiLogService.save(
- message,
+ attemptMsg,
MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL,
null,
"127.0.0.1",
@@ -1959,12 +2158,27 @@
success
);
} catch (Exception e) {
- log.error("", e);
+ log.error("淇濆瓨鎺ュ彛鏃ュ織寮傚父锛歿}", e.getMessage(), e);
+ }
+
+ if (success) break; // 鎴愬姛灏变笉鍐嶉噸璇�
+
+ // 濡傛灉杩樻湁涓嬩竴娆¢噸璇曪紝鍒欑瓑寰�
+ if (attempt < maxRetry) {
+ try {
+ Thread.sleep(retryDelay);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ break;
+ }
}
}
- return success;
+
+ return finalSuccess;
}
+
+
Map<String, Object> getHeaders(){
Map<String,Object> headers = new HashMap<>();
headers.put("digi-type","sync ");
--
Gitblit v1.9.1