From 2d0226ea3dd2116cfcc9ec307f17edf191458aad Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期二, 27 八月 2024 17:04:30 +0800 Subject: [PATCH] mes对接单据相关 --- src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 292 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 202 insertions(+), 90 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 f02d5c1..350a9e3 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; @@ -41,6 +40,14 @@ @Slf4j @Service public class OpenServiceImpl implements OpenService { + + // 浜屾ゼ鍫嗗灈鏈哄搴斿叆搴撶珯鐐� + 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 private OrderService orderService; @@ -1043,7 +1050,10 @@ StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0); // 杩斿洖GWCS鐩爣淇℃伅 - pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo()); + boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode()); +// if (!result) { +// throw new CoolException("鍏ュ簱鍥炴帹鍏ュ簱鐮佸ご缁橤WCS澶辫触"); +// } int workNo = dto.getWorkNo(); Date now = new Date(); @@ -1075,6 +1085,7 @@ for (Mat obj : list) { WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(obj); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setAnfme(1.0); // 閲嶆柊瀹氫綅鏈ㄧ浣嶇疆 @@ -1089,7 +1100,6 @@ break; } } - wrkDetl.sync(obj); wrkDetl.setIoTime(now); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); @@ -1110,6 +1120,84 @@ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); } return "鍏ュ簱鎴愬姛"; + } + + @Override + @Transactional + public R kthl(KthlParam param) { + + // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢� + List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3) + .eq("wrk_no",0).eq("in_enable","Y").eq("out_enable","Y")); + if (basCrnps.isEmpty()) { + // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛� + basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y") + .eq("out_enable","Y")); + } + if (basCrnps.isEmpty()) { + throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�"); + } + // 鍙敤鍫嗗灈鏈哄垪琛� + List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()); + Integer crnNo = crnNoList.get(0); + + int workNo = commonService.getWorkNo(5); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // + wrkMast.setIoType(3); // 绔欏埌绔� + wrkMast.setIoPri(14D); // 浼樺厛绾� + wrkMast.setCrnNo(crnNo); + wrkMast.setSourceStaNo(secondFloorIn[crnNo]); + wrkMast.setStaNo(secondFloorOut[crnNo]); + wrkMast.setLocNo(""); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 杩斿洖GWCS鐩爣淇℃伅 + pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode()); + + return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛"); + } + + @Override + public R tb(TbParam param) { + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode", param.getBarcode())); + if (wrkDetls.isEmpty()) { + return R.parse("鏃犵墿鏂欐槑缁嗕俊鎭�"); + } + List<String> collect = wrkDetls.stream().map(WrkDetl::getUnit).distinct().collect(Collectors.toList()); + return R.ok(collect); + } + + @Override + public R dd(TbParam param) { + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode", param.getBarcode())); + if (wrkDetls.isEmpty()) { + return R.parse("鏃犵墿鏂欐槑缁嗕俊鎭�"); + } + List<DdParam> collect = wrkDetls.stream().map(wrkDetl -> { + DdParam ddParam = new DdParam(); + ddParam.setBoxPos(wrkDetl.getOrigin()); + ddParam.setBoxType(wrkDetl.getColor()); + return ddParam; + }).distinct().collect(Collectors.toList()); + + return R.ok(collect); } @Override @@ -1141,7 +1229,7 @@ StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0); // 杩斿洖GWCS鐩爣淇℃伅 - pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo()); + pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode()); int workNo = dto.getWorkNo(); @@ -1257,7 +1345,7 @@ @Override @Transactional - public String zwmsOutLocWork(ZwmsOutLocWorkDto param) { + public R zwmsOutLocWork(ZwmsOutLocWorkDto param) { Order order = orderService.selectByNo(param.getOrderNo()); if (!Cools.isEmpty(order)) { @@ -1266,6 +1354,7 @@ DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE); Date now = new Date(); + // 鍗曟嵁涓绘。 order = new Order( String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] @@ -1303,38 +1392,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); @@ -1343,12 +1410,14 @@ 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 @@ -1376,11 +1445,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); } @@ -1489,13 +1558,13 @@ // 鏌ヨ瑕佹媶鐨勪綅缃紝鍙湁涓�涓� List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - List<String> collect = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList()); - String position = collect.get(0); + WrkDetl wrkDetl = wrkDetls.get(0); // 杩斿洖鎷嗗灈瑙勫垯 ZphjcdgzVo zphjcdgzVo = new ZphjcdgzVo(); - zphjcdgzVo.setWorkNo(wrkMast.getWrkNo()); - zphjcdgzVo.setPosition(position); + zphjcdgzVo.setWorkNo(wrkDetl.getWrkNo()); + zphjcdgzVo.setBoxType(wrkDetl.getColor()); + zphjcdgzVo.setPosition(wrkDetl.getOrigin()); return R.ok(zphjcdgzVo); } @@ -1504,8 +1573,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) { @@ -1515,60 +1584,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); @@ -1585,15 +1653,57 @@ } /** - * 鏍规嵁鍑哄簱鐗╂枡鏄庣粏鍒ゆ柇鏄惁鍘昏创鏍�(鍗曞嵎璐存爣锛屽鍗蜂笉璐存爣) - * @param wrkDetls 鐗╂枡鏄庣粏 - * @return 0.澶氬嵎涓嶈创鏍囪矾寰勶紝1.鍗曞嵎璐存爣璺緞 + * 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。 */ - private int getType(List<WrkDetl> wrkDetls) { - return wrkDetls.size() > 1 ? 0 : 1; // 涓�鏉¤褰曞氨鏄竴鍗� + 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; } - public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) { + /** + * 鏍规嵁鍑哄簱鐗╂枡鏄庣粏鍒ゆ柇鏄惁鍘昏创鏍�(鍗曞嵎璐存爣锛屽鍗蜂笉璐存爣) + * @param wrkDetls 鐗╂枡鏄庣粏 + * @return 1.澶氬嵎鐩存帴鍑鸿矾寰勶紝4.鍗曞嵎璐存爣璺緞 + */ + private int getType(List<WrkDetl> wrkDetls) { + return wrkDetls.size() > 1 ? 1 : 4; // 涓�鏉¤褰曞氨鏄竴鍗� + } + + public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) { boolean success = false; // 鑾峰彇璇锋眰澶� Map<String, Object> headers = getHeaders(); @@ -1603,6 +1713,7 @@ jsonObject.put("workNo", workNo); jsonObject.put("staNo", staNo); jsonObject.put("sourceStaNo", palletizingNo); + jsonObject.put("barcode", barcode); String body = jsonObject.toJSONString(); String response = ""; try { @@ -1643,6 +1754,7 @@ log.error("", e); } } + return success; } Map<String, Object> getHeaders(){ -- Gitblit v1.9.1