From 2ebd0f95f446545ea2aabd1e7157c2005dc18e50 Mon Sep 17 00:00:00 2001 From: "bbl\\baobl" Date: Mon, 25 Mar 2024 15:20:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93-=E5=88=86=E9=85=8D=E5=BA=93?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E4=B8=8D=E8=B6=B3=E6=95=B4=E6=89=98=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/PickDetailRepository.java | 2 + .../businessdata/rest/PickController.java | 16 +++++++ .../businessdata/service/PickService.java | 5 ++ .../service/impl/PickDetailServiceImpl.java | 8 ++-- .../service/impl/PickServiceImpl.java | 48 +++++++++++++++++++ 5 files changed, 76 insertions(+), 3 deletions(-) diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java index 8cfcfba..d9771a9 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java @@ -56,4 +56,6 @@ public interface PickDetailRepository extends JpaRepository, J PickDetail findByPickAndLineNo(Long id, Long lineNo); @Query(value = "select pd from PickDetail pd where pd.pick.id=?1", nativeQuery = false) List findByPick(Long id); + @Query(value = "select pd from PickDetail pd where pd.pick.id=?1 and pd.allocatedQty>0", nativeQuery = false) + List findByPickAllocated(Long id); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickController.java index 409d5c5..0600146 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickController.java @@ -15,10 +15,12 @@ */ package com.youchain.businessdata.rest; +import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.service.PickService; import com.youchain.businessdata.service.dto.PickQueryCriteria; +import com.youchain.exception.handler.ApiResult; import org.springframework.data.domain.Pageable; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; @@ -84,4 +86,18 @@ public class PickController { pickService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/cancelAllocate") + @Log("出库-整单取消分配") + @AnonymousAccess + public ResponseEntity cancelAllocate(@RequestBody Long[] ids) { + ApiResult apiResult = pickService.cancelAllocate(ids); + return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); + } + @PostMapping("/allocate") + @Log("出库-整单分配") + @AnonymousAccess + public ResponseEntity allocate(@RequestBody Long[] ids) { + ApiResult apiResult = pickService.allocate(ids); + return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus())); + } } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java index ebcf668..60ea633 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java @@ -18,6 +18,7 @@ package com.youchain.businessdata.service; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.service.dto.PickDto; import com.youchain.businessdata.service.dto.PickQueryCriteria; +import com.youchain.exception.handler.ApiResult; import org.springframework.data.domain.Pageable; import java.util.Map; import java.util.List; @@ -80,4 +81,8 @@ public interface PickService { * @throws IOException / */ void download(List all, HttpServletResponse response) throws IOException; + /** 出库-整单分配*/ + ApiResult allocate(Long[] ids); + /** 出库-整单取消分配*/ + ApiResult cancelAllocate(Long[] ids); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index c614e88..cf26c63 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -159,11 +159,11 @@ public class PickDetailServiceImpl implements PickDetailService { } } if (pickDetail.getPropC4().equals(BizStatus.RG_PT)){ - /** 人工出库*/ + /** 人工出库 */ apiResult = getAllocate(pickDetail, item, dept, quantity,0); } if (pickDetail.getPropC4().equals(BizStatus.AGV_PT)){ - /**AGV出库分配*/ + /** AGV出库分配 */ //获取目标点位 apiResult = getAllocate(pickDetail, item, dept, quantity,1); } @@ -188,7 +188,9 @@ public class PickDetailServiceImpl implements PickDetailService { //整托分配 allocateQty = inv.getQuantity(); if (unQty < allocateQty) { - return ApiResult.fail(201, "剩余订单数量不足一托", ""); + return ApiResult.fail(201, "单号:"+pickDetail.getPick().getRelatedBill1() + +"行:"+pickDetail.getLineNo()+",剩余订单数量不足一托"+"订单数量"+quantity+",剩余未分配数量" + +unQty+",库存单托数量"+inv.getQuantity(),null); } //更新库存 inv.setQueuedQty(allocateQty); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java index 37d2a9c..8f29fcb 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java @@ -15,9 +15,12 @@ */ package com.youchain.businessdata.service.impl; +import com.qiniu.storage.Api; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.domain.PickDetail; import com.youchain.businessdata.repository.PickDetailRepository; +import com.youchain.businessdata.service.PickDetailService; +import com.youchain.exception.handler.ApiResult; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; import com.youchain.businessdata.repository.PickRepository; @@ -47,6 +50,7 @@ import java.util.LinkedHashMap; public class PickServiceImpl implements PickService { private final PickRepository pickRepository; + private final PickDetailService pickDetailService; private final PickDetailRepository pickDetailRepository; private final PickMapper pickMapper; @@ -121,4 +125,48 @@ public class PickServiceImpl implements PickService { } FileUtil.downloadExcel(list, response); } + + @Override + public ApiResult allocate(Long[] ids) { + List apiResults=new ArrayList<>(); + for (int i = 0; i < ids.length; i++) { + Pick pick = pickRepository.getById(ids[i]); + List pickDetailList = pickDetailRepository.findByPick(pick.getId()); + for (int j = 0; j < pickDetailList.size(); j++) { + //按明细分配 + PickDetail pickDetail=pickDetailList.get(i); + Long[] pfIds={ pickDetail.getId() }; + ApiResult apiResult = pickDetailService.allocate(pfIds); + if (apiResult.getStatus()==201){ + apiResults.add(apiResult); + } + } + pick.setStatus(BizStatus.ALLOCATE); + pickRepository.save(pick); + } + return ApiResult.fail(200,"分配成功",apiResults); + } + + @Override + public ApiResult cancelAllocate(Long[] ids) { + List apiResults=new ArrayList<>(); + for (int i = 0; i < ids.length; i++) { + Pick pick = pickRepository.getById(ids[i]); + List pickDetailList = pickDetailRepository.findByPick(pick.getId()); + for (int j = 0; j < pickDetailList.size(); j++) { + PickDetail pickDetail=pickDetailList.get(j); + Long[] pdIds={ pickDetail.getId() }; + ApiResult apiResult = pickDetailService.cancelAllocate(pdIds); + apiResults.add(apiResult); + } + //查询 单据已分配明细 + List pickAllocated = pickDetailRepository.findByPickAllocated(pick.getId()); + if (pickAllocated.size()==0){ + // 没有已分配明细 + pick.setStatus(BizStatus.OPEN); + pickRepository.save(pick); + } + } + return ApiResult.fail(200,"取消分配成功",apiResults); + } } \ No newline at end of file