From aa2ef2ef37c7d95cfb1d3833a023328d05ea5060 Mon Sep 17 00:00:00 2001 From: lsh <1> Date: 星期日, 21 一月 2024 15:06:53 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 278 insertions(+), 1 deletions(-) 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 d17cace..1e23c30 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -10,16 +10,21 @@ import com.zy.asrs.entity.param.*; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; +import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.MatUtils; +import com.zy.asrs.utils.PostMesDataUtils; import com.zy.common.CodeRes; import com.zy.common.constant.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; +import com.zy.common.model.LocTypeDto; import com.zy.common.model.MesCombParam; +import com.zy.common.model.StartupDto; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +40,8 @@ @Slf4j @Service public class MobileServiceImpl implements MobileService { + + @Autowired private MatService matService; @@ -74,13 +81,283 @@ private ManLocDetlService manLocDetlService; @Autowired private ManLocDetlMapper manLocDetlMapper; + @Autowired + private DocTypeService docTypeService; + @Autowired + private LocDetlRullUpDetailService locDetlRullUpDetailService; @Override @Transactional public void trussComb(TrussCombParam param, Long userId) { - param.setUuid(String.valueOf(new Date().getTime())); + Date now = new Date(); + if (param.getSouSta()==145){ + param.setBarcode(String.valueOf(now.getTime())); + }else { + if (Cools.isEmpty(param.getBarcode())){ + throw new CoolException("鍙傛暟锛氭墭鐩樼爜涓虹┖"); + } + } + param.setPalletizingNo(147); + + + //鍒ゆ柇param鍙傛暟 + if (Cools.isEmpty(param.getPalletizingNo())){ + throw new CoolException("鍙傛暟锛氬師绔欑偣缂栧彿涓虹┖"); + }else if (param.getSouSta()==145 && param.getMatList().size() != 1){ + throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖ 鎴栬�� 澶т簬1涓槑缁�"); + }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() > 2){ + throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖ 鎴栬�� 澶т簬2涓槑缁�"); + } + + String matnr = null; + List<WaitPakin> waitPakins = new ArrayList<>(); + for (TrussCombParam.MatList matList:param.getMatList()){ + long rollUp = new Date().getTime(); + Mat mat = matService.selectByMatnr(matList.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(matList.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + matnr = mat.getMatnr(); + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); + waitPakin.setModel(matList.getModel()); //鎵规 + waitPakin.setSpecs(matList.getSpecs()); //瑙勬牸 + waitPakin.setBatch(matList.getBatch()); //鏈ㄧ缂栫爜 + waitPakin.setBrand(param.getBoxType()); //鏈ㄧ绫诲瀷 + waitPakin.setZpallet(param.getBarcode()); //鎵樼洏鐮� + waitPakin.setOrigin(matList.getPosition()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme((double)matList.getAnfme()); // 鏈ㄧ涓摐绠旀暟閲� + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(userId); + waitPakin.setAppeTime(now); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + waitPakin.setRollUp(rollUp); + if (!Cools.isEmpty(matList.getMatDetlList())){ + for (TrussCombParam.MatDetlList matDetlList:matList.getMatDetlList()){ + LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail(); + locDetlRullUpDetail.setUuid(rollUp); + locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl()); + locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString()); + locDetlRullUpDetailService.insert(locDetlRullUpDetail); + } + } + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + waitPakins.add(waitPakin); + } + + LocTypeDto locTypeDto = new LocTypeDto(); + locTypeDto.setLocType1((short)1); + + StartupDto dto = commonService.getLocNo(1, 1, param.getSouSta(), matnr,null,null, locTypeDto); + + int workNo = dto.getWorkNo(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + waitPakins.forEach(waitPakin -> { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkDetl.setRollUp(waitPakin.getRollUp()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + } + + //wms鍏ュ簱缁勬墭 閫�搴撳崟閫�搴撶粍鎵� + @Override + @Transactional + public void trussCombOrder(TrussCombParam param, Long userId) { + Date now = new Date(); + param.setBarcode(String.valueOf(now.getTime())); + param.setPalletizingNo(147); + + //鍒ゆ柇param鍙傛暟 + if (Cools.isEmpty(param.getPalletizingNo())){ + throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖"); + }else if (Cools.isEmpty(param.getOrderNo())){ + throw new CoolException("鍙傛暟锛氶��璐у崟鍗曞彿 orderNo涓虹┖"); + }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){ + throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖"); + } + + Order order = orderService.selectByNo(param.getOrderNo()); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈燂紝鍗曞彿锛�"+param.getOrderNo()); + } + DocType docType = docTypeService.selectById(order.getDocType()); + if (Cools.isEmpty(docType) || !docType.getDocName().equals("閫�璐у叆搴撳崟")){ + throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+"涓嶆槸閫�璐у叆搴撳崟"); + } + + List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); + if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){ + throw new CoolException("鏈煡璇㈠埌姝よ鍗曟槑缁嗭紝鍗曞彿锛�"+param.getOrderNo()); + } + List<String> orderBoxNoList = new ArrayList<>(); + for (OrderDetl orderDetl: orderDetls){ + if (orderDetl.getWorkQty()==0){ + orderBoxNoList.add(orderDetl.getBatch()); + } + } + if (orderBoxNoList.size()==0 || orderBoxNoList.size()<param.getMatList().size()){ + throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 閫�璐ф暟閲忓ぇ浜庢槑缁嗘暟閲�"); + } + List<String> matListBoxNoList = new ArrayList<>(); + for (TrussCombParam.MatList matList: param.getMatList()){ + if (!orderBoxNoList.contains(matList.getBatch())){ + throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 绠卞彿锛�"+matList.getBatch()+"涓嶅睘浜庢璁㈠崟鎴栬�呭凡缁忓叆搴�"); + }else { +// if (matList.getAnfme() > orderDetls.get(0).getAnfme()) { +// throw new CoolException("绠卞彿锛�"+orderDetls.get(0).getBatch() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); +// } + matListBoxNoList.add(matList.getBoxNo()); + } + } + List<OrderDetl> orderDetlList = new ArrayList<>(); + for (OrderDetl orderDetl: orderDetls){ + if (matListBoxNoList.contains(orderDetl.getBatch())){ + orderDetl.setBrand("1"); + orderDetlList.add(orderDetl); + } + } + String matnr = null; + List<WaitPakin> waitPakins = new ArrayList<>(); + + for (OrderDetl orderDetl:orderDetlList){ + Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + matnr = mat.getMatnr(); + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); + waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setModel(orderDetl.getModel()); //鎵规 + waitPakin.setSpecs(orderDetl.getSpecs()); //瑙勬牸 + waitPakin.setBatch(orderDetl.getBatch()); //鏈ㄧ缂栫爜 + waitPakin.setBrand(param.getBoxType()); //鏈ㄧ绫诲瀷 + waitPakin.setZpallet(param.getBarcode()); //鎵樼洏鐮� + waitPakin.setOrigin(orderDetl.getOrigin()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(orderDetl.getAnfme()); // 鏈ㄧ涓摐绠旀暟閲� + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(userId); + waitPakin.setAppeTime(now); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + waitPakin.setRollUp(orderDetl.getRollUp()); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + waitPakins.add(waitPakin); + } + + LocTypeDto locTypeDto = new LocTypeDto(); + locTypeDto.setLocType1((short)1); + + StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto); + + int workNo = dto.getWorkNo(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + waitPakins.forEach(waitPakin -> { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + wrkDetl.setOrderNo(order.getOrderNo()); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkDetl.setRollUp(waitPakin.getRollUp()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(order.getId(), orderDetls.get(0).getMatnr(), orderDetls.get(0).getBatch(), orderDetls.get(0).getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + orderService.updateSettle(order.getId(), 2L, userId); } @Override @Transactional -- Gitblit v1.9.1