no message

main
暴炳林 2024-06-17 16:10:06 +08:00
parent e1b28ec441
commit 92af2beb64
8 changed files with 95 additions and 25 deletions

View File

@ -36,5 +36,6 @@ public interface StockRepository extends JpaRepository<Stock, Long>, JpaSpecific
@Query("FROM Stock t WHERE t.code = :code AND (:status IS NULL OR t.status = :status)")
Stock findByCode(String code,String status);
@Query(value = "SELECT s FROM Stock s WHERE s.point.id=?1 and s.stockType in ('散件翻包','其他翻包')")
List<Stock> findByPointAndFb(Long id);
}

View File

@ -146,11 +146,10 @@ public class Task extends BaseEntity implements Serializable {
@Column(name = "`put_code`")
@ApiModelProperty(value = "上架号")
private String putCode;
@Column(name = "`inv_id`")
@OneToOne
@JoinColumn(name = "inv_id")
@ApiModelProperty(value = "库存ID")
private Long invId;
private Inventory inventory;
@OneToOne
@JoinColumn(name = "dept_id")
@ApiModelProperty(value = "仓库ID")
@ -187,11 +186,11 @@ public class Task extends BaseEntity implements Serializable {
* @param taskStatus-
* @param planQty-
* @param putCode-
* @param invId-ID
* @param inventory-ID
* @param dept-
* @param agvTask-AGV
*/
public Task(Item item, ItemKey itemKey, String billCode, String taskType, AsnDetail asnDetail, Long moveDetailId, Long waveDetailId, PickDetail pickDetail, Stock srcStock, Stock dstStock, Point srcPoint, Point dstPoint, String srcStockCode, String dstStockCode, String srcPointCode, String dstPointCode, String invStatus, String taskStatus, Double planQty, String putCode, Long invId, Dept dept, AgvTask agvTask) {
public Task(Item item, ItemKey itemKey, String billCode, String taskType, AsnDetail asnDetail, Long moveDetailId, Long waveDetailId, PickDetail pickDetail, Stock srcStock, Stock dstStock, Point srcPoint, Point dstPoint, String srcStockCode, String dstStockCode, String srcPointCode, String dstPointCode, String invStatus, String taskStatus, Double planQty, String putCode, Inventory inventory, Dept dept, AgvTask agvTask) {
this.item = item;
this.itemKey = itemKey;
this.billCode = billCode;
@ -212,7 +211,7 @@ public class Task extends BaseEntity implements Serializable {
this.taskStatus = taskStatus;
this.planQty = planQty;
this.putCode = putCode;
this.invId = invId;
this.inventory = inventory;
this.dept = dept;
this.agvTask = agvTask;
}

View File

@ -61,6 +61,12 @@ public interface PickDetailRepository extends JpaRepository<PickDetail, Long>, J
*/
@Query(value = "SELECT p FROM PickDetail p WHERE p.orderQty>p.allocatedQty", nativeQuery = false)
List<PickDetail> findByAllocate();
/**
*
* @return
*/
@Query(value = "SELECT p FROM PickDetail p WHERE p.allocatedQty>p.pickedQty and p.pick.id=?1", nativeQuery = false)
List<PickDetail> findByPickNo(Long pickId);
/**
*
* @return

View File

@ -231,7 +231,7 @@ public class AsnDetailController {
pointService.update(dstPoint);
double srcQty = 0d;
Inventory inv = invService.getInventory(ik, dstPoint, d.getStock(), d.getDept(), BizStatus.RECEIVING_UP);
t.setInvId(inv.getId());
t.setInventory(inv);
taskService.update(t);
srcQty = inv.getQuantity();
inv.addQty(inv, d.getOrderQty());

View File

@ -20,8 +20,10 @@ import com.youchain.annotation.Log;
import com.youchain.basicdata.service.dto.PointDto;
import com.youchain.basicdata.service.dto.PointQueryCriteria;
import com.youchain.businessdata.domain.Task;
import com.youchain.businessdata.repository.TaskRepository;
import com.youchain.businessdata.service.TaskService;
import com.youchain.businessdata.service.dto.TaskQueryCriteria;
import com.youchain.exception.handler.ApiResult;
import com.youchain.utils.BaseStatus;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.util.StandardSessionIdGenerator;
@ -50,6 +52,7 @@ import javax.servlet.http.HttpServletResponse;
public class TaskController {
private final TaskService taskService;
private final TaskRepository taskRepository;
@Log("导出数据")
@ApiOperation("导出数据")
@ -81,7 +84,19 @@ public class TaskController {
public ResponseEntity<Object> queryPickTask(TaskQueryCriteria criteria){
return new ResponseEntity<>(taskService.queryAll(criteria),HttpStatus.OK);
}
@PostMapping("/jhQr")
@Log("拣货确认")
@ApiOperation("拣货确认")
@AnonymousAccess
public ResponseEntity<Object> jhQr(@RequestBody Long[] ids){
System.out.println("task:"+ids);
for (Long id:ids){
taskService.invYw(id);
/* 更新Task状态*/
}
ApiResult apiResult=ApiResult.fail(200,"操作成功",null);
return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus()));
}
@PostMapping
@Log("新增task")
@ApiOperation("新增task")

