no message

main
HUOJIN\92525 2024-11-08 14:37:06 +08:00
parent 62921aa99c
commit aedc6cb9ef
3 changed files with 213 additions and 145 deletions

View File

@ -175,21 +175,14 @@ public class PickDetailController {
public synchronized ResponseEntity<Object> allocatePick(@RequestBody Long[] ids) throws Exception { public synchronized ResponseEntity<Object> allocatePick(@RequestBody Long[] ids) throws Exception {
List<Long> picktickIds = Arrays.asList(ids); List<Long> picktickIds = Arrays.asList(ids);
Collections.sort(picktickIds);//升序排序 Collections.sort(picktickIds);//升序排序
if (picktickIds.size() > 0) { List<String> msgList = new ArrayList<>();//存放提示信息
try {
for (Long picktickId : picktickIds) { for (Long picktickId : picktickIds) {
List<PickDetail> pickDetailList = pickDetailService.queryPickDetailList(picktickId); List<PickDetail> pickDetailList = pickDetailService.queryPickDetailList(picktickId);
for (PickDetail pd : pickDetailList) { for (PickDetail pd : pickDetailList) {
pickDetailService.allocate(pd.getId(), pd.getOrderQty() - pd.getAllocatedQty()); msgList.add(pickDetailService.allocateAll(pd.getId(), pd.getOrderQty() - pd.getAllocatedQty()));
} }
} }
} catch (Exception e) { return new ResponseEntity<>(ApiResult.success(msgList.toString(),null), HttpStatus.OK);
return new ResponseEntity(ApiResult.fail(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST);
}
} else {
return new ResponseEntity(ApiResult.fail(BAD_REQUEST.value(), "参数错误或者为null", ""), HttpStatus.BAD_REQUEST);
}
return new ResponseEntity<>(ApiResult.success(),HttpStatus.OK);
} }
@PostMapping("/sbPickdetail") @PostMapping("/sbPickdetail")

View File

@ -34,15 +34,16 @@ import java.io.IOException;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/** /**
* @author huojin
* @website https://eladmin.vip * @website https://eladmin.vip
* @description * @description
* @author huojin
* @date 2023-08-16 * @date 2023-08-16
**/ **/
public interface PickDetailService { public interface PickDetailService {
/** /**
* *
*
* @param criteria * @param criteria
* @param pageable * @param pageable
* @return Map<String, Object> * @return Map<String, Object>
@ -51,6 +52,7 @@ public interface PickDetailService {
/** /**
* *
*
* @param criteria * @param criteria
* @return List<PickDetailDto> * @return List<PickDetailDto>
*/ */
@ -60,6 +62,7 @@ public interface PickDetailService {
/** /**
* ID * ID
*
* @param id ID * @param id ID
* @return PickDetailDto * @return PickDetailDto
*/ */
@ -67,6 +70,7 @@ public interface PickDetailService {
/** /**
* *
*
* @param resources / * @param resources /
* @return PickDetailDto * @return PickDetailDto
*/ */
@ -74,23 +78,28 @@ public interface PickDetailService {
/** /**
* *
*
* @param resources / * @param resources /
*/ */
void update(PickDetail resources); void update(PickDetail resources);
/** /**
* *
*
* @param ids / * @param ids /
*/ */
void deleteAll(Long[] ids); void deleteAll(Long[] ids);
/** /**
* *
*
* @param id * @param id
*/ */
void deletePickDetail(Long id); void deletePickDetail(Long id);
/** /**
* *
*
* @param all * @param all
* @param response / * @param response /
* @throws Exception / * @throws Exception /
@ -102,6 +111,11 @@ public interface PickDetailService {
*/ */
void allocate(long id, double quantity); void allocate(long id, double quantity);
/**
*
*/
String allocateAll(long id, double quantity);
/** /**
* *
*/ */
@ -109,12 +123,14 @@ public interface PickDetailService {
/** /**
* *
*
* @return * @return
*/ */
long count(); long count();
/** /**
* Dto * Dto
*
* @param pickDetailDto * @param pickDetailDto
* @return * @return
*/ */
@ -122,6 +138,7 @@ public interface PickDetailService {
/** /**
* *
*
* @param pt * @param pt
* @param item * @param item
* @param po * @param po
@ -133,6 +150,7 @@ public interface PickDetailService {
/** /**
* *
*
* @param picktickId * @param picktickId
* @return * @return
*/ */
@ -142,12 +160,14 @@ public interface PickDetailService {
/** /**
* *
*
* @return * @return
*/ */
List<Object[]> getQueryBcbl(Date blDate, Long ckAreaId, String gc); List<Object[]> getQueryBcbl(Date blDate, Long ckAreaId, String gc);
/** /**
* *
*
* @param picktickId * @param picktickId
* @param largeClass * @param largeClass
* @return * @return
@ -156,6 +176,7 @@ public interface PickDetailService {
/** /**
* *
*
* @param picktickId * @param picktickId
* @param largeClass * @param largeClass
* @return * @return

View File

@ -179,6 +179,7 @@ public class PickDetailServiceImpl implements PickDetailService {
if (pd.getOrderQty() - pd.getAllocatedQty() == 0) { if (pd.getOrderQty() - pd.getAllocatedQty() == 0) {
throw new BadRequestException(HttpStatus.NOT_FOUND, "已分配,请勿重复操作!"); throw new BadRequestException(HttpStatus.NOT_FOUND, "已分配,请勿重复操作!");
} }
Long zzkwId = null; Long zzkwId = null;
if (pd.getPoint() != null && pickTicket.getArea().getBexb()) { if (pd.getPoint() != null && pickTicket.getArea().getBexb()) {
zzkwId = pd.getPoint().getId(); zzkwId = pd.getPoint().getId();
@ -188,7 +189,6 @@ public class PickDetailServiceImpl implements PickDetailService {
throw new BadRequestException(HttpStatus.NOT_FOUND, "请维护发货暂存区"); throw new BadRequestException(HttpStatus.NOT_FOUND, "请维护发货暂存区");
} }
List<Inventory> invs = inventoryService.queryInventoryAllocate(item.getId(), pickTicket.getArea().getId(), zzkwId); List<Inventory> invs = inventoryService.queryInventoryAllocate(item.getId(), pickTicket.getArea().getId(), zzkwId);
if (invs.size() > 0) {
double allocateQty = 0; double allocateQty = 0;
double unQty = quantity;//未分配数量 double unQty = quantity;//未分配数量
for (Inventory inv : invs) { for (Inventory inv : invs) {
@ -217,9 +217,63 @@ public class PickDetailServiceImpl implements PickDetailService {
pickTicketRepository.save(pickTicket); pickTicketRepository.save(pickTicket);
taskService.storeTask(null, pd, pickTicket.getArea(), inv.getItemKey(), startPoint, endPoint, allocateQty); taskService.storeTask(null, pd, pickTicket.getArea(), inv.getItemKey(), startPoint, endPoint, allocateQty);
} }
} }
@Override
@Transactional(rollbackFor = Exception.class)
public String allocateAll(long id, double quantity) {
PickDetailDto pickDetailDto = findById(id);
PickDetail pd = toEntity(pickDetailDto);//Dto转实体
PickTicket pickTicket = pd.getPickTicket();
ItemDto itemDto = pickDetailDto.getItem();
Item item = itemService.toEntity(itemDto);
if (pd.getOrderQty() - pd.getAllocatedQty() == 0) {
return pickTicket.getCode() + "出库单;" + item.getCode() + "数量已分配!";
}
Long zzkwId = null;
if (pd.getPoint() != null && pickTicket.getArea().getBexb()) {
zzkwId = pd.getPoint().getId();
}
List<Inventory> invs = inventoryService.queryInventoryAllocate(item.getId(), pickTicket.getArea().getId(), zzkwId);
if (invs.isEmpty()) {
return item.getCode() + "物料库存不足,请先补充库存!";
}
Point endPoint = pointService.getPoint("FHQ", null, null, null);//目标库位
if (endPoint == null) {
return "请维护发货暂存区!";
}
double allocateQty = 0;
double unQty = quantity;//未分配数量
for (Inventory inv : invs) {
Point startPoint = inv.getPoint();//原库位
if (unQty <= 0) {
break;
}
allocateQty = inv.getQuantity() - inv.getQueuedQty();//库存可用数量
if (allocateQty <= 0) {
continue;
}
if (unQty < allocateQty) {
allocateQty = unQty;
}
inv.setQueuedQty(inv.getQueuedQty() + allocateQty);
inventoryRepository.save(inv);
unQty -= allocateQty;
pd.setAllocatedQty(pd.getAllocatedQty() + allocateQty);
pickDetailRepository.save(pd);
pickTicket.setAllocatedQuantity(pickTicket.getAllocatedQuantity() + allocateQty);
if (pickTicket.getAllocatedQuantity() > 0) {
pickTicket.setStatus(BizStatus.ALLOCATE);
}
//备货表上出单日期(审核写)
pickTicket.setOutOrderDate(new Timestamp(new Date().getTime()));
pickTicketRepository.save(pickTicket);
taskService.storeTask(null, pd, pickTicket.getArea(), inv.getItemKey(), startPoint, endPoint, allocateQty);
}
return item.getCode() + "物料分配成功!";
} }