From d97d7346ec794ffa34077160bb13424f2f84bc57 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 30 四月 2025 10:47:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/devlop' into devlop --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 155 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 127 insertions(+), 28 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 c8cd598..33a6fb9 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 @@ -16,13 +16,14 @@ import com.vincent.rsf.server.common.security.JwtSubject; import com.vincent.rsf.server.common.utils.CommonUtil; import com.vincent.rsf.server.common.utils.FieldsUtils; -import com.vincent.rsf.server.common.utils.JSONUtil; import com.vincent.rsf.server.common.utils.JwtUtil; +import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams; import com.vincent.rsf.server.manager.controller.params.IsptItemsParams; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.AsnExceStatus; import com.vincent.rsf.server.manager.enums.PakinIOStatus; +import com.vincent.rsf.server.manager.enums.QlyIsptStatus; import com.vincent.rsf.server.manager.mapper.*; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.CodeRes; @@ -32,13 +33,10 @@ import com.vincent.rsf.server.system.entity.*; import com.vincent.rsf.server.system.mapper.FieldsMapper; import com.vincent.rsf.server.system.mapper.TenantMapper; -import com.vincent.rsf.server.system.mapper.UserMapper; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; -import com.vincent.rsf.server.system.utils.ExtendFieldsUtils; import com.vincent.rsf.server.system.utils.SerialRuleUtils; -import net.sf.jsqlparser.statement.select.Wait; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -48,7 +46,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -88,6 +85,8 @@ private QlyIsptItemService qlyIsptItemService; @Resource private StockItemMapper stockItemMapper; + @Autowired + private LocItemService locItemService; @Resource private PurchaseItemMapper purchaseItemMapper; @Resource @@ -125,6 +124,8 @@ private LocAreaRelaMapper locAreaRelaMapper; @Autowired private LocAreaMapper locAreaMapper; + @Autowired + private DeviceSiteMapper deviceSiteMapper; /** * @author Ryan @@ -226,7 +227,7 @@ } //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/ Double rcptedQty = asnOrder.getQty() + receiptQty; - asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val)); + asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); if (!asnOrderMapper.updateById(asnOrder)) { throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�"); @@ -247,6 +248,7 @@ // } AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, asnCode) + .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) .eq(AsnOrderItem::getMatnrId, dto.getMatnrId())); if (Objects.isNull(orderItem)) { throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒"); @@ -357,7 +359,7 @@ */ @Override public List<AsnOrder> getAllAsnOrders() { - List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type)); + List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type)); return asnOrders; } @@ -370,7 +372,8 @@ */ @Override public R getReceiptAreas() { - return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type))); + List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)); + return R.ok(areas); } /** @@ -403,15 +406,16 @@ } /** + * @param + * @param userId + * @return * @author Ryan * @description PDA缁勬嫋 - * @param - * @return * @time 2025/3/29 14:26 */ @Override - public WaitPakin mergeItems(WaitPakinParam waitPakin) { - return waitPakinService.mergeItems(waitPakin); + public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) { + return waitPakinService.mergeItems(waitPakin, userId); } /** @@ -501,7 +505,10 @@ if (Objects.isNull(params.getIsptCode())) { throw new CoolException("璐ㄦ鍗曚笉鑳戒负绌�"); } - QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode())); + 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) + .eq(QlyInspect::getCode, params.getIsptCode())); if (Objects.isNull(inspect)) { throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!"); } @@ -615,35 +622,60 @@ .eq(AsnOrder::getId, OrderId) .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type)); if (Objects.isNull(order)) { - throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + throw new CoolException("闈炲钩搴撳崟鎹笉鍙墽琛屼汉宸ヤ笂鏋讹紒锛�"); } Stock stock = new Stock(); - stock.setAsnId(OrderId).setAsnCode(order.getCode()); - if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) { - Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode())); - if (!Objects.isNull(purchase)) { - stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId()); - } - } +// if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) { +// Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode())); +// if (!Objects.isNull(purchase)) { +// stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId()); +// } +// } String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); if (StringUtils.isBlank(ruleCode)) { throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒"); } + List<AsnOrderItem> itemList = params.getItemList(); + double sum = itemList.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); + stock.setAnfme(sum) + .setSourceId(order.getId()) + .setType(order.getType()) + .setWkType(Short.parseShort(order.getWkType())); if (!stockService.save(stock)) { throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒"); } + //TODO 骞冲簱涓婃灦绛栫暐闂锛� 1 骞冲簱搴撲綅鏄崟鐙璁★紝杩樻槸涓庝骇搴撲竴璧风敤绫诲瀷鍖哄垎 Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, params.getLocCode())); if (Objects.isNull(loc)) { throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); } + //locItemSerivce + List<LocItem> locItems = new ArrayList<>(); + itemList.forEach(asnOrderItem -> { + LocItem item = new LocItem(); + BeanUtils.copyProperties(asnOrderItem, item); + item.setLocId(loc.getId()) + .setId(null) + .setLocCode(loc.getCode()) + .setOrderId(order.getId()) + .setOrderItemId(asnOrderItem.getId()) + .setWkType(Short.parseShort(order.getWkType())) + .setType(order.getType()); + locItems.add(item); + }); + if (!locItemService.saveBatch(locItems)) { + throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒"); + } + List<StockItem> stockItems = new ArrayList<>(); - params.getItemList().forEach(orderItem -> { + itemList.forEach(orderItem -> { StockItem stockItem = new StockItem(); BeanUtils.copyProperties(orderItem, stockItem); - stockItem.setAsnItemId(orderItem.getId()) + stockItem.setSourceItemId(orderItem.getId()) .setBarcode(orderItem.getBarcode()) - .setLocId(loc.getId()) + .setStockCode(stock.getCode()) .setUpdateBy(loginUserId) + .setCreateBy(loginUserId) .setId(null) .setStockId(stock.getId()); stockItems.add(stockItem); @@ -796,6 +828,71 @@ } /** + * @author Ryan + * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 + * @param barcode + * @return + */ + @Override + public R getPakinInStock(String barcode) { + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode)); + if (Objects.isNull(waitPakin)) { + throw new CoolException("缁勬嫋鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); + if (pakinItems.isEmpty()) { + return R.ok(new ArrayList<>()); + } + return R.ok(pakinItems); + } + + /** + * @author Ryan + * @description 鑾峰彇搴撳彛绔欑偣淇℃伅 + * @return + */ + @Override + public R getDeviceSites() { + List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>() + .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) + .eq(DeviceSite::getStatus, 1) + .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName)); + return R.ok(sites); + } + + /** + * @author Ryan + * @description 鑾峰彇鎺ㄨ崘搴撲綅 + * @return + */ + @Override + public R getRecommondLocs() { + return R.ok(locService.list(new LambdaQueryWrapper<Loc>().last("limit 10"))); + } + + /** + * @param map + * @param loginUserId + * @return + * @author Ryan + * @description 鐢熸垚浠诲姟鍒楄〃 + */ + @Override + public R generateTask(Map<String, Object> map, Long loginUserId) { + String barcode = map.get("barcode").toString(); + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode)); + if (waitPakins.isEmpty()) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦� 锛侊紒"); + } + GenerateTaskParams taskParams = new GenerateTaskParams(); + taskParams.setWaitPakins(waitPakins) + .setSiteId(Long.parseLong(map.get("site").toString())) + .setLocCode(map.get("locCode").toString()); + return R.ok(taskService.generateTasks(taskParams, loginUserId)); + + } + + /** * 鑾峰彇ReceiptDetlsDtos */ private R getAsnOrderItem(List<AsnOrderItem> items) { @@ -828,14 +925,16 @@ detlsDto.setInspect(inspect.getStatus$()); } //鑾峰彇褰撳墠搴撳瓨淇℃伅 - StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>() - .eq(StockItem::getAsnItemId, asnOrderItem.getId()) - .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId())); + LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>() +// .eq(LocItem::getOrderItemId, asnOrderItem.getId()) + .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex()) + .eq(LocItem::getBatch, asnOrderItem.getBatch()) + .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId())); //SET 褰撳墠搴撳瓨鏁伴噺 if (Objects.isNull(stockItem)) { detlsDto.setStockQty(0.0); } else { - detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); + detlsDto.setStockQty(stockItem.getAnfme() + stockItem.getWorkQty()); } if (!Objects.isNull(asnOrderItem.getPoDetlId())) { -- Gitblit v1.9.1