From 80cd1569120416b096d28ebbe9a8e6e1d867f6e0 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期四, 19 九月 2024 14:19:45 +0800
Subject: [PATCH] 盘点异常处理
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 240 ++++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 147 insertions(+), 93 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 c3f4301..2de975b 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,7 +2,6 @@
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;
@@ -14,6 +13,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.service.*;
@@ -46,6 +46,8 @@
private static final int[] secondFloorIn = new int[]{0,2061,2064,2067,2070,2073,2076};
// 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐�
private static final int[] secondFloorOut = new int[]{0,3002,3003,3006,3008,3009,3012};
+ // 鍫嗗灈鏈哄搴斾竴妤煎叆搴撶珯鐐�
+ private static final int[] oneFloorIn = new int[]{0,3001,3004,3005,3007,3010,3011};
@Autowired
@@ -95,6 +97,9 @@
@Resource
private MatMapper matMapper;
+
+ @Resource
+ private LocDetlMapper locDetlMapper;
@Override
@Transactional
@@ -1049,7 +1054,7 @@
StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0);
// 杩斿洖GWCS鐩爣淇℃伅
- boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode());
+ pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode(),"涓�妤煎弽淇搧鍏ュ簱鎺ㄩ�乬wcs");
// if (!result) {
// throw new CoolException("鍏ュ簱鍥炴帹鍏ュ簱鐮佸ご缁橤WCS澶辫触");
// }
@@ -1168,7 +1173,7 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
// 杩斿洖GWCS鐩爣淇℃伅
- pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode());
+ pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode(),"浜屾ゼ绌烘墭鍥炴祦鎺ㄩ�乬wcs");
return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛");
}
@@ -1228,7 +1233,7 @@
StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0);
// 杩斿洖GWCS鐩爣淇℃伅
- pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode());
+ pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode(),"gwms鐢宠鍏ュ簱鍚庢帹閫乬wcs");
int workNo = dto.getWorkNo();
@@ -1344,7 +1349,7 @@
@Override
@Transactional
- public String zwmsOutLocWork(ZwmsOutLocWorkDto param) {
+ public R zwmsOutLocWork(ZwmsOutLocWorkDto param) {
Order order = orderService.selectByNo(param.getOrderNo());
if (!Cools.isEmpty(order)) {
@@ -1353,6 +1358,7 @@
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
Date now = new Date();
+
// 鍗曟嵁涓绘。
order = new Order(
String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
@@ -1390,38 +1396,16 @@
now, // 淇敼鏃堕棿
null // 澶囨敞
);
+
if (!orderService.insert(order)) {
throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
}
+
// 鍗曟嵁鏄庣粏妗�
- List<DetlDto> list = new ArrayList<>();
- List<ZwmsOutLocWorkDto.Rolls> orderDetails = param.getMatDetails();
- for (ZwmsOutLocWorkDto.Rolls detail : orderDetails) {
- DetlDto dto = new DetlDto(detail.getRollNo(), detail.getBoxNo(), 1.0);
- dto.setOrderNo(detail.getSpecs());
- dto.setSplices(detail.getSplices());
- if (DetlDto.has(list, dto)) {
- DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
- assert detlDto != null;
- detlDto.setAnfme(detlDto.getAnfme() + 1);
- } else {
- list.add(dto);
- }
- }
- for (DetlDto detlDto : list) {
-// Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ for (String groupNo : param.getGroups()) {
OrderDetl orderDetl = new OrderDetl();
-// if (Cools.isEmpty(mat)) {
-// throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
-// } else {
-// orderDetl.sync(mat);
-// }
- orderDetl.setSpecs(String.valueOf(detlDto.getSplices()));
- orderDetl.setBatch(detlDto.getBatch() == null ? "" : detlDto.getBatch());
- orderDetl.setModel(detlDto.getMatnr());
- orderDetl.setMatnr(detlDto.getOrderNo());
- orderDetl.setMaktx(detlDto.getOrderNo());
- orderDetl.setAnfme(detlDto.getAnfme());
+ orderDetl.setBrand(groupNo);
+ orderDetl.setBatch("");
orderDetl.setOrderId(order.getId());
orderDetl.setOrderNo(order.getOrderNo());
orderDetl.setCreateBy(9527L);
@@ -1430,12 +1414,25 @@
orderDetl.setUpdateTime(now);
orderDetl.setStatus(1);
orderDetl.setQty(0.0D);
+ orderDetl.setAnfme(1.0);
if (!orderDetlService.insert(orderDetl)) {
throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
}
}
- return null;
+ return R.ok("鍗曟嵁鐢熸垚鎴愬姛");
+
+ }
+
+ @Override
+ public R queryInLocTime(List<String> param) {
+ if (Cools.isEmpty(param)) {
+ return R.parse("鍙傛暟涓嶈兘涓虹┖");
+ }
+
+ List<InLocTimeDto> inLocTimeDtos = locDetlMapper.queryInLocTime(param);
+
+ return R.ok(inLocTimeDtos);
}
@Override
@@ -1463,11 +1460,11 @@
// 鍒拌揪鍑哄簱鍙g‘璁や负1锛屾洿鏂板伐浣滄。鐘舵�佷负57.鍑哄簱瀹屾垚
if (param.getOutLocResult() == 1) {
- wrkMast.setWrkSts(20L);
- // 绌烘墭鐩樺埌浣嶇洿鎺ユ洿鏂板伐浣滄。鐘舵�佷负14.宸插嚭搴撴湭纭锛岀┖鎵樻棤闇�澶嶆牳纭
- if (!flag || wrkMast.getIoType() == 110) {
+// wrkMast.setWrkSts(20L);
+// // 绌烘墭鐩樺埌浣嶇洿鎺ユ洿鏂板伐浣滄。鐘舵�佷负14.宸插嚭搴撴湭纭锛岀┖鎵樻棤闇�澶嶆牳纭
+// if (!flag || wrkMast.getIoType() == 110) {
wrkMast.setWrkSts(14L);
- }
+// }
wrkMastService.updateById(wrkMast);
}
@@ -1591,8 +1588,8 @@
@Transactional
public R zphjCdwc(ZphjcdwcParam param) {
- if (Cools.isEmpty(param.getWorkNo())) {
- throw new CoolException("宸ヤ綔鍙蜂笉鑳戒负绌猴紒");
+ if (Cools.isEmpty(param.getWorkNo(),param.getBarcode(),param.getSourceStaNo(),param.getSite())) {
+ return R.parse("鍙傛暟涓嶈兘涓虹┖锛岃妫�鏌ュ叆鍙�");
}
WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo());
if (wrkMast == null) {
@@ -1602,60 +1599,59 @@
throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉涓�42/鍑哄簱绫诲瀷涓嶄负鎷f枡锛�");
}
- // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
- 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.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
- // 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
- wrkMast.setSourceStaNo(wrkMast.getStaNo());
- wrkMast.setStaNo(staNo);
- // 鐩爣搴撲綅=婧愬簱浣�
- wrkMast.setLocNo(wrkMast.getSourceLocNo());
- // 婧愬簱浣嶆竻闄�
- wrkMast.setSourceLocNo("");
- wrkMast.setModiTime(new Date());
-
- int outStaNo = 0; // 鍑哄簱婧愮珯鐐�
- if (staNo == 3044 || staNo == 3045) {
- outStaNo = 3046;
- } else if(staNo == 3040 || staNo == 3041) {
- outStaNo = 3042;
- }
- if (outStaNo == 0) {
- throw new CoolException("鍑哄簱婧愮珯鐐硅浆鎹㈡湁璇細" + staNo);
- }
-
// 鑾峰彇鍑哄簱鐗╂枡
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+ // 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。
+ int work = create111Work(wrkMast, wrkDetls, param.getSite(), wrkMast.getStaNo(), param.getBarcode());
+
int descFlag = getType(wrkDetls);
// get0鍘熸墭鐩樺洖娴佷俊鎭紝get1鎷嗗灈鍑烘潵鐗╂枡鍑哄簱淇℃伅
List<ZphjcdwcVo> zphjcdwcVos = new ArrayList<>();
ZphjcdwcVo zphjcdwcVo1 = new ZphjcdwcVo();
zphjcdwcVo1.setWorkNo(wrkMast.getWrkNo());
- zphjcdwcVo1.setStaNo(wrkMast.getStaNo());
- zphjcdwcVo1.setSourceStaNo(wrkMast.getSourceStaNo());
+ zphjcdwcVo1.setStaNo(wrkMast.getSourceStaNo());
+ zphjcdwcVo1.setSourceStaNo(param.getSourceStaNo());
+ zphjcdwcVo1.setBarcode(wrkMast.getBarcode());
zphjcdwcVos.add(zphjcdwcVo1);
ZphjcdwcVo zphjcdwcVo2 = new ZphjcdwcVo();
- zphjcdwcVo2.setSourceStaNo(outStaNo);
- zphjcdwcVo2.setStaNo(3106); // 3106/3077
+ zphjcdwcVo2.setWorkNo(work);
+ zphjcdwcVo2.setSourceStaNo(param.getSite());
+ zphjcdwcVo2.setStaNo(wrkMast.getStaNo());
+ zphjcdwcVo2.setBarcode(param.getBarcode());
zphjcdwcVo2.setDescFlag(descFlag);
zphjcdwcVos.add(zphjcdwcVo2);
+
+
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ 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.getSourceStaNo()) // 浣滀笟绔欑偣 = 鎷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.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級
+ // 鐩爣绔欑偣婧愮珯鐐硅浆鎹�
+ wrkMast.setStaNo(oneFloorIn[wrkMast.getCrnNo()]);
+ wrkMast.setSourceStaNo(param.getSourceStaNo());
+
+ // 鐩爣搴撲綅=婧愬簱浣�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo());
+ // 婧愬簱浣嶆竻闄�
+ wrkMast.setSourceLocNo("");
+ wrkMast.setModiTime(new Date());
// 鏇存柊宸ヤ綔涓绘。
wrkMastService.updateById(wrkMast);
@@ -1671,16 +1667,81 @@
return R.ok(zphjcdwcVos);
}
+ @Override
+ public R requestXhd(String barcode) {
+
+ // 搴撳瓨鏄庣粏鏈ㄧ浣嶇疆闆嗗悎
+ List<LocDetl> locDetls = locDetlMapper.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
+ List<String> collect1 = locDetls.stream().map(LocDetl::getOrigin).distinct().collect(Collectors.toList());
+ // 宸ヤ綔鏄庣粏鏈ㄧ浣嶇疆闆嗗悎
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", barcode));
+ List<String> collect2 = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList());
+
+ // 0鏄庣粏寮傚父,1浜乏锛�2浜彸锛�3閮戒寒
+ if (collect1.size() == 0 || collect2.size() == 0){
+ return R.ok(0);
+ } else if((collect1.size() == 1 && collect2.size() == 1) || (collect1.size() == 2 && collect2.size() == 2)) {
+ return R.ok(3);
+ } else if(collect1.size() == 2 && collect2.size() == 1) {
+ return R.ok(collect2.get(0).equals("宸�") ? 1 : 2);
+ } else {
+ return R.parse("浜俊鍙风伅鏉$爜寮傚父锛�" + barcode);
+ }
+
+ }
+
+ /**
+ * 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。
+ */
+ private int create111Work(WrkMast wrk, List<WrkDetl> wrkDetls, Integer site, Integer staNo,String barcode) {
+ int workNo = commonService.getWorkNo(4);
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
+ wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細111.鐞嗚揣璐存爣鍑哄簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(wrk.getCrnNo());
+ wrkMast.setSourceStaNo(site);
+ wrkMast.setStaNo(staNo);
+ wrkMast.setSourceLocNo(wrk.getSourceLocNo());
+ wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+
+ // 鎻掑叆宸ヤ綔妗�
+ wrkMastService.insert(wrkMast);
+
+ // 鎻掑叆宸ヤ綔妗f槑缁�
+ for (WrkDetl wrkDetl:wrkDetls) {
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBarcode(barcode);
+ wrkDetl.setZpallet(barcode);
+ wrkDetlService.insert(wrkDetl);
+ }
+
+ return workNo;
+ }
+
/**
* 鏍规嵁鍑哄簱鐗╂枡鏄庣粏鍒ゆ柇鏄惁鍘昏创鏍�(鍗曞嵎璐存爣锛屽鍗蜂笉璐存爣)
* @param wrkDetls 鐗╂枡鏄庣粏
- * @return 0.澶氬嵎涓嶈创鏍囪矾寰勶紝1.鍗曞嵎璐存爣璺緞
+ * @return 1.澶氬嵎鐩存帴鍑鸿矾寰勶紝4.鍗曞嵎璐存爣璺緞
*/
private int getType(List<WrkDetl> wrkDetls) {
- return wrkDetls.size() > 1 ? 0 : 1; // 涓�鏉¤褰曞氨鏄竴鍗�
+ return wrkDetls.size() > 1 ? 1 : 4; // 涓�鏉¤褰曞氨鏄竴鍗�
}
- public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) {
+ public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode,String message) {
boolean success = false;
// 鑾峰彇璇锋眰澶�
Map<String, Object> headers = getHeaders();
@@ -1703,23 +1764,16 @@
.doPost();
if (!Cools.isEmpty(response)) {
success = true;
-// // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-// if (!orderService.updateSettle(order.getId(), 6L, null)) {
-// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-// }
} else {
- log.error("zmws鎺ㄩ�佸叆搴撶爜澶寸珯鐐规帴鍙eけ璐ワ紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
- throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+ log.error(message + "澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
}
} catch (Exception e) {
- log.error("鍏ュ簱璇锋眰鎺ュ彛澶辫触锛歿}", e.getMessage());
-// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-// return FAIL.setMsg(e.getMessage());
+ log.error(message + "寮傚父锛歿}", e);
} finally {
try {
// 淇濆瓨鎺ュ彛鏃ュ織
apiLogService.save(
- "鍏ュ簱",
+ message,
MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL,
null,
"127.0.0.1",
--
Gitblit v1.9.1