From d87b636f92269b4ec97cb5ca00680409755814a9 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 30 四月 2025 15:38:43 +0800 Subject: [PATCH] 收货优化修改 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 140 ++++++++++++++++++++++++++++------------------ 1 files changed, 85 insertions(+), 55 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 688e1a5..b67b341 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -37,6 +37,7 @@ import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.apache.commons.codec.digest.Md5Crypt; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -46,6 +47,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -128,10 +130,10 @@ private DeviceSiteMapper deviceSiteMapper; /** + * @return * @author Ryan * @description 鎵嬫寔PDA鐧诲綍鎺ュ彛 * @params LoginParam param锛� HttpServletRequest request - * @return * @time 2025/3/10 15:36 */ @Override @@ -163,10 +165,10 @@ } /** - * @author Ryan - * @description 鎵爜鑾峰彇鏀惰揣鏄庣粏 * @param barcode * @return + * @author Ryan + * @description 鎵爜鑾峰彇鏀惰揣鏄庣粏 * @time 2025/3/10 15:37 */ @Override @@ -174,7 +176,10 @@ if (StringUtils.isBlank(barcode)) { return R.error("鏍囩鐮佷笉鑳戒负绌猴紒锛�"); } - List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, barcode)); + List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() + .eq(AsnOrderItem::getTrackCode, barcode)); + + if (Objects.isNull(asnOrderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } @@ -235,7 +240,9 @@ } List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts"); for (Map<String, Object> rcpt : receipts1) { - if (null == rcpt || Objects.isNull(rcpt)) {continue;} + if (null == rcpt || Objects.isNull(rcpt)) { + continue; + } ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class); Matnr matnr = matnrMapper.selectById(dto.getMatnrId()); if (Objects.isNull(matnr)) { @@ -249,13 +256,13 @@ // } AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, asnCode) - .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) + .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) .eq(AsnOrderItem::getMatnrId, dto.getMatnrId())); if (Objects.isNull(orderItem)) { throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒"); } if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) { - throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); + throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); } Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty(); orderItem.setQty(itemRcptQty) @@ -267,7 +274,7 @@ try { if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) { //鑾峰彇16浣島uid - String uuid16 = CommonUtil.randomUUID16(); + String uuid16 = Cools.md5(dto.getBarcode()); rcpt.put("index", uuid16); orderItem.setFieldsIndex(uuid16); } @@ -296,8 +303,10 @@ .setAsnId(asnOrder.getId()) .setProdTime(dto.getProdTime()) .setWeight(dto.getWeigth()) - .setStockUnit(dto.getStockUnit()) - .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto)) + //搴撳瓨鍗曚綅涓烘渶灏忓崟浣� + .setUnit(orderItem.getStockUnit()) + .setStockUnit(orderItem.getStockUnit()) + .setBatch(StringUtils.isBlank(orderItem.getBatch()) ? SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto) : orderItem.getBatch()) .setAnfme(dto.getReceiptQty()) .setSplrBatch(dto.getSplrBatch()) .setMatnrCode(matnr.getCode()) @@ -305,20 +314,29 @@ .setCreateBy(loginUserId) .setMatnrId(matnr.getId()) .setMaktx(matnr.getName()) - //搴撳瓨鍗曚綅涓烘渶灏忓崟浣� - .setUnit(dto.getStockUnit()) - .setStockUnit(dto.getStockUnit()) .setWeight(matnr.getWeight()) .setFieldsIndex(orderItem.getFieldsIndex()) .setShipperId(matnr.getShipperId()); //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲 - allOrders.add(item); + WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() + .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId()) + .eq(WarehouseAreasItem::getTrackCode, item.getTrackCode()) + .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch())); + if (!Objects.isNull(serviceOne)) { + item.setAnfme(item.getAnfme() + serviceOne.getAnfme()); + item.setId(serviceOne.getId()); + } + + if (!warehouseAreasItemService.saveOrUpdate(item)) { + throw new CoolException("鏀惰揣澶辫触锛侊紒"); + } + } - if (!warehouseAreasItemService.saveBatch(allOrders)) { - throw new CoolException("鏀惰揣澶辫触锛侊紒"); - } +// if (!warehouseAreasItemService.saveBatch(allOrders)) { +// throw new CoolException("鏀惰揣澶辫触锛侊紒"); +// } // //鑾峰彇閲囪喘鏁伴噺 // double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum(); // @@ -333,10 +351,10 @@ } /** - * @author Ryan - * @description 鍏跺畠鏀惰揣 * @param params * @return + * @author Ryan + * @description 鍏跺畠鏀惰揣 */ @Override public R otherReceipt(OtherReceiptParams params) { @@ -345,20 +363,28 @@ } List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) - .eq(!Objects.isNull(params.getTrackCode()) ,AsnOrderItem::getTrackCode, params.getTrackCode())); + .eq(!Objects.isNull(params.getTrackCode()), AsnOrderItem::getTrackCode, params.getTrackCode())); if (Objects.isNull(asnOrderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } + List<Short> shorts = Arrays.asList(AsnExceStatus.ASN_EXCE_STATUS_TASK_CANCEL.val, AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE + .val, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); + AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>() + .notIn(AsnOrder::getExceStatus, shorts) + .eq(AsnOrder::getCode, params.getAsnCode())); + if (Objects.isNull(order)) { + throw new CoolException("璇锋鏌ヨ鍗曠姸鎬佹槸鍚﹀凡瀹屾垚鎴栧凡鍙栨秷锛侊紒"); + } - return getAsnOrderItem(asnOrderItem); + return getAsnOrderItem(asnOrderItem); } /** + * @return * @author Ryan * @description 鑾峰彇鎵�鏈夐�氱煡鍗� - * @return */ @Override public List<AsnOrder> getAllAsnOrders() { @@ -367,10 +393,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鏀惰揣鍖� * @param * @return + * @author Ryan + * @description 鑾峰彇鏀惰揣鍖� * @time 2025/3/11 10:12 */ @Override @@ -380,10 +406,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鎵�鏈夊惎鐢ㄥ姩鎬佸瓧娈� * @param * @return + * @author Ryan + * @description 鑾峰彇鎵�鏈夊惎鐢ㄥ姩鎬佸瓧娈� * @time 2025/3/12 09:23 */ @Override @@ -392,10 +418,10 @@ } /** - * @author Ryan - * @description 鑾峰彇缁勭洏鏄庣粏 * @param * @return + * @author Ryan + * @description 鑾峰彇缁勭洏鏄庣粏 * @time 2025/4/7 16:58 */ @Override @@ -422,10 +448,10 @@ } /** - * @author Ryan - * @description 瑙g粦 * @param param * @return + * @author Ryan + * @description 瑙g粦 */ @Override public WaitPakin unBind(WaitPakinParam param) { @@ -434,6 +460,7 @@ /** * 鎶ユ鍔熻兘 + * * @param code * @param loginUserId * @return @@ -474,10 +501,10 @@ } /** - * @author Ryan - * @description 鎻愪氦鎶ユ * @param * @return + * @author Ryan + * @description 鎻愪氦鎶ユ * @time 2025/4/1 16:47 */ @Override @@ -492,14 +519,15 @@ List<AsnOrder> orders = new ArrayList<>(); orders.add(asnOrder); if (asnOrderMapper.notifyInspect(orders)) { - return R.ok("涓婃姤鎴愬姛锛侊紒"); - }else { + return R.ok("涓婃姤鎴愬姛锛侊紒"); + } else { return R.error("涓婃姤澶辫触锛侊紒"); } } /** * 閫氳繃鐗╂枡锛岃川妫�鍗曡幏鍙栭渶瑕佽川妫�鍗曟嵁 + * * @param params * @return */ @@ -510,7 +538,7 @@ } List<Short> asList = Arrays.asList(QlyIsptStatus.QLY_ISPT_STAS_DONE.val, QlyIsptStatus.QLY_ISPT_STAS_CLOSE.val); QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() - .notIn(QlyInspect::getIsptStatus, asList) + .notIn(QlyInspect::getIsptStatus, asList) .eq(QlyInspect::getCode, params.getIsptCode())); if (Objects.isNull(inspect)) { throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!"); @@ -545,6 +573,7 @@ /** * 蹇�熻川妫� + * * @param params * @return */ @@ -563,12 +592,12 @@ } /** - * @author Ryan - * @description 浜哄伐涓婃灦 - * @param - * @return - * @time 2025/4/2 16:33 - */ + * @param + * @return + * @author Ryan + * @description 浜哄伐涓婃灦 + * @time 2025/4/2 16:33 + */ @Override public R operateToStock(OpStockParams params) { if (org.apache.commons.lang3.StringUtils.isBlank(params.getBarcode())) { @@ -692,6 +721,7 @@ /** * 鑾峰彇浠诲姟淇℃伅 + * * @param code * @return */ @@ -736,10 +766,10 @@ } /** - * @Author Ryan * @param code - * @desc 浠诲姟涓婃灦 * @return + * @Author Ryan + * @desc 浠诲姟涓婃灦 */ @Override @Transactional(rollbackFor = Exception.class) @@ -765,14 +795,14 @@ @Override public R completeOrder(Long id, Long loginUserId) { - return asnOrderMapper.completeOrder(id, loginUserId); + return asnOrderMapper.completeOrder(id, loginUserId); } /** - * @author Ryan - * @description 閫氳繃瀹瑰櫒鑾峰彇缁勬嫋鐗╂枡 * @param * @return + * @author Ryan + * @description 閫氳繃瀹瑰櫒鑾峰彇缁勬嫋鐗╂枡 * @time 2025/4/9 16:57 */ @Override @@ -785,7 +815,7 @@ } WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() .eq(WaitPakin::getBarcode, params.get("barcode").toString()) - .eq(WaitPakin::getFlagDefect, flagDefect) + .eq(WaitPakin::getFlagDefect, flagDefect) .in(WaitPakin::getIoStatus, asList)); if (Objects.isNull(waitPakin)) { return R.ok(new ArrayList<>()); @@ -818,10 +848,10 @@ } /** - * @author Ryan - * @description 涓嶈壇鏍囩 * @param * @return + * @author Ryan + * @description 涓嶈壇鏍囩 * @time 2025/4/12 08:12 */ @Override @@ -831,10 +861,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 * @param barcode * @return + * @author Ryan + * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 */ @Override public R getPakinInStock(String barcode) { @@ -850,23 +880,23 @@ } /** + * @return * @author Ryan * @description 鑾峰彇搴撳彛绔欑偣淇℃伅 - * @return */ @Override public R getDeviceSites() { List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>() - .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) + .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) .eq(DeviceSite::getStatus, 1) .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName)); return R.ok(sites); } /** + * @return * @author Ryan * @description 鑾峰彇鎺ㄨ崘搴撲綅 - * @return */ @Override public R getRecommondLocs() { @@ -930,7 +960,7 @@ //鑾峰彇褰撳墠搴撳瓨淇℃伅 LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>() // .eq(LocItem::getOrderItemId, asnOrderItem.getId()) - .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex()) + .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex()) .eq(LocItem::getBatch, asnOrderItem.getBatch()) .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId())); //SET 褰撳墠搴撳瓨鏁伴噺 -- Gitblit v1.9.1