出库-分配库存,不足整托提示

main
bbl\baobl 2024-03-25 15:20:12 +08:00
parent 5dcfc0c7b5
commit 2ebd0f95f4
5 changed files with 76 additions and 3 deletions

View File

@ -56,4 +56,6 @@ public interface PickDetailRepository extends JpaRepository<PickDetail, Long>, J
PickDetail findByPickAndLineNo(Long id, Long lineNo);
@Query(value = "select pd from PickDetail pd where pd.pick.id=?1", nativeQuery = false)
List<PickDetail> findByPick(Long id);
@Query(value = "select pd from PickDetail pd where pd.pick.id=?1 and pd.allocatedQty>0", nativeQuery = false)
List<PickDetail> findByPickAllocated(Long id);
}

View File

@ -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<Object> cancelAllocate(@RequestBody Long[] ids) {
ApiResult apiResult = pickService.cancelAllocate(ids);
return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus()));
}
@PostMapping("/allocate")
@Log("出库-整单分配")
@AnonymousAccess
public ResponseEntity<Object> allocate(@RequestBody Long[] ids) {
ApiResult apiResult = pickService.allocate(ids);
return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus()));
}
}

View File

@ -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<PickDto> all, HttpServletResponse response) throws IOException;
/** 出库-整单分配*/
ApiResult allocate(Long[] ids);
/** 出库-整单取消分配*/
ApiResult cancelAllocate(Long[] ids);
}

View File

@ -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);

View File

@ -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<ApiResult> apiResults=new ArrayList<>();
for (int i = 0; i < ids.length; i++) {
Pick pick = pickRepository.getById(ids[i]);
List<PickDetail> 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<ApiResult> apiResults=new ArrayList<>();
for (int i = 0; i < ids.length; i++) {
Pick pick = pickRepository.getById(ids[i]);
List<PickDetail> 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<PickDetail> pickAllocated = pickDetailRepository.findByPickAllocated(pick.getId());
if (pickAllocated.size()==0){
// 没有已分配明细
pick.setStatus(BizStatus.OPEN);
pickRepository.save(pick);
}
}
return ApiResult.fail(200,"取消分配成功",apiResults);
}
}