View File

@ -121,20 +121,23 @@ public interface TaskService {
/**
*
*
* @param taskId
* @throws Exception
*/
void pickConfirm(long taskId, double pickedQuantity) throws Exception;
void pickConfirm(Long taskId, double pickedQuantity);
/**
* 退
*
* @param taskId
* @throws Exception
*/
void pickBarBack(long taskId, double pickedQuantity) throws Exception;
/**
*
* @param taskId
* @throws Exception
*/
void invYw(Long taskId);
/**
*
@ -153,5 +156,4 @@ public interface TaskService {
List<Task> queryInQHData(String time, String status);
List<Task> queryInQHALLData(String time);
}

View File

@ -210,7 +210,7 @@ public class PickDetailServiceImpl implements PickDetailService {
task.setInvStatus(inv.getStatus());
task.setTaskStatus(BizStatus.OPEN);
task.setPlanQty(allocateQty);
task.setInvId(inv.getId());
task.setInventory(inv);
task.setDept(dept);
// task.setAgvTask(agvTask);
taskService.create(task);
@ -270,7 +270,7 @@ public class PickDetailServiceImpl implements PickDetailService {
task.setInvStatus(inv.getStatus());
task.setTaskStatus(BizStatus.OPEN);
task.setPlanQty(inv.getQuantity());
task.setInvId(inv.getId());
task.setInventory(inv);
task.setDept(dept);
task.setAgvTask(agvTask);
task.setTaskType(BizStatus.PICK);
@ -287,7 +287,7 @@ public class PickDetailServiceImpl implements PickDetailService {
List<Task> Tasks = taskService.getPickNotAllTask(id);
for (Task task : Tasks) {
//根据Taskz找到对应的库存
InventoryDto inventoryDto = inventoryService.findById(task.getInvId());
InventoryDto inventoryDto = inventoryService.findById(task.getInventory().getId());
Inventory inv=inventoryService.toEntity(inventoryDto);
inv.setQueuedQty(inv.getQueuedQty() - pd.getAllocatedQty());
inventoryService.update(inv);

View File

@ -26,15 +26,14 @@ import com.youchain.basicdata.service.dto.StockSmallDto;
import com.youchain.businessdata.ReturnJson.RPTaskList;
import com.youchain.businessdata.domain.*;
import com.youchain.businessdata.inputJson.IPTask;
import com.youchain.businessdata.repository.InventoryRepository;
import com.youchain.businessdata.repository.PickDetailRepository;
import com.youchain.businessdata.repository.TaskLogRepository;
import com.youchain.businessdata.repository.*;
import com.youchain.businessdata.service.InventoryLogService;
import com.youchain.businessdata.service.InventoryService;
import com.youchain.businessdata.service.dto.InventoryDto;
import com.youchain.exception.BadRequestException;
import com.youchain.modules.system.domain.Dept;
import com.youchain.utils.*;
import lombok.RequiredArgsConstructor;
import com.youchain.businessdata.repository.TaskRepository;
import com.youchain.businessdata.service.TaskService;
import com.youchain.businessdata.service.dto.TaskDto;
import com.youchain.businessdata.service.dto.TaskQueryCriteria;
@ -42,6 +41,7 @@ import com.youchain.businessdata.service.mapstruct.TaskMapper;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.SQLQuery;
import org.hibernate.transform.AliasToEntityMapResultTransformer;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page;
@ -67,7 +67,9 @@ public class TaskServiceImpl implements TaskService {
private final TaskRepository taskRepository;
private final TaskMapper taskMapper;
private final InventoryRepository inventoryRepository;
private final InventoryService inventoryService;
private final PickDetailRepository pickDetailRepository;
private final PickRepository pickRepository;
private final InventoryLogService inventoryLogService;
private final EntityManager entityMapper;
private final StockRepository stockRepository;
@ -170,7 +172,7 @@ public class TaskServiceImpl implements TaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public synchronized void pickConfirm(long taskId, double pickedQuantity) throws Exception {
public synchronized void pickConfirm(Long taskId, double pickedQuantity) {
if (taskId > 0) {
TaskDto taskDto = findById(taskId);
Task task = taskMapper.toEntity(taskDto);//Dto转实体
@ -179,7 +181,7 @@ public class TaskServiceImpl implements TaskService {
task.setMoveQty(pickedQuantity);
task.setTaskStatus(BizStatus.FINISH);
taskRepository.save(task);
Inventory inv = inventoryRepository.findById(task.getInvId()).get();
Inventory inv = inventoryRepository.findById(task.getInventory().getId()).get();
if (inv != null) {
ItemKey itemKey = inv.getItemKey();
Item item = itemKey.getItem();
@ -223,7 +225,7 @@ public class TaskServiceImpl implements TaskService {
TaskDto taskDto = findById(taskId);
Task task = taskMapper.toEntity(taskDto);//Dto转实体
PickDetail pickDetail = task.getPickDetail();
Inventory inv = inventoryRepository.findById(task.getInvId()).get();
Inventory inv = inventoryRepository.findById(task.getInventory().getId()).get();
if (inv != null) {
//退回库存
double srcQty = inv.getQueuedQty();
@ -254,6 +256,51 @@ public class TaskServiceImpl implements TaskService {
}
}
@Override
public void invYw(Long taskId) {
Task task=taskRepository.getById(taskId);
ItemKey ik=task.getItemKey();
Point endPoint = task.getDstPoint();//目标点位
Double qty=task.getPlanQty();//拣货数量
Stock stock = null;
List<Stock> stockList=stockRepository.findByPointAndFb(endPoint.getId());//查询翻包容器
if (stockList.size()<0){
throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "目标位置没有翻包容器");
}else {
stock=stockList.get(0);
}
// 扣除库存
Inventory inventory=task.getInventory();
inventory.setQueuedQty(inventory.getQueuedQty()-qty);
inventory.setQuantity(inventory.getQuantity()-qty);
inventoryRepository.save(inventory);
// 添加库存
Inventory inv = inventoryService.getInventory(ik, endPoint, stock, UserUtils.isDept, BizStatus.RECEIVING_UP);
inv.setQuantity(qty);
inventoryRepository.save(inv);
// 添加库存日志
inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, task.getPickDetail().getPick().getCode(), task.getItemKey(), task.getDstPoint(), task.getSrcPoint(), task.getSrcStock(), stock, 0d, qty, BizStatus.PICK, task.getId(), inv.getId(), "");
/* 更新Task状态*/
task.setMoveQty(qty);
task.setTaskStatus(BizStatus.FINISH);
taskRepository.save(task);
/* 更新出库明细*/
PickDetail pickDetail=task.getPickDetail();
pickDetail.setPickedQty(pickDetail.getPickedQty()+qty);
if (pickDetail.getPickedQty()>=pickDetail.getAllocatedQty()){
pickDetail.setStatus(BizStatus.PICK_ALL);
}
pickDetailRepository.save(pickDetail);
/* 更新出库单*/
Pick pick=pickDetail.getPick();
List<PickDetail> pickDetailList=pickDetailRepository.findByPickNo(pick.getId());
if (pickDetailList.size()==0){
pick.setStatus(BizStatus.PICK_ALL);
pickRepository.save(pick);
}
}
@Transactional(readOnly = true)
public List<RPTaskList> queryTaskApp(IPTask t) {
String sql = "SELECT t.pick_detail_id pickDetailId, it.code itemCode,it.`name` itemName,t.plan_qty qty,ik.prop_c1 pch,t.src_point_code srcPointCode,t.src_stock_code stockCode,t.dst_point_code dstPointCode\n" +