no message
parent
9efba159b6
commit
190271455e
|
|
@ -0,0 +1,14 @@
|
|||
package com.youchain.appupdate.ReturnJson;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ReturnTaskVo {
|
||||
private Long taskId;//任务id
|
||||
private String orderNumber;//箱号
|
||||
private String itemCode;//物料编码
|
||||
private String itemName;//物料名称
|
||||
private String srcPointCode;//起始点
|
||||
private String dstPointCode;//目标点
|
||||
private Double planQty;//待拣货数量
|
||||
}
|
||||
|
|
@ -8,6 +8,11 @@ import lombok.Data;
|
|||
*/
|
||||
@Data
|
||||
public class FbPick {
|
||||
|
||||
@ApiModelProperty(value = "task任务id")
|
||||
Long taskId;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "原托盘")
|
||||
String srcStockCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ package com.youchain.appupdate.rest;
|
|||
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.appupdate.ReturnJson.ReturnTaskVo;
|
||||
import com.youchain.appupdate.inputJson.*;
|
||||
import com.youchain.basicdata.service.StockService;
|
||||
import com.youchain.businessdata.service.TaskService;
|
||||
import com.youchain.exception.handler.ApiResult;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
|
@ -28,6 +30,8 @@ public class BydAppController {
|
|||
|
||||
private final StockService stockService;
|
||||
|
||||
private final TaskService taskService;
|
||||
|
||||
@PostMapping("/scanMo")
|
||||
@Log("扫描Mo票")
|
||||
@ApiOperation("扫描Mo票")
|
||||
|
|
@ -61,19 +65,34 @@ public class BydAppController {
|
|||
|
||||
}
|
||||
|
||||
@PostMapping("/scanStock")
|
||||
@Log("扫描托盘")
|
||||
@ApiOperation("扫描托盘")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> scanStock(@RequestBody FbPick fbPick) {
|
||||
try {
|
||||
String srcStockCode = fbPick.getSrcStockCode();//原托盘
|
||||
ReturnTaskVo taskVo = stockService.scanStock(srcStockCode);
|
||||
return successResponse("扫描成功!", taskVo);
|
||||
} catch (Exception e) {
|
||||
return badRequest("扫描失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/fbPicking")
|
||||
@Log("翻包拣货")
|
||||
@ApiOperation("翻包拣货")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> fbPicking(@RequestBody FbPick fbPick) {
|
||||
try {
|
||||
String srcStockCode = fbPick.getSrcStockCode();//原托盘
|
||||
Long taskId = fbPick.getTaskId();//任务id
|
||||
String orderNumber = fbPick.getOrderNumber();//箱号
|
||||
String dstStockCode = fbPick.getDstStockCode();//目标托盘
|
||||
stockService.fbPicking(taskId, orderNumber, dstStockCode);
|
||||
return successResponse("拣货成功!");
|
||||
} catch (Exception e) {
|
||||
return badRequest(e.getMessage());
|
||||
return badRequest("拣货失败:" + e.getMessage());
|
||||
}
|
||||
return successResponse("拣货成功!");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package com.youchain.basicdata.service;
|
||||
|
||||
import com.youchain.appupdate.ReturnJson.ReturnTaskVo;
|
||||
import com.youchain.basicdata.domain.Item;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
|
|
@ -166,6 +167,7 @@ public interface StockService {
|
|||
|
||||
/**
|
||||
* 呼叫容器
|
||||
*
|
||||
* @param itemCode
|
||||
* @param pointCode
|
||||
* @param scene
|
||||
|
|
@ -174,11 +176,12 @@ public interface StockService {
|
|||
|
||||
/**
|
||||
* 扫描Mo
|
||||
*
|
||||
* @param mo
|
||||
* @param stockCode
|
||||
* @return
|
||||
*/
|
||||
String scanMo(String stockCode,String mo);
|
||||
String scanMo(String stockCode, String mo);
|
||||
|
||||
/**
|
||||
* 原材料入库
|
||||
|
|
@ -187,8 +190,24 @@ public interface StockService {
|
|||
* @param boxNumbers
|
||||
* @param pointCode
|
||||
*/
|
||||
void materialIn(String stockCode,Set boxNumbers,String pointCode);
|
||||
void materialIn(String stockCode, Set boxNumbers, String pointCode);
|
||||
|
||||
Map<String,Stock> findByCodes(Set stockCodes);
|
||||
Map<String, Stock> findByCodes(Set stockCodes);
|
||||
|
||||
/**
|
||||
* 扫描托盘
|
||||
*
|
||||
* @param stockCode
|
||||
*/
|
||||
ReturnTaskVo scanStock(String stockCode);
|
||||
|
||||
/**
|
||||
* 翻包拣货
|
||||
*
|
||||
* @param taskId
|
||||
* @param orderNumber
|
||||
* @param dstStockCode
|
||||
*/
|
||||
void fbPicking(Long taskId, String orderNumber, String dstStockCode);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package com.youchain.basicdata.service.impl;
|
|||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.youchain.appupdate.ReturnJson.ReturnTaskVo;
|
||||
import com.youchain.basicdata.domain.Item;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
|
|
@ -25,8 +26,11 @@ import com.youchain.basicdata.service.ItemService;
|
|||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.repository.AsnDetailRepository;
|
||||
import com.youchain.businessdata.repository.InventoryRepository;
|
||||
import com.youchain.businessdata.repository.PickDetailRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
import com.youchain.businessdata.service.*;
|
||||
import com.youchain.businessdata.service.dto.TaskDto;
|
||||
import com.youchain.utils.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import com.youchain.basicdata.repository.StockRepository;
|
||||
|
|
@ -63,15 +67,20 @@ public class StockServiceImpl implements StockService {
|
|||
|
||||
private final StockRepository stockRepository;
|
||||
private final AsnDetailRepository asnDetailRepository;
|
||||
private final PickDetailRepository pickDetailRepository;
|
||||
private final TaskRepository taskRepository;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
|
||||
private final AgvTaskService agvTaskService;
|
||||
private final ItemService itemService;
|
||||
private final InventoryService inventoryService;
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final AsnDetailService asnDetailService;
|
||||
private final PickDetailService pickDetailService;
|
||||
private final ItemKeyService itemKeyService;
|
||||
private final PointService pointService;
|
||||
private final TaskService taskService;
|
||||
|
||||
private final StockTypeToAreaMap stockTypeToAreaMap;
|
||||
private final StockMapper stockMapper;
|
||||
private final EntityManager entityMapper;
|
||||
|
|
@ -106,6 +115,11 @@ public class StockServiceImpl implements StockService {
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public StockDto create(Stock resources) {
|
||||
if (resources.getPoint() != null) {
|
||||
Point point = resources.getPoint();
|
||||
point.setStatus(BaseStatus.USED);
|
||||
pointService.update(point);
|
||||
}
|
||||
return stockMapper.toDto(stockRepository.save(resources));
|
||||
}
|
||||
|
||||
|
|
@ -113,6 +127,16 @@ public class StockServiceImpl implements StockService {
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Stock resources) {
|
||||
Stock stock = stockRepository.findById(resources.getId()).orElseGet(Stock::new);
|
||||
if (stock.getPoint() != null) {
|
||||
Point point = stock.getPoint();
|
||||
point.setStatus(BaseStatus.FREE);
|
||||
pointService.update(point);
|
||||
}
|
||||
if (resources.getPoint() != null) {
|
||||
Point point = resources.getPoint();
|
||||
point.setStatus(BaseStatus.USED);
|
||||
pointService.update(point);
|
||||
}
|
||||
ValidationUtil.isNull(stock.getId(), "Stock", "id", resources.getId());
|
||||
stock.copy(resources);
|
||||
stockRepository.save(stock);
|
||||
|
|
@ -393,6 +417,159 @@ public class StockServiceImpl implements StockService {
|
|||
return stockMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReturnTaskVo scanStock(String stockCode) {
|
||||
Task task = taskRepository.findBySrcStockCode(stockCode);
|
||||
if (task == null) {
|
||||
throw new RuntimeException("未找到" + stockCode + "托盘的翻包拣货任务!");
|
||||
}
|
||||
ReturnTaskVo returnTaskVo = new ReturnTaskVo();
|
||||
returnTaskVo.setTaskId(task.getId());
|
||||
returnTaskVo.setOrderNumber(task.getItemKey().getOrderNumber());
|
||||
returnTaskVo.setItemCode(task.getItem().getCode());
|
||||
returnTaskVo.setItemName(task.getItem().getName());
|
||||
returnTaskVo.setSrcPointCode(task.getSrcPointCode());
|
||||
returnTaskVo.setDstPointCode(task.getDstPointCode());
|
||||
returnTaskVo.setPlanQty(task.getPlanQty());
|
||||
return returnTaskVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void fbPicking(Long taskId, String orderNumber, String dstStockCode) {
|
||||
/**验证任务*/
|
||||
Task task = validateTask(taskId, orderNumber);
|
||||
|
||||
/**验证目标容器*/
|
||||
Stock dstStock = validatedstStock(dstStockCode);
|
||||
|
||||
/**待拣货数量*/
|
||||
double moveQty = task.getPlanQty();
|
||||
|
||||
/**库存移位*/
|
||||
moveInventory(task, dstStock, moveQty);
|
||||
|
||||
/**刷新拣货状态*/
|
||||
refreshPickStatus(task, moveQty);
|
||||
|
||||
/**原托盘回库内*/
|
||||
returnFBAgvTask(task.getDstPoint(), task.getSrcStock(), task.getItem());
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证任务
|
||||
*
|
||||
* @param taskId
|
||||
* @param orderNumber
|
||||
* @return
|
||||
*/
|
||||
private Task validateTask(Long taskId, String orderNumber) {
|
||||
TaskDto taskDto = taskService.findById(taskId);
|
||||
if (taskDto == null) {
|
||||
throw new RuntimeException("未找到相应任务记录!");
|
||||
}
|
||||
Task task = taskService.toEntity(taskDto);//Dto转实体
|
||||
if (!orderNumber.equals(task.getItemKey().getOrderNumber())) {
|
||||
throw new RuntimeException("扫描的箱号与分配的箱号不一致!");
|
||||
}
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证目标容器
|
||||
*
|
||||
* @param dstStockCode
|
||||
* @return
|
||||
*/
|
||||
private Stock validatedstStock(String dstStockCode) {
|
||||
if (StringUtils.isEmpty(dstStockCode)) {
|
||||
throw new RuntimeException("请扫描目标托盘号!");
|
||||
}
|
||||
Stock dstStock = stockRepository.findByCode(dstStockCode, null);
|
||||
if (dstStock == null) {
|
||||
throw new RuntimeException(dstStockCode + "目标托盘不存在,请扫描正确的托盘号!");
|
||||
}
|
||||
if (BaseStatus.USED.equals(dstStock.getStatus())) {
|
||||
throw new RuntimeException(dstStockCode + "目标托盘已使用,请更换新的托盘!");
|
||||
}
|
||||
if (dstStock.getPoint() == null) {
|
||||
throw new RuntimeException(dstStockCode + "目标托盘没有关联点位!");
|
||||
}
|
||||
return dstStock;
|
||||
}
|
||||
|
||||
private void moveInventory(Task task, Stock dstStock, double moveQty) {
|
||||
//将占用数量移位,原库存回库内
|
||||
Inventory inventory = task.getInventory();
|
||||
inventory.setQueuedQty(inventory.getQueuedQty() - moveQty);
|
||||
inventory.setQuantity(inventory.getQuantity() - moveQty);
|
||||
inventoryRepository.save(inventory);
|
||||
|
||||
Inventory newInventory = new Inventory();
|
||||
newInventory.setItemKey(inventory.getItemKey());
|
||||
newInventory.setPoint(dstStock.getPoint());
|
||||
newInventory.setPointCode(dstStock.getPoint().getCode());
|
||||
newInventory.setStock(dstStock);
|
||||
newInventory.setStockCode(dstStock.getCode());
|
||||
newInventory.setQuantity(moveQty);
|
||||
newInventory.setQueuedQty(0d);
|
||||
newInventory.setDept(inventory.getDept());
|
||||
inventoryRepository.save(newInventory);
|
||||
task.setInventory(newInventory);
|
||||
taskRepository.save(task);
|
||||
if (inventory.getQuantity() <= 0) {
|
||||
inventoryRepository.delete(inventory);
|
||||
}
|
||||
//库存日志
|
||||
inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, task.getPickDetail().getPo(), task.getItemKey(), task.getDstPoint(), dstStock.getPoint(), task.getSrcStock(), dstStock, 0d, moveQty, BizStatus.PICK, task.getId(), newInventory.getId(), "");
|
||||
|
||||
}
|
||||
|
||||
private void refreshPickStatus(Task task, double moveQty) {
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setMoveQty(moveQty);
|
||||
taskRepository.save(task);
|
||||
|
||||
PickDetail pickDetail = task.getPickDetail();
|
||||
pickDetail.setPickedQty(moveQty);
|
||||
pickDetailRepository.save(pickDetail);
|
||||
|
||||
//查询出库单的所有明细
|
||||
Pick pick = pickDetail.getPick();
|
||||
List<PickDetail> allocatePickDetailList = pickDetailRepository.findByAllPickDetail(pick.getId());
|
||||
//判断是否全部拣货完成
|
||||
boolean allPICK_ALL = allocatePickDetailList.stream().allMatch(detail -> detail.getOrderQty().equals(detail.getPickedQty()));
|
||||
//判断是否有部分拣货完成
|
||||
boolean anyPICKUP = allocatePickDetailList.stream().anyMatch(detail -> detail.getOrderQty().equals(detail.getPickedQty()));
|
||||
// 当前状态
|
||||
String status = pick.getStatus();
|
||||
|
||||
//更新状态且点位占用
|
||||
if (allPICK_ALL) {
|
||||
status = BizStatus.PICK_ALL;
|
||||
} else if (anyPICKUP) {
|
||||
status = BizStatus.PICKUP;
|
||||
}
|
||||
pick.setStatus(status);
|
||||
}
|
||||
|
||||
private void returnFBAgvTask(Point srcPoint, Stock stock, Item item) {
|
||||
String areaCode = stockTypeToAreaMap.getValueByKey(stock.getStockType());
|
||||
Double itemHeight = null;
|
||||
if (AreaNameDic.XJQ.equals(areaCode)) {
|
||||
itemHeight = item.getExtendD2();//整托高度
|
||||
}
|
||||
Point endPoint = pointService.findByCode(null, BaseStatus.FREE, BaseStatus.STORAGE, areaCode, null, itemHeight);
|
||||
if (endPoint == null) {
|
||||
throw new RuntimeException(areaCode + "没有空闲点位!");
|
||||
}
|
||||
|
||||
AgvTask agvTask = new AgvTask(BizStatus.FB_RETURN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "");
|
||||
agvTaskService.create(agvTask);
|
||||
agvTaskService.sendAgvTaskImpl(agvTask);
|
||||
}
|
||||
|
||||
private Item validateItem(String itemCode) {
|
||||
Item item = itemService.existItem(itemCode);
|
||||
if (item == null) {
|
||||
|
|
|
|||
|
|
@ -146,10 +146,12 @@ public class Task extends BaseEntity implements Serializable {
|
|||
@Column(name = "`put_code`")
|
||||
@ApiModelProperty(value = "上架号")
|
||||
private String putCode;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "inv_id")
|
||||
@ApiModelProperty(value = "库存ID")
|
||||
private Inventory inventory;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "dept_id")
|
||||
@ApiModelProperty(value = "仓库ID")
|
||||
|
|
|
|||
|
|
@ -51,4 +51,8 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
|
|||
|
||||
@Query(value = " select count(t.id) FROM Task t WHERE t.taskType='PICK' and t.taskStatus not in ('FINISH') and t.srcPoint.id=?1 ")
|
||||
int existsByTask(Long srcPointId);
|
||||
|
||||
@Query(value = " from Task t WHERE t.taskType='PICK' and t.taskStatus='ARRIVED' and t.srcStock.code=:srcStockCode ")
|
||||
Task findBySrcStockCode(String srcStockCode);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,19 +84,7 @@ 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")
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ public interface TaskService {
|
|||
|
||||
/**
|
||||
* 拣货
|
||||
*
|
||||
* @param taskId
|
||||
* @throws Exception
|
||||
*/
|
||||
|
|
@ -128,16 +129,11 @@ public interface TaskService {
|
|||
|
||||
/**
|
||||
* 退货
|
||||
*
|
||||
* @param taskId
|
||||
* @throws Exception
|
||||
*/
|
||||
void pickBarBack(long taskId, double pickedQuantity) throws Exception;
|
||||
/**
|
||||
* 库存移位
|
||||
* @param taskId
|
||||
* @throws Exception
|
||||
*/
|
||||
void invYw(Long taskId);
|
||||
|
||||
/**
|
||||
* 查询待拣货任务
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import com.youchain.basicdata.service.dto.ItemSmallDto;
|
|||
import com.youchain.basicdata.service.dto.PointDto;
|
||||
import com.youchain.basicdata.service.dto.StockDto;
|
||||
import com.youchain.basicdata.service.dto.StockSmallDto;
|
||||
import com.youchain.businessdata.domain.Inventory;
|
||||
import com.youchain.modules.system.service.dto.DeptDto;
|
||||
import com.youchain.modules.system.service.dto.DeptSmallDto;
|
||||
import lombok.Data;
|
||||
|
|
@ -106,8 +107,8 @@ public class TaskDto implements Serializable {
|
|||
/** 上架号 */
|
||||
private String putCode;
|
||||
|
||||
/** 库存ID */
|
||||
private Long invId;
|
||||
/** 库存 */
|
||||
private Inventory inventory;
|
||||
|
||||
/** 仓库ID */
|
||||
private DeptDto dept;
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
switch (endAreaName) {
|
||||
case AreaNameDic.XJQ:
|
||||
case AreaNameDic.DJQ:
|
||||
handleXJDJ(taskList, stock);//入库
|
||||
handleXJDJ(agvTask, taskList, stock);//入库
|
||||
break;
|
||||
case AreaNameDic.FBQ:
|
||||
handleFBQ(taskList, stock, endPoint);//备料完成
|
||||
|
|
@ -547,23 +547,26 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
* @param taskList
|
||||
* @param stock
|
||||
*/
|
||||
private void handleXJDJ(List<Task> taskList, Stock stock) {
|
||||
//容器回存储区,新增库存、更新点位状态
|
||||
for (Task task : taskList) {
|
||||
AsnDetail ad = task.getAsnDetail();
|
||||
ad.setReceivedQty(ad.getOrderQty());
|
||||
ad.setStatus(BizStatus.RECEIVED);
|
||||
ad.setStock(stock);
|
||||
asnDetailService.update(ad);
|
||||
private void handleXJDJ(AgvTask agvTask, List<Task> taskList, Stock stock) {
|
||||
if (BizStatus.ASN.equals(agvTask.getType())) {
|
||||
//容器回存储区,新增库存、更新点位状态
|
||||
for (Task task : taskList) {
|
||||
AsnDetail ad = task.getAsnDetail();
|
||||
ad.setReceivedQty(ad.getOrderQty());
|
||||
ad.setStatus(BizStatus.RECEIVED);
|
||||
ad.setStock(stock);
|
||||
asnDetailService.update(ad);
|
||||
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setMoveQty(task.getPlanQty());
|
||||
task.setSrcStock(stock);
|
||||
task.setDstStock(stock);
|
||||
taskService.update(task);
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setMoveQty(task.getPlanQty());
|
||||
task.setSrcStock(stock);
|
||||
task.setDstStock(stock);
|
||||
taskService.update(task);
|
||||
|
||||
updateInventory(stock, task, ad);
|
||||
updateInventory(stock, task, ad);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -573,6 +576,8 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
*/
|
||||
private void handleFBQ(List<Task> taskList, Stock stock, Point endPoint) {
|
||||
//将托盘的物料移动到备料库位
|
||||
stock.setPoint(endPoint);
|
||||
stockRepository.save(stock);
|
||||
List<Inventory> inventoryList = inventoryService.queryInventory(stock);
|
||||
for (Inventory inventory : inventoryList) {
|
||||
inventory.setPoint(endPoint);
|
||||
|
|
@ -580,7 +585,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
}
|
||||
/* 更新Task任务状态*/
|
||||
for (Task task : taskList) {
|
||||
task.setTaskStatus(BizStatus.FINISH);
|
||||
task.setTaskStatus(BizStatus.ARRIVED);
|
||||
taskRepository.save(task);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,22 +15,19 @@
|
|||
*/
|
||||
package com.youchain.businessdata.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.youchain.basicdata.domain.Item;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.basicdata.repository.StockRepository;
|
||||
import com.youchain.basicdata.service.dto.StockSmallDto;
|
||||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.businessdata.ReturnJson.RPTaskList;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.inputJson.IPTask;
|
||||
import com.youchain.businessdata.repository.*;
|
||||
import com.youchain.businessdata.service.AgvTaskService;
|
||||
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;
|
||||
|
|
@ -41,7 +38,6 @@ 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,12 +63,12 @@ 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 PointService pointService;
|
||||
private final EntityManager entityMapper;
|
||||
private final StockRepository stockRepository;
|
||||
private final StockTypeToAreaMap stockTypeToAreaMap;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(TaskQueryCriteria criteria, Pageable pageable) {
|
||||
|
|
@ -256,51 +252,6 @@ 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" +
|
||||
|
|
|
|||
|
|
@ -66,15 +66,20 @@ public interface BizStatus {
|
|||
*/
|
||||
public static String ATWORK = "ATWORK";
|
||||
|
||||
/**
|
||||
* 任务状态-已到站
|
||||
*/
|
||||
public static String ARRIVED = "ARRIVED";
|
||||
|
||||
/**
|
||||
* 任务状态-顶升
|
||||
*/
|
||||
public static String UP_CONTAINER = "UP_CONTAINER";
|
||||
|
||||
/**
|
||||
* 任务状态-返库中
|
||||
* 任务状态-翻包返库
|
||||
*/
|
||||
public static String RETURN = "RETURN";
|
||||
public static String FB_RETURN = "FB_RETURN";
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